## ## mysql4.spec -- OpenPKG RPM Package Specification ## Copyright (c) 2000-2007 OpenPKG Foundation e.V. ## Copyright (c) 2000-2007 Ralf S. Engelschall ## ## 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 4.1 %define V_minor 22 %define V_mysql %{V_major}.%{V_minor} %define V_opkg %{V_major}.%{V_minor} # package information Name: mysql4 Summary: Fast Relational Database Management System URL: http://www.mysql.com/products/mysql/ Vendor: MySQL AB Packager: OpenPKG Foundation e.V. Distribution: OpenPKG Community Class: EVAL Group: Database License: GPL Version: %{V_opkg} Release: 20061127 # package options %option with_server yes %option with_bdb yes %option with_innodb no %option with_ssl no %option with_ndb no %option with_embedded no %option with_charset utf8 %option with_collation utf8_unicode_ci # list of sources Source0: http://sunsite.informatik.rwth-aachen.de/mysql/Downloads/MySQL-%{V_major}/mysql-%{V_mysql}.tar.gz Source1: my.cnf Source2: my.pwd Source3: rc.mysql Patch0: mysql4.patch # build information Prefix: %{l_prefix} BuildRoot: %{l_buildroot} BuildPreReq: OpenPKG, openpkg >= 20060823, perl, make, gcc, gcc::with_cxx = yes PreReq: OpenPKG, openpkg >= 20060823, perl BuildPreReq: zlib, readline, ncurses PreReq: zlib, readline, ncurses %if "%{with_ssl}" == "yes" BuildPreReq: openssl PreReq: openssl %endif AutoReq: no AutoReqProv: no Provides: mysql = %{version}-%{release} %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 mysql4 = { version = %{V_mysql} url = http://dev.mysql.com/downloads/mysql/%{V_major}.html regex = mysql-(__VER__)\.tar\.gz } %prep %setup -q -n mysql-%{V_mysql} %patch -p0 %build # 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`/bdb/build_unix -L`pwd`/libmysql %{l_ldflags}" \ ./configure \ --prefix=%{l_prefix} \ --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 \ %endif %if "%{with_bdb}" == "yes" --with-berkeley-db \ %endif %if "%{with_innodb}" == "no" --without-innodb \ %endif %if "%{with_ssl}" == "yes" --with-openssl \ --with-openssl-includes=%{l_prefix}/include \ --with-openssl-libs=%{l_prefix}/lib \ %endif %if "%{with_ndb}" == "yes" --with-ndbcluster \ --with-ndb-shm \ %endif %if "%{with_embedded}" == "yes" --with-embedded-server \ %endif --with-charset=%{with_charset} \ --with-collation=%{with_collation} \ --without-readline \ --without-libedit \ --with-vio \ --with-named-z-libs=no \ --with-low-memory \ --disable-shared \ $opt # build source tree %{l_make} %{l_mflags} %install rm -rf $RPM_BUILD_ROOT # 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 # 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 # determine default parameters %if "%{with_bdb}" == "yes" l_mysql_bdb_cache_size=8M l_mysql_bdb_log_buffer_size=32k l_mysql_bdb_max_lock=10000 %else l_mysql_bdb_cache_size=0 l_mysql_bdb_log_buffer_size=0 l_mysql_bdb_max_lock=0 %endif %if "%{with_bdb}" == "yes" || "%{with_innodb}" == "yes" l_mysqld=mysqld %else l_mysqld=mysqld-max %endif # install global configuration %{l_shtool} mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}/etc/mysql %{l_shtool} install -c -m 644 %{l_value -s -a} \ -e "s;@l_mysql_bdb_cache_size@;${l_mysql_bdb_cache_size};g" \ -e "s;@l_mysql_bdb_log_buffer_size@;${l_mysql_bdb_log_buffer_size};g" \ -e "s;@l_mysql_bdb_max_lock@;${l_mysql_bdb_max_lock};g" \ %{SOURCE 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} \ -e "s;@l_mysqld@;${l_mysqld};g" \ %{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 # 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 rm -rf $RPM_BUILD_ROOT %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