@ -124,12 +124,13 @@ apt-get install -y --no-install-recommends \
@@ -124,12 +124,13 @@ apt-get install -y --no-install-recommends \
cmake \
git \
libtool \
nsis \
pkg-config \
tclsh \
unzip \
wget \
yasm
yasm \
zip
if [ [ " $ARCH " = = "i686" ] ]
then
apt-get install -y --no-install-recommends \
@ -219,8 +220,9 @@ strip_all()
@@ -219,8 +220,9 @@ strip_all()
# OpenSSL
OPENSSL_PREFIX_DIR = " $DEP_DIR /libopenssl "
OPENSSL_VERSION = 1.0.2m
OPENSSL_HASH = "8c6ff15ec6b319b50788f42c7abc2890c08ba5a1cdcd3810eb9092deada37b0f"
OPENSSL_VERSION = 1.0.2o
# hash from https://www.openssl.org/source/
OPENSSL_HASH = "ec3f5c9714ba0fd45cb4e087301eb1336c317e0d20b575a125050470e8089e4d"
if [ ! -f " $OPENSSL_PREFIX_DIR /done " ]
then
rm -rf " $OPENSSL_PREFIX_DIR "
@ -260,9 +262,10 @@ fi
@@ -260,9 +262,10 @@ fi
QT_PREFIX_DIR = " $DEP_DIR /libqt5 "
QT_MAJOR = 5
QT_MINOR = 9
QT_PATCH = 3
QT_PATCH = 4
QT_VERSION = $QT_MAJOR .$QT_MINOR .$QT_PATCH
QT_HASH = "57acd8f03f830c2d7dc29fbe28aaa96781b2b9bdddce94196e6761a0f88c6046"
# hash from https://download.qt.io/archive/qt/5.9/5.9.4/single/qt-everywhere-opensource-src-5.9.4.tar.xz.mirrorlist
QT_HASH = "e3acd9cbeafba3aed9f14592f4d70bf0b255e0203943e8d2b4235002268274d5"
if [ ! -f " $QT_PREFIX_DIR /done " ]
then
rm -rf " $QT_PREFIX_DIR "
@ -277,11 +280,19 @@ then
@@ -277,11 +280,19 @@ then
export PKG_CONFIG_PATH = " $OPENSSL_PREFIX_DIR /lib/pkgconfig "
export OPENSSL_LIBS = " $( pkg-config --libs openssl) "
# Fix https://bugreports.qt.io/browse/QTBUG-66123 present in Qt 5.9.4
cd qtbase
wget https://github.com/qt/qtbase/commit/40e87491886957696486b87dc2dedec2adaf6e1a.patch -O "QTBUG-66123.patch"
check_sha256 "15c4e6f0eba90a67fee3faabd86ca670a3021ac49d19fd9b311e16615bce87a6" "QTBUG-66123.patch"
patch -p1 < "QTBUG-66123.patch"
rm "QTBUG-66123.patch"
cd ..
# Fix https://bugreports.qt.io/browse/QTBUG-63637 present in Qt 5.9.2
echo "QMAKE_LINK_OBJECT_MAX = 10" >> qtbase/mkspecs/win32-g++/qmake.conf
echo "QMAKE_LINK_OBJECT_SCRIPT = object_script" >> qtbase/mkspecs/win32-g++/qmake.conf
# So, apparently Travis CI terminate a build if it generates more than 4mb of output
# So, apparently Travis CI terminates a build if it generates more than 4mb of stdout output
# which happens when building Qt
CONFIGURE_EXTRA = ""
set +u
@ -379,8 +390,8 @@ set -u
@@ -379,8 +390,8 @@ set -u
# SQLCipher
SQLCIPHER_PREFIX_DIR = " $DEP_DIR /libsqlcipher "
SQLCIPHER_VERSION = v3.4.1
SQLCIPHER_HASH = "4172cc6e5a79d36e178d36bd5cc467a938e08368952659bcd95eccbaf0fa4ad4 "
SQLCIPHER_VERSION = v3.4.2
SQLCIPHER_HASH = "69897a5167f34e8a84c7069f1b283aba88cdfa8ec183165c4a5da2c816cfaadb "
if [ ! -f " $SQLCIPHER_PREFIX_DIR /done " ]
then
rm -rf " $SQLCIPHER_PREFIX_DIR "
@ -438,8 +449,8 @@ fi
@@ -438,8 +449,8 @@ fi
# FFmpeg
FFMPEG_PREFIX_DIR = " $DEP_DIR /libffmpeg "
FFMPEG_VERSION = 3.2.9
FFMPEG_HASH = "1131d37890ed3dcbc3970452b200a56ceb36b73eaa51d1c23c770c90f928537f "
FFMPEG_VERSION = 3.2.10
FFMPEG_HASH = "3c1626220c7b68ff6be7312559f77f3c65ff6809daf645d4470ac0189926bdbc "
if [ ! -f " $FFMPEG_PREFIX_DIR /done " ]
then
rm -rf " $FFMPEG_PREFIX_DIR "
@ -709,8 +720,8 @@ fi
@@ -709,8 +720,8 @@ fi
# QREncode
QRENCODE_PREFIX_DIR = " $DEP_DIR /libqrencode "
QRENCODE_VERSION = 3.4.4
QRENCODE_HASH = "efe5188b1ddbcbf98763b819b146be6a90481aac30cfc8d858ab78a19cde1fa5 "
QRENCODE_VERSION = 4.0.0
QRENCODE_HASH = "c90035e16921117d4086a7fdee65aab85be32beb4a376f6b664b8a425d327d0b "
if [ ! -f " $QRENCODE_PREFIX_DIR /done " ]
then
rm -rf " $QRENCODE_PREFIX_DIR "
@ -809,8 +820,8 @@ fi
@@ -809,8 +820,8 @@ fi
# Sodium
SODIUM_PREFIX_DIR = " $DEP_DIR /libsodium "
SODIUM_VERSION = 1.0.15
SODIUM_HASH = "fb6a9e879a2f674592e4328c5d9f79f082405ee4bb05cb6e679b90afe9e178f4 "
SODIUM_VERSION = 1.0.16
SODIUM_HASH = "eeadc7e1e1bcef09680fb4837d448fbdf57224978f865ac1c16745868fbd0533 "
if [ ! -f " $SODIUM_PREFIX_DIR /done " ]
then
rm -rf " $SODIUM_PREFIX_DIR "
@ -841,17 +852,17 @@ fi
@@ -841,17 +852,17 @@ fi
# VPX
VPX_PREFIX_DIR = " $DEP_DIR /libvpx "
VPX_VERSION = 1.6.1
VPX_HASH = "1c2c0c2a97fba9474943be34ee39337dee756780fc12870ba1dc68372586a819 "
VPX_VERSION = v1.7.0
VPX_HASH = "1fec931eb5c94279ad219a5b6e0202358e94a93a90cfb1603578c326abfc1238 "
if [ ! -f " $VPX_PREFIX_DIR /done " ]
then
rm -rf " $VPX_PREFIX_DIR "
mkdir -p " $VPX_PREFIX_DIR "
wget http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-$VPX_VERSION .tar.bz2
check_sha256 " $VPX_HASH " " libvpx- $VPX_VERSION .tar.bz2 "
bsdtar --no-same-owner --no-same-permissions -xf libvpx-*.tar.bz2
rm libvpx*.tar.bz2
wget https://github.com/webmproject/libvpx/archive/$VPX_VERSION .tar.gz -O libvpx-$VPX_VERSION .tar.gz
check_sha256 " $VPX_HASH " " libvpx- $VPX_VERSION .tar.gz "
bsdtar --no-same-owner --no-same-permissions -xf libvpx-*.tar.gz
rm libvpx*.tar.gz
cd libvpx*
if [ [ " $ARCH " = = "x86_64" ] ]
@ -966,6 +977,104 @@ else
@@ -966,6 +977,104 @@ else
fi
# NSIS
NSIS_PREFIX_DIR = " $DEP_DIR /nsis "
NSIS_VERSION = "Debian Unstable"
#NSIS_HASH=
if [ ! -f " $NSIS_PREFIX_DIR /done " ]
then
rm -rf " $NSIS_PREFIX_DIR "
mkdir -p " $NSIS_PREFIX_DIR "
# We want to use NSIS 3, instead of NSIS 2, because it added Windows 8 and 10
# support, as well as unicode support. NSIS 3 is not packaged in Debian Stretch
# and building it manually appears to be quite a challenge. Luckly it's
# packaged in Debian Unstable, so we can backport it to our Debian version
# with little effort, utilizing maintainer's build script.
# Kepp the indentation of the next echo command as it is, as apt seems to
# ignore preferences starting with whitespace.
echo "
Package: *
Pin: Release a = unstable
Pin-Priority: -1
" >> /etc/apt/preferences
echo "
# Needed for NSIS 3
deb http://httpredir.debian.org/debian unstable main
deb-src http://httpredir.debian.org/debian unstable main
" >> /etc/apt/sources.list
apt-get update
# Get dependencies required for building NSIS
apt-get install -y --no-install-recommends \
build-essential \
devscripts \
docbook-xsl-ns \
docbook5-xml \
dpkg-dev \
fakeroot \
html2text \
libcppunit-dev \
mingw-w64 \
scons \
xsltproc \
zlib1g-dev
apt-get -t unstable install -y --no-install-recommends debhelper
mkdir nsis-build
cd nsis-build
apt-get -t unstable source nsis
cd nsis-*
# The build script is not parallel enough, this speeds things up greatly
sed -i "s/scons / scons -j `nproc` /" debian/rules
DEB_BUILD_OPTIONS = "parallel=`nproc` nocheck" debuild -b -uc -us
cd ..
mv nsis-common_*.deb " $NSIS_PREFIX_DIR "
mv nsis-doc_*.deb " $NSIS_PREFIX_DIR "
mv nsis_*.deb " $NSIS_PREFIX_DIR "
mv nsis-pluginapi_*.deb " $NSIS_PREFIX_DIR "
cd ..
rm -rf ./nsis-build
echo -n $NSIS_VERSION > $NSIS_PREFIX_DIR /done
else
echo " Using cached build of NSIS `cat $NSIS_PREFIX_DIR /done` "
fi
# Install NSIS
dpkg -i " $NSIS_PREFIX_DIR " /nsis-common_*.deb
dpkg -i " $NSIS_PREFIX_DIR " /nsis-doc_*.deb
dpkg -i " $NSIS_PREFIX_DIR " /nsis_*.deb
dpkg -i " $NSIS_PREFIX_DIR " /nsis-pluginapi_*.deb
# NSIS ShellExecAsUser plugin
NSISSHELLEXECASUSER_PREFIX_DIR = " $DEP_DIR /nsis_shellexecuteasuser "
NSISSHELLEXECASUSER_VERSION = " "
NSISSHELLEXECASUSER_HASH = "8fc19829e144716a422b15a85e718e1816fe561de379b2b5ae87ef9017490799"
if [ ! -f " $NSISSHELLEXECASUSER_PREFIX_DIR /done " ]
then
rm -rf " $NSISSHELLEXECASUSER_PREFIX_DIR "
mkdir -p " $NSISSHELLEXECASUSER_PREFIX_DIR "
# Backup: https://web.archive.org/web/20171008011417/http://nsis.sourceforge.net/mediawiki/images/c/c7/ShellExecAsUser.zip
wget http://nsis.sourceforge.net/mediawiki/images/c/c7/ShellExecAsUser.zip
check_sha256 " $NSISSHELLEXECASUSER_HASH " "ShellExecAsUser.zip"
unzip ShellExecAsUser.zip 'ShellExecAsUser.dll'
mkdir " $NSISSHELLEXECASUSER_PREFIX_DIR /bin "
mv ShellExecAsUser.dll " $NSISSHELLEXECASUSER_PREFIX_DIR /bin "
rm ShellExecAsUser*
echo -n $NSISSHELLEXECASUSER_VERSION > $NSISSHELLEXECASUSER_PREFIX_DIR /done
else
echo " Using cached build of NSIS ShellExecAsUser plugin `cat $NSISSHELLEXECASUSER_PREFIX_DIR /done` "
fi
# Install ShellExecAsUser plugin
cp " $NSISSHELLEXECASUSER_PREFIX_DIR /bin/ShellExecAsUser.dll " /usr/share/nsis/Plugins/x86-ansi/
# Stop here if running the second stage on Travis CI
set +u
if [ [ " $TRAVIS_CI_STAGE " = = "stage2" ] ]
@ -1102,33 +1211,31 @@ $ARCH-w64-mingw32-strip -s $QTOX_PREFIX_DIR/*.dll
@@ -1102,33 +1211,31 @@ $ARCH-w64-mingw32-strip -s $QTOX_PREFIX_DIR/*.dll
$ARCH -w64-mingw32-strip -s $QTOX_PREFIX_DIR /*/*.dll
set -e
# Create installer for releases
SHELLEXECASUSER_HASH = 8fc19829e144716a422b15a85e718e1816fe561de379b2b5ae87ef9017490799
# Create zip
cd $QTOX_PREFIX_DIR
zip qtox-" $ARCH " -" $BUILD_TYPE " .zip -r *
cd -
# Create installer
if [ [ " $BUILD_TYPE " = = "release" ] ]
then
cd windows
# we need the NSIS plugin "ShellExecAsUser" which is not included in the Debian nsis package
mkdir nsis-plugins
wget http://nsis.sourceforge.net/mediawiki/images/c/c7/ShellExecAsUser.zip
check_sha256 " $SHELLEXECASUSER_HASH " "ShellExecAsUser.zip"
NSIS_PLUGINDIR = "./nsis-plugins"
unzip "ShellExecAsUser.zip" -d " $NSIS_PLUGINDIR "
NSIS_PLUGIN_CMD = '!' " addplugindir $NSIS_PLUGINDIR "
# t he installer creation script expects all the files in qtox/*
# The installer creation script expects all the files to be in qtox/*
mkdir qtox
cp -R $QTOX_PREFIX_DIR /* ./qtox
cp -r $QTOX_PREFIX_DIR /* ./qtox
rm ./qtox/*.zip
# Select the installer script for the correct architecture
if [ [ " $ARCH " = = "i686" ] ]
then
makensis -X" $NSIS_PLUGIN_CMD " qtox.nsi
makensis qtox.nsi
elif [ [ " $ARCH " = = "x86_64" ] ]
then
makensis -X" $NSIS_PLUGIN_CMD " qtox64.nsi
makensis qtox64.nsi
fi
cp setup-qtox.exe $QTOX_PREFIX_DIR /setup-qtox-" $ARCH " .exe
cp setup-qtox.exe $QTOX_PREFIX_DIR /setup-qtox-" $ARCH " -" $BUILD_TYPE " .exe
cd ..
fi