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
+