Re: rawhide report: 20110219 changes - requires perl(Gtk2::

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02/21/2011 12:28 PM, Ralf Corsepius wrote:
On 02/21/2011 10:36 AM, Panu Matilainen wrote:
On 02/21/2011 11:23 AM, Marcela MaÅlÃÅovà wrote:
On 02/19/2011 09:10 PM, Remi Collet wrote:
Le 19/02/2011 20:25, Rawhide Report a Ãcrit :

gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::ScrolledWindow)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::DrawingArea)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::Frame)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::ComboBox)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::VBox)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::ToggleButton)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::Dialog)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::Window)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::Notebook)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::OptionMenu)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::HBox)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::Entry)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::EventBox)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::HScale)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::SpinButton)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::Button)
gmusicbrowser-1.0.2-2.fc15.noarch requires perl(Gtk2::Viewport)

I don't understand why this requires are detected in f15/rawhide
(wasn't
in f14) ?

Should I filter them ?
Shouldn't perl-Gtk2 provides them ?


Any tips / idea ?
The huge number of perl requires is result of recent update to rpm-4.9.
In rpm were fixed some bugs and our filtering macro doesn't work well
now [1].

[1] https://bugzilla.redhat.com/show_bug.cgi?id=674765

The filtering macros work just like they always did, the issue of
config(foo) dependencies when using external dependency generator (which
the current Fedora-specific filter macros rely on) in bug 674765 is not
new to 4.9.x. So 674765 is not really related here...

A more likely candidate for new dependencies appearing is that rpm now
collects dependencies from perl's "use base qw" syntax, which older
versions did not.

That's only one half of the issue.

In case of the perl(Gtk2::*), rpm now collects "use base ..." requires,
but misses to collect and provide the XS-symbols they are implicitly
provided through.

I.e. in a perfect world, rpm's deptracking needs to be extended to
collect XS-symbols,

A quick hack applicable to the perl-Gtk2-* packages would be to run
some "nm -sD --undefined ..." based script to generate a list of these
Provides:

Rough uncooked example:

nm -sD --defined /usr/lib64/perl5/auto/Gtk2/Gtk2.so \
| grep -E 'XS_Gtk2.*_new$' \
| sed -e 's,^.*XS_Gtk2,perl(Gtk2,;s,__,::,g;s,_new,),'

Right, if it's possible to generalize that to work with other XS modules it's easy to add a separate rule for them.

Meanwhile it's possible to override __elf_provides to a script which does the above (see attached patch perl-Gtk2 spec), BUT that only works when the internal dependency generator is used, and the fedora filtering macros disable it. So it's pretty much caught in the middle :-/

        - Panu -
diff --git a/perl-Gtk2.spec b/perl-Gtk2.spec
index 61f1e86..544f2be 100644
--- a/perl-Gtk2.spec
+++ b/perl-Gtk2.spec
@@ -13,6 +13,7 @@ Group:          Development/Libraries
 License:        LGPLv2+
 URL:            http://search.cpan.org/dist/Gtk2/
 Source0:        http://www.cpan.org/authors/id/T/TS/TSCH/Gtk2-%{version}.tar.gz
+Source100:	xs-provides.sh
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires:  perl >= 2:5.8.0
@@ -26,7 +27,7 @@ Requires:       perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $versi
 Requires:       perl(Glib) >= 1.200
 Requires:       perl(Cairo) >= 1.00
 
-%{?perl_default_filter}
+%define __elf_provides %{SOURCE100}
 
 %description
 This module allows you to write Gtk+ graphical user interfaces in a
diff --git a/xs-provides.sh b/xs-provides.sh
new file mode 100755
index 0000000..78070fa
--- /dev/null
+++ b/xs-provides.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+while read f; do
+    nm -sD "${f}" | grep -E 'XS_Gtk2.*_new$' \
+    | sed -e 's,^.*XS_Gtk2,perl(Gtk2,;s,__,::,g;s,_new,),' 
+done
-- 
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/devel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux