#!/usr/bin/make -f

include /usr/share/dpkg/architecture.mk

# Go 1.26 synctest panics with asynctimerchan!=0 (default).
export GODEBUG := asynctimerchan=0

export DH_GOLANG_GO_GENERATE := 0
export DH_GOLANG_EXCLUDES := \
	kajiya \
	siso-tap \
	subcmd/collector \
	subcmd/ninja/e2etests \
	reapi/reapitest \
	subcmd/auth \
	subcmd/fetch \
	subcmd/proxy \
	o11y/resultstore \
	o11y/trace
export DH_GOLANG_INSTALL_EXTRA := \
	siso/third_party/material_web_components/components-chromium \
	siso/webui/templates siso/webui/static \
	siso/reapi/service_config.json \
	siso/subcmd/recall/rusage.go.in \
	siso/build/buildconfig/encoding.star \
	siso/build/buildconfig/path.star \
	siso/build/buildconfig/runtime.star \
	siso/build/buildconfig/struct.star \
	siso/build/buildconfig/time.star \
	siso/build/buildconfig/lib

BUILDDIR = debian/build/src/go.chromium.org/build

%:
	dh $@ --buildsystem=golang --builddirectory=debian/build

override_dh_auto_build:
	dh_auto_build -- -buildmode=pie
	debian/build/bin/siso man -out debian/siso.1
	cat debian/siso.1.tail >> debian/siso.1

override_dh_auto_install:
	dh_auto_install -- --no-source

NODE_MODULES = $(BUILDDIR)/siso/third_party/material_web_components/components-chromium/node_modules

execute_after_dh_auto_configure:
	# De-vendored JS: copy from Debian-packaged node-lit into build tree
	# (go:embed does not follow symlinks, must be real files)
	for pkg in lit lit-html lit-element; do \
	    cp -a /usr/share/nodejs/$$pkg $(NODE_MODULES)/$$pkg; \
	done
	mkdir -p $(NODE_MODULES)/@lit
	cp -a /usr/share/nodejs/@lit/reactive-element $(NODE_MODULES)/@lit/reactive-element
	cp -a /usr/share/nodejs/@lit/task $(NODE_MODULES)/@lit/task
	cp -a /usr/share/nodejs/@lit-labs $(NODE_MODULES)/@lit-labs

# Tests that are not meaningful inside the build sandbox:
#  - execute/spawnhelper: TestLaunchWithNetworkBlocked forks a child with a
#    blocked network namespace and gets "operation not permitted" in the
#    unshare chroot (sandbox within a sandbox).
#  - siso/webui (tests new in 1.6.3): the HTTP-route tests build the router by
#    globbing out*/* in a temporary workspace and return 404 under the test
#    harness; the webui is an auxiliary debugging UI, not core build logic.
# On 32-bit also skip toolsupport/ninjautil (Go runtime GC crash with large
# nodeMap allocation; see https://reproduce.debian.net/i386/api/v1/builds/213968/log).
SKIP_TESTS := execute/spawnhelper siso/webui
ifeq (32,$(DEB_HOST_ARCH_BITS))
SKIP_TESTS += toolsupport/ninjautil
endif
override_dh_auto_test:
	DH_GOLANG_EXCLUDES="$(DH_GOLANG_EXCLUDES) $(SKIP_TESTS)" \
	    dh_auto_test

override_dh_dwz:
	# dwz cannot process Go binaries with compressed debug sections.
	:
