#!/bin/sh
set -e

log_debug() {
	echo "Debug: piuparts exception for package $PIUPARTS_OBJECTS"
}

is_installed()
{
	local pkg="$1"
	dpkg-query -s "$pkg" >/dev/null 2>&1 || return 1
	local status="$(dpkg-query -W -f '${Status}' $pkg)"
	test "$status" != "unknown ok not-installed" || return 1
	test "$status" != "deinstall ok config-files" || return 1
	return 0
}

EXTRA=

# if package $1 is installed, $2... should be installed as well
install_extra_package()
{
	local p q
	p=$1
	shift
	if is_installed "$p" ; then
		for q in "$@"
		do
			if ! is_installed "$q" ; then
				EXTRA="$EXTRA $q"
			fi
		done
	fi
}

# /etc/xdg/menus/cinnamon-applications-merged -> applications-merged
install_extra_package cinnamon-common		extra-xdg-menus

# /usr/bin/db_sql -> db5.3_sql
# #686875
install_extra_package db-util			db5.3-sql-util

# /usr/bin/pykdeuic4-3.5 -> ../lib/python3/dist-packages/PyQt4/uic/pykdeuic4.py
# python-kde4-dev: Depends: python-kde4 | python3-pykde4
install_extra_package python-kde4-dev		python3-pykde4

# /usr/bin/vmware-user -> vmware-user-suid-wrapper
# open-vm-tools Suggests: open-vm-tools-desktop
install_extra_package open-vm-tools		open-vm-tools-desktop

# /usr/include/libreoffice/sal/typesizes.h -> ../../<triplet>/libreoffice/sal/typesizes.h
# /usr/lib/libreoffice/sdk/index.html -> ../../../share/doc/libreoffice/sdk/index.html
# libreoffice-dev: Suggests: libreoffice-dev-doc
install_extra_package libreoffice-dev-common	libreoffice-dev libreoffice-dev-doc

# /usr/lib/android-sdk/tools/proguard/lib/proguardgui.jar -> ../../../../../share/java/proguardgui.jar
# /usr/lib/android-sdk/tools/proguard/bin/proguardgui -> ../../../../../bin/proguardgui
# #856410
install_extra_package android-sdk		proguard-gui

# /usr/lib/codeaster/outils/xmgrace -> ../../../bin/xmgrace
# /usr/lib/codeaster/outils/eficasQt -> ../../../bin/eficasQt
# /usr/lib/codeaster/outils/eficas -> ../../../bin/eficas
# /usr/lib/codeaster/outils/gmsh -> ../../../bin/gmsh
# code-aster-gui: Suggests: eficas, gmsh, grace
install_extra_package code-aster-gui		eficas gmsh grace

# /usr/lib/doublecmd/doc -> ../../share/doublecmd/doc
# doublecmd-common: Suggests: doublecmd-help-en | doublecmd-help
install_extra_package doublecmd-common		doublecmd-help-en

# /usr/lib/firefox/dictionaries -> ../../share/hunspell
install_extra_package firefox			hunspell-en-us

# /usr/lib/python2.7/dist-packages/Bio/Entrez/DTDs/mathml2.dtd -> ../../../../../../share/xml/schema/w3c/mathml/dtd/mathml2.dtd
# python-biopython: Suggests: w3-dtd-mathml
install_extra_package python-biopython		w3-dtd-mathml

# /usr/lib/python2.7/dist-packages/sas/sasview/doc -> ../../../../../share/doc/sasview/html
# python-sasview: Suggests: sasview-doc
install_extra_package python-sasview		sasview-doc

# /usr/lib/python2.7/dist-packages/wx.pth -> ../../wx/python/wx.pth
# python-wxversion, alternative set up by python-wxgtk3.0, #857757
install_extra_package python-wxversion		python-wxgtk3.0

