#!/usr/bin/make -f

export DH_GOLANG_BUILDPKG := github.com/GoogleCloudPlatform/guest-agent/google_guest_agent github.com/GoogleCloudPlatform/guest-agent/google_metadata_script_runner github.com/GoogleCloudPlatform/guest-agent/gce_workload_cert_refresh
export DH_GOLANG_INSTALL_EXTRA := vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb
export GOTOOLCHAIN=local
export GOCACHE := $(CURDIR)/_build/go-build-cache
export GOTMPDIR := $(CURDIR)/_build/go-tmp

VERSION := $(shell dpkg-parsechangelog -S Version)

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

override_dh_auto_configure:
	# Dependencies for the "main" guest-agent repo:
	rm -rf vendor
	cp -a debian/extra/vendor vendor

	# Add on repo vendor for google-guest-agent
	rm -rf google-guest-agent/vendor
	cp -a debian/extra/vendor-google-guest-agent/vendor google-guest-agent/vendor

	dh_auto_configure

override_dh_auto_build:
	mkdir -p "$(GOCACHE)" "$(GOTMPDIR)"
	dh_auto_build -O--buildsystem=golang -- -ldflags="-s -w -X main.version=$(VERSION)"

	# Build the add on binaries from the vendored google-guest-agent repo
	cd google-guest-agent && \
	GOFLAGS=-mod=vendor go build -o cmd/core_plugin/core_plugin ./cmd/core_plugin && \
	GOFLAGS=-mod=vendor go build -o cmd/google_guest_agent/google_guest_agent ./cmd/google_guest_agent && \
	GOFLAGS=-mod=vendor go build -o cmd/google_guest_compat_manager/google_guest_compat_manager ./cmd/google_guest_compat_manager && \
	GOFLAGS=-mod=vendor go build -o cmd/gce_metadata_script_runner/gce_metadata_script_runner ./cmd/gce_metadata_script_runner && \
	GOFLAGS=-mod=vendor go build -o cmd/metadata_script_runner_compat/gce_compat_metadata_script_runner ./cmd/metadata_script_runner_compat && \
	GOFLAGS=-mod=vendor go build -o cmd/ggactl/ggactl_plugin ./cmd/ggactl

override_dh_auto_install:
	# Binary-only package.
	dh_auto_install -- --no-source
	install -d debian/google-guest-agent/usr/share/google-guest-agent
	sed -i "s/vlan_setup_enabled = false/vlan_setup_enabled = true/g" instance_configs.cfg
	install -p -m 0644 instance_configs.cfg debian/google-guest-agent/usr/share/google-guest-agent
	install -d debian/google-guest-agent/lib/systemd/system
	install -p -m 0644 *.service debian/google-guest-agent/lib/systemd/system/
	install -p -m 0644 gce-workload-cert-refresh.timer debian/google-guest-agent/lib/systemd/system/

	install -d debian/google-guest-agent/usr/lib/google/guest_agent
	install -d debian/google-guest-agent/usr/bin
	install -p -m 0755 google-guest-agent/cmd/gce_metadata_script_runner/gce_metadata_script_runner debian/google-guest-agent/usr/bin/gce_metadata_script_runner
	install -p -m 0755 google-guest-agent/cmd/google_guest_compat_manager/google_guest_compat_manager debian/google-guest-agent/usr/bin/google_guest_compat_manager
	install -p -m 0755 google-guest-agent/cmd/google_guest_agent/google_guest_agent debian/google-guest-agent/usr/bin/google_guest_agent_manager
	install -p -m 0755 google-guest-agent/cmd/core_plugin/core_plugin debian/google-guest-agent/usr/lib/google/guest_agent/core_plugin
	install -p -m 0755 google-guest-agent/cmd/metadata_script_runner_compat/gce_compat_metadata_script_runner debian/google-guest-agent/usr/bin/gce_compat_metadata_script_runner

	install -p -m 0755 google-guest-agent/cmd/ggactl/ggactl_plugin debian/google-guest-agent/usr/bin/ggactl_plugin
	ln -sf ggactl_plugin debian/google-guest-agent/usr/bin/ggactl_plugin_cleanup
	install -d debian/google-guest-agent/usr/sbin
	ln -sf ../bin/ggactl_plugin debian/google-guest-agent/usr/sbin/ggactl_plugin
	ln -sf ../bin/ggactl_plugin debian/google-guest-agent/usr/sbin/ggactl_plugin_cleanup
	install -p -m 0755 google_metadata_script_runner_adapt debian/google-guest-agent/usr/bin/

override_dh_systemd_enable:
	install -d debian/google-guest-agent/lib/systemd/system
	install -p -m 0644 *.service debian/google-guest-agent/lib/systemd/system/

	dh_systemd_enable google-guest-agent.service google-startup-scripts.service google-shutdown-scripts.service gce-workload-cert-refresh.timer
	dh_systemd_enable google-guest-compat-manager.service
	dh_systemd_enable google-guest-agent-manager.service

override_dh_systemd_start:
	# Only perform start/stop actions for the guest agent and cert refresh timer.
	dh_systemd_start google-guest-agent.service
	dh_systemd_start gce-workload-cert-refresh.timer
	dh_systemd_start google-guest-compat-manager.service
	dh_systemd_start google-guest-agent-manager.service

override_dh_installsystemd:
	if [ -d google-guest-agent ]; then \
		dh_installsystemd google-guest-compat-manager.service google-guest-agent-manager.service; \
		dh_installsystemd --no-enable --no-start google-guest-agent.service gce-workload-cert-refresh.timer; \
	else \
		dh_installsystemd google-guest-agent.service gce-workload-cert-refresh.timer; \
	fi

	dh_installsystemd --no-start --no-restart-after-upgrade --no-stop-on-upgrade google-startup-scripts.service google-shutdown-scripts.service

override_dh_clean:
	dh_clean vendor/
	rm -rf google-guest-agent/vendor
