subsurface/.github/workflows/mac.yml
Dirk Hohndel bde4537320 GitHub Actions: don't add macOS artifacts to release
We now get a working macOS DMG for each CICD release via the webhook -
and the GitHub built .app.zip only worked on the latest macOS and was
near-unusable there.

We still make it available as an artifact of that macIS GitHub action in
case there is some value, but we no longer push it into the GitHub
release artifacts.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-11-22 08:57:47 -08:00

89 lines
3.9 KiB
YAML

name: Mac
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
desktopBuild:
runs-on: macOS-latest
steps:
- name: checkout sources
uses: actions/checkout@v1
- name: setup Homebrew
run: brew install autoconf automake libtool xz hidapi libusb libxml2 libxslt libzip openssl pkg-config libgit2 libssh2
- name: set our Qt build
run: |
mkdir -p Qt/5.13.0
curl --output Qt-5.13.0-mac.tar.xz https://f002.backblazeb2.com/file/Subsurface-Travis/Qt-5.13.0-mac.tar.xz
tar -xJ -C Qt/5.13.0 -f Qt-5.13.0-mac.tar.xz
- name: build Subsurface
run: |
cd ${GITHUB_WORKSPACE}/..
export QT_ROOT=${GITHUB_WORKSPACE}/Qt/5.13.0/clang_64
export PATH=$QT_ROOT/bin:$PATH
export CMAKE_PREFIX_PATH=$QT_ROOT/lib/cmake
DIR=$(pwd)
# first build Subsurface-mobile to ensure this didn't get broken
bash -e -x ./subsurface/scripts/build.sh -mobile
# now Subsurface with WebKit
bash -e -x ./subsurface/scripts/build.sh -desktop -build-with-webkit -release
cd ${GITHUB_WORKSPACE}/build
# build export-html to make sure that didn't get broken
make export-html
- name: package Subsurface
run: |
cd ${GITHUB_WORKSPACE}/build
# next build and install Subsurface and then clean up the staging area
LIBRARY_PATH=${DIR}/install-root/lib make -j2 install
# now adjust a few references that macdeployqt appears to miss
EXECUTABLE=Subsurface.app/Contents/MacOS/Subsurface
for i in libgit2 libGrantlee_TextDocument.dylib libGrantlee_Templates.dylib; do
OLD=$(otool -L ${EXECUTABLE} | grep $i | cut -d\ -f1 | tr -d "\t")
if [[ ! -z ${OLD} && ! -f Subsurface.app/Contents/Frameworks/$(basename ${OLD}) ]] ; then
# copy the library into the bundle and make sure its id and the reference to it are correct
cp ${DIR}/install-root/lib/$(basename ${OLD}) Subsurface.app/Contents/Frameworks
SONAME=$(basename $OLD)
install_name_tool -change ${OLD} @executable_path/../Frameworks/${SONAME} ${EXECUTABLE}
install_name_tool -id @executable_path/../Frameworks/${SONAME} Subsurface.app/Contents/Frameworks/${SONAME}
fi
done
# next, replace @rpath references with @executable_path references in Subsurface
RPATH=$(otool -L ${EXECUTABLE} | grep rpath | cut -d\ -f1 | tr -d "\t" | cut -b 8- )
for i in ${RPATH}; do
install_name_tool -change @rpath/$i @executable_path/../Frameworks/$i ${EXECUTABLE}
done
# next deal with libGrantlee
LIBG=$(ls Subsurface.app/Contents/Frameworks/libGrantlee_Templates*dylib)
for i in QtScript.framework/Versions/5/QtScript QtCore.framework/Versions/5/QtCore ; do
install_name_tool -change @rpath/$i @executable_path/../Frameworks/$i ${LIBG}
done
# clean up shared library dependency in the Grantlee plugins
GRANTLEE_VERSION=$(basename Subsurface.app/Contents/PlugIns/grantlee/5.*)
for i in Subsurface.app/Contents/PlugIns/grantlee/${GRANTLEE_VERSION}/*.so; do
OLD=$(otool -L $i | grep libGrantlee_Templates | cut -d\ -f1 | tr -d "\t")
SONAME=$(basename $OLD )
install_name_tool -change ${OLD} @executable_path/../Frameworks/${SONAME} $i;
OLD=$(otool -L $i | grep QtCore | cut -d\ -f1 | tr -d "\t")
install_name_tool -change ${OLD} @executable_path/../Frameworks/QtCore.framework/QtCore $i;
pushd Subsurface.app/Contents/PlugIns/grantlee
ln -s ${GRANTLEE_VERSION}/$(basename $i) .
popd
done
- name: store artifact
uses: actions/upload-artifact@master
with:
name: Subsurface.app
path: build/Subsurface.app