Bug#794538: systemd / cross-building / failure in dpkg-gencontrol

Johannes Schauer josch at debian.org
Mon Aug 31 12:41:35 UTC 2015


Hi,

Quoting James McCoy (2015-08-29 04:09:43)
> On Mon, Aug 24, 2015 at 12:49:58PM +0200, Johannes Schauer wrote:
> > Quoting Michael Biebl (2015-08-24 09:56:02)
> > > Am 24.08.2015 um 08:21 schrieb Johannes Schauer:
> > > > This is fixable. It has to be because building a binary package to
> > > > satisfy dependencies already works in other situations while still
> > > > being cross-aware, most notably in sbuild.
> > > > 
> > > > Namely, what mk-build-deps should do is to copy the sbuild behaviour:
> > > > 
> > > >  - use libdpkg-perl to parse and process the Build-{Depends,Conflicts}* fields
> > > >    and filter architecture and profile restrictions correctly
> > > >  - change the meaning of its --arch option (this currently does some magic
> > > >    depending on whether the source package has architecture specific build
> > > >    dependencies or not):
> 
> No, --arch shouldn't be repurposed to mean "produce a deb that satisfies
> cross-build requirements".  If you want to add new functionality, that's
> fine.  Just don't break existing functionality while you're at it.
> 
> Something like "mk-build-deps --cross --arch $hostarch" would be
> acceptable.

attached patch should address your concerns.

As a summary, here the new --help output:

    -a *foo*, --arch *foo*
        Set the architecture of the produced binary package to *foo*. If
        this option is not given, fall back to the value given by
        --host-arch. If neither this option nor --host-arch are given but
        the Build-Depends contain architecture restrictions, use the value
        printed by `dpkg-architecture -qDEB_HOST_ARCH`. Otherwise, use
        *all*.

        The package architecture must be equal to the host architecture
        except if the package architecture is *all*.

        The package architecture cannot be *all* if the build and host
        architecture differ.

    --host-arch *foo*
        Set the host architecture the binary package is built for. This
        defaults to the value printed by `dpkg-architecture
        -qDEB_HOST_ARCH`. Use this option to create a binary package that is
        able to satisfy crossbuild dependencies.

        If this option is used together with --arch, then they must be equal
        except if the value of --arch is *all*.

        If --arch is not given, then this option also sets the package
        architecture.

    --build-arch *foo*
        Set the build architecture the binary package is built for. This
        defaults to the value printed by `dpkg-architecture
        -qDEB_BUILD_ARCH`. Use this option to create a binary package that
        is able to satisfy crossbuild dependencies.

Thanks!

cheers, josch
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-scripts-mk-build-deps.pl-support-crossbuild-dependen.patch
Type: text/x-diff
Size: 6847 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/devscripts-devel/attachments/20150831/bcf8251a/attachment.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: signature
URL: <http://lists.alioth.debian.org/pipermail/devscripts-devel/attachments/20150831/bcf8251a/attachment.sig>


More information about the devscripts-devel mailing list