#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.

# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1


export QUANTUMDEPTH ?= Q16
export CORESOVERSION ?= 2
export WANDSOVERSION ?= 2
export PPSOVERSION ?= 5v5

# for hardening
# export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

export STATIC_DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_HOST_GNU_TYPE  ?= $(STATIC_DEB_HOST_GNU_TYPE)
export STATIC_DEB_HOST_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
export DEB_HOST_MULTIARCH ?= $(STATIC_DEB_HOST_MULTIARCH)
export STATIC_DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
export DEB_BUILD_GNU_TYPE ?= $(STATIC_DEB_BUILD_GNU_TYPE)
export STATIC_DEB_SOURCE_PACKAGE := $(strip $(shell egrep '^Source: ' debian/control | cut -f 2 -d ':'))
export DEB_SOURCE_PACKAGE ?= $(STATIC_DEB_SOURCE_PACKAGE)
export STATIC_DEB_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ')
export DEB_VERSION ?= $(STATIC_DEB_VERSION)
export STATIC_DEB_NOEPOCH_VERSION := $(shell echo $(DEB_VERSION) | cut -d: -f2-)
export DEB_NOEPOCH_VERSION ?= $(STATIC_DEB_NOEPOCH_VERSION)
export STATIC_DEB_UPSTREAM_VERSION := $(shell echo $(DEB_NOEPOCH_VERSION) | sed 's/-[^-]*$$//')
export DEB_UPSTREAM_VERSION ?= $(STATIC_DEB_UPSTREAM_VERSION)
export STATIC_DEB_ISNATIVE := $(shell dpkg-parsechangelog | egrep '^Version:' | perl -ne 'print if not /^Version:\s*.*-/;')
export DEB_ISNATIVE ?= $(STATIC_DEB_ISNATIVE)

export STATIC_DEB_UPSTREAM_VERSION_DROPREVISION := $(shell echo $(DEB_UPSTREAM_VERSION) |  sed -r "s/(^.+)\..+$$/\1/g")
export DEB_UPSTREAM_VERSION_DROPREVISION ?= $(STATIC_DEB_UPSTREAM_VERSION_DROPREVISION)
export STATIC_DEB_UPSTREAM_VERSION_MAJOR := $(shell echo $(DEB_UPSTREAM_VERSION) | sed -r "s/(^[[:digit:]]+)\..+$$/\1/g")
export DEB_UPSTREAM_VERSION_MAJOR ?= $(STATIC_DEB_UPSTREAM_VERSION_MAJOR)
export IMVERSION := $(DEB_UPSTREAM_VERSION_MAJOR)

# quantum depth used by default and by quantum independant package (first one of QUANTUMDEPTH)
export DEFAULTQUANTUMDEPTH := $(shell echo $(QUANTUMDEPTH) | cut -f 1 -d ' ')
export NOQUANTUMDEPTH := $(shell echo $(QUANTUMDEPTH) | cut -f 1 -d ' ')

# convert 
export CONVERT ?= ./magick.sh convert
export CONVERT_FLAGS ?= -background none -define filter:blur=0.75 -filter Gaussian

# perl
export DEB_PERL_ARCHLIB := $(shell perl -MConfig -e 'print $$Config{vendorarch}')

# put QUANTUMDEPTH in lower case for package name
#export QUANTUMDEPTH_LOWER ?= $(shell echo $(QUANTUMDEPTH) | sed -e 's/\(.*\)/\L\1/'))

export STATIC_CONFIGURE_CACHEFILE := config.cache
export CONFIGURE_CACHEFILE ?= $(STATIC_CONFIGURE_CACHEFILE)

export STATIC_CONFIGURE_OPTIONS_CACHE := \
       --cache-file=../../$(CONFIGURE_CACHEFILE)
export CONFIGURE_OPTIONS_CACHE ?= $(STATIC_CONFIGURE_OPTIONS_CACHE)
# disable arch optimization see #757996 and AX_GCC_ARCHFLAG m4 macro
export STATIC_CONFIGURE_ARCH_FLAGS := --without-gcc-arch
export CONFIGURE_ARCH_FLAGS ?= $(STATIC_CONFIGURE_ARCH_FLAGS)

# check if FPU
HAVE_FPU_CMD:= case $(DEB_HOST_MULTIARCH) in \
		mips*-*) \
			if grep " FPU" /proc/cpuinfo > /dev/null; then \
				echo "yes"; \
			else \
				echo "no"; \
			fi ;;\
		*) \
			echo "yes" ;; \
	       esac
export STATIC_HAVE_FPU := $(shell $(HAVE_FPU_CMD))

test_fpu_is present:
	echo "CPU has FPU...$(STATIC_HAVE_FPU)"

# NOTICE: remove EPL delegate lib gvc (license problem)
export STATIC_CONFIGURE_OPTIONS := \
	--prefix=/usr \
        --libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \
	--sysconfdir=/etc \
	--with-includearch-dir=/usr/include/$(DEB_HOST_MULTIARCH)/ \
	--mandir=/usr/share/man \
	--infodir=/usr/share/info \
	--docdir=/usr/share/doc/imagemagick \
	--with-modules \
	--with-gs-font-dir=/usr/share/fonts/type1/gsfonts \
	--with-magick-plus-plus \
	--with-djvu \
        --with-wmf \
        --without-gvc \
	--enable-shared \
	--without-dps \
	--without-fpx \
	--with-perl \
	--with-perl-options='INSTALLDIRS=vendor' \
	--x-includes=/usr/include/X11 \
	--x-libraries=/usr/lib/X11 \
	--with-rsvg
export CONFIGURE_OPTIONS ?= $(STATIC_CONFIGURE_OPTIONS) \
			    $(CONFIGURE_OPTIONS_CACHE) \
			    $(CONFIGURE_ARCH_FLAGS)

%:
	@echo "Build $(DEB_SOURCE_PACKAGE) version $(DEB_VERSION) for quantum $(QUANTUMDEPTH)"
	if test "BUG#703261" = "SOLVED"; then \
		dh $@ --parallel --with autoreconf --with pkgkde_symbolshelper; \
	else \
		dh $@ --with autoreconf --with pkgkde_symbolshelper; \
	fi;

override_dh_autoreconf:
	 dh_autoreconf --as-needed

# configure in build directory
quantum_override_dh_auto_configure-arch_%: 
	dh_auto_configure --builddirectory="debian/build-quantum-$*" -- \
		 ${CONFIGURE_OPTIONS} \
		--disable-silent-rules \
		--with-quantum-depth=${shell echo $* | sed -r 's/q?([[:digit:]]*)(HDRI)?/\1/gi'}

override_dh_auto_configure-arch: quantum_override_dh_auto_configure-arch_Q16

override_dh_auto_configure-indep:
	dh_auto_configure --builddirectory="debian/build-quantum-indep" -- \
		 ${CONFIGURE_OPTIONS} \
		--with-quantum-depth=${shell echo $(NOQUANTUMDEPTH)  | sed -r 's/q?([[:digit:]]*)(HDRI)?/\1/gi'}
	# HACK: create default quantum package Makefile
	cd debian/build-quantum-indep/PerlMagick/default/ && perl Makefile.PL INSTALLDIRS=vendor

# dh_auto_build in build directory
# build icons cache build for each arch in order to get more testing 
quantum_override_dh_auto_build-arch_%:
	dh_auto_build --builddirectory="debian/build-quantum-$*" -- all perl-build

override_dh_auto_build-arch: quantum_override_dh_auto_build-arch_Q16
override_dh_auto_build-indep:
        # generate html doc
	dh_auto_build --builddirectory="debian/build-quantum-indep" -- html
	cd debian/build-quantum-indep/PerlMagick/default/ && make

# dh_auto_test in build directory
# display log in case of failure
quantum_override_dh_auto_test-arch_%:
	if test "BUG#703262" = "SOLVED" ; then \
        unset DISPLAY; \
	if ! dh_auto_test --builddirectory="debian/build-quantum-$*"; then \
		find "debian/build-quantum-$*/tests" -name *.log -exec cat {} \; ; \
	fi; \
	else \
	if test "$(DEB_HOST_GNU_TYPE)" = "$(DEB_BUILD_GNU_TYPE)"; then \
	    if test X$(STATIC_HAVE_FPU) = "Xyes"; then \
		unset DISPLAY; \
		if ! dh_auto_test --builddirectory="debian/build-quantum-$*"; then \
			find "debian/build-quantum-$*/tests" -name *.log -exec cat {} \; ; \
	    	fi; \
	    fi ;\
	fi; \
	fi
override_dh_auto_test-arch: quantum_override_dh_auto_test-arch_Q16
override_dh_auto_test-indep:


# dh_auto_install in build directory
quantum_override_dh_auto_install-arch_%:
	dh_auto_install --builddirectory="debian/build-quantum-$*" \
	                --destdir="debian/tmp-$*" \
		        -- install pkgdocdir=/usr/share/doc/imagemagick-common V=1

	# empties dependency_libs from .la files
	# http://lists.debian.org/debian-devel/2009/08/msg00783.html
	find $(CURDIR)/debian/tmp-$*/usr/lib -name '*.la' -exec \
		sed -i "s,^dependency_libs=.*,dependency_libs=''," {} \;
	# Remove RPATH from *.so
	find $(CURDIR)/debian/tmp-$* -name '*.so*' -exec \
		chrpath -d {} \;

	# move binaries to /usr/lib/bin
	# TODO: proper patch upstream
	if ! test -d "debian/tmp-$*/usr/lib/$(DEB_HOST_MULTIARCH)/ImageMagick-$(DEB_UPSTREAM_VERSION_DROPREVISION)/bin-$(DEFAULTQUANTUMDEPTH)/"; then \
		mkdir -p "debian/tmp-$*/usr/lib/$(DEB_HOST_MULTIARCH)/ImageMagick-$(DEB_UPSTREAM_VERSION_DROPREVISION)/bin-$(DEFAULTQUANTUMDEPTH)/"; \
	fi;
	while read FILE; do \
           if echo $$FILE | grep usr/bin > /dev/null; then \
              filename=`echo "$$FILE"|sed 's/-\*//g'`; \
	      basename=`basename $$filename`; \
	      if ! test -f debian/tmp-$*/usr/lib/$(DEB_HOST_MULTIARCH)/ImageMagick-$(DEB_UPSTREAM_VERSION_DROPREVISION)/bin-$(DEFAULTQUANTUMDEPTH)/$$basename ; then \
                cp -f "debian/tmp-$*/usr/bin/$$basename" \
                      "debian/tmp-$*/usr/lib/$(DEB_HOST_MULTIARCH)/ImageMagick-$(DEB_UPSTREAM_VERSION_DROPREVISION)/bin-$(DEFAULTQUANTUMDEPTH)/"; \
              else \
                true; \
              fi; \
            else \
              true; \
            fi ;\
        done < debian/imagemagick.install

	# move config script to arch directory
	# TODO: remove after jessie +1
	for SCRIPT in Magick-config MagickCore-config MagickWand-config Wand-config Magick++-config; do \
		cp -f "debian/tmp-$*/usr/bin/$$SCRIPT" \
                      "debian/tmp-$*/usr/lib/$(DEB_HOST_MULTIARCH)/ImageMagick-$(DEB_UPSTREAM_VERSION_DROPREVISION)/bin-$(DEFAULTQUANTUMDEPTH)/"; \
	done;


	# build icons cache (build for each arch in order to get more testing)
	while read SIZE; do \
		mkdir -p $(CURDIR)/debian/tmp-$*/usr/share/icons/hicolor/$$SIZE/apps/ ;\
		cd $(CURDIR)/debian/build-quantum-$*; \
		echo "Make icons for size $$SIZE..."; \
		$(CONVERT) $(CURDIR)/debian/display-im$(DEB_UPSTREAM_VERSION_MAJOR).svg \
	                   $(CONVERT_FLAGS) -resize $$SIZE \
	                   -gravity center -extent $$SIZE  \
			   $(CURDIR)/debian/tmp-$*/usr/share/icons/hicolor/$$SIZE/apps/display-im$(DEB_UPSTREAM_VERSION_MAJOR).${shell echo $* | sed -e 's/\(.*\)/\L\1/'}.png; \
		echo "Done"; \
	done < $(CURDIR)/debian/display-im$(DEB_UPSTREAM_VERSION_MAJOR).iconssize
	# make xpm
	mkdir -p $(CURDIR)/debian/tmp-$*/usr/share/pixmaps/
	cd $(CURDIR)/debian/build-quantum-$*; \
	echo "Make xpm size 32x32..." ; \
	$(CONVERT) $(CURDIR)/debian/display-im$(DEB_UPSTREAM_VERSION_MAJOR).svg $(CONVERT_FLAGS) -resize 32x32 \
                -gravity center -extent 32x32  \
		$(CURDIR)/debian/tmp-$*/usr/share/pixmaps/display-im$(DEB_UPSTREAM_VERSION_MAJOR).${shell echo $* | sed -e 's/\(.*\)/\L\1/'}.xpm ;\
	echo "Done"
	# do not forget svgz
	mkdir -p $(CURDIR)/debian/tmp-$*/usr/share/icons/hicolor/scalable/apps/
	gzip -c -n -9 $(CURDIR)/debian/display-im$(DEB_UPSTREAM_VERSION_MAJOR).svg \
		> $(CURDIR)/debian/tmp-$*/usr/share/icons/hicolor/scalable/apps/display-im$(DEB_UPSTREAM_VERSION_MAJOR).${shell echo $* | sed -e 's/\(.*\)/\L\1/'}.svgz

	# add desktop for default
	mkdir -p debian/tmp-$*/usr/share/applications/
	sed < $(CURDIR)/debian/display.desktop.in \
		-e s/\$$\(QUANTUMDEPTH\)/$*/g \
		-e s/\$$\(LCQUANTUMDEPTH\)/${shell echo $* | sed -e 's/\(.*\)/\L\1/'}/g \
		-e s/\$$\(IMVERSION\)/$(IMVERSION)/g \
	        -e s/\$$\(DEB_HOST_MULTIARCH\)/$(DEB_HOST_MULTIARCH)/g \
		-e s/\$$\(DEB_UPSTREAM_VERSION_DROPREVISION\)/$(DEB_UPSTREAM_VERSION_DROPREVISION)/g \
		> $(CURDIR)/debian/tmp-$*/usr/share/applications/display-im$(IMVERSION).${shell echo $* | sed -e 's/\(.*\)/\L\1/'}.desktop

	# Remove empty directories in debian/tmp
	-find $(CURDIR)/debian/tmp-$* -type d -empty | xargs -r rmdir -p

override_dh_auto_install-arch: quantum_override_dh_auto_install-arch_Q16
	# add versionned manpages and symlink to binaries (should move to script the link to /usr/lib ?)
	mkdir -p debian/tmp-$(DEFAULTQUANTUMDEPTH)/usr/bin/
	while read FILE; do \
                if echo $$FILE | grep usr/bin > /dev/null; then \
                        filename=`echo "$$FILE"|sed 's/-\*//g'`; \
                        basename=`basename $$filename`; \
                        mv "$(CURDIR)/debian/tmp-$(DEFAULTQUANTUMDEPTH)/usr/share/man/man1/$$basename.1" \
                          "$(CURDIR)/debian/tmp-$(DEFAULTQUANTUMDEPTH)/usr/share/man/man1/$$basename-im$(DEB_UPSTREAM_VERSION_MAJOR).1" ;\
			ln -s "/usr/lib/$(DEB_HOST_MULTIARCH)/ImageMagick-$(DEB_UPSTREAM_VERSION_DROPREVISION)/bin-$(DEFAULTQUANTUMDEPTH)/$$basename" \
	                      "debian/tmp-$(DEFAULTQUANTUMDEPTH)/usr/bin/$$basename-im$(DEB_UPSTREAM_VERSION_MAJOR)";\
                else \
                        true; \
                fi \
        done < debian/imagemagick.install

	# Fix HTML location inside manpages (TODO proper patch please)
	sed -i 's/doc\/ImageMagick-$(DEB_UPSTREAM_VERSION_DROPREVISION)/doc\/imagemagick-common/' \
		$(CURDIR)/debian/tmp-$(DEFAULTQUANTUMDEPTH)/usr/share/man/man*/*
	sed -i 's/doc\/ImageMagick\\-$(DEB_UPSTREAM_VERSION_DROPREVISION)/doc\/imagemagick-common/' \
		$(CURDIR)/debian/tmp-$(DEFAULTQUANTUMDEPTH)/usr/share/man/man*/*

	# add desktop for default version
	mkdir -p $(CURDIR)/debian/tmp-indep/usr/share/applications/
	sed < $(CURDIR)/debian/display-im6.desktop.in \
		-e s/\$$\(QUANTUMDEPTH\)/$(DEFAULTQUANTUMDEPTH)/g \
		-e s/\$$\(LCQUANTUMDEPTH\)/${shell echo $(DEFAULTQUANTUMDEPTH) | sed -e 's/\(.*\)/\L\1/'}/g \
		-e s/\$$\(IMVERSION\)/$(IMVERSION)/g \
	        -e s/\$$\(DEB_HOST_MULTIARCH\)/$(DEB_HOST_MULTIARCH)/g \
		-e s/\$$\(DEB_UPSTREAM_VERSION_DROPREVISION\)/$(DEB_UPSTREAM_VERSION_DROPREVISION)/g \
		> $(CURDIR)/debian/tmp-$(DEFAULTQUANTUMDEPTH)/usr/share/applications/display-im$(IMVERSION).desktop


	# Remove empty directories in debian/tmp
	-find $(CURDIR)/debian/tmp-$(DEFAULTQUANTUMDEPTH) -type d -empty | xargs -r rmdir -p

