#!/usr/bin/make -f

# These need to be declared/run before CDBS includes
pkg-jarabe = python3-jarabe
pkg-session = sugar-session
DEB_BUILDDIR = build
DEB_PYTHON3_MODULE_PACKAGES = $(pkg-jarabe) $(pkg-session)

include /usr/share/cdbs/1/class/python-autotools.mk
include /usr/share/cdbs/1/rules/autoreconf.mk
include /usr/share/cdbs/1/rules/debhelper.mk

comma = ,
pkgbranch = $(subst $(space),.,$(wordlist 1, 2,$(subst .,$(space),$(DEB_UPSTREAM_VERSION))))
pkg-sucrose = sucrose

# Core activities
# https://wiki.sugarlabs.org/go/Development_Team/Release/Modules#Fructose
fructose = chat browse read calculate log write terminal pippy etoys
fructose += imageviewer jukebox turtleart
# Core activities not in Debian main
fructose-relax = etoys turtleart
pkg-fructose = $(patsubst %,$(comma) sugar-%-activity,\
 $(filter-out $(fructose-relax),$(fructose)))
pkg-fructose-relaxed = $(patsubst %,$(comma) sugar-%-activity,\
 $(fructose-relax))

# Needed (always/often/sometimes) at runtime
#  * Glucose (at least current branch)
#  * network-manager (NM_SERVICE) used in extensions and jarabe
#    + modemmanager (NM_DEVICE_TYPE_MODEM) used in extensions and jarabe
#    + avahi-autoipd (NM_802_11_MODE_ADHOC) used in jarabe
#  * dbus-session-bus (bus.get_object) used in bin/sugar-launch, bin/sugar-erase-bundle, exensions and jarabe
#    + python3-carquinyol (org.laptop.sugar.DataStore) used in jarabe
#    + upower (org.freedesktop.UPower) used in extensions
#    + consolekit (org.freedesktop.ConsoleKit)
#      or systemd (org.freedesktop.login1) used in jarabe
#    + telepathy-mission-control-5 (ACCOUNT_MANAGER_SERVICE) used in jarabe
#    + ohmd (org.freedesktop.ohm) used in extensions jarabe
#  * metacity used in jarabe
#  * lsb-release (lsb_release) used in extensions
#  * tzdata (/usr/share/zoneinfo) used in extensions
#  * ethtool used in extensions
#  * openssh-client (ssh-keygen) used in jarabe
#  * olpc-powerd (/etc/powerd/flags) needed in extensions
#  * gdb used in bin/sugar-launch
#  * gvfs needed for GIO removable media support
#  * xdg-user-dirs (xdg-user-dir) used in jarabe
#  * fonts-dejavu-core (Sans Serif) used in data/sugar.schemas
#  * mobile-broadband-provider-info used in extensions
#  * policykit-1 (pkexec) used in jarabe.model.brightness
# Never needed at runtime (loaded only on OLPC distribution):
#  * jarabe view.viewhelp_webkit1 (GIR soup-2.4 webkit-3.0)
python-depends-session = sugar3 jarabe dbus cairo
gir-depends-session = glib-2.0 gtk-3.0 pango-1.0 xkl-1.0
gir-depends-session += gudev-1.0 upowerglib-1.0 nm-1.0
depends-session = $(patsubst %,$(comma) python3-%,$(python-depends-session))
depends-session +=, $(patsubst %,$(comma) gir1.2-%,$(gir-depends-session))
depends-session +=, sugar-themes (>= $(pkgbranch))
python-depends-jarabe = sugar3 gwebsockets cairo dbus xapian
gir-depends-jarabe = gdkpixbuf-2.0 glib-2.0 gtk-3.0 gtksource-3.0
gir-depends-jarabe += gstreamer-1.0 wnck-3.0 sugarext-1.0 pango-1.0
gir-depends-jarabe += xkl-1.0 webkit2-4.0 telepathyglib-0.12
depends-jarabe = $(patsubst %,$(comma) python3-%,$(python-depends-jarabe))
depends-jarabe +=, $(patsubst %,$(comma) gir1.2-%,$(gir-depends-jarabe))
depends-jarabe +=, metacity, policykit-1
recommends-session = lsb-release, network-manager, modemmanager, ethtool
recommends-session +=, upower, gvfs, tzdata, fonts-dejavu-core
recommends-session +=, default-dbus-session-bus | dbus-session-bus
recommends-session +=, mobile-broadband-provider-info, telepathy-gabble, telepathy-salut
recommends-session +=, $(pkg-fructose)
recommends-jarabe = python3-carquinyol
recommends-jarabe +=, default-dbus-session-bus | dbus-session-bus
recommends-jarabe +=, network-manager, modemmanager
recommends-jarabe +=, avahi-autoipd, openssh-client, xdg-user-dirs
recommends-jarabe +=, libpam-systemd | consolekit
suggests-session = gdb-minimal | gdb, olpc-powerd
suggests-toolkit = git, ipython3, fonts-dejavu-extra
suggests-activities = python3-elements, csound, gstreamer1.0-plugins-bad
suggests-activities +=, gstreamer1.0-plugins-ugly, gstreamer1.0-libav
suggests-session-only = $(pkg-sucrose)
suggests-session-only +=, $(pkg-fructose-relaxed)
suggests-jarabe-only = $(pkg-session)

# Tighten relations in Sucrose metapackage:
#  * Depend on Glucose (at least current branch)
#  * Depend on Fructose
#  * Recommend non-Sugar helper parts
#  * Suggest deprecated Glucose parts
#  * Re-suggest weak parts (contrib/non-free/missing)
depends-sucrose = $(pkg-session)
depends-sucrose +=, python3-carquinyol
depends-sucrose +=, $(pkg-fructose)
recommends-sucrose = $(suggests-session), $(suggests-toolkit)
recommends-sucrose +=, $(suggests-activities)
suggests-sucrose +=, $(pkg-fructose-relaxed)
suggests-sucrose +=, python3-sugar

CDBS_DEPENDS_$(pkg-session) = $(depends-session)
CDBS_DEPENDS_$(pkg-jarabe) = $(depends-jarabe)
CDBS_DEPENDS_$(pkg-sucrose) = $(depends-sucrose)
CDBS_RECOMMENDS_$(pkg-session) = $(recommends-session)
CDBS_RECOMMENDS_$(pkg-jarabe) = $(recommends-jarabe)
CDBS_RECOMMENDS_$(pkg-sucrose) = $(recommends-sucrose)
CDBS_SUGGESTS_$(pkg-session) = $(suggests-session)
CDBS_SUGGESTS_$(pkg-session) +=, $(suggests-session-only)
CDBS_SUGGESTS_$(pkg-jarabe) = $(suggests-jarabe-only)
CDBS_SUGGESTS_$(pkg-sucrose) = $(suggests-sucrose)

# Provide virtual sugar package to ease install
# Provide virtual x-session-manager package to avoid pulling in gnome-session
CDBS_PROVIDES_$(pkg-session) +=, sugar, x-session-manager

# Provide virtual notification-daemon package
CDBS_PROVIDES_$(pkg-jarabe) +=, notification-daemon

DEB_PYTHON3_PRIVATE_MODULES_DIRS = /usr/share/sugar

# Fix favor ISO 639-1 when differing from ISO 639-2
# avoid shipping Python cache files
binary-post-install/$(pkg-session)::
	mv debian/$(cdbs_curpkg)/usr/share/locale/ibo \
		debian/$(cdbs_curpkg)/usr/share/locale/ig
	find debian/$(cdbs_curpkg)/usr -type f -name '*.pyc' -delete
	find debian/$(cdbs_curpkg)/usr -type d -empty -delete

# Ensure optimal hash-bang + dependency for scripts (see Python Policy)
CDBS_DEPENDS_$(pkg-session) +=, python3
binary-fixup/$(pkg-session)::
	egrep -r -l -Z '^#! ?/usr/bin/(env )?python[[:print:]]*$$' \
		debian/$(cdbs_curpkg)/usr/bin/* \
		| xargs -r -0 perl -pi -e 's,^#! ?/usr/bin/(env )?python[[:print:]]*$$,#!/usr/bin/$(strip $(cdbs_curpythonruntime)),'
