From b785cad11f66b7f04a6aaaaf2b83b6d4fa9e8ccb Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Fri, 8 Jun 2018 20:37:14 +0200 Subject: [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 --- Makefile | 4 +- pkg/windows/ansible/01_bitmask_deps.yml | 3 +- snap/README.rst | 74 +++++++++++++++++++++++++-------- snap/TODO | 1 + snap/snapcraft.yaml | 11 ++--- 5 files changed, 68 insertions(+), 25 deletions(-) create mode 100644 snap/TODO 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 -- cgit v1.2.3