override_dh_auto_install-indep:
	if test "BUG#703261" = "SOLVED"; then \
	dh_auto_install --builddirectory="$(CURDIR)/debian/build-quantum-indep" \
	                --destdir="$(CURDIR)/debian/tmp-indep" \
		        --  install-configlibDATA install-data-html \
	                    install-magickincHEADERS  install-wandincHEADERS install-magickppincHEADERS install-magickpptopincHEADERS \
			    install-man1 \
	                    pkgdocdir=/usr/share/doc/imagemagick-common \
			    V=1;\
	else \
	cd "$(CURDIR)/debian/build-quantum-indep" && \
		make  DESTDIR=$(CURDIR)/debian/tmp-indep \
	                    install-configlibDATA install-data-html \
	                    install-magickincHEADERS  install-wandincHEADERS install-magickppincHEADERS install-magickpptopincHEADERS \
			    install-man1 \
	                    pkgdocdir=/usr/share/doc/imagemagick-doc \
			    V=1 ;\
	fi;

	# Use x-terminal emulator for editing (Bug #132947) TODO: proper patch please
	sed -i 's/xterm/\/etc\/alternatives\/x-terminal-emulator/' \
		$(CURDIR)/debian/tmp-indep/etc/ImageMagick-$(DEB_UPSTREAM_VERSION_MAJOR)/delegates.xml

	# install default perl
	cd debian/build-quantum-indep/PerlMagick/default/ && make install DESTDIR=$(CURDIR)/debian/tmp-indep

	# Remove empty directories in debian/tmp
	-find $(CURDIR)/debian/tmp-indep -type d -empty | xargs -r rmdir -p

	# now apply privacy cleanning rules
	find $(CURDIR)/debian/tmp-indep/usr/share/doc/imagemagick-doc \
	     -maxdepth 3 -type f -and -name '*.html' -and -not -empty -print0 \
             | xargs -r -0 -n 1 debian/scripts/removeprivacybreach


# install quantum package
quantum_override_dh_install-arch_%:
	dh_install --package=imagemagick-$(IMVERSION).${shell echo $* | sed -e 's/\(.*\)/\L\1/'} \
		--sourcedir=debian/tmp-$* --autodest
	dh_install --package=libmagickcore-${IMVERSION}.${shell echo $* | sed -e 's/\(.*\)/\L\1/'}-${CORESOVERSION} \
		--sourcedir=debian/tmp-$* --autodest
	dh_install --package=libmagickcore-${IMVERSION}.${shell echo $* | sed -e 's/\(.*\)/\L\1/'}-${CORESOVERSION}-extra \
		--sourcedir=debian/tmp-$* --autodest
	dh_install --package=libmagickwand-${IMVERSION}.${shell echo $* | sed -e 's/\(.*\)/\L\1/'}-${WANDSOVERSION} \
		--sourcedir=debian/tmp-$* --autodest
	dh_install --package=libmagick++-${IMVERSION}.${shell echo $* | sed -e 's/\(.*\)/\L\1/'}-${PPSOVERSION} \
		--sourcedir=debian/tmp-$* --autodest
	# dev package
	dh_install --package=libmagick++-${IMVERSION}.${shell echo $* | sed -e 's/\(.*\)/\L\1/'}-dev \
		--sourcedir=debian/tmp-$* --autodest
	dh_install --package=libmagickcore-${IMVERSION}.${shell echo $* | sed -e 's/\(.*\)/\L\1/'}-dev \
		--sourcedir=debian/tmp-$* --autodest
	dh_install --package=libmagickwand-${IMVERSION}.${shell echo $* | sed -e 's/\(.*\)/\L\1/'}-dev \
		--sourcedir=debian/tmp-$* --autodest
	# perl
	dh_install --package=libimage-magick-${shell echo $* | sed -e 's/\(.*\)/\L\1/'}-perl \
	        --sourcedir=debian/tmp-$* --autodest

	# Remove extra coders from libmagickcore
	while read FILE; do \
		rm -f debian/libmagickcore-${IMVERSION}.${shell echo $* | sed -e 's/\(.*\)/\L\1/'}-${CORESOVERSION}/$$FILE; \
	done < debian/libmagickcore-${IMVERSION}.${shell echo $* | sed -e 's/\(.*\)/\L\1/'}-${CORESOVERSION}-extra.install

# install arch package
override_dh_install-arch: quantum_override_dh_install-arch_Q16
	# take arch include in default quantum
	dh_install --package=libmagickcore-6-arch-config --sourcedir=debian/tmp-${DEFAULTQUANTUMDEPTH} --autodest
	# TODO: better granularity
	dh_install --package=imagemagick-dbg --sourcedir=debian/tmp-${DEFAULTQUANTUMDEPTH} --autodest
	# install here imagemagick
	dh_install --package=imagemagick --sourcedir=debian/tmp-${DEFAULTQUANTUMDEPTH} --autodest

override_dh_install-indep:
	dh_install --indep --sourcedir=debian/tmp-indep --autodest
	./debian/scripts/dh_doxygen --indep --package=imagemagick-doc

override_dh_compress:
	# fix #611125
	dh_compress -Xusr/share/doc/imagemagick/www -Xusr/share/doc/imagemagick-doc/www

# doing this in a loop to have all symbol diffs in the build log
override_dh_makeshlibs:
	# avoid plugins' dir
