mirror of
https://github.com/fwbuilder/fwbuilder
synced 2026-08-29 21:28:25 +02:00
chore: New build script for travis using docker
This commit is contained in:
+22
-22
@@ -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
@@ -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 "$@"
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e -x
|
||||
|
||||
CXXFLAGS=-Wno-error=attributes ./autogen.sh
|
||||
make -j$(nproc)
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e -x
|
||||
|
||||
./autogen.sh
|
||||
make -j$(nproc)
|
||||
@@ -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
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user