1
0
mirror of https://github.com/fwbuilder/fwbuilder synced 2025-06-17 15:47:42 +02:00
fwbuilder/packaging/fwb3-makebundle.sh

226 lines
6.7 KiB
Bash
Executable File

#!/bin/sh
#
# Firewall Builder
#
# Copyright (C) 2012 NetCitadel, LLC
#
# Author: Vadim Kurland vadim@netcitadel.com
#
# This program is free software which we release under the GNU General Public
# License. You may redistribute and/or modify this program under the terms
# of that license as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# To get a copy of the GNU General Public License, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# This script assembles Mac OS X bundle
#
#---------------------------------------------------------------------
#
#
function usage {
echo "makebundle MODULE_NAME BUNDLE_ROOT"
exit 1
}
unset DISPLAY
unset LD_LIBRARY_PATH
MODULE_NAME=$1
BUNDLE_ROOT=$2
test -z "$BUNDLE_ROOT" && {
usage
exit 1
}
export BUNDLE_ROOT
# Assuming script is being run with fwbuilder top directory as
# cwd. Need to switch to the top level build environment dir.
test -d 'tools' || cd ../..
pwd
eval $(python tools/module.py -s $MODULE_NAME)
BUILD_ROOT_DIR=$(pwd)
test -d ${BUILD_ROOT_DIR}/source || {
echo "Can't find directory where source tree should be located: ${BUILD_ROOT_DIR}/source"
exit 1
}
#VERSIONED_MODULE_NAME=$(basename $BUNDLE_ROOT | sed 's/\.app//')
VERSIONED_MODULE_NAME="$MODULE_NAME-$VERSION"
echo "Module name: $MODULE_NAME"
echo "Versioned module name: $VERSIONED_MODULE_NAME"
QT_FRAMEWORKS="QtCore QtGui QtNetwork QtDBus QtXml"
FWBUILDER_ROOT_DIR=$(find ${BUILD_ROOT_DIR}/source -name "$VERSIONED_MODULE_NAME" -o -name $MODULE_NAME -depth 1)
echo
echo "=== Building bundle ${BUNDLE_ROOT} "
echo
TMP_BUNDLE_DIR=$(ls -d ${FWBUILDER_ROOT_DIR}/src/gui/*.app)
test -z "$TMP_BUNDLE_DIR" && {
echo "Can not find GUI bundle inside of ${FWBUILDER_ROOT_DIR}/src/gui"
exit 1
}
TMP_BUNDLE=$(basename $TMP_BUNDLE_DIR)
rm -rf $TMP_BUNDLE
cp -R ${FWBUILDER_ROOT_DIR}/src/gui/$TMP_BUNDLE .
echo "=== Running macdeployqt"
macdeployqt ${TMP_BUNDLE}
echo "=== Copying fwbuilder resources and libfwbuilder libraries"
mkdir -p ${TMP_BUNDLE}/Contents/Resources
mkdir -p ${TMP_BUNDLE}/Contents/Resources/os
mkdir -p ${TMP_BUNDLE}/Contents/Resources/platform
mkdir -p ${TMP_BUNDLE}/Contents/Resources/help
mkdir -p ${TMP_BUNDLE}/Contents/Resources/configlets
(cd ${FWBUILDER_ROOT_DIR}/src/res/; tar cf - --exclude .svn {*.xml,os/*.xml,platform/*.xml,help,configlets} ) | \
tar -C ${TMP_BUNDLE}/Contents/Resources -xf -
mkdir -p ${TMP_BUNDLE}/Contents/Frameworks
#echo "=== Copying libfwbuilder"
#
#cp ${LIBFWBUILDER_ROOT_DIR}/src/fwbuilder/libfwbuilder.?.dylib \
# ${TMP_BUNDLE}/Contents/Frameworks/
#cp ${LIBFWBUILDER_ROOT_DIR}/src/fwcompiler/libfwcompiler.?.dylib \
# ${TMP_BUNDLE}/Contents/Frameworks/
#
#chmod u+w ${TMP_BUNDLE}/Contents/Frameworks/*
cp ${FWBUILDER_ROOT_DIR}/src/libfwbuilder/etc/fwbuilder.dtd ${TMP_BUNDLE}/Contents/Resources
mkdir -p ${TMP_BUNDLE}/Contents/Resources/migration
cp ${FWBUILDER_ROOT_DIR}/src/libfwbuilder/migration/*.xslt ${TMP_BUNDLE}/Contents/Resources/migration
echo "=== Copying binaries"
cp -r ${FWBUILDER_ROOT_DIR}/src/fwbedit/fwbedit.app/Contents/MacOS/fwbedit \
${TMP_BUNDLE}/Contents/MacOS/
for c in ipt pf ipf ipfw iosacl pix procurve_acl
do
cp -r ${FWBUILDER_ROOT_DIR}/src/$c/fwb_$c.app/Contents/MacOS/fwb_$c \
${TMP_BUNDLE}/Contents/MacOS/
done
chmod +x ${TMP_BUNDLE}/Contents/MacOS/fwb*
for f in ${TMP_BUNDLE}/Contents/MacOS/fwb*
do
for framework in $QT_FRAMEWORKS
do
install_name_tool -change ${framework}.framework/Versions/4/${framework} \
@executable_path/../Frameworks/${framework}.framework/Versions/4/${framework} \
$f
done
done
rm -rf $BUNDLE_ROOT
mv $TMP_BUNDLE $BUNDLE_ROOT
exit 0
echo "=== Copying qt.conf file"
cp ${FWBUILDER_ROOT_DIR}/packaging/qt.conf ${BUNDLE_ROOT}/Contents/Resources
echo "=== Copying .nib files"
test -d /Library/Frameworks/QtGui.framework/Versions/4/Resources && \
cp -R /Library/Frameworks/QtGui.framework/Versions/4/Resources/* ${BUNDLE_ROOT}/Contents/Resources
# we have no working translations in v4 and v5
# echo "=== Copying locales"
# mkdir -p ${BUNDLE_ROOT}/Contents/Resources/locale
# cp -r ${FWBUILDER_ROOT_DIR}/src/gui/*.qm ${BUNDLE_ROOT}/Contents/Resources/locale
qt_translations=$(find /Developer/Applications/Qt/translations/ -name '*.qm')
test -n "$qt_translations" && {
for f in $qt_translations; do
cp $f ${BUNDLE_ROOT}/Contents/Resources/locale/
done
}
echo "=== Setting up copies of QT frameworks"
for framework in $QT_FRAMEWORKS
do
test -d /Library/Frameworks/${framework}.framework/Versions && {
cp -R /Library/Frameworks/${framework}.framework/Versions/4/${framework} ${BUNDLE_ROOT}/Contents/Frameworks/
install_name_tool -id @executable_path/../Frameworks/${framework} \
${BUNDLE_ROOT}/Contents/Frameworks/${framework}
}
done
mkdir -p ${BUNDLE_ROOT}/Contents/plugins
cp /Developer//Applications/Qt/plugins/accessible/libqtaccessiblewidgets.dylib \
${BUNDLE_ROOT}/Contents/plugins/
install_name_tool -change QtCore.framework/Versions/4/QtCore \
@executable_path/../Frameworks/QtCore \
${BUNDLE_ROOT}/Contents/Frameworks/QtGui
install_name_tool -change QtCore.framework/Versions/4/QtCore \
@executable_path/../Frameworks/QtCore \
${BUNDLE_ROOT}/Contents/Frameworks/QtNetwork
install_name_tool -change QtCore.framework/Versions/4/QtCore \
@executable_path/../Frameworks/QtCore \
${BUNDLE_ROOT}/Contents/Frameworks/QtXml
test -f ${BUNDLE_ROOT}/Contents/Frameworks/QtDBus && {
install_name_tool -change QtCore.framework/Versions/4/QtCore \
@executable_path/../Frameworks/QtCore \
${BUNDLE_ROOT}/Contents/Frameworks/QtDBus
install_name_tool -change QtXml.framework/Versions/4/QtXml \
@executable_path/../Frameworks/QtXml \
${BUNDLE_ROOT}/Contents/Frameworks/QtDBus
}
install_name_tool -change QtCore.framework/Versions/4/QtCore \
@executable_path/../Frameworks/QtCore \
${BUNDLE_ROOT}/Contents/plugins/libqtaccessiblewidgets.dylib
install_name_tool -change QtGui.framework/Versions/4/QtGui \
@executable_path/../Frameworks/QtGui \
${BUNDLE_ROOT}/Contents/plugins/libqtaccessiblewidgets.dylib
for f in ${BUNDLE_ROOT}/Contents/MacOS/fwb*
do
for framework in $QT_FRAMEWORKS
do
install_name_tool -change ${framework}.framework/Versions/4/${framework} \
@executable_path/../Frameworks/${framework} \
$f
done
done