#	dh_makeshlibs -v -Xcoders/ -Xfilters/
	for p in $$(dh_listpackages -s); do \
	  echo dh_makeshlibs -p$$p -v -Xcoders/ -Xfilters/ ; \
	  if ! dh_makeshlibs -p$$p -v -Xcoders/ -Xfilters/ ; then \
	    fail=42; \
	  fi; \
	done; \
	exit $$fail


override_dh_strip:
	dh_strip --dbg-package=imagemagick-dbg

override_dh_bugfiles:
	dh_bugfiles --all

override_dh_installdocs:
	#not yet due to lack of support in debhelper #659044
	if test "BUG#659044" = "SOLVED" ; then \
	dh_installdocs --link-doc=imagemagick-common; \
	else \
	dh_installdocs ;\
	fi;

# prep rules
quantum_override_dh_prep_%:
	[ ! -d debian/tmp-$* ] || rm -rf debian/tmp-$*

override_dh_prep: quantum_override_dh_prep_Q16 quantum_override_dh_prep_indep
	dh_prep


# clean rules
quantum_override_dh_clean_%:
	[ ! -d debian/build-quantum-$* ] || rm -rf debian/build-quantum-$*
	[ ! -d debian/tmp-$* ] || rm -rf debian/tmp-$*

override_dh_clean: quantum_override_dh_clean_Q16 quantum_override_dh_clean_indep
	[ ! -f $(CONFIGURE_CACHEFILE) ] || rm -f $(CONFIGURE_CACHEFILE)
	dh_clean


# maint rules
#########################

export DEB_MAINT_UPSTREAM_BRANCH ?= ImageMagick-${DEB_UPSTREAM_VERSION_MAJOR}
export DEB_MAINT_CURRENT_DEB_BRANCH ?= debian/${DEB_NOEPOCH_VERSION}
export DEB_MAINT_CURRENT_DEB_CUSTOM_PATCHES ?= debian-custom-patches/${DEB_NOEPOCH_VERSION}

# get original source
get-orig-source:
	uscan

# clone debian repo (do it in another directory)
maint-clone-debian-tree:
	@echo "clone debian tree and get in sync with upstream"
	@echo "Take a few cups of cofeee it take a long time  "
	@echo "==============================================="
	git clone git+ssh://login@git.debian.org/git/collab-maint/imagemagick.git
	git svn init -s --prefix=origin/  https://www.imagemagick.org/subversion/ImageMagick/
	git config gitpkg.orig-compressor xz
	git config gitpkg.deb-export-hook /usr/share/gitpkg/hooks/quilt-patches-deb-export-hook
	git config gitpkg.pre-export-hook /usr/share/gitpkg/hooks/pristine-tar-pre-export-hook
	git checkout ${DEB_MAINT_CURRENT_DEB_BRANCH}

# switch to upstream branch
maint-switch-to-upstream:
	git checkout ${DEB_MAINT_UPSTREAM_BRANCH}

# goto upstream branch and merge new work
maint-merge-upstream-to-local:
	@echo "merge new upstream to local"
	git checkout ${DEB_MAINT_UPSTREAM_BRANCH}
	git merge origin/${DEB_MAINT_UPSTREAM_BRANCH}
	git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}

# git svn fetch
maint-git-svn-fetch:
	git svn fetch

# git svn + merge upstream
maint-refresh-git-svn: maint-git-svn-fetch
	# try to go to merge upstream if fail goto to previous state
	if !($(MAKE) -f debian/rules maint-merge-upstream-to-local); then \
		git checkout ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
		exit 1;\
	else \
		git checkout ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
	fi;

# mark upstream revision by founding it with svn id from upstream changelog
maint-mark-upstream-revision-%:
	git checkout ${DEB_MAINT_UPSTREAM_BRANCH}
	if test "x${DEB_MAINT_UPSTREAM_SVNREV}" = "x" ; then \
		DEB_MAINT_UPSTREAM_SVNREV=`grep "New version $*" ChangeLog | sed "s/.*SVN revision \([0-9]*\).*/\1/g"`; \
		if test "x$$DEB_MAINT_UPSTREAM_SVNREV" = "x"; then exit 1; fi ;\
		echo -n "Found svn revision $* git sha id: " ;\
		git rev-list --all --grep "svn-id.*@$$DEB_MAINT_UPSTREAM_SVNREV" ;\
		git checkout -b upstream/$* \
				`git rev-list --all --grep "svn-id.*@$$DEB_MAINT_UPSTREAM_SVNREV"`; \
	else \
	   git checkout -b upstream/$* ${DEB_MAINT_UPSTREAM_SVNREV}; \
	fi;
	git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}

