dpkg-buildpackage and new "-indep" debhelper options

Anton Gladky gladky.anton at gmail.com
Wed Dec 7 16:17:47 UTC 2011


Thank you, Roger, for your extended response.

>  What is preventing you from building the docs in build-indep?
I am trying it to do it now, using new -indep and -arch options.

> Are you using the latest debhelper?
Yes, 8.9.11

I have simplified debian/rules:

====================================
#! /usr/bin/make -f
BUILDDIR = $(CURDIR)/debian/build

%:
	dh $@ --buildsystem=cmake --builddirectory=$(BUILDDIR)

override_dh_auto_build-indep:
	cd $(BUILDDIR); $(MAKE) doc
====================================

But I still have a problem. Docs are building with "-B" option.

"dpkg-buildpackage -B" calls "dh build", but it should call "dh
build-arch", isn't it?

Thanks.
Anton


On Tue, Dec 6, 2011 at 6:21 PM, Roger Leigh <rleigh at codelibre.net> wrote:
> On Tue, Dec 06, 2011 at 05:53:55PM +0100, Anton Gladky wrote:
>> Hi all,
>>
>> I have an eigen3 package, which uses --before option to escape
>> DOC-building on all platforms.
>> debian/rules is looking so now:
>>
>> ====================================
>> binary-indep:
>>       dh $@ --buildsystem=cmake --builddirectory=$(BUILDDIR) --before dh_auto_build
>>       cd $(BUILDDIR); $(MAKE) doc
>>       rm -f $(BUILDDIR)/doc/html/unsupported/installdox
>>       dh $@ --buildsystem=cmake --builddirectory=$(BUILDDIR) --after dh_auto_build
>
> I think there's a fundamental issue with this --before and
> --after logic: dh_auto_build is run in the /build/ rules.  It
> has no place in the /binary/ rules.  If you call /any/ of the
> binary sequences after the build sequences, they will already
> have been run.  Additionally, you should not be running
> $(MAKE) in the binary-indep rule.  Run it in build-indep,
> which is there for exactly this purpose.
>
> I've not yet seen a non-buggy use of --before and --after.
> If you make proper use of override_xxx-indep and/or the
> standard build-indep target, there should never be a reason
> to use them.  What is preventing you from building the
> docs in build-indep?
>
>> binary-arch:
>>       dh $@ --buildsystem=cmake --builddirectory=$(BUILDDIR)
>>
>> binary: binary-indep
>
> binary *must* be dependent upon both binary-arch and binary-indep,
> i.e.
>
> binary: binary-arch binary-indep
>
> However, if you have the generic
>
> %:
>        dh $@ --buildsystem=cmake --builddirectory=$(BUILDDIR)
>
> then both the binary-arch and binary targets may be deleted
> entirely; dh will do the right thing.
>
>> ====================================
>> override_dh_auto_build-indep:
>>       cd $(BUILDDIR); $(MAKE) doc
>>       rm -f $(BUILDDIR)/doc/html/unsupported/installdox
>> ====================================
>>
>> But "dpkg-buildpackage -B" as well as "pbuilder --binary-arch" are
>> building DOCs, ignoring -indep option.
>> What can be wrong there?
>
> Are you using the latest debhelper?  There was an issue with
> -indep in #648901.  It's fixed in 8.9.10; you might also need
> to explicitly enable v9 compat mode.  That bug shouldn't
> affect -B though since it's calling the -arch targets directly.
> Your use of dh --before/--after may have confused things
> though.
>
>
> Regards,
> Roger
>
> --
>  .''`.  Roger Leigh
>  : :' :  Debian GNU/Linux             http://people.debian.org/~rleigh/
>  `. `'   Printing on GNU/Linux?       http://gutenprint.sourceforge.net/
>   `-    GPG Public Key: 0x25BFB848   Please GPG sign your mail.



More information about the debian-science-maintainers mailing list