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

name = globus-rls-server
_name = globus_rls_server
version = 4.9

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

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

DEB_HOST_ARCH_BITS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

ifeq ($(DEB_HOST_ARCH_BITS), 64)
flavor = gcc64-$(DEB_HOST_MULTIARCH)
else
flavor = gcc32-$(DEB_HOST_MULTIARCH)
endif

sed: sed-stamp

sed-stamp:
	dh_testdir

	for f in server.c Doc/man/man8/globus-rls-server.8 ; do \
	  sed 's!/usr/local/etc!/etc!g' -i $$f ; \
	done

	touch $@

unsed:
	dh_testdir

	if [ -e sed-stamp ] ; then \
	  for f in server.c Doc/man/man8/globus-rls-server.8 ; do \
	    sed 's!\([ \"]\)/etc!\1/usr/local/etc!g' -i $$f ; \
	  done ; \
	fi

	rm -f sed-stamp

configure: configure-stamp

configure-stamp: sed-stamp
	dh_testdir

	dh_autotools-dev_updateconfig

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

	./configure \
	   --disable-static \
	   --with-flavor=$(flavor) \
	   --with-docdir=$(_docdir)

	# Reduce overlinking
	sed 's!CC -shared !CC \\$${wl}--as-needed -shared !g' -i libtool

	cd setup && /usr/share/globus/globus-bootstrap.sh

	cd setup && ./configure \
	   --disable-static \
	   --without-flavor \
	   --with-docdir=$(_docdir)

	touch $@

build: build-arch build-indep

build-arch: build-stamp

build-indep:

build-stamp: configure-stamp
	dh_testdir

	$(MAKE)

	cd setup && $(MAKE)

	touch $@

