#!/usr/bin/make -f
# -*- mode: makefile; coding: utf-8 -*-
# Copyright © 2007-2009 Jonas Smedegaard <dr@jones.dk>
# Description: Main Debian packaging script for sugar
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2, or (at
# your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA.

pkgbranch = 0.88

DEB_BUILDDIR = build
DEB_PYTHON_SYSTEM = pycentral
DEB_PYTHON_PACKAGES = python-jarabe-$(pkgbranch) sugar-session-$(pkgbranch) sugar-emulator-$(pkgbranch) sugar-tools-$(pkgbranch)
ifneq (,$(DEB_MAINTAINER_MODE))
  # Enable stuff not policy compliant (eg. unsuitable for build daemons)
  DEB_COPYRIGHT_CHECK_STRICT = yes
  DEB_AUTO_UPDATE_DEBIAN_CONTROL = yes
endif
include debian/cdbs/1/rules/upstream-tarball.mk
include debian/cdbs/1/rules/copyright-check.mk
include debian/cdbs/1/class/python-autotools.mk
include /usr/share/cdbs/1/rules/debhelper.mk
include debian/cdbs/1/rules/buildinfo.mk

DEB_UPSTREAM_PACKAGE = $(DEB_SOURCE_PACKAGE:%-$(pkgbranch)=%)
DEB_UPSTREAM_URL = http://download.sugarlabs.org/sources/sucrose/glucose/$(DEB_UPSTREAM_PACKAGE)
DEB_UPSTREAM_TARBALL_EXTENSION = tar.bz2
DEB_UPSTREAM_TARBALL_MD5 = 11afabde49be112057904893f1d1c0a5

DEB_PYTHON_PRIVATE_MODULES_DIRS = /usr/share/sugar

# Generate (and cleanup) files containing variables static per build
infiles = $(filter-out debian/control.in, $(wildcard debian/*.in))
outfiles = $(subst __VER__,$(pkgbranch),$(basename $(infiles)))
DEB_PHONY_RULES += $(outfiles)
pre-build:: $(outfiles)
$(outfiles):
	sed 's/__VER__/$(pkgbranch)/' <$(subst $(pkgbranch),__VER__,$@).in >$@
clean::
	rm -f $(outfiles)

# Register GConf schemas
post-install/sugar-session-$(pkgbranch)::
	mkdir -p $(DEB_DESTDIR)/usr/share/gconf/schemas/
	mv $(DEB_DESTDIR)/etc/gconf/schemas/sugar.schemas $(DEB_DESTDIR)/usr/share/gconf/schemas/
	rmdir $(DEB_DESTDIR)/etc/gconf/schemas
	rmdir $(DEB_DESTDIR)/etc/gconf
binary-install/sugar-session-$(pkgbranch)::
	dh_gconf -p$(cdbs_curpkg)

# Needed by upstream build process
CDBS_BUILD_DEPENDS := $(CDBS_BUILD_DEPENDS), libglib2.0-dev, python-gtk2-dev, libgconf2-dev, gettext, intltool, shared-mime-info

comma = ,

# Needed (always/often/sometimes) at runtime
#  * python-wnck needed by python-jarabe (several places) and commands
#    sugar-ui-check and sugar-session. Fallback unneeded since
#    python-wnck 2.24.0-2: can be dropped after Squeeze+1
#  * python-gconf fallback unneeded since python-gconf 2.22.3-3: can be
#    dropped after Squeeze+1
#  * python-gobject versioning needed for GIO bindings
#  * python-telepathy versioning needed for use of
#    CONNECTION_INTERFACE_REQUESTS ABI
#  * metacity needed by commands sugar and sugar-session
#  * xserver-xephyr and x11-utils (xdpyinfo) needed in
#    src/jarabe/util/emulator.py
#  * x11-xserver-utils (xrdb) needed by command sugar and (xsetroot) by
#    command sugar-session
#  * lsb-release (lsb_release), tzdata and ethtool needed in extension
#    ControlPanel
#  * wpasupplicant (wpa_passphrase) needed in
#    jarabe.desktop.keydialog.WPAKeyDialog()
#  * openssh-client (ssh-keygen) needed in
#    jarabe.window.create_profile()
#  * gdb needed by command sugar-launch
# TODO: recommend (not suggest) activities and xkb when packaged
session_xkb = python-xklavier
session_nm = network-manager
session_activities = $(patsubst %,$(comma) sugar-%-activity,read write imageviewer browse jukebox pippy)
emulator_exec = xserver-xephyr, x11-utils
jarabe_initprofile = openssh-client
jarabe_nm_wpa = wpasupplicant
jarabe_cp_cli_exec = x11-xserver-utils, lsb-release, ethtool, tzdata
tools_debug = gdb
CDBS_DEPENDS_sugar-session-$(pkgbranch) = python-sugar-$(pkgbranch), python-sugar-toolkit-$(pkgbranch), sugar-artwork-$(pkgbranch), python-jarabe-$(pkgbranch)
CDBS_DEPENDS_sugar-session-$(pkgbranch) += , python-gobject (>= 2.15.0), python-gtk2, python-dbus
CDBS_DEPENDS_sugar-session-$(pkgbranch) += , python-wnck | python-gnome2-desktop (<= 2.24.0-1)
CDBS_DEPENDS_sugar-session-$(pkgbranch) += , python-gconf | python-gnome2 (<= 2.22.3-2)
CDBS_DEPENDS_sugar-session-$(pkgbranch) += , metacity (>= 1:2.27.1), dbus-x11
CDBS_DEPENDS_sugar-emulator-$(pkgbranch) = sugar-session-$(pkgbranch), python-jarabe-$(pkgbranch)
CDBS_DEPENDS_sugar-emulator-$(pkgbranch) += , dbus-x11, $(emulator_exec)
CDBS_DEPENDS_sugar-tools-$(pkgbranch) = python-sugar-$(pkgbranch), python-sugar-toolkit-$(pkgbranch), python-jarabe-$(pkgbranch)
CDBS_DEPENDS_python-jarabe-$(pkgbranch) = python-sugar-$(pkgbranch), python-sugar-toolkit-$(pkgbranch), sugar-presence-service-$(pkgbranch)
CDBS_DEPENDS_python-jarabe-$(pkgbranch) += , python-hippocanvas, python-gobject (>= 2.15.0), python-gtk2, python-cairo, python-dbus, python-telepathy (>= 0.15.9), python-simplejson, python-gtksourceview2
CDBS_DEPENDS_python-jarabe-$(pkgbranch) += , python-wnck | python-gnome2-desktop (<= 2.24.0-1)
CDBS_DEPENDS_python-jarabe-$(pkgbranch) += , python-gconf | python-gnome2 (<= 2.22.3-2)
CDBS_RECOMMENDS_sugar-session-$(pkgbranch) = sugar-emulator-$(pkgbranch), sugar-tools-$(pkgbranch), python-carquinyol-$(pkgbranch)
CDBS_RECOMMENDS_sugar-session-$(pkgbranch) += , $(jarabe_initprofile), $(session_nm), $(jarabe_cp_cli_exec)
CDBS_RECOMMENDS_sugar-tools-$(pkgbranch) = sugar-session-$(pkgbranch)
CDBS_RECOMMENDS_sugar-tools-$(pkgbranch) += , python-gobject (>= 2.15.0), python-gtk2, python-dbus
CDBS_RECOMMENDS_sugar-tools-$(pkgbranch) += , python-wnck | python-gnome2-desktop (<= 2.24.0-1)
CDBS_RECOMMENDS_sugar-tools-$(pkgbranch) += , $(session_nm), $(jarabe_cp_cli_exec), dbus
CDBS_RECOMMENDS_python-jarabe-$(pkgbranch) = sugar-session-$(pkgbranch)
CDBS_RECOMMENDS_python-jarabe-$(pkgbranch) += , $(session_nm), $(jarabe_nm_wpa)
CDBS_RECOMMENDS_python-jarabe-$(pkgbranch) += , $(jarabe_initprofile)
CDBS_SUGGESTS_sugar-session-$(pkgbranch) = $(session_xkb), $(session_activities)
CDBS_SUGGESTS_sugar-tools-$(pkgbranch) = $(tools_debug)
CDBS_SUGGESTS_python-jarabe-$(pkgbranch) = $(emulator_exec)

# TODO: depend on all when packaged for Debian
CDBS_DEPENDS_sucrose-$(pkgbranch) = sugar-session-$(pkgbranch), sugar-emulator-$(pkgbranch), sugar-tools-$(pkgbranch), python-carquinyol-$(pkgbranch)
CDBS_DEPENDS_sucrose-$(pkgbranch) += , $(session_nm), $(jarabe_nm_wpa), $(jarabe_initprofile), $(jarabe_cp_cli_exec), $(tools_debug)
CDBS_SUGGESTS_sucrose-$(pkgbranch) = $(session_activities), $(session_xkb)

# Ensure only one variant is installed at a time (Debian Policy 7.6.2)
CDBS_PROVIDES_python-jarabe-$(pkgbranch) = python-jarabe
CDBS_CONFLICTS_python-jarabe-$(pkgbranch) = python-jarabe
CDBS_REPLACES_python-jarabe-$(pkgbranch) = python-jarabe
CDBS_PROVIDES_sugar-session-$(pkgbranch) = sugar-session
CDBS_CONFLICTS_sugar-session-$(pkgbranch) = sugar-session
CDBS_REPLACES_sugar-session-$(pkgbranch) = sugar-session
CDBS_PROVIDES_sugar-emulator-$(pkgbranch) = sugar-emulator
CDBS_CONFLICTS_sugar-emulator-$(pkgbranch) = sugar-emulator
CDBS_REPLACES_sugar-emulator-$(pkgbranch) = sugar-emulator
CDBS_PROVIDES_sugar-tools-$(pkgbranch) = sugar-tools
CDBS_CONFLICTS_sugar-tools-$(pkgbranch) = sugar-tools
CDBS_REPLACES_sugar-tools-$(pkgbranch) = sugar-tools

# Provide virtual unversioned sugar package
CDBS_PROVIDES_sucrose-$(pkgbranch) = sugar
CDBS_CONFLICTS_sucrose-$(pkgbranch) = sugar
CDBS_REPLACES_sucrose-$(pkgbranch) = sugar

# sugar until 0.82.9-5 (released with Lenny) split into
# python-jarabe-0.86 and sugar-{session,emulator,tools}-0.86: can be
# dropped after Squeeze+1
CDBS_CONFLICTS_python-jarabe-$(pkgbranch) = sugar (<= 0.82.9-5)
CDBS_REPLACES_python-jarabe-$(pkgbranch) = sugar (<= 0.82.9-5)
CDBS_CONFLICTS_sugar-session-$(pkgbranch) = sugar (<= 0.82.9-5)
CDBS_REPLACES_sugar-session-$(pkgbranch) = sugar (<= 0.82.9-5)
CDBS_CONFLICTS_sugar-emulator-$(pkgbranch) = sugar (<= 0.82.9-5)
CDBS_REPLACES_sugar-emulator-$(pkgbranch) = sugar (<= 0.82.9-5)
CDBS_CONFLICTS_sugar-tools-$(pkgbranch) = sugar (<= 0.82.9-5)
CDBS_REPLACES_sugar-tools-$(pkgbranch) = sugar (<= 0.82.9-5)

# Journal, now part of Jarabe, was separately packaged upstream < 0.84
# (released with Lenny): can be dropped after Squeeze+1
CDBS_CONFLICTS_python-jarabe-$(pkgbranch) += , sugar-journal-activity
CDBS_REPLACES_python-jarabe-$(pkgbranch) += , sugar-journal-activity

# Needed for our packaging
CDBS_BUILD_DEPENDS := $(CDBS_BUILD_DEPENDS), python-empy

# Resolve, cleanup and apply CDBS-declared dependencies
include debian/cdbs/1/rules/package-relations.mk
