Dear all, Here is an improvement on top of Barry's patch:
* clean up and remove ubuntu-specific bits * build one language loader per 'flavor' This allows easily enabling/disabling flavors. What about gjs? Was there a reason why that one was not built? I added debian/rules support for it, but didn't enable nor added additional dependencies. -- Regards, Dmitrijs.
=== modified file 'debian/changelog' --- debian/changelog 2012-06-21 23:01:31 +0000 +++ debian/changelog 2012-06-22 08:44:42 +0000 @@ -1,3 +1,15 @@ +libpeas (1.4.0-2.1) unstable; urgency=low + + [ Barry Warsaw ] + * Build the Python 3 plugin, and enable it to exist next to the Python 2 + plugin (though only one can be used by an application at a time). Add + Python 3 support to peas-demo. + + [ Dmitrijs Ledkovs ] + * Build one language loader per flavor. There is no vala loader, as it's C. + + -- Dmitrijs Ledkovs <dmitrij.led...@ubuntu.com> Fri, 22 Jun 2012 00:07:26 +0100 + libpeas (1.4.0-2) unstable; urgency=low * Don't enable the seed plugin on ia64 and mips since seed is not available === modified file 'debian/control' --- debian/control 2012-06-21 23:01:31 +0000 +++ debian/control 2012-06-21 23:06:07 +0000 @@ -9,6 +9,7 @@ Uploaders: Martin Pitt <mp...@debian.org>, Michael Biebl <bi...@debian.org>, Sjoerd Simons <sjo...@debian.org> Build-Depends: cdbs (>= 0.4.90), debhelper (>= 8), + autoconf, gnome-pkg-tools, intltool (>= 0.40), gtk-doc-tools (>= 1.11), @@ -20,6 +21,7 @@ libseed-gtk3-dev (>= 2.91.91) [!ia64 !mips], python-dev (>= 2.5.2), python-gi-dev (>= 3.0.0), + python3-dev, valac-0.14, gnome-icon-theme Standards-Version: 3.9.3 === modified file 'debian/control.in' --- debian/control.in 2012-06-21 23:01:31 +0000 +++ debian/control.in 2012-06-21 23:05:45 +0000 @@ -4,6 +4,7 @@ Uploaders: @GNOME_TEAM@ Build-Depends: cdbs (>= 0.4.90), debhelper (>= 8), + autoconf, gnome-pkg-tools, intltool (>= 0.40), gtk-doc-tools (>= 1.11), @@ -15,6 +16,7 @@ libseed-gtk3-dev (>= 2.91.91) [!ia64 !mips], python-dev (>= 2.5.2), python-gi-dev (>= 3.0.0), + python3-dev, valac-0.14, gnome-icon-theme Standards-Version: 3.9.3 === added directory 'debian/patches' === added file 'debian/patches/python3-demo.patch' --- debian/patches/python3-demo.patch 1970-01-01 00:00:00 +0000 +++ debian/patches/python3-demo.patch 2012-06-21 23:01:50 +0000 @@ -0,0 +1,154 @@ +Description: Add Python 3 demo. + This patch mostly just copies the existing Python plugin demo, but tweaks the + visible strings to show how a Python 2 or Python 3 (but not both) plugin can + be used in a single application. +Author: Barry Warsaw <ba...@python.org> +Forwarded: no + +--- a/peas-demo/peas-demo.c ++++ b/peas-demo/peas-demo.c +@@ -126,6 +126,7 @@ + + peas_engine_enable_loader (engine, "gjs"); + peas_engine_enable_loader (engine, "python"); ++ peas_engine_enable_loader (engine, "python3"); + peas_engine_enable_loader (engine, "seed"); + + if (run_from_build_dir) +--- /dev/null ++++ b/peas-demo/plugins/python3hello/Makefile.am +@@ -0,0 +1,8 @@ ++plugindir = $(libdir)/peas-demo/plugins/python3hello ++ ++plugin_PYTHON = \ ++ python3hello.py ++ ++plugin_DATA = python3hello.plugin ++ ++EXTRA_DIST = $(plugin_DATA) +--- /dev/null ++++ b/peas-demo/plugins/python3hello/python3hello.plugin +@@ -0,0 +1,13 @@ ++[Plugin] ++Module=python3hello ++Loader=python3 ++IAge=2 ++Name=Python 3 Says Hello ++Description=Inserts a box containing "Python 3 Says Hello" in every windows. ++Authors=Steve Frécinaux <c...@istique.net> ++Copyright=Copyright © 2009 Steve Frécinaux ++Website=http://code.istique.net/ ++Help=http://git.gnome.org/browse/error ++Help-Windows=http://git.gnome.org/browse/libpeas ++Help-MacOS-X=http://git.gnome.org/browse/libpeas ++Help-GNOME=http://git.gnome.org/browse/libpeas +--- /dev/null ++++ b/peas-demo/plugins/python3hello/python3hello.py +@@ -0,0 +1,61 @@ ++# -*- coding: utf-8 -*- ++# ex:set ts=4 et sw=4 ai: ++ ++## ++# python3hello.py ++# This file is part of libpeas ++# ++# Copyright (C) 2009-2010 Steve Frécinaux ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU Library General Public License as published by ++# the Free Software Foundation; either version 2 of the License, 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 Library General Public License for more details. ++# ++# You should have received a copy of the GNU Library General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++## ++ ++import sys ++ ++from gi.repository import GObject ++from gi.repository import Peas ++from gi.repository import PeasGtk ++from gi.repository import Gtk ++ ++LABEL_STRING="Python {}.{} Says Hello!".format(*sys.version_info[:2]) ++ ++class Python3HelloPlugin(GObject.Object, Peas.Activatable): ++ __gtype_name__ = 'Python3HelloPlugin' ++ ++ object = GObject.property(type=GObject.Object) ++ ++ def do_activate(self): ++ window = self.object ++ print("Python3HelloPlugin.do_activate", repr(window)) ++ window._pythonhello_label = Gtk.Label() ++ window._pythonhello_label.set_text(LABEL_STRING) ++ window._pythonhello_label.show() ++ window.get_child().pack_start(window._pythonhello_label, True, True, 0) ++ ++ def do_deactivate(self): ++ window = self.object ++ print("Python3HelloPlugin.do_deactivate", repr(window)) ++ window.get_child().remove(window._pythonhello_label) ++ window._pythonhello_label.destroy() ++ ++ def do_update_state(self): ++ print("Python3HelloPlugin.do_update_state", repr(self.object)) ++ ++class Python3HelloConfigurable(GObject.Object, PeasGtk.Configurable): ++ __gtype_name__ = 'Python3HelloConfigurable' ++ ++ def do_create_configure_widget(self): ++ return Gtk.Label.new("Python {}.{} Hello configure widget".format( ++ *sys.version_info[:2])) +--- a/peas-demo/plugins/Makefile.am ++++ b/peas-demo/plugins/Makefile.am +@@ -5,7 +5,7 @@ + endif + + if ENABLE_PYTHON +-SUBDIRS += pythonhello ++SUBDIRS += pythonhello python3hello + endif + + if ENABLE_SEED +--- a/configure.ac ++++ b/configure.ac +@@ -490,6 +490,7 @@ + peas-demo/plugins/gjshello/Makefile + peas-demo/plugins/helloworld/Makefile + peas-demo/plugins/pythonhello/Makefile ++peas-demo/plugins/python3hello/Makefile + peas-demo/plugins/secondtime/Makefile + peas-demo/plugins/seedhello/Makefile + peas-demo/plugins/valahello/Makefile +--- a/peas-demo/plugins/pythonhello/pythonhello.py ++++ b/peas-demo/plugins/pythonhello/pythonhello.py +@@ -22,12 +22,14 @@ + # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + ## + ++import sys ++ + from gi.repository import GObject + from gi.repository import Peas + from gi.repository import PeasGtk + from gi.repository import Gtk + +-LABEL_STRING="Python Says Hello!" ++LABEL_STRING="Python {}.{} Says Hello!".format(*sys.version_info[:2]) + + class PythonHelloPlugin(GObject.Object, Peas.Activatable): + __gtype_name__ = 'PythonHelloPlugin' +@@ -55,4 +57,5 @@ + __gtype_name__ = 'PythonHelloConfigurable' + + def do_create_configure_widget(self): +- return Gtk.Label.new("Python Hello configure widget") ++ return Gtk.Label.new("Python {}.{} Hello configure widget".format( ++ *sys.version_info[:2])) === added file 'debian/patches/series' --- debian/patches/series 1970-01-01 00:00:00 +0000 +++ debian/patches/series 2012-06-21 23:01:50 +0000 @@ -0,0 +1,1 @@ +python3-demo.patch === modified file 'debian/rules' --- debian/rules 2012-06-21 23:01:31 +0000 +++ debian/rules 2012-06-22 08:41:45 +0000 @@ -1,19 +1,30 @@ #!/usr/bin/make -f +include /usr/share/cdbs/1/rules/buildvars.mk + +DEB_PEAS_LOADERS ?= python python3 $(if $(filter-out ia64 mips, $(DEB_HOST_ARCH)),seed) +DEB_MAKE_FLAVORS = all $(DEB_PEAS_LOADERS) +DEB_DH_INSTALL_SOURCEDIR = debian/tmp/all +DEB_BUILDDIR = build + include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/gnome.mk include /usr/share/cdbs/1/rules/utils.mk include /usr/share/gnome-pkg-tools/1/rules/uploaders.mk include /usr/share/gnome-pkg-tools/1/rules/gnome-get-source.mk -DEB_CONFIGURE_EXTRA_FLAGS += --enable-gtk-doc \ - --enable-vala \ - --enable-python \ - --disable-gjs - -ifeq (,$(filter $(DEB_HOST_ARCH),ia64 mips)) -DEB_CONFIGURE_EXTRA_FLAGS += --enable-seed -endif +makebuilddir:: + autoreconf + +DEB_CONFIGURE_FLAGS_all += --enable-gtk-doc --enable-vala --disable-python + +DEB_PEAS_FLAGS := --disable-gtk --disable-glade-catalog --disable-python +DEB_CONFIGURE_FLAGS_python += $(DEB_PEAS_FLAGS) --enable-python +DEB_CONFIGURE_FLAGS_python3 += $(DEB_PEAS_FLAGS) --enable-python +DEB_CONFIGURE_FLAGS_seed += $(DEB_PEAS_FLAGS) --enable-seed +DEB_CONFIGURE_FLAGS_gjs += $(DEB_PEAS_FLAGS) --enable-gjs + +debian/stamp-autotools/python3:: DEB_CONFIGURE_SCRIPT_ENV=PYTHON=python3 # We clean the test directory before running check because we need to stop # -Bsymbolic-functions from being used when building the tests. Else @@ -22,6 +33,17 @@ DEB_DH_MAKESHLIBS_ARGS_libpeas-1.0-0 += -X/usr/lib/libpeas-1.0/ +ifneq (,$(filter python3, $(DEB_PEAS_LOADERS))) +common-install-arch:: + cd debian/tmp/python3/usr/lib/libpeas-1.0/loaders/ && \ + mv libpythonloader.so libpython3loader.so +endif + +install/libpeas-1.0-0:: + install -d debian/tmp/all/usr/lib/libpeas-1.0/loaders + cp -a debian/tmp/*/usr/lib/libpeas-1.0/loaders/*.so \ + debian/tmp/all/usr/lib/libpeas-1.0/loaders + binary-post-install/libpeas-doc:: # remove compiled python and libtool .la files find debian/$(cdbs_curpkg) -name '*.pyo' -delete