[Lunar-commits] <moonbase> mysql-new: a module for mysql 5.1.44.

Florin Braescu florin at lunar-linux.org
Fri Feb 19 15:17:07 CET 2010


commit 43a908f2518b9adddbf630dc866acd69c767f3c4
Author: Florin Braescu <florin at lunar-linux.org>
Date:   Fri Feb 19 16:17:07 2010 +0200

    mysql-new: a module for mysql 5.1.44.
    
    This module is intended to help migrate from mysql 5.0 serie to 5.1 one.
    The install dir is /opt/lunar/mysql to avoid corrupting the current mysql
    install.
---
 sql/mysql-new/BUILD         |   57 ++++++++++++
 sql/mysql-new/CONFIGURE     |   63 ++++++++++++++
 sql/mysql-new/DEPENDS       |    2 +
 sql/mysql-new/DETAILS       |   19 ++++
 sql/mysql-new/POST_INSTALL  |   14 +++
 sql/mysql-new/init.d/mysqld |  200 +++++++++++++++++++++++++++++++++++++++++++
 sql/mysql-new/services      |    1 +
 7 files changed, 356 insertions(+), 0 deletions(-)

diff --git a/sql/mysql-new/BUILD b/sql/mysql-new/BUILD
new file mode 100644
index 0000000..ebe9f83
--- /dev/null
+++ b/sql/mysql-new/BUILD
@@ -0,0 +1,57 @@
+(
+
+  add_priv_user mysql:mysql  &&
+  devoke_installwatch        &&
+
+  if [ "`arch`" == "alpha" ]; then
+          export CFLAGS="$CFLAGS -fPIC"
+        export CXXFLAGS="$CXXFLAGS -fPIC"
+  fi &&
+
+  if [ "`arch`" == "x86_64" ]; then
+         export CFLAGS="$CFLAGS -fPIC"
+       export CXXFLAGS="$CXXFLAGS -fPIC"
+  fi &&
+
+  export CXX='gcc' &&
+
+  ./configure  --prefix=/opt/lunar/mysql       \
+               --disable-dependency-tracking   \
+               --without-bench                 \
+               --without-debug                 \
+               --without-readline              \
+               --without-libedit               \
+               --enable-thread-safe-client     \
+               --enable-assembler              \
+               --localstatedir=/var/lib/mysql  \
+               --infodir=/usr/share/info       \
+               --mandir=/usr/share/man         \
+               --with-pthread                  \
+               $OPTS                          &&
+  invoke_installwatch                         &&
+
+  make  pkglibdir=/opt/lunar/mysql/lib        ||
+  {
+    MYSQL_EXIT=$?
+    message ""
+    message "Compilation of mysql failed."
+    message ""
+    message "If you are getting error about 'read_cr4/write_cr4' and/or 'set_in_cr4'"
+    message "note that this is not a mysql bug."
+    message ""
+    message "To fix this please edit the include file that reports the errors and"
+    message "encapsulate the 'set_in_cr4' function with '#ifdef __KERNEL__'/'#endif'."
+    message ""
+    exit $MYSQL_EXIT;
+  }
+  prepare_install          &&
+  mkdir -p /var/lib/mysql  &&
+  make  pkglibdir=/opt/lunar/mysql/lib  install  &&
+  rm    -rf  /opt/lunar/mysql/mysql-test         &&
+
+  if  [ -x /etc/init.d/mysql.server ]; then
+    rm -f /etc/init.d/mysql.server
+    rm -f /etc/rc?.d/???mysql.server
+  fi
+
+) > $C_FIFO 2>&1
diff --git a/sql/mysql-new/CONFIGURE b/sql/mysql-new/CONFIGURE
new file mode 100644
index 0000000..b5d6790
--- /dev/null
+++ b/sql/mysql-new/CONFIGURE
@@ -0,0 +1,63 @@
+if  !  grep  -q  CONFIGURED  $MODULE_CONFIG;  then
+
+ if    query  "Install client only? " n; then
+    OPTS="$OPTS --without-server"
+  else
+    if  query  "Enable InnoDB Support? Needed by KDE4/Akonadi " n; then
+      OPTS="$OPTS --with-innodb"
+    else
+      OPTS="$OPTS --without-innodb"
+    fi
+
+    if  query  "Enable BDB Support? " n; then
+      OPTS="$OPTS --with-berkeley-db"
+    else
+      OPTS="$OPTS --without-berkeley-db"
+    fi
+
+    if  query  "Enable RAID Support? " n; then
+      OPTS="$OPTS --with-raid"
+    else
+      OPTS="$OPTS --without-raid"
+    fi
+
+    if  query  "Include the Virtual IO support? " n; then
+      OPTS="$OPTS --with-vio"
+    else
+      OPTS="$OPTS --without-vio"
+    fi
+
+    if query "Include the NDB Cluster table handler? " n; then
+      OPTS="$OPTS --with-ndbcluster"
+    else
+      OPTS="$OPTS --without-ndbcluster"
+    fi
+
+    if query "Support tables with more than 4 G rows even on 32 bit platforms? " n; then
+      OPTS="$OPTS --with-big-tables"
+    else
+      OPTS="$OPTS --without-big-tables"
+    fi
+  fi
+
+  if    query  "Include the OpenSSL support? " n; then
+    OPTS="$OPTS --with-ssl"
+  fi
+
+  if    query  "Build embedded server (libmysqld), needed by KDE4 ? " n; then
+    OPTS="$OPTS --with-embedded-server"
+  else
+    OPTS="$OPTS --without-embedded-server"
+  fi
+  
+  if  query "Enable all character sets? " y; then
+    OPTS="$OPTS --with-extra-charsets=all"
+  elif query "Enable just complex character sets? " y; then
+    OPTS="$OPTS --with-extra-charsets=complex"
+  else
+    OPTS="$OPTS --disable-nls"
+  fi
+
+  echo  'CONFIGURED="y"'  >>  $MODULE_CONFIG
+  echo  'OPTS='\"$OPTS\"    >>  $MODULE_CONFIG
+fi
diff --git a/sql/mysql-new/DEPENDS b/sql/mysql-new/DEPENDS
new file mode 100644
index 0000000..cabe0eb
--- /dev/null
+++ b/sql/mysql-new/DEPENDS
@@ -0,0 +1,2 @@
+depends  chkconfig
+depends  perl
diff --git a/sql/mysql-new/DETAILS b/sql/mysql-new/DETAILS
new file mode 100644
index 0000000..1711cd9
--- /dev/null
+++ b/sql/mysql-new/DETAILS
@@ -0,0 +1,19 @@
+          MODULE=mysql-new
+         VERSION=5.1.44
+          SOURCE=mysql-$VERSION.tar.gz
+SOURCE_DIRECTORY=$BUILD_DIRECTORY/mysql-$VERSION
+   SOURCE_URL[0]=ftp://mirror.mcs.anl.gov/pub/mysql/Downloads/MySQL-5.1
+   SOURCE_URL[1]=ftp://ftp.heanet.ie/mirrors/www.mysql.com/Downloads/MySQL-5.1
+   SOURCE_URL[2]=http://mysql.mirrors.pair.com/Downloads/MySQL-5.1
+   SOURCE_URL[3]=http://mirrors.sunsite.dk/mysql/Downloads/MySQL-5.1
+      SOURCE_VFY=sha1:265fbca02b2ef62926e2845d5fdf394298eb3206
+        WEB_SITE=http://www.mysql.com
+         ENTERED=20011114
+         UPDATED=20100219
+           SHORT="A widely used and fast SQL database server"
+
+cat << EOF
+MySQL is a widely used and fast SQL database server. It is a client/
+server implementation that consists of a server daemon (mysqld) and 
+many different client programs/libraries.
+EOF
diff --git a/sql/mysql-new/POST_INSTALL b/sql/mysql-new/POST_INSTALL
new file mode 100644
index 0000000..1c5be01
--- /dev/null
+++ b/sql/mysql-new/POST_INSTALL
@@ -0,0 +1,14 @@
+if ! grep  -q  "\--without-server" $MODULE_CONFIG; then
+  /opt/lunar/mysql/bin/mysql_install_db  &&
+  chown  -R  mysql.mysql  /var/lib/mysql/
+fi
+
+if mount | grep "/tmp" | grep -q tmpfs ; then
+  message ""
+  message "if /tmp is tmpfs and if mysql is being used against big"
+  message "tables (> 2G) there is a big possibility of data/index"
+  message "corruption, especially on myisamchk"
+  message ""
+  message "Consider mounting /tmp on a regular file system"
+  message ""
+fi
diff --git a/sql/mysql-new/init.d/mysqld b/sql/mysql-new/init.d/mysqld
new file mode 100755
index 0000000..160da8d
--- /dev/null
+++ b/sql/mysql-new/init.d/mysqld
@@ -0,0 +1,200 @@
+#!/bin/sh
+# Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB
+# This file is public domain and comes with NO WARRANTY of any kind
+
+# MySQL daemon start/stop script.
+
+# Usually this is put in /etc/init.d (at least on machines SYSV R4 based
+# systems) and linked to /etc/rc3.d/S99mysql and /etc/rc0.d/K01mysql.
+# When this is done the mysql server will be started when the machine is
+# started and shut down when the systems goes down.
+
+# Comments to support chkconfig on RedHat Linux
+# chkconfig: 2345 90 20
+# description: A very fast and reliable SQL database engine.
+
+# Comments to support LSB init script conventions
+### BEGIN INIT INFO
+# Provides: mysql
+# Required-Start: $local_fs $network $remote_fs
+# Required-Stop: $local_fs $network $remote_fs
+# Default-Start:  2 3 4 5
+# Default-Stop: 2 3 4 5
+# Short-Description: start and stop MySQL
+# Description: MySQL is a very fast and reliable SQL database engine.
+### END INIT INFO
+ 
+# If you install MySQL on some other places than /usr, then you
+# have to do one of the following things for this script to work:
+#
+# - Run this script from within the MySQL installation directory
+# - Create a /etc/my.cnf file with the following information:
+#   [mysqld]
+#   basedir=<path-to-mysql-installation-directory>
+# - Add the above to any other configuration file (for example ~/.my.ini)
+#   and copy my_print_defaults to /usr/bin
+# - Add the path to the mysql-installation-directory to the basedir variable
+#   below.
+#
+# If you want to affect other MySQL variables, you should make your changes
+# in the /etc/my.cnf, ~/.my.cnf or other MySQL configuration files.
+
+basedir=
+
+# The following variables are only set for letting mysql.server find things.
+
+# Set some defaults
+datadir=/var/lib/mysql
+pid_file=
+if test -z "$basedir"
+then
+  basedir=/usr
+  bindir=/usr/bin
+else
+  bindir="$basedir/bin"
+fi
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin
+export PATH
+
+if test -z "$pid_file"
+then
+  pid_file=$datadir/`/bin/hostname`.pid
+else
+  case "$pid_file" in
+    /* ) ;;
+    * )  pid_file="$datadir/$pid_file" ;;
+  esac
+fi
+
+mode=$1    # start or stop
+
+parse_arguments() {
+  for arg do
+    case "$arg" in
+      --basedir=*)  basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+      --datadir=*)  datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+      --pid-file=*) pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
+    esac
+  done
+}
+
+# Get arguments from the my.cnf file,
+# groups [mysqld] [mysql_server] and [mysql.server]
+if test -x ./bin/my_print_defaults
+then
+  print_defaults="./bin/my_print_defaults"
+elif test -x $bindir/my_print_defaults
+then
+  print_defaults="$bindir/my_print_defaults"
+elif test -x $bindir/mysql_print_defaults
+then
+  print_defaults="$bindir/mysql_print_defaults"
+else
+  # Try to find basedir in /etc/my.cnf
+  conf=/etc/my.cnf
+  print_defaults=
+  if test -r $conf
+  then
+    subpat='^[^=]*basedir[^=]*=\(.*\)$'
+    dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf`
+    for d in $dirs
+    do
+      d=`echo $d | sed -e 's/[ 	]//g'`
+      if test -x "$d/bin/my_print_defaults"
+      then
+        print_defaults="$d/bin/my_print_defaults"
+        break
+      fi
+      if test -x "$d/bin/mysql_print_defaults"
+      then
+        print_defaults="$d/bin/mysql_print_defaults"
+        break
+      fi
+    done
+  fi
+
+  # Hope it's in the PATH ... but I doubt it
+  test -z "$print_defaults" && print_defaults="my_print_defaults"
+fi
+
+#
+# Test if someone changed datadir;  In this case we should also read the
+# default arguments from this directory
+#
+
+extra_args=""
+if test "$datadir" != "/var/lib/mysql"
+then
+  extra_args="-e $datadir/my.cnf"
+fi
+
+parse_arguments `$print_defaults $extra_args mysqld mysql_server mysql.server`
+
+# Safeguard (relative paths, core dumps..)
+cd $basedir
+
+case "$mode" in
+  'start')
+    # Start daemon
+
+    if test -x $bindir/mysqld_safe
+    then
+      # Give extra arguments to mysqld with the my.cnf file. This script may
+      # be overwritten at next upgrade.
+      $bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file &
+      # Make lock for RedHat / SuSE
+      if test -w /var/lock/subsys
+      then
+        touch /var/lock/subsys/mysql
+      fi
+    else
+      echo "Can't execute $bindir/mysqld_safe from dir $basedir"
+    fi
+    ;;
+
+  'stop')
+    # Stop daemon. We use a signal here to avoid having to know the
+    # root password.
+    if test -s "$pid_file"
+    then
+      mysqld_pid=`cat $pid_file`
+      echo "Killing mysqld with pid $mysqld_pid"
+      kill $mysqld_pid
+      # mysqld should remove the pid_file when it exits, so wait for it.
+
+      sleep 1
+      while [ -s $pid_file -a "$flags" != aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ]
+      do
+        [ -z "$flags" ] && echo "Wait for mysqld to exit\c" || echo ".\c"
+        flags=a$flags
+        sleep 1
+      done
+      if [ -s $pid_file ]
+         then echo " gave up waiting!"
+      elif [ -n "$flags" ]
+         then echo " done"
+      fi
+      # delete lock for RedHat / SuSE
+      if test -f /var/lock/subsys/mysql
+      then
+        rm /var/lock/subsys/mysql
+      fi
+    else
+      echo "No mysqld pid file found. Looked for $pid_file."
+    fi
+    ;;
+
+  'restart')
+    # Stop the service and regardless of whether it was
+    # running or not, start it again.
+    $0 stop
+    $0 start
+		;;
+
+  *)
+    # usage
+    echo "Usage: $0 start|stop|restart"
+    exit 1
+    ;;
+esac
diff --git a/sql/mysql-new/services b/sql/mysql-new/services
new file mode 100644
index 0000000..85f9d1b
--- /dev/null
+++ b/sql/mysql-new/services
@@ -0,0 +1 @@
+mysql           3306/tcp        # mysql server


More information about the Lunar-commits mailing list