#!/bin/sh # # make_mysql_pkg.sh # # This script creates a Mac OS X installation package # for Apple's Installer application. # # To use it: # # 1.) unpack the MySQL source tarball # 2.) cd to into the resulting directory and stay there for the next steps # 3.) "configure" the source (preferably with --mandir=/usr/local/share/man) # 4.) "make" the package # 5.) invoke this script with superuser privileges (sudo or in a root shell) # # Written by Marc Liyanage (http://www.entropy.ch) # # History: # # When Who What # ------------------------------------------------------------- # 2001-09-13 Marc Liyanage First version # Find the version number of this particular MySQL build # OLDWD=`pwd` VERSION_H_FILE=$OLDWD/include/mysql_version.h if [ ! -e $VERSION_H_FILE ] then echo $VERSION_H_FILE not found, make sure you are in the mysql source dir exit 1 fi MYSQLVERSION=`egrep 'MYSQL_SERVER_VERSION' $VERSION_H_FILE | perl -e '$_ = <>; $_ =~ /"(.+?)"/; print $1'` # We will temporarily rename /usr/local to this name # and then mkdir a new, empty /usr/local # LOCAL_TMPDIR=/usr/local.tmp # At the end, we'll keep our temporary /usr/local # to this name # LOCAL_BACKUPDIR=/usr/local.mysql-package # Where do we create the package directory # PKG_DIR=/tmp/mysql-$MYSQLVERSION.pkg # Where is the resources directory within the # package directory # PKG_RESOURCES_DIR=$PKG_DIR/Contents/Resources # Check if old stuff is in our way # if [ -e $LOCAL_BACKUPDIR ] then echo $LOCAL_BACKUPDIR exists, please remove first... exit 1 fi if [ -e $LOCAL_TMPDIR ] then echo $LOCAL_TMPDIR exists, please remove first... exit 1 fi if [ -e $PKG_DIR ] then echo $PKG_DIR exists, please remove first... exit 1 fi # Now create the package dir # mkdir -p $PKG_RESOURCES_DIR # Move the existing /usr/local out of our way # mv /usr/local $LOCAL_TMPDIR # Now create our new empty temporary /usr/local # mkdir /usr/local # And install MySQL there # make install # cd there so the next few commands will use it # as base directory # cd /usr/local # First, create the gzipped pax archive file # which contains the actual files # pax -w . | gzip -c > $PKG_RESOURCES_DIR/mysql-$MYSQLVERSION.pax.gz # Create the bom ("Bill Of Materials") file # mkbom . $PKG_RESOURCES_DIR/mysql-$MYSQLVERSION.bom # Create the sizes file with the package space # requirement numbers and file count # SIZE_UNCOMPRESSED=`du -sk /usr/local | cut -f 1` SIZE_COMPRESSED=`du -sk $PKG_DIR | cut -f 1` NUMFILES=`find /usr/local | wc -l | perl -e '$_ = <>; $_ =~ /\s+(\d+)/; print $1 - 1'` echo NumFiles $NUMFILES >> $PKG_RESOURCES_DIR/mysql-$MYSQLVERSION.sizes echo InstalledSize $SIZE_UNCOMPRESSED >> $PKG_RESOURCES_DIR/mysql-$MYSQLVERSION.sizes echo CompressedSize $SIZE_COMPRESSED >> $PKG_RESOURCES_DIR/mysql-$MYSQLVERSION.sizes # Finally create the info file which drives the "Installer" application # cat >$PKG_RESOURCES_DIR/mysql-$MYSQLVERSION.info <<- EOF Title MySQL Version $MYSQLVERSION Description The MySQL database server in a convenient Mac OS X package. Some additional configuration is necessary, please see http://www.entropy.ch/software/macosx/mysql/ DefaultLocation /usr/local Diskname (null) DeleteWarning NeedsAuthorization YES DisableStop NO UseUserMask NO Application NO Relocatable NO Required NO InstallOnly NO RequiresReboot NO InstallFat NO EOF # Create a .tar.gz file for the package directory # cd $PKG_DIR cd .. DIRNAME=`dirname $PKG_DIR` BASENAME=`basename $PKG_DIR` FILENAME=$BASENAME.tar.gz tar -cvzf $FILENAME $BASENAME # Move our temporary /usr/local out of the way # and the original one back # mv /usr/local $LOCAL_BACKUPDIR mv $LOCAL_TMPDIR /usr/local echo output package is in $DIRNAME/$FILENAME