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_win_bin_dist < prev    next >
Text File  |  2008-04-17  |  14KB  |  391 lines

  1. #!/bin/sh
  2. # Copyright (C) 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. # Exit if failing to copy, we want exact specifications, not
  15. # just "what happen to be built".
  16. set -e
  17.  
  18. # ----------------------------------------------------------------------
  19. # Read first argument that is the base name of the resulting TAR file.
  20. # See usage() function below for a description on the arguments.
  21. #
  22. # NOTE: We will read the rest of the command line later on.
  23. # NOTE: Pattern matching with "{..,..}" can't be used, not portable.
  24. # ----------------------------------------------------------------------
  25.  
  26. # FIXME FIXME "debug", own build or handled here?
  27. # FIXME FIXME add way to copy from other builds executables
  28.  
  29. usage()
  30. {
  31.   echo <<EOF
  32. Usage: make_win_bin_dist [ options ] package-base-name [ copy-defs... ]
  33.  
  34. This is a script to run from the top of a source tree built on Windows.
  35. The "package-base-name" argument should be something like
  36.  
  37.   mysql-noinstall-5.0.25-win32  (or winx64)
  38.  
  39. and will become the name of the directory of the unpacked ZIP (stripping
  40. away the "noinstall" part of the ZIP file name if any) and the base
  41. for the resulting package name.
  42.  
  43. Options are
  44.  
  45.   --embedded       Pack the embedded server and give error if not built.
  46.                    The default is to pack it if it is built.
  47.  
  48.   --no-embedded    Don't pack the embedded server even if built
  49.  
  50.   --debug          Pack the debug binaries and give error if not built.
  51.                    The default is to pack them if they are built.
  52.  
  53.   --no-debug       Don't pack the debug binaries even if built
  54.  
  55.   --only-debug     The target for this build was "Debug", and we just
  56.                    want to replace the normal binaries with debug
  57.                    versions, i.e. no separate "debug" directories.
  58.  
  59.   --exe-suffix=SUF Add a suffix to the filename part of the "mysqld" binary.
  60.  
  61. As you might want to include files of directories from other builds
  62. (like a "mysqld-max.exe" server), you can instruct this script to copy
  63. them in for you. This is the "copy-def" arguments, and they are of the
  64. form
  65.  
  66.   relative-dest-name=source-name .....
  67.  
  68. i.e. can be something like
  69.  
  70.   bin/mysqld-max.exe=../my-max-build/sql/release/mysqld.exe
  71.  
  72. If you specify a directory the whole directory will be copied.
  73.  
  74. EOF
  75.   exit 1
  76. }
  77.  
  78. # ----------------------------------------------------------------------
  79. # We need to be at the top of a source tree, check that we are
  80. # ----------------------------------------------------------------------
  81.  
  82. if [ ! -d "sql" ] ; then
  83.   echo "You need to run this script from inside the source tree"
  84.   usage
  85. fi
  86.  
  87. # ----------------------------------------------------------------------
  88. # Actual argument processing, first part
  89. # ----------------------------------------------------------------------
  90.  
  91. NOINST_NAME=""
  92. TARGET="release"
  93. PACK_EMBEDDED=""        # Could be "no", "yes" or empty
  94. PACK_DEBUG=""            # Could be "no", "yes" or empty
  95. EXE_SUFFIX=""
  96.  
  97. for arg do
  98.   shift
  99.   case "$arg" in
  100.     --embedded)       PACK_EMBEDDED="yes" ;;
  101.     --no-embedded)    PACK_EMBEDDED="no" ;;
  102.     --debug)          PACK_DEBUG="yes" ;;
  103.     --no-debug)       PACK_DEBUG="no" ;;
  104.     --only-debug)     TARGET="debug" ; PACK_DEBUG="no" ;;
  105.     --exe-suffix=*)   EXE_SUFFIX=`echo "$arg" | sed -e "s,--exe-suffix=,,"` ;;
  106.     -*)
  107.       echo "Unknown argument '$arg'"
  108.       usage
  109.       ;;
  110.     *)
  111.       NOINST_NAME="$arg"
  112.       break
  113.   esac
  114. done
  115.  
  116. if [ x"$NOINST_NAME" = x"" ] ; then
  117.   echo "No base package name given"
  118.   usage
  119. fi
  120. DESTDIR=`echo $NOINST_NAME | sed 's/-noinstall-/-/'`
  121.  
  122. if [ -e $DESTDIR ] ; then
  123.   echo "Please remove the old $DESTDIR before running this script"
  124.   usage
  125. fi
  126.  
  127. trap 'echo "Clearning up and exiting..." ; rm -fr $DESTDIR; exit 1' ERR
  128.  
  129. # ----------------------------------------------------------------------
  130. # Adjust target name if needed, release with debug info has another name
  131. # ----------------------------------------------------------------------
  132.  
  133. if [ x"$TARGET" = x"release" -a -f "client/relwithdebinfo/mysql.exe" ]
  134. then
  135.   TARGET="relwithdebinfo"
  136. fi
  137.  
  138. # ----------------------------------------------------------------------
  139. # Copy executables, and client DLL
  140. # ----------------------------------------------------------------------
  141.  
  142. mkdir $DESTDIR
  143. mkdir $DESTDIR/bin
  144. cp client/$TARGET/*.exe                                  $DESTDIR/bin/
  145. cp extra/$TARGET/*.exe                                   $DESTDIR/bin/
  146. cp myisam/$TARGET/*.exe                                  $DESTDIR/bin/
  147. cp server-tools/instance-manager/$TARGET/*.{exe,map}     $DESTDIR/bin/
  148. if [ x"$TARGET" != x"release" ] ; then
  149.   cp server-tools/instance-manager/$TARGET/*.pdb         $DESTDIR/bin/
  150. fi
  151. cp tests/$TARGET/*.exe                                   $DESTDIR/bin/
  152. cp libmysql/$TARGET/*.exe                                $DESTDIR/bin/
  153. cp libmysql/$TARGET/libmysql.dll                         $DESTDIR/bin/
  154.  
  155. # FIXME really needed?!
  156. mv $DESTDIR/bin/comp_err.exe             $DESTDIR/bin/comp-err.exe
  157.  
  158. if [ -f "sql/$TARGET/mysqld-nt.exe" ] ; then
  159.   BASENAME="mysqld-nt"     # Old style non CMake build 
  160. else
  161.   BASENAME="mysqld"        # New style CMake build
  162. fi
  163.  
  164. # Depending on Visual Studio target, the optimized server has symbols
  165. cp sql/$TARGET/$BASENAME.exe   $DESTDIR/bin/$BASENAME$EXE_SUFFIX.exe
  166. cp sql/$TARGET/$BASENAME.map   $DESTDIR/bin/$BASENAME$EXE_SUFFIX.map
  167. if [ x"$TARGET" != x"release" ] ; then
  168.   cp sql/$TARGET/$BASENAME.pdb   $DESTDIR/bin/$BASENAME$EXE_SUFFIX.pdb
  169. fi
  170.  
  171. if [ -f "sql/debug/mysqld-debug.exe" ] ; then
  172.   BASENAME="mysqld-debug"  # Old style non CMake build 
  173. else
  174.   BASENAME="mysqld"        # New style CMake build
  175. fi
  176.  
  177. if [ x"$PACK_DEBUG" = x"" -a -f "sql/debug/$BASENAME.exe" -o \
  178.      x"$PACK_DEBUG" = x"yes" ] ; then
  179.   cp sql/debug/$BASENAME.exe   $DESTDIR/bin/mysqld-debug.exe
  180.   cp sql/debug/$BASENAME.pdb   $DESTDIR/bin/mysqld-debug.pdb
  181.   cp sql/debug/$BASENAME.map   $DESTDIR/bin/mysqld-debug.map
  182. fi
  183.  
  184. # ----------------------------------------------------------------------
  185. # Copy data directory, readme files etc
  186. # ----------------------------------------------------------------------
  187.  
  188. if [ -d win/data ] ; then
  189.   cp -pR win/data $DESTDIR/
  190. fi
  191.  
  192. # FIXME maybe a flag to define "release build", or do the
  193. # check from the calling script that all these are there,
  194. # and with the correct content.
  195.  
  196. mkdir $DESTDIR/Docs
  197. cp Docs/INSTALL-BINARY    $DESTDIR/Docs/
  198. cp Docs/manual.chm        $DESTDIR/Docs/ || /bin/true
  199. cp ChangeLog              $DESTDIR/Docs/ || /bin/true
  200. cp support-files/my-*.ini $DESTDIR/
  201.  
  202. if [ -f COPYING ] ; then
  203.   cp COPYING EXCEPTIONS-CLIENT $DESTDIR/
  204.   cp COPYING                   $DESTDIR/Docs/
  205. fi
  206.  
  207. # ----------------------------------------------------------------------
  208. # These will be filled in when we enable embedded. Note that if no
  209. # argument is given, it is copied if exists, else a check is done.
  210. # ----------------------------------------------------------------------
  211.  
  212. copy_embedded()
  213. {
  214.   mkdir -p $DESTDIR/Embedded/DLL/release \
  215.            $DESTDIR/Embedded/static/release \
  216.            $DESTDIR/include
  217.   cp libmysqld/libmysqld.def           $DESTDIR/include/
  218.   cp libmysqld/$TARGET/mysqlserver.lib $DESTDIR/Embedded/static/release/
  219.   cp libmysqld/$TARGET/mysqlserver.pdb $DESTDIR/Embedded/static/release/
  220.   cp libmysqld/$TARGET/libmysqld.dll   $DESTDIR/Embedded/DLL/release/
  221.   cp libmysqld/$TARGET/libmysqld.exp   $DESTDIR/Embedded/DLL/release/
  222.   cp libmysqld/$TARGET/libmysqld.lib   $DESTDIR/Embedded/DLL/release/
  223.   cp libmysqld/$TARGET/libmysqld.pdb   $DESTDIR/Embedded/DLL/release/
  224.  
  225.   if [ x"$PACK_DEBUG" = x"" -a -f "libmysqld/debug/libmysqld.lib" -o \
  226.        x"$PACK_DEBUG" = x"yes" ] ; then
  227.     mkdir -p $DESTDIR/Embedded/DLL/debug \
  228.              $DESTDIR/Embedded/static/debug
  229.     cp libmysqld/debug/mysqlserver.lib   $DESTDIR/Embedded/static/debug/
  230.     cp libmysqld/debug/mysqlserver.pdb   $DESTDIR/Embedded/static/debug/
  231.     cp libmysqld/debug/libmysqld.dll     $DESTDIR/Embedded/DLL/debug/
  232.     cp libmysqld/debug/libmysqld.exp     $DESTDIR/Embedded/DLL/debug/
  233.     cp libmysqld/debug/libmysqld.lib     $DESTDIR/Embedded/DLL/debug/
  234.     cp libmysqld/debug/libmysqld.pdb     $DESTDIR/Embedded/DLL/debug/
  235.   fi
  236. }
  237.  
  238. if [ x"$PACK_EMBEDDED" = x"" -a \
  239.      -f "libmysqld/$TARGET/mysqlserver.lib" -a \
  240.      -f "libmysqld/$TARGET/libmysqld.lib" -o \
  241.      x"$PACK_EMBEDDED" = x"yes" ] ; then
  242.   copy_embedded
  243. fi
  244.  
  245. # ----------------------------------------------------------------------
  246. # Note: Make sure to sync with include/Makefile.am and WiX installer
  247. # XML specifications
  248. # ----------------------------------------------------------------------
  249.  
  250. mkdir -p $DESTDIR/include
  251. cp include/mysql.h \
  252.    include/mysql_com.h \
  253.    include/mysql_time.h \
  254.    include/my_list.h \
  255.    include/my_alloc.h \
  256.    include/typelib.h \
  257.    include/my_dbug.h \
  258.    include/m_string.h \
  259.    include/my_sys.h \
  260.    include/my_xml.h \
  261.    include/mysql_embed.h \
  262.    include/my_pthread.h \
  263.    include/my_no_pthread.h \
  264.    include/raid.h \
  265.    include/decimal.h \
  266.    include/errmsg.h \
  267.    include/my_global.h \
  268.    include/my_net.h \
  269.    include/my_getopt.h \
  270.    include/sslopt-longopts.h \
  271.    include/my_dir.h \
  272.    include/sslopt-vars.h \
  273.    include/sslopt-case.h \
  274.    include/sql_common.h \
  275.    include/keycache.h \
  276.    include/m_ctype.h \
  277.    include/my_attribute.h \
  278.    include/mysqld_error.h \
  279.    include/sql_state.h \
  280.    include/mysqld_ername.h \
  281.    include/mysql_version.h \
  282.    include/config-win.h \
  283.    libmysql/libmysql.def \
  284.    $DESTDIR/include/
  285.  
  286. # ----------------------------------------------------------------------
  287. # Client libraries, and other libraries
  288. # FIXME why "libmysql.dll" installed both in "bin" and "lib/opt"?
  289. # ----------------------------------------------------------------------
  290.  
  291. mkdir -p $DESTDIR/lib/opt
  292. cp libmysql/$TARGET/libmysql.dll \
  293.    libmysql/$TARGET/libmysql.lib \
  294.    libmysql/$TARGET/mysqlclient.lib \
  295.    mysys/$TARGET/mysys.lib \
  296.    regex/$TARGET/regex.lib \
  297.    strings/$TARGET/strings.lib \
  298.    zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/
  299.  
  300. if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \
  301.      x"$PACK_DEBUG" = x"yes" ] ; then
  302.   mkdir -p $DESTDIR/lib/debug
  303.   cp libmysql/debug/libmysql.dll \
  304.      libmysql/debug/libmysql.lib \
  305.      libmysql/debug/mysqlclient.lib \
  306.      mysys/debug/mysys.lib \
  307.      regex/debug/regex.lib \
  308.      strings/debug/strings.lib \
  309.      zlib/debug/zlib.lib $DESTDIR/lib/debug/
  310. fi
  311.  
  312. # ----------------------------------------------------------------------
  313. # Copy the test directory
  314. # ----------------------------------------------------------------------
  315.  
  316. mkdir $DESTDIR/mysql-test
  317. cp mysql-test/mysql-test-run.pl $DESTDIR/mysql-test/
  318. cp mysql-test/README $DESTDIR/mysql-test/
  319. cp -R mysql-test/{t,r,include,suite,std_data,lib} $DESTDIR/mysql-test/
  320.  
  321. # Note that this will not copy "extra" if a soft link
  322. if [ -d mysql-test/extra ] ; then
  323.   mkdir $DESTDIR/mysql-test/extra
  324.   cp -pR mysql-test/extra/* $DESTDIR/mysql-test/extra/
  325. fi
  326.  
  327. # ----------------------------------------------------------------------
  328. # Copy what could be usable in the "scripts" directory. Currently
  329. # only SQL files, others are Bourne shell scripts or Perl scripts
  330. # not really usable on Windows.
  331. #
  332. # But to be nice to the few Cygwin users we might have in 5.0 we
  333. # continue to copy the stuff, but don't include it in the WiX install.
  334. # ----------------------------------------------------------------------
  335.  
  336. mkdir -p $DESTDIR/scripts
  337.  
  338. # Uncomment and remove the for loop in 5.1
  339. #cp scripts/*.sql $DESTDIR/scripts/
  340.  
  341. for i in `cd scripts && ls`; do \
  342.   if echo $i | grep -q '\.sh'; then \
  343.     cp scripts/$i $DESTDIR/scripts/`echo $i | sed -e 's/\.sh$//'`; \
  344.   elif [ -d scripts/$i -o $i = Makefile.am -o $i = Makefile.in -o -e scripts/$i.sh ] ; then \
  345.     : ; \
  346.   else \
  347.     cp scripts/$i $DESTDIR/scripts/$i; \
  348.   fi; \
  349. done
  350.  
  351. cp -pR sql/share $DESTDIR/
  352. cp -pR sql-bench $DESTDIR/
  353. rm -f $DESTDIR/sql-bench/*.sh $DESTDIR/sql-bench/Makefile*
  354.  
  355. # The SQL initialisation code is really expected to be in "share"
  356. mv $DESTDIR/scripts/*.sql $DESTDIR/share/ || true
  357.  
  358. # ----------------------------------------------------------------------
  359. # Clean up from possibly copied SCCS directories
  360. # ----------------------------------------------------------------------
  361.  
  362. rm -rf `find $DISTDIR -type d -name SCCS -print`
  363.  
  364. # ----------------------------------------------------------------------
  365. # Copy other files specified on command line DEST=SOURCE
  366. # ----------------------------------------------------------------------
  367.  
  368. for arg do
  369.   dst=`echo $arg | sed 's/=.*$//'`
  370.   src=`echo $arg | sed 's/^.*=//'`
  371.  
  372.   if [ x"$dst" = x"" -o x"$src" = x"" ] ; then
  373.     echo "Invalid specification of what to copy"
  374.     usage
  375.   fi
  376.  
  377.   mkdir -p `dirname $DESTDIR/$dst`
  378.   cp -pR "$src" $DESTDIR/$dst
  379. done
  380.  
  381. # ----------------------------------------------------------------------
  382. # Finally create the ZIP archive
  383. # ----------------------------------------------------------------------
  384.  
  385. rm -f $NOINST_NAME.zip
  386. zip -r $NOINST_NAME.zip $DESTDIR
  387. rm -Rf $DESTDIR
  388.