summaryrefslogtreecommitdiffstats
path: root/debian/rules
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rules')
-rwxr-xr-xdebian/rules133
1 files changed, 133 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..3b05b6c
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,133 @@
+#!/usr/bin/make -f
+# This file is in the public domain.
+# You may freely use, modify, distribute, and relicense it.
+
+# We need DEB_HOST_ARCH, so include the needed makefile snippet
+include /usr/share/dpkg/architecture.mk
+# for DEB_VERSION_UPSTREAM
+include /usr/share/dpkg/pkg-info.mk
+
+# Ubuntu mangles png files by default, which can break the testdata.
+export NO_PNG_PKG_MANGLE := 1
+
+export GOVER := $(shell echo $(DEB_VERSION_UPSTREAM) | grep -oP '^([0-9]+\.[0-9]+)')
+
+export GOROOT := $(CURDIR)
+export GOROOT_FINAL := /usr/lib/go-$(GOVER)
+
+export GOPATH := $(CURDIR)/gopath/
+# Go 1.12 needs a build cache, otherwise the build fails.
+export GOCACHE := $(GOPATH)/gocache
+
+# source files generated during building.
+# especially zbootstrap.go has different defaultGOARM values on armhf and armel,
+# since the value is set from debian/helpers/goenv.sh
+#
+# see also: src/cmd/distpack/pack.go
+GENERATED_FILES := \
+ src/cmd/go/internal/cfg/zdefaultcc.go \
+ src/go/build/zcgo.go \
+ src/runtime/internal/sys/zversion.go \
+ src/time/tzdata/zzipdata.go \
+ src/cmd/cgo/zdefaultcc.go \
+ src/cmd/internal/objabi/zbootstrap.go \
+ src/internal/buildcfg/zbootstrap.go
+
+%:
+ +dh $@ $(opt_no_act)
+
+gencontrol:
+ for file in control gbp.conf watch; do \
+ { \
+ echo '#'; \
+ echo '# WARNING: "debian/'$$file'" is generated via "debian/rules gencontrol" (sourced from "debian/'$$file'.in")'; \
+ echo '#'; \
+ echo; \
+ sed -e 's/X.Y/$(GOVER)/g' debian/$$file.in; \
+ } > debian/$$file; \
+ done
+
+# The signing key for the source tarballs is rotated yearly.
+update_upstream_signing_key:
+ wget -O debian/upstream/signing-key.asc https://dl.google.com/dl/linux/linux_signing_key.pub
+
+override_dh_auto_clean:
+ # remove autogenerated files
+ rm -f -v $(GENERATED_FILES)
+ # remove built objects
+ rm -rf bin pkg
+ # remove gopath
+ rm -rf $(GOPATH)
+ # remove generated files
+ @set -e; cd debian; for x in golang-X.Y-*; do \
+ rm -f -v golang-$(GOVER)-$${x##golang-X.Y-}; \
+ done
+
+execute_after_dh_prep:
+ dh_prep
+ @set -e; cd debian; for x in golang-X.Y-*; do \
+ sed -e 's/X.Y/$(GOVER)/g' $$x > golang-$(GOVER)-$${x##golang-X.Y-}; \
+ done
+
+override_dh_compress-indep:
+ dh_compress -Xusr/share/doc/golang-$(GOVER)-doc/html
+
+execute_after_dh_install-arch:
+ cp --parent -v $(GENERATED_FILES) debian/golang-$(GOVER)-go/usr/share/go-$(GOVER)/
+
+execute_after_dh_install-indep:
+ # Remove generated source files, they are installed in golang-$(GOVER)-go.
+ cd debian/golang-$(GOVER)-src/usr/share/go-$(GOVER)/ && rm -v -f $(GENERATED_FILES)
+ # Remove Plan9 rc(1) scripts
+ find debian/golang-$(GOVER)-src/usr/share/go-$(GOVER)/src -type f -name '*.rc' -delete
+ # Make scripts executable which have been missed by upstream
+ find debian/golang-$(GOVER)-src/usr/share/go-$(GOVER)/src/ \
+ \( -name '*.sh' -o -name '*.bash' \) \( -not -executable \) -exec chmod a+x {} \;
+
+override_dh_strip:
+ dh_strip -Xtestdata
+
+# Do not run dh_dwz, as there is no debug information currently.
+override_dh_dwz:
+
+override_dh_strip_nondeterminism:
+ dh_strip_nondeterminism -Xtestdata
+
+override_dh_shlibdeps:
+ dh_shlibdeps -Xtestdata -Xtest
+
+override_dh_makeshlibs:
+ dh_makeshlibs -Xtestdata -Xtest
+
+override_dh_auto_build-arch:
+ [ -f VERSION ] || echo "debian snapshot $(DEB_VERSION)" > VERSION
+
+ export GOROOT_BOOTSTRAP=$$(env -i GOPATH=$(GOPATH) go env GOROOT) \
+ && cd $(CURDIR)/src \
+ && $(CURDIR)/debian/helpers/goenv.sh bash ./make.bash --no-banner
+
+ # rm bootstrap dir
+ rm -rf $(CURDIR)/bootstrap
+
+override_dh_auto_test-arch:
+ set -ex; \
+ cd src; \
+ export PATH="$(GOROOT)/bin:$$PATH"; \
+ export GO_TEST_TIMEOUT_SCALE=10; \
+ eval "$$(go tool dist env)"; \
+ bash run.bash -k -no-rebuild;
+ # -k keep going even when error occurred
+ # -no-rebuild don't rebuild std and cmd packages
+
+ # On linux/amd64 run.bash installs some race enabled standard library
+ # packages. Delete them again to avoid accidentally including them in
+ # the package.
+ set -ex; \
+ export PATH="$(GOROOT)/bin:$$PATH"; \
+ eval "$$(go tool dist env)"; \
+ rm -rf "$(GOROOT)/pkg/$${GOOS}_$${GOARCH}_race/"
+
+opt_no_act :=
+ifneq (,$(findstring n,$(MAKEFLAGS)))
+ opt_no_act := --no-act
+endif