subsurface/snap/snapcraft.yaml
Michał Sawicz d4a4ecfa99 snap: build on base: core22
Signed-off-by: Michał Sawicz <michal@sawicz.net>
2024-02-04 11:07:27 -08:00

206 lines
5.7 KiB
YAML

name: subsurface
icon: icons/subsurface-icon.svg
summary: Open source divelog program for recreational, tech, and free-divers
description: |
Subsurface can plan and track single- and multi-tank dives using air, Nitrox
or TriMix. It allows tracking of dive locations including GPS coordinates
(which can also conveniently be entered using a map interface), logging of
equipment used and names of other divers, and lets users rate dives and
provide additional notes.
confinement: strict
base: core22
adopt-info: subsurface
apps:
subsurface:
environment:
LD_LIBRARY_PATH: ${LD_LIBRARY_PATH}:${SNAP}/usr/local/lib
command-chain:
- bin/desktop-launch
command: usr/local/bin/subsurface
desktop: usr/local/share/applications/subsurface.desktop
plugs:
- bluez
- home
- network
- opengl
- raw-usb
- removable-media
- unity7
- wayland
parts:
googlemaps:
source: https://github.com/Subsurface/googlemaps.git
plugin: make
make-parameters:
- INSTALL_ROOT=${CRAFT_PART_INSTALL}
build-packages:
- qtbase5-dev
- wget
override-pull: |
craftctl default
export QT_SELECT=5
export QT_VERSION=$( qmake -query QT_VERSION )
mkdir -p QtHeaders/QtLocation/private QtHeaders/QtPositioning/private
cd QtHeaders/QtLocation/private
for HEADER in \
qlocationglobal \
maps/qabstractgeotilecache \
maps/qcache3q \
maps/qgeocameracapabilities \
maps/qgeocameradata \
maps/qgeomap \
maps/qgeomappingmanager \
maps/qgeomappingmanagerengine \
maps/qgeomaptype \
maps/qgeofiletilecache \
maps/qgeoprojection \
maps/qgeotiledmap \
maps/qgeotiledmappingmanagerengine \
maps/qgeotiledmapreply \
maps/qgeotilefetcher \
maps/qgeotilespec \
places/unsupportedreplies
do
wget --no-verbose --content-disposition \
http://code.qt.io/cgit/qt/qtlocation.git/plain/src/location/${HEADER}_p.h?h=v${QT_VERSION}-lts-lgpl
done
cd -
cd QtHeaders/QtPositioning/private
for HEADER in \
qdoublematrix4x4 \
qdoublevector2d \
qdoublevector3d \
qpositioningglobal
do
wget --no-verbose --content-disposition \
http://code.qt.io/cgit/qt/qtlocation.git/plain/src/positioning/${HEADER}_p.h?h=v${QT_VERSION}-lts-lgpl
done
override-build: |
qmake \
INCLUDEPATH+=${CRAFT_PART_SRC}/QtHeaders \
${CRAFT_PART_SRC}
craftctl default
desktop-qt5:
source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
source-subdir: qt
plugin: make
make-parameters: ["FLAVOR=qt5"]
build-packages:
- build-essential
- qtbase5-dev
- dpkg-dev
stage-packages:
- libxkbcommon0
- fonts-ubuntu
- dmz-cursor-theme
- light-themes
- adwaita-icon-theme
- gnome-themes-standard
- shared-mime-info
- libqt5gui5
- libgdk-pixbuf2.0-0
- libqt5svg5 # for loading icon themes which are svg
- locales-all
- xdg-user-dirs
- fcitx-frontend-qt5
libdc:
plugin: autotools
source: .
source-type: git
source-subdir: libdivecomputer
build-packages:
- libbluetooth-dev
- libhidapi-dev
- libusb-dev
override-build: |
sed -i 's/\[HIDAPI\], \[hidapi\]/[HIDAPI], [hidapi-libusb]/' libdivecomputer/configure.ac
craftctl default
stage-packages:
- libbluetooth3
- libftdi1-2
- libhidapi-libusb0
- libusb-1.0-0
subsurface:
source: .
after: [desktop-qt5, googlemaps, libdc]
plugin: cmake
cmake-parameters:
- -DMAKE_TESTS=OFF
- -DLIBGIT2_DYNAMIC=ON
- -DFTDISUPPORT=ON
- -DLIBDIVECOMPUTER_LIBRARIES=../../../stage/usr/local/lib/libdivecomputer.so
- -DLIBDIVECOMPUTER_INCLUDE_DIR=../../../stage/usr/local/include
build-packages:
- build-essential
- libcurl4-gnutls-dev
- libftdi1-dev
- libgit2-dev
- libqt5charts5-dev
- libqt5svg5-dev
- libqt5webkit5-dev
- libsqlite3-dev
- libssh2-1-dev
- libssl-dev
- libxml2-dev
- libxslt1-dev
- libzip-dev
- pkg-config
- qtconnectivity5-dev
- qtlocation5-dev
- qtpositioning5-dev
- qttools5-dev
override-pull: |
craftctl default
craftctl set grade=devel
if [ ! -f latest-subsurface-buildnumber ]; then
git fetch --depth=1 https://github.com/subsurface/nightly-builds.git branch-for-$( git rev-parse HEAD )
git checkout FETCH_HEAD latest-subsurface-buildnumber
# We succeeded getting the release version, allow publishing above `beta`
craftctl set grade=stable
fi
craftctl set version=$( scripts/get-version )
override-build: |
mkdir -p ../install-root
ln -sf ../../../stage/usr/lib/*/qt5/plugins/geoservices/libqtgeoservices_googlemaps.so \
../install-root/
sed -i 's@^Icon=.*@Icon=${SNAP}/share/icons/hicolor/scalable/apps/subsurface-icon.svg@' ../src/subsurface.desktop
craftctl default
stage-packages:
- libcap2
- libcurl3-gnutls
- libdb5.3
- libftdi1-2
- libgit2-1.1
- libqt5bluetooth5
- libqt5charts5
- libqt5concurrent5
- libqt5core5a
- libqt5gui5
- libqt5location5
- libqt5network5
- libqt5positioning5
- libqt5printsupport5
- libqt5qml5
- libqt5quick5
- libqt5quickwidgets5
- libqt5svg5
- libqt5webkit5
- libqt5widgets5
- libsqlite3-0
- libssh2-1
- libssl3
- libusb-1.0-0
- libxml2
- libxslt1.1
- libzip4
- qml-module-qtlocation
- qml-module-qtpositioning
- qml-module-qtquick2
- qtwayland5
- zlib1g