pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/databases/mysql4-server Defer the creation of the init...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/c717571285fa
branches:  trunk
changeset: 478301:c717571285fa
user:      jlam <jlam%pkgsrc.org@localhost>
date:      Wed Jul 21 17:45:13 2004 +0000

description:
Defer the creation of the initial MySQL database directories until we
actually try to run MySQL server.  Beef up the rc.d script to work on
systems that don't use NetBSD's rc.d script system, and to support an
"initdb" command to initialize the MySQL database for first-time use.

diffstat:

 databases/mysql4-server/DEINSTALL       |  16 +++++
 databases/mysql4-server/INSTALL         |  10 ---
 databases/mysql4-server/Makefile        |   9 +-
 databases/mysql4-server/files/mysqld.sh |  96 ++++++++++++++++++++++++++++----
 4 files changed, 105 insertions(+), 26 deletions(-)

diffs (181 lines):

diff -r 911c54e2ce70 -r c717571285fa databases/mysql4-server/DEINSTALL
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/databases/mysql4-server/DEINSTALL Wed Jul 21 17:45:13 2004 +0000
@@ -0,0 +1,16 @@
+# $NetBSD: DEINSTALL,v 1.1 2004/07/21 17:45:13 jlam Exp $
+
+case ${STAGE} in
+POST-DEINSTALL)
+       if [ -d @MYSQL_DATADIR@ ]; then
+               ${CAT} << EOF
+===========================================================================
+If you won't be using ${PKGNAME} any longer, you may want to remove
+
+  * the following directories:
+
+       @MYSQL_DATADIR@
+===========================================================================
+EOF
+       fi
+esac
diff -r 911c54e2ce70 -r c717571285fa databases/mysql4-server/INSTALL
--- a/databases/mysql4-server/INSTALL   Wed Jul 21 16:19:26 2004 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-# $NetBSD: INSTALL,v 1.1.1.1 2003/12/20 16:00:42 martti Exp $
-
-case ${STAGE} in
-POST-INSTALL)
-       ${ECHO} "-------------------------------"
-       ${ECHO} "Initializing MySQL databases..."
-       ${ECHO} "-------------------------------"
-       ${PKG_PREFIX}/bin/mysql_install_db --force
-       ;;
-esac
diff -r 911c54e2ce70 -r c717571285fa databases/mysql4-server/Makefile
--- a/databases/mysql4-server/Makefile  Wed Jul 21 16:19:26 2004 +0000
+++ b/databases/mysql4-server/Makefile  Wed Jul 21 17:45:13 2004 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.8 2004/07/20 17:28:37 jlam Exp $
+# $NetBSD: Makefile,v 1.9 2004/07/21 17:45:13 jlam Exp $
 
 PKGNAME=               ${DISTNAME:S/-/-server-/}
 SVR4_PKGNAME=          mysqs
@@ -20,14 +20,15 @@
 CONFIGURE_ARGS+=       --with-pthreads
 
 USE_PKGINSTALL=                YES
-INSTALL_EXTRA_TMPL+=   ${.CURDIR}/INSTALL
+DEINSTALL_EXTRA_TMPL=  ${.CURDIR}/DEINSTALL
 
 PKG_USERS=             ${MYSQL_USER}:${MYSQL_GROUP}::MySQL\\ database\\ administrator:${MYSQL_DATADIR}:${SH}
 PKG_GROUPS=            ${MYSQL_GROUP}
 RCD_SCRIPTS=           mysqld
-MAKE_DIRS_PERMS+=      ${MYSQL_DATADIR} ${MYSQL_USER} ${MYSQL_GROUP} 0700
 
-FILES_SUBST+=          MYSQL_DATADIR=${MYSQL_DATADIR}
+FILES_SUBST+=          HOSTNAME_CMD=${HOSTNAME_CMD} \
+                       MYSQL_DATADIR=${MYSQL_DATADIR} \
+                       MYSQL_USER=${MYSQL_USER} MYSQL_GROUP=${MYSQL_GROUP}
 MESSAGE_SUBST+=                MYSQL_DATADIR=${MYSQL_DATADIR} \
                        MYSQL_USER=${MYSQL_USER} MYSQL_GROUP=${MYSQL_GROUP}
 BUILD_DEFS+=           MYSQL_DATADIR
