Commit aa45d0c0 authored by Timothy Smith's avatar Timothy Smith
Browse files

Bug #37024: Wrong location of messagefiles

make_binary_distribution.sh got clobbered by the 5.0 version during a merge.
This caused a few packaging problems, including message files put in the wrong
place and some missing files.  Fix is just to revert back to the 5.1 version
from before the merge.

Problem introduced in
ChangeSet 1.2606.2.1 2008/05/13 15:56:07 kent@kent-amd64.(none)

This change was made in the 5.1.25 release clone in BK, but never made it to the main mysql-5.1 BK tree.  I am adding it to mysql-5.1 bzr.
parent a9954110
Loading
Loading
Loading
Loading
+239 −214
Original line number Diff line number Diff line
@@ -14,36 +14,61 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

##############################################################################
#
#  This is a script to create a TAR or ZIP binary distribution out of a
#  built source tree. The output file will be put at the top level of
#  the source tree, as "mysql-<vsn>....{tar.gz,zip}"
#
#  Note that the structure created by this script is slightly different from
#  what a normal "make install" would produce. No extra "mysql" sub directory
#  will be created, i.e. no "$prefix/include/mysql", "$prefix/lib/mysql" or
#  "$prefix/share/mysql".  This is because the build system explicitly calls
#  make with pkgdatadir=<datadir>, etc.
#
#  In GNU make/automake terms
#
#    "pkglibdir"     is set to the same as "libdir"
#    "pkgincludedir" is set to the same as "includedir"
#    "pkgdatadir"    is set to the same as "datadir"
#    "pkgplugindir"  is set to "$pkglibdir/plugin"
#    "pkgsuppdir"    is set to "@prefix@/support-files",
#                    normally the same as "datadir"
#
#  The temporary directory path given to "--tmp=<path>" has to be
#  absolute and with no spaces.
#
#  Note that for best result, the original "make" should be done with
#  the same arguments as used for "make install" below, especially the
#  'pkglibdir', as the RPATH should to be set correctly.
#
##############################################################################

##############################################################################
#
#  Read the command line arguments that control this script
#
##############################################################################

machine=@MACHINE_TYPE@
system=@SYSTEM_TYPE@
version=@VERSION@
SOURCE=`pwd`
CP="cp -p"
MV="mv"

STRIP=1
DEBUG=0
STRIP=1				# Option ignored
SILENT=0
MACHINE=""
PLATFORM=""
TMP=/tmp
SUFFIX=""
NDBCLUSTER=""
NDBCLUSTER=""			# Option ignored

for arg do
  case "$arg" in
    --debug)    DEBUG=1;;
    --tmp=*)    TMP=`echo "$arg" | sed -e "s;--tmp=;;"` ;;
    --suffix=*) SUFFIX=`echo "$arg" | sed -e "s;--suffix=;;"` ;;
    --no-strip) STRIP=0 ;;
    --machine=*) MACHINE=`echo "$arg" | sed -e "s;--machine=;;"` ;;
    --machine=*) machine=`echo "$arg" | sed -e "s;--machine=;;"` ;;
    --platform=*) PLATFORM=`echo "$arg" | sed -e "s;--platform=;;"` ;;
    --silent)   SILENT=1 ;;
    --with-ndbcluster) NDBCLUSTER=1 ;;
@@ -54,6 +79,12 @@ for arg do
  esac
done

# ----------------------------------------------------------------------
# Adjust "system" output from "uname" to be more human readable
# ----------------------------------------------------------------------

if [ x"$PLATFORM" = x"" ] ; then
  # FIXME move this to the build tools
  # Remove vendor from $system
  system=`echo $system | sed -e 's/[a-z]*-\(.*\)/\1/g'`

@@ -70,37 +101,30 @@ system=`echo $system | sed -e 's/linux-gnu/linux/g'`
  system=`echo $system | sed -e 's/solaris2.\([0-9]*\)/solaris\1/g'`
  system=`echo $system | sed -e 's/sco3.2v\(.*\)/openserver\1/g'`

