#!/usr/bin/make -f

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk
export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# Erlang gregorian seconds = Unix seconds + seconds from year 0 to 1970
ERLANG_EPOCH := $(shell expr $(SOURCE_DATE_EPOCH) + 62167219200)

%:
	dh $@ --buildsystem=cmake --sourcedirectory=app --builddirectory=app

override_dh_auto_configure:
	cd app/server/ruby/vendor/ruby-beautify/lib && \
	  cp    ruby-beautify.rb ruby-beautify-legacy.rb && \
	  cp -r ruby-beautify    ruby-beautify-legacy && \
	  chmod 644 ruby-beautify-legacy.rb ruby-beautify-legacy/*.rb ruby-beautify-legacy/config/*.rb
	# use system fonts instead of bundled ones
	mkdir -p app/gui/fonts/
	ln -sf /usr/share/fonts/truetype/hack/*.ttf app/gui/fonts/
	# linux-pre-translations.sh
	ruby app/server/ruby/bin/i18n-tool.rb -t
	cp app/gui/utils/ruby_help.tmpl app/gui/utils/ruby_help.h
	ruby app/server/ruby/bin/qt-doc.rb
	# linux-config.sh
	dh_auto_configure -- \
	  -DUSE_SYSTEM_LIBS=ON \
	  -DUSE_SYSTEM_RTMIDI=ON \
	  -DBUILD_IMGUI_INTERFACE=OFF \
	  -DQSCINTILLA_ROOT=/usr/include/$(DEB_HOST_MULTIARCH)/qt6

override_dh_auto_build:
	dh_auto_build
	# linux-post-tau-prod-release.sh
	ln -sfT ../../../../elixir-deps app/server/beam/tau/deps
	cd app/server/beam/tau && \
	  export MIX_ENV=prod MIX_HOME=$$PWD/.mix ERL_COMPILER_OPTIONS=deterministic && \
	  mix local.rebar rebar3 /usr/bin/rebar3 && \
	  mix deps.compile && \
	  mix phx.digest && \
	  mix release --overwrite --no-deps-check
	echo -n "sonic-pi-tau-$(SOURCE_DATE_EPOCH)" | sha256sum | cut -c1-64 \
	  > app/server/beam/tau/_build/prod/rel/tau/releases/COOKIE
	sed -i 's/"mtime":[[:space:]]*[0-9]*/"mtime":$(ERLANG_EPOCH)/g' \
	  app/server/beam/tau/_build/prod/rel/tau/lib/tau-*/priv/static/cache_manifest.json
	find app/server/beam/tau/_build -type f -name "*.bat" -delete
	find app/server -type f -name .gitignore -delete
	# symlink system packages
	for dir in app/server/beam/tau/_build/prod/rel/tau/lib/*; do \
	  name=$$(basename "$$dir"); \
	  if [ -d "/usr/lib/erlang/lib/$$name" ]; then \
	    rm -rf "$$dir"; \
	    ln -sf "/usr/lib/erlang/lib/$$name" "$$dir"; \
	  fi; \
	done
	for dir in app/server/beam/tau/_build/prod/rel/tau/erts-*; do \
	  name=$$(basename "$$dir"); \
	  if [ -d "/usr/lib/erlang/$$name" ]; then \
	    rm -rf "$$dir"; \
	    ln -sf "/usr/lib/erlang/$$name" "$$dir"; \
	  fi; \
	done

override_dh_auto_test:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	cd app/server/ruby/test && \
	  ruby -e 'require "ruby_debian_dev"; include RubyDebianDev; SUPPORTED_RUBY_VERSIONS.each { |v, b| system("#{b} /usr/bin/rake test") or raise "test failed for #{v}" }'
	dh_auto_test
endif

elixir_deps_rebuild:
	cd app/server/beam/tau && \
	  rm -rf deps && \
	  MIX_ENV=prod mix deps.get --only prod
	tar -cJf elixir-deps.tar.xz -C app/server/beam/tau/deps .
