summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile43
-rwxr-xr-xbranding/scripts/generate-debian.py43
-rw-r--r--branding/templates/debian/app.desktop-template14
-rw-r--r--branding/templates/debian/changelog-template5
-rw-r--r--branding/templates/debian/compat1
-rw-r--r--branding/templates/debian/control-template23
-rw-r--r--branding/templates/debian/copyright25
-rwxr-xr-xbranding/templates/debian/generate.py32
-rwxr-xr-xbranding/templates/debian/rules-template37
-rw-r--r--branding/templates/debian/source/format1
-rwxr-xr-xbranding/templates/makefile/Makefile36
-rw-r--r--pkg/config/config.go2
12 files changed, 228 insertions, 34 deletions
diff --git a/Makefile b/Makefile
index 3c9e5fc..06b2a84 100644
--- a/Makefile
+++ b/Makefile
@@ -10,6 +10,9 @@ VERSION ?= $(shell git describe)
# detect OS, we use it for dependencies
UNAME = `uname`
+TEMPLATES = "branding/templates"
+SCRIPTS = "branding/scripts"
+
all: icon locales get build
depends:
@@ -40,18 +43,18 @@ ifneq (,$(wildcard ${DEFAULT_PROVIDER}))
endif
cd branding/assets && ln -s ${PROVIDER} default
-prepare: generate relink_default
+prepare: generate relink_default tgz
mkdir -p build/${PROVIDER}/bin/
- cp branding/templates/makefile/Makefile build/${PROVIDER}/Makefile
- VERSION=${VERSION} PROVIDER_CONFIG=${PROVIDER_CONFIG} branding/scripts/generate-vendor-make.py build/${PROVIDER}/vendor.mk
- branding/scripts/check-ca-crt.py ${PROVIDER} ${PROVIDER_CONFIG}
+ cp ${TEMPLATES}/makefile/Makefile build/${PROVIDER}/Makefile
+ VERSION=${VERSION} PROVIDER_CONFIG=${PROVIDER_CONFIG} ${SCRIPTS}/generate-vendor-make.py build/${PROVIDER}/vendor.mk
+ ${SCRIPTS}/check-ca-crt.py ${PROVIDER} ${PROVIDER_CONFIG}
# FIXME trouble in win - better get into repo
#-@make icon
gen_pkg_win:
mkdir -p build/${PROVIDER}/windows/
- cp -r branding/templates/windows build/${PROVIDER}
- VERSION=${VERSION} PROVIDER_CONFIG=${PROVIDER_CONFIG} branding/scripts/generate-win.py build/${PROVIDER}/windows/data.json
+ cp -r ${TEMPLATES}/windows build/${PROVIDER}
+ VERSION=${VERSION} PROVIDER_CONFIG=${PROVIDER_CONFIG} ${SCRIPTS}/generate-win.py build/${PROVIDER}/windows/data.json
cd build/${PROVIDER}/windows && python3 generate.py
# TODO create/copy build/PROVIDER/assets/
# TODO create/copy build/PROVIDER/staging/
@@ -65,21 +68,25 @@ endif
ifeq (,$(wildcard build/${PROVIDER}/staging/openvpn-osx))
curl -L https://downloads.leap.se/thirdparty/osx/openvpn/openvpn -o build/${PROVIDER}/staging/openvpn-osx
endif
- cp -r branding/templates/osx build/${PROVIDER}
- VERSION=${VERSION} PROVIDER_CONFIG=${PROVIDER_CONFIG} branding/scripts/generate-osx.py build/${PROVIDER}/osx/data.json
+ cp -r ${TEMPLATES}/osx build/${PROVIDER}
+ VERSION=${VERSION} PROVIDER_CONFIG=${PROVIDER_CONFIG} ${SCRIPTS}/generate-osx.py build/${PROVIDER}/osx/data.json
cd build/${PROVIDER}/osx && python3 generate.py
cd build/${PROVIDER}/osx/scripts && chmod +x preinstall postinstall
gen_pkg_snap:
- cp -r branding/templates/snap build/${PROVIDER}
- VERSION=${VERSION} PROVIDER_CONFIG=${PROVIDER_CONFIG} branding/scripts/generate-snap.py build/${PROVIDER}/snap/data.json
+ cp -r ${TEMPLATES}/snap build/${PROVIDER}
+ VERSION=${VERSION} PROVIDER_CONFIG=${PROVIDER_CONFIG} S{SCRIPTS}/generate-snap.py build/${PROVIDER}/snap/data.json
cd build/${PROVIDER}/snap && python3 generate.py
rm build/${PROVIDER}/snap/data.json build/${PROVIDER}/snap/snapcraft-template.yaml
mkdir -p build/${PROVIDER}/snap/gui && cp branding/assets/default/icon.svg build/${PROVIDER}/snap/gui/icon.svg
# TODO missing hooks
gen_pkg_deb:
- echo "debian..."
+ cp -r ${TEMPLATES}/debian build/${PROVIDER}
+ VERSION=${VERSION} PROVIDER_CONFIG=${PROVIDER_CONFIG} ${SCRIPTS}/generate-debian.py build/${PROVIDER}/debian/data.json
+ mkdir -p build/${PROVIDER}/debian/icons/scalable && cp branding/assets/default/icon.svg build/${PROVIDER}/debian/icons/scalable/icon.svg
+ cd build/${PROVIDER}/debian && python3 generate.py
+ cd build/${PROVIDER}/debian && rm app.desktop-template changelog-template rules-template control-template generate.py data.json && chmod +x rules
gen_pkg_all: prepare gen_pkg_win gen_pkg_osx gen_pkg_snap gen_pkg_deb
@@ -103,6 +110,20 @@ build_bitmaskd:
build_win:
powershell -Command '$$version=git describe --tags; go build -ldflags "-H windowsgui -X main.version=$$version" ./cmd/*'
+
+TGZ_NAME = bitmask-vpn_${VERSION}-src
+TGZ_PATH = $(shell pwd)/build/${TGZ_NAME}
+tgz:
+ mkdir -p $(TGZ_PATH)
+ git archive HEAD | tar -x -C $(TGZ_PATH)
+ mkdir $(TGZ_PATH)/helpers
+ wget -O $(TGZ_PATH)/helpers/bitmask-root https://0xacab.org/leap/bitmask-dev/raw/master/src/leap/bitmask/vpn/helpers/linux/bitmask-root
+ chmod +x $(TGZ_PATH)/helpers/bitmask-root
+ wget -O $(TGZ_PATH)/helpers/se.leap.bitmask.policy https://0xacab.org/leap/bitmask-dev/raw/master/src/leap/bitmask/vpn/helpers/linux/se.leap.bitmask.policy
+ cd build/ && tar cvzf bitmask-vpn_$(VERSION).tgz ${TGZ_NAME}
+ rm -r $(TGZ_PATH)
+
+
clean:
make -C icon clean
rm -f build/${PROVIDER}/bin/bitmask-*
diff --git a/branding/scripts/generate-debian.py b/branding/scripts/generate-debian.py
new file mode 100755
index 0000000..56e533b
--- /dev/null
+++ b/branding/scripts/generate-debian.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python3
+
+import json
+import os
+import sys
+
+import configparser
+
+from provider import getDefaultProvider
+from provider import getProviderData
+
+
+VERSION = os.environ.get('VERSION', 'unknown')
+SCRIPT = 'generate-debian.py'
+
+
+def writeOutput(data, outfile):
+
+ with open(outfile, 'w') as outf:
+ outf.write(json.dumps(data))
+
+
+if __name__ == "__main__":
+ env_provider_conf = os.environ.get('PROVIDER_CONFIG')
+ if env_provider_conf:
+ if os.path.isfile(env_provider_conf):
+ print("[+] Overriding provider config per "
+ "PROVIDER_CONFIG variable")
+ configfile = env_provider_conf
+
+ config = configparser.ConfigParser()
+ config.read(configfile)
+ provider = getDefaultProvider(config)
+ data = getProviderData(provider, config)
+
+ if len(sys.argv) != 2:
+ print('Usage: {} <output_file>'.format(SCRIPT))
+ sys.exit(1)
+
+ outputf = sys.argv[1]
+
+ data['version'] = VERSION
+ writeOutput(data, outputf)
diff --git a/branding/templates/debian/app.desktop-template b/branding/templates/debian/app.desktop-template
new file mode 100644
index 0000000..eb831f7
--- /dev/null
+++ b/branding/templates/debian/app.desktop-template
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Name=${applicationName}
+Comment=Easy VPN by ${name}
+Comment[es]=VPN Facil de ${name}
+Comment[de]=Easy VPN by ${name}
+Exec=${binaryName} %U
+Terminal=false
+Icon=riseupvpn
+Categories=Network;Application;
+StartupNotify=true
+X-AppInstall-Package=${binaryName}
+Keywords=encryption;vpn;${name};leap
diff --git a/branding/templates/debian/changelog-template b/branding/templates/debian/changelog-template
new file mode 100644
index 0000000..7e44a93
--- /dev/null
+++ b/branding/templates/debian/changelog-template
@@ -0,0 +1,5 @@
+${binaryName} (${version}) unstable; urgency=medium
+
+ * Initial package.
+
+ -- LEAP Encryption Access Project <debian@leap.se> Mon, 29 Jul 2019 10:00:00 +0100
diff --git a/branding/templates/debian/compat b/branding/templates/debian/compat
new file mode 100644
index 0000000..f599e28
--- /dev/null
+++ b/branding/templates/debian/compat
@@ -0,0 +1 @@
+10
diff --git a/branding/templates/debian/control-template b/branding/templates/debian/control-template
new file mode 100644
index 0000000..aaec638
--- /dev/null
+++ b/branding/templates/debian/control-template
@@ -0,0 +1,23 @@
+Source: ${binaryName}
+Section: net
+Priority: extra
+Maintainer: LEAP Encryption Access Project <debian@leap.se>
+Build-Depends: debhelper (>= 10.0.0), dh-golang, golang-go (> 2:1.9),
+ golang-golang-x-text-dev (>= 0.3.0-2),
+ libgtk-3-dev, libappindicator3-dev, pkg-config
+Standards-Version: 3.9.8
+
+Package: ${binaryName}
+Architecture: any
+Multi-Arch: foreign
+Depends: ${misc:Depends},
+ openvpn, libgtk-3-0, libappindicator3-1,
+ policykit-1-gnome | polkit-1-auth-agent,
+ python3,
+Enhances: openvpn
+Description: Easy, fast, and secure VPN service from ${name}.
+ This package is a custom build of the new Bitmask VPN client, preconfigured
+ to use the ${providerURL} provider.
+ .
+ The service does not require a user account, keep logs, or track you in any
+ way. The service is paid for entirely by donations from users.
diff --git a/branding/templates/debian/copyright b/branding/templates/debian/copyright
new file mode 100644
index 0000000..e2a1670
--- /dev/null
+++ b/branding/templates/debian/copyright
@@ -0,0 +1,25 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: auth-pam
+Source: <https://0xacab.org/leap/riseup_vpn>
+
+Files: *
+Copyright: 2018 LEAP Encryption Access Project <info@leap.se>
+License: GPLv3
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/branding/templates/debian/generate.py b/branding/templates/debian/generate.py
new file mode 100755
index 0000000..141d8f9
--- /dev/null
+++ b/branding/templates/debian/generate.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python3
+"""
+generate.py
+
+Generate a snap package for a given provider.
+"""
+
+import json
+import os
+from string import Template
+
+
+TEMPLATES = ('app.desktop', 'changelog', 'control', 'rules')
+
+
+here = os.path.split(os.path.realpath(__file__))[0]
+data = json.load(open(os.path.join(here, 'data.json')))
+
+
+def write_from_template(target):
+ template = Template(open(target + '-template').read())
+
+ with open(target, 'w') as output:
+ output.write(template.safe_substitute(data))
+
+
+for target in TEMPLATES:
+ write_from_template(target)
+
+
+print("[+] Debian files written to {path}".format(
+ path=os.path.abspath(here)))
diff --git a/branding/templates/debian/rules-template b/branding/templates/debian/rules-template
new file mode 100755
index 0000000..686cdd7
--- /dev/null
+++ b/branding/templates/debian/rules-template
@@ -0,0 +1,37 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+# This has to be exported to make some magic below work.
+export DH_OPTIONS
+
+export DH_GOPKG = 0xacab.org/leap/bitmask-vpn
+export DH_GOLANG_EXCLUDES = vendor
+
+# TODO get the static version that gen_pkg generated instead??
+VERSION = debian-$(shell git describe --tags --always)
+APPNAME = ${binaryName}
+
+%:
+ dh $@ --with golang --buildsystem golang
+
+override_dh_auto_test:
+
+override_dh_auto_build:
+ rm -rf src/0xacab.org/leap/bitmask-vpn/tools/transifex
+ rm -rf obj-$(DEB_BUILD_GNU_TYPE)/src/0xacab.org/leap/bitmask-vpn/tools/transifex
+ rm -rf tools
+ dh_auto_build -O--buildsystem=golang -- -ldflags "-X main.version=$(VERSION)"
+
+override_dh_install:
+ mkdir -p $(CURDIR)/debian/${APPNAME}/usr/sbin
+ cp $(CURDIR)/helpers/bitmask-root $(CURDIR)/debian/${binaryName}/usr/sbin/
+ mkdir -p $(CURDIR)/debian/${APPNAME}/usr/share/polkit-1/actions
+ cp $(CURDIR)/helpers/se.leap.bitmask.policy $(CURDIR)/debian/${APPNAME}/usr/share/polkit-1/actions
+ rm -fr $(CURDIR)/debian/${APPNAME}/usr/share/gocode
+ strip $(CURDIR)/debian/${APPNAME}/usr/bin/bitmask-vpn
+ rm $(CURDIR)/debian/${APPNAME}/usr/bin/bitmask-helper
+ rm $(CURDIR)/debian/${APPNAME}/usr/bin/bitmask-connect
+ mv $(CURDIR)/debian/${APPNAME}/usr/bin/bitmask-vpn $(CURDIR)/debian/${APPNAME}/usr/bin/${APPNAME}
+ mkdir -p $(CURDIR)/debian/${APPNAME}/usr/share/${APPNAME}
+ cp $(CURDIR)/debian/icons/scalable/icon.svg $(CURDIR)/debian/${APPNAME}/usr/share/${APPNAME}/icon.svg
+ dh_install
diff --git a/branding/templates/debian/source/format b/branding/templates/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/branding/templates/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/branding/templates/makefile/Makefile b/branding/templates/makefile/Makefile
index c8ade84..c66880c 100755
--- a/branding/templates/makefile/Makefile
+++ b/branding/templates/makefile/Makefile
@@ -15,17 +15,8 @@ BUILD_RELEASE?=no
WIN_CERT_PATH?=z:\leap\LEAP.pfx
WIN_CERT_PASS?=
OSX_CERT = "Developer ID Installer: LEAP Encryption Access Project"
+DEB_VERSION = $(shell echo ${VERSION} | cut -d '-' -f 1,2)
-TGZ_PATH = $(shell pwd)/dist/$(BINNAME)-$(VERSION)
-tgz:
- mkdir -p $(TGZ_PATH)
- git -C `go env GOPATH`/src/$(SYSTRAY) archive HEAD | tar -x -C $(TGZ_PATH)
- mkdir $(TGZ_PATH)/helpers
- wget -O $(TGZ_PATH)/helpers/bitmask-root https://0xacab.org/leap/bitmask-dev/raw/master/src/leap/bitmask/vpn/helpers/linux/bitmask-root
- chmod +x $(TGZ_PATH)/helpers/bitmask-root
- wget -O $(TGZ_PATH)/helpers/se.leap.bitmask.policy https://0xacab.org/leap/bitmask-dev/raw/master/src/leap/bitmask/vpn/helpers/linux/se.leap.bitmask.policy
- cd dist; tar cvzf $(BINNAME)-$(VERSION).tgz $(BINNAME)-$(VERSION)
- rm -r $(TGZ_PATH)
# -----------------------------------------------------------------------------
# Windows
@@ -54,7 +45,7 @@ openvpn_cross_win:
# TODO no need to build systray in windows, but move this powershell hack to main build makefile
#powershell '$$gopath=go env GOPATH;$$version=git -C $$gopath/src/$(SYSTRAY) describe --tags; go build -ldflags "-H windowsgui -s -w -X main.version=$$version" -o $(STAGING)/$(SYSTRAY_BIN).exe $(SYSTRAY)/cmd/bitmask-vpn'
-package_win: staging\nssm.exe helper_win systray_win
+pkg_win: staging\nssm.exe helper_win systray_win
# I assume you did bootstrap openvpn_win manually already.
echo "[+] building windows"
"C:\Program Files (x86)\NSIS\makensis.exe" windows/$(APPNAME)-installer.nsi
@@ -75,7 +66,7 @@ build_cross_win: staging/nssm.exe
# OSX
# -----------------------------------------------------------------------------
-package_osx:
+pkg_osx:
echo "[+] Building osx package..."
osx/quickpkg --output dist/$(APPNAME)-$(VERSION)_unsigned.pkg --scripts osx/scripts/ dist/$(APPNAME).app/
@if [ $(BUILD_RELEASE) = no ]; then\
@@ -89,27 +80,28 @@ package_osx:
# Linux
# -----------------------------------------------------------------------------
-build_snap:
+pkg_snap:
echo "[+] building snap..."
snapcraft build
snapcraft snap
mkdir -p dist
mv $(BINNAME)* dist/
-build_deb: tgz
- echo "[+] building deb..."
+pkg_deb:
+ echo "[+] building debian package version" ${DEB_VERSION}
@if [ $(BUILD_RELEASE) = no ]; then\
dch -v $(VERSION) -M "debian package generated from the git repository" && echo "[!] BUILD_RELEASE=no, incrementing changelog";\
else\
echo "[!] BUILD_RELEASE";\
fi
- mkdir -p build
- cp dist/$(BINNAME)-$(VERSION).tgz build/$(BINNAME)_$(shell echo ${VERSION} | cut -d '-' -f 1-2).orig.tar.gz
- cd build && tar xzf $(BINNAME)_$(shell echo ${VERSION} | cut -d '-' -f 1-2).orig.tar.gz
- cp -r debian/ build/$(BINNAME)-$(VERSION)/
- cd build/$(BINNAME)-$(VERSION) && debuild -us -uc
- cp build/*.deb dist/
- git checkout -- debian/changelog
+ mkdir -p build ../dist
+ # bitmask-vpn tar.gz should be placed in parent forlder after doing 'make prepare' with the
+ # bitmask-vpn topmost Makefile.
+ cp ../bitmask-vpn_$(VERSION).tgz build/$(BINNAME)_${DEB_VERSION}.orig.tar.gz
+ cd build && tar xzf $(BINNAME)_${DEB_VERSION}.orig.tar.gz && mv bitmask-vpn_${VERSION}-src ${BINNAME}_${DEB_VERSION}
+ cp -r debian/ build/$(BINNAME)_$(DEB_VERSION)/
+ cd build/$(BINNAME)_$(DEB_VERSION) && debuild -us -uc
+ cp build/*.deb ../dist/
# -----------------------------------------------------------------------------
# Utils
diff --git a/pkg/config/config.go b/pkg/config/config.go
index c174b6b..4f2ab38 100644
--- a/pkg/config/config.go
+++ b/pkg/config/config.go
@@ -1,6 +1,6 @@
// Code generated by go generate; DO NOT EDIT.
// This file was generated by vendorize.py
-// At 2019-07-16 21:41:09
+// At 2019-07-29 21:55:46
package config