mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-02 23:20:20 +00:00
Merge branch 'CICD-updates'
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
commit
57b355b314
7 changed files with 242 additions and 110 deletions
50
.github/workflows/android.yml
vendored
50
.github/workflows/android.yml
vendored
|
@ -17,14 +17,19 @@ jobs:
|
||||||
- name: checkout sources
|
- name: checkout sources
|
||||||
uses: actions/checkout@v1
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
- name: create release name
|
- name: atomically create or retrieve the build number
|
||||||
id: tag
|
id: build_nr
|
||||||
run: |
|
run: |
|
||||||
export tag=""
|
cd .. # check out parallel to subsurface sources
|
||||||
export is_latest=false
|
url="https://subsurface:${{ secrets.NIGHTLY_BUILDS }}@github.com/subsurface/nightly-builds"
|
||||||
if [ "${{ github.ref_type }}" = "tag" ] ; then tag="${{ github.ref_name }}" ; else tag="latest"; is_latest=true ; fi
|
# the clone followed by the pointless push should verify that the password is stored in the config
|
||||||
echo "tag=${tag}" >> $GITHUB_OUTPUT
|
# that way the script doesn't need the password
|
||||||
echo "is_latest=${is_latest}" >> $GITHUB_OUTPUT
|
git clone -b main https://github.com/subsurface/nightly-builds
|
||||||
|
cd nightly-builds
|
||||||
|
git remote set-url origin "$url"
|
||||||
|
git push origin main
|
||||||
|
cd ..
|
||||||
|
bash -x subsurface/scripts/get-or-create-build-nr.sh ${{ github.sha }}
|
||||||
|
|
||||||
- name: run build
|
- name: run build
|
||||||
id: build
|
id: build
|
||||||
|
@ -51,14 +56,37 @@ jobs:
|
||||||
git config --global --add safe.directory ${SUBSURFACE_REPO_PATH}/libdivecomputer
|
git config --global --add safe.directory ${SUBSURFACE_REPO_PATH}/libdivecomputer
|
||||||
bash -x ./subsurface/packaging/android/qmake-build.sh
|
bash -x ./subsurface/packaging/android/qmake-build.sh
|
||||||
|
|
||||||
|
- name: create version number
|
||||||
|
id: version_number
|
||||||
|
run: |
|
||||||
|
latest=$(cat ../nightly-builds/latest-subsurface-buildnumber)
|
||||||
|
today=$(date '+%Y-%m-%d')
|
||||||
|
version="$today.$latest"
|
||||||
|
echo "version=$version" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
# only publish a 'release' on push events (those include merging a PR)
|
# only publish a 'release' on push events (those include merging a PR)
|
||||||
- name: upload binaries
|
- name: upload binaries
|
||||||
if: github.event_name == 'push'
|
if: github.event_name == 'push'
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ steps.tag.outputs.tag }}
|
tag_name: v${{ steps.version_number.outputs.version }}
|
||||||
prerelease: ${{ steps.tag.outputs.is_latest }}
|
repository: subsurface/nightly-builds
|
||||||
body: CICD release artifact
|
token: ${{ secrets.NIGHTLY_BUILDS }}
|
||||||
fail_on_unmatched_files: false
|
prerelease: false
|
||||||
|
fail_on_unmatched_files: true
|
||||||
files: |
|
files: |
|
||||||
Subsurface-mobile*.apk
|
Subsurface-mobile*.apk
|
||||||
|
body: |
|
||||||
|
CICD release artifact
|
||||||
|
|
||||||
|
These builds are created on every merge or push into the [Subsurface repo](http://github.com/subsurface/subsurface).
|
||||||
|
This build is based on http://github.com/subsurface/subsurface/commit/${{ github.sha }}
|
||||||
|
|
||||||
|
None of these artifacts are signed.
|
||||||
|
The Android APK can be side-loaded on most Android devices. If you had a previous Subsurface-mobile version installed from the Google Play store, you'll have to uninstall that first.
|
||||||
|
The Windows installer will ask you to confirm installation of an app from an unknown developer.
|
||||||
|
The macOS DMG makes it even harder with a multi-step dance that requires opening the Privacy & Security settings in the System Preferences and explicitly confirming that you are willing to install this app.
|
||||||
|
|
||||||
|
You can find similar Subsurface-Daily builds for [Ubuntu](https://ppa.launchpadcontent.net/subsurface) and Subsurface-test for [Fedora](https://copr.fedorainfracloud.org/coprs/dirkhh/Subsurface-test).
|
||||||
|
|
||||||
|
Please report any issues with these builds in the [Subsurface user forum](https://groups.google.com/g/subsurface-divelog).
|
||||||
|
|
107
.github/workflows/mac.yml
vendored
107
.github/workflows/mac.yml
vendored
|
@ -9,68 +9,81 @@ on:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
buildMac:
|
buildMac:
|
||||||
runs-on: macOS-latest
|
runs-on: macOS-11
|
||||||
steps:
|
steps:
|
||||||
- name: checkout sources
|
- name: checkout sources
|
||||||
uses: actions/checkout@v1
|
uses: actions/checkout@v1
|
||||||
|
- name: atomically create or retrieve the build number
|
||||||
|
id: build_nr
|
||||||
|
run: |
|
||||||
|
cd .. # check out parallel to subsurface sources
|
||||||
|
url="https://subsurface:${{ secrets.NIGHTLY_BUILDS }}@github.com/subsurface/nightly-builds"
|
||||||
|
# the clone followed by the pointless push should verify that the password is stored in the config
|
||||||
|
# that way the script doesn't need the password
|
||||||
|
git clone -b main https://github.com/subsurface/nightly-builds
|
||||||
|
cd nightly-builds
|
||||||
|
git remote set-url origin "$url"
|
||||||
|
git push origin main
|
||||||
|
cd ..
|
||||||
|
bash -x subsurface/scripts/get-or-create-build-nr.sh ${{ github.sha }}
|
||||||
|
|
||||||
- name: setup Homebrew
|
- name: setup Homebrew
|
||||||
run: brew install autoconf automake libtool xz hidapi libusb libxml2 libxslt libzip openssl pkg-config libgit2 libssh2 libjpg libpng libmtp
|
run: brew install hidapi libxslt libjpg libmtp create-dmg confuse
|
||||||
- name: set our Qt build
|
- name: set our Qt build
|
||||||
run: |
|
run: |
|
||||||
mkdir -p Qt/5.13.0
|
curl --output ssrf-Qt-5.15.2-mac.tar.xz https://f002.backblazeb2.com/file/Subsurface-Travis/ssrf-Qt5.15.2.tar.xz
|
||||||
curl --output Qt-5.13.0-mac.tar.xz https://f002.backblazeb2.com/file/Subsurface-Travis/Qt-5.13.0-mac.tar.xz
|
tar -xJf ssrf-Qt-5.15.2-mac.tar.xz
|
||||||
tar -xJ -C Qt/5.13.0 -f Qt-5.13.0-mac.tar.xz
|
|
||||||
- name: build Subsurface-mobile
|
|
||||||
env:
|
|
||||||
SUBSURFACE_REPO_PATH: ${{ github.workspace }}
|
|
||||||
run: |
|
|
||||||
cd ${GITHUB_WORKSPACE}/..
|
|
||||||
export QT_ROOT=${GITHUB_WORKSPACE}/Qt/5.13.0/clang_64
|
|
||||||
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
|
|
||||||
export PATH=$QT_ROOT/bin:$PATH
|
|
||||||
export CMAKE_PREFIX_PATH=$QT_ROOT/lib/cmake
|
|
||||||
DIR=$(pwd)
|
|
||||||
git config --global user.email "ci@subsurface-divelog.org"
|
|
||||||
git config --global user.name "Subsurface CI"
|
|
||||||
git config --global --add safe.directory ${SUBSURFACE_REPO_PATH}
|
|
||||||
git config --global --add safe.directory ${SUBSURFACE_REPO_PATH}/libdivecomputer
|
|
||||||
# first build Subsurface-mobile to ensure this didn't get broken
|
|
||||||
bash -e -x ./subsurface/scripts/build.sh -mobile
|
|
||||||
|
|
||||||
- name: test mobile build
|
|
||||||
run: |
|
|
||||||
echo "------------------------------------"
|
|
||||||
echo "run tests for mobile build"
|
|
||||||
export QT_ROOT=${GITHUB_WORKSPACE}/Qt/5.13.0/clang_64
|
|
||||||
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
|
|
||||||
cd ${GITHUB_WORKSPACE}/build-mobile/tests
|
|
||||||
# ./TestGitStorage -v2
|
|
||||||
make check
|
|
||||||
|
|
||||||
- name: build Subsurface
|
- name: build Subsurface
|
||||||
|
id: build
|
||||||
run: |
|
run: |
|
||||||
cd ${GITHUB_WORKSPACE}/..
|
cd ${GITHUB_WORKSPACE}/..
|
||||||
export QT_ROOT=${GITHUB_WORKSPACE}/Qt/5.13.0/clang_64
|
export QT_ROOT=${GITHUB_WORKSPACE}/Qt5.15.2/5.15.2/clang_64
|
||||||
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
|
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
|
||||||
export PATH=$QT_ROOT/bin:$PATH
|
export PATH=$QT_ROOT/bin:$PATH
|
||||||
export CMAKE_PREFIX_PATH=$QT_ROOT/lib/cmake
|
export CMAKE_PREFIX_PATH=$QT_ROOT/lib/cmake
|
||||||
DIR=$(pwd)
|
DIR=$(pwd)
|
||||||
|
|
||||||
# now Subsurface with WebKit
|
# now setup Subsurface with WebKit and build the dependencies, using the generic build script
|
||||||
bash -e -x ./subsurface/scripts/build.sh -desktop -build-with-webkit -release
|
bash -e -x ./subsurface/scripts/build.sh -desktop -build-with-webkit -release -build-deps -ftdi -prep-only
|
||||||
|
|
||||||
cd ${GITHUB_WORKSPACE}/build
|
echo "finished initial cmake setup of Subsurface - next build the package"
|
||||||
|
cd subsurface/build
|
||||||
|
echo "run the packaging script"
|
||||||
|
bash -e -x ../packaging/macosx/make-package.sh | tee mp.log 2>&1
|
||||||
|
IMG=$(grep ^created: mp.log | tail -1 | cut -b10-)
|
||||||
|
echo "Created $IMG"
|
||||||
|
echo "dmg=$IMG" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
# build export-html to make sure that didn't get broken
|
- name: create version number
|
||||||
make export-html
|
id: version_number
|
||||||
|
|
||||||
- name: test desktop build
|
|
||||||
run: |
|
run: |
|
||||||
echo "------------------------------------"
|
latest=$(cat ../nightly-builds/latest-subsurface-buildnumber)
|
||||||
echo "run tests for desktop build"
|
today=$(date '+%Y-%m-%d')
|
||||||
export QT_ROOT=${GITHUB_WORKSPACE}/Qt/5.13.0/clang_64
|
version="$today.$latest"
|
||||||
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
|
echo "version=$version" >> $GITHUB_OUTPUT
|
||||||
cd ${GITHUB_WORKSPACE}/build/tests
|
|
||||||
# ./TestGitStorage -v2
|
|
||||||
make check
|
|
||||||
|
|
||||||
|
# only publish a 'release' on push events (those include merging a PR)
|
||||||
|
- name: upload binaries
|
||||||
|
if: github.event_name == 'push'
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
tag_name: v${{ steps.version_number.outputs.version }}
|
||||||
|
repository: subsurface/nightly-builds
|
||||||
|
token: ${{ secrets.NIGHTLY_BUILDS }}
|
||||||
|
prerelease: false
|
||||||
|
fail_on_unmatched_files: true
|
||||||
|
files: ${{ steps.build.outputs.dmg }}
|
||||||
|
body: |
|
||||||
|
CICD release artifact
|
||||||
|
|
||||||
|
These builds are created on every merge or push into the [Subsurface repo](http://github.com/subsurface/subsurface).
|
||||||
|
This build is based on http://github.com/subsurface/subsurface/commit/${{ github.sha }}
|
||||||
|
|
||||||
|
None of these artifacts are signed.
|
||||||
|
The Android APK can be side-loaded on most Android devices. If you had a previous Subsurface-mobile version installed from the Google Play store, you'll have to uninstall that first.
|
||||||
|
The Windows installer will ask you to confirm installation of an app from an unknown developer.
|
||||||
|
The macOS DMG makes it even harder with a multi-step dance that requires opening the Privacy & Security settings in the System Preferences and explicitly confirming that you are willing to install this app.
|
||||||
|
|
||||||
|
You can find similar Subsurface-Daily builds for [Ubuntu](https://ppa.launchpadcontent.net/subsurface) and Subsurface-test for [Fedora](https://copr.fedorainfracloud.org/coprs/dirkhh/Subsurface-test).
|
||||||
|
|
||||||
|
Please report any issues with these builds in the [Subsurface user forum](https://groups.google.com/g/subsurface-divelog).
|
||||||
|
|
56
.github/workflows/windows.yml
vendored
56
.github/workflows/windows.yml
vendored
|
@ -17,20 +17,19 @@ jobs:
|
||||||
- name: checkout sources
|
- name: checkout sources
|
||||||
uses: actions/checkout@v1
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
- name: create release name
|
- name: atomically create or retrieve the build number
|
||||||
id: tag
|
id: build_nr
|
||||||
run: |
|
run: |
|
||||||
export tag=""
|
cd .. # check out parallel to subsurface sources
|
||||||
export is_latest=false
|
url="https://subsurface:${{ secrets.NIGHTLY_BUILDS }}@github.com/subsurface/nightly-builds"
|
||||||
if [ "${{ github.ref_type }}" = "tag" ]
|
# the clone followed by the pointless push should verify that the password is stored in the config
|
||||||
then
|
# that way the script doesn't need the password
|
||||||
tag="${{ github.ref_name }}"
|
git clone -b main https://github.com/subsurface/nightly-builds
|
||||||
else
|
cd nightly-builds
|
||||||
tag="latest"
|
git remote set-url origin "$url"
|
||||||
is_latest=true
|
git push origin main
|
||||||
fi
|
cd ..
|
||||||
echo "tag=${tag}" >> $GITHUB_OUTPUT
|
bash -x subsurface/scripts/get-or-create-build-nr.sh ${{ github.sha }}
|
||||||
echo "is_latest=${is_latest}" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- name: get other dependencies
|
- name: get other dependencies
|
||||||
env:
|
env:
|
||||||
|
@ -49,15 +48,38 @@ jobs:
|
||||||
bash -x subsurface/.github/workflows/scripts/windows-in-container-build.sh 2>&1 | tee build.log
|
bash -x subsurface/.github/workflows/scripts/windows-in-container-build.sh 2>&1 | tee build.log
|
||||||
grep "Built target installer" build.log
|
grep "Built target installer" build.log
|
||||||
|
|
||||||
|
- name: create version number
|
||||||
|
id: version_number
|
||||||
|
run: |
|
||||||
|
latest=$(cat ../nightly-builds/latest-subsurface-buildnumber)
|
||||||
|
today=$(date '+%Y-%m-%d')
|
||||||
|
version="$today.$latest"
|
||||||
|
echo "version=$version" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
# only publish a 'release' on push events (those include merging a PR)
|
# only publish a 'release' on push events (those include merging a PR)
|
||||||
- name: upload binaries
|
- name: upload binaries
|
||||||
if: github.event_name == 'push'
|
if: github.event_name == 'push'
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ steps.tag.outputs.tag }}
|
tag_name: v${{ steps.version_number.outputs.version }}
|
||||||
prerelease: ${{ steps.tag.outputs.is_latest }}
|
repository: subsurface/nightly-builds
|
||||||
body: CICD release artifact
|
token: ${{ secrets.NIGHTLY_BUILDS }}
|
||||||
fail_on_unmatched_files: false
|
prerelease: false
|
||||||
|
fail_on_unmatched_files: true
|
||||||
files: |
|
files: |
|
||||||
./subsurface*.exe*
|
./subsurface*.exe*
|
||||||
./smtk2ssrf*.exe
|
./smtk2ssrf*.exe
|
||||||
|
body: |
|
||||||
|
CICD release artifact
|
||||||
|
|
||||||
|
These builds are created on every merge or push into the [Subsurface repo](http://github.com/subsurface/subsurface).
|
||||||
|
This build is based on http://github.com/subsurface/subsurface/commit/${{ github.sha }}
|
||||||
|
|
||||||
|
None of these artifacts are signed.
|
||||||
|
The Android APK can be side-loaded on most Android devices. If you had a previous Subsurface-mobile version installed from the Google Play store, you'll have to uninstall that first.
|
||||||
|
The Windows installer will ask you to confirm installation of an app from an unknown developer.
|
||||||
|
The macOS DMG makes it even harder with a multi-step dance that requires opening the Privacy & Security settings in the System Preferences and explicitly confirming that you are willing to install this app.
|
||||||
|
|
||||||
|
You can find similar Subsurface-Daily builds for [Ubuntu](https://ppa.launchpadcontent.net/subsurface) and Subsurface-test for [Fedora](https://copr.fedorainfracloud.org/coprs/dirkhh/Subsurface-test).
|
||||||
|
|
||||||
|
Please report any issues with these builds in the [Subsurface user forum](https://groups.google.com/g/subsurface-divelog).
|
||||||
|
|
|
@ -7,17 +7,7 @@
|
||||||
# find the directory above the sources - typically ~/src
|
# find the directory above the sources - typically ~/src
|
||||||
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd ../../.. && pwd )
|
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd ../../.. && pwd )
|
||||||
|
|
||||||
# install location of create-dmg
|
DMGCREATE=create-dmg
|
||||||
# by default we assume it's next to subsurface in ~/src/yoursway-create-dmg
|
|
||||||
DMGCREATE=${DIR}/yoursway-create-dmg/create-dmg
|
|
||||||
if [ ! -x $DMGCREATE ] ; then
|
|
||||||
# well, this app changed its github name, so it may be in a different directory now
|
|
||||||
DMGCREATE=${DIR}/create-dmg/create-dmg
|
|
||||||
if [ ! -x $DMGCREATE ] ; then
|
|
||||||
echo "Can't find working create-dmg, aborting"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# same git version magic as in the Makefile
|
# same git version magic as in the Makefile
|
||||||
# for the naming of volume and dmg we want the 3 digits of the full version number
|
# for the naming of volume and dmg we want the 3 digits of the full version number
|
||||||
|
@ -41,8 +31,14 @@ BASESDK=$(ls $SDKROOT | grep "MacOSX1.*\.sdk" | head -1 | sed -e "s/MacOSX//;s/\
|
||||||
OLDER_MAC_CMAKE="-DCMAKE_OSX_DEPLOYMENT_TARGET=${BASESDK} -DCMAKE_OSX_SYSROOT=${SDKROOT}/MacOSX${BASESDK}.sdk/"
|
OLDER_MAC_CMAKE="-DCMAKE_OSX_DEPLOYMENT_TARGET=${BASESDK} -DCMAKE_OSX_SYSROOT=${SDKROOT}/MacOSX${BASESDK}.sdk/"
|
||||||
export PKG_CONFIG_PATH=${DIR}/install-root/lib/pkgconfig:$PKG_CONFIG_PATH
|
export PKG_CONFIG_PATH=${DIR}/install-root/lib/pkgconfig:$PKG_CONFIG_PATH
|
||||||
|
|
||||||
cmake $OLDER_MAC_CMAKE .
|
cmake $OLDER_MAC_CMAKE \
|
||||||
LIBRARY_PATH=${DIR}/install-root/lib make -j8
|
-DLIBGIT2_FROM_PKGCONFIG=ON \
|
||||||
|
-DLIBGIT2_DYNAMIC=ON \
|
||||||
|
-DFTDISUPPORT=ON \
|
||||||
|
-DMAKE_TESTS=Off \
|
||||||
|
.
|
||||||
|
|
||||||
|
LIBRARY_PATH=${DIR}/install-root/lib make -j
|
||||||
LIBRARY_PATH=${DIR}/install-root/lib make install
|
LIBRARY_PATH=${DIR}/install-root/lib make install
|
||||||
|
|
||||||
# now adjust a few references that macdeployqt appears to miss
|
# now adjust a few references that macdeployqt appears to miss
|
||||||
|
@ -93,6 +89,10 @@ done
|
||||||
|
|
||||||
if [ "$1" = "-nodmg" ] ; then
|
if [ "$1" = "-nodmg" ] ; then
|
||||||
exit 0
|
exit 0
|
||||||
|
elif [ "$1" = "-sign" ] ; then
|
||||||
|
SIGN=1
|
||||||
|
else
|
||||||
|
SIGN=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# copy things into staging so we can create a nice DMG
|
# copy things into staging so we can create a nice DMG
|
||||||
|
@ -100,7 +100,9 @@ rm -rf ./staging
|
||||||
mkdir ./staging
|
mkdir ./staging
|
||||||
cp -a ./Subsurface.app ./staging
|
cp -a ./Subsurface.app ./staging
|
||||||
|
|
||||||
sh ${DIR}/subsurface/packaging/macosx/sign
|
if [ "$SIGN" = "1" ] ; then
|
||||||
|
sh ${DIR}/subsurface/packaging/macosx/sign
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -f ./Subsurface-$VERSION.dmg ]; then
|
if [ -f ./Subsurface-$VERSION.dmg ]; then
|
||||||
rm ./Subsurface-$VERSION.dmg.bak
|
rm ./Subsurface-$VERSION.dmg.bak
|
||||||
|
|
|
@ -77,6 +77,11 @@ while [[ $# -gt 0 ]] ; do
|
||||||
# call this script with -build-deps
|
# call this script with -build-deps
|
||||||
BUILD_DEPS="1"
|
BUILD_DEPS="1"
|
||||||
;;
|
;;
|
||||||
|
-prep-only)
|
||||||
|
# use this script to build dependencies and set things up with default values, but don't actually run
|
||||||
|
# the build
|
||||||
|
PREP_ONLY="1"
|
||||||
|
;;
|
||||||
-fat-build)
|
-fat-build)
|
||||||
# build a fat binary for macOS
|
# build a fat binary for macOS
|
||||||
# ignored on other platforms
|
# ignored on other platforms
|
||||||
|
@ -137,6 +142,10 @@ while [[ $# -gt 0 ]] ; do
|
||||||
BUILD_DESKTOP="1"
|
BUILD_DESKTOP="1"
|
||||||
BUILD_DOWNLOADER="1"
|
BUILD_DOWNLOADER="1"
|
||||||
;;
|
;;
|
||||||
|
-ftdi)
|
||||||
|
# make sure we include the user space FTDI drivers
|
||||||
|
FTDI="1"
|
||||||
|
;;
|
||||||
-create-appdir)
|
-create-appdir)
|
||||||
# we are building an AppImage as by product
|
# we are building an AppImage as by product
|
||||||
CREATE_APPDIR="1"
|
CREATE_APPDIR="1"
|
||||||
|
@ -147,7 +156,7 @@ while [[ $# -gt 0 ]] ; do
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown command line argument $arg"
|
echo "Unknown command line argument $arg"
|
||||||
echo "Usage: build.sh [-no-bt] [-quick] [-build-deps] [-fat-build] [-src-dir <SUBSURFACE directory>] [-build-prefix <PREFIX>] [-build-with-webkit] [-build-with-map] [-mobile] [-desktop] [-downloader] [-both] [-all] [-create-appdir] [-release]"
|
echo "Usage: build.sh [-no-bt] [-quick] [-build-deps] [-prep-only] [-fat-build] [-src-dir <SUBSURFACE directory>] [-build-prefix <PREFIX>] [-build-with-webkit] [-build-with-map] [-mobile] [-desktop] [-downloader] [-both] [-all] [-ftdi] [-create-appdir] [-release]"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -572,13 +581,6 @@ if [ "$QUICK" != "1" ] && [ "$BUILD_DESKTOP$BUILD_MOBILE" != "" ] && ( [[ $QT_VE
|
||||||
else
|
else
|
||||||
$QMAKE "INCLUDEPATH=$INSTALL_ROOT/include" ../googlemaps.pro
|
$QMAKE "INCLUDEPATH=$INSTALL_ROOT/include" ../googlemaps.pro
|
||||||
fi
|
fi
|
||||||
# on Travis the compiler doesn't support c++1z, yet qmake adds that flag;
|
|
||||||
# since things compile fine with c++11, let's just hack that away
|
|
||||||
# similarly, don't use -Wdata-time
|
|
||||||
if [ "$TRAVIS" = "true" ] ; then
|
|
||||||
mv Makefile Makefile.bak
|
|
||||||
cat Makefile.bak | sed -e 's/std=c++1z/std=c++11/g ; s/-Wdate-time//' > Makefile
|
|
||||||
fi
|
|
||||||
make -j4
|
make -j4
|
||||||
if [ "$PLATFORM" = Darwin ] && [[ $QT_VERSION == 6* ]] && [[ $ARCHS == *" "* ]] ; then
|
if [ "$PLATFORM" = Darwin ] && [[ $QT_VERSION == 6* ]] && [[ $ARCHS == *" "* ]] ; then
|
||||||
# we can't build fat binaries directly here, so let's do it in two steps
|
# we can't build fat binaries directly here, so let's do it in two steps
|
||||||
|
@ -612,6 +614,9 @@ for (( i=0 ; i < ${#BUILDS[@]} ; i++ )) ; do
|
||||||
else
|
else
|
||||||
EXTRA_OPTS="-DNO_USERMANUAL=ON -DNO_PRINTING=ON"
|
EXTRA_OPTS="-DNO_USERMANUAL=ON -DNO_PRINTING=ON"
|
||||||
fi
|
fi
|
||||||
|
if [ "$FTDI" = "1" ] ; then
|
||||||
|
EXTRA_OPTSi="$EXTRA_OPTS -DFTDISUPPORT=ON"
|
||||||
|
fi
|
||||||
if [ "$BUILD_WITH_QT6" = "1" ] ; then
|
if [ "$BUILD_WITH_QT6" = "1" ] ; then
|
||||||
EXTRA_OPTS="$EXTRA_OPTS -DBUILD_WITH_QT6=ON"
|
EXTRA_OPTS="$EXTRA_OPTS -DBUILD_WITH_QT6=ON"
|
||||||
fi
|
fi
|
||||||
|
@ -645,17 +650,19 @@ for (( i=0 ; i < ${#BUILDS[@]} ; i++ )) ; do
|
||||||
rm -rf Subsurface-mobile.app
|
rm -rf Subsurface-mobile.app
|
||||||
fi
|
fi
|
||||||
|
|
||||||
LIBRARY_PATH=$INSTALL_ROOT/lib make -j4
|
if [ ! "$PREP_ONLY" = "1" ] ; then
|
||||||
LIBRARY_PATH=$INSTALL_ROOT/lib make install
|
LIBRARY_PATH=$INSTALL_ROOT/lib make -j4
|
||||||
|
LIBRARY_PATH=$INSTALL_ROOT/lib make install
|
||||||
|
|
||||||
if [ "$CREATE_APPDIR" = "1" ] ; then
|
if [ "$CREATE_APPDIR" = "1" ] ; then
|
||||||
# if we create an AppImage this makes gives us a sane starting point
|
# if we create an AppImage this makes gives us a sane starting point
|
||||||
cd "$SRC"
|
cd "$SRC"
|
||||||
mkdir -p ./appdir
|
mkdir -p ./appdir
|
||||||
mkdir -p appdir/usr/share/metainfo
|
mkdir -p appdir/usr/share/metainfo
|
||||||
mkdir -p appdir/usr/share/icons/hicolor/256x256/apps
|
mkdir -p appdir/usr/share/icons/hicolor/256x256/apps
|
||||||
cp -r ./install-root/* ./appdir/usr
|
cp -r ./install-root/* ./appdir/usr
|
||||||
cp ${SRC_DIR}/appdata/subsurface.appdata.xml appdir/usr/share/metainfo/
|
cp ${SRC_DIR}/appdata/subsurface.appdata.xml appdir/usr/share/metainfo/
|
||||||
cp ${SRC_DIR}/icons/subsurface-icon.png appdir/usr/share/icons/hicolor/256x256/apps/
|
cp ${SRC_DIR}/icons/subsurface-icon.png appdir/usr/share/icons/hicolor/256x256/apps/
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
|
@ -12,7 +12,7 @@ CURRENT_LIBSSH2="libssh2-1.8.0"
|
||||||
CURRENT_XSLT="v1.1.34"
|
CURRENT_XSLT="v1.1.34"
|
||||||
CURRENT_SQLITE="3190200"
|
CURRENT_SQLITE="3190200"
|
||||||
CURRENT_LIBXML2="v2.9.4"
|
CURRENT_LIBXML2="v2.9.4"
|
||||||
CURRENT_LIBFTDI="1.3"
|
CURRENT_LIBFTDI="abd19b721f7e9b4d514ed319ece173ebc7b1ea72"
|
||||||
CURRENT_KIRIGAMI="v5.76.0"
|
CURRENT_KIRIGAMI="v5.76.0"
|
||||||
CURRENT_BREEZE_ICONS="4daac191fb33c8c03bba8356db9767816cb8ee02"
|
CURRENT_BREEZE_ICONS="4daac191fb33c8c03bba8356db9767816cb8ee02"
|
||||||
CURRENT_MDBTOOLS="master"
|
CURRENT_MDBTOOLS="master"
|
||||||
|
@ -190,7 +190,7 @@ for package in "${PACKAGES[@]}" ; do
|
||||||
git_checkout_library libzip $CURRENT_LIBZIP https://github.com/nih-at/libzip.git
|
git_checkout_library libzip $CURRENT_LIBZIP https://github.com/nih-at/libzip.git
|
||||||
;;
|
;;
|
||||||
libftdi1)
|
libftdi1)
|
||||||
curl_download_library libftdi1 https://www.intra2net.com/en/developer/libftdi/download/ libftdi1-${CURRENT_LIBFTDI}.tar.bz2
|
git_checkout_library libftdi1 $CURRENT_LIBFTDI git://developer.intra2net.com/libftdi
|
||||||
;;
|
;;
|
||||||
sqlite)
|
sqlite)
|
||||||
curl_download_library sqlite https://www.sqlite.org/2017/ sqlite-autoconf-${CURRENT_SQLITE}.tar.gz
|
curl_download_library sqlite https://www.sqlite.org/2017/ sqlite-autoconf-${CURRENT_SQLITE}.tar.gz
|
||||||
|
|
60
scripts/get-or-create-build-nr.sh
Normal file
60
scripts/get-or-create-build-nr.sh
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# this is comically complicated - why does GitHub not have a monotonic number
|
||||||
|
# that tracks how many times any action was kicked off? Or an atomic way to update a variable?
|
||||||
|
# So we use the fact that git itself does a great job of preventing us from overwriting an
|
||||||
|
# existing branch and abuse that to create atomicity
|
||||||
|
|
||||||
|
SHA_BRANCH="branch-for-$1"
|
||||||
|
|
||||||
|
# first - make sure git is configured so we can do stuff
|
||||||
|
git config --global user.email "ci@subsurface-divelog.org"
|
||||||
|
git config --global user.name "Subsurface CI"
|
||||||
|
|
||||||
|
# next, clone the release repo
|
||||||
|
[ -d nightly-builds ] || git clone https://github.com/subsurface/nightly-builds
|
||||||
|
cd nightly-builds
|
||||||
|
|
||||||
|
# this is from the main branch, so this should be the PREVIOUS build number
|
||||||
|
latest=$(<latest-subsurface-buildnumber)
|
||||||
|
|
||||||
|
# now let's see if a branch for the current SHA exists
|
||||||
|
if git checkout $SHA_BRANCH
|
||||||
|
then
|
||||||
|
# one of the other workflows created a release number already
|
||||||
|
latest=$(<latest-subsurface-buildnumber)
|
||||||
|
else
|
||||||
|
# this is almost certainly a race between the different workflow files
|
||||||
|
# the main branch should have held the previous release number
|
||||||
|
# increment by one and write as new build number into the named branch
|
||||||
|
latest=$((latest+1))
|
||||||
|
git checkout -b $SHA_BRANCH
|
||||||
|
echo $latest > latest-subsurface-buildnumber
|
||||||
|
git commit -a -m "record build number for this SHA"
|
||||||
|
|
||||||
|
# now comes the moment of truth - are we the first one?
|
||||||
|
# the push will succeed for exactly one of the workflows
|
||||||
|
if git push https://github.com/subsurface/nightly-builds $SHA_BRANCH
|
||||||
|
then
|
||||||
|
# yay - we win! now let's make sure that we remember this number for next time
|
||||||
|
git checkout main
|
||||||
|
echo $latest > latest-subsurface-buildnumber
|
||||||
|
git commit -a -m "record latest build number in main branch"
|
||||||
|
if ! git push https://github.com/subsurface/nightly-builds main
|
||||||
|
then
|
||||||
|
echo "push to main failed - we'll lose monotonic property"
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# someone else was faster - get the number they wrote
|
||||||
|
git checkout main
|
||||||
|
git branch -D $SHA_BRANCH
|
||||||
|
if ! git checkout -b $SHA_BRANCH
|
||||||
|
then
|
||||||
|
echo "push to $SHA_BRANCH failed, but switching to it failed as well"
|
||||||
|
exit -2
|
||||||
|
fi
|
||||||
|
latest=$(<latest-subsurface-buildnumber)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# if we get here, we have the next build number - wow that was weird.
|
||||||
|
echo "Build number is $latest"
|
Loading…
Reference in a new issue