general-runtimes/builder-targets-cb.sh
2013-09-15 22:39:07 +02:00

377 lines
15 KiB
Bash

##############################################################################
# This optional file "builder-targets-cb.sh" will be called by builder.sh
#
# The targets will be called from thde opsi-builder using the following
# order: config, prepare, retrieve, create, package, publish, commit, cleanup
# You can overwrite the target functions in builder-targets-cb.sh
#
# You can define callback functions. The functions are called from
# opsi-builder within processing a target
# cb_package_makeproductfile
#
# You can use every variable defined in any configuration file or by
# the defined builder script itself. Also, calling the predefined
# targets builder_<targetname> is possible.
#
# Abstract:
# target order: config, prepare, retrieve, create, package, publish, commit, cleanup
# callbacks: <none>
#
##############################################################################
function cleanup() {
echo "Cleanup"
builder_cleanup
}
write_svcpack_file() {
local control_file=$1
local control_section=$2
local control_option=$3
local control_value=$4
sed -i -e "/^\[$control_section\]/,/^\[.*\]/ s|^\($control_option[ \t]*=[ \t]*\).*$|\1$control_value|" "$control_file"
}
function create() {
echo "Create"
builder_create
extract_file cab $INST_DIR/Temp/x86/kels/Runtimes.cab $INST_DIR/Temp/x86/kels
extract_file 7zip $INST_DIR/Temp/x86/vb6/core/*.exe $INST_DIR/Temp/x86/vb6/core
extract_file inno $INST_DIR/Temp/x86/vb6/update/*.exe $INST_DIR/Temp/x86/vb6/update
extract_file inno $INST_DIR/Temp/x86/openssl/*.exe $INST_DIR/Temp/x86/openssl
extract_file inno $INST_DIR/Temp/x64/openssl/*.exe $INST_DIR/Temp/x64/openssl
mv $INST_DIR/Temp/x86/autoit/install/AutoItX $INST_DIR/Temp/x86/autoit
rm -rf $INST_DIR/Temp/x86/autoit/install
mv $INST_DIR/Temp/x64/autoit/install/AutoItX $INST_DIR/Temp/x64/autoit
rm -rf $INST_DIR/Temp/x64/autoit/install
mv $INST_DIR/Temp/x86/vc10run/core/*/* $INST_DIR/Temp/x86/vc10run/core
rm -rf $INST_DIR/Temp/x86/vc10run/core/Req*
mkdir $INST_DIR/Temp/x86/vc10run/update2
mv -vf $INST_DIR/Temp/x86/kels/plugin.dll $INST_DIR/Temp/x86/vc10run/update2
mv -vf $INST_DIR/Temp/x86/vb6/update/\{sys\}/msvcrt.dll $INST_DIR/Temp/x86/vc10run/update2
cp $INST_DIR/Temp/x86/openssl/\{app\}/ssleay32.dll $INST_DIR/Temp/x86/openssl/\{app\}/libssl32.dll
for i in `find $INST_DIR/Temp -type f` ; do mv "$i" `echo $i | tr [:upper:] [:lower:]`; done
mkdir -p $INST_DIR/bin/system{16,32,64}
mkdir -p $INST_DIR/bin/program{32,64}
# =============================================================================================
# Old Runtimes
# =============================================================================================
for i in $INST_DIR/Temp/x86/vc10run/core/*.dll
do
copyver $i $INST_DIR/bin/system16/`basename $i`
done
for i in $INST_DIR/Temp/x86/vc10run/update/*.dll
do
copyver $i $INST_DIR/bin/system16/`basename $i`
done
for i in $INST_DIR/Temp/x86/vc10run/update2/*.dll
do
copyver $i $INST_DIR/bin/system16/`basename $i`
done
# =============================================================================================
# Kels Runtime
# =============================================================================================
rm $INST_DIR/Temp/x86/kels/*.{cab,ini,inf}
rm $INST_DIR/Temp/x86/kels/usp10.dll
for i in $INST_DIR/Temp/x86/kels/*.{dll,ocx}
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
# =============================================================================================
# cygwin
# =============================================================================================
for i in $INST_DIR/Temp/x86/cygwin/usr/bin/cygwin1.dll
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
for i in $INST_DIR/Temp/x64/cygwin/usr/bin/cygwin1.dll
do
copyver $i $INST_DIR/bin/system64/`basename $i`
done
# =============================================================================================
# zlib
# =============================================================================================
for i in $INST_DIR/Temp/x86/zlib/zlib1.dll
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
# =============================================================================================
# zlib wapi
# =============================================================================================
for i in $INST_DIR/Temp/x86/zlibwapi/dll32/zlibwapi.dll
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
for i in $INST_DIR/Temp/x64/zlibwapi/dllx64/zlibwapi.dll
do
copyver $i $INST_DIR/bin/system64/`basename $i`
done
# =============================================================================================
# VB 1.0.0
# =============================================================================================
for i in $INST_DIR/Temp/x86/vb1/*.dll
do
copyver $i $INST_DIR/bin/system16/`basename $i`
done
# =============================================================================================
# VB 2.0.0
# =============================================================================================
for i in $INST_DIR/Temp/x86/vb2/*.dll
do
copyver $i $INST_DIR/bin/system16/`basename $i`
done
# =============================================================================================
# VB 3.0.0
# =============================================================================================
for i in $INST_DIR/Temp/x86/vb3/*.dll
do
copyver $i $INST_DIR/bin/system16/`basename $i`
done
# =============================================================================================
# VB 4.0.0
# =============================================================================================
for i in $INST_DIR/Temp/x86/vb4/vb40016.dll
do
copyver $i $INST_DIR/bin/system16/`basename $i`
done
for i in $INST_DIR/Temp/x86/vb4/vb40032.dll
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
# =============================================================================================
# VB 5.0.0
# =============================================================================================
rm $INST_DIR/Temp/x86/vb5/w95*
for i in $INST_DIR/Temp/x86/vb5/*.{dll,tlb}
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
# =============================================================================================
# VB 6.0.0
# =============================================================================================
rm $INST_DIR/Temp/x86/vb6/core/w95*
for i in $INST_DIR/Temp/x86/vb6/core/*.{dll,tlb}
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
for i in $INST_DIR/Temp/x86/vb6/update/\{sys\}/*.{dll,tlb,ocx}
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
# =============================================================================================
# Vc 7.0.0
# =============================================================================================
for i in $INST_DIR/Temp/x86/vc70/core/*.dll
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
for i in atl70 msvcr70 msvci70 mfc70 mfc70u mfc70deu mfc70esp mfc70fra mfc70ita mfc70chs mfc70cht mfc70jpn mfc70kor msvcp70
do
copyver $INST_DIR/Temp/x86/vc70/rick/$i.dll $INST_DIR/bin/system32/$i.dll
done
for i in atl70 msvcr70 msvci70 mfc70 mfc70u mfc70deu mfc70esp mfc70fra mfc70ita mfc70chs mfc70cht mfc70jpn mfc70kor msvcp70
do
copyver $INST_DIR/Temp/x86/vc70/sp1/fl_${i}_dll_* $INST_DIR/bin/system32/$i.dll
done
for i in atl70 msvcr70 msvci70 mfc70 mfc70u mfc70deu mfc70esp mfc70fra mfc70ita mfc70chs mfc70cht mfc70jpn mfc70kor msvcp70
do
copyver $INST_DIR/Temp/x86/vc70/sp1fix/fl_${i}_dll_* $INST_DIR/bin/system32/$i.dll
done
# =============================================================================================
# Vc 7.1.0
# =============================================================================================
for i in $INST_DIR/Temp/x86/vc71/core/*.dll
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
for i in atl71 msvcr71 mfc71 mfc71u mfc71deu mfc71esp mfc71fra mfc71ita mfc71chs mfc71cht mfc71jpn mfc71kor msvcp71
do
copyver $INST_DIR/Temp/x86/vc71/rick/$i.dll $INST_DIR/bin/system32/$i.dll
done
for i in atl71 msvcr71 mfc71 mfc71u mfc71deu mfc71esp mfc71fra mfc71ita mfc71chs mfc71cht mfc71jpn mfc71kor msvcp71
do
copyver $INST_DIR/Temp/x86/vc71/sp1/fl_${i}_dll_* $INST_DIR/bin/system32/$i.dll
done
for i in atl71 msvcr71 mfc71 mfc71u mfc71deu mfc71esp mfc71fra mfc71ita mfc71chs mfc71cht mfc71jpn mfc71kor msvcp71
do
copyver $INST_DIR/Temp/x86/vc71/sp1fix/fl_${i}_dll_* $INST_DIR/bin/system32/$i.dll
done
# =============================================================================================
# AutoIt
# =============================================================================================
for i in $INST_DIR/Temp/x86/autoit/AutoItX/autoitx3.dll
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
for i in $INST_DIR/Temp/x64/autoit/AutoItX/autoitx3_x64.dll
do
copyver $i $INST_DIR/bin/system64/`basename $i`
done
# =============================================================================================
# OpenSSL
# =============================================================================================
for i in $INST_DIR/Temp/x86/openssl/\{app\}/*.dll
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
for i in $INST_DIR/Temp/x64//openssl/\{app\}/*.dll
do
copyver $i $INST_DIR/bin/system64/`basename $i`
done
# =============================================================================================
# SDL 1
# =============================================================================================
for i in $INST_DIR/Temp/x86/sdl1/*.dll
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
for i in $INST_DIR/Temp/x64/sdl1/*.dll
do
copyver $i $INST_DIR/bin/system64/`basename $i`
done
# =============================================================================================
# SDL 2
# =============================================================================================
for i in $INST_DIR/Temp/x86/sdl2/*.dll
do
copyver $i $INST_DIR/bin/system32/`basename $i`
done
for i in $INST_DIR/Temp/x64/sdl2/*.dll
do
copyver $i $INST_DIR/bin/system64/`basename $i`
done
# =============================================================================================
# Build the AIORuntimes.dll and exe
# =============================================================================================
sed -e "s/1.2.3.4/${VERSION}/g" -e "s/1, 2, 3, 4/${VERSION//./, }/g" $PRODUCT_DIR/code/AIORuntimes.rc > $INST_DIR/Temp/version.rc
windres -i $INST_DIR/Temp/version.rc -O coff -o $INST_DIR/Temp/version.res
gcc -mwindows -c -o $INST_DIR/Temp/AIORuntimes_dll.o $PRODUCT_DIR/code/AIORuntimes_dll.c
gcc -mwindows -shared $INST_DIR/Temp/version.res $INST_DIR/Temp/AIORuntimes_dll.o -o $INST_DIR/Temp/AIORuntimes.dll
gcc -mwindows -o $INST_DIR/Temp/AIORuntimes $PRODUCT_DIR/code/AIORuntimes_exe.c -L$INST_DIR/Temp/ -lAIORuntimes
copyver $INST_DIR/Temp/AIORuntimes.dll $INST_DIR/bin/system32/
copyver $INST_DIR/Temp/AIORuntimes.exe $INST_DIR/bin/program32/
# =============================================================================================
# Build the Setup
# =============================================================================================
cp -vf $PRODUCT_DIR/code/install_script.iss $INST_DIR/install_script.iss
for i in $INST_DIR/bin/system16/*
do
echo "$(cygpath -pw "$i")"
echo "Source: \"$(cygpath -pw "$i")\"; DestDir: \"{win}\system\"; MinVersion: 0.0,5.0;" >> $INST_DIR/install_script.iss
done
for i in $INST_DIR/bin/system32/*
do
echo "$(cygpath -pw "$i")"
fname=$(basename $i)
if [ "${i##*.}" == "ocx" ] || [ "${fname}" == "autoitx3.dll" ] || [ "${fname}" == "msstdfmt.dll" ] || [ "${fname}" == "msstkprp.dll" ] || [ "${fname}" == "scrrun.dll" ] || [ "${fname}" == "olepro32.dll" ] || [ "${fname}" == "oleaut32.dll" ] || [ "${fname}" == "msvbvm50.dll" ] || [ "${fname}" == "msvbvm60.dll" ] || [ "${fname}" == "cmct3de.dll" ] ; then
echo "Source: \"$(cygpath -pw "$i")\"; DestDir: \"{sys}\"; MinVersion: 0.0,5.0; Flags: restartreplace regserver overwritereadonly noregerror 32bit" >> $INST_DIR/install_script.iss
elif [ "${fname}" == "zlib1.dll" ] || [ "${fname}" == "atl71.dll" ] || [ "${fname}" == "mfc71u.dll" ] || [ "${fname}" == "msvcp71.dll" ] || [ "${fname}" == "msvcr71.dll" ] ; then
echo "Source: \"$(cygpath -pw "$i")\"; DestDir: \"{sys}\"; MinVersion: 0.0,5.0; Flags: restartreplace overwritereadonly 32bit" >> $INST_DIR/install_script.iss
elif [ "${i##*.}" == "tlb" ] ; then
echo "Source: \"$(cygpath -pw "$i")\"; DestDir: \"{sys}\"; MinVersion: 0.0,5.0; Flags: restartreplace regtypelib overwritereadonly noregerror 32bit" >> $INST_DIR/install_script.iss
else
echo "Source: \"$(cygpath -pw "$i")\"; DestDir: \"{sys}\"; MinVersion: 0.0,5.0; Flags: restartreplace overwritereadonly 32bit" >> $INST_DIR/install_script.iss
# echo "Source: \"$(cygpath -pw "$i")\"; DestDir: \"{sys}\"; MinVersion: 0.0,5.0; Flags: 32bit" >> $INST_DIR/install_script.iss
fi
done
for i in $INST_DIR/bin/system64/*
do
echo "$(cygpath -pw "$i")"
done
for i in $INST_DIR/bin//program32/*
do
echo "$(cygpath -pw "$i")"
done
write_svcpack_file $INST_DIR/install_script.iss "Setup" "AppVerName" "${VERSION}"
write_svcpack_file $INST_DIR/install_script.iss "Setup" "AppVersion" "${VERSION}"
ISCC.exe /Q /O"$(cygpath -pw "$INST_DIR")" /F"Geos_One_General_Runtimes_Installer_$VERSION" "$(cygpath -pw "$INST_DIR/install_script.iss")"
rm $INST_DIR/*.iss
rm $INST_DIR/bin
###################################################
# Temp Package.xml
###################################################
echo "<package id=\"basicruntimes\" name=\"Allgemeine Runtime Dateien\" group=\"System Runtimes\">" > $INST_DIR/package.old
echo "<check type=\"file\" condition=\"<\" path=\"%windir%\system32\AiORuntimes.dll\" value=\"${VERSION}\" arch=\"x86\" />" >> $INST_DIR/package.old
echo "<check type=\"file\" condition=\"<\" path=\"%windir%\syswow64\AiORuntimes.dll\" value=\"${VERSION}\" arch=\"x64\" />" >> $INST_DIR/package.old
echo "<install>" >> $INST_DIR/package.old
echo "<cmd path=\"Geos_One_General_Runtimes_Installer_${VERSION}.exe\" param=\"/SILENT /NORESTART\" />" >> $INST_DIR/package.old
echo "</install>" >> $INST_DIR/package.old
echo "</package>" >> $INST_DIR/package.old
###################################################
# Package.xml end and cleanup
###################################################
tidy_xml $INST_DIR/package.old $INST_DIR/package.xml
rm $INST_DIR/package.old
}