#!/usr/bin/make -f

include /usr/share/dpkg/pkg-info.mk

# Hardening
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

SOURCE     = $(CURDIR)
PKG        = github.com/syncthing/syncthing

#export DH_GOLANG_GO_GENERATE := 1

# Upstream expects a version in format vX.Y.Z, and without this will
# not make a "clean release build" (Bug #1061296).  A better solution
# may be patch build.go script.  At that bug, Simon Frei notes that
# passing '-version <upstream_version' does not successfully inject a
# version, so the best solution is probably to enable that functionality.
#
# At that time Alexandre Viau's ST_DEB_VERSION implementation and
# comment should be resurrected (git commit <= 2df76fd), and mine erased.

export ST_DEB_VERSION := v$(shell echo $(DEB_VERSION_UPSTREAM) | sed 's/[^0-9.].*//g')

export DH_GOLANG_EXCLUDES := \
	cmd/stcli \
	cmd/stcrashreceiver \
	cmd/strelaypoolsrv \
	cmd/stupgrades \
	cmd/ursrv \
	meta($$|/) \
	# EOL

export GOCACHE := $(CURDIR)/_build/gocache
export GO111MODULE := off

%:
	dh $@ --buildsystem=golang --builddirectory=_build

execute_after_dh_auto_configure:
	###############
	## Web files ##
	###############
	# initial folders
	cp -r -v $(SOURCE)/gui _build/src/$(PKG)
	#cp -r -v $(SOURCE)/cmd/strelaypoolsrv/gui _build/src/$(PKG)/cmd/strelaypoolsrv/gui
	mkdir -p _build/src/$(PKG)/gui/default/vendor
	# Bootstrap
	mkdir -p _build/src/$(PKG)/gui/default/vendor/bootstrap
	cp -v -r /usr/share/javascript/bootstrap/css _build/src/$(PKG)/gui/default/vendor/bootstrap/css
	cp -v -r /usr/share/javascript/bootstrap/js _build/src/$(PKG)/gui/default/vendor/bootstrap/js
	# font-awesome
	mkdir -p _build/src/$(PKG)/gui/default/vendor/fork-awesome
	cp --dereference -v -r /usr/share/fonts-fork-awesome/css _build/src/$(PKG)/gui/default/vendor/fork-awesome/css
	cp --dereference -v -r /usr/share/fonts-fork-awesome/fonts _build/src/$(PKG)/gui/default/vendor/fork-awesome/fonts
	# build assets
	cd _build/src/$(PKG) && go run script/genassets.go gui > lib/api/auto/gui.files.go
	cp $(SOURCE)/lib/upgrade/signingkey.pem _build/src/$(PKG)/lib/upgrade/
	#cd _build/src/$(PKG) && \
	#    mkdir cmd/strelaypoolsrv/auto && \
	#    go run script/genassets.go cmd/strelaypoolsrv/gui > cmd/strelaypoolsrv/auto/gui.go
	# Now remove the vendor stuff, we don't really want to ship it in the -dev package.
	rm -rf _build/src/$(PKG)/gui/default/vendor

	###############
	## test data ##
	###############
	# tip: `find . -type d -name testdata`
	# then put them here in alphabetical order
	cp -rv $(SOURCE)/lib/api/testdata _build/src/$(PKG)/lib/api/
	cp -rv $(SOURCE)/lib/model/testdata _build/src/$(PKG)/lib/model/
	cp -rv $(SOURCE)/lib/db/testdata _build/src/$(PKG)/lib/db/
	cp -rv $(SOURCE)/lib/config/testdata _build/src/$(PKG)/lib/config/
	# syncthing/test
	cp -rv $(SOURCE)/test/h1 _build/src/$(PKG)/test/
	cp -rv $(SOURCE)/test/h2 _build/src/$(PKG)/test/
	cp -rv $(SOURCE)/test/h3 _build/src/$(PKG)/test/
	cp -rv $(SOURCE)/test/h4 _build/src/$(PKG)/test/
	cp -rv $(SOURCE)/test/logs _build/src/$(PKG)/test/
	mkdir -p _build/src/$(PKG)/lib/versioner/_external_test
	cp $(SOURCE)/lib/versioner/_external_test/external.sh _build/src/$(PKG)/lib/versioner/_external_test/external.sh

	# lintian: package-contains-vcs-control-file
	rm -f _build/src/$(PKG)/lib/db/testdata/.gitignore
	rm -f _build/src/$(PKG)/test/logs/.gitignore

override_dh_auto_build:
	dh_auto_build -- -ldflags "-X github.com/syncthing/syncthing/lib/build.Version=$(ST_DEB_VERSION) \
                                   -X github.com/syncthing/syncthing/lib/build.User=debian \
                                   -X github.com/syncthing/syncthing/lib/build.Host=debian \
                                   -X github.com/syncthing/syncthing/lib/build.Stamp=$(SOURCE_DATE_EPOCH)" \
	                           -tags 'noupgrade purego'

# Don't run tests on architectures that are not supported
# by upstream.
SKIP_TESTS := True

ifneq (,$(filter $(DEB_HOST_ARCH_CPU),amd64 i386))
SKIP_TESTS := False
endif

TEST_OPTS =

ifeq ($(DEB_HOST_ARCH_CPU),i386)
TEST_OPTS += -short
endif

override_dh_auto_test:
	if [ "$(SKIP_TESTS)" = "True" ]; then \
		echo "Skipping tests"; \
	else \
		dh_auto_test -- $(TEST_OPTS); \
	fi

override_dh_installsystemduser:
	# Don't enable user units by default.
	# See bug #1001147.
	dh_installsystemduser --no-enable
