summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2018-06-08 20:37:14 +0200
committerKali Kaneko <kali@leap.se>2018-06-08 21:06:06 +0200
commitb785cad11f66b7f04a6aaaaf2b83b6d4fa9e8ccb (patch)
treed4252a4218e889ced31be70b97c36e53d988a89d
parent1a2f3154ad202a9e50c4cbb9c4c41d9ba350b552 (diff)
[pkg] build snap in docker/xenial
the docker image provider bv snapcore/snapcraft is based on xenial, and we need a special tag for the golang gtk3 libraries to be able to build here. -Closes: #9315
-rw-r--r--Makefile4
-rw-r--r--pkg/windows/ansible/01_bitmask_deps.yml3
-rw-r--r--snap/README.rst74
-rw-r--r--snap/TODO1
-rw-r--r--snap/snapcraft.yaml11
5 files changed, 68 insertions, 25 deletions
diff --git a/Makefile b/Makefile
index 153d6130..1aabad2b 100644
--- a/Makefile
+++ b/Makefile
@@ -121,7 +121,9 @@ bundle_in_docker_virtualenv:
snap_in_docker:
cd pkg/riseupvpn && ./pack_installers && cd ..
- sudo docker run -v $(PWD):$(PWD) -w $(PWD) snapcore/snapcraft snapcraft
+ cp snap/snapcraft.yaml snap/snapcraft.yaml.orig && cd snap && sed -i s/"#PRAGMA:XENIAL "// snapcraft.yaml && cd ..
+ echo "apt update && apt -f install && snapcraft" | sudo docker run -i -v $(PWD):$(PWD) -w $(PWD) snapcore/snapcraft bash
+ mv snap/snapcraft.yaml.orig snap/snapcraft.yaml
snap_clean:
sudo rm -rf stage prime parts
diff --git a/pkg/windows/ansible/01_bitmask_deps.yml b/pkg/windows/ansible/01_bitmask_deps.yml
index d69aa9ab..5b57d60b 100644
--- a/pkg/windows/ansible/01_bitmask_deps.yml
+++ b/pkg/windows/ansible/01_bitmask_deps.yml
@@ -41,8 +41,9 @@
- nssm
- nsis
- mingw
- - nim
- golang
+ - visualstudio2017buildtools
+ # missing: libzmq
- name: install developer tools
win_chocolatey:
diff --git a/snap/README.rst b/snap/README.rst
index ed737e20..bf0351df 100644
--- a/snap/README.rst
+++ b/snap/README.rst
@@ -1,50 +1,88 @@
RiseupVPN
---------
-This is the Snap package for RiseupVPN.
+This is the Snap package for RiseupVPN. RiseupVPN is a specialized build of
+bitmask, that lacks client authentication and is preconfigured to use a single
+provider (riseup.net).
In the future, this snap very likely will be maintained in its own repo, and
-here we might maintain a snap package for the Bitmask client.
+here we will maintain a snap package for the generic Bitmask client.
At the moment, RiseupVPN has two main components:
- A headless build of bitmask-vpn. This lives in the bitmask-dev repo, it's written
- in python twisted, and it uses an entrypoint called "anonvpn". This
+ in twisted + python, and it uses an entrypoint called "anonvpn". This
entrypoint launches the bitmaskd backend, and tries to launch the
bitmask-systray too.
- A minimalistic systray, written in golang. This lives in the bitmask-systray repo.
+Building
+---------
+
+First of all, make sure that the version in the snapcraft.yaml file matches what we're building.
+We're following the convention of adding +git to any build that comes after a tag.
+
+Launchpad does up 4 daily builds if code is modified in bitmask-dev repo. We're
+building for amd64, i386 and arm8.
+If you need to force a build, trigger it by editing the version string in the
+snapcraft.yaml file.
+
+For local builds, you can use 'make snap_in_docker'. This builds in a docker
+container (provided by snapcraft/snapcore). At this moment, this image is based
+in xenial - therefore, a special tag is needed for the gtk3 libs in go.
+
+
Releasing
---------
-From the snap dashboard, you can see the revisions that are built. Up to now,
-the revisions are not automatically released (this might change soon).
-To publish them, click on "release" from the dashboard, and assign a channel to them.
+From the snap dashboard, you can see the revisions that are built.
+By default, we have riseupvpn-builds configured to upload builds to beta and
+edge channels. If you are going to be pushing to edge manually regularly,
+please configure the automated builds to push just to beta for some time and
+push your builds to edge channel.
-By convention, if you release to a channel, please release the revision to all the lower channels too.
-(For example, if you release a particular revision to "candidate", release it
-also to "beta" and "edge").
+To publish a snap, click on "release" from the dashboard, and assign a channel to them.
-Do note that the builds for different architectures do have different revision
-numbers, so when releasing you have to repeat the steps for each platform that we're building for.
+By convention, if you release to a channel, please release the revision to all
+the lower channels too. (For example, if you release a particular revision to
+"candidate", release it also to "beta" and "edge").
+
+Do note that the automated builds for different architectures do have different revision
+numbers, so when releasing you have to repeat the steps for each platform that
+we're building for.
From the command line:
snapcraft login
snapcraft status riseup-vpn
+ # if we've built a release manually, we have to push it first. it gives us a
+ # revision number that we use in the next step.
+
+ snapcraft push riseup-vpn_0.10.6+git_amd64.snap
+ Preparing to push '/home/kali/leap/bitmask-dev/riseup-vpn_0.10.6+git_amd64.snap' to the store.
+ Found cached source snap /home/kali/.cache/snapcraft/projects/riseup-vpn/snap_hashes/amd64/b5e9d106c823e3c83fce1ef81ad95d68c33fcada859eeb98233fc766863d39205c192fe5ee53def71c43886e40d3ab5b.
+ Generating xdelta3 delta for riseup-vpn_0.10.6+git_amd64.snap.
+ Pushing delta /home/kali/leap/bitmask-dev/riseup-vpn_0.10.6+git_amd64.snap.xdelta3.
+ Pushing riseup-vpn_0.10.6+git_amd64.snap.xdelta3 [=================================================] 100%
+ Processing...|
+ Ready to release!
+ Revision 20 of 'riseup-vpn' created.
+
+ # otherwise I assume that you're just trying to release something
+ # that was already built and automatically uploaded.
+
# let's publish amd64 to candidate channel and the channels below
- snapcraft release riseupv-vpn 15 candidate
- snapcraft release riseupv-vpn 15 beta
- snapcraft release riseupv-vpn 15 edge
+ snapcraft release riseupv-vpn 20 candidate
+ snapcraft release riseupv-vpn 20 beta
+ snapcraft release riseupv-vpn 20 edge
# and now the i386 build
- snapcraft release riseupv-vpn 14 candidate
- snapcraft release riseupv-vpn 14 beta
- snapcraft release riseupv-vpn 14 edge
-
+ snapcraft release riseupv-vpn 19 candidate
+ snapcraft release riseupv-vpn 19 beta
+ snapcraft release riseupv-vpn 19 edge
Testing
diff --git a/snap/TODO b/snap/TODO
new file mode 100644
index 00000000..04568467
--- /dev/null
+++ b/snap/TODO
@@ -0,0 +1 @@
+[ ] Allow apt-cacher to save some bandwith: https://www.brainvault.xyz/2016/07/20/apt-cacher-ng-with-docker-builds/
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index fa09d1f9..344842d0 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -59,24 +59,25 @@ parts:
bitmask-systray:
after: [desktop-gtk3]
plugin: go
+ #PRAGMA:XENIAL go-buildtags: [gtk_3_18]
source: https://0xacab.org/leap/bitmask-systray.git
# prepare: XXX run systray tests here
build-packages:
- pkg-config
- patchelf
- - libzmq5
- - libzmq3-dev
- - libsodium-dev
- libpcre3-dev
- libappindicator3-dev
- libgtk-3-dev
+ #- libzmq5
+ #- libzmq3-dev
+ #- libsodium-dev
stage-packages:
- libc6
- - libzmq5
- - libsodium23 # for bionic, previously it was libsodium18
- libpcre3
- libappindicator3-1
- zlib1g
+ #- libzmq5
+ #- libsodium23 # for bionic, previously it was libsodium18
# prime:
# prime:-etc/fonts
# prime:-usr/include