#!/usr/bin/make -f # -*- mode: makefile; coding: utf-8 -*- # Copyright 2012, 2015-2017 Jonas Smedegaard # Description: Main Debian packaging script for sugar-toolkit-gtk3 # # 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 3, 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, see . DEB_BUILDDIR = build include /usr/share/cdbs/1/class/python-autotools.mk include /usr/share/cdbs/1/rules/debhelper.mk CDBS_BUILD_DEPENDS +=, autoconf-archive include /usr/share/cdbs/1/rules/autoreconf.mk # TODO: convince upstream to install headers, and provide proper -dev package stem = sugarext pkgbranch = $(subst $(space),.,$(wordlist 1, 2,$(subst .,$(space),$(DEB_UPSTREAM_VERSION)))) abi = 0 lib = lib$(stem) pkg-lib = lib$(stem)$(abi) pkg-dev = lib$(stem)-dev pkg-gir = gir1.2-$(stem)-1.0 pkg-data = lib$(stem)-data #pkg-bin = sugar-activity pkg-bin = python-sugar3 pkg-python = python-sugar3 # Adapt packaging in maintainer mode when targeting experimental branch: # * Switch git packaging branch # * Track any release (else only current branch) ifneq (,$(DEB_MAINTAINER_MODE)) watch-limit = $(if $(DEB_SUITE_EXP),,$(pkgbranch)\\.) debian-branch = $(if $(DEB_SUITE_EXP),master,master-$(pkgbranch)) clean:: perl -i -pe 's/\([\d.\\]*\.\*\)/($(watch-limit).*)/' \ debian/watch perl -i -pe 's/^debian-branch *= *\K.*/$(debian-branch)/' \ debian/gbp.conf endif # Needed by upstream build process # * linux-libc-dev/hurd-dev needed by sugar-fatattr dev-bdeps = gtk-3 gdk-pixbuf2.0 sm ice rsvg2 xfixes xi x11 bdeps = $(patsubst %,$(comma) lib%-dev,$(dev-bdeps)) bdeps +=, gettext, intltool, libxml-parser-perl, x11proto-core-dev bdeps +=, libasound2-dev | libasound-dev, libgirepository1.0-dev bdeps +=, linux-libc-dev [linux-any], hurd-dev [hurd-any] # Needed (always/often/seldom) at runtime # * Carquinol used in sugar3.datastore.* # * Jarabe used in sugar3.graphics.popwindow # * alsa-utils (mayby still) needed to unmute devices at boot (bug#581504) # * shared-mime-info (update-mime-database) used in sugar.bundle.bundlebuilder # * unzip used in sugar3.bundle.bundle # * git used in sugar3.activity.bundlebuilder # * gstreamer1.0-espeak used in sugar3.speech # * gstreamer1.0-plugins-good (autoaudiosink) used in sugar3.speech # TODO: relax dependencies for our own GIR when its API is stable gir-deps = glib-2.0 gtk-3.0 gdkpixbuf-2.0 pango-1.0 rsvg-2.0 atspi-2.0 python-deps = gi gi-cairo dbus cairo telepathy dateutil decorator depends = $(patsubst %,$(comma) python-%,$(python-deps)) depends +=, $(patsubst %,$(comma) gir1.2-%,$(gir-deps)) depends +=, gir1.2-sugarext-1.0 (>= $(DEB_VERSION)) depends +=, gir1.2-sugarext-1.0 (<< $(DEB_VERSION).1~) depends-dev = $(pkg-gir) (= $(DEB_VERSION)) depends-gir = $(pkg-lib) (= $(DEB_VERSION)) recommends = unzip, telepathy-mission-control-5, alsa-utils recommends +=, telepathy-salut, shared-mime-info recommends +=, gir1.2-webkit2-4.0 recommends +=, gir1.2-webkit2-4.0 | gir1.2-webkit-3.0 recommends +=, gstreamer1.0-espeak, gstreamer1.0-plugins-good suggests = git, ipython suggests +=, python-jarabe, python-carquinyol CDBS_BUILD_DEPENDS +=, $(bdeps) CDBS_DEPENDS_$(pkg-python) +=, $(depends) CDBS_DEPENDS_$(pkg-dev) = $(depends-dev) CDBS_DEPENDS_$(pkg-gir) = $(depends-gir) CDBS_RECOMMENDS_$(pkg-python) = $(recommends) CDBS_SUGGESTS_$(pkg-python) = $(suggests) # Multiarch quirks DEB_CONFIGURE_EXTRA_FLAGS += --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) # optimize linking LDFLAGS += -Wl,-O1 # TODO: disallow undefined symbols #LDFLAGS += -Wl,-z,defs # link only when needed LDFLAGS += -Wl,--as-needed DEB_DH_INSTALL_ARGS_ALL = --autodest DEB_DH_INSTALL_ARGS_$(pkg-python) = usr/bin usr/lib/python* DEB_DH_INSTALL_ARGS_$(pkg-gir) = usr/lib/$(DEB_HOST_MULTIARCH)/girepository-1.0 DEB_DH_INSTALL_ARGS_$(pkg-data) = usr/share/locale # Drop created dir if empty to please lintian binary-post-install/$(pkg-data):: rmdir --ignore-fail-on-non-empty --parents $(DEB_DESTDIR)/usr/share/locale # Let d-shlibs calculate development package dependencies # and handle shared library install CDBS_BUILD_DEPENDS += , d-shlibs (>= 0.59~) binary-post-install/$(pkg-lib):: debian/stamp-local-shlibs-$(lib) # the --override s/libfribidi0-dev/libfribidi-dev/ below is needed to # address https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895235 debian/stamp-local-shlibs-$(lib): binary-install/$(pkg-lib) d-shlibmove --commit \ --multiarch \ --exclude-la --exclude-a \ --devunversioned --ignorelibdep \ --movedev debian/tmp/usr/share/gir-1.0 usr/share/ \ --extralib debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libsugar-eventcontroller.so \ --override s/libfribidi0-dev/libfribidi-dev/ \ debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/$(lib).so touch $@ clean:: rm -f debian/stamp-local-shlibs-$(lib) # Ensure proper hash-bang in Python script (Python Policy 0.9 ยง3.1) # * TODO: drop cdbs_python_binary fallback when cdbs 0.5 is stable binary-fixup/$(pkg-python):: 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 $(or $(cdbs_curpythonruntime),$(cdbs_python_binary))),' # Fix favor ISO 639-1 when differing from ISO 639-2 binary-post-install/$(pkg-data):: mv debian/$(cdbs_curpkg)/usr/share/locale/ibo \ debian/$(cdbs_curpkg)/usr/share/locale/ig