From 35a96bde514a8897f6f0fcc41c5833bf63df2e2a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 18:29:01 +0200 Subject: Adding upstream version 1.0.2. Signed-off-by: Daniel Baumann --- buildtools/appveyor.sh | 124 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 buildtools/appveyor.sh (limited to 'buildtools/appveyor.sh') diff --git a/buildtools/appveyor.sh b/buildtools/appveyor.sh new file mode 100644 index 0000000..9eb270b --- /dev/null +++ b/buildtools/appveyor.sh @@ -0,0 +1,124 @@ +#!/usr/bin/env bash + +### functions +message() { echo -e "\e[1;32m\n${1}\n\e[0m"; } +warning() { echo -e "\e[1;33m\nWarning: ${1}\n\e[0m"; } +error() { echo -e "\e[1;31m\nError: ${1}\n\e[0m"; exit 1; } + + + +### setup + +# reduce time required to install packages by disabling pacman's disk space checking +sed -i 's/^CheckSpace/#CheckSpace/g' /etc/pacman.conf + +# if repo.msys2.org is unreachable, sort mirror lists by response time and use one of the remaining mirrors +wget --no-verbose --tries=1 --timeout=10 repo.msys2.org 2> /dev/nul || { + warning "repo.msys2.org is unreachable; using a fall-back mirror" + for repo in msys ${MSYSTEM_PREFIX#/*}; do + grep -v .cn /etc/pacman.d/mirrorlist.$repo > /etc/pacman.d/mirrorlist.$repo.bak + rankmirrors --repo $repo /etc/pacman.d/mirrorlist.$repo.bak > /etc/pacman.d/mirrorlist.$repo + done +} + +# remove Ada and ObjC compilers (they cause update conflicts, see https://github.com/msys2/MINGW-packages/issues/5434) +pacman -R $MINGW_PACKAGE_PREFIX-gcc-{ada,objc} --noconfirm + +# update MSYS2-packages and MINGW-packages (but only for current architecture) +pacman -Quq | grep -v mingw-w64- | xargs pacman -S $PACMAN_OPTIONS +pacman -Quq | grep ${MINGW_PACKAGE_PREFIX} | xargs pacman -S $PACMAN_OPTIONS + +# do everything in /build +cd "$(cygpath ${APPVEYOR_BUILD_FOLDER})" +mkdir build +cd build + +# write custom fonts.conf to speed up fc-cache and use/download fonts required for tests +export FONTCONFIG_FILE=$(cygpath -a fonts.conf) +cat > "$FONTCONFIG_FILE" < + +$(cygpath -aw fonts) +EOF + +mkdir fonts +wget -nv https://github.com/dejavu-fonts/dejavu-fonts/releases/download/version_2_37/dejavu-fonts-ttf-2.37.tar.bz2 \ + && tar -xf dejavu-fonts-ttf-2.37.tar.bz2 --directory=fonts + +# install dependencies +message "--- Installing dependencies" +source ../buildtools/msys2installdeps.sh +pacman -S $MINGW_PACKAGE_PREFIX-{ccache,gtest,ntldd-git,ghostscript} $PACMAN_OPTIONS + +export CCACHE_DIR=$(cygpath -a ccache) +ccache --max-size=500M +ccache --set-config=sloppiness=include_file_ctime,include_file_mtime + + +### build / test + +message "\n\n##### STARTING BUILD #####" + +# configure +message "--- Configuring the build" +cmake .. -G Ninja \ + -DCMAKE_C_COMPILER_LAUNCHER="ccache" \ + -DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \ + -DCMAKE_INSTALL_MESSAGE="NEVER" \ + || error "cmake failed" + +# build +message "--- Compiling Inkscape" +ccache --zero-stats +ninja || error "compilation failed" +ccache --show-stats +appveyor SetVariable -Name APPVEYOR_SAVE_CACHE_ON_ERROR -Value true # build succeeded so it's safe to save the cache + +# install +message "--- Installing the project" +ninja install || error "installation failed" +python ../buildtools/msys2checkdeps.py check inkscape -w inkscape/bin || error "missing libraries in installed project" + +# test +message "--- Running tests" +# check if the installed executable works +inkscape/bin/inkscape.exe -V || error "installed executable won't run" +PATH= inkscape/bin/inkscape.exe -V >/dev/null || error "installed executable won't run with empty PATH (missing dependencies?)" +err=$(PATH= inkscape/bin/inkscape.exe -V 2>&1 >/dev/null) +if [ -n "$err" ]; then warning "installed executable produces output on stderr:"; echo "$err"; fi +# check if the uninstalled executable works +INKSCAPE_DATADIR=inkscape_datadir bin/inkscape.exe -V >/dev/null || error "uninstalled executable won't run" +err=$(INKSCAPE_DATADIR=inkscape_datadir bin/inkscape.exe -V 2>&1 >/dev/null) +if [ -n "$err" ]; then warning "uninstalled executable produces output on stderr:"; echo "$err"; fi +# run tests +ninja check || { + 7z a testfiles.7z testfiles + appveyor PushArtifact testfiles.7z + error "tests failed" +} + +message "##### BUILD SUCCESSFUL #####\n\n" + + +### package +if [ "$APPVEYOR_REPO_TAG" = "true" ] +then + ninja dist-win-all +else + ninja dist-win-7z-fast +fi + +# create redirect to the 7z archive we just created (and are about to upload as an artifact) +FILENAME=$(ls inkscape*.7z) +URL=https://ci.appveyor.com/api/buildjobs/$APPVEYOR_JOB_ID/artifacts/build%2F$FILENAME +BRANCH=$APPVEYOR_REPO_BRANCH +HTMLNAME=latest_${BRANCH}_x${MSYSTEM#MINGW}.html +sed -e "s#\${FILENAME}#${FILENAME}#" -e "s#\${URL}#${URL}#" -e "s#\${BRANCH}#${BRANCH}#" ../buildtools/appveyor_redirect_template.html > $HTMLNAME +# upload redirect to http://alpha.inkscape.org/snapshots/ +if [ "${APPVEYOR_REPO_NAME}" == "inkscape/inkscape" ] && [ -n "${SSH_KEY}" ]; then + if [ "$BRANCH" == "1.0.x" ]; then + echo -e "-----BEGIN RSA PRIVATE KEY-----\n${SSH_KEY}\n-----END RSA PRIVATE KEY-----" > ssh_key + scp -oStrictHostKeyChecking=no -i ssh_key $HTMLNAME appveyor-ci@alpha.inkscape.org:/var/www/alpha.inkscape.org/public_html/snapshots/ + rm -f ssh_key + fi +fi -- cgit v1.2.3