chore: New build script for travis using docker

This commit is contained in:
Sirius Bakke
2018-04-30 09:28:14 +02:00
parent ba617a8e92
commit 192c59ead9
7 changed files with 172 additions and 62 deletions
+22 -22
View File
@@ -1,39 +1,39 @@
sudo: required
dist: trusty
language: c++
language: bash
addons:
apt:
packages:
- build-essential
- autoconf
- libxml2-dev
- libxslt1-dev
- qt5-default
- libsnmp-dev
services:
- docker
env:
global:
- MAKEJOBS=-j3
- CXXFLAGS="-Wall -Werror -Qunused-arguments"
cache:
directories:
- $HOME/Library/Caches/Homebrew
matrix:
include:
- os: linux
compiler: clang
env: QMAKESPEC=linux-clang
env: VM=ubuntu:18.04
- os: linux
compiler: gcc
env: VM=ubuntu:16.04
- os: osx
compiler: clang
env: CXXFLAGS="-Wno-nullability-completeness"
install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install qt5 && brew link --force qt5 ; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew install qt5 net-snmp ;
fi
before_script:
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./autogen.sh ; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
docker pull fwbuilder/$VM ;
fi
script:
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make $MAKEJOBS; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sh build_mac.sh ; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
docker run -v $(pwd):/root -it fwbuilder/$VM "docker/travis.$VM.sh" ;
fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
export PATH="/usr/local/opt/qt/bin:/usr/local/opt/net-snmp/bin:$PATH" ;
./build_mac.sh all ;
fi
+104 -40
View File
@@ -3,53 +3,117 @@ export QMAKE_MAC_SDK="macosx"
export QMAKESPEC="macx-clang"
export QMAKE_MACOSX_DEPLOYMENT_TARGET=10.9
./autogen.sh
main()
{
if [ $# -eq 0 ]; then
usage
exit
fi
echo "==> Compiling"
export JOBS=$(sysctl -n hw.ncpu | awk '{ print $1 + 1 }')
make -j${JOBS}
APP_VERSION=$(cat VERSION.h | grep VERSION | awk '{ print $3 }' | tr -d '"')
QT_VERSION_MAJOR=$(qmake -version | awk '/Using Qt version/ { ver=4; print $ver }' | awk -F. '{ major=1; print $major }')
FWBUILDER_ROOT_DIR=$(pwd)
TMP_BUNDLE_DIR=$(ls -d ${FWBUILDER_ROOT_DIR}/src/gui/*.app)
test -z "$TMP_BUNDLE_DIR" && {
echo "Cannot find GUI bundle. My best guess was in ${FWBUILDER_ROOT_DIR}/src/gui/"
exit 1
while [ "$1" != "" ]; do
case $1 in
-h | --help | help | usage )
usage
exit
;;
all )
configure
compile
bundle
exit
;;
configure )
configure
;;
compile )
compile
;;
bundle )
bundle
;;
* )
usage
exit 1
;;
esac
shift
done
}
TMP_BUNDLE=$(basename $TMP_BUNDLE_DIR)
rm -rf $TMP_BUNDLE
usage()
{
echo "Usage: $0 [ all | configure | compile | bundle ]"
}
echo "==> Copying base bundle"
cp -R ${FWBUILDER_ROOT_DIR}/src/gui/$TMP_BUNDLE .
configure()
{
echo "==> Configuring"
./autogen.sh
if [ $? -eq 0 ]; then
echo "==> Done configuring"
fi
}
echo "==> Copying resources and libraries into bundle"
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
mkdir -p ${TMP_BUNDLE}/Contents/Resources/migration
cp -R ${FWBUILDER_ROOT_DIR}/src/res/{*.xml,os,platform,help,configlets} ${TMP_BUNDLE}/Contents/Resources/
cp ${FWBUILDER_ROOT_DIR}/src/libfwbuilder/etc/fwbuilder.dtd ${TMP_BUNDLE}/Contents/Resources/
cp ${FWBUILDER_ROOT_DIR}/src/libfwbuilder/migration/*.xslt ${TMP_BUNDLE}/Contents/Resources/migration/
compile()
{
echo "==> Compiling"
export JOBS=$(sysctl -n hw.ncpu | awk '{ print $1 + 1 }')
make -j${JOBS}
if [ $? -eq 0 ]; then
echo "==> Done compiling"
fi
}
echo "==> Copying binaries into bundle"
cp ${FWBUILDER_ROOT_DIR}/src/fwbedit/fwbedit.app/Contents/MacOS/fwbedit ${TMP_BUNDLE}/Contents/MacOS/
for binary in ipt pf ipf ipfw iosacl nxosacl pix procurve_acl junosacl
do
cp ${FWBUILDER_ROOT_DIR}/src/$binary/fwb_$binary.app/Contents/MacOS/fwb_$binary ${TMP_BUNDLE}/Contents/MacOS/
done
bundle()
{
echo "==> Bundling"
APP_VERSION=$(cat VERSION.h | grep VERSION | awk '{ print $3 }' | tr -d '"')
QT_VERSION_MAJOR=$(qmake -version | awk '/Using Qt version/ { ver=4; print $ver }' | awk -F. '{ major=1; print $major }')
BIN=${TMP_BUNDLE}/Contents/MacOS
chmod +x ${BIN}/fwb*
FWBUILDER_ROOT_DIR=$(pwd)
TMP_BUNDLE_DIR=$(ls -d ${FWBUILDER_ROOT_DIR}/src/gui/*.app)
test -z "$TMP_BUNDLE_DIR" && {
echo "Cannot find GUI bundle. My best guess was in ${FWBUILDER_ROOT_DIR}/src/gui/"
exit 1
}
echo "==> Stripping binaries"
strip ${BIN}/*
TMP_BUNDLE=$(basename $TMP_BUNDLE_DIR)
rm -rf $TMP_BUNDLE
echo "==> Running macdeployqt"
macdeployqt ${TMP_BUNDLE} -executable=${BIN}/fwbedit -executable=${BIN}/fwb_ipt -executable=${BIN}/fwb_pf -executable=${BIN}/fwb_ipf -executable=${BIN}/fwb_ipfw -executable=${BIN}/fwb_iosacl -executable=${BIN}/fwb_nxosacl -executable=${BIN}/fwb_pix -executable=${BIN}/fwb_procurve_acl -executable=${BIN}/fwb_junosacl
echo "==> Copying base bundle"
cp -R ${FWBUILDER_ROOT_DIR}/src/gui/$TMP_BUNDLE .
echo "==> Done"
echo "# open ${TMP_BUNDLE}/"
echo "==> Copying resources and libraries into bundle"
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
mkdir -p ${TMP_BUNDLE}/Contents/Resources/migration
cp -R ${FWBUILDER_ROOT_DIR}/src/res/{*.xml,os,platform,help,configlets} ${TMP_BUNDLE}/Contents/Resources/
cp ${FWBUILDER_ROOT_DIR}/src/libfwbuilder/etc/fwbuilder.dtd ${TMP_BUNDLE}/Contents/Resources/
cp ${FWBUILDER_ROOT_DIR}/src/libfwbuilder/migration/*.xslt ${TMP_BUNDLE}/Contents/Resources/migration/
echo "==> Copying binaries into bundle"
cp ${FWBUILDER_ROOT_DIR}/src/fwbedit/fwbedit.app/Contents/MacOS/fwbedit ${TMP_BUNDLE}/Contents/MacOS/
for binary in ipt pf ipf ipfw iosacl nxosacl pix procurve_acl junosacl
do
cp ${FWBUILDER_ROOT_DIR}/src/$binary/fwb_$binary.app/Contents/MacOS/fwb_$binary ${TMP_BUNDLE}/Contents/MacOS/
done
BIN=${TMP_BUNDLE}/Contents/MacOS
chmod +x ${BIN}/fwb*
echo "==> Stripping binaries"
strip ${BIN}/*
echo "==> Running macdeployqt"
macdeployqt ${TMP_BUNDLE} -executable=${BIN}/fwbedit -executable=${BIN}/fwb_ipt -executable=${BIN}/fwb_pf -executable=${BIN}/fwb_ipf -executable=${BIN}/fwb_ipfw -executable=${BIN}/fwb_iosacl -executable=${BIN}/fwb_nxosacl -executable=${BIN}/fwb_pix -executable=${BIN}/fwb_procurve_acl -executable=${BIN}/fwb_junosacl
if [ $? -eq 0 ]; then
echo "==> Done bundling"
echo " To open bundle:"
echo " # open ${TMP_BUNDLE}/"
fi
}
main "$@"
+16
View File
@@ -0,0 +1,16 @@
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y \
autoconf \
automake \
clang \
g++ \
libtool \
libsnmp-dev \
libxml2-dev \
libxslt1-dev \
make \
nsis \
qt5-default
WORKDIR /root
+16
View File
@@ -0,0 +1,16 @@
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y \
autoconf \
automake \
clang \
g++ \
libtool \
libsnmp-dev \
libxml2-dev \
libxslt1-dev \
make \
nsis \
qt5-default
WORKDIR /root
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
set -e -x
CXXFLAGS=-Wno-error=attributes ./autogen.sh
make -j$(nproc)
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
set -e -x
./autogen.sh
make -j$(nproc)
+2
View File
@@ -182,6 +182,7 @@ macx {
INCLUDEPATH += $(INSTALL_ROOT)/$$PREFIX/include/
INCLUDEPATH += /usr/include/libxml2 /usr/include
INCLUDEPATH += /usr/local/opt/openssl/include
QMAKE_LIBS_QT =
QMAKE_LIBS_QT_THREAD =
@@ -189,6 +190,7 @@ macx {
# LIBS += $$LIBS_FWBUILDER
LIBS += -lxml2 -lz
LIBS += -lpthread
LIBS += -L/usr/local/opt/openssl/lib
}