diff -r 911c54e2ce70 -r c717571285fa databases/mysql4-server/files/mysqld.sh
--- a/databases/mysql4-server/files/mysqld.sh   Wed Jul 21 16:19:26 2004 +0000
+++ b/databases/mysql4-server/files/mysqld.sh   Wed Jul 21 17:45:13 2004 +0000
@@ -1,31 +1,103 @@
 #!@RCD_SCRIPTS_SHELL@
 #
-# $NetBSD: mysqld.sh,v 1.1.1.1 2003/12/20 16:00:43 martti Exp $
+# $NetBSD: mysqld.sh,v 1.2 2004/07/21 17:45:13 jlam Exp $
 #
-
 # PROVIDE: mysqld
 # REQUIRE: DAEMON LOGIN mountall
 # KEYWORD: shutdown
-
-# Note: this needs NetBSD 1.6 or newer
+#
+# You will need to set some variables in /etc/rc.conf to start MySQL:
+#
+# mysqld=YES
+#
+# The following variables are optional:
+#
+#       mysqld_user="mysql"            # user to run mysqld as
+#       mysqld_datadir="/path/to/home" # path to MySQL database directory
 #
 
-. /etc/rc.subr
+if [ -f /etc/rc.subr ]; then
+       . /etc/rc.subr
+fi
 
 name="mysqld"
-rcvar=$name
+rcvar=${name}
 command="@PREFIX@/bin/mysqld_safe"
 procname="@PREFIX@/libexec/${name}"
-pidfile="@MYSQL_DATADIR@/`hostname`.pid"
+mysqld_user="@MYSQL_USER@"
+mysqld_group="@MYSQL_GROUP@"
+mysqld_datadir="@MYSQL_DATADIR@"
+pidfile="${mysqld_datadir}/`@HOSTNAME_CMD@`.pid"
+
+extra_commands="initdb"
+initdb_cmd="mysqld_initdb"
+start_precmd="mysqld_precmd"
 start_cmd="mysqld_start"
-required_files="@MYSQL_DATADIR@/mysql/host.frm"
+
+mysqld_precmd()
+{
+       if [ ! -d ${mysqld_datadir} ]; then
+               mysqld_initdb
+       fi
+}
+
+mysqld_initdb()
+{
+       initdb="@PREFIX@/bin/mysql_install_db"
+       if [ ! -x ${initdb} ]; then
+               return 1
+       fi
+       if [ -f ${mysqld_datadir}/mysql/host.frm ]; then
+               @ECHO@ "The MySQL database has already been initialized."
+               @ECHO@ "Skipping database initialization."
+       else
+               @ECHO@ "Initializing MySQL database system tables."
+               ${initdb} --force --user=${mysqld_user} \
+                         --datadir=${mysqld_datadir} || return 1
+               if [ -d ${mysqld_datadir} ]; then
+                       @CHOWN@ -R ${mysqld_user}:${mysqld_group} \
+                               ${mysqld_datadir}
+               fi
+       fi
+}
 
 mysqld_start()
 {
-       echo "Starting mysqld."
+       for f in $required_files; do
+               if [ ! -r "$f" ]; then
+                       @ECHO@ 1>&2 "$0: WARNING: $f is not readable"
+                       if [ -z $rc_force ]; then
+                               return 1
+                       fi
+               fi
+       done
+       @ECHO@ "Starting ${name}."
        ulimit -n 4096
-       ${command} ${mysqld_flags} &
+       cd @PREFIX@
+       ${command} --user=${mysqld_user} --datadir=${mysqld_datadir} \
+                  --pid-file=${pidfile} ${mysqld_flags} &
 }
 
-load_rc_config $name
-run_rc_command "$1"
+if [ -f /etc/rc.subr -a -d /etc/rc.d -a -f /etc/rc.d/DAEMON ]; then
+       load_rc_config $name
+       run_rc_command "$1"
+else
+       if [ -f /etc/rc.conf ]; then
+               . /etc/rc.conf
+       fi
+       case "$1" in
+       initdb)
+               eval ${initdb_cmd}
+               ;;
+       stop)
+               if [ -r "${pidfile}" ]; then
+                       @ECHO@ "Stopping ${name}."
+                       kill `@CAT@ ${pidfile}`
+               fi
+               ;;
+       *)
+               eval ${start_precmd}
+               eval ${start_cmd}
+               ;;
+       esac
+fi



Home | Main Index | Thread Index | Old Index