From 2743f64ef8f06edf2133111e369259fbaab4c337 Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Wed, 13 Jun 2018 11:44:27 +0200 Subject: [PATCH] Add basic kiwix-desktop build on AppVeyor. This is somehow a side build system base on cmd scripts. We should merge it in kiwix-build but... no time for now :/ --- appveyor.yml | 55 +++++++++++++++++++++++ appveyor/build_xapian.sh | 16 +++++++ appveyor/deploy.sh | 12 +++++ appveyor/install_dirent.cmd | 3 ++ appveyor/install_git_ninja_pkgconfig.cmd | 14 ++++++ appveyor/install_icu.cmd | 7 +++ appveyor/install_kiwix-desktop.cmd | 14 ++++++ appveyor/install_kiwix-lib.cmd | 10 +++++ appveyor/install_libzim.cmd | 10 +++++ appveyor/install_lzma.cmd | 6 +++ appveyor/install_pthread.cmd | 14 ++++++ appveyor/install_pugixml.cmd | 10 +++++ appveyor/install_xapian.cmd | 9 ++++ appveyor/install_zlib.cmd | 10 +++++ appveyor/nightlybot_id_key.enc | Bin 0 -> 3264 bytes appveyor/package_kiwix-desktop.sh | 17 +++++++ 16 files changed, 207 insertions(+) create mode 100644 appveyor.yml create mode 100644 appveyor/build_xapian.sh create mode 100755 appveyor/deploy.sh create mode 100644 appveyor/install_dirent.cmd create mode 100644 appveyor/install_git_ninja_pkgconfig.cmd create mode 100644 appveyor/install_icu.cmd create mode 100644 appveyor/install_kiwix-desktop.cmd create mode 100644 appveyor/install_kiwix-lib.cmd create mode 100644 appveyor/install_libzim.cmd create mode 100644 appveyor/install_lzma.cmd create mode 100644 appveyor/install_pthread.cmd create mode 100644 appveyor/install_pugixml.cmd create mode 100644 appveyor/install_xapian.cmd create mode 100644 appveyor/install_zlib.cmd create mode 100644 appveyor/nightlybot_id_key.enc create mode 100644 appveyor/package_kiwix-desktop.sh diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..60f41d8 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,55 @@ +image: Visual Studio 2017 +version: '0.1.{build}' +environment: + EXTRA_DIR: 'C:\extra' + MINGW64_EXTRA_DIR: '/c/extra' + PATH: '%PATH%;%EXTRA_DIR%\bin;C:\\Python36\\Scripts' + PKG_CONFIG_PATH: '%EXTRA_DIR%\lib\pkgconfig' + MSYS2_PATH_TYPE: 'inherit' + MSYS2_ARG_CONV_EXCL: '-Tp' + MINGW64_RUN: 'C:\msys64\usr\bin\bash.exe --login -c' + MSYSTEM: 'MINGW64' + +init: + - cmd: | + echo %TEST_VAR% + REM Set VC 2017 + "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" + mkdir C:\extra\bin + +install: + - cmd: | + cd C:\projects + REM Install meson + C:\Python36\Scripts\pip install meson + + REM Install ninja + curl -o ninja-win.zip -L https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-win.zip + 7z e ninja-win.zip -o%EXTRA_DIR%\bin + + REM Install pkg-config-lite + curl -o pkg-config-lite-0.28-1.zip https://netix.dl.sourceforge.net/project/pkgconfiglite/0.28-1/pkg-config-lite-0.28-1_bin-win32.zip + 7z e pkg-config-lite-0.28-1.zip -o%EXTRA_DIR%\bin pkg-config-lite-0.28-1/bin/pkg-config.exe + cd kiwix-build + + REM Install openssh (scp) for deployement + choco install openssh openssl.light + +build_script: + - appveyor\install_zlib.cmd + - appveyor\install_lzma.cmd + - appveyor\install_pthread.cmd + - appveyor\install_dirent.cmd + - appveyor\install_xapian.cmd + - appveyor\install_icu.cmd + - appveyor\install_libzim.cmd + - appveyor\install_pugixml.cmd + - appveyor\install_kiwix-lib.cmd + - appveyor\install_kiwix-desktop.cmd + +before_deploy: + - cmd: '%MINGW64_RUN% "cd /c/projects/kiwix-build && appveyor/package_kiwix-desktop.sh"' + - cmd: openssl enc -d -aes-256-cbc -md sha256 -pass pass:%ENC_PASSWD% -in appveyor\nightlybot_id_key.enc -out appveyor\nightlybot_id_key + +deploy_script: + - cmd: '%MINGW64_RUN% "cd /c/projects/kiwix-build && appveyor/deploy.sh"' diff --git a/appveyor/build_xapian.sh b/appveyor/build_xapian.sh new file mode 100644 index 0000000..9d4ad57 --- /dev/null +++ b/appveyor/build_xapian.sh @@ -0,0 +1,16 @@ + +XAPIAN_SOURCE=$(pwd)/.. + +$XAPIAN_SOURCE/configure \ + CC="cl -nologo" \ + CXX="$XAPIAN_SOURCE/compile cl -nologo" \ + CXXFLAGS="-EHsc -MD" AR=lib \ + CPPFLAGS="-I${MINGW64_EXTRA_DIR}/include" \ + LDFLAGS="-L${MINGW64_EXTRA_DIR}/lib" \ + --disable-backend-remote \ + --disable-documentation \ + --prefix=${MINGW64_EXTRA_DIR} + +make -j2 + +make install diff --git a/appveyor/deploy.sh b/appveyor/deploy.sh new file mode 100755 index 0000000..c65beef --- /dev/null +++ b/appveyor/deploy.sh @@ -0,0 +1,12 @@ +set -e + +NIGHTLY_DATE=$(date +%Y-%m-%d) +NIGHTLY_KIWIX_ARCHIVES_DIR=/c/projects/NIGHTLY_KIWIX_ARCHIVES/${NIGHTLY_DATE} +SSH_KEY=C:\\projects\\kiwix-build\\appveyor\\nightlybot_id_key + +#if [[ "$APPVEYOR_SCHEDULED_BUILD" = "True" ]] +#then + scp -vrp -i ${SSH_KEY} -o StrictHostKeyChecking=no \ + ${NIGHTLY_KIWIX_ARCHIVES_DIR} \ + nightlybot@download.kiwix.org:/var/www/download.kiwix.org/nightly +#fi diff --git a/appveyor/install_dirent.cmd b/appveyor/install_dirent.cmd new file mode 100644 index 0000000..ed5b17e --- /dev/null +++ b/appveyor/install_dirent.cmd @@ -0,0 +1,3 @@ +REM ======================================================== +REM Install dirent.h +curl -fsSL -o%EXTRA_DIR%\include\dirent.h https://raw.githubusercontent.com/tronkko/dirent/master/include/dirent.h || exit /b 1 diff --git a/appveyor/install_git_ninja_pkgconfig.cmd b/appveyor/install_git_ninja_pkgconfig.cmd new file mode 100644 index 0000000..65e21db --- /dev/null +++ b/appveyor/install_git_ninja_pkgconfig.cmd @@ -0,0 +1,14 @@ +REM Set VC 2017 +"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" +mkdir C:\extra\bin +cd C:\projects +C:\Python36\Scripts\pip install meson || exit /b 1 + +REM Set ninja +curl -fsSL -o ninja-win.zip https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-win.zip || exit /b 1 +7z e ninja-win.zip -o%EXTRA_DIR%\bin || exit /b 1 + +REM Set pkg-config-lit +curl -fsSL -o pkg-config-lite-0.28-1.zip https://netix.dl.sourceforge.net/project/pkgconfiglite/0.28-1/pkg-config-lite-0.28-1_bin-win32.zip || exit /b 1 +7z e pkg-config-lite-0.28-1.zip -o%EXTRA_DIR%\bin pkg-config-lite-0.28-1/bin/pkg-config.exe || exit /b 1 +cd kiwix-build diff --git a/appveyor/install_icu.cmd b/appveyor/install_icu.cmd new file mode 100644 index 0000000..736d1f6 --- /dev/null +++ b/appveyor/install_icu.cmd @@ -0,0 +1,7 @@ +REM ======================================================== +REM Install icu +curl -SL -O http://public.kymeria.fr/KIWIX/windows/icu4c-62_1-Win64-MSVC2017.zip || exit /b 1 +7z x icu4c-62_1-Win64-MSVC2017.zip -o%EXTRA_DIR% -r include || exit /b 1 +7z e icu4c-62_1-Win64-MSVC2017.zip -o%EXTRA_DIR%\lib lib64\* || exit /b 1 +7z e icu4c-62_1-Win64-MSVC2017.zip -o%EXTRA_DIR%\bin bin\*.dll || exit /b 1 +curl -fsSL -o%PKG_CONFIG_PATH%\icu-i18n.pc http://public.kymeria.fr/KIWIX/windows/icu-i18n.pc || exit /b 1 diff --git a/appveyor/install_kiwix-desktop.cmd b/appveyor/install_kiwix-desktop.cmd new file mode 100644 index 0000000..42f5c11 --- /dev/null +++ b/appveyor/install_kiwix-desktop.cmd @@ -0,0 +1,14 @@ +REM ======================================================== +REM Install kiwix-desktop +git clone https://github.com/kiwix/kiwix-desktop || exit /b 1 +cd kiwix-desktop +git checkout windows +echo "Getting fix_desktop" +curl -fsSL -O http://public.kymeria.fr/KIWIX/windows/fix_desktop_makefile.py_ || exit /b 1 +echo "Running qmake" +C:\Qt\5.11\msvc2017_64\bin\qmake.exe || exit /b 1 +echo "Running fix_desktop" +C:\Python36\Python fix_desktop_makefile.py_ Makefile.Release || exit /b 1 +echo "Running nmake" +nmake || exit /b 1 +cd .. diff --git a/appveyor/install_kiwix-lib.cmd b/appveyor/install_kiwix-lib.cmd new file mode 100644 index 0000000..541e992 --- /dev/null +++ b/appveyor/install_kiwix-lib.cmd @@ -0,0 +1,10 @@ +REM ======================================================== +REM Install kiwix-lib +git clone https://github.com/kiwix/kiwix-lib.git || exit /b 1 +cd kiwix-lib +git checkout windows || exit /b 1 +meson.py . build --prefix %EXTRA_DIR% --default-library static --buildtype release || exit /b 1 +cd build +ninja || exit /b 1 +ninja install || exit /b 1 +cd ..\.. diff --git a/appveyor/install_libzim.cmd b/appveyor/install_libzim.cmd new file mode 100644 index 0000000..4492b9a --- /dev/null +++ b/appveyor/install_libzim.cmd @@ -0,0 +1,10 @@ +REM ======================================================== +REM Install libzim +git clone https://github.com/openzim/libzim.git || exit /b 1 +cd libzim +git checkout windows || exit /b 1 +meson.py . build --prefix %EXTRA_DIR% --default-library static --buildtype release || exit /b 1 +cd build +ninja || exit /b 1 +ninja install || exit /b 1 +cd ..\.. diff --git a/appveyor/install_lzma.cmd b/appveyor/install_lzma.cmd new file mode 100644 index 0000000..48f4d0a --- /dev/null +++ b/appveyor/install_lzma.cmd @@ -0,0 +1,6 @@ +REM ======================================================== +REM Install lzma +curl -fsSL -O https://tukaani.org/xz/xz-5.2.4-windows.zip || exit /b 1 +7z x xz-5.2.4-windows.zip -o%EXTRA_DIR% -r include || exit /b 1 +7z e xz-5.2.4-windows.zip -o%EXTRA_DIR%\lib bin_x86-64\liblzma.a || exit /b 1 +curl -fsSL -o%PKG_CONFIG_PATH%\liblzma.pc http://public.kymeria.fr/KIWIX/windows/liblzma.pc || exit /b 1 diff --git a/appveyor/install_pthread.cmd b/appveyor/install_pthread.cmd new file mode 100644 index 0000000..d17e5a5 --- /dev/null +++ b/appveyor/install_pthread.cmd @@ -0,0 +1,14 @@ +REM ======================================================== +REM Install pthread +curl -fsSL -O ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip || exit /b 1 +7z x pthreads-w32-2-9-1-release.zip -r pthreads.2 || exit /b 1 +cd pthreads.2 +REM Patch is pthread_timespec.patch +curl -fsSL -O http://public.kymeria.fr/KIWIX/windows/pthread.h || exit /b 1 +nmake clean VC-inlined || exit /b 1 +copy pthread.h %EXTRA_DIR%\include +copy sched.h %EXTRA_DIR%\include +copy pthreadVC2.lib %EXTRA_DIR%\lib +copy pthreadVC2.dll %EXTRA_DIR%\bin +curl -fsSL -o%PKG_CONFIG_PATH%\libpthreadVC2.pc http://public.kymeria.fr/KIWIX/windows/libpthreadVC2.pc || exit /b 1 +cd .. diff --git a/appveyor/install_pugixml.cmd b/appveyor/install_pugixml.cmd new file mode 100644 index 0000000..8b38374 --- /dev/null +++ b/appveyor/install_pugixml.cmd @@ -0,0 +1,10 @@ +REM ======================================================== +REM Install pugixml +curl -fsSL -O http://public.kymeria.fr/KIWIX/windows/pugixml-1.2-meson.zip || exit /b 1 +7z x pugixml-1.2-meson.zip -o. || exit /b 1 +cd pugixml-1.2-meson +meson.py . build --prefix %EXTRA_DIR% --default-library static --buildtype release || exit /b 1 +cd build +ninja || exit /b 1 +ninja install || exit /b 1 +cd ..\.. diff --git a/appveyor/install_xapian.cmd b/appveyor/install_xapian.cmd new file mode 100644 index 0000000..d21e520 --- /dev/null +++ b/appveyor/install_xapian.cmd @@ -0,0 +1,9 @@ +REM ======================================================== +REM Install xapian +curl -fsSL -O http://public.kymeria.fr/KIWIX/windows/xapian-core-1.5.0.zip || exit /b 1 +7z x xapian-core-1.5.0.zip || exit /b 1 +cd xapian-core-1.5.0 +mkdir build +cd build +%MINGW64_RUN% "cd /c/Projects/kiwix-build/xapian-core-1.5.0/build && /c/Projects/kiwix-build/appveyor/build_xapian.sh" > build_xapian.log || exit /b 1 +cd ..\.. diff --git a/appveyor/install_zlib.cmd b/appveyor/install_zlib.cmd new file mode 100644 index 0000000..31ab3ed --- /dev/null +++ b/appveyor/install_zlib.cmd @@ -0,0 +1,10 @@ +REM ======================================================== +REM Install zlib +curl -fsSL -O http://public.kymeria.fr/KIWIX/windows/zlib-1.2.11.meson.zip || exit /b 1 +7z x zlib-1.2.11.meson.zip || exit /b 1 +cd zlib-1.2.11 +meson.py . build --prefix %EXTRA_DIR% --default-library static --buildtype release || exit /b 1 +cd build +ninja || exit /b 1 +ninja install || exit /b 1 +cd ..\.. diff --git a/appveyor/nightlybot_id_key.enc b/appveyor/nightlybot_id_key.enc new file mode 100644 index 0000000000000000000000000000000000000000..ad85d7bd0dae34bcdf1d251c7e66fe43d95ce5f9 GIT binary patch literal 3264 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 literal 0 HcmV?d00001 diff --git a/appveyor/package_kiwix-desktop.sh b/appveyor/package_kiwix-desktop.sh new file mode 100644 index 0000000..b800f25 --- /dev/null +++ b/appveyor/package_kiwix-desktop.sh @@ -0,0 +1,17 @@ + +set -e + +NIGHTLY_DATE=$(date +%Y-%m-%d) +NIGHTLY_KIWIX_ARCHIVES_DIR=/c/projects/NIGHTLY_KIWIX_ARCHIVES/${NIGHTLY_DATE} +KIWIX_ARCH_NAME=kiwix-desktop_$NIGHTLY_DATE.zip +KIWIX_DIR=kiwix-desktop_$NIGHTLY_DATE + +mkdir $KIWIX_DIR +mkdir -p NIGHTLY_KIWIX_ARCHIVES_DIR + +cp /c/projects/kiwix-build/kiwix-desktop/Release/kiwix-desktop.exe $KIWIX_DIR +/c/Qt/5.11.0/msvc2017_64/bin/windeployqt --compiler-runtime $KIWIX_DIR + +cp $MINGW64_EXTRA_DIR/bin/*.dll $KIWIX_DIR + +7z a -tzip $NIGHTLY_KIWIX_ARCHIVES_DIR/$KIWIX_ARCH_NAME $KIWIX_DIR