Skip to content

Commit 0943ea5

Browse files
committed
Added multiplatform builds for i386 and arm
1 parent 24bbe38 commit 0943ea5

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

Makefile

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ GOPACKAGES=./...
88
GOFILES_GLIDE=$(shell glide novendor)
99
GOFILES_NOVENDOR=$(shell find . -type f -name '*.go' -not -path "*/vendor/*")
1010
VERSION_FILE=VERSION
11+
GOBIN=$(shell which go)
1112

1213
BUILD_VERSION:=$(shell git log --pretty=format:'%h' -n 1)
1314
BUILD_DATE:=$(shell date -u)
@@ -17,9 +18,25 @@ else
1718
VERSION:=
1819
endif
1920

21+
SYSTEM_ARCH?=$(shell uname -m)
22+
ifeq ($(SYSTEM_ARCH), x86)
23+
SYSTEM_ARCH := 386
24+
else ifeq ($(SYSTEM_ARCH), x86_64)
25+
SYSTEM_ARCH := amd64
26+
else
27+
SYSTEM_ARCH := arm
28+
endif
29+
2030
.PHONY: build
2131
build:
22-
go build -ldflags "-X 'main.BuildVersion=${VERSION}' -X 'main.BuildHash=${BUILD_VERSION}' -X 'main.BuildDate=${BUILD_DATE}'" -o "${BIN_DIR}/${BIN_FILE}" .
32+
${GOBIN} build -ldflags "-X 'main.BuildVersion=${VERSION}' -X 'main.BuildHash=${BUILD_VERSION}' -X 'main.BuildDate=${BUILD_DATE}'" -o "${BIN_DIR}/${BIN_FILE}" .
33+
34+
.PHONY: build-custom
35+
build-custom:
36+
${GOBIN} build -ldflags "-X 'main.BuildVersion=${VERSION}' -X 'main.BuildHash=${BUILD_VERSION}' -X 'main.BuildDate=${BUILD_DATE}'" -o "${BIN_DIR}/${BIN_FILE}-${GOOS}-${GOARCH}" .
37+
38+
.PHONY: after-build
39+
after-build:
2340
${BIN_DIR}/${BIN_FILE} --completion-script-bash > ${CONTRIB_DIR}/.${BIN_FILE}.bash
2441
${BIN_DIR}/${BIN_FILE} --completion-script-zsh > ${CONTRIB_DIR}/.${BIN_FILE}.zsh
2542
${BIN_DIR}/${BIN_FILE} --help-man > ${CONTRIB_DIR}/${BIN_FILE}.1
@@ -60,4 +77,28 @@ lint:
6077

6178
.PHONY: package
6279
package:
63-
debuild --preserve-env --preserve-envvar PATH -us -uc -d
80+
debuild --preserve-env --preserve-envvar PATH -us -uc -d
81+
82+
.PHONY: cross-build
83+
cross-build:
84+
make repackage root=.. package=../$(BIN_FILE)_$(VERSION)_$(SYSTEM_ARCH).deb arch=386 os=linux
85+
make repackage root=.. package=../$(BIN_FILE)_$(VERSION)_$(SYSTEM_ARCH).deb arch=arm os=linux
86+
87+
.PHONY: repackage
88+
repackage:
89+
GOOS=$(os) GOARCH=$(arch) make build-custom
90+
$(eval TMP_DIR := $(shell mktemp -d))
91+
mkdir -p $(TMP_DIR)/DEBIAN -p
92+
dpkg-deb -x "$(package)" "$(TMP_DIR)/"
93+
dpkg-deb -e "$(package)" "$(TMP_DIR)/DEBIAN/"
94+
ifeq ($(arch), 386)
95+
sed -i "s/Architecture: amd64/Architecture: i$(arch)/g" $(TMP_DIR)/DEBIAN/control
96+
else ifeq ($(arch), arm)
97+
sed -i "s/Architecture: amd64/Architecture: armhf/g" $(TMP_DIR)/DEBIAN/control
98+
else
99+
sed -i "s/Architecture: amd64/Architecture: $(arch)/g" $(TMP_DIR)/DEBIAN/control
100+
endif
101+
cp "${BIN_DIR}/${BIN_FILE}-$(os)-$(arch)" "$(TMP_DIR)/usr/bin/${BIN_FILE}"
102+
cd "$(TMP_DIR)" && find usr -type f -print0 | xargs -0 md5sum > "$(TMP_DIR)/DEBIAN/md5sums"
103+
dpkg-deb -b $(TMP_DIR) $(root)/$(BIN_FILE)_$(VERSION)_$(arch).deb
104+
rm $(TMP_DIR) -rf

debian/rules

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
override_dh_auto_build:
77
make build
8+
make after-build
89

910
override_dh_auto_install:
1011
cp $$(pwd)/bin/blacklist-checker $$(pwd)/debian/blacklist-checker/usr/bin

0 commit comments

Comments
 (0)