mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
360 lines
6.1 KiB
Bash
Executable file
360 lines
6.1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
#
|
|
# Script to create a Windows src package
|
|
#
|
|
|
|
version=@VERSION@
|
|
export version
|
|
SOURCE=`pwd`
|
|
CP="cp -p"
|
|
|
|
DEBUG=0
|
|
SILENT=0
|
|
TMP=/tmp
|
|
SUFFIX=""
|
|
OUTTAR=0
|
|
|
|
SRCDIR=$SOURCE
|
|
DSTDIR=$TMP
|
|
|
|
#
|
|
# This script must run from MySQL top directory
|
|
#
|
|
|
|
if [ ! -f scripts/make_win_src_distribution.sh ]; then
|
|
echo "ERROR : You must run this script from the MySQL top-level directory"
|
|
exit 1
|
|
fi
|
|
|
|
#
|
|
# Usage of the script
|
|
#
|
|
|
|
show_usage() {
|
|
|
|
echo "MySQL utility script to create a Windows src package, and it takes"
|
|
echo "the following arguments:"
|
|
echo ""
|
|
echo " --debug Debug, without creating the package"
|
|
echo " --tmp Specify the temporary location"
|
|
echo " --silent Do not list verbosely files processed"
|
|
echo " --tar Create a tar.gz package instead of .zip"
|
|
echo " --help Show this help message"
|
|
|
|
exit 1
|
|
}
|
|
|
|
#
|
|
# Parse the input arguments
|
|
#
|
|
|
|
parse_arguments() {
|
|
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=;;"` ;;
|
|
--silent) SILENT=1 ;;
|
|
--tar) OUTTAR=1 ;;
|
|
--help) show_usage ;;
|
|
*)
|
|
echo "Unknown argument '$arg'"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
parse_arguments "$@"
|
|
|
|
#
|
|
# Currently return an error if --tar is not used
|
|
#
|
|
|
|
if [ x$OUTTAR = x0 ] && [ x$DEBUG = x0 ]
|
|
then
|
|
echo "ERROR: The default .zip doesn't yet work on Windows, as it can't load"
|
|
echo " the workspace files due to LF->CR+LF issues, instead use --tar"
|
|
echo " to create a .tar.gz package "
|
|
echo ""
|
|
show_usage;
|
|
exit 1
|
|
fi
|
|
|
|
#
|
|
# Create a tmp dest directory to copy files
|
|
#
|
|
|
|
BASE=$TMP/my_win_dist$SUFFIX
|
|
|
|
if [ -d $BASE ] ; then
|
|
rm -r -f $BASE
|
|
fi
|
|
|
|
$CP -r $SOURCE/VC++Files $BASE
|
|
|
|
(
|
|
find $BASE -name *.dsw -and -not -path \*SCCS\* -print
|
|
find $BASE -name *.dsp -and -not -path \*SCCS\* -print
|
|
)|(
|
|
while read v
|
|
do
|
|
sed 's/$'"/`echo -e \\\r`/" $v > $v.tmp
|
|
rm $v
|
|
mv $v.tmp $v
|
|
done
|
|
)
|
|
|
|
# move all error message files to root directory
|
|
$CP -r $SOURCE/sql/share $BASE/
|
|
|
|
#
|
|
# Clean up if we did this from a bk tree
|
|
#
|
|
|
|
if [ -d $BASE/SCCS ]
|
|
then
|
|
find $BASE/ -name SCCS -print | xargs rm -r -f
|
|
rm -rf "$BASE/InstallShield/Script Files/SCCS"
|
|
fi
|
|
|
|
|
|
mkdir $BASE/Docs $BASE/extra $BASE/include
|
|
|
|
|
|
#
|
|
# Copy directory files
|
|
#
|
|
|
|
copy_dir_files() {
|
|
|
|
for arg do
|
|
|
|
cd $SOURCE/$arg/
|
|
(
|
|
ls -A1|grep \\.[ch]$
|
|
ls -A1|grep \\.ih$
|
|
ls -A1|grep \\.i$
|
|
ls -A1|grep \\.ic$
|
|
ls -A1|grep \\.asm$
|
|
ls -A1|grep README
|
|
ls -A1|grep INSTALL
|
|
ls -A1|grep LICENSE
|
|
)|(
|
|
while read v
|
|
do
|
|
$CP $SOURCE/$arg/$v $BASE/$arg/$v
|
|
done
|
|
)
|
|
|
|
cd $SOURCE/$arg/
|
|
(
|
|
ls -A1|grep \\.cc$|sed 's/.cc$//g')|(
|
|
while read v
|
|
do
|
|
$CP $SOURCE/$arg/$v.cc $BASE/$arg/$v.cpp
|
|
done
|
|
)
|
|
done
|
|
}
|
|
|
|
#
|
|
# Copy directory contents recursively
|
|
#
|
|
|
|
copy_dir_dirs() {
|
|
|
|
for arg do
|
|
|
|
basedir=$arg
|
|
|
|
if [ ! -d $BASE/$arg ]; then
|
|
mkdir $BASE/$arg
|
|
fi
|
|
|
|
copy_dir_files $arg
|
|
|
|
cd $SOURCE/$arg/
|
|
(
|
|
ls -l |grep "^d"|awk '{print($9)}' -
|
|
)|(
|
|
while read dir_name
|
|
do
|
|
if [ x$dir_name != x"SCCS" ]
|
|
then
|
|
if [ ! -d $BASE/$basedir/$dir_name ]; then
|
|
mkdir $BASE/$basedir/$dir_name
|
|
fi
|
|
copy_dir_files $basedir/$dir_name
|
|
fi
|
|
done
|
|
)
|
|
done
|
|
}
|
|
|
|
#
|
|
# Input directories to be copied
|
|
#
|
|
|
|
copy_dir_files 'bdb'
|
|
copy_dir_files 'bdb/build_win32'
|
|
copy_dir_files 'client'
|
|
copy_dir_files 'dbug'
|
|
copy_dir_files 'extra'
|
|
copy_dir_files 'heap'
|
|
copy_dir_files 'include'
|
|
copy_dir_files 'innobase'
|
|
copy_dir_files 'isam'
|
|
copy_dir_files 'libmysql'
|
|
copy_dir_files 'libmysqld'
|
|
copy_dir_files 'merge'
|
|
copy_dir_files 'myisam'
|
|
copy_dir_files 'myisammrg'
|
|
copy_dir_files 'mysys'
|
|
copy_dir_files 'regex'
|
|
copy_dir_files 'sql'
|
|
copy_dir_files 'strings'
|
|
copy_dir_files 'vio'
|
|
copy_dir_files 'zlib'
|
|
|
|
#
|
|
# Input directories to be copied recursively
|
|
#
|
|
|
|
copy_dir_dirs 'bdb'
|
|
copy_dir_dirs 'innobase'
|
|
|
|
# create dummy innobase configure header
|
|
if [ -f $BASE/innobase/ib_config.h ]
|
|
then
|
|
rm -f $BASE/innobase/ib_config.h
|
|
touch $BASE/innobase/ib_config.h
|
|
fi
|
|
|
|
#
|
|
# Copy miscellaneous files
|
|
#
|
|
|
|
$CP $SOURCE/myisam/myisampack.c $BASE/myisampack/
|
|
$CP $SOURCE/client/mysqlbinlog.cc $BASE/mysqlbinlog/mysqlbinlog.cpp
|
|
$CP $SOURCE/isam/pack_isam.c $BASE/pack_isam/pack_isam.c
|
|
|
|
cd $SOURCE
|
|
for i in COPYING ChangeLog README \
|
|
INSTALL-SOURCE INSTALL-WIN \
|
|
INSTALL-SOURCE-WIN \
|
|
Docs/manual_toc.html Docs/manual.html \
|
|
Docs/mysqld_error.txt Docs/INSTALL-BINARY
|
|
|
|
do
|
|
if [ -f $i ]
|
|
then
|
|
$CP $i $BASE/$i
|
|
fi
|
|
done
|
|
|
|
#
|
|
# TODO: Initialize the initial data directory
|
|
#
|
|
|
|
|
|
#
|
|
# Specify the distribution package name and copy it
|
|
#
|
|
|
|
NEW_NAME=mysql@MYSQL_SERVER_SUFFIX@-$version$SUFFIX-win-src
|
|
BASE2=$TMP/$NEW_NAME
|
|
rm -r -f $BASE2
|
|
mv $BASE $BASE2
|
|
BASE=$BASE2
|
|
|
|
#
|
|
# If debugging, don't create a zip/tar/gz
|
|
#
|
|
|
|
if [ x$DEBUG = x1 ] ; then
|
|
echo "Please check the distribution files from $BASE"
|
|
echo "Exiting (without creating the package).."
|
|
exit
|
|
fi
|
|
|
|
#
|
|
# This is needed to prefere gnu tar instead of tar because tar can't
|
|
# always handle long filenames
|
|
#
|
|
|
|
PATH_DIRS=`echo $PATH | sed -e 's/^:/. /' -e 's/:$/ ./' -e 's/::/ . /g' -e 's/:/ /g' `
|
|
which_1 ()
|
|
{
|
|
for cmd
|
|
do
|
|
for d in $PATH_DIRS
|
|
do
|
|
for file in $d/$cmd
|
|
do
|
|
if test -x $file -a ! -d $file
|
|
then
|
|
echo $file
|
|
exit 0
|
|
fi
|
|
done
|
|
done
|
|
done
|
|
exit 1
|
|
}
|
|
|
|
#
|
|
# Create the result zip file
|
|
#
|
|
|
|
if [ x$OUTTAR = x1 ]; then
|
|
ZIPFILE1=gnutar
|
|
ZIPFILE2=gtar
|
|
OPT=cvf
|
|
EXT=".tar"
|
|
NEED_COMPRESS=1
|
|
if [ x$SILENT = x1 ] ; then
|
|
OPT=cf
|
|
fi
|
|
else
|
|
ZIPFILE1=zip
|
|
ZIPFILE2=""
|
|
OPT="-lvr"
|
|
EXT=".zip"
|
|
NEED_COMPRESS=0
|
|
if [ x$SILENT = x1 ] ; then
|
|
OPT="-lr"
|
|
fi
|
|
fi
|
|
|
|
tar=`which_1 $ZIPFILE1 $ZIPFILE2`
|
|
if test "$?" = "1" -o "$tar" = ""
|
|
then
|
|
tar=tar
|
|
fi
|
|
|
|
echo "Using $tar to create archive"
|
|
cd $TMP
|
|
|
|
$tar $OPT $SOURCE/$NEW_NAME$EXT $NEW_NAME
|
|
cd $SOURCE
|
|
|
|
if [ x$NEED_COMPRESS = x1 ]
|
|
then
|
|
echo "Compressing archive"
|
|
gzip -9 $NEW_NAME$EXT
|
|
EXT=".tar.gz"
|
|
fi
|
|
|
|
echo "Removing temporary directory"
|
|
rm -r -f $BASE
|
|
|
|
echo "$NEW_NAME$EXT created successfully !!"
|
|
|
|
#
|
|
# End of script
|
|
#
|
|
|
|
|
|
|