#!/usr/bin/make -f
# -*- makefile -*-

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

PKGDIR=debian/tmp
VERSION=$(shell grep "var Version" $(CURDIR)/shared/flex.go | sed -r -e 's/.*"([0-9\.]*)"/\1/')

# temporary build path (see http://golang.org/doc/code.html#GOPATH)
export DH_GOPKG := github.com/lxc/lxd
export GOPATH := $(CURDIR)/obj-$(DEB_BUILD_GNU_TYPE)
export USE_EMBEDDED := true

%:
	dh $@ --with systemd --buildsystem=golang --with=golang

# Ugly workaround for bundled dependencies
override_dh_auto_build:
	# Get a clean GOPATH
	mv ${GOPATH}/src/github.com/lxc/lxd ${GOPATH}/lxd.tmp
	rm -Rf ${GOPATH}/src

ifeq ($(USE_EMBEDDED), true)
	cp -R dist/src ${GOPATH}
	rm ${GOPATH}/src/github.com/lxc/lxd
endif

	# Setup the build environment
	mkdir -p ${GOPATH}/src/github.com/lxc/
	mv ${GOPATH}/lxd.tmp ${GOPATH}/src/github.com/lxc/lxd

ifeq ($(USE_EMBEDDED), false)
	# Packaged dependencies
	## gosexy/gettext-go
#	mkdir -p ${GOPATH}/src/github.com/gosexy/
#	ln -s /usr/share/gocode/src/github.com/gosexy/gettext ${GOPATH}/src/github.com/gosexy/

	## gorilla/websocket
#	mkdir -p ${GOPATH}/src/github.com/gorilla/
#	ln -s /usr/share/gocode/src/github.com/gorilla/websocket ${GOPATH}/src/github.com/gorilla/

	## olekukonko/tablewriter
	mkdir -p ${GOPATH}/src/github.com/olekukonko/
	ln -s /usr/share/gocode/src/github.com/olekukonko/tablewriter ${GOPATH}/src/github.com/olekukonko/

	## x/crypto
	mkdir -p ${GOPATH}/src/golang.org/x
	ln -s /usr/share/gocode/src/golang.org/x/crypto ${GOPATH}/src/golang.org/x/

	## yaml.v2
	mkdir -p ${GOPATH}/src/gopkg.in/
	ln -s /usr/share/gocode/src/gopkg.in/yaml.v2 ${GOPATH}/src/gopkg.in/

	## dustinkirkland/golang-petname
	mkdir -p ${GOPATH}/src/github.com/dustinkirkland/
	ln -s /usr/share/gocode/src/github.com/dustinkirkland/golang-petname ${GOPATH}/src/github.com/dustinkirkland/golang-petname

	## golang/protobuf
	mkdir -p ${GOPATH}/src/github.com/golang/
	ln -s /usr/share/gocode/src/github.com/golang/protobuf ${GOPATH}/src/github.com/golang/

	## gorilla/context
	mkdir -p ${GOPATH}/src/github.com/gorilla/
	ln -s /usr/share/gocode/src/github.com/gorilla/context ${GOPATH}/src/github.com/gorilla/

	## gorilla/mux
	mkdir -p ${GOPATH}/src/github.com/gorilla/
	ln -s /usr/share/gocode/src/github.com/gorilla/mux ${GOPATH}/src/github.com/gorilla/

	## mattn/go-sqlite3
	mkdir -p ${GOPATH}/src/github.com/mattn/
	ln -s /usr/share/gocode/src/github.com/mattn/go-sqlite3 ${GOPATH}/src/github.com/mattn/

	## pborman/uuid
	mkdir -p ${GOPATH}/src/github.com/pborman/
	ln -s /usr/share/gocode/src/github.com/pborman/uuid ${GOPATH}/src/github.com/pborman/

	## coreos/go-systemd
	mkdir -p ${GOPATH}/src/github.com/coreos/
	ln -s /usr/share/gocode/src/github.com/coreos/go-systemd ${GOPATH}/src/github.com/coreos/

	## syndtr/gocapability
	mkdir -p ${GOPATH}/src/github.com/syndtr/
	ln -s /usr/share/gocode/src/github.com/syndtr/gocapability ${GOPATH}/src/github.com/syndtr/

	## tomb.v2
	mkdir -p ${GOPATH}/src/gopkg.in/
	ln -s /usr/share/gocode/src/gopkg.in/tomb.v2 ${GOPATH}/src/gopkg.in/

	# Alternative packages
	## stgraber/go-systemd
	mkdir -p ${GOPATH}/src/github.com/stgraber/
	ln -s ${GOPATH}/src/github.com/coreos/go-systemd ${GOPATH}/src/github.com/stgraber/lxd-go-systemd

	# Packages that aren't in the archive
	## inconshreveable/log15.v2
	mkdir -p ${GOPATH}/src/gopkg.in/inconshreveable/
	ln -s $(realpath dist/src/gopkg.in/inconshreveable/log15.v2) ${GOPATH}/src/gopkg.in/inconshreveable/log15.v2

	## mattn/go-colorable
	mkdir -p ${GOPATH}/src/github.com/mattn/
	ln -s $(realpath dist/src/github.com/mattn/go-colorable) ${GOPATH}/src/github.com/mattn/

	## flosch/pongo2.v3
	mkdir -p ${GOPATH}/src/gopkg.in/flosch/
	ln -s $(realpath dist/src/gopkg.in/flosch/pongo2.v3) ${GOPATH}/src/gopkg.in/flosch/

	## lxc/go-lxc.v2
	mkdir -p ${GOPATH}/src/gopkg.in/lxc/
	ln -s $(realpath dist/src/gopkg.in/lxc/go-lxc.v2) ${GOPATH}/src/gopkg.in/lxc/

	# Packages that aren't in main yet
	## gosexy/gettext-go
	mkdir -p ${GOPATH}/src/github.com/gosexy/
	ln -s $(realpath dist/src/github.com/gosexy/gettext) ${GOPATH}/src/github.com/gosexy/

	## gorilla/websocket
	mkdir -p ${GOPATH}/src/github.com/gorilla/
	ln -s $(realpath dist/src/github.com/gorilla/websocket) ${GOPATH}/src/github.com/gorilla/
endif

	go install -v github.com/lxc/lxd/lxc
	go install -v github.com/lxc/lxd/lxd
	go install -v github.com/lxc/lxd/fuidshift
	go install -v github.com/lxc/lxd/lxd-bridge/lxd-bridge-proxy

override_dh_install:
	# Install the manpages
	mkdir -p $(PKGDIR)/usr/share/man/man1/
	help2man $(PKGDIR)/usr/bin/fuidshift -n "uid/gid shifter" --no-info > $(PKGDIR)/usr/share/man/man1/fuidshift.1
	help2man $(PKGDIR)/usr/bin/lxc -n "The container hypervisor - client" --no-info > $(PKGDIR)/usr/share/man/man1/lxc.1
	help2man $(PKGDIR)/usr/bin/lxd -n "The container hypervisor - daemon" --no-info > $(PKGDIR)/usr/share/man/man1/lxd.1
	help2man scripts/lxd-images -n "The container hypervisor - image importer" --version-string=$(VERSION) --no-info > $(PKGDIR)/usr/share/man/man1/lxd-images.1

	# Prepare dev package
	rm -Rf $(PKGDIR)/usr/share/gocode/src/github.com/lxc/
	mkdir -p $(PKGDIR)/usr/share/gocode/src/github.com/lxc/
	cp -RL ${GOPATH}/src/github.com/lxc/lxd $(PKGDIR)/usr/share/gocode/src/github.com/lxc/
	rm -Rf $(PKGDIR)/usr/share/gocode/src/github.com/lxc/lxd/dist

	# Trigger normal dh_install
	dh_install

override_dh_installinit:
	dh_installinit
	dh_systemd_enable -plxd --name=lxd-startup

override_dh_auto_test:
	echo "The testsuite requires privileges and so is run through autopkgtest"