# /usr/lib/qflow/bin/netgen -> ../../../bin/netgen-lvs
# qflow: Suggests: netgen-lvs
install_extra_package qflow			netgen-lvs

# /usr/lib/ruby/vendor_ruby/psych.jar -> ../../../share/java/psych.jar
# ruby-psych: Suggests: libpsych-java
install_extra_package ruby-psych		libpsych-java

# /usr/lib/slepcdir/slepc3.10/<triplet>-complex/share/slepc/datafiles -> ../../../../../../share/doc/libslepc3.10-dev-examples/datafiles
# libslepc-complex3.10-dev: Suggests: libslepc3.10-dev-examples
install_extra_package libslepc-complex3.10-dev	libslepc3.10-dev-examples slepc3.10-doc

# /usr/lib/slepcdir/slepc3.10/<triplet>-real/share/slepc/datafiles -> ../../../../../../share/doc/libslepc3.10-dev-examples/datafiles
# libslepc-real3.10-dev: Suggests: libslepc3.10-dev-examples
install_extra_package libslepc-real3.10-dev	libslepc3.10-dev-examples slepc3.10-doc

# /usr/lib/wml/exec/wml_aux_weblint -> ../../../bin/weblint
# /usr/lib/wml/exec/wml_aux_freetable -> ../../../bin/freetable
# wml: Suggests: freetable, weblint-perl
install_extra_package wml			freetable weblint-perl

# /usr/lib/<triplet>/dbus-1.0/debug-build/share/dbus-1/system.d -> ../../../../../../share/dbus-1/system.d
install_extra_package dbus-1-dbg		systemd

# /usr/lib/<triplet>/firebird/3.0/fbtrace.conf -> /etc/firebird/3.0/fbtrace.conf
# /usr/lib/<triplet>/firebird/3.0/databases.conf -> /etc/firebird/3.0/databases.conf
# firebird3.0-server-core: Suggests: firebird3.0-server
install_extra_package firebird3.0-server-core	firebird3.0-server

# /usr/lib/<triplet>/qt-default/qtchooser/default.conf -> ../../../../share/qtchooser/qt4-<triplet>.conf
install_extra_package libqtcore4		qtchooser

# /usr/share/bacula-common/dbc_database.conf -> /etc/dbconfig-common/bacula-director-pgsql.conf
install_extra_package bacula-common-pgsql	bacula-director-pgsql
install_extra_package bacula-common-mysql	bacula-director-mysql
install_extra_package bacula-common-sqlite3	bacula-director-sqlite3

# /usr/share/bug/distccmon-gnome/presubj -> ../../doc/distcc/reporting-bugs.txt
# distccmon-gnome: Suggests: distcc
install_extra_package distccmon-gnome		distcc

# /usr/share/citadel-webcit/static/icons -> ../../icons/gnome/24x24/mimetypes
# citadel-webcit: Suggests: gnome-icon-theme
install_extra_package citadel-webcit		gnome-icon-theme

# /usr/share/doc/apache2-data/changelog.Debian.gz -> ../apache2/changelog.Debian.gz
# apache2: Depends: apache2-data
install_extra_package apache2-data		apache2

# /usr/share/doc/binutils-doc/ld -> ../binutils/ld
# /usr/share/doc/binutils-doc/gprof -> ../binutils/gprof
# /usr/share/doc/binutils-doc/gas -> ../binutils/gas
# /usr/share/doc/binutils-doc/bfd -> ../binutils/bfd
# binutils-doc: Suggests: binutils
install_extra_package binutils-doc		binutils

# /usr/share/doc/exim4-dev/changelog.gz -> ../exim4-base/changelog.gz
# /usr/share/doc/exim4-dev/README.Debian.gz -> ../exim4-base/README.Debian.gz
install_extra_package exim4-dev			exim4-base

# /usr/share/doc/gimp-help-common/html -> ../../gimp/2.0/help
install_extra_package gimp-help-common		gimp-help-en