clean: unsed
	dh_testdir
	dh_testroot

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

	dh_autotools-dev_restoreconfig

	# Remove autogenerated files

	rm -f aclocal.m4
	rm -f compile
	rm -f configure
	rm -f install-sh
	rm -f ltmain.sh
	rm -f missing
	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 pkgdata/$(name).pc
	rm -f pkgdata/pkg_data_src.pc.in
	rm -f gptdata.sh
	rm -f globus_automake*
	rm -rf autom4te.cache

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

	# Remove autogenerated files

	rm -f setup/aclocal.m4
	rm -f setup/compile
	rm -f setup/configure
	rm -f setup/install-sh
	rm -f setup/ltmain.sh
	rm -f setup/missing
	rm -f setup/mkinstalldirs

	rm -f setup/doxygen/Doxyfile*
	rm -f setup/doxygen/Makefile.am
	rm -f setup/pkgdata/Makefile.am
	rm -f setup/pkgdata/*.filelist
	rm -f setup/pkgdata/*.gpt
	rm -f setup/pkgdata/$(name)-setup.pc
	rm -f setup/pkgdata/pkg_data_src.pc.in
	rm -f setup/gptdata.sh
	rm -f setup/globus_automake*
	rm -rf setup/autom4te.cache

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

	rm -f build-stamp configure-stamp

	dh_clean debian/*.install

install: build-stamp
	dh_testdir
	dh_testroot
	dh_prep

	$(MAKE) install DESTDIR=$(INSTALLDIR)

	cd setup && $(MAKE) install DESTDIR=$(INSTALLDIR)

	# This script is intended to be sourced, not executed
	chmod 644 $(INSTALLDIR)$(_datadir)/globus/setup/setup-globus-rls-server.pl

	# Remove the SXXrls.in file
	rm $(INSTALLDIR)$(_datadir)/globus/setup/SXXrls.in
	sed /SXXrls.in/d \
	  -i  $(GLOBUSPACKAGEDIR)/$(_name)_setup/noflavor_data.filelist
	sed -e 's/"SXXrls", //' -e '/SXXrls/d' \
	  -i $(INSTALLDIR)$(_datadir)/globus/setup/setup-globus-rls-server.pl

	# Fix man page section
	sed 's!^\(\.TH.*\) 1 !\1 8 !' \
	  $(INSTALLDIR)$(_mandir)/man1/globus-rls-reporter.1 > \
	  $(INSTALLDIR)$(_mandir)/man8/globus-rls-reporter.8
	rm $(INSTALLDIR)$(_mandir)/man1/globus-rls-reporter.1
	sed 's!/man1/\(.*\)\.1!/man8/\1.8!' \
	  -i $(GLOBUSPACKAGEDIR)/$(_name)/noflavor_doc.filelist

	# Create setup files
	mkdir -p $(INSTALLDIR)/etc
	cat $(INSTALLDIR)$(_datadir)/globus/setup/odbc.ini.in \
	  | sed -e s!@libdir@!$(_libdir)/odbc!g \
	        -e s!@localstatedir@!/var/lib/$(name)!g \
	        -e s!libmyodbc3_r!libmyodbc!g \
	        -e s!psqlodbc!psqlodbcw!g \
	        -e s!@SQLITEODBCFLAVOR@!!g \
	        -e s!@LIBSUFFIX@!so!g \
	  > $(INSTALLDIR)/etc/$(name)-odbc.ini
	cat $(INSTALLDIR)$(_datadir)/globus/setup/$(name).conf.in \
	  | sed -e s!@ODBCINI@!/etc/$(name)-odbc.ini!g \
	        -e 's!^odbcini.*$$!&\npidfile\t\t\t/var/run/$(name).pid!g' \
	  > $(INSTALLDIR)/etc/$(name).conf
	chmod 600 $(INSTALLDIR)/etc/$(name).conf
	cat $(INSTALLDIR)$(_datadir)/globus/setup/rls-ldif.conf.in \
	  | sed s!@sbindir@!$(_sbindir)!g \
	  > $(INSTALLDIR)/etc/rls-ldif.conf

	# Remove pkg-config files...
	rm $(INSTALLDIR)$(_libdir)/pkgconfig/$(name).pc
	rm $(INSTALLDIR)$(_prefix)/lib/pkgconfig/$(name)-setup.pc
	rm $(GLOBUSPACKAGEDIR)/$(_name)/$(flavor)_dev.filelist
	rm $(GLOBUSPACKAGEDIR)/$(_name)/pkg_data_$(flavor)_dev.gpt
	rm $(GLOBUSPACKAGEDIR)/$(_name)_setup/noflavor_dev.filelist
	rm $(GLOBUSPACKAGEDIR)/$(_name)_setup/pkg_data_noflavor_dev.gpt

	# Remove installed license file
	rm -f $(INSTALLDIR)$(_docdir)/GLOBUS_LICENSE
	sed /GLOBUS_LICENSE/d \
	  -i $(GLOBUSPACKAGEDIR)/$(_name)/noflavor_doc.filelist

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

	echo debian/tmp/etc/$(name)-odbc.ini \
	  >> debian/$(name).install
	echo debian/tmp/etc/$(name).conf \
	  >> debian/$(name).install
	echo debian/tmp/etc/rls-ldif.conf \
	  >> debian/$(name).install

binary: binary-arch binary-indep

binary-arch: install
	dh_testdir
	dh_testroot
	dh_installdocs debian/README
	dh_installchangelogs
	dh_install --fail-missing
	dh_installman
	dh_lintian
	# We should start after and stop before mysql
	dh_installinit -- start 82 2 3 4 5 . stop 18 0 1 6 .
	dh_link
	dh_strip --dbg-package=$(name)-dbg
	dh_compress
	dh_fixperms -X globus-rls-server.conf
	dh_perl
	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary-indep:

get-orig-source:
	if [ -r $(name)_$(version).orig.tar.gz ] ; then \
	  echo "$(name)_$(version).orig.tar.gz already exists." ; \
	else \
	  if [ ! -r gt5.0.0-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.0/installers/src/gt5.0.0-all-source-installer.tar.bz2 ; \
	  fi ; \
	  echo "Extracting relevant parts of the Globus Toolkit release." ; \
	  tar -xjf gt5.0.0-all-source-installer.tar.bz2 \
	    gt5.0.0-all-source-installer/source-trees/replica/rls/server \
	    gt5.0.0-all-source-installer/source-trees/replica/rls/setup ; \
	  mv gt5.0.0-all-source-installer/source-trees/replica/rls/server \
	    $(name)-$(version) ; \
	  mv gt5.0.0-all-source-installer/source-trees/replica/rls/setup \
	    $(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.0-all-source-installer $(name)-$(version) ; \
	fi

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