home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / xampp-win32-1.6.7-installer.exe / mysql / scripts / make_binary_distribution < prev    next >
Text File  |  2008-04-17  |  13KB  |  448 lines

  1. #!/bin/sh
  2. # Copyright (C) 2000-2006 MySQL AB
  3. # This program is free software; you can redistribute it and/or modify
  4. # it under the terms of the GNU General Public License as published by
  5. # the Free Software Foundation; version 2 of the License.
  6. # This program is distributed in the hope that it will be useful,
  7. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9. # GNU General Public License for more details.
  10. # You should have received a copy of the GNU General Public License
  11. # along with this program; if not, write to the Free Software
  12. # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  13.  
  14. # This is a script to create a TAR or ZIP binary distribution out of a
  15. # built source tree. The output file will be put at the top level of
  16. # the source tree, as "mysql-<vsn>....{tar.gz,zip}"
  17. #
  18. # The temporary directory path given to "--tmp=<path>" has to be
  19. # absolute and with no spaces.
  20.  
  21. machine=@MACHINE_TYPE@
  22. system=@SYSTEM_TYPE@
  23. version=@VERSION@
  24. SOURCE=`pwd`
  25. CP="cp -p"
  26. MV="mv"
  27.  
  28. STRIP=1
  29. DEBUG=0
  30. SILENT=0
  31. MACHINE=""
  32. PLATFORM=""
  33. TMP=/tmp
  34. SUFFIX=""
  35. NDBCLUSTER=""
  36.  
  37. for arg do
  38.   case "$arg" in
  39.     --debug)    DEBUG=1;;
  40.     --tmp=*)    TMP=`echo "$arg" | sed -e "s;--tmp=;;"` ;;
  41.     --suffix=*) SUFFIX=`echo "$arg" | sed -e "s;--suffix=;;"` ;;
  42.     --no-strip) STRIP=0 ;;
  43.     --machine=*) MACHINE=`echo "$arg" | sed -e "s;--machine=;;"` ;;
  44.     --platform=*) PLATFORM=`echo "$arg" | sed -e "s;--platform=;;"` ;;
  45.     --silent)   SILENT=1 ;;
  46.     --with-ndbcluster) NDBCLUSTER=1 ;;
  47.     *)
  48.       echo "Unknown argument '$arg'"
  49.       exit 1
  50.       ;;
  51.   esac
  52. done
  53.  
  54. # Remove vendor from $system
  55. system=`echo $system | sed -e 's/[a-z]*-\(.*\)/\1/g'`
  56.  
  57. # Map OS names to "our" OS names (eg. darwin6.8 -> osx10.2)
  58. system=`echo $system | sed -e 's/darwin6.*/osx10.2/g'`
  59. system=`echo $system | sed -e 's/darwin7.*/osx10.3/g'`
  60. system=`echo $system | sed -e 's/darwin8.*/osx10.4/g'`
  61. system=`echo $system | sed -e 's/\(aix4.3\).*/\1/g'`
  62. system=`echo $system | sed -e 's/\(aix5.1\).*/\1/g'`
  63. system=`echo $system | sed -e 's/\(aix5.2\).*/\1/g'`
  64. system=`echo $system | sed -e 's/\(aix5.3\).*/\1/g'`
  65. system=`echo $system | sed -e 's/osf5.1b/tru64/g'`
  66. system=`echo $system | sed -e 's/linux-gnu/linux/g'`
  67. system=`echo $system | sed -e 's/solaris2.\([0-9]*\)/solaris\1/g'`
  68. system=`echo $system | sed -e 's/sco3.2v\(.*\)/openserver\1/g'`
  69.  
  70. if [ x"$MACHINE" != x"" ] ; then
  71.   machine=$MACHINE
  72. fi
  73.  
  74. if [ x"$PLATFORM" != x"" ] ; then
  75.   platform="$PLATFORM"
  76. else
  77.   platform="$system-$machine"
  78. fi
  79.  
  80. # FIXME This should really be integrated with automake and not duplicate the
  81. # installation list.
  82.  
  83. BASE=$TMP/my_dist$SUFFIX
  84.  
  85. if [ -d $BASE ] ; then
  86.  rm -rf $BASE
  87. fi
  88.  
  89. BS=""
  90. BIN_FILES=""
  91. BASE_SYSTEM="any"
  92. MYSQL_SHARE=$BASE/share/mysql
  93.  
  94. case $system in
  95.   *netware*)
  96.     BASE_SYSTEM="netware"
  97.     BS=".nlm"
  98.     MYSQL_SHARE=$BASE/share
  99.     ;;
  100. esac
  101.  
  102. # This is needed to prefer GNU tar over platform tar because that can't
  103. # always handle long filenames
  104.  
  105. PATH_DIRS=`echo $PATH | \
  106.     sed -e 's/^:/. /' -e 's/:$/ ./' -e 's/::/ . /g' -e 's/:/ /g' `
  107.  
  108. which_1 ()
  109. {
  110.   for cmd
  111.   do
  112.     for d in $PATH_DIRS
  113.     do
  114.       for file in $d/$cmd
  115.       do
  116.     if [ -x $file -a ! -d $file ] ; then
  117.       echo $file
  118.       exit 0
  119.     fi
  120.       done
  121.     done
  122.   done
  123.   exit 1
  124. }
  125.  
  126. tar=`which_1 gnutar gtar`
  127. if [ "$?" = "1" -o x"$tar" = x"" ] ; then
  128.   tar=tar
  129. fi
  130.  
  131.  
  132. mkdir $BASE $BASE/bin $BASE/docs \
  133.  $BASE/include $BASE/lib $BASE/support-files $BASE/share $BASE/scripts \
  134.  $BASE/mysql-test $BASE/mysql-test/t  $BASE/mysql-test/r \
  135.  $BASE/mysql-test/include $BASE/mysql-test/std_data $BASE/mysql-test/lib \
  136.  $BASE/mysql-test/suite
  137.  
  138. if [ $BASE_SYSTEM != "netware" ] ; then
  139.  mkdir $BASE/share/mysql $BASE/tests $BASE/sql-bench $BASE/man \
  140.   $BASE/man/man1 $BASE/man/man8 $BASE/data $BASE/data/mysql $BASE/data/test
  141.  
  142.  chmod o-rwx $BASE/data $BASE/data/*
  143. fi
  144.  
  145. # Copy files if they exists, warn for those that don't.
  146. # Note that when listing files to copy, we might list the file name
  147. # twice, once in the directory location where it is built, and a
  148. # second time in the ".libs" location. In the case the first one
  149. # is a wrapper script, the second one will overwrite it with the
  150. # binary file.
  151. copyfileto()
  152. {
  153.   destdir=$1
  154.   shift
  155.   for i
  156.   do
  157.     if [ -f $i ] ; then
  158.       $CP $i $destdir
  159.     elif [ -d $i ] ; then
  160.       echo "Warning: Will not copy directory \"$i\""
  161.     else
  162.       echo "Warning: Listed file not found   \"$i\""
  163.     fi
  164.   done
  165. }
  166.  
  167. copyfileto $BASE/docs ChangeLog Docs/mysql.info
  168.  
  169. copyfileto $BASE COPYING COPYING.LIB README Docs/INSTALL-BINARY \
  170.          EXCEPTIONS-CLIENT LICENSE.mysql
  171.  
  172. # Non platform-specific bin dir files:
  173. BIN_FILES="extra/comp_err$BS extra/replace$BS extra/perror$BS \
  174.   extra/resolveip$BS extra/my_print_defaults$BS \
  175.   extra/resolve_stack_dump$BS extra/mysql_waitpid$BS \
  176.   myisam/myisamchk$BS myisam/myisampack$BS myisam/myisamlog$BS \
  177.   myisam/myisam_ftdump$BS \
  178.   sql/mysqld$BS sql/mysqld-debug$BS \
  179.   sql/mysql_tzinfo_to_sql$BS \
  180.   server-tools/instance-manager/mysqlmanager$BS \
  181.   client/mysql$BS client/mysqlshow$BS client/mysqladmin$BS \
  182.   client/mysqldump$BS client/mysqlimport$BS \
  183.   client/mysqltest$BS client/mysqlcheck$BS \
  184.   client/mysqlbinlog$BS client/mysql_upgrade$BS \
  185.   tests/mysql_client_test$BS \
  186.   libmysqld/examples/mysql_client_test_embedded$BS \
  187.   libmysqld/examples/mysqltest_embedded$BS \
  188.   ";
  189.  
  190. # Platform-specific bin dir files:
  191. if [ $BASE_SYSTEM = "netware" ] ; then
  192.   BIN_FILES="$BIN_FILES \
  193.     netware/mysqld_safe$BS netware/mysql_install_db$BS \
  194.     netware/init_db.sql netware/test_db.sql netware/mysql_explain_log$BS \
  195.     netware/mysqlhotcopy$BS netware/libmysql$BS netware/init_secure_db.sql \
  196.     ";
  197. # For all other platforms:
  198. else
  199.   BIN_FILES="$BIN_FILES \
  200.     server-tools/instance-manager/.libs/mysqlmanager \
  201.     client/mysqltestmanagerc \
  202.     client/mysqltestmanager-pwgen tools/mysqltestmanager \
  203.     client/.libs/mysql client/.libs/mysqlshow client/.libs/mysqladmin \
  204.     client/.libs/mysqldump client/.libs/mysqlimport \
  205.     client/.libs/mysqltest client/.libs/mysqlcheck \
  206.     client/.libs/mysqlbinlog client/.libs/mysqltestmanagerc \
  207.     client/.libs/mysqltestmanager-pwgen tools/.libs/mysqltestmanager \
  208.     tests/.libs/mysql_client_test \
  209.     libmysqld/examples/.libs/mysql_client_test_embedded \
  210.     libmysqld/examples/.libs/mysqltest_embedded \
  211.   ";
  212. fi
  213.  
  214. copyfileto $BASE/bin $BIN_FILES
  215.  
  216. if [ x$STRIP = x1 ] ; then
  217.   strip $BASE/bin/*
  218. fi
  219.  
  220. # Copy not binary files
  221. copyfileto $BASE/bin sql/mysqld.sym.gz
  222.  
  223. if [ $BASE_SYSTEM = "netware" ] ; then
  224.     $CP netware/*.pl $BASE/scripts
  225.     $CP scripts/mysqlhotcopy $BASE/scripts/mysqlhotcopy.pl
  226. fi
  227.  
  228. copyfileto $BASE/lib \
  229.   libmysql/.libs/libmysqlclient.a \
  230.   libmysql/.libs/libmysqlclient.so* \
  231.   libmysql/.libs/libmysqlclient.sl* \
  232.   libmysql/.libs/libmysqlclient*.dylib \
  233.   libmysql/libmysqlclient.* \
  234.   libmysql_r/.libs/libmysqlclient_r.a \
  235.   libmysql_r/.libs/libmysqlclient_r.so* \
  236.   libmysql_r/.libs/libmysqlclient_r.sl* \
  237.   libmysql_r/.libs/libmysqlclient_r*.dylib \
  238.   libmysql_r/libmysqlclient_r.* \
  239.   libmysqld/.libs/libmysqld.a \
  240.   libmysqld/.libs/libmysqld.so* \
  241.   libmysqld/.libs/libmysqld.sl* \
  242.   libmysqld/.libs/libmysqld*.dylib \
  243.   mysys/libmysys.a strings/libmystrings.a dbug/libdbug.a \
  244.   libmysqld/libmysqld.a netware/libmysql.imp \
  245.   zlib/.libs/libz.a
  246.  
  247. # convert the .a to .lib for NetWare
  248. if [ $BASE_SYSTEM = "netware" ] ; then
  249.     for i in $BASE/lib/*.a
  250.     do
  251.       libname=`basename $i .a`
  252.       $MV $i $BASE/lib/$libname.lib
  253.     done
  254.     rm -f $BASE/lib/*.la
  255. fi
  256.  
  257. copyfileto $BASE/include include/*
  258.  
  259. rm -f $BASE/include/Makefile* $BASE/include/*.in $BASE/include/config-win.h
  260. if [ $BASE_SYSTEM != "netware" ] ; then
  261.   rm -f $BASE/include/config-netware.h
  262. fi
  263.  
  264. if [ $BASE_SYSTEM != "netware" ] ; then
  265.   if [ -d tests ] ; then
  266.     $CP tests/*.res tests/*.tst tests/*.pl $BASE/tests
  267.   fi
  268.   if [ -d man ] ; then
  269.     $CP man/*.1 $BASE/man/man1
  270.     $CP man/*.8 $BASE/man/man8
  271.   fi
  272. fi
  273.  
  274. copyfileto $BASE/support-files support-files/*
  275.  
  276. copyfileto $BASE/share scripts/*.sql
  277.  
  278. $CP -r sql/share/* $MYSQL_SHARE
  279. rm -f $MYSQL_SHARE/Makefile* $MYSQL_SHARE/*/*.OLD
  280.  
  281. copyfileto $BASE/mysql-test \
  282.          mysql-test/mysql-test-run mysql-test/install_test_db \
  283.          mysql-test/mysql-test-run.pl mysql-test/README \
  284.          mysql-test/mysql-stress-test.pl \
  285.          mysql-test/valgrind.supp \
  286.          netware/mysql_test_run.nlm netware/install_test_db.ncf
  287.  
  288. $CP mysql-test/lib/*.pl  $BASE/mysql-test/lib
  289. $CP mysql-test/t/*.def $BASE/mysql-test/t
  290. $CP mysql-test/include/*.inc $BASE/mysql-test/include
  291. $CP mysql-test/include/*.test $BASE/mysql-test/include
  292. $CP mysql-test/t/*.def $BASE/mysql-test/t
  293. $CP mysql-test/std_data/*.dat mysql-test/std_data/*.frm \
  294.     mysql-test/std_data/*.MYD mysql-test/std_data/*.MYI \
  295.     mysql-test/std_data/*.pem mysql-test/std_data/Moscow_leap \
  296.     mysql-test/std_data/Index.xml \
  297.     mysql-test/std_data/des_key_file mysql-test/std_data/*.*001 \
  298.     mysql-test/std_data/*.cnf mysql-test/std_data/*.MY* \
  299.     $BASE/mysql-test/std_data
  300. $CP mysql-test/t/*.test mysql-test/t/*.imtest \
  301.     mysql-test/t/*.disabled mysql-test/t/*.opt \
  302.     mysql-test/t/*.slave-mi mysql-test/t/*.sh mysql-test/t/*.sql $BASE/mysql-test/t
  303. $CP mysql-test/r/*.result mysql-test/r/*.require \
  304.     $BASE/mysql-test/r
  305.  
  306. # Copy the additional suites "as is", they are in flux
  307. $tar cf - mysql-test/suite | ( cd $BASE ; $tar xf - )
  308. # Clean up if we did this from a bk tree
  309. if [ -d mysql-test/SCCS ] ; then
  310.   find $BASE/mysql-test -name SCCS -print | xargs rm -rf
  311. fi
  312.  
  313. if [ $BASE_SYSTEM != "netware" ] ; then
  314.   chmod a+x $BASE/bin/*
  315.   copyfileto $BASE/bin scripts/*
  316.   $BASE/bin/replace \@localstatedir\@ ./data \@bindir\@ ./bin \@scriptdir\@ \
  317.       ./bin \@libexecdir\@ ./bin \@sbindir\@ ./bin \@prefix\@ . \@HOSTNAME\@ \
  318.       @HOSTNAME@ \@pkgdatadir\@ ./share \
  319.       < scripts/mysql_install_db.sh > $BASE/scripts/mysql_install_db
  320.   $BASE/bin/replace \@prefix\@ /usr/local/mysql \@bindir\@ ./bin \
  321.       \@sbindir\@ ./bin \@libexecdir\@ ./bin \
  322.       \@MYSQLD_USER\@ @MYSQLD_USER@ \@localstatedir\@ /usr/local/mysql/data \
  323.       \@HOSTNAME\@ @HOSTNAME@ \
  324.       < support-files/mysql.server.sh > $BASE/support-files/mysql.server
  325.   $BASE/bin/replace /my/gnu/bin/hostname /bin/hostname -- $BASE/bin/mysqld_safe
  326.   mv $BASE/support-files/binary-configure $BASE/configure
  327.   chmod a+x $BASE/bin/* $BASE/scripts/* $BASE/support-files/mysql-* \
  328.       $BASE/support-files/mysql.server $BASE/configure
  329.   $CP -r sql-bench/* $BASE/sql-bench
  330.   rm -f $BASE/sql-bench/*.sh $BASE/sql-bench/Makefile* $BASE/lib/*.la
  331.   rm -f $BASE/bin/*.sql
  332. fi
  333.  
  334. rm -f $BASE/bin/Makefile* $BASE/bin/*.in $BASE/bin/*.sh \
  335.     $BASE/bin/mysql_install_db $BASE/bin/make_binary_distribution \
  336.     $BASE/bin/setsomevars $BASE/support-files/Makefile* \
  337.     $BASE/support-files/*.sh
  338.  
  339. #
  340. # Copy system dependent files
  341. #
  342. if [ $BASE_SYSTEM = "netware" ] ; then
  343.   ./scripts/fill_help_tables < ./Docs/manual.texi >> ./netware/init_db.sql
  344. fi
  345.  
  346. #
  347. # Remove system dependent files
  348. #
  349. if [ $BASE_SYSTEM = "netware" ] ; then
  350.   rm -f $BASE/support-files/magic \
  351.         $BASE/support-files/mysql.server \
  352.         $BASE/support-files/mysql*.spec \
  353.         $BASE/support-files/mysql-log-rotate \
  354.         $BASE/support-files/binary-configure \
  355.         $BASE/support-files/build-tags \
  356.     $BASE/support-files/MySQL-shared-compat.spec \
  357.         $BASE/support-files/ndb-config-2-node.ini \
  358.         $BASE/INSTALL-BINARY
  359. fi
  360.  
  361. # Make safe_mysqld a symlink to mysqld_safe for backwards portability
  362. if [ $BASE_SYSTEM != "netware" ] ; then
  363.   (cd $BASE/bin ; ln -s mysqld_safe safe_mysqld )
  364. fi
  365.  
  366. # Clean up if we did this from a bk tree
  367. if [ -d $BASE/sql-bench/SCCS ] ; then
  368.   find $BASE/share -name SCCS -print | xargs rm -rf
  369.   find $BASE/sql-bench -name SCCS -print | xargs rm -rf
  370. fi
  371.  
  372. # NDB Cluster
  373. if [ x$NDBCLUSTER = x1 ]; then
  374.   ( cd ndb            ; @MAKE@ DESTDIR=$BASE/ndb-stage install )
  375.   ( cd mysql-test/ndb ; @MAKE@ DESTDIR=$BASE/ndb-stage install )
  376.   $CP $BASE/ndb-stage@bindir@/* $BASE/bin/.
  377.   $CP $BASE/ndb-stage@libexecdir@/* $BASE/bin/.
  378.   $CP $BASE/ndb-stage@pkglibdir@/* $BASE/lib/.
  379.   $CP $BASE/ndb-stage@pkgdatadir@/* $BASE/share/mysql/.
  380.   $CP -r $BASE/ndb-stage@pkgincludedir@/ndb $BASE/include
  381.   $CP -r $BASE/ndb-stage@prefix@/mysql-test/ndb $BASE/mysql-test/. || exit 1
  382.   rm -rf $BASE/ndb-stage
  383. fi
  384.  
  385. # Change the distribution to a long descriptive name
  386. NEW_NAME=mysql@MYSQL_SERVER_SUFFIX@-$version-$platform$SUFFIX
  387.  
  388. # Print the platform name for build logs
  389. echo "PLATFORM NAME: $platform"
  390.  
  391. BASE2=$TMP/$NEW_NAME
  392. rm -rf $BASE2
  393. mv $BASE $BASE2
  394. BASE=$BASE2
  395. #
  396. # If we are compiling with gcc, copy libgcc.a to the distribution as libmygcc.a
  397. #
  398.  
  399. if [ x"@GXX@" = x"yes" ] ; then
  400.   gcclib=`@CC@ @CFLAGS@ --print-libgcc-file`
  401.   if [ $? -ne 0 ] ; then
  402.     echo "Warning: Couldn't find libgcc.a!"
  403.   else
  404.     $CP $gcclib $BASE/lib/libmygcc.a
  405.   fi
  406. fi
  407.  
  408. #if we are debugging, do not do tar/gz
  409. if [ x$DEBUG = x1 ] ; then
  410.  exit
  411. fi
  412.  
  413. if [ $BASE_SYSTEM != "netware" ] ; then
  414.  
  415.   #
  416.   # Create the result tar file
  417.   #
  418.  
  419.   echo "Using $tar to create archive"
  420.  
  421.   OPT=cvf
  422.   if [ x$SILENT = x1 ] ; then
  423.     OPT=cf
  424.   fi
  425.  
  426.   echo "Creating and compressing archive"
  427.   rm -f $NEW_NAME.tar.gz
  428.   (cd $TMP ; $tar $OPT -  $NEW_NAME) | gzip -9 > $NEW_NAME.tar.gz
  429.   echo "$NEW_NAME.tar.gz created"
  430.  
  431. else
  432.  
  433.   #
  434.   # Create a zip file for NetWare users
  435.   #
  436.  
  437.   rm -f $NEW_NAME.zip
  438.   (cd $TMP; zip -r "$SOURCE/$NEW_NAME.zip" $NEW_NAME)
  439.   echo "$NEW_NAME.zip created"
  440.  
  441. fi
  442.  
  443. echo "Removing temporary directory"
  444. rm -rf $BASE
  445.