From 7803a7e0d602aa9d9ffeaddb071cf210ccc72764 Mon Sep 17 00:00:00 2001 From: Maxim Biro Date: Sun, 4 Oct 2020 09:38:25 -0400 Subject: [PATCH] refactor(windows): Snorenotify build script Fixing 7409e6b4cc584f1d1737e180b4066be371303801. --- windows/cross-compile/build.sh | 75 ++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 26 deletions(-) diff --git a/windows/cross-compile/build.sh b/windows/cross-compile/build.sh index 9f09680f7..ed64c60a0 100644 --- a/windows/cross-compile/build.sh +++ b/windows/cross-compile/build.sh @@ -130,10 +130,12 @@ apt-get update apt-get install -y --no-install-recommends \ autoconf \ automake \ - build-essential \ bsdtar \ + build-essential \ ca-certificates \ cmake \ + curl \ + extra-cmake-modules \ git \ libtool \ nsis \ @@ -142,10 +144,8 @@ apt-get install -y --no-install-recommends \ tclsh \ texinfo \ unzip \ - curl \ yasm \ - zip \ - extra-cmake-modules + zip if [[ "$ARCH" == "i686" ]] then @@ -664,6 +664,7 @@ else echo "Using cached build of Exif `cat $EXIF_PREFIX_DIR/done`" fi + # Snorenotify SNORE_PREFIX_DIR="$DEP_DIR/snorenotify" @@ -680,45 +681,46 @@ then bsdtar --no-same-owner --no-same-permissions -xf $SNORE_FILENAME rm $SNORE_FILENAME cd snorenotify* + mkdir _build && cd _build - PKG_CONFIG_PATH="" - PKG_CONFIG_LIBDIR="" - CMAKE_FIND_ROOT_PATH="" - for PREFIX_DIR in $DEP_DIR/*; do - if [ -d $PREFIX_DIR/lib/pkgconfig ] - then - export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$PREFIX_DIR/lib/pkgconfig" - export PKG_CONFIG_LIBDIR="$PKG_CONFIG_LIBDIR:$PREFIX_DIR/lib/pkgconfig" - fi - CMAKE_FIND_ROOT_PATH="$CMAKE_FIND_ROOT_PATH $PREFIX_DIR" - done + export PKG_CONFIG_PATH="$QT_PREFIX_DIR/lib/pkgconfig" + export PKG_CONFIG_LIBDIR="/usr/$ARCH-w64-mingw32" -echo " - SET(CMAKE_SYSTEM_NAME Windows) - SET(CMAKE_C_COMPILER $ARCH-w64-mingw32-gcc) - SET(CMAKE_CXX_COMPILER $ARCH-w64-mingw32-g++) - SET(CMAKE_RC_COMPILER $ARCH-w64-mingw32-windres) - SET(CMAKE_FIND_ROOT_PATH /usr/$ARCH-w64-mingw32 $CMAKE_FIND_ROOT_PATH) -" > toolchain.cmake + echo " + SET(CMAKE_SYSTEM_NAME Windows) - cmake -DCMAKE_TOOLCHAIN_FILE=./toolchain.cmake \ + SET(CMAKE_C_COMPILER $ARCH-w64-mingw32-gcc) + SET(CMAKE_CXX_COMPILER $ARCH-w64-mingw32-g++) + SET(CMAKE_RC_COMPILER $ARCH-w64-mingw32-windres) + + SET(CMAKE_FIND_ROOT_PATH /usr/$ARCH-w64-mingw32 $QT_PREFIX_DIR) + " > toolchain.cmake + + cmake -DCMAKE_INSTALL_PREFIX="$SNORE_PREFIX_DIR" \ -DCMAKE_BUILD_TYPE=Relase \ - -DCMAKE_INSTALL_PREFIX="$SNORE_PREFIX_DIR" \ -DBUILD_daemon=OFF \ -DBUILD_settings=OFF \ -DBUILD_snoresend=OFF \ + -DCMAKE_TOOLCHAIN_FILE=./toolchain.cmake \ .. + make make install - cd .. echo -n $SNORE_VERSION > $SNORE_PREFIX_DIR/done + + unset PKG_CONFIG_PATH + unset PKG_CONFIG_LIBDIR + + cd .. + cd .. rm -rf ./snorenotify* else echo "Using cached build of snorenotify `cat $SNORE_PREFIX_DIR/done`" fi + # Opus OPUS_PREFIX_DIR="$DEP_DIR/libopus" @@ -1285,6 +1287,7 @@ cp -r $QT_PREFIX_DIR/plugins/imageformats \ $QT_PREFIX_DIR/plugins/iconengines \ $QTOX_PREFIX_DIR cp {$OPENSSL_PREFIX_DIR,$SQLCIPHER_PREFIX_DIR,$FFMPEG_PREFIX_DIR,$OPENAL_PREFIX_DIR,$QRENCODE_PREFIX_DIR,$EXIF_PREFIX_DIR,$OPUS_PREFIX_DIR,$SODIUM_PREFIX_DIR,$VPX_PREFIX_DIR,$TOXCORE_PREFIX_DIR}/bin/*.dll $QTOX_PREFIX_DIR + cp "$SNORE_PREFIX_DIR/bin/libsnore-qt5.dll" $QTOX_PREFIX_DIR mkdir -p "$QTOX_PREFIX_DIR/libsnore-qt5" cp "$SNORE_PREFIX_DIR/lib/plugins/libsnore-qt5/libsnore_backend_windowstoast.dll" "$QTOX_PREFIX_DIR/libsnore-qt5" @@ -1304,7 +1307,7 @@ then fi winecfg -# dll checks +# qtox.exe dll checks (32-bit on i686, 64-bit on x86_64) python3 $MINGW_LDD_PREFIX_DIR/bin/mingw-ldd.py $QTOX_PREFIX_DIR/qtox.exe --dll-lookup-dirs $QTOX_PREFIX_DIR ~/.wine/drive_c/windows/system32 > /tmp/$ARCH-qtox-ldd find "$QTOX_PREFIX_DIR" -name '*.dll' > /tmp/$ARCH-qtox-dll-find # dlls loded at run time that don't showup as a link time dependency @@ -1346,6 +1349,26 @@ do done < /tmp/$ARCH-qtox-dll-find +# SnoreToast.exe dll checks (always 32-bit) +if [[ "$ARCH" == "i686" ]] +then + SNORETOAST_WINE_DLLS=/root/.wine/drive_c/windows/system32 +elif [[ "$ARCH" == "x86_64" ]] +then + SNORETOAST_WINE_DLLS=/root/.wine/drive_c/windows/syswow64 +fi + +python3 $MINGW_LDD_PREFIX_DIR/bin/mingw-ldd.py $QTOX_PREFIX_DIR/SnoreToast.exe --dll-lookup-dirs $SNORETOAST_WINE_DLLS > /tmp/$ARCH-SnoreToast-ldd + +# Check that all dlls are in place +if grep 'not found' /tmp/$ARCH-SnoreToast-ldd +then + cat /tmp/$ARCH-SnoreToast-ldd + echo "Error: Missing some dlls." + exit 1 +fi + + # Run tests (only on Travis) set +u if [[ -n "$TRAVIS_CI_STAGE" ]]