if [ x"$MACHINE" != x"" ] ; then
  machine=$MACHINE
  PLATFORM="$system-$machine"
fi

if [ x"$PLATFORM" != x"" ] ; then
  platform="$PLATFORM"
else
  platform="$system-$machine"
fi
# Print the platform name for build logs
echo "PLATFORM NAME: $PLATFORM"

# FIXME This should really be integrated with automake and not duplicate the
# installation list.
case $PLATFORM in
  *netware*) BASE_SYSTEM="netware" ;;
esac

BASE=$TMP/my_dist$SUFFIX
# Change the distribution to a long descriptive name
NEW_NAME=mysql@MYSQL_SERVER_SUFFIX@-@VERSION@-$PLATFORM$SUFFIX

# ----------------------------------------------------------------------
# Define BASE, and remove the old BASE directory if any
# ----------------------------------------------------------------------
BASE=$TMP/my_dist$SUFFIX
if [ -d $BASE ] ; then
 rm -rf $BASE
fi

BS=""
BIN_FILES=""
BASE_SYSTEM="any"
MYSQL_SHARE=$BASE/share/mysql

case $system in
  *netware*)
    BASE_SYSTEM="netware"
    BS=".nlm"
    MYSQL_SHARE=$BASE/share
    ;;
esac
# ----------------------------------------------------------------------
# Find the TAR to use
# ----------------------------------------------------------------------

# This is needed to prefer GNU tar over platform tar because that can't
# always handle long filenames
@@ -127,24 +151,149 @@ which_1 ()
}

tar=`which_1 gnutar gtar`
if [ "$?" = "1" -o x"$tar" = x"" ] ; then
if [ $? -ne 0 -o x"$tar" = x"" ] ; then
  tar=tar
fi


##############################################################################
#
#  Handle the Unix/Linux packaging using "make install"
#
##############################################################################

if [ x"$BASE_SYSTEM" != x"netware" ] ; then

  # ----------------------------------------------------------------------
  # Terminate on any base level error
  # ----------------------------------------------------------------------
  set -e

  # ----------------------------------------------------------------------
  # Really ugly, one script, "mysql_install_db", needs prefix set to ".",
  # i.e. makes access relative the current directory. This matches
  # the documentation, so better not change this. And for another script,
  # "mysql.server", we make some relative, others not.
  # ----------------------------------------------------------------------

  cd scripts
  rm -f mysql_install_db
  @MAKE@ mysql_install_db \
    prefix=. \
    bindir=./bin \
    sbindir=./bin \
    scriptdir=./bin \
    libexecdir=./bin \
    pkgdatadir=./share \
    localstatedir=./data
  cd ..

  cd support-files
  rm -f mysql.server
  @MAKE@ mysql.server \
    bindir=./bin \
    sbindir=./bin \
    scriptdir=./bin \
    libexecdir=./bin \
    pkgdatadir=@pkgdatadir@
  cd ..

  # ----------------------------------------------------------------------
  # Do a install that we later are to pack. Use the same paths as in
  # the build for the relevant directories.
  # ----------------------------------------------------------------------
  @MAKE@ DESTDIR=$BASE install \
    pkglibdir=@pkglibdir@ \
    pkgincludedir=@pkgincludedir@ \
    pkgdatadir=@pkgdatadir@ \
    pkgplugindir=@pkgplugindir@ \
    pkgsuppdir=@pkgsuppdir@ \
    mandir=@mandir@ \
    infodir=@infodir@

  # ----------------------------------------------------------------------
  # Rename top directory, and set DEST to the new directory
  # ----------------------------------------------------------------------
  mv $BASE@prefix@ $BASE/$NEW_NAME
  DEST=$BASE/$NEW_NAME

  # ----------------------------------------------------------------------
  # If we compiled with gcc, copy libgcc.a to the dist as libmygcc.a
  # ----------------------------------------------------------------------
  if [ x"@GXX@" = x"yes" ] ; then
    gcclib=`@CC@ @CFLAGS@ --print-libgcc-file 2>/dev/null` || true
    if [ -z "$gcclib" ] ; then
      echo "Warning: Compiler doesn't tell libgcc.a!"
    elif [ -f "$gcclib" ] ; then
      $CP $gcclib $DEST/lib/libmygcc.a
    else
      echo "Warning: Compiler result '$gcclib' not found / no file!"
    fi
  fi

  # FIXME let this script be in "bin/", where it is in the RPMs?
  # http://dev.mysql.com/doc/refman/5.1/en/mysql-install-db-problems.html
  mkdir $DEST/scripts
  mv $DEST/bin/mysql_install_db $DEST/scripts/

  # Note, no legacy "safe_mysqld" link to "mysqld_safe" in 5.1

  # Copy readme and license files
  cp README Docs/INSTALL-BINARY  $DEST/
  if [ -f COPYING -a -f EXCEPTIONS-CLIENT ] ; then
    cp COPYING EXCEPTIONS-CLIENT $DEST/
  elif [ -f LICENSE.mysql ] ; then
    cp LICENSE.mysql $DEST/
  else
    echo "ERROR: no license files found"
    exit 1
  fi

  # FIXME should be handled by make file, and to other dir
  mkdir -p $DEST/bin $DEST/support-files
  cp scripts/mysqlaccess.conf $DEST/bin/
  cp support-files/magic      $DEST/support-files/

  # Create empty data directories, set permission (FIXME why?)
  mkdir       $DEST/data $DEST/data/mysql $DEST/data/test
  chmod o-rwx $DEST/data $DEST/data/mysql $DEST/data/test

  # ----------------------------------------------------------------------
  # Create the result tar file
  # ----------------------------------------------------------------------

  echo "Using $tar to create archive"
  OPT=cvf
  if [ x$SILENT = x1 ] ; then
    OPT=cf
  fi

  echo "Creating and compressing archive"
  rm -f $NEW_NAME.tar.gz
  (cd $BASE ; $tar $OPT -  $NEW_NAME) | gzip -9 > $NEW_NAME.tar.gz
  echo "$NEW_NAME.tar.gz created"

  echo "Removing temporary directory"
  rm -rf $BASE
  exit 0
fi


##############################################################################
#
#  Handle the Netware case, until integrated above
#
##############################################################################

BS=".nlm"
MYSQL_SHARE=$BASE/share

mkdir $BASE $BASE/bin $BASE/docs \
 $BASE/include $BASE/lib $BASE/support-files $BASE/share $BASE/scripts \
 $BASE/mysql-test $BASE/mysql-test/t  $BASE/mysql-test/r \
 $BASE/mysql-test/include $BASE/mysql-test/std_data $BASE/mysql-test/lib \
 $BASE/mysql-test/suite

if [ $BASE_SYSTEM != "netware" ] ; then
 mkdir $BASE/share/mysql $BASE/tests $BASE/sql-bench $BASE/man \
  $BASE/man/man1 $BASE/man/man8 $BASE/data $BASE/data/mysql $BASE/data/test

 chmod o-rwx $BASE/data $BASE/data/*
fi

# Copy files if they exists, warn for those that don't.
# Note that when listing files to copy, we might list the file name
# twice, once in the directory location where it is built, and a
@@ -176,12 +325,13 @@ copyfileto $BASE COPYING COPYING.LIB README Docs/INSTALL-BINARY \
BIN_FILES="extra/comp_err$BS extra/replace$BS extra/perror$BS \
  extra/resolveip$BS extra/my_print_defaults$BS \
  extra/resolve_stack_dump$BS extra/mysql_waitpid$BS \
  myisam/myisamchk$BS myisam/myisampack$BS myisam/myisamlog$BS \
  myisam/myisam_ftdump$BS \
  storage/myisam/myisamchk$BS storage/myisam/myisampack$BS \
  storage/myisam/myisamlog$BS storage/myisam/myisam_ftdump$BS \
  sql/mysqld$BS sql/mysqld-debug$BS \
  sql/mysql_tzinfo_to_sql$BS \
  server-tools/instance-manager/mysqlmanager$BS \
  client/mysql$BS client/mysqlshow$BS client/mysqladmin$BS \
  client/mysqlslap$BS \
  client/mysqldump$BS client/mysqlimport$BS \
  client/mysqltest$BS client/mysqlcheck$BS \
  client/mysqlbinlog$BS client/mysql_upgrade$BS \
@@ -191,42 +341,16 @@ BIN_FILES="extra/comp_err$BS extra/replace$BS extra/perror$BS \
  ";

# Platform-specific bin dir files:
if [ $BASE_SYSTEM = "netware" ] ; then
BIN_FILES="$BIN_FILES \
    netware/mysqld_safe$BS netware/mysql_install_db$BS \
    netware/init_db.sql netware/test_db.sql netware/mysql_explain_log$BS \
    netware/init_db.sql netware/test_db.sql \
    netware/mysqlhotcopy$BS netware/libmysql$BS netware/init_secure_db.sql \
    ";
# For all other platforms:
else
  BIN_FILES="$BIN_FILES \
    server-tools/instance-manager/.libs/mysqlmanager \
    client/mysqltestmanagerc \
    client/mysqltestmanager-pwgen tools/mysqltestmanager \
    client/.libs/mysql client/.libs/mysqlshow client/.libs/mysqladmin \
    client/.libs/mysqldump client/.libs/mysqlimport \
    client/.libs/mysqltest client/.libs/mysqlcheck \
    client/.libs/mysqlbinlog client/.libs/mysqltestmanagerc \
    client/.libs/mysqltestmanager-pwgen tools/.libs/mysqltestmanager \
    tests/.libs/mysql_client_test \
    libmysqld/examples/.libs/mysql_client_test_embedded \
    libmysqld/examples/.libs/mysqltest_embedded \
  ";
fi

copyfileto $BASE/bin $BIN_FILES

if [ x$STRIP = x1 ] ; then
  strip $BASE/bin/*
fi

# Copy not binary files
copyfileto $BASE/bin sql/mysqld.sym.gz

if [ $BASE_SYSTEM = "netware" ] ; then
$CP netware/*.pl $BASE/scripts
$CP scripts/mysqlhotcopy $BASE/scripts/mysqlhotcopy.pl
fi

copyfileto $BASE/lib \
  libmysql/.libs/libmysqlclient.a \
@@ -248,31 +372,17 @@ copyfileto $BASE/lib \
  zlib/.libs/libz.a

# convert the .a to .lib for NetWare
if [ $BASE_SYSTEM = "netware" ] ; then
for i in $BASE/lib/*.a
do
  libname=`basename $i .a`
  $MV $i $BASE/lib/$libname.lib
done
rm -f $BASE/lib/*.la
fi

copyfileto $BASE/include include/*

rm -f $BASE/include/Makefile* $BASE/include/*.in $BASE/include/config-win.h
if [ $BASE_SYSTEM != "netware" ] ; then
  rm -f $BASE/include/config-netware.h
fi
copyfileto $BASE/include config.h include/*

if [ $BASE_SYSTEM != "netware" ] ; then
  if [ -d tests ] ; then
    $CP tests/*.res tests/*.tst tests/*.pl $BASE/tests
  fi
  if [ -d man ] ; then
    $CP man/*.1 $BASE/man/man1
    $CP man/*.8 $BASE/man/man8
  fi
fi
rm -f $BASE/include/Makefile* $BASE/include/*.in $BASE/include/config-win.h

copyfileto $BASE/support-files support-files/*

@@ -291,43 +401,29 @@ copyfileto $BASE/mysql-test \
$CP mysql-test/lib/*.pl  $BASE/mysql-test/lib
$CP mysql-test/t/*.def $BASE/mysql-test/t
$CP mysql-test/include/*.inc $BASE/mysql-test/include
$CP mysql-test/include/*.sql $BASE/mysql-test/include
$CP mysql-test/include/*.test $BASE/mysql-test/include
$CP mysql-test/t/*.def $BASE/mysql-test/t
$CP mysql-test/std_data/*.dat mysql-test/std_data/*.frm \
    mysql-test/std_data/*.MYD mysql-test/std_data/*.MYI \
    mysql-test/std_data/*.pem mysql-test/std_data/Moscow_leap \
    mysql-test/std_data/Index.xml \
    mysql-test/std_data/des_key_file mysql-test/std_data/*.*001 \
    mysql-test/std_data/*.cnf mysql-test/std_data/*.MY* \
    $BASE/mysql-test/std_data
$CP mysql-test/t/*.test mysql-test/t/*.imtest \
    mysql-test/t/*.disabled mysql-test/t/*.opt \
    mysql-test/t/*.slave-mi mysql-test/t/*.sh mysql-test/t/*.sql $BASE/mysql-test/t
$CP mysql-test/r/*.result mysql-test/r/*.require \
    $BASE/mysql-test/r

# Copy the additional suites and data "as is", they are in flux
# Copy the additional suites "as is", they are in flux
$tar cf - mysql-test/suite | ( cd $BASE ; $tar xf - )
$tar cf - mysql-test/std_data | ( cd $BASE ; $tar xf - )
# Clean up if we did this from a bk tree
if [ -d mysql-test/SCCS ] ; then
  find $BASE/mysql-test -name SCCS -print | xargs rm -rf
fi

if [ $BASE_SYSTEM != "netware" ] ; then
  chmod a+x $BASE/bin/*
  copyfileto $BASE/bin scripts/*
  $BASE/bin/replace \@localstatedir\@ ./data \@bindir\@ ./bin \@scriptdir\@ \
      ./bin \@libexecdir\@ ./bin \@sbindir\@ ./bin \@prefix\@ . \@HOSTNAME\@ \
      @HOSTNAME@ \@pkgdatadir\@ ./share \
      < scripts/mysql_install_db.sh > $BASE/scripts/mysql_install_db
  $BASE/bin/replace \@prefix\@ /usr/local/mysql \@bindir\@ ./bin \
      \@sbindir\@ ./bin \@libexecdir\@ ./bin \
      \@MYSQLD_USER\@ @MYSQLD_USER@ \@localstatedir\@ /usr/local/mysql/data \
      \@HOSTNAME\@ @HOSTNAME@ \
      < support-files/mysql.server.sh > $BASE/support-files/mysql.server
  $BASE/bin/replace /my/gnu/bin/hostname /bin/hostname -- $BASE/bin/mysqld_safe
  mv $BASE/support-files/binary-configure $BASE/configure
  chmod a+x $BASE/bin/* $BASE/scripts/* $BASE/support-files/mysql-log-rotate \
      $BASE/support-files/*.server $BASE/configure
  $CP -r sql-bench/* $BASE/sql-bench
  rm -f $BASE/sql-bench/*.sh $BASE/sql-bench/Makefile* $BASE/lib/*.la
  rm -f $BASE/bin/*.sql
fi

rm -f $BASE/bin/Makefile* $BASE/bin/*.in $BASE/bin/*.sh \
    $BASE/bin/mysql_install_db $BASE/bin/make_binary_distribution \
    $BASE/bin/setsomevars $BASE/support-files/Makefile* \
@@ -336,14 +432,11 @@ rm -f $BASE/bin/Makefile* $BASE/bin/*.in $BASE/bin/*.sh \
#
# Copy system dependent files
#
if [ $BASE_SYSTEM = "netware" ] ; then
./scripts/fill_help_tables < ./Docs/manual.texi >> ./netware/init_db.sql
fi

#
# Remove system dependent files
#
if [ $BASE_SYSTEM = "netware" ] ; then
rm -f   $BASE/support-files/magic \
        $BASE/support-files/mysql.server \
        $BASE/support-files/mysql*.spec \
@@ -351,14 +444,7 @@ if [ $BASE_SYSTEM = "netware" ] ; then
        $BASE/support-files/binary-configure \
        $BASE/support-files/build-tags \
	$BASE/support-files/MySQL-shared-compat.spec \
        $BASE/support-files/ndb-config-2-node.ini \
        $BASE/INSTALL-BINARY
fi

# Make safe_mysqld a symlink to mysqld_safe for backwards portability
if [ $BASE_SYSTEM != "netware" ] ; then
  (cd $BASE/bin ; ln -s mysqld_safe safe_mysqld )
fi

# Clean up if we did this from a bk tree
if [ -d $BASE/sql-bench/SCCS ] ; then
@@ -366,78 +452,17 @@ if [ -d $BASE/sql-bench/SCCS ] ; then
  find $BASE/sql-bench -name SCCS -print | xargs rm -rf
fi

# NDB Cluster
if [ x$NDBCLUSTER = x1 ]; then
  ( cd ndb            ; @MAKE@ DESTDIR=$BASE/ndb-stage install )
  ( cd mysql-test/ndb ; @MAKE@ DESTDIR=$BASE/ndb-stage install )
  $CP $BASE/ndb-stage@bindir@/* $BASE/bin/.
  $CP $BASE/ndb-stage@libexecdir@/* $BASE/bin/.
  $CP $BASE/ndb-stage@pkglibdir@/* $BASE/lib/.
  $CP $BASE/ndb-stage@pkgdatadir@/* $BASE/share/mysql/.
  $CP -r $BASE/ndb-stage@pkgincludedir@/ndb $BASE/include
  $CP -r $BASE/ndb-stage@prefix@/mysql-test/ndb $BASE/mysql-test/. || exit 1
  rm -rf $BASE/ndb-stage
fi

# Change the distribution to a long descriptive name
NEW_NAME=mysql@MYSQL_SERVER_SUFFIX@-$version-$platform$SUFFIX

# Print the platform name for build logs
echo "PLATFORM NAME: $platform"

BASE2=$TMP/$NEW_NAME
rm -rf $BASE2
mv $BASE $BASE2
BASE=$BASE2
#
# If we are compiling with gcc, copy libgcc.a to the distribution as libmygcc.a
#

if [ x"@GXX@" = x"yes" ] ; then
  gcclib=`@CC@ @CFLAGS@ --print-libgcc-file 2>/dev/null` || true
  if [ -z "$gcclib" ] ; then
    echo "Warning: Compiler doesn't tell libgcc.a!"
  elif [ -f "$gcclib" ] ; then
    $CP $gcclib $BASE/lib/libmygcc.a
  else
    echo "Warning: Compiler result '$gcclib' not found / no file!"
  fi
fi

#if we are debugging, do not do tar/gz
if [ x$DEBUG = x1 ] ; then
 exit
fi

if [ $BASE_SYSTEM != "netware" ] ; then

  #
  # Create the result tar file
  #

  echo "Using $tar to create archive"

  OPT=cvf
  if [ x$SILENT = x1 ] ; then
    OPT=cf
  fi

  echo "Creating and compressing archive"
  rm -f $NEW_NAME.tar.gz
  (cd $TMP ; $tar $OPT -  $NEW_NAME) | gzip -9 > $NEW_NAME.tar.gz
  echo "$NEW_NAME.tar.gz created"

else

#
# Create a zip file for NetWare users
#

rm -f $NEW_NAME.zip
(cd $TMP; zip -r "$SOURCE/$NEW_NAME.zip" $NEW_NAME)
echo "$NEW_NAME.zip created"

fi

echo "Removing temporary directory"
rm -rf $BASE