378 lines
12 KiB
RPMSpec
378 lines
12 KiB
RPMSpec
%define _default_patch_fuzz 2
|
|
|
|
Name: mysqlclient18
|
|
Version: 5.5.62
|
|
Release: 8%{dist}
|
|
Summary: MySQL client programs and shared libraries
|
|
Group: Applications/Databases
|
|
URL: http://www.mysql.com
|
|
# exceptions allow client libraries to be linked with most open source SW,
|
|
# not only GPL code. See README.mysql-license
|
|
License: GPLv2 with exceptions
|
|
|
|
# Regression tests take a long time, you can skip 'em with this
|
|
%{!?runselftest:%global runselftest 0}
|
|
|
|
# Upstream has a mirror redirector for downloads, so the URL is hard to
|
|
# represent statically. You can get the tarball by following a link from
|
|
# http://dev.mysql.com/downloads/mysql/
|
|
Source0: mysql-%{version}.tar.gz
|
|
# The upstream tarball includes non-free documentation that we cannot ship.
|
|
# To remove the non-free documentation, run this script after downloading
|
|
# the tarball into the current directory:
|
|
# ./generate-tarball.sh $VERSION
|
|
# Source1: generate-tarball.sh not used
|
|
Source1: mysql.sysconfig
|
|
Source2: mysql.init
|
|
Source3: my.cnf
|
|
Source4: scriptstub.c
|
|
Source5: my_config.h
|
|
Source6: README.mysql-docs
|
|
Source7: README.mysql-license
|
|
Source8: libmysql.version
|
|
Source9: mysql-embedded-check.c
|
|
Source10: mysql.tmpfiles.d
|
|
# Working around perl dependency checking bug in rpm FTTB. Remove later.
|
|
Source999: filter-requires-mysql.sh
|
|
|
|
Patch1: mysql-errno.patch
|
|
Patch2: mysql-strmov.patch
|
|
Patch3: mysql-install-test.patch
|
|
#Patch4: mysql-expired-certs.patch
|
|
Patch5: mysql-stack-guard.patch
|
|
Patch6: mysql-chain-certs.patch
|
|
Patch7: mysql-versioning.patch
|
|
Patch8: mysql-dubious-exports.patch
|
|
Patch9: mysql-disable-test.patch
|
|
Patch10: mysql-plugin-bool.patch
|
|
Patch11: mysql-s390-tsc.patch
|
|
Patch12: mysql-openssl-test.patch
|
|
Patch13: mysqld-nowatch.patch
|
|
Patch14: mysql-va-list.patch
|
|
|
|
|
|
#Cloudlinux governor patches
|
|
Patch1000: userstat5_5_17.patch
|
|
Patch1001: max_connection2_mysql_clock_5_5_12.patch
|
|
Patch1002: mysql-governor-embedded-exclude.patch
|
|
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
|
BuildRequires: perl, readline-devel, openssl-devel
|
|
BuildRequires: gcc-c++, cmake, ncurses-devel, zlib-devel, libaio-devel
|
|
%if 0%{?fedora} >= 12
|
|
BuildRequires: systemtap-sdt-devel >= 1.3
|
|
%endif
|
|
# make test requires time and ps
|
|
BuildRequires: time procps
|
|
# Socket and Time::HiRes are needed to run regression tests
|
|
BuildRequires: perl(Socket), perl(Time::HiRes)
|
|
# This is required old EL4
|
|
BuildRequires: bison
|
|
|
|
Requires: grep, fileutils
|
|
Requires: bash
|
|
|
|
Provides: %{name}-libs%{?_isa} = %{version}-%{release}
|
|
|
|
|
|
|
|
# When rpm 4.9 is universal, this could be cleaned up:
|
|
%global __perl_requires %{SOURCE999}
|
|
%global __perllib_requires %{SOURCE999}
|
|
|
|
%description
|
|
MySQL is a multi-user, multi-threaded SQL database server. MySQL is a
|
|
client/server implementation consisting of a server daemon (mysqld)
|
|
and many different client programs and libraries. The base package
|
|
contains the standard MySQL client programs and generic MySQL files.
|
|
|
|
%package devel
|
|
|
|
Summary: Files for development of MySQL applications
|
|
Group: Applications/Databases
|
|
Requires: %{name}%{?_isa} = %{version}-%{release}
|
|
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
|
Requires: openssl-devel%{?_isa}
|
|
Conflicts: mysql-devel
|
|
Conflicts: mariadb-devel
|
|
|
|
%description devel
|
|
This package contains the libraries and header files that are needed for
|
|
developing MySQL applications using client libraries.
|
|
|
|
|
|
%prep
|
|
%setup -q -n mysql-%{version}
|
|
|
|
# Can't provide this file (by licence)
|
|
rm -f Docs/mysql.info
|
|
|
|
|
|
%patch1 -p1
|
|
%patch2 -p1
|
|
%patch3 -p1
|
|
#patch4 -p1
|
|
%patch5 -p1
|
|
#%patch6 -p1
|
|
%patch7 -p1
|
|
%patch8 -p1
|
|
%patch9 -p1
|
|
%patch10 -p1
|
|
%patch11 -p1
|
|
#%patch12 -p1
|
|
%patch13 -p1
|
|
#%patch14 -p1
|
|
|
|
|
|
# Cloudlinux Governor patches
|
|
#%patch1000 -p1
|
|
#%patch1001 -p1
|
|
#%patch1002 -p1
|
|
|
|
# workaround for upstream bug #56342
|
|
rm -f mysql-test/t/ssl_8k_key-master.opt
|
|
|
|
# upstream has fallen down badly on symbol versioning, do it ourselves
|
|
cp %{SOURCE8} libmysql/libmysql.version
|
|
|
|
%build
|
|
|
|
# fail quickly and obviously if user tries to build as root
|
|
%if %runselftest
|
|
if [ x"`id -u`" = x0 ]; then
|
|
echo "mysql's regression tests fail if run as root."
|
|
echo "If you really need to build the RPM as root, use"
|
|
echo "--define='runselftest 0' to skip the regression tests."
|
|
exit 1
|
|
fi
|
|
%endif
|
|
|
|
CFLAGS="%{optflags} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
|
|
# MySQL 4.1.10 definitely doesn't work under strict aliasing; also,
|
|
# gcc 4.1 breaks MySQL 5.0.16 without -fwrapv
|
|
CFLAGS="$CFLAGS -fno-strict-aliasing -fwrapv"
|
|
# force PIC mode so that we can build libmysqld.so
|
|
CFLAGS="$CFLAGS -fPIC"
|
|
# gcc seems to have some bugs on sparc as of 4.4.1, back off optimization
|
|
# submitted as bz #529298
|
|
%ifarch sparc sparcv9 sparc64
|
|
CFLAGS=`echo $CFLAGS| sed -e "s|-O2|-O1|g" `
|
|
%endif
|
|
CXXFLAGS="$CFLAGS"
|
|
export CFLAGS CXXFLAGS
|
|
|
|
# The INSTALL_xxx macros have to be specified relative to CMAKE_INSTALL_PREFIX
|
|
# so we can't use %%{_datadir} and so forth here.
|
|
|
|
cmake . -DBUILD_CONFIG=mysql_release \
|
|
-DCOMPILATION_COMMENT="MySQL Community Server (GPL) by Atomicorp" \
|
|
-DFEATURE_SET="community" \
|
|
-DINSTALL_LAYOUT=RPM \
|
|
-DCMAKE_INSTALL_PREFIX="%{_prefix}" \
|
|
-DINSTALL_INCLUDEDIR=include/mysql \
|
|
-DINSTALL_INFODIR=share/info \
|
|
-DINSTALL_LIBDIR="%{_lib}/mysql" \
|
|
-DINSTALL_MANDIR=share/man \
|
|
-DINSTALL_MYSQLSHAREDIR=share/mysql \
|
|
-DINSTALL_MYSQLTESTDIR=share/mysql-test \
|
|
-DINSTALL_PLUGINDIR="%{_lib}/mysql/plugin" \
|
|
-DINSTALL_SBINDIR=libexec \
|
|
-DINSTALL_SCRIPTDIR=bin \
|
|
-DINSTALL_SQLBENCHDIR=share \
|
|
-DINSTALL_SUPPORTFILESDIR=share/mysql \
|
|
-DMYSQL_DATADIR="/var/lib/mysql" \
|
|
-DMYSQL_UNIX_ADDR="/var/lib/mysql/mysql.sock" \
|
|
-DENABLED_LOCAL_INFILE=ON \
|
|
%if 0%{?fedora} >= 12
|
|
-DENABLE_DTRACE=ON \
|
|
%endif
|
|
-DWITH_EMBEDDED_SERVER=ON \
|
|
-DWITH_READLINE=ON \
|
|
%if 0%{?fedora} >= 9 || 0%{?rhel} >= 5
|
|
-DWITH_SSL=system \
|
|
%else
|
|
-DWITH_SSL=bundled \
|
|
%endif
|
|
-DWITH_ZLIB=system
|
|
|
|
gcc $CFLAGS $LDFLAGS -o scriptstub "-DLIBDIR=\"%{_libdir}/mysql\"" %{SOURCE4}
|
|
|
|
make %{?_smp_mflags} VERBOSE=1
|
|
|
|
# regular build will make libmysqld.a but not libmysqld.so :-(
|
|
mkdir libmysqld/work
|
|
cd libmysqld/work
|
|
ar -x ../libmysqld.a
|
|
# these result in missing dependencies: (filed upstream as bug 59104)
|
|
rm -f sql_binlog.cc.o rpl_utility.cc.o
|
|
gcc $CFLAGS $LDFLAGS -shared -Wl,-soname,libmysqld.so.0 -o libmysqld.so.0.0.1 \
|
|
*.o \
|
|
%if 0%{?fedora} >= 12
|
|
../../probes_mysql.o \
|
|
%endif
|
|
-lpthread -laio -lcrypt -lssl -lcrypto -lz -lrt -lstdc++ -ldl -lm -lc
|
|
# this is to check that we built a complete library
|
|
cp %{SOURCE9} .
|
|
ln -s libmysqld.so.0.0.1 libmysqld.so.0
|
|
gcc -I../../include $CFLAGS mysql-embedded-check.c libmysqld.so.0
|
|
LD_LIBRARY_PATH=. ldd ./a.out
|
|
cd ../..
|
|
|
|
%if %runselftest
|
|
# hack to let 32- and 64-bit tests run concurrently on same build machine
|
|
case `uname -m` in
|
|
ppc64 | s390x | x86_64 | sparc64 )
|
|
MTR_BUILD_THREAD=7
|
|
;;
|
|
*)
|
|
MTR_BUILD_THREAD=11
|
|
;;
|
|
esac
|
|
export MTR_BUILD_THREAD
|
|
|
|
# Sometine, test fails because of this lib.
|
|
LD_LIBRARY_PATH=$PWD/libservices
|
|
export LD_LIBRARY_PATH
|
|
|
|
# make test
|
|
|
|
# The cmake build scripts don't provide any simple way to control the
|
|
# options for mysql-test-run, so ignore the make target and just call it
|
|
# manually. Nonstandard options chosen are:
|
|
# --force to continue tests after a failure
|
|
# no retries please
|
|
# test SSL with --ssl
|
|
# avoid redundant test runs with --binlog-format=mixed
|
|
# increase timeouts to prevent unwanted failures during mass rebuilds
|
|
cd mysql-test
|
|
(
|
|
# perl ./mysql-test-run.pl --force --retry=0 --mysqld=--binlog-format=mixed --suite-timeout=720 --testcase-timeout=30
|
|
# Run less test to speed up build process
|
|
%{__perl} ./mysql-test-run.pl --force --ssl --mysqld=--binlog-format=mixed --suite=main
|
|
)
|
|
# cmake build scripts will install the var cruft if left alone :-(
|
|
rm -rf var
|
|
%endif
|
|
|
|
%install
|
|
rm -rf $RPM_BUILD_ROOT
|
|
|
|
make DESTDIR=$RPM_BUILD_ROOT install
|
|
|
|
# List the installed tree for RPM package maintenance purposes.
|
|
find $RPM_BUILD_ROOT -print | sed "s|^$RPM_BUILD_ROOT||" | sort > ROOTFILES
|
|
|
|
# multilib header hacks
|
|
# we only apply this to known Red Hat multilib arches, per bug #181335
|
|
case `uname -i` in
|
|
i386 | x86_64 | ppc | ppc64 | s390 | s390x | sparc | sparc64 )
|
|
mv $RPM_BUILD_ROOT/usr/include/mysql/my_config.h $RPM_BUILD_ROOT/usr/include/mysql/my_config_`uname -i`.h
|
|
install -m 644 %{SOURCE5} $RPM_BUILD_ROOT/usr/include/mysql/
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
# cmake generates some completely wacko references to -lprobes_mysql when
|
|
# building with dtrace support. Haven't found where to shut that off,
|
|
# so resort to this blunt instrument. While at it, let's not reference
|
|
# libmysqlclient_r anymore either.
|
|
sed -e 's/-lprobes_mysql//' -e 's/-lmysqlclient_r/-lmysqlclient/' \
|
|
${RPM_BUILD_ROOT}%{_bindir}/mysql_config >mysql_config.tmp
|
|
cp -f mysql_config.tmp ${RPM_BUILD_ROOT}%{_bindir}/mysql_config
|
|
chmod 755 ${RPM_BUILD_ROOT}%{_bindir}/mysql_config
|
|
|
|
|
|
#install -m 0644 %{SOURCE3} $RPM_BUILD_ROOT/etc/my.cnf
|
|
|
|
# Remove libmysqld.a, install libmysqld.so
|
|
rm -f ${RPM_BUILD_ROOT}%{_libdir}/mysql/libmysqld.a
|
|
|
|
# libmysqlclient_r is no more. Upstream tries to replace it with symlinks
|
|
# but that really doesn't work (wrong soname in particular). We'll keep
|
|
# just the devel libmysqlclient_r.so link, so that rebuilding without any
|
|
# source change is enough to get rid of dependency on libmysqlclient_r.
|
|
rm -f ${RPM_BUILD_ROOT}%{_libdir}/mysql/libmysqlclient_r.so*
|
|
ln -s libmysqlclient.so ${RPM_BUILD_ROOT}%{_libdir}/mysql/libmysqlclient_r.so
|
|
|
|
mv $RPM_BUILD_ROOT%{_bindir}/mysql_config $RPM_BUILD_ROOT
|
|
|
|
# Remove files that %%doc will install in preferred location
|
|
rm -f ${RPM_BUILD_ROOT}/usr/COPYING
|
|
rm -f ${RPM_BUILD_ROOT}/usr/README
|
|
|
|
# Remove files we don't want installed at all
|
|
rm -rf $RPM_BUILD_ROOT%{_prefix}/mysql-test
|
|
rm -f ${RPM_BUILD_ROOT}%{_libdir}/mysql/*.la
|
|
rm -rf $RPM_BUILD_ROOT%{_datadir}/mysql
|
|
rm -rf $RPM_BUILD_ROOT%{_bindir}
|
|
rm -rf $RPM_BUILD_ROOT%{_libexecdir}
|
|
rm -rf $RPM_BUILD_ROOT%{_infodir}/*
|
|
rm -rf $RPM_BUILD_ROOT%{_mandir}/man?/*
|
|
rm -rf $RPM_BUILD_ROOT%{_datadir}/sql-bench
|
|
rm -rf $RPM_BUILD_ROOT%{_datadir}/mysql-test
|
|
rm -rf $RPM_BUILD_ROOT%{_datadir}/aclocal/mysql.m4
|
|
|
|
rm -f ${RPM_BUILD_ROOT}/usr/INSTALL-BINARY
|
|
rm -f ${RPM_BUILD_ROOT}/usr/docs/ChangeLog
|
|
rm -f ${RPM_BUILD_ROOT}/usr/data/mysql/.empty
|
|
rm -f ${RPM_BUILD_ROOT}/usr/data/test/.empty
|
|
rm -f ${RPM_BUILD_ROOT}%{_bindir}/mysqlaccess.conf
|
|
rm -f ${RPM_BUILD_ROOT}%{_libdir}/mysql/*.a
|
|
rm -rf ${RPM_BUILD_ROOT}%{_libdir}/mysql/plugin
|
|
rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/binary-configure
|
|
rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/magic
|
|
rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/ndb-config-2-node.ini
|
|
rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/mysql.server
|
|
rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/mysqld_multi.server
|
|
rm -f ${RPM_BUILD_ROOT}%{_datadir}/mysql/mysql-log-rotate
|
|
rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/comp_err.1*
|
|
rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql-stress-test.pl.1*
|
|
rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/mysql-test-run.pl.1*
|
|
mkdir -p ${RPM_BUILD_ROOT}%{_bindir}
|
|
mv ${RPM_BUILD_ROOT}/mysql_config ${RPM_BUILD_ROOT}%{_bindir}
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d
|
|
echo "%{_libdir}/mysql" > $RPM_BUILD_ROOT/etc/ld.so.conf.d/%{name}-%{_arch}.conf
|
|
|
|
# copy additional docs into build tree so %%doc will find them
|
|
cp %{SOURCE6} README.mysql-docs
|
|
cp %{SOURCE7} README.mysql-license
|
|
|
|
#
|
|
|
|
%clean
|
|
rm -rf $RPM_BUILD_ROOT
|
|
|
|
|
|
%post
|
|
/sbin/ldconfig
|
|
|
|
%postun
|
|
if [ $1 = 0 ] ; then
|
|
/sbin/ldconfig
|
|
fi
|
|
|
|
|
|
%files
|
|
%defattr(-,root,root)
|
|
%{_libdir}/mysql/libmysqlclient.so.18*
|
|
/etc/ld.so.conf.d/*
|
|
|
|
%files devel
|
|
%defattr(-,root,root)
|
|
/usr/include/mysql
|
|
%{_bindir}/mysql_config
|
|
%{_libdir}/mysql/libmysqlclient.so
|
|
%{_libdir}/mysql/libmysqlclient_r.so
|
|
|
|
%changelog
|
|
* Wed Dec 6 2012 Scott R. Shinn <scott@atomicorp.com> - 5.5.28-6
|
|
- Update to 5.5.28
|
|
|
|
* Wed Oct 25 2011 Scott R. Shinn <scott@atomicorp.com> - 5.5.22-5
|
|
- Update to 5.5.22
|
|
|
|
* Wed Oct 25 2011 Scott R. Shinn <scott@atomicorp.com> - 5.5.17-2
|
|
- Bugfix #XXX, correct perl dependency issue with mysql-test
|