#!/usr/bin/make -f

export DH_OPTIONS

#dh_golang doesn't do this for you
ifeq ($(DEB_HOST_ARCH), i386)
	export GOARCH := 386
else ifeq ($(DEB_HOST_ARCH), amd64)
	export GOARCH := amd64
else ifeq ($(DEB_HOST_ARCH), armhf)
	export GOARCH := arm
else ifeq ($(DEB_HOST_ARCH), arm64)
	export GOARCH := arm64
endif

BUILD_DIR := obj-$(DEB_HOST_GNU_TYPE)
export DH_GOPKG := github.com/git-lfs/git-lfs/v3
# DH_GOLANG_EXCLUDES typically incorporates vendor exclusions
export DH_GOLANG_EXCLUDES := test github.com/olekukonko/ts/* github.com/xeipuuv/* github.com/spf13/cobra/* github.com/kr/* github.com/pkg/errors github.com/alexbrainman/sspi/*
export DH_GOLANG_GO_GENERATE := 1
export PATH := $(CURDIR)/$(BUILD_DIR)/bin:$(PATH)

# by-default, dh_golang only copies *.go and other source - this upsets a bunch of vendor test routines
export DH_GOLANG_INSTALL_ALL := 1
export FORCE_LOCALIZE=true

%:
	mkdir -p /tmp/gocache
	GO111MODULE=on GOFLAGS=-mod=vendor GOCACHE=/tmp/gocache dh $@ --buildsystem=golang --with=golang

override_dh_clean:
	rm -f debian/debhelper.log
	rm -rf man
	dh_clean

override_dh_auto_build:
	FORCE_LOCALIZE=true make trgen
	dh_auto_build
	#dh_golang doesn't do anything here in deb 8, and it's needed in both
	if [ "$(DEB_HOST_GNU_TYPE)" != "$(DEB_BUILD_GNU_TYPE)" ]; then\
		cp -rf $(BUILD_DIR)/bin/*/* $(BUILD_DIR)/bin/; \
	fi
	rm $(BUILD_DIR)/bin/man
	make man

override_dh_strip:
	# strip disabled as golang upstream doesn't support it and it makes go
	# crash. See https://launchpad.net/bugs/1200255.

override_dh_golang:
	# The dh_golang is used to add the Built-using field to the deb.  This is only for reference.
	# As of https://anonscm.debian.org/cgit/collab-maint/dh-golang.git/commit/script/dh_golang?id=7c3fbec6ea92294477fa8910264fe9bd823f21c3
	# dh_golang errors out because the go compiler used was not installed via a package.  Therefore the step is skipped

override_dh_auto_install:
	mkdir -p debian/git-lfs/usr/bin
	cp $(BUILD_DIR)/bin/git-lfs debian/git-lfs/usr/bin/

override_dh_auto_test:
	ln -s ../../../../../../../commands/repos $(BUILD_DIR)/src/github.com/git-lfs/git-lfs/v3/commands/repos
	ln -s ../../../../../bin $(BUILD_DIR)/src/github.com/git-lfs/git-lfs/v3/bin
	#dh_golang uses the wrong dir to test on. This tricks everything into being happy
	DEB_BUILD_GNU_TYPE=$(DEB_HOST_GNU_TYPE) dh_auto_test
	rm $(BUILD_DIR)/src/github.com/git-lfs/git-lfs/v3/commands/repos $(BUILD_DIR)/src/github.com/git-lfs/git-lfs/v3/bin
