1#!/usr/bin/env bash
2
3#
4# Build the travis flatpak artifacts. Uses docker to run Fedora
5# in the Travis ubuntu VM; the actual build is done in the Fedora
6# container.
7#
8
9# bailout on errors and echo commands.
10set -xe
11if [ -z "$FLATPAK_KEY" ]; then
12    echo "Reguired \$FLATPAK_KEY not found, giving up"
13    exit 1
14fi
15
16set -xe
17
18test -d /opencpn-ci && cd /opencpn-ci || :
19
20wget -q -O - https://dl.google.com/linux/linux_signing_key.pub \
21    | sudo apt-key add -
22sudo apt-key adv \
23    --keyserver keyserver.ubuntu.com --recv-keys 78BD65473CB3BD13
24
25sudo add-apt-repository -y ppa:alexlarsson/flatpak
26sudo apt update -y
27
28# Install required packages
29sudo apt install -q -y appstream flatpak flatpak-builder git ccrypt make rsync gnupg2
30
31
32# Set up flatpak
33flatpak --user remote-add --if-not-exists \
34    flathub https://flathub.org/repo/flathub.flatpakrepo
35flatpak --user install -y org.freedesktop.Platform//18.08
36flatpak --user install -y org.freedesktop.Sdk//18.08
37
38# Patch to use official master branch from github and build + build number.
39cd flatpak
40sed -i -e '/url:/s|\.\.|https://github.com/OpenCPN/OpenCPN.git|' \
41    -e "/BUILD_NUMBER/s/0/$BUILD_NUMBER/" \
42    org.opencpn.OpenCPN.yaml
43
44test -d ../build || mkdir ../build
45cd ../build
46make -f ../flatpak/Makefile build
47flatpak list
48
49# Decrypt and unpack gpg keys, sign and install into website/
50ccat --envvar FLATPAK_KEY ../ci/gpg.tar.gz.cpt > gpg.tar.gz
51tar xf gpg.tar.gz
52chmod 700 opencpn-gpg
53make -f ../flatpak/Makefile install
54make GPG_HOMEDIR=opencpn-gpg -f ../flatpak/Makefile sign
55rm -rf gpg.tar.gz opencpn-gpg
56
57# Debug: show version in local repo.
58flatpak remote-add  \
59    --user --gpg-import=website/opencpn.key local $PWD/website/repo
60flatpak update --appstream local
61flatpak remote-ls local
62
63# Deploy website/ to deployment server.
64cp ../ci/id_opencpn.tar.cpt .
65ccdecrypt --envvar FLATPAK_KEY id_opencpn.tar.cpt
66tar -xf id_opencpn.tar
67chmod 600 .ssh/id_opencpn
68
69rsync -a --info=stats --delete-after \
70    --rsh="ssh -o 'StrictHostKeyChecking no' -i .ssh/id_opencpn" \
71    website/ opencpn@mumin.crabdance.com:/var/www/ocpn-flatpak/website
72rm -f .ssh/id_opencpn*
73
74# Restore the patched file so the caching works.
75git checkout ../flatpak/org.opencpn.OpenCPN.yaml
76
77# Debug: show version in remote repo.
78flatpak remote-add --user opencpn $PWD/website/opencpn.flatpakrepo
79flatpak update --appstream opencpn
80flatpak remote-ls opencpn
81
82# Validate the appstream data:
83appstreamcli validate app/files/share/appdata/org.opencpn.OpenCPN.appdata.xml || :
84