blob: 3bb55a870d0e3222b153fd62c34a4532d1519dc0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
APPNAME := riseup-vpn
SYSTRAY := 0xacab.org/leap/bitmask-vpn
STAGING := staging
SYSTRAY_BIN := bitmask-vpn
HELPER_BIN := bitmask_helper
APP_NAME := RiseupVPN
BUILD_RELEASE?=no
WIN_CERT_PATH?=z:\leap\LEAP.pfx
WIN_CERT_PASS?=
OSX_CERT = "Developer ID Installer: LEAP Encryption Access Project"
VERSION = $(shell git -C `go env GOPATH`/src/$(SYSTRAY) describe --tags --always)
TGZ_PATH = $(shell pwd)/dist/$(APPNAME)-$(VERSION)
tgz:
# XXX not needed anymore
mkdir -p $(TGZ_PATH)
git -C `go env GOPATH`/src/$(SYSTRAY) archive HEAD | tar -x -C $(TGZ_PATH)
mkdir -p $(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 $(APPNAME)-$(VERSION).tgz $(APPNAME)-$(VERSION)
rm -r $(TGZ_PATH)
# -----------------------------------------------------------------------------
# Windows
# -----------------------------------------------------------------------------
CROSS_FLAGS = CGO_ENABLED=1 GOARCH=386 GOOS=windows CC="/usr/bin/i686-w64-mingw32-gcc" CGO_LDFLAGS="-lssp" CXX="i686-w64-mingw32-c++"
deps_win:
choco install -y golang python nssm nsis wget 7zip
openvpn_win:
if not exist staging\openvpn mkdir staging\openvpn
wget https://build.openvpn.net/downloads/releases/latest/tap-windows-latest-stable.exe -O staging/openvpn/tap-windows.exe
# eventually, this should be built statically and cross compiled in the same pipeline that we build the installer.
wget https://downloads.leap.se/thirdparty/windows/openvpn-x86_64-w64-mingw32.tar.bz2 -O staging/openvpn/openvpn.tar.bz2
7z e -y -ostaging/openvpn/ staging/openvpn/openvpn.tar.bz2
7z e -y -r -ostaging/openvpn/ staging/openvpn/openvpn.tar *.dll
7z e -y -r -ostaging/openvpn/ staging/openvpn/openvpn.tar *.exe
copy .\staging\openvpn\openvpn.exe .\staging
copy .\staging\openvpn\*.dll .\staging
openvpn_cross_win:
mkdir -p staging/openvpn
wget https://build.openvpn.net/downloads/releases/latest/tap-windows-latest-stable.exe -O $(STAGING)/openvpn/tap-windows.exe
wget https://downloads.leap.se/thirdparty/windows/openvpn-x86_64-w64-mingw32.tar.bz2 -O $(STAGING)/openvpn/openvpn.tar.bz2
tar xvjf $(STAGING)/openvpn/openvpn.tar.bz2 -C $(STAGING)/openvpn/
cp $(STAGING)/openvpn/bin/openvpn.exe $(STAGING)/openvpn
cp $(STAGING)/openvpn/bin/*.dll $(STAGING)
cp $(STAGING)/openvpn/lib/engines-1_1/*.dll $(STAGING)
helper_win:
go build -ldflags "-s -w" -o $(STAGING)/$(HELPER_BIN).exe $(SYSTRAY)/cmd/bitmask-helper
systray_win:
go get -u $(SYSTRAY)/cmd/bitmask-vpn
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'
build_win: staging\nssm.exe helper_win systray_win
# since it's tedious, I assume you did bootstrap openvpn_win manually already.
echo "[+] building windows"
if not exist dist mkdir dist
powershell '$$gopath=go env GOPATH;$$version=git -C $$gopath/src/$(SYSTRAY) describe --tags; $(MAKE) -C win VERSION=$$version'
"C:\Program Files (x86)\NSIS\makensis.exe" win/RiseupVPN-installer.nsi
sign_win:
echo "[+] signing windows build"
python win/sign.py $(WIN_CERT_PATH) $(WIN_CERT_PASS)
build_cross_win: staging/nssm.exe
echo "!define VERSION $(VERSION)" > $(STAGING)/version.nsh
go get 0xacab.org/leap/bitmask-vpn/cmd/bitmask-helper
go get 0xacab.org/leap/bitmask-vpn/cmd/bitmask-vpn
$(CROSS_FLAGS) $(MAKE) helper_win
$(CROSS_FLAGS) go get $(SYSTRAY)/cmd/bitmask-vpn
$(CROSS_FLAGS) go build -ldflags "-H windowsgui -s -w -X main.version=$(VERSION)" -o $(STAGING)/$(SYSTRAY_BIN).exe $(SYSTRAY)/cmd/bitmask-vpn
mkdir -p dist
make -C win VERSION=$(VERSION)
makensis win/RiseupVPN-installer.nsi
# -----------------------------------------------------------------------------
# OSX
# -----------------------------------------------------------------------------
deps_osx:
# TODO - bootstrap homebrew if not there
brew install python golang make upx
openvpn_osx:
echo "[+] downloading openvpn..."
wget -O $(STAGING)/openvpn https://downloads.leap.se/thirdparty/osx/openvpn/openvpn
helper_osx:
go get -u github.com/sevlyar/go-daemon
go build -ldflags "-s -w" -o $(STAGING)/$(HELPER_BIN) $(SYSTRAY)/cmd/bitmask-helper
upx $(STAGING)/$(HELPER_BIN)
systray_osx:
go get -u $(SYSTRAY)/cmd/bitmask-vpn
go build -ldflags "-X main.version=$(VERSION)" -o $(STAGING)/$(SYSTRAY_BIN) $(SYSTRAY)/cmd/bitmask-vpn
upx $(STAGING)/$(SYSTRAY_BIN)
bundle_osx:
mkdir -p dist
make -C osx VERSION=$(VERSION)
pkg_osx:
osx/quickpkg --output dist/$(APP_NAME)-$(VERSION)_unsigned.pkg --scripts osx/scripts/ dist/$(APP_NAME).app/
@if [ $(BUILD_RELEASE) = no ]; then\
echo "[!] BUILD_RELEASE=no, skipping signature";\
else\
echo "[+] Signing the bundle";\
productsign --sign $(OSX_CERT) dist/$(APP_NAME)-$(VERSION)_unsigned.pkg dist/$(APP_NAME)-$(VERSION).pkg;\
fi
build_osx: openvpn_osx helper_osx systray_osx bundle_osx pkg_osx
echo "[+] building osx..."
# -----------------------------------------------------------------------------
# Linux
# -----------------------------------------------------------------------------
build_snap:
echo "[+] building snap..."
snapcraft build
snapcraft snap
mkdir -p dist
mv $(APPNAME)* dist/
testfoo:
dch -v $(VERSION) -M "debian package generated from the git repository";\
build_deb: tgz
echo "[+] building deb..."
@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/$(APPNAME)-$(VERSION).tgz build/$(APPNAME)_$(shell echo ${VERSION} | cut -d '-' -f 1-2).orig.tar.gz
cd build && tar xzf $(APPNAME)_$(shell echo ${VERSION} | cut -d '-' -f 1-2).orig.tar.gz
cp -r debian/ build/$(APPNAME)-$(VERSION)/
cd build/$(APPNAME)-$(VERSION) && debuild -us -uc
cp build/*.deb dist/
git checkout -- debian/changelog
# -----------------------------------------------------------------------------
# Utils
# -----------------------------------------------------------------------------
clean:
rm -rf dist/ build/
staging\nssm.exe:
xcopy /y "C:\ProgramData\chocolatey\lib\NSSM\tools\nssm.exe" $(STAGING)
staging/nssm.exe:
wget https://nssm.cc/release/nssm-2.24.zip -O $(STAGING)/nssm.zip
unzip $(STAGING)/nssm.zip -d $(STAGING)
mv $(STAGING)/nssm-*/win32/nssm.exe $(STAGING)
rm -rf $(STAGING)/nssm-* $(STAGING)/nssm.zip
|