#!/usr/bin/make -f
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export PYTHON_BIN_PATH=/usr/bin/python3
export TF_IGNORE_MAX_BAZEL_VERSION=1
export HOME=/tmp
# not $(CURDIR), that leads to recursive symlinks
PREFIX=/usr
LIB_PATH=lib/$(DEB_HOST_MULTIARCH)
PKG_VERSION=$(shell dpkg-parsechangelog -S version | cut -d- -f1)
ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS)))
        BAZELOPTS=-s
endif


%:
	dh $@

override_dh_auto_configure:
	printf '%s\n%s\n%s\n%s\n%s\n%s\n%s\n' /usr/lib/python3/dist-packages N N N N -Wno-sign-compare N | ./configure

override_dh_auto_build:
	bazel build \
		-k $(BAZELOPTS)\
		--verbose_failures \
		--repository_cache= \
		--config=opt \
		--copt=-g \
		--proto_compiler=protoc \
		--repo_env=TF_SYSTEM_LIBS=nsync,curl,double_conversion,snappy,gif,zlib,com_google_protobuf,com_github_grpc_grpc,jsoncpp_git,libjpeg_turbo,nasm,png,highwayhash \
		--override_repository=bazel_skylib=$(CURDIR)/debian/mock_repos/bazel_skylib \
		--override_repository=rules_cc=$(CURDIR)/debian/mock_repos/rules_cc \
		--override_repository=rules_java=$(CURDIR)/debian/mock_repos/rules_java \
		//tensorflow:tensorflow_cc
	bazel build \
		-k $(BAZELOPTS)\
		--verbose_failures \
		--repository_cache= \
		--config=opt \
		--copt=-g \
		--proto_compiler=protoc \
		--repo_env=TF_SYSTEM_LIBS=nsync,curl,double_conversion,snappy,gif,zlib,com_google_protobuf,com_github_grpc_grpc,jsoncpp_git,libjpeg_turbo,nasm,png,highwayhash \
		--override_repository=bazel_skylib=$(CURDIR)/debian/mock_repos/bazel_skylib \
		--override_repository=rules_cc=$(CURDIR)/debian/mock_repos/rules_cc \
		--override_repository=rules_java=$(CURDIR)/debian/mock_repos/rules_java \
		//tensorflow:tensorflow_framework
	#generate pkgconfig files
	for libname in tensorflow_cc tensorflow_framework; \
	do \
		sed -r -e 's/^(Version: ).*$$/\1$(PKG_VERSION)/' debian/lib$${libname}.pc.in > debian/lib$${libname}.pc; \
		sed -i -e 's:@PREFIX@:$(PREFIX):' debian/lib$${libname}.pc; \
		sed -i -e 's:@LIB_PATH@:$(LIB_PATH):' debian/lib$${libname}.pc; \
	done


override_dh_install:
	# install pkgconfig files
	mkdir -p debian/tmp/usr/$(LIB_PATH)/pkgconfig/
	mv debian/libtensorflow_cc.pc debian/tmp/usr/$(LIB_PATH)/pkgconfig/
	mv debian/libtensorflow_framework.pc debian/tmp/usr/$(LIB_PATH)/pkgconfig/
	# get rid of spurious .params files
	dh_install
	rm -f debian/libtensorflow-*/usr/lib/$(DEB_HOST_MULTIARCH)/*.params
	chrpath -d debian/libtensorflow-framework2/usr/lib/$(DEB_HOST_MULTIARCH)/*.so.*
	chrpath -d debian/libtensorflow-cc2/usr/lib/$(DEB_HOST_MULTIARCH)/*.so.*
	# make missing .so links until we can persuade the build to do it
	dh_link -p libtensorflow-cc2 usr/lib/$(DEB_HOST_MULTIARCH)/libtensorflow_cc.so.2.3.1 usr/lib/$(DEB_HOST_MULTIARCH)/libtensorflow_cc.so.2
	dh_link -p libtensorflow-dev usr/lib/$(DEB_HOST_MULTIARCH)/libtensorflow_cc.so.2.3.1 usr/lib/$(DEB_HOST_MULTIARCH)/libtensorflow_cc.so
	rsync -av --include=*/ --include=*.h --exclude=* --prune-empty-dirs --chmod=F644 --mkpath bazel-out/k8-opt/bin/tensorflow/  debian/libtensorflow-dev/usr/include/tensorflow

#nobble the tests for now
DEB_BUILD_OPTIONS += nocheck
override_dh_auto_test:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	bazel test \
		-k \
		--verbose_failures \
		--repository_cache= \
		--config=opt \
		--distdir=./debian/dist \
		--repo_env=TF_SYSTEM_LIBS=nsync,curl,double_conversion,snappy,gif,zlib,com_google_protobuf,com_github_grpc_grpc,jsoncpp_git,libjpeg_turbo,nasm \
		--override_repository=bazel_skylib=$(CURDIR)/debian/mock_repos/bazel_skylib \
		--override_repository=rules_cc=$(CURDIR)/debian/mock_repos/rules_cc \
		--override_repository=rules_java=$(CURDIR)/debian/mock_repos/rules_java \
		//tensorflow/cc/...
endif

#dwz needs extra debug space
override_dh_dwz:
	dh_dwz -- -L none

override_dh_clean:
	bazel clean --expunge
	rm -rf /tmp/.cache/bazel
	dh_clean