# get upstream revision like in upstream changelog
maint-get-upstream-rev-doit:
	@echo "Try to get upstream revision $(DEB_MAINT_NEW_VERSION)."
	DEB_MAINT_NEW_VERSION_RAW=`echo $(DEB_MAINT_NEW_VERSION) | sed "s/\(.*\)\.\([:digit:]*\)/\1-\2/g"`; \
	if test "x$$DEB_MAINT_NEW_VERSION_RAW" = "x"; then exit 1; fi;\
	if !(git show-ref --verify --quiet refs/heads/upstream/$$DEB_MAINT_NEW_VERSION_RAW) ; then \
		if ! ($(MAKE) -f debian/rules \
				 maint-mark-upstream-revision-$$DEB_MAINT_NEW_VERSION_RAW \
				 DEB_MAINT_NEW_VERSION=${DEB_MAINT_NEW_VERSION} \
				 DEB_MAINT_UPSTREAM_SVNREV=${DEB_MAINT_UPSTREAM_SVNREV}); then \
			git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
			exit 1; \
		else \
			git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
		fi; \
	fi;


# get upstream version
maint-get-upstream-rev: #maint-refresh-git-svn 
	$(MAKE) -f debian/rules \
		   maint-get-upstream-rev-doit \
		   DEB_MAINT_NEW_VERSION:=$(shell uscan --report --dehs | grep "<upstream-version>" | sed "s/<upstream-version>\(.*\)<\/upstream-version>/\1/g")
	git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH};


