diff -r 7ddfdb42afce -r 7b145ccff1e9 mysql/mysql.spec --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mysql/mysql.spec Tue Aug 28 18:28:40 2012 +0200 @@ -0,0 +1,373 @@ +## +## mysql.spec -- OpenPKG RPM Package Specification +## Copyright (c) 2000-2012 OpenPKG Foundation e.V. +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package version +%define V_major 5.1 +%define V_minor 63 +%define V_mysql %{V_major}.%{V_minor} +%define V_opkg %{V_major}.%{V_minor} +%define V_jdbc 5.1.21 + +# package information +Name: mysql +Summary: Fast Relational Database Management System +URL: http://www.mysql.com/products/mysql/ +Vendor: ORACLE +Packager: OpenPKG Foundation e.V. +Distribution: OpenPKG Community +Class: BASE +Group: Database +License: GPL +Version: %{V_opkg} +Release: 20120704 + +# package options +%option with_server yes +%option with_innobase yes +%option with_archive no +%option with_blackhole no +%option with_federated no +%option with_ndbcluster no +%option with_partition no +%option with_ssl no +%option with_embedded no +%option with_charset utf8 +%option with_collation utf8_unicode_ci +%option with_jdbc no + +# fixing implicit inter-plugin dependencies and correlations +%if "%{with_ndbcluster}" == "yes" +%undefine with_partition +%define with_partition yes +%endif + +# list of sources +Source0: http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-%{V_major}/mysql-%{V_mysql}.tar.gz +Source1: http://ftp.gwdg.de/pub/misc/mysql/Downloads/Connector-J/mysql-connector-java-%{V_jdbc}.tar.gz +Source2: my.cnf +Source3: my.pwd +Source4: rc.mysql +Patch0: mysql.patch + +# build information +BuildPreReq: OpenPKG, openpkg >= 20100101, perl, make, gcc, gcc::with_cxx = yes +PreReq: OpenPKG, openpkg >= 20100101, perl +BuildPreReq: zlib, readline, ncurses +PreReq: zlib, readline, ncurses +%if "%{with_ssl}" == "yes" +BuildPreReq: openssl +PreReq: openssl +%endif +%if "%{with_jdbc}" == "yes" +PreReq: java, JAVA-JDK +%endif + +%description + MySQL is a multi-user Relational Database Management System (RDBMS), + which is controlled through Structured Query Language (SQL) + operating in full multi-threading mode. The main goals of MySQL are + speed, robustness and ease of use. MySQL was originally developed + because of the need for a SQL server that could handle very big + databases with magnitude higher speed than what any database vendor + could offer. + +%track + prog mysql = { + version = %{V_mysql} + url = http://dev.mysql.com/downloads/mysql/%{V_major}.html + regex = mysql-(__VER__)\.tar\.gz + } + prog mysql:connector-jdbc = { + version = %{V_jdbc} + url = http://dev.mysql.com/downloads/connector/j/%{V_major}.html + regex = mysql-connector-java-(__VER__)\.tar\.gz + } + +%prep + %setup -q +%if "%{with_jdbc}" == "yes" + %setup -q -T -D -a 1 +%endif + %patch -p0 + +%build + # patch file search path + %{l_shtool} subst %{l_value -s -a} \ + mysys/default.c + + # fix shebang on supplemental Perl scripts + rm -f scripts/*.orig + %{l_shtool} subst \ + -e 's;^#!/usr/bin/perl;#!%{l_prefix}/bin/perl;' \ + scripts/* + + # determine additional configure options + case "%{l_platform -t}" in + *-freebsd* ) opt="--with-client-ldflags=-static --with-mysqld-ldflags=-static" ;; + *-linux* ) opt="--with-client-ldflags=-static --with-mysqld-ldflags=-static" ;; + *-sunos* ) opt="--with-client-ldflags=-static --with-mysqld-ldflags=-static" ;; + esac + + # configure source tree + CC="%{l_cc}" \ + CXX="%{l_cxx}" \ + CFLAGS="%{l_cflags -O}" \ + CXXFLAGS="%{l_cxxflags -O}" \ + CPPFLAGS="%{l_cppflags ncurses}" \ + LDFLAGS="-L`pwd`/libmysql %{l_ldflags}" \ + LIBS="-lz" \ + ./configure \ + --prefix=%{l_prefix} \ + --mandir=%{l_prefix}/man \ + --infodir=%{l_prefix}/info \ + --sysconfdir=%{l_prefix}/etc/mysql \ + --localstatedir=%{l_prefix}/var/mysql \ + --libexecdir=%{l_prefix}/libexec/mysql \ + --with-unix-socket-path=%{l_prefix}/var/mysql/mysql.sock \ + --with-mysqld-user=%{l_musr} \ + --enable-thread-safe-client \ + --with-comment="%{l_openpkg_release}" \ +%if "%{with_server}" != "yes" + --without-server \ +%else + --with-server \ + --with-plugin-csv \ + --with-plugin-heap \ + --with-plugin-myisam \ + --with-plugin-myisammrg \ +%if "%{with_innobase}" == "yes" + --with-plugin-innobase \ +%else + --without-plugin-innobase \ +%endif +%if "%{with_archive}" == "yes" + --with-plugin-archive \ +%else + --without-plugin-archive \ +%endif +%if "%{with_blackhole}" == "yes" + --with-plugin-blackhole \ +%else + --without-plugin-blackhole \ +%endif +%if "%{with_federated}" == "yes" + --with-plugin-federated \ +%else + --without-plugin-federated \ +%endif +%if "%{with_ndbcluster}" == "yes" + --with-plugin-ndbcluster \ +%else + --without-plugin-ndbcluster \ +%endif +%if "%{with_partition}" == "yes" + --with-plugin-partition \ +%else + --without-plugin-partition \ +%endif +%endif + --with-zlib-dir=%{l_prefix} \ +%if "%{with_ssl}" == "yes" + --with-ssl=%{l_prefix} \ +%endif +%if "%{with_embedded}" == "yes" + --with-embedded-server \ +%endif + --with-charset=%{with_charset} \ + --with-collation=%{with_collation} \ + --without-readline \ + --without-libedit \ + --with-big-tables \ + --with-low-memory \ + --disable-shared \ + $opt + + # build source tree + %{l_make} %{l_mflags} + +%install + + # patch init script + %{l_shtool} subst %{l_value -s -a} \ + scripts/mysql_install_db.sh + + # perform standard installation procedure + %{l_make} %{l_mflags} install \ + AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT" \ + DESTDIR=$RPM_BUILD_ROOT + + # cleanup mysql_config script + %{l_shtool} subst \ + -e 's;^\(ldflags=.\).*\(.\)$;\1%{l_ldflags}\2;' \ + $RPM_BUILD_ROOT%{l_prefix}/bin/mysql_config + + # move utility 'replace', msql2mysql is patched for new path + mv $RPM_BUILD_ROOT%{l_prefix}/bin/replace \ + $RPM_BUILD_ROOT%{l_prefix}/libexec/mysql/ + + # strip installation area + rm -rf $RPM_BUILD_ROOT%{l_prefix}/mysql-test + rm -rf $RPM_BUILD_ROOT%{l_prefix}/sql-bench + rm -f $RPM_BUILD_ROOT%{l_prefix}/info/dir + rm -f $RPM_BUILD_ROOT%{l_prefix}/share/mysql/mysql-%{V_mysql}.spec + rm -f $RPM_BUILD_ROOT%{l_prefix}/share/mysql/binary-configure + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/make_win_src_distribution + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/make_win_binary_distribution + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/comp_err + strip $RPM_BUILD_ROOT%{l_prefix}/bin/* 2>/dev/null || true + strip $RPM_BUILD_ROOT%{l_prefix}/libexec/mysql/* 2>/dev/null || true +%if "%{with_ndbcluster}" == "yes" + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/ndb* + rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man1/ndb* + rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man8/ndb* + rm -rf $RPM_BUILD_ROOT%{l_prefix}/include/mysql/storage/ndb + rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/mysql/libndb* + rm -f $RPM_BUILD_ROOT%{l_prefix}/libexec/mysql/ndb* + rm -f $RPM_BUILD_ROOT%{l_prefix}/share/mysql/ndb-config-2-node.ini +%endif + + # install global configuration + %{l_shtool} mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}/etc/mysql + sed <%{SOURCE my.cnf} >my.cnf \ +%if "%{with_innobase}" == "yes" + -e '/<\/\{0,1\}with_innobase>/d' +%else + -e '//,/<\/with_innobase>/d' +%endif + %{l_shtool} install -c -m 644 %{l_value -s -a} \ + my.cnf \ + $RPM_BUILD_ROOT%{l_prefix}/etc/mysql/ + %{l_shtool} install -c -m 600 \ + %{SOURCE my.pwd} \ + $RPM_BUILD_ROOT%{l_prefix}/etc/mysql/ + + # install run-command script + %{l_shtool} mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + %{SOURCE rc.mysql} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ + + # make sure the database directory exists + %{l_shtool} mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}/var/mysql + + # directory for temporary tables + %{l_shtool} mkdir -f -p -m 700 $RPM_BUILD_ROOT%{l_prefix}/var/mysql/tmp + + # optional client-only installation +%if "%{with_server}" != "yes" + rm -rf $RPM_BUILD_ROOT%{l_prefix}/libexec/mysql + ( cd $RPM_BUILD_ROOT%{l_prefix}/bin + for bin in *; do + case "$bin" in + mysql | mysql_config ) ;; + * ) rm -f $bin ;; + esac + done + ) || exit $? + ( cd $RPM_BUILD_ROOT%{l_prefix}/man/man1 + for man in *; do + case "$man" in + mysql.1 | mysql_config.1 ) ;; + * ) rm -f $man ;; + esac + done + ) || exit $? +%endif + + # install JDBC driver +%if "%{with_jdbc}" == "yes" + ( cd mysql-connector-java-%{V_jdbc} + %{l_shtool} install -c -m 644 \ + mysql-connector-java-%{V_jdbc}-bin.jar \ + $RPM_BUILD_ROOT%{l_prefix}/lib/mysql/mysql.jar + ) || exit $? +%endif + + # determine the package files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ +%if "%{with_server}" == "yes" + %{l_files_std} \ + '%config %attr(644,%{l_musr},%{l_mgrp}) %{l_prefix}/etc/mysql/my.cnf' \ + '%config %attr(600,%{l_susr},%{l_mgrp}) %{l_prefix}/etc/mysql/my.pwd' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/mysql' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/mysql/tmp' +%else + %{l_files_std} +%endif + +%files -f files + +%clean + +%pre +%if "%{with_server}" == "yes" + # before upgrade, save status and stop service + [ $1 -eq 2 ] || exit 0 + eval `%{l_rc} mysql status 2>/dev/null | tee %{l_tmpfile}` + %{l_rc} mysql stop 2>/dev/null +%endif + exit 0 + +%post +%if "%{with_server}" == "yes" + if [ $1 -eq 1 ]; then + # after install, create initial database + $RPM_INSTALL_PREFIX/bin/mysql_install_db \ + --defaults-file=$RPM_INSTALL_PREFIX/etc/mysql/my.cnf >/dev/null 2>&1 + chown -R %{l_rusr}:%{l_rgrp} $RPM_INSTALL_PREFIX/var/mysql/* + ( echo "An initial MySQL DB was created. The owner of the database" + echo "is the DB user 'root'. Its initial password is empty." + echo "After starting MySQL with..." + echo "" + echo " \$ $RPM_INSTALL_PREFIX/bin/openpkg rc mysql start" + echo "" + echo "...you should change the password as soon as possible with:" + echo "" + echo " \$ $RPM_INSTALL_PREFIX/bin/mysqladmin \\ " + echo " -u root password ''" + echo "" + echo "Additionally, because the MySQL package includes automated" + echo "maintenance procedures that require administrator access to" + echo "the database, you must maintain a (plain text) copy of the" + echo "administrator account name and password:" + echo "" + echo " \$ vi $RPM_INSTALL_PREFIX/etc/mysql/my.pwd" + ) | %{l_rpmtool} msg -b -t notice + fi + if [ $1 -eq 2 ]; then + # after upgrade, restore status + { eval `cat %{l_tmpfile}`; rm -f %{l_tmpfile}; true; } >/dev/null 2>&1 + [ ".$mysql_active" = .yes ] && %{l_rc} mysql start + fi +%endif + exit 0 + +%preun +%if "%{with_server}" == "yes" + # before erase, stop service and remove log files + [ $1 -eq 0 ] || exit 0 + %{l_rc} mysql stop 2>/dev/null + rm -f $RPM_INSTALL_PREFIX/var/mysql/*.log* >/dev/null 2>&1 || true + rm -f $RPM_INSTALL_PREFIX/var/mysql/*.err* >/dev/null 2>&1 || true +%endif + exit 0 +