# /usr/share/doc/keyboard-configuration/xorg.lst -> ../../X11/xkb/rules/xorg.lst
install_extra_package keyboard-configuration	xkb-data

# /usr/share/doc/libboost1.62-doc/HTML/boost -> ../../../../include/boost
# libboost1.XX-doc: Suggests: libboost1.XX-dev
install_extra_package libboost1.62-doc		libboost1.62-dev

# /usr/share/doc/libembperl-perl/examples/forms/js/prototype.js -> ../../../../../javascript/prototype/prototype.js
# libembperl-perl: Suggests: libjs-prototype
install_extra_package libembperl-perl		libjs-prototype

# /usr/share/doc/libgraphicsmagick1-dev/images -> ../graphicsmagick/www/images
# libgraphicsmagick1-dev: Suggests: graphicsmagick
install_extra_package libgraphicsmagick1-dev	graphicsmagick

# /usr/share/doc/libjs-mocha/example/chai.js -> ../../../javascript/chai/chai.js
# libjs-mocha: Suggests: libjs-chai
install_extra_package libjs-mocha		libjs-chai

# /usr/share/doc/libjs-sprintf-js/examples/angular.min.js -> ../../../javascript/angular.js/angular.min.js
# libjs-sprintf-js: Suggests: libjs-angularjs
install_extra_package libjs-sprintf-js		libjs-angularjs

# /usr/share/doc/libpetsc3.10-dev-examples/docs -> ../petsc3.10-doc/docs (libpetsc3.10-dev-examples)
# /usr/share/doc/libpetsc3.10-dev-examples/include -> ../petsc3.10-doc/include (libpetsc3.10-dev-examples)
# libpetsc3.10-dev-examples: Suggests: petsc3.10-doc
install_extra_package libpetsc3.10-dev-examples	petsc3.10-doc

# /usr/share/doc/libslepc3.10-dev-examples/examples/docs -> ../../slepc3.10-doc/docs
# libslepc3.10-dev-examples: Suggests: slepc3.10-doc
install_extra_package libslepc3.10-dev-examples	slepc3.10-doc

# /usr/share/doc/libvirt-doc/changelog.gz -> ../libvirt0/changelog.gz
install_extra_package libvirt-doc		libvirt0

# /usr/share/doc/mkvtoolnix/README.source -> ../quilt/README.source
install_extra_package mkvtoolnix		quilt nullmailer

# /usr/share/doc/node-setimmediate/examples/chai.js -> ../../../javascript/chai/chai.js
# /usr/share/doc/node-setimmediate/examples/mocha.css -> ../../../javascript/mocha/mocha.css
# /usr/share/doc/node-setimmediate/examples/mocha.js -> ../../../javascript/mocha/mocha.js
# node-setimmediate: Suggests: libjs-mocha, libjs-chai
install_extra_package node-setimmediate		libjs-chai libjs-mocha

# /usr/share/doc/node-yajsml/examples/public/javascripts/lib/underscore.js -> ../../../../../../javascript/underscore/underscrore.js
# node-yajsml: Suggests: libjs-underscore
install_extra_package node-yajsml		libjs-underscore

# /usr/share/doc/python-ly/html -> ../python-ly-doc/html
# python-ly: Suggests: python-ly-doc
install_extra_package python-ly			python-ly-doc
install_extra_package python3-ly		python-ly-doc

# /usr/share/doc/python-statsmodels-doc/examples -> ../python-statsmodels/examples
# python-statsmodels-doc: Suggests: python-statsmodels
install_extra_package python-statsmodels-doc	python-statsmodels

# /usr/share/doc/scribus/COPYING -> copyright
# /usr/share/scribus/dicts -> ../hyphen
# scribus-data: Recommends: scribus (= ${binary:Version})
install_extra_package scribus-data		scribus hyphen-en-us

