Le Jeu 4 Mai 2006 23:37, Steve Langasek a écrit :
> On Thu, May 04, 2006 at 05:24:07PM +0200, Pierre HABOUZIT wrote:
> > On Wed, May 03, 2006 at 02:43:13AM -0700, Steve Langasek wrote:
> > > Is anything being done to fix this bug in cdbs?  The libtunepimp
> > > transition is blocked by kdemultimedia, which is RC-buggy until
> > > cdbs is fixed.
> > >
> > > Thanks,
> >
> >   If I understand it right, the incriminated part is that:
> >
> >   - dh_shlibdeps (in binary-predeb target that runs after
> > binary-fixup) is called before after dh_makeshlibs.
> >
> >   - when dh_slibdeps is run on kscd, it clearly sees that
> > libkcdb.so.1 is needed, but can't know without the shlibs that the
> > corresponding package is libkcddb1, and also ignores that. (I
> > suppose buildd logs could here confirm what I suppose).
> >
> >   so my guess is that dh_makeshlibs must move into the binary-fixup
> > target as well.
>
> Could you perhaps provide a test patch that implements this?
>
> Thanks,

ok, got the reason of the bug for real, and a patch (tested against 
kdemultimedia).

the reason of the problem is that:
  dh_makeshlibs is run in binary-fixup
  dh_shlibdeps  is run in binary-predeb

binary-predeb/$(pkg) had a per package pre-dependency on 
binary-fixup/$(pkg) causing the calls be:

for pkg in DEB_ALL_PACKAGES; do
  dh_makeshelibs $pkg
  dh_shlibdeps $pkg
done

where in fact you want *all* makesehlibs be called before any of the 
dh_shlibdeps runs, meanint a sequencing point misses.

I've made any binary-predeb depend on a rule that depends on all 
binary-fixups, using the common -IMPL trick.

the patch is tested against kdemultimedia: packages are built, and 
dh_makeshlibs/dh_shlibdeps are run in right order.

Cheers,
-- 
·O·  Pierre Habouzit
··O                                                [EMAIL PROTECTED]
OOO                                                http://www.madism.org
diff -Nura cdbs-0.4.39/1/rules/debhelper.mk.in cdbs-0.4.39.fixed/1/rules/debhelper.mk.in
--- cdbs-0.4.39/1/rules/debhelper.mk.in	2006-04-19 02:19:57.000000000 +0200
+++ cdbs-0.4.39.fixed/1/rules/debhelper.mk.in	2006-05-05 00:34:07.000000000 +0200
@@ -180,6 +180,12 @@
 $(patsubst %,binary-strip-IMPL/%,$(DEB_ALL_PACKAGES)) :: binary-strip-IMPL/%: 
 	$(if $(is_debug_package),,dh_strip -p$(cdbs_curpkg) $(call cdbs_add_dashx,$(DEB_STRIP_EXCLUDE)) $(DEB_DH_STRIP_ARGS))
 
+# This rule is called right before generating debs {post,pre}{inst,rm} and controls, deps, are calculated
+# for each package, but after the binary-fixup hooks have been run.
+# (necessary for dh_shlibdeps to work on our own dh_makeshlibs'ed libs)
+common-binary-fixup-arch:: $(patsubst %,binary-fixup/%,$(DEB_ARCH_PACKAGES))
+common-binary-fixup-indep:: $(patsubst %,binary-fixup/%,$(DEB_INDEP_PACKAGES))
+
 # This rule is called after stripping; it compresses, fixes permissions,
 # and sets up shared library information.
 $(patsubst %,binary-fixup/%,$(DEB_ALL_PACKAGES)) :: binary-fixup/%: binary-strip/%
@@ -194,7 +200,9 @@
 
 # This rule is called right before a packages' .deb file is made.
 # It is a good place to make programs setuid, change the scripts in DEBIAN/, etc. 
-$(patsubst %,binary-predeb/%,$(DEB_ALL_PACKAGES)) :: binary-predeb/%: binary-fixup/%
+$(patsubst %,binary-predeb/%,$(DEB_ARCH_PACKAGES)) :: binary-predeb/%: common-binary-fixup-arch binary-predeb-IMPL/%
+$(patsubst %,binary-predeb/%,$(DEB_INDEP_PACKAGES)) :: binary-predeb/%: common-binary-fixup-indep binary-predeb-IMPL/%
+$(patsubst %,binary-predeb-IMPL/%,$(DEB_ALL_PACKAGES)) :: binary-predeb-IMPL/%:
 	dh_installdeb -p$(cdbs_curpkg) $(DEB_DH_INSTALLDEB_ARGS)
 	dh_perl -p$(cdbs_curpkg) $(DEB_DH_PERL_ARGS)
 	dh_shlibdeps -p$(cdbs_curpkg) $(DEB_DH_SHLIBDEPS_ARGS)

Attachment: pgpfbPYqgrd6D.pgp
Description: PGP signature

Reply via email to