# put it in a new make in order to fail gracefully
maint-get-upstream-rev-from-tar-new-make-%:
	git checkout -f upstream/`echo $* | sed "s/\(.*\)\.\([:digit:]*\)/\1-\2/g"`
	git checkout -b upstream/$*
	find ./*  -path './.git' -prune -o -exec rm -rf '{}' +
	tar --strip 1 -xaf ../imagemagick_$*.orig.tar.xz
	git add --all .
	git commit -a -m "Add upstream tar.xz for version $*"
	git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH};

# reconstruct upstream for tar
maint-reconstruct-upstream-doit: maint-get-upstream-rev-doit
	@echo "get upstream from tar and merge it"
	if !(git show-ref --verify --quiet refs/heads/upstream/${DEB_MAINT_NEW_VERSION}) ; then \
		if ! ($(MAKE) -f debian/rules maint-get-upstream-rev-from-tar-new-make-${DEB_MAINT_NEW_VERSION}); then \
	    		git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
			git branch -D upstream/${DEB_MAINT_NEW_VERSION} || true; \
			exit 1; \
		else \
			git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
		fi; \
	fi;

# reconstruct upstream
maint-reconstruct-upstream: 
	$(MAKE) -f debian/rules \
		   maint-reconstruct-upstream-doit \
		   DEB_MAINT_NEW_VERSION:=`uscan --report --dehs | grep "<upstream-version>" | sed "s/<upstream-version>\(.*\)<\/upstream-version>/\1/g"`
	git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH};

add-pristine-tar-new-make-%:
	git checkout -f upstream/$*
	pristine-tar commit ../imagemagick_$*.orig.tar.xz upstream/$*
	git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}

# add pristine-tar from a sub make
maint-add-pristine-tar-doit: maint-reconstruct-upstream-doit
	@echo "execute pristine-tar"
	if !(pristine-tar list | grep ${DEB_MAINT_NEW_VERSION}); then \
		if ! ($(MAKE) -f debian/rules add-pristine-tar-new-make-${DEB_MAINT_NEW_VERSION}) ; then \
			git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
			exit 1; \
		else \
			git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
		fi; \
	fi;

# add pristine-tar
maint-add-pristine-tar:
	$(MAKE) -f debian/rules \
		   maint-add-pristine-tar-doit \
		   DEB_MAINT_NEW_VERSION:=`uscan --report --dehs | grep "<upstream-version>" | sed "s/<upstream-version>\(.*\)<\/upstream-version>/\1/g"`
	git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}

# manually merge debian branch
maint-merge-debian-branch-new-make-%: 
	git checkout ${DEB_MAINT_CURRENT_DEB_BRANCH}
	git checkout -b debian/$*-1
	if ! (git show-ref --verify --quiet refs/heads/upstream/$*) ; then exit 1; fi;
	git merge --no-commit upstream/$* || true
	find ./* -path './debian' -prune -o -path './.git' -prune -o -exec rm -rf '{}' +
	tar --strip 1 -xaf ../imagemagick_$*.orig.tar.xz
	git add --all .
	git commit -a -m 'merge debian branch with upstream $*'

# merge debian branch
maint-merge-debian-branch-doit: maint-add-pristine-tar-doit
	if ! (git show-ref --verify --quiet refs/heads/debian/${DEB_MAINT_NEW_VERSION}-1); then \
		if ! ($(MAKE) -f debian/rules maint-merge-debian-branch-new-make-${DEB_MAINT_NEW_VERSION}); then \
			git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
			git branch -D debian/${DEB_MAINT_NEW_VERSION}-1 || true; \
			exit 1; \
		else \
			git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
		fi; \
	fi;

# merge debian branch
maint-merge-debian-branch:
	$(MAKE) -f debian/rules \
		   maint-merge-debian-branch-doit \
		   DEB_MAINT_NEW_VERSION:=`uscan --report --dehs | grep "<upstream-version>" | sed "s/<upstream-version>\(.*\)<\/upstream-version>/\1/g"`
	git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}


maint-create-debian-patches-new-make-%:
	git checkout -f upstream/${DEB_MAINT_NEW_VERSION}
	git checkout -b debian-patches/${DEB_MAINT_NEW_VERSION}-1

maint-create-debian-patches-doit: maint-merge-debian-branch-doit
	if ! (git show-ref --verify --quiet refs/heads/debian-patches/${DEB_MAINT_NEW_VERSION}-1); then \
		if ! ($(MAKE) -f debian/rules maint-create-debian-patches-new-make-${DEB_MAINT_NEW_VERSION}); then \
			git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
			git branch -D debian-patches/${DEB_MAINT_NEW_VERSION}-1 || true; \
			exit 1; \
		else \
			git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
		fi; \
	fi;


# create a new debian patches branch
maint-create-debian-patches:
	$(MAKE) -f debian/rules \
		   maint-create-debian-patches-doit \
		   DEB_MAINT_NEW_VERSION:=`uscan --report --dehs | grep "<upstream-version>" | sed "s/<upstream-version>\(.*\)<\/upstream-version>/\1/g"`
	git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}


maint-create-debian-custom-patches-new-make-%:
	git checkout -f ${DEB_MAINT_CURRENT_DEB_CUSTOM_PATCHES}
	if ! (git show-ref --verify --quiet refs/heads/debian-custom-patches/${DEB_MAINT_NEW_VERSION}-1) ; then \
		git checkout -b debian-custom-patches/${DEB_MAINT_NEW_VERSION}-1; \
	fi;
	git rebase upstream/${DEB_UPSTREAM_VERSION} debian-custom-patches/${DEB_MAINT_NEW_VERSION}-1 --onto debian-patches/${DEB_MAINT_NEW_VERSION}-1
	git checkout debian-patches/${DEB_MAINT_NEW_VERSION}-1
	git merge --ff debian-custom-patches/${DEB_MAINT_NEW_VERSION}-1

maint-create-debian-custom-patches-doit: maint-create-debian-patches-doit
	if ! (git show-ref --verify --quiet refs/heads/debian-custom-patches/${DEB_MAINT_NEW_VERSION}-1); then \
		if ! ($(MAKE) -f debian/rules maint-create-debian-custom-patches-new-make-${DEB_MAINT_NEW_VERSION}); then \
			git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
			git branch -D debian-custom-patches/${DEB_MAINT_NEW_VERSION}-1 || true; \
			exit 1; \
		else \
			git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
		fi; \
	fi;


# create not forwarded debian patches (debian-custom-patches)
maint-create-debian-custom-patches:
	$(MAKE) -f debian/rules \
		   maint-create-debian-custom-patches-doit \
		   DEB_MAINT_NEW_VERSION:=`uscan --report --dehs | grep "<upstream-version>" | sed "s/<upstream-version>\(.*\)<\/upstream-version>/\1/g"`
	git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}


# create a new version
maint-do-new-version:
	DEB_MAINT_NEW_VERSION=`uscan --report --dehs | grep "<upstream-version>" | sed "s/<upstream-version>\(.*\)<\/upstream-version>/\1/g"`;\
	if test "x$$DEB_MAINT_NEW_VERSION" = "x" ; then exit 1; fi; \
	if !($(MAKE) -f debian/rules maint-create-debian-custom-patches-doit \
		   	 DEB_MAINT_NEW_VERSION:=$$DEB_MAINT_NEW_VERSION ); then \
	    git checkout -f ${DEB_MAINT_CURRENT_DEB_BRANCH}; \
	else \
	    git checkout -f debian/$$DEB_MAINT_NEW_VERSION-1; \
	fi;

	# check if upstream is sane
	# check if html doc is well formed in order to run xslt rule
	-find $(CURDIR)/www \
	     	-maxdepth 2 -type f -and -name '*.html' -and -not -empty -print0 \
		| xargs -r -0 -t xmllint --noout --nonet || true

maint-html-is-sane:
	find $(CURDIR)/www \
	     	-maxdepth 2 -type f -and -name '*.html' -and -not -empty -print0 \
		| xargs -r -0 -t xmllint --noout --nonet