# /usr/share/doc/xen-utils-common/html -> ../xen/html
# xen-utils-common: Suggests: xen-doc
install_extra_package xen-utils-common		xen-doc

# /usr/share/eclipse/dropins/eclox/eclipse/plugins/org.gna.eclox.help_0.10.1/html/doxygen-doc -> ../../../../../../../doc/doxygen/html
# doxygen: Suggests: doxygen-doc
install_extra_package eclipse-eclox		doxygen-doc

# /usr/share/games/neverball/ttf/wqy-microhei.ttc -> ../../../fonts/truetype/wqy/wqy-microhei.ttc
# neverball-common: Suggests: fonts-wqy-microhei
install_extra_package neverball-common		fonts-wqy-microhei

# /usr/share/gnome/help/gnumeric/C/images -> ../../../../xml/docbook/stylesheet/nwalsh/images
# gnumeric-doc: Suggests: docbook-xsl
install_extra_package gnumeric-doc		docbook-xsl

# /usr/share/gtkmorph/pixmaps -> ../xmorph/pixmaps
# /usr/share/man/man1/morph.1.gz -> xmorph.1.gz
install_extra_package libmorph			gtkmorph xmorph

# /usr/share/icons/default.kde4 -> oxygen
install_extra_package kde-runtime-data		oxygen-icon-theme

# /usr/share/jcadencii/WineMinimum.bundle/Contents/SharedSupport/bin/wine -> ../../../../../../bin/wine
# jcadencii: Suggests: wine
install_extra_package jcadencii			wine

# /usr/share/live/build/bootloaders/???linux/*.c32 -> /usr/lib/syslinux/modules/bios/*.c32
# /usr/share/live/build/bootloaders/pxelinux/pxelinux.0 -> /usr/lib/PXELINUX/pxelinux.0
# /usr/share/live/build/bootloaders/isolinux/isolinux.bin -> /usr/lib/ISOLINUX/isolinux.bin
# live-build: the required packages will be installed in the live image (#857151)
# open-infrastructure-system-build: alternate implementation of live-build
install_extra_package live-build			syslinux-common pxelinux isolinux
install_extra_package open-infrastructure-system-build	syslinux-common pxelinux isolinux

# /usr/share/lyx/thes -> ../mythes
install_extra_package lyx-common		mythes-en-us

# /usr/share/man/man3/libwildmagic-common.3.gz -> libwildmagic.3.gz
# libwildmagic-common: Suggests: libwildmagic5
install_extra_package libwildmagic-common	libwildmagic5

# /usr/share/nginx/modules -> ../../lib/nginx/modules
install_extra_package nginx-common		libnginx-mod-http-echo

# /usr/share/org-mode/scripts/ditaa.jar -> ../../ditaa/ditaa.jar
# org-mode: Suggests: ditaa
install_extra_package org-mode			ditaa

# /usr/share/pyshared/MoinMoin/words -> /etc/moin/words
# /etc/moin/words -> /usr/share/dict/words
install_extra_package python-moinmoin		wamerican

# /usr/share/quassel/scripts/inxi -> ../../../bin/inxi
# quassel-data: Suggests: inxi
install_extra_package quassel-data		inxi

# /usr/share/quilt/compat/sendmail -> ../../../sbin/sendmail
# quilt: Suggests: default-mta | mail-transport-agent
install_extra_package quilt			nullmailer

# /usr/share/syslinux/themes/debian-wheezy/???linux/*.c32
install_extra_package syslinux-themes-debian-wheezy	syslinux-common

# /usr/share/tuxpaint/fonts/locale/zh_TW.ttf -> ../../../fonts/truetype/arphic/uming.ttc
# /usr/share/tuxpaint/fonts/locale/zh_CN.ttf -> ../../../fonts/truetype/arphic-gbsn00lp/gbsn00lp.ttf
# /usr/share/tuxpaint/fonts/locale/th.ttf -> ../../../fonts/opentype/tlwg/Garuda-Bold.otf
# /usr/share/tuxpaint/fonts/locale/te.ttf -> ../../../fonts/truetype/fonts-telu-extra/Pothana2000.ttf
# /usr/share/tuxpaint/fonts/locale/ko.ttf -> ../../../fonts/truetype/nanum/NanumGothic.ttf
# /usr/share/tuxpaint/fonts/locale/gu.ttf -> ../../../fonts/truetype/lohit-gujarati/Lohit-Gujarati.ttf
# /usr/share/tuxpaint/fonts/locale/ar.ttf -> ../../../fonts/truetype/fonts-arabeyes/ae_Nice.ttf
# tuxpaint-data: Suggests: fonts-arabeyes, fonts-arphic-gbsn00lp, fonts-arphic-uming, fonts-nanum, fonts-gujr, fonts-taml, fonts-telu, fonts-tlwg-garuda-otf
install_extra_package tuxpaint-data		fonts-arabeyes fonts-arphic-gbsn00lp fonts-arphic-uming fonts-nanum fonts-gujr fonts-taml fonts-telu fonts-tlwg-garuda-otf

# /var/lib/gridengine/lib/lx-* -> /usr/lib/gridengine
install_extra_package gridengine-common		gridengine-client db-util db5.3-sql-util

if [ -n "$EXTRA" ]; then
	log_debug
	echo "Installing extra packages: ${EXTRA# }"
	apt-get -y install $EXTRA
fi

# if package $1 is installed, $2... should exist
create_extra_file()
{
	local p f
	p=$1
	shift
	if is_installed "$p" ; then
		for f in "$@"
		do
			if [ ! -e $f ]; then
				echo "Creating empty target $f"
				touch $f
			fi
		done
	fi
}

# if package $1 is installed, $2... should exist
create_extra_dir()
{
	local p d
	p=$1
	shift
	if is_installed "$p" ; then
		for d in "$@"
		do
			if [ ! -e $d ]; then
				echo "Creating empty directory $d"
				mkdir -p $d
			fi
		done
	fi
}

# /etc/issue.d/cockpit.issue -> /run/cockpit/motd
# /etc/motd.d/cockpit -> /run/cockpit/motd
create_extra_dir cockpit-ws			/run/cockpit
create_extra_file cockpit-ws			/run/cockpit/motd

# /etc/issue.linuxlogo -> /var/run/linuxlogo/issue.linuxlogo
# /etc/issue.linuxlogo.ascii -> /var/run/linuxlogo/issue.linuxlogo.ascii
create_extra_dir linuxlogo			/var/run/linuxlogo
create_extra_file linuxlogo			/var/run/linuxlogo/issue.linuxlogo /var/run/linuxlogo/issue.linuxlogo.ascii

# /etc/lprng/printcap -> ../printcap
create_extra_file lprng				/etc/printcap

# /etc/openvswitch/.conf.db.~lock~ -> /var/lib/openvswitch/.conf.db.~lock~
# /etc/openvswitch/conf.db -> /var/lib/openvswitch/conf.db
create_extra_file openvswitch-switch		/var/lib/openvswitch/.conf.db.~lock~ /var/lib/openvswitch/conf.db

# /etc/vdr/plugins/xineliboutput/config -> /var/lib/vdr/plugins/xineliboutput/config
create_extra_file vdr-plugin-xineliboutput	/var/lib/vdr/plugins/xineliboutput/config

# /etc/vdr/remote.conf -> /var/lib/vdr/remote.conf
# /etc/vdr/setup.conf -> /var/lib/vdr/setup.conf
# /var/lib/vdr/commands.conf -> ../../cache/vdr/commands.conf
# /var/lib/vdr/reccmds.conf -> ../../cache/vdr/reccmds.conf
create_extra_file vdr				/var/cache/vdr/commands.conf /var/cache/vdr/reccmds.conf /var/lib/vdr/remote.conf /var/lib/vdr/setup.conf

