#!/bin/sh # Build and install MySQL on Slackware # by: David Cantrell # Currently maintained by: Patrick Volkerding CWD=`pwd` TMP=${TMP:-/tmp} if [ ! -d $TMP ]; then mkdir -p $TMP fi PKG=$TMP/package-mysql rm -rf $PKG mkdir -p $PKG VERSION=5.0.51 ARCH=${ARCH:-x86_64} BUILD=${BUILD:-1_slamd64_11.0} DISTRO=${DISTRO:-slamd64} if [ $DISTRO = slackware ]; then PKGARCH=$ARCH else PKGARCH=${ARCH}_${DISTRO} fi if [ $DISTRO = slamd64 ]; then LIBSUFFIX=${LIBSUFFIX:-64} fi if [ "$ARCH" = "i386" ]; then SLKCFLAGS="-O2 -march=i386 -mcpu=i686" elif [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" elif [ "$ARCH" = "s390" ]; then SLKCFLAGS="-O2" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" fi cd $TMP rm -rf mysql-$VERSION tar xjvf $CWD/mysql-$VERSION.tar.bz2 cd mysql-$VERSION chown -R root:root . find . -perm 777 -exec chmod 755 {} \; find . -perm 775 -exec chmod 755 {} \; find . -perm 666 -exec chmod 644 {} \; find . -perm 664 -exec chmod 644 {} \; find . -perm 444 -exec chmod 644 {} \; CFLAGS="$SLKCFLAGS" CXX=gcc CXXFLAGS="$SLKCFLAGS -felide-constructors -fno-exceptions -fno-rtti" \ ./configure \ --prefix=/usr \ --libdir=/usr/lib$LIBSUFFIX \ --with-mysqld-user=mysql \ --with-unix-socket-path=/var/run/mysql/mysql.sock \ --localstatedir=/var/lib/mysql \ --enable-assembler \ --with-raid \ --without-debug \ --enable-thread-safe-client \ --without-bench \ --with-extra-charsets=complex \ --with-vio \ --with-openssl \ --program-prefix="" \ --program-suffix="" \ $ARCH-$DISTRO-linux # # --without-readline make -j5 || exit make install DESTDIR=$PKG # Strip ELF objects: ( cd $PKG find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null ) mkdir -p $PKG/etc ( cd support-files cp my-huge.cnf my-large.cnf my-medium.cnf my-small.cnf $PKG/etc ) # install docs mkdir -p $PKG/usr/doc/mysql-$VERSION/Docs # Don't need the (huge) INSTALL-SOURCE... the source is installed already. #cp -a COPYING* INSTALL-SOURCE MIRRORS README /usr/doc/mysql-$VERSION cp -a COPYING* MIRRORS README $PKG/usr/doc/mysql-$VERSION ( cd Docs cp -a INSTALL-BINARY *.html *.txt Flags \ $PKG/usr/doc/mysql-$VERSION/Docs ) # Also too large to justify since the .html version is right there: rm $PKG/usr/doc/mysql-$VERSION/Docs/manual.txt find $PKG/usr/doc/mysql-$VERSION -type f -exec chmod 644 {} \; # this is the directory where databases are stored mkdir -p $PKG/var/lib/mysql chown mysql.mysql $PKG/var/lib/mysql chmod 750 $PKG/var/lib/mysql # this is where the socket is stored mkdir -p $PKG/var/run/mysql chown mysql.mysql $PKG/var/run/mysql chmod 755 $PKG/var/run/mysql # Do not include the test suite: rm -r $PKG/usr/mysql-test # Add init script: mkdir -p $PKG/etc/rc.d # This is intentionally chmod 644. zcat $CWD/rc.mysqld.gz > $PKG/etc/rc.d/rc.mysqld.new # Install script: mkdir -p $PKG/install zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh cat $CWD/slack-desc > $PKG/install/slack-desc # Add some handy library symlinks: if [ -r $PKG/usr/lib$LIBSUFFIX/mysql/libmysqlclient.so.15 ]; then ( cd $PKG/usr/lib$LIBSUFFIX rm -f libmysqlclient.so libmysqlclient.so.15 ln -sf mysql/libmysqlclient.so . ln -sf mysql/libmysqlclient.so.15 . ) else exit 1 fi if [ -r $PKG/usr/lib$LIBSUFFIX/mysql/libmysqlclient_r.so.15 ]; then ( cd $PKG/usr/lib$LIBSUFFIX rm -f libmysqlclient_r.so libmysqlclient_r.so.15 ln -sf mysql/libmysqlclient_r.so . ln -sf mysql/libmysqlclient_r.so.15 . ) else exit 1 fi # Packaging standards: rm -f $PKG/usr/info/dir gzip -9 $PKG/usr/info/* gzip -9 $PKG/usr/man/man?/*.? # Build package: cd $PKG makepkg -l y -c n $TMP/mysql-$VERSION-$PKGARCH-$BUILD.tgz if [ "$1" == "--cleanup" ]; then cd $TMP rm -rf mysql-$VERSION fi