[gstreamer-plugins-bad-free] Speedup camerabin pipeline element creation (rhbz#797188, gnome#677698)
Hans de Goede
jwrdegoede at fedoraproject.org
Fri Jun 8 16:31:24 UTC 2012
commit ef2d6c3f6695ead55e79af37e0e7c5334a5b929c
Author: Hans de Goede <hdegoede at redhat.com>
Date: Fri Jun 8 18:31:28 2012 +0200
Speedup camerabin pipeline element creation (rhbz#797188, gnome#677698)
- Re-enable building of -extras package accidentally disabled by the spec-file
re-organization done in 0.10.23-3
- Add teletextdec and musicbrainz plugins to -extras
- Minor spec-file cleanups
...rabin-Fix-spelling-error-in-debug-logging.patch | 26 ++++
...dd-a-camerabin_create_view_finder_caps-he.patch | 121 ++++++++++++++++++++
...dd-gst_camerabin_get_video_source_propert.patch | 97 ++++++++++++++++
...et-src_filter-and-zoom_src_filter-caps-wh.patch | 74 ++++++++++++
gstreamer-plugins-bad-free.spec | 51 ++++++---
5 files changed, 351 insertions(+), 18 deletions(-)
---
diff --git a/0001-gstcamerabin-Fix-spelling-error-in-debug-logging.patch b/0001-gstcamerabin-Fix-spelling-error-in-debug-logging.patch
new file mode 100644
index 0000000..f98e03a
--- /dev/null
+++ b/0001-gstcamerabin-Fix-spelling-error-in-debug-logging.patch
@@ -0,0 +1,26 @@
+From 62c58f011e7069aa45e980930cdfa2d937920a77 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Fri, 8 Jun 2012 10:57:54 +0200
+Subject: [PATCH 1/4] gstcamerabin: Fix spelling error in debug logging
+
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+---
+ gst/camerabin/gstcamerabin.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
+index a17e02c..8a36970 100644
+--- a/gst/camerabin/gstcamerabin.c
++++ b/gst/camerabin/gstcamerabin.c
+@@ -1517,7 +1517,7 @@ gst_camerabin_set_capsfilter_caps (GstCameraBin * camera, GstCaps * new_caps)
+ if (camera->src_zoom_filter)
+ g_object_set (G_OBJECT (camera->src_zoom_filter), "caps", new_caps, NULL);
+ gst_camerabin_update_aspect_filter (camera, new_caps);
+- GST_INFO_OBJECT (camera, "udpated");
++ GST_INFO_OBJECT (camera, "updated");
+ }
+
+ /*
+--
+1.7.10.2
+
diff --git a/0002-camerabin-Add-a-camerabin_create_view_finder_caps-he.patch b/0002-camerabin-Add-a-camerabin_create_view_finder_caps-he.patch
new file mode 100644
index 0000000..3edb6ec
--- /dev/null
+++ b/0002-camerabin-Add-a-camerabin_create_view_finder_caps-he.patch
@@ -0,0 +1,121 @@
+From a07a1138a8cf8ad1029845dfe4cfdf5a0a36e670 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Fri, 8 Jun 2012 11:31:05 +0200
+Subject: [PATCH 2/4] camerabin: Add a camerabin_create_view_finder_caps()
+ helper function
+
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+---
+ gst/camerabin/gstcamerabin.c | 72 +++++++++++++++++++++++-------------------
+ 1 file changed, 40 insertions(+), 32 deletions(-)
+
+diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
+index 8a36970..3f87ff9 100644
+--- a/gst/camerabin/gstcamerabin.c
++++ b/gst/camerabin/gstcamerabin.c
+@@ -505,22 +505,15 @@ GST_BOILERPLATE_FULL (GstCameraBin, gst_camerabin, GstPipeline,
+ */
+
+ /*
+- * camerabin_setup_src_elements:
++ * camerabin_create_view_finder_caps:
+ * @camera: camerabin object
+ *
+- * This function updates camerabin capsfilters according
+- * to fps, resolution and zoom that have been configured
+- * to camerabin.
++ * This function creates new view_finder_caps, according to
++ * fps and resolution that have been configured to camerabin.
+ */
+-static void
+-camerabin_setup_src_elements (GstCameraBin * camera)
++static GstCaps *camerabin_create_view_finder_caps (GstCameraBin * camera)
+ {
+ GstStructure *st;
+- GstCaps *new_caps;
+- gboolean detect_framerate = FALSE;
+-
+- /* clear video update status */
+- camera->video_capture_caps_update = FALSE;
+
+ if (!camera->view_finder_caps) {
+ st = gst_structure_from_string (CAMERABIN_DEFAULT_VF_CAPS, NULL);
+@@ -529,39 +522,54 @@ camerabin_setup_src_elements (GstCameraBin * camera)
+ 0));
+ }
+
+- gst_camerabin_monitor_video_source_properties (camera);
+-
+ if (camera->app_width > 0 && camera->app_height > 0) {
+ gst_structure_set (st,
+ "width", G_TYPE_INT, camera->app_width,
+ "height", G_TYPE_INT, camera->app_height, NULL);
+ }
+
+- if (camera->app_fps_n > 0 && camera->app_fps_d > 0) {
+- if (camera->night_mode) {
+- GST_INFO_OBJECT (camera, "night mode, lowest allowed fps will be forced");
+- camera->pre_night_fps_n = camera->app_fps_n;
+- camera->pre_night_fps_d = camera->app_fps_d;
+- detect_framerate = TRUE;
+- } else {
+- gst_structure_set (st,
+- "framerate", GST_TYPE_FRACTION, camera->app_fps_n,
+- camera->app_fps_d, NULL);
+- new_caps = gst_caps_new_full (st, NULL);
+- }
++ if (!camera->night_mode && camera->app_fps_n > 0 && camera->app_fps_d > 0) {
++ gst_structure_set (st,
++ "framerate", GST_TYPE_FRACTION, camera->app_fps_n,
++ camera->app_fps_d, NULL);
+ } else {
+- GST_DEBUG_OBJECT (camera, "no framerate specified");
+- detect_framerate = TRUE;
+- }
+-
+- if (detect_framerate) {
+- GST_DEBUG_OBJECT (camera, "detecting allowed framerate");
+ /* Remove old framerate if any */
+ if (gst_structure_has_field (st, "framerate")) {
+ gst_structure_remove_field (st, "framerate");
+ }
+- new_caps = gst_caps_new_full (st, NULL);
++ }
++
++ /* The returned caps take ownership of the structure st */
++ return gst_caps_new_full (st, NULL);
++}
+
++/*
++ * camerabin_setup_src_elements:
++ * @camera: camerabin object
++ *
++ * This function updates camerabin capsfilters according
++ * to fps, resolution and zoom that have been configured
++ * to camerabin.
++ */
++static void
++camerabin_setup_src_elements (GstCameraBin * camera)
++{
++ GstCaps *new_caps;
++
++ /* clear video update status */
++ camera->video_capture_caps_update = FALSE;
++
++ gst_camerabin_monitor_video_source_properties (camera);
++
++ new_caps = camerabin_create_view_finder_caps (camera);
++
++ if (camera->night_mode || camera->app_fps_n <= 0 || camera->app_fps_d <= 0) {
++ if (camera->night_mode) {
++ GST_INFO_OBJECT (camera, "night mode, lowest allowed fps will be forced");
++ camera->pre_night_fps_n = camera->app_fps_n;
++ camera->pre_night_fps_d = camera->app_fps_d;
++ }
++ GST_DEBUG_OBJECT (camera, "detecting allowed framerate");
+ /* Set allowed framerate for the resolution */
+ gst_camerabin_set_allowed_framerate (camera, new_caps);
+ }
+--
+1.7.10.2
+
diff --git a/0003-camerabin-Add-gst_camerabin_get_video_source_propert.patch b/0003-camerabin-Add-gst_camerabin_get_video_source_propert.patch
new file mode 100644
index 0000000..3950bb7
--- /dev/null
+++ b/0003-camerabin-Add-gst_camerabin_get_video_source_propert.patch
@@ -0,0 +1,97 @@
+From 1ef6977002ef18631f81646f198ef6a667ef8f73 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Fri, 8 Jun 2012 11:41:17 +0200
+Subject: [PATCH 3/4] camerabin: Add
+ gst_camerabin_get_video_source_properties() helper
+ function
+
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+---
+ gst/camerabin/gstcamerabin.c | 31 +++++++++++++++++++++++++------
+ 1 file changed, 25 insertions(+), 6 deletions(-)
+
+diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
+index 3f87ff9..a36d5b5 100644
+--- a/gst/camerabin/gstcamerabin.c
++++ b/gst/camerabin/gstcamerabin.c
+@@ -347,6 +347,7 @@ static void gst_camerabin_scene_mode_notify_cb (GObject * video_source,
+ GParamSpec * pspec, gpointer user_data);
+ static void gst_camerabin_zoom_notify_cb (GObject * video_source,
+ GParamSpec * pspec, gpointer user_data);
++static void gst_camerabin_get_video_source_properties (GstCameraBin * camera);
+ static void gst_camerabin_monitor_video_source_properties (GstCameraBin *
+ camera);
+ static void gst_camerabin_configure_format (GstCameraBin * camera,
+@@ -528,6 +529,8 @@ static GstCaps *camerabin_create_view_finder_caps (GstCameraBin * camera)
+ "height", G_TYPE_INT, camera->app_height, NULL);
+ }
+
++ gst_camerabin_get_video_source_properties (camera);
++
+ if (!camera->night_mode && camera->app_fps_n > 0 && camera->app_fps_d > 0) {
+ gst_structure_set (st,
+ "framerate", GST_TYPE_FRACTION, camera->app_fps_n,
+@@ -559,8 +562,6 @@ camerabin_setup_src_elements (GstCameraBin * camera)
+ /* clear video update status */
+ camera->video_capture_caps_update = FALSE;
+
+- gst_camerabin_monitor_video_source_properties (camera);
+-
+ new_caps = camerabin_create_view_finder_caps (camera);
+
+ if (camera->night_mode || camera->app_fps_n <= 0 || camera->app_fps_d <= 0) {
+@@ -574,6 +575,8 @@ camerabin_setup_src_elements (GstCameraBin * camera)
+ gst_camerabin_set_allowed_framerate (camera, new_caps);
+ }
+
++ gst_camerabin_monitor_video_source_properties (camera);
++
+ /* Set default zoom method */
+ if (camera->src_zoom_scale) {
+ g_object_set (camera->src_zoom_scale, "method",
+@@ -2660,6 +2663,26 @@ gst_camerabin_zoom_notify_cb (GObject * video_source, GParamSpec * pspec,
+ }
+
+ /*
++ * gst_camerabin_monitor_get_video_source_properties:
++ * @camera: camerabin object
++ *
++ * Get properties from video source photography interface property scene mode.
++ *
++ */
++static void
++gst_camerabin_get_video_source_properties (GstCameraBin * camera)
++{
++ if (GST_IS_ELEMENT (camera->src_vid_src) &&
++ gst_element_implements_interface (camera->src_vid_src,
++ GST_TYPE_PHOTOGRAPHY)) {
++ gint scene_mode;
++ g_object_get (G_OBJECT (camera->src_vid_src), "scene-mode", &scene_mode,
++ NULL);
++ camera->night_mode = scene_mode == GST_PHOTOGRAPHY_SCENE_MODE_NIGHT;
++ }
++}
++
++/*
+ * gst_camerabin_monitor_video_source_properties:
+ * @camera: camerabin object
+ *
+@@ -2674,15 +2697,11 @@ gst_camerabin_monitor_video_source_properties (GstCameraBin * camera)
+ if (GST_IS_ELEMENT (camera->src_vid_src) &&
+ gst_element_implements_interface (camera->src_vid_src,
+ GST_TYPE_PHOTOGRAPHY)) {
+- gint scene_mode;
+ GST_DEBUG_OBJECT (camera,
+ "connecting to %" GST_PTR_FORMAT " - notify::scene-mode",
+ camera->src_vid_src);
+ g_signal_connect (G_OBJECT (camera->src_vid_src), "notify::scene-mode",
+ (GCallback) gst_camerabin_scene_mode_notify_cb, camera);
+- g_object_get (G_OBJECT (camera->src_vid_src), "scene-mode", &scene_mode,
+- NULL);
+- camera->night_mode = scene_mode == GST_PHOTOGRAPHY_SCENE_MODE_NIGHT;
+
+ GST_DEBUG_OBJECT (camera,
+ "connecting to %" GST_PTR_FORMAT " - notify::zoom",
+--
+1.7.10.2
+
diff --git a/0004-camerabin-Set-src_filter-and-zoom_src_filter-caps-wh.patch b/0004-camerabin-Set-src_filter-and-zoom_src_filter-caps-wh.patch
new file mode 100644
index 0000000..ade66be
--- /dev/null
+++ b/0004-camerabin-Set-src_filter-and-zoom_src_filter-caps-wh.patch
@@ -0,0 +1,74 @@
+From 9ea00bf5e7043cab7da93abcb345b2f5c65285de Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Fri, 8 Jun 2012 13:39:37 +0200
+Subject: [PATCH 4/4] camerabin: Set src_filter and zoom_src_filter caps while
+ creating the pipeline
+
+We (Fedora) have been receiving bug reports for cheese, about cheese
+taking 30-60 seconds before showing video, and pausing the same amount of
+time when changing the resolution for example.
+
+I've managed to reproduce this with a Logitech Webcam Pro 9000, which
+supports a large list of resolutions at about 5 different framerates /
+resolution, in my case with an unmodified gst-plugins-bad-0.10.23, the
+camerabin_create_src_elements function takes approx 7 seconds.
+
+Running under gdb and interrupting the execution during these 7 seconds
+consistenly points to gst_caps_intersect_full.
+
+Part of the problem is cheese setting the
+GST_CAMERABIN_FLAG_SOURCE_COLOR_CONVERSION flag, which means that after
+the first ffmpegcsp element in the pipe the total number of caps is
+x resolutions * y framerates * z formats, where both x (due to the camera)
+and z (due to ffmpegcsp) being large. intersecting this with the capabilities
+of other parts of the pipeline simply leads to an explosion of combinations
+which pegs my core i5 CPU @3.1GHz for 7 seconds!
+
+This patch fixes this issue by setting up the capsfilter elements in the pipe
+with an initial filter, greatly reducing the number of combinations when doing
+cap intersecting.
+
+This reduces the time spend in camerabin_create_src_elements from approx 7
+to 0.2 seconds. And when patching cheese to use the default camerabin flags,
+(so removing the first ffmpegcsp element) from approx 0.7 to 0.04 seconds
+
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+---
+ gst/camerabin/gstcamerabin.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
+index a36d5b5..6d7d30f 100644
+--- a/gst/camerabin/gstcamerabin.c
++++ b/gst/camerabin/gstcamerabin.c
+@@ -606,6 +606,7 @@ camerabin_create_src_elements (GstCameraBin * camera)
+ gboolean ret = FALSE;
+ GstBin *cbin = GST_BIN (camera);
+ gchar *driver_name = NULL;
++ GstCaps *filter_caps;
+
+ /* Add application set or default video src element */
+ if (!(camera->src_vid_src = gst_camerabin_setup_default_element (cbin,
+@@ -625,6 +626,10 @@ camerabin_create_src_elements (GstCameraBin * camera)
+ gst_camerabin_create_and_add_element (cbin, "capsfilter",
+ "src-capsfilter")))
+ goto done;
++
++ filter_caps = camerabin_create_view_finder_caps (camera);
++ g_object_set (G_OBJECT (camera->src_filter), "caps", filter_caps, NULL);
++
+ if (camera->flags & GST_CAMERABIN_FLAG_SOURCE_RESIZE) {
+ if (!(camera->src_zoom_crop =
+ gst_camerabin_create_and_add_element (cbin, "videocrop",
+@@ -638,6 +643,8 @@ camerabin_create_src_elements (GstCameraBin * camera)
+ gst_camerabin_create_and_add_element (cbin, "capsfilter",
+ "src-resize-capsfilter")))
+ goto done;
++ g_object_set (G_OBJECT (camera->src_zoom_filter), "caps", filter_caps,
++ NULL);
+ }
+ if (camera->app_video_filter) {
+ if (!gst_camerabin_add_element (cbin, camera->app_video_filter)) {
+--
+1.7.10.2
+
diff --git a/gstreamer-plugins-bad-free.spec b/gstreamer-plugins-bad-free.spec
index 655dbcc..7f7ac3c 100644
--- a/gstreamer-plugins-bad-free.spec
+++ b/gstreamer-plugins-bad-free.spec
@@ -6,15 +6,15 @@
# Turn of extras package on RHEL.
%if ! 0%{?rhel}
-%bcond_with extras
-%else
%bcond_without extras
+%else
+%bcond_with extras
%endif
Summary: GStreamer streaming media framework "bad" plug-ins
Name: gstreamer-plugins-bad-free
Version: 0.10.23
-Release: 5%{?dist}
+Release: 6%{?dist}
# The freeze and nfs plugins are LGPLv2 (only)
License: LGPLv2+ and LGPLv2
Group: Applications/Multimedia
@@ -26,7 +26,11 @@ Source: gst-plugins-bad-free-%{version}.tar.xz
Source1: gst-p-bad-cleanup.sh
# Based on upstream 04909e2c50e68
Patch0: vp8enc-bitrate-fix.patch
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+# https://bugzilla.gnome.org/show_bug.cgi?id=677698 / rhbz#797188
+Patch1: 0001-gstcamerabin-Fix-spelling-error-in-debug-logging.patch
+Patch2: 0002-camerabin-Add-a-camerabin_create_view_finder_caps-he.patch
+Patch3: 0003-camerabin-Add-gst_camerabin_get_video_source_propert.patch
+Patch4: 0004-camerabin-Set-src_filter-and-zoom_src_filter-caps-wh.patch
Requires: %{gstreamer} >= %{gst_minver}
BuildRequires: %{gstreamer}-devel >= %{gst_minver}
@@ -69,6 +73,7 @@ BuildRequires: libdc1394-devel
%endif
BuildRequires: libkate-devel
BuildRequires: libmodplug-devel
+BuildRequires: libmusicbrainz-devel
BuildRequires: libtimidity-devel
BuildRequires: libvdpau-devel
BuildRequires: opencv-devel
@@ -78,6 +83,7 @@ BuildRequires: slv2-devel
BuildRequires: soundtouch-devel
BuildRequires: wildmidi-devel
BuildRequires: zbar-devel
+BuildRequires: zvbi-devel
%endif
Obsoletes: gstreamer-plugins-flumpegdemux < 0.10.15-9
@@ -116,6 +122,7 @@ sources (mythtv), sinks (fbdev) and effects (pitch) which are not used
very much and require additional libraries to be installed.
%endif
+
%package devel
Summary: Development files for the GStreamer media framework "bad" plug-ins
Group: Development/Libraries
@@ -150,30 +157,32 @@ aren't tested well enough, or the code is not of good enough quality.
%prep
%setup -q -n gst-plugins-bad-%{version}
%patch0 -p1 -b .vp8enc_bitrate
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
+
%build
%configure \
--with-package-name="Fedora gstreamer-plugins-bad package" \
--with-package-origin="http://download.fedora.redhat.com/fedora" \
%{!?with_extras:--disable-fbdev --disable-decklink --disable-linsys} \
--enable-debug --disable-static --enable-gtk-doc --enable-experimental \
- --disable-divx
+ --disable-divx --disable-dts --disable-faac --disable-faad --disable-nas \
+ --disable-mimic --disable-libmms --disable-mpeg2enc --disable-mplex \
+ --disable-neon --disable-openal --disable-rtmp --disable-xvid
+make %{?_smp_mflags}
-%{__make} %{?_smp_mflags}
%install
-%{__rm} -rf %{buildroot}
-%{__make} install DESTDIR="%{buildroot}"
+make install DESTDIR="$RPM_BUILD_ROOT"
%find_lang gst-plugins-bad-%{majorminor}
# Clean out files that should not be part of the rpm.
-%{__rm} -f %{buildroot}%{_libdir}/gstreamer-%{majorminor}/*.la
-%{__rm} -f %{buildroot}%{_libdir}/*.la
-
-
-%clean
-%{__rm} -rf %{buildroot}
+rm $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.la
+rm $RPM_BUILD_ROOT%{_libdir}/*.la
%post -p /sbin/ldconfig
@@ -182,7 +191,6 @@ sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
%files -f gst-plugins-bad-%{majorminor}.lang
-%defattr(-,root,root,-)
%doc AUTHORS COPYING README REQUIREMENTS
#%{_datadir}/gstreamer-%{majorminor}
%{_libdir}/libgstbasecamerabinsrc-%{majorminor}.so.*
@@ -290,7 +298,6 @@ sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
%if %{with extras}
%files extras
-%defattr(-,root,root,-)
# Plugins with external dependencies
%{_libdir}/gstreamer-%{majorminor}/libgstassrender.so
%{_libdir}/gstreamer-%{majorminor}/libgstcdaudio.so
@@ -308,7 +315,9 @@ sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
%{_libdir}/gstreamer-%{majorminor}/libgstschro.so
%{_libdir}/gstreamer-%{majorminor}/libgstsdl.so
%{_libdir}/gstreamer-%{majorminor}/libgstsoundtouch.so
+%{_libdir}/gstreamer-%{majorminor}/libgstteletextdec.so
%{_libdir}/gstreamer-%{majorminor}/libgsttimidity.so
+%{_libdir}/gstreamer-%{majorminor}/libgsttrm.so
%{_libdir}/gstreamer-%{majorminor}/libgstvdpau.so
%{_libdir}/gstreamer-%{majorminor}/libgstwildmidi.so
%{_libdir}/gstreamer-%{majorminor}/libgstzbar.so
@@ -319,7 +328,6 @@ sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
%endif
%files devel
-%defattr(-,root,root,-)
%{_libdir}/libgstbasecamerabinsrc-%{majorminor}.so
%{_libdir}/libgstbasevideo-%{majorminor}.so
%{_libdir}/libgstcodecparsers-%{majorminor}.so
@@ -343,11 +351,18 @@ sed -i 's/opencv <= 2.2.0/opencv <= 2.4.0/g' configure
%{_libdir}/pkgconfig/gstreamer-plugins-bad-%{majorminor}.pc
%files devel-docs
-%defattr(-,root,root,-)
%doc %{_datadir}/gtk-doc/html/gst-plugins-bad-plugins-%{majorminor}
%doc %{_datadir}/gtk-doc/html/gst-plugins-bad-libs-%{majorminor}
+
%changelog
+* Fri Jun 08 2012 Hans de Goede <hdegoede at redhat.com> - 0.10.23-6
+- Speedup camerabin pipeline element creation (rhbz#797188, gnome#677698)
+- Re-enable building of -extras package accidentally disabled by the spec-file
+ re-organization done in 0.10.23-3
+- Add teletextdec and musicbrainz plugins to -extras
+- Minor spec-file cleanups
+
* Fri Jun 01 2012 Karsten Hopp <karsten at redhat.com> 0.10.23-5
- bump release and rebuild (linked with old libs on PPC)
More information about the scm-commits
mailing list