22 Jun 2012 10:50
Bug#678354: libpeas: Build a Python 3 loader
Dmitrijs Ledkovs <dmitrijs.ledkovs <at> canonical.com>
2012-06-22 08:50:13 GMT
2012-06-22 08:50:13 GMT
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
<at> <at> -1,3 +1,15 <at> <at>
+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.ledkov <at> 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
<at> <at> -9,6 +9,7 <at> <at>
Uploaders: Martin Pitt <mpitt <at> debian.org>, Michael Biebl <biebl <at> debian.org>, Sjoerd Simons <sjoerd <at> debian.org>
Build-Depends: cdbs (>= 0.4.90),
debhelper (>= 8),
+ autoconf,
gnome-pkg-tools,
intltool (>= 0.40),
gtk-doc-tools (>= 1.11),
<at> <at> -20,6 +21,7 <at> <at>
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
<at> <at> -4,6 +4,7 <at> <at>
Uploaders: <at> GNOME_TEAM <at>
Build-Depends: cdbs (>= 0.4.90),
debhelper (>= 8),
+ autoconf,
gnome-pkg-tools,
intltool (>= 0.40),
gtk-doc-tools (>= 1.11),
<at> <at> -15,6 +16,7 <at> <at>
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
<at> <at> -0,0 +1,154 <at> <at>
+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 <barry <at> python.org>
+Forwarded: no
+
+--- a/peas-demo/peas-demo.c
++++ b/peas-demo/peas-demo.c
+ <at> <at> -126,6 +126,7 <at> <at>
+
+ 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
+ <at> <at> -0,0 +1,8 <at> <at>
++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
+ <at> <at> -0,0 +1,13 <at> <at>
++[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 <code <at> 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
+ <at> <at> -0,0 +1,61 <at> <at>
++# -*- 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
+ <at> <at> -5,7 +5,7 <at> <at>
+ endif
+
+ if ENABLE_PYTHON
+-SUBDIRS += pythonhello
++SUBDIRS += pythonhello python3hello
+ endif
+
+ if ENABLE_SEED
+--- a/configure.ac
++++ b/configure.ac
+ <at> <at> -490,6 +490,7 <at> <at>
+ 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
+ <at> <at> -22,12 +22,14 <at> <at>
+ # 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'
+ <at> <at> -55,4 +57,5 <at> <at>
+ __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
<at> <at> -0,0 +1,1 <at> <at>
+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
<at> <at> -1,19 +1,30 <at> <at>
#!/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
<at> <at> -22,6 +33,17 <at> <at>
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
RSS Feed