diff options
author | Donny Davies <woodchip@gentoo.org> | 2002-01-06 00:53:24 +0000 |
---|---|---|
committer | Donny Davies <woodchip@gentoo.org> | 2002-01-06 00:53:24 +0000 |
commit | 5a23c41343ad60e925cc9a5fcbb760c6e8795bfe (patch) | |
tree | c16e295a809daa13c882fdeaba23052b96fe4a20 /dev-db | |
parent | new version (diff) | |
download | gentoo-2-5a23c41343ad60e925cc9a5fcbb760c6e8795bfe.tar.gz gentoo-2-5a23c41343ad60e925cc9a5fcbb760c6e8795bfe.tar.bz2 gentoo-2-5a23c41343ad60e925cc9a5fcbb760c6e8795bfe.zip |
Heads up on this massive mysql update!
There are *several* significant changes:
1. Databases are located in /var/lib/mysql, instead of /var/mysql
This is pretty much an FHS related change. If you're upgrading
mysql, you should move your databases here.
2. The /etc/init.d/mysql is massively simplified. Very short now.
3. The /etc/mysql/my.cnf file is rewritten.
4. Several options were added to ./configure, including --with-raid
5. The package is built using reccomended compiler flags for stability!
This is why the old ebuilds are deleted. Mysql could crash under
heavy load and multiple connections without these CFLAGS! Also, both
client and server binaries are now linked with libstc+++.so, previously
nothing was.. not sure what functionality was 'missing' because of that..
6. Ensures a proper mysql/group account setup on your system.
7. Patches to mould the distribution into a more Gentooier package.
8. Some general housekeeping in syntax, and in /usr/share/mysql especially.
9. An ebuild config function, for no-nonsense instant setup and go capability.
This update brings the package more in line with the current offerings from
Debian and FBSD. Most changes were adapted straight from Debian. :)
As a sidenote, the innobase stuff was made into a USE flag. There seems
to be some weirdess with that components makefile, could somebody using
innobase tables comment?
Diffstat (limited to 'dev-db')
-rw-r--r-- | dev-db/mysql/files/digest-mysql-3.23.47 | 1 | ||||
-rw-r--r-- | dev-db/mysql/files/my.cnf | 46 | ||||
-rw-r--r-- | dev-db/mysql/files/mysql-3.23-db-3.2.3.diff | 27 | ||||
-rw-r--r-- | dev-db/mysql/files/mysql-3.23-install-db-sh.diff | 35 | ||||
-rw-r--r-- | dev-db/mysql/files/mysql-3.23-my-print-defaults.diff | 11 | ||||
-rw-r--r-- | dev-db/mysql/files/mysql-3.23-nisam.h.diff | 11 | ||||
-rw-r--r-- | dev-db/mysql/files/mysql-3.23-safe-mysqld-sh.diff | 50 | ||||
-rw-r--r-- | dev-db/mysql/files/mysql.rc6 | 30 | ||||
-rw-r--r-- | dev-db/mysql/mysql-3.23.47.ebuild | 206 |
9 files changed, 397 insertions, 20 deletions
diff --git a/dev-db/mysql/files/digest-mysql-3.23.47 b/dev-db/mysql/files/digest-mysql-3.23.47 new file mode 100644 index 000000000000..b6a120a4ef7b --- /dev/null +++ b/dev-db/mysql/files/digest-mysql-3.23.47 @@ -0,0 +1 @@ +MD5 e733474825fb158f876f3d97e996a341 mysql-3.23.47.tar.gz 11939840 diff --git a/dev-db/mysql/files/my.cnf b/dev-db/mysql/files/my.cnf index 0e09333d04d2..83c8fd342022 100644 --- a/dev-db/mysql/files/my.cnf +++ b/dev-db/mysql/files/my.cnf @@ -1,40 +1,46 @@ -# Example mysql config file. -# You can copy this to one of: -# @sysconfdir@/my.cnf to set global options, -# mysql-data-dir/my.cnf to set server-specific options (in this -# installation this directory is @localstatedir@) or -# ~/.my.cnf to set user-specific options. -# +# /etc/mysql/my.cnf: The global mysql configuration file. +# +# This file can be simultaneously placed in three places: +# 1. /etc/mysql/my.cnf to set global options. +# 2. /var/lib/mysql/my.cnf to set server-specific options. +# 3. ~/.my.cnf to set user-specific options. +# # One can use all long options that the program supports. -# Run the program with --help to get a list of available options +# Run the program with --help to get a list of them. +# +# The following values assume you have at least 32M RAM! -# This will be passed to all mysql clients [client] #password = my_password port = 3306 -socket = /tmp/mysql.sock +socket = /var/run/mysqld/mysqld.sock -# Here is entries for some specific programs -# The following values assume you have at least 32M ram +[safe_mysqld] +err-log = /var/log/mysql/mysql.err -# The MySQL server [mysqld] -port = 3306 -socket = /tmp/mysql.sock +#skip-networking +skip-innodb user = mysql +pid-file = /var/run/mysqld/mysqld.pid +socket = /var/run/mysqld/mysqld.sock +port = 3306 +log = /var/log/mysql/mysql.log +basedir = /usr +datadir = /var/lib/mysql +tmpdir = /tmp +language = /usr/share/mysql/english skip-locking set-variable = key_buffer=16M set-variable = max_allowed_packet=1M set-variable = thread_stack=128K -# Start logging -log [mysqldump] quick -set-variable = max_allowed_packet=16M +set-variable = max_allowed_packet=1M [mysql] -no-auto-rehash +#no-auto-rehash # faster start of mysql but no tab completition [isamchk] -set-variable = key_buffer=16M
\ No newline at end of file +set-variable = key_buffer=16M diff --git a/dev-db/mysql/files/mysql-3.23-db-3.2.3.diff b/dev-db/mysql/files/mysql-3.23-db-3.2.3.diff new file mode 100644 index 000000000000..043f45586224 --- /dev/null +++ b/dev-db/mysql/files/mysql-3.23-db-3.2.3.diff @@ -0,0 +1,27 @@ +diff -u -r mysql-3.23.38.orig/acinclude.m4 mysql-3.23.38/acinclude.m4 +--- mysql-3.23.38.orig/acinclude.m4 Tue Mar 27 10:11:01 2001 ++++ mysql-3.23.38/acinclude.m4 Fri Apr 13 17:16:52 2001 +@@ -742,12 +742,12 @@ + if test X"$bdb_version_ok" = Xyes; then + save_LDFLAGS="$LDFLAGS" + LDFLAGS="-L$lib $LDFLAGS" +- AC_CHECK_LIB(db,db_env_create, [ ++ AC_CHECK_LIB(db-3.2,db_env_create, [ + bdb_dir_ok=installed + MYSQL_TOP_BUILDDIR([inc]) + MYSQL_TOP_BUILDDIR([lib]) + bdb_includes="-I$inc" +- bdb_libs="-L$lib -ldb" ++ bdb_libs="-L$lib -ldb-3.2" + ]) + LDFLAGS="$save_LDFLAGS" + else +@@ -775,7 +775,7 @@ + bdb="$dir" + MYSQL_TOP_BUILDDIR([dir]) + bdb_includes="-I$dir/build_unix" +- bdb_libs="-L$dir/build_unix -ldb" ++ bdb_libs="-L$dir/build_unix -ldb-3.2" + else + bdb_dir_ok="$bdb_version_ok" + fi diff --git a/dev-db/mysql/files/mysql-3.23-install-db-sh.diff b/dev-db/mysql/files/mysql-3.23-install-db-sh.diff new file mode 100644 index 000000000000..a893ca1f5cbc --- /dev/null +++ b/dev-db/mysql/files/mysql-3.23-install-db-sh.diff @@ -0,0 +1,35 @@ +diff -ur mysql-3.23.47.orig/scripts/mysql_install_db.sh mysql-3.23.47/scripts/mysql_install_db.sh +--- mysql-3.23.47.orig/scripts/mysql_install_db.sh Thu Dec 27 07:23:38 2001 ++++ mysql-3.23.47/scripts/mysql_install_db.sh Fri Jan 4 04:55:18 2002 +@@ -309,14 +309,9 @@ + END_OF_DATA + then + echo "" +- if test "$IN_RPM" -eq 0 +- then +- echo "To start mysqld at boot time you have to copy support-files/mysql.server" +- echo "to the right place for your system" +- echo +- fi + echo "PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !" + echo "This is done with:" ++ echo "/etc/init.d/mysql start (you have to start the server first!)" + echo "$bindir/mysqladmin -u root -p password 'new-password'" + echo "$bindir/mysqladmin -u root -h $hostname -p password 'new-password'" + echo "See the manual for more instructions." +@@ -330,15 +325,6 @@ + echo "able to use the new GRANT command!" + fi + echo +- if test "$IN_RPM" -eq 0 +- then +- echo "You can start the MySQL daemon with:" +- echo "cd @prefix@ ; $bindir/safe_mysqld &" +- echo +- echo "You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:" +- echo "cd sql-bench ; run-all-tests" +- echo +- fi + echo "Please report any problems with the @scriptdir@/mysqlbug script!" + echo + echo "The latest information about MySQL is available on the web at" diff --git a/dev-db/mysql/files/mysql-3.23-my-print-defaults.diff b/dev-db/mysql/files/mysql-3.23-my-print-defaults.diff new file mode 100644 index 000000000000..dbdf14d8101d --- /dev/null +++ b/dev-db/mysql/files/mysql-3.23-my-print-defaults.diff @@ -0,0 +1,11 @@ +--- orig/mysys/default.c Sun May 13 16:40:06 2001 ++++ mysql-patched/mysys/default.c Sun May 13 16:40:17 2001 +@@ -48,7 +48,7 @@ + #ifdef __WIN__ + "C:/", + #else +-"/etc/", ++"/etc/mysql/", + #endif + #ifdef DATADIR + DATADIR, diff --git a/dev-db/mysql/files/mysql-3.23-nisam.h.diff b/dev-db/mysql/files/mysql-3.23-nisam.h.diff new file mode 100644 index 000000000000..8b4450478808 --- /dev/null +++ b/dev-db/mysql/files/mysql-3.23-nisam.h.diff @@ -0,0 +1,11 @@ +--- include/nisam.h~ Tue Mar 27 10:11:02 2001 ++++ include/nisam.h Fri Apr 13 16:26:02 2001 +@@ -31,7 +31,7 @@ + + #define N_MAXKEY 16 /* Max allowed keys */ + #define N_MAXKEY_SEG 16 /* Max segments for key */ +-#define N_MAX_KEY_LENGTH 256 /* May be increased up to 500 */ ++#define N_MAX_KEY_LENGTH 500 /* May be increased up to 500 */ + #define N_MAX_KEY_BUFF (N_MAX_KEY_LENGTH+N_MAXKEY_SEG+sizeof(double)-1) + #define N_MAX_POSSIBLE_KEY_BUFF 500+9 + diff --git a/dev-db/mysql/files/mysql-3.23-safe-mysqld-sh.diff b/dev-db/mysql/files/mysql-3.23-safe-mysqld-sh.diff new file mode 100644 index 000000000000..d47ef58ef775 --- /dev/null +++ b/dev-db/mysql/files/mysql-3.23-safe-mysqld-sh.diff @@ -0,0 +1,50 @@ +diff -ur mysql-3.23.47.orig/scripts/safe_mysqld.sh mysql-3.23.47/scripts/safe_mysqld.sh +--- mysql-3.23.47.orig/scripts/safe_mysqld.sh Thu Dec 27 07:23:28 2001 ++++ mysql-3.23.47/scripts/safe_mysqld.sh Fri Jan 4 05:08:08 2002 +@@ -68,42 +68,14 @@ + done + } + +-MY_PWD=`pwd` +-# Check if we are starting this relative (for the binary release) +-if test -d $MY_PWD/data/mysql -a -f ./share/mysql/english/errmsg.sys -a \ +- -x ./bin/mysqld +-then +- MY_BASEDIR_VERSION=$MY_PWD # Where bin, share and data are +- ledir=$MY_BASEDIR_VERSION/bin # Where mysqld is +- DATADIR=$MY_BASEDIR_VERSION/data +- if test -z "$defaults" +- then +- defaults="--defaults-extra-file=$MY_BASEDIR_VERSION/data/my.cnf" +- fi +-# Check if this is a 'moved install directory' +-elif test -f ./var/mysql/db.frm -a -f ./share/mysql/english/errmsg.sys -a \ +- -x ./libexec/mysqld +-then +- MY_BASEDIR_VERSION=$MY_PWD # Where libexec, share and var are +- ledir=$MY_BASEDIR_VERSION/libexec # Where mysqld is +- DATADIR=$MY_BASEDIR_VERSION/var +-else +- MY_BASEDIR_VERSION=@prefix@ +- DATADIR=@localstatedir@ +- ledir=@libexecdir@ +-fi ++MY_BASEDIR_VERSION=@prefix@ ++DATADIR=@localstatedir@ ++ledir=@libexecdir@ + + MYSQL_UNIX_PORT=${MYSQL_UNIX_PORT:-@MYSQL_UNIX_ADDR@} + MYSQL_TCP_PORT=${MYSQL_TCP_PORT:-@MYSQL_TCP_PORT@} + user=@MYSQLD_USER@ +- +-# Use the mysqld-max binary by default if the user doesn't specify a binary +-if test -x $ledir/mysqld-max +-then +- MYSQLD=mysqld-max +-else +- MYSQLD=mysqld +-fi ++MYSQLD=mysqld + + # these rely on $DATADIR by default, so we'll set them later on + pid_file= diff --git a/dev-db/mysql/files/mysql.rc6 b/dev-db/mysql/files/mysql.rc6 new file mode 100644 index 000000000000..f8911e7b4c82 --- /dev/null +++ b/dev-db/mysql/files/mysql.rc6 @@ -0,0 +1,30 @@ +#!/sbin/runscript +# Copyright 1999-2002 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# $Header: /var/cvsroot/gentoo-x86/dev-db/mysql/files/mysql.rc6,v 1.1 2002/01/06 00:53:24 woodchip Exp $ + +depend() { + need net +} + +checkconfig() { + if [ ! -d /var/lib/mysql/mysql ] ; then + eerror "You dont appear to have the mysql database installed yet." + eerror "Please run /usr/bin/mysql_install_db to have this done..." + return 1 + fi +} + +start() { + checkconfig || return 1 + ebegin "Starting mysqld" + start-stop-daemon --start --quiet --exec /usr/bin/safe_mysqld \ + --background -- >/dev/null 2>&1 + eend $? +} + +stop () { + ebegin "Stopping mysqld" + start-stop-daemon --stop --quiet --pidfile=/var/run/mysqld/mysqld.pid + eend $? +} diff --git a/dev-db/mysql/mysql-3.23.47.ebuild b/dev-db/mysql/mysql-3.23.47.ebuild new file mode 100644 index 000000000000..a6f17f125d1a --- /dev/null +++ b/dev-db/mysql/mysql-3.23.47.ebuild @@ -0,0 +1,206 @@ +# Copyright 1999-2002 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Maintainer: System Team <system@gentoo.org> +# Author: Donny Davies <woodchip@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/dev-db/mysql/mysql-3.23.47.ebuild,v 1.1 2002/01/06 00:53:24 woodchip Exp $ + +# NB: Databases are now in /var/lib/mysql vs. the old /var/mysql. If you are +# upgrading from a recent mysql version, you should be able to simply move +# your databases into the new directory, but to be absolutely *safe* you should: +# - dump all of your databases +# - stop mysql if it is running +# - delete the old /var/mysql directory +# - emerge this ebuild +# - run /usr/bin/mysql_install_db or ebuild this-ebuild.ebuild config +# - start up mysql +# - re-create all of your databases +# - re-load your data +# If you are *not* upgrading, then you can just emerge this ebuild and +# either run /usr/bin/mysql_install_db or ebuild this-ebuild.ebuild config :) + +DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." +HOMEPAGE="http://www.mysql.com/" + +S=${WORKDIR}/${P} +SRC_URI="http://www.kernelnotes.de/MySQL/Downloads/MySQL-3.23/${P}.tar.gz + ftp://mysql.valueclick.com/pub/mysql/Downloads/MySQL-3.23/${P}.tar.gz + http://mysql.he.net/Downloads/MySQL-3.23/${P}.tar.gz + http://web.tryc.on.ca/mysql/Downloads/MySQL-3.23/${P}.tar.gz + ftp://ftp.sunet.se/pub/unix/databases/relational/mysql/Downloads/MySQL-3.23/${P}.tar.gz" + +RDEPEND="virtual/glibc readline? ( >=sys-libs/readline-4.1 ) >=sys-libs/ncurses-5.1 >=sys-libs/zlib-1.1.3" +DEPEND="${RDEPEND} tcpd? ( >=sys-apps/tcp-wrappers-7.6 ) sys-devel/perl sys-apps/procps" + +src_unpack() { + + unpack ${A} ; cd ${S} + #for -ldb-3.2 instead of -ld + patch -p1 < ${FILESDIR}/mysql-3.23-db-3.2.3.diff || die + #required for qmail-mysql + patch -p0 < ${FILESDIR}/mysql-3.23-nisam.h.diff || die + #zap startup script messages + patch -p1 < ${FILESDIR}/mysql-3.23-install-db-sh.diff || die + #zap binary distribution stuff + patch -p1 < ${FILESDIR}/mysql-3.23-safe-mysqld-sh.diff || die + #for correct hardcoded sysconf directory + patch -p1 < ${FILESDIR}/mysql-3.23-my-print-defaults.diff || die + + aclocal || die + automake || die + autoconf || die +} + +src_compile() { + + local myconf + #means use the system readline + use readline && myconf="${myconf} --without-readline" + use berkdb && myconf="${myconf} --with-berkeley-db --with-berkeley-db-includes=/usr/include/db3 --with-berkeley-db-libs=/usr/lib" + use berkdb || myconf="${myconf} --without-berkeley-db" + use static && myconf="${myconf} --with-mysqld-ldflags=-all-static --disable-shared" + use static || myconf="${myconf} --enable-shared --enable-static" + use tcpd && myconf="${myconf} --with-libwrap" + use innodb && myconf="${myconf} --with-innodb" + + if [ "$DEBUG" == "true" ] ; then + myconf="${myconf} --with-debug" + else + myconf="${myconf} --without-debug" + fi + + #CXX must be g++ because gcc|c++ does not find /usr/lib/gcc-lib/libstc+++.so. + #the compiler flags are needed to address stability issues. + CC=gcc \ + CFLAGS="${CFLAGS/-O?/} -O2 -fomit-frame-pointer" \ + CXX=g++ \ + CXXFLAGS="${CXXFLAGS/-O?/} -O2 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" \ + ./configure \ + --prefix=/usr \ + --exec-prefix=/usr \ + --libdir=/usr/lib \ + --libexecdir=/usr/sbin \ + --datadir=/usr/share \ + --sysconfdir=/etc/mysql \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var/lib/mysql \ + --includedir=/usr/include \ + --with-raid \ + --with-low-memory \ + --enable-assembler \ + --with-charset=latin1 \ + --with-mysqld-user=mysql \ + --with-extra-charsets=all \ + --enable-thread-safe-client \ + --with-client-ldflags=-lstdc++ \ + --with-comment="${PF}.ebuild package" \ + --with-unix-socket-path=/var/run/mysqld/mysqld.sock \ + --host=${CHOST} ${myconf} || die "bad configure" + + make || die "compile problem" +} + +src_install() { + + dodir /var/lib/mysql /var/run/mysqld /var/log/mysql + make install DESTDIR=${D} benchdir_root=/usr/share/mysql || die + + #eeek, not sure whats going on here.. are these needed by anything? + use innodb && ( insinto /usr/lib/mysql ; doins ${WORKDIR}/../libs/* ) + + #move client libs, install a couple of missing headers + mv ${D}/usr/lib/mysql/libmysqlclient*.so* ${D}/usr/lib + dosym ../libmysqlclient.so /usr/lib/mysql/libmysqlclient.so + insinto /usr/include/mysql ; doins include/{my_config.h,my_dir.h} + + dosym /usr/bin/mysqlcheck /usr/bin/mysqlanalyze + dosym /usr/bin/mysqlcheck /usr/bin/mysqlrepair + dosym /usr/bin/mysqlcheck /usr/bin/mysqloptimize + + #while my broom gently sweeps... + rm -f ${D}/usr/share/mysql/binary-configure + rm -f ${D}/usr/share/mysql/mysql.server + rm -f ${D}/usr/share/mysql/make_binary_distribution + rm -f ${D}/usr/share/mysql/mi_test_all* + rm -f ${D}/usr/share/mysql/mysql-log-rotate + rm -f ${D}/usr/share/mysql/mysql*.spec + rm -f ${D}/usr/share/mysql/my-*.cnf + + dodoc README COPYING COPYING.LIB MIRRORS Docs/{manual.ps,manual.txt} + docinto conf-samples ; dodoc support-files/my-*.cnf + docinto html ; dodoc Docs/*.html + + insinto /etc/mysql + doins ${FILESDIR}/my.cnf scripts/mysqlaccess.conf + exeinto /etc/init.d ; newexe ${FILESDIR}/mysql.rc6 mysql +} + +pkg_config() { + + if [ ! -d /var/lib/mysql/mysql ] ; then + einfo "Press ENTER to create the mysql database and set proper" + einfo "permissions on it, or Control-C to abort now..." + read + ewarn "Last chance, ENTER to continue, Control-C to abort..." + read + /usr/bin/mysql_install_db #>>/var/log/mysql/mysql.err 2>&1 + else + einfo "Hmm, it appears as though you already have the mysql" + einfo "database in place. If you are having problems trying" + einfo "to start mysqld, perhaps you need to manually run" + einfo "/usr/bin/mysql_install_db and/or check your config" + einfo "file(s) and/or database(s) and/or logfile(s) :>" + fi + + # ensure permissions on these just in case... + chown -R mysql /var/lib/mysql + chown -R mysql /var/run/mysqld +} + +pkg_prerm() { + + if [ "$ROOT" = "/" ] && [ -e /dev/shm/.init.d/started/mysql ] ; then + /etc/init.d/mysql stop + fi +} + +pkg_preinst() { + + if [ "$ROOT" = "/" ] && [ -e /dev/shm/.init.d/started/mysql ] ; then + /etc/init.d/mysql stop + fi +} + +pkg_postinst() { + + # ensure the following arrangement: + # /etc/passwd: mysql:x:60:60:mysql:/var/lib/mysql:/dev/null + # /etc/group: mysql::60: + # + # creating mysql group if he isn't already there + if ! grep -q ^mysql: /etc/group ; then + #echo Adding system group: mysql. + groupadd -g 60 mysql || die "problem adding group mysql" + fi + # creating mysql user if he isn't already there + if ! grep -q ^mysql: /etc/passwd ; then + #echo Adding system user: mysql. + useradd -g mysql -s /dev/null -d /var/lib/mysql -c "mysql" mysql + assert "problem adding user mysql" + fi + # modifying him if he was already there + usermod -c "mysql" mysql || die "usermod problem" + usermod -d "/var/lib/mysql" mysql || die "usermod problem" + usermod -g "mysql" mysql || die "usermod problem" + usermod -s "/dev/null" mysql || die "usermod problem" + + # ensure sane permissions on existing databases and /var/run/mysqld + chown mysql.mysql /var/lib/mysql /var/run/mysqld + find /var/lib/mysql -not \( -group root -or -group mysql \) -exec chgrp mysql {} \; + + # get these proper and ready to go + touch /var/log/mysql/mysql.log /var/log/mysql/mysql.err + chown mysql.mysql /var/log/mysql/mysql.log /var/log/mysql/mysql.err + chmod 0600 /var/log/mysql/mysql.log + chmod 0600 /var/log/mysql/mysql.err +} |