#!/usr/bin/make -f
# -*- makefile -*-

DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
endif

name = globus-gram-job-manager-setup-pbs
_name = globus_gram_job_manager_setup_pbs
version = 4.4

INSTALLDIR = $(CURDIR)/debian/tmp
GLOBUSPACKAGEDIR = $(INSTALLDIR)$(_datadir)/globus/packages

_prefix = /usr
_bindir = $(_prefix)/bin
_sbindir = $(_prefix)/sbin
_libdir = $(_prefix)/lib
_datadir = $(_prefix)/share
_mandir = $(_datadir)/man
_docdir = $(_datadir)/doc

perl_vendorlib = $(shell eval "`perl -V:installvendorlib`"; echo $$installvendorlib)

configure: configure-stamp
	:

configure-stamp:
	dh_testdir

	/usr/share/globus/globus-bootstrap.sh

	for f in config.sub config.guess ; do \
	  if [ -e /usr/share/misc/$$f -a ! -e $$f.dist ] ; then \
	    mv $$f $$f.dist ; \
	    cp -f /usr/share/misc/$$f $$f ; \
	  fi ; \
	done

	./configure \
	   --host=$(DEB_HOST_GNU_TYPE) \
	   --build=$(DEB_BUILD_GNU_TYPE) \
	   --prefix=$(_prefix) \
	   --mandir='$${datadir}/man' \
	   --infodir='$${datadir}/info' \
	   --without-flavor \
	   --enable-doxygen

	touch $@

build: build-stamp
	:

build-stamp: configure-stamp
	dh_testdir

	$(MAKE)

	touch $@

clean: cleanup
	:

cleanup:
	dh_testdir
	dh_testroot

	if [ -r Makefile ] ; then $(MAKE) distclean ; fi

	for f in config.sub config.guess ; do \
	  if [ -e $$f.dist ] ; then \
	    mv -f $$f.dist $$f ; \
	  fi ; \
	done

	# Remove autogenerated files

	rm -f aclocal.m4
	rm -f configure
	rm -f config.guess
	rm -f config.sub
	rm -f ltmain.sh
	rm -f mkinstalldirs

	rm -f doxygen/Doxyfile*
	rm -f doxygen/Makefile.am
	rm -f pkgdata/Makefile.am
	rm -f pkgdata/*.filelist
	rm -f pkgdata/*.gpt
	rm -f globus_automake*
	rm -rf autom4te.cache

	rm -rf doxygen/doc

	find . -name Makefile.in -exec rm {} ';'

	rm -f build-stamp configure-stamp

	dh_clean debian/*.install

install: build-stamp
	dh_testdir
	dh_testroot
	dh_clean -k

	$(MAKE) install DESTDIR=$(INSTALLDIR)

	# Register setup
	perl -MGrid::GPT::Setup -e 'my $$metadata = new Grid::GPT::Setup(package_name => "$(_name)", globusdir => "$(INSTALLDIR)$(_prefix)"); $$metadata->finish();'

	# Create perl module
	mkdir -p $(INSTALLDIR)$(perl_vendorlib)/Globus/GRAM/JobManager
	sed -e "s!'@MPIRUN@'!(defined(\$$ENV{MPIRUN}) ? \$$ENV{MPIRUN} : \"mpirun\")!" \
	    -e "s!'@MPIEXEC@'!(defined(\$$ENV{MPIEXEC}) ? \$$ENV{MPIEXEC} : \"mpiexec\")!" \
	    -e "s!'@QSUB@'!(defined(\$$ENV{QSUB}) ? \$$ENV{QSUB} : \"qsub\")!" \
	    -e "s!'@QSTAT@'!(defined(\$$ENV{QSTAT}) ? \$$ENV{QSTAT} : \"qstat\")!" \
	    -e "s!'@QDEL@'!(defined(\$$ENV{QDEL}) ? \$$ENV{QDEL} : \"qdel\")!" \
	    -e "s!@CLUSTER@!(defined(\$$ENV{CLUSTER}) ? \$$ENV{CLUSTER} : 1)!" \
	    -e "s!@CPU_PER_NODE@!(defined(\$$ENV{CPU_PER_NODE}) ? \$$ENV{CPU_PER_NODE} : 1)!" \
	    -e "s!'@REMOTE_SHELL@'!(defined(\$$ENV{REMOTE_SHELL}) ? \$$ENV{REMOTE_SHELL} : \"ssh\")!" \
	    -e "s!'@SOFTENV_DIR@'!(defined(\$$ENV{SOFTENV_DIR}) ? \$$ENV{SOFTENV_DIR} : \"\")!" \
	  $(INSTALLDIR)$(_datadir)/globus/setup/pbs.in > \
	  $(INSTALLDIR)$(perl_vendorlib)/Globus/GRAM/JobManager/pbs.pm

	# Extract validation file
	sed -n '/print VALIDATION_FILE <<EOF/,/^EOF$$/p' \
	  $(INSTALLDIR)$(_datadir)/globus/setup/setup-globus-job-manager-pbs.pl \
	  | sed -e '1d' -e '$$d' > $(INSTALLDIR)$(_datadir)/globus/pbs.rvf

	# Remove some intermediate files
	rm -rf $(INSTALLDIR)$(_datadir)/globus/setup
	sed '/globus\/setup/d' \
	  -i $(GLOBUSPACKAGEDIR)/$(_name)/noflavor_pgm.filelist

	# Move documentation to default debian location
	mv $(INSTALLDIR)$(_docdir)/$(_name) $(INSTALLDIR)$(_docdir)/$(name)
	sed s!doc/$(_name)!doc/$(name)! \
	  -i $(GLOBUSPACKAGEDIR)/$(_name)/noflavor_doc.filelist

	# Use system jquery script
	if [ -r $(INSTALLDIR)$(_docdir)/$(name)/html/jquery.js ] ; then \
	  rm $(INSTALLDIR)$(_docdir)/$(name)/html/jquery.js ; \
	  ln -s /usr/share/javascript/jquery/jquery.js \
	    $(INSTALLDIR)$(_docdir)/$(name)/html/jquery.js ; \
	  echo js:Depends=libjs-jquery >> debian/$(name)-doc.substvars ; \
	else \
	  echo js:Depends= >> debian/$(name)-doc.substvars ; \
	fi

	# Generate package filelists
	cat $(GLOBUSPACKAGEDIR)/$(_name)/noflavor_pgm.filelist \
	  | sed s!^!debian/tmp$(_prefix)! > debian/$(name).install
	cat $(GLOBUSPACKAGEDIR)/$(_name)/noflavor_doc.filelist \
	  | sed s!^!debian/tmp$(_prefix)! > debian/$(name)-doc.install

	echo debian/tmp$(_datadir)/globus/packages/setup/globus_gram_job_manager_service_setup/$(_name).gpt \
	  >> debian/$(name).install
	echo debian/tmp$(perl_vendorlib)/Globus/GRAM/JobManager/pbs.pm \
	  >> debian/$(name).install
	echo debian/tmp$(_datadir)/globus/pbs.rvf \
	  >> debian/$(name).install

binary-indep: install
	dh_testdir
	dh_testroot
	mkdir -p debian/$(name)-doc$(_docdir)
	ln -s $(name) debian/$(name)-doc$(_docdir)/$(name)-doc
	dh_installchangelogs
	dh_installdocs debian/README
	dh_install --fail-missing
	dh_installman
	dh_link
	dh_strip
	dh_compress -X .tag
	dh_fixperms
	dh_perl
	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary-arch:
#	:

binary: binary-indep binary-arch
	:

get-orig-source:
	if [ -r $(name)_$(version).orig.tar.gz ] ; then \
	  echo "$(name)_$(version).orig.tar.gz already exists." ; \
	else \
	  if [ ! -r gt5.0.4-all-source-installer.tar.bz2 ] ; then \
	    echo "Downloading Globus Toolkit release." ; \
	    echo "This should be necessary only once for all globus packages." ; \
	    wget -N http://www-unix.globus.org/ftppub/gt5/5.0/5.0.4/installers/src/gt5.0.4-all-source-installer.tar.bz2 ; \
	  fi ; \
	  echo "Extracting relevant parts of the Globus Toolkit release." ; \
	  tar -xjf gt5.0.4-all-source-installer.tar.bz2 \
	    gt5.0.4-all-source-installer/source-trees/gram/jobmanager/setup/pbs ; \
	  mv gt5.0.4-all-source-installer/source-trees/gram/jobmanager/setup/pbs \
	    $(name)-$(version) ; \
	  echo "Packing it up again." ; \
	  GZIP=-9 tar --exclude=CVS -czf $(name)_$(version).orig.tar.gz \
	    $(name)-$(version) ; \
	  echo "Cleaning up." ; \
	  rm -rf gt5.0.4-all-source-installer $(name)-$(version) ; \
	fi

.PHONY: build clean binary-indep binary-arch binary install configure get-orig-source