# /usr/lib/mesa-diverted/<triplet>/libGLX_indirect.so.0 -> libGLX_mesa.so.0
create_extra_file glx-diversions		/usr/lib/mesa-diverted/i386-linux-gnu/libGLX_mesa.so.0
create_extra_file glx-diversions		/usr/lib/mesa-diverted/x86_64-linux-gnu/libGLX_mesa.so.0

# /usr/lib/plan/holiday -> /etc/plan/holiday
create_extra_file plan				/etc/plan/holiday

# /usr/sbin/ganeti-masterd -> ../share/ganeti/default/ganeti-masterd
# #857289
create_extra_file ganeti			/usr/share/ganeti/default/ganeti-masterd

# /usr/share/epiphany-browser/mime-types-permissions.xml -> /etc/gnome/epiphany/mime-types-permissions.xml
create_extra_file epiphany-browser-data		/etc/gnome/epiphany/mime-types-permissions.xml

# /usr/share/games/xwelltris/welltris.scores -> /var/games/xwelltris/welltris.scores
create_extra_file xwelltris			/var/games/xwelltris/welltris.scores

# /usr/share/gitlab-shell/config.yml -> /etc/gitlab-shell/config.yml
create_extra_file gitlab-shell			/etc/gitlab-shell/config.yml

# /usr/share/man/man1/rust-gdb.1.gz -> gdb.1.gz
# /usr/share/man/man1/i686-w64-mingw32-gdb.1.gz -> gdb.1.gz
# /usr/share/man/man1/x86_64-w64-mingw32-gdb.1.gz -> gdb.1.gz
# gdb-doc is in non-free
create_extra_file rust-gdb			/usr/share/man/man1/gdb.1.gz
create_extra_file gdb-mingw-w64			/usr/share/man/man1/gdb.1.gz

# /usr/share/notion/debian-menu.lua -> /var/lib/notion/debian-menu.lua
# /usr/share/notion/debian-menu-i18n.lua -> /var/lib/notion/debian-menu-i18n.lua
create_extra_file notion			/var/lib/notion/debian-menu.lua /var/lib/notion/debian-menu-i18n.lua

# /usr/share/otrs/Kernel/Config/GenericAgent.pm -> /etc/otrs/Kernel/Config/GenericAgent.pm
# /var/lib/otrs/run -> /run/otrs
create_extra_file otrs2				/etc/otrs/Kernel/Config/GenericAgent.pm
create_extra_dir otrs2				/run/otrs

# /usr/share/slrn/newsgroups.dsc -> /var/lib/slrn/newsgroups.dsc
create_extra_file slrn				/var/lib/slrn/newsgroups.dsc

# /usr/share/texlive/texmf-dist/tex/latex/pdfx/sRGB_IEC61966-2-1_black_scaled.icc -> ../../../../../color/icc/sRGB_IEC61966-2-1_black_scaled.icc
# sRGB_IEC61966-2-1_black_scaled.icc is provided by icc-profiles in non-free (#880363)
create_extra_file texlive-latex-extra		/usr/share/color/icc/sRGB_IEC61966-2-1_black_scaled.icc

# /usr/share/uim/loader.scm -> /var/lib/uim/loader.scm
# /usr/share/uim/installed-modules.scm -> /var/lib/uim/installed-modules.scm
create_extra_file libuim-data			/var/lib/uim/loader.scm /var/lib/uim/installed-modules.scm

# /var/cache/vdr/dvd -> /dev/dvd
create_extra_file vdr-plugin-dvd		/dev/dvd

# /usr/share/wordpress/wp-content/plugins/civicrm/civicrm/civicrm-wordpress.settings.php -> /etc/civicrm/civicrm-wordpress.settings.php
create_extra_file wordpress-civicrm		/etc/civicrm/civicrm-wordpress.settings.php
