#!/usr/bin/make -f

export JAVA_HOME=/usr/lib/jvm/default-java/
export TZ=UTC

include /usr/share/dpkg/pkg-info.mk

# Included clusters
pkg-nb                         := netbeans
base-apisupport                := apisupport3
base-ide                       := ide14
base-java                      := java5
base-nb                        := nb
base-platform                  := platform18

pkg-apisupport                 := libnb-$(base-apisupport)-java
pkg-ide                        := libnb-$(base-ide)-java
pkg-java                       := libnb-$(base-java)-java


NBDIR := /usr/share/netbeans
export JAVADIR := /usr/share/java

JH_JAR           := jhall.jar
JSEARCH_JAR      := jsearch.jar
NB_JH_JAR        := jhall-2.0_05.jar
NB_JSEARCH_JAR   := jsearch-2.0_05.jar

NB_INSTALL_DIR   := usr/share/netbeans


INSTALL          := dh_install -p
LINK             := dh_link -p

BUILDSTAMP := $(shell date --utc --date="`dpkg-parsechangelog -SDate`" "+%Y%m%d")
BUILD_DATE := $(shell dpkg-parsechangelog --show-field=Date)

# Defined function to be used to create symlinks
define symlink
	mkdir -p $(dir $(2))
	ln -sf $(1) $(2)
endef

%:
	dh $@ --with javahelper


override_dh_auto_build:
	# link Debian's system jars
	$(shell awk 'NF==4 {printf("ln -sf %s %s/%s;\n",$$1,$$2,$$4)}' debian/linked-jars)
	# ReproducibleBuilds TimestampsInZip
	# https://wiki.debian.org/ReproducibleBuilds/TimestampsInZip
	find '$(CURDIR)' -newermt '$(BUILD_DATE)' -print0 | \
		xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
	################################################################
	# Build the IDE. DISPLAY must be unset to avoid build failures.
	unset DISPLAY; ant \
	-Dbuildstamp=$(BUILDSTAMP) \
	-Dpermit.jdk9.builds=true \
	-Dvanilla.javac.exists=true \
	-Dbuild.compiler.deprecation=false \
	-Dbuild.compiler.debug=false \
	-Dext.binaries.downloaded=true \
	-Dverify.checkout=false \
	-Dcluster.config=basic \
	-Djhall.jar=/usr/share/java/jsearch.jar \
	-f nbbuild/build.xml build-nozip
	# Convert the *.icns hicolor icon into a png icon
	icns2png -x -s 256x256 -d 32 nb/ide.branding/release/netbeans.icns



override_dh_auto_install:
	# recreate links
	$(shell awk 'NF==4 {printf("ln -sf %s nbbuild/netbeans/%s/%s;\n",$$1,$$3,$$4)}' debian/linked-jars)
	# Install libraries
	mh_installjar -plibnb-absolutelayout-java -l debian/pom/AbsoluteLayout.xml \
		nbbuild/netbeans/java/modules/ext/AbsoluteLayout.jar
	mh_installpom -plibnb-absolutelayout-java debian/pom/AbsoluteLayout.xml
	#
	# Install IDE package files
	echo > nbbuild/netbeans/ide/.noautoupdate
	echo > nbbuild/netbeans/ide/.lastModified
	$(INSTALL)$(pkg-ide) nbbuild/netbeans/ide/*               $(NB_INSTALL_DIR)/$(base-ide)
	$(INSTALL)$(pkg-ide) nbbuild/netbeans/ide/.noautoupdate   $(NB_INSTALL_DIR)/$(base-ide)
	$(INSTALL)$(pkg-ide) nbbuild/netbeans/ide/.lastModified   $(NB_INSTALL_DIR)/$(base-ide)
	# See netbeans-slf4j.dummy.patch for further information
	#$(LINK)$(pkg-ide) usr/share/java/slf4j-api.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/slf4j-dummy.jar
	# Symlink IDE modules to corresponding system jar files
	$(LINK)$(pkg-ide) usr/share/java/jsch.agentproxy.usocket-jna.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/jsch-agentproxy-usocket-jna.jar
	$(LINK)$(pkg-ide) usr/share/java/htmlparser.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/html5-parser.jar
	$(LINK)$(pkg-ide) usr/share/java/jsch.agentproxy.sshagent.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/jsch-agentproxy-sshagent.jar
	$(LINK)$(pkg-ide) usr/share/java/jsch.agentproxy.pageant.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/jsch-agentproxy-pageant.jar
	$(LINK)$(pkg-ide) usr/share/java/jsch.agentproxy.core.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/jsch-agentproxy-core.jar
	$(LINK)$(pkg-ide) usr/share/java/jaxb-api.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/jaxb/jaxb-api.jar
	$(LINK)$(pkg-ide) usr/share/java/xercesImpl.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/xerces-2.8.0.jar
	$(LINK)$(pkg-ide) usr/share/java/simple-validation.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/ValidationAPI.jar
	$(LINK)$(pkg-ide) usr/share/java/asm-all.jar $(NB_INSTALL_DIR)/$(base-ide)/modules/ext/asm-all-5.0.1.jar
	# Make hostinfo.sh executable to silence Lintian warning about script-not-exectuable
	find . -type f -name "hostinfo.sh" -exec chmod a+x {} \;

	# Install Java package files
	echo > nbbuild/netbeans/java/.noautoupdate
	echo > nbbuild/netbeans/java/.lastModified
	$(INSTALL)$(pkg-java) nbbuild/netbeans/extide/*           $(NB_INSTALL_DIR)/$(base-java)
	$(INSTALL)$(pkg-java) nbbuild/netbeans/java/*             $(NB_INSTALL_DIR)/$(base-java)
	$(INSTALL)$(pkg-java) nbbuild/netbeans/java/.noautoupdate $(NB_INSTALL_DIR)/$(base-java)
	$(INSTALL)$(pkg-java) nbbuild/netbeans/java/.lastModified $(NB_INSTALL_DIR)/$(base-java)
	# Link in Ant libraries and binaries
	-rmdir debian/$(pkg-java)/$(NB_INSTALL_DIR)/$(base-java)/ant/lib
	$(LINK)$(pkg-java)    usr/share/ant/bin     $(NB_INSTALL_DIR)/$(base-java)/ant/bin
	$(LINK)$(pkg-java)    usr/share/ant/etc     $(NB_INSTALL_DIR)/$(base-java)/ant/etc
	$(LINK)$(pkg-java)    usr/share/ant/lib     $(NB_INSTALL_DIR)/$(base-java)/ant/lib
	# Link in AbsoluteLayout jar
	-rm debian/$(pkg-java)/$(NB_INSTALL_DIR)/$(base-java)/modules/ext/AbsoluteLayout.jar
	$(LINK)$(pkg-java)    usr/share/java/AbsoluteLayout.jar  $(NB_INSTALL_DIR)/$(base-java)/modules/ext/AbsoluteLayout.jar

	# Install API support package files
	echo > nbbuild/netbeans/apisupport/.noautoupdate
	echo > nbbuild/netbeans/apisupport/.lastModified
	$(INSTALL)$(pkg-apisupport) nbbuild/netbeans/apisupport/*              $(NB_INSTALL_DIR)/$(base-apisupport)
	$(INSTALL)$(pkg-apisupport) nbbuild/netbeans/apisupport/.noautoupdate  $(NB_INSTALL_DIR)/$(base-apisupport)
	$(INSTALL)$(pkg-apisupport) nbbuild/netbeans/apisupport/.lastModified  $(NB_INSTALL_DIR)/$(base-apisupport)
	# Install Netbeans package files
	echo > nbbuild/netbeans/nb/.noautoupdate
	$(INSTALL)$(pkg-nb) nbbuild/netbeans/nb/*               $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/nb
	$(INSTALL)$(pkg-nb) nbbuild/netbeans/nb/.lastModified   $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/nb
	$(INSTALL)$(pkg-nb) nbbuild/netbeans/nb/.noautoupdate   $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/nb
	$(INSTALL)$(pkg-nb) nbbuild/netbeans/bin/*              $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/bin
	$(INSTALL)$(pkg-nb) nbbuild/netbeans/CREDITS.html                 usr/share/$(pkg-nb)
	$(INSTALL)$(pkg-nb) nbbuild/netbeans/README.html                  usr/share/$(pkg-nb)
	$(INSTALL)$(pkg-nb) nbbuild/netbeans/netbeans.css                 usr/share/$(pkg-nb)
	# Install 256x256 netbeans icon to hicolor directory
	mv netbeans_256x256x32.png netbeans.png
	$(INSTALL)$(pkg-nb) netbeans.png usr/share/icons/hicolor/256x256/apps
	$(LINK)$(pkg-nb)    $(NB_INSTALL_DIR)/$(base-platform) $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/platform
	$(LINK)$(pkg-nb)    $(NB_INSTALL_DIR)/harness          $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/harness
	$(LINK)$(pkg-nb)    $(NB_INSTALL_DIR)/$(base-apisupport) $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/apisupport
	$(LINK)$(pkg-nb)    $(NB_INSTALL_DIR)/$(base-ide)        $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/ide
	$(LINK)$(pkg-nb)    $(NB_INSTALL_DIR)/$(base-java)       $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/java

	# Create file marker to avoid displaying license dialog at first IDE start
	echo > debian/license_accepted
	$(INSTALL)$(pkg-nb) debian/license_accepted $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/nb/var
	# Install file productid used by autoupdate to report installation type
	$(INSTALL)$(pkg-nb) debian/productid   $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/nb/config

	# Install netbeans.conf
	$(INSTALL)$(pkg-nb) nbbuild/netbeans/etc/netbeans.conf etc
	$(LINK)$(pkg-nb) etc/netbeans.conf $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/etc/netbeans.conf

	# Install netbeans.clusters
	$(INSTALL)$(pkg-nb) nbbuild/netbeans/etc/netbeans.clusters etc
	$(LINK)$(pkg-nb) etc/netbeans.clusters $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/etc/netbeans.clusters

	# Install netbeans.import which is a required file when importing settings
	# from an older version of Netbeans (see also #808908)
	$(INSTALL)$(pkg-nb) nbbuild/netbeans/etc/netbeans.import etc
	$(LINK)$(pkg-nb) etc/netbeans.import $(NB_INSTALL_DIR)/$(DEB_VERSION_UPSTREAM)/etc/netbeans.import

	# Install launcher
	$(INSTALL)$(pkg-nb) nbbuild/netbeans/bin/netbeans usr/bin

	# Install desktop file
	$(INSTALL)$(pkg-nb) debian/netbeans.desktop usr/share/applications


override_dh_auto_clean:
	# TODO: Find a way to build netbeans twice in a row. At the moment this is
	# not supported.
	mh_clean
	# remove all the symlinks to jar files we created
	find . -name "*.jar" -type l -delete
	# remove all built jar files
	find . -name "*.jar" -delete

override_jh_depends:
	# Skipping jh_depends run - since we use symlinks to /usr/share/java then
	# jh_depends gets it wrong.

