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

Re: Proposed release goal: fix debian/rules build-arch



Raphael Hertzog <hertzog@debian.org> writes:

> On Mon, 16 Feb 2009, Kari Pahula wrote:
>> Currently, Debian Policy doesn't match with the current practice in
>> section 7.7.
>> 
>> > The Build-Depends-Indep and Build-Conflicts-Indep fields must be
>> > satisfied when any of the following targets is invoked: build,
>> > build-indep, binary and binary-indep.
>> 
>> I know that people like to say that Policy should reflect reality, not
>> have wishful thinking (like in #178809).  It's been tried before but
>> I'd like to try again to get a transition done to make reality into
>> what 7.7 says it is.
>
> I don't know if you are aware, but there's lots of discussion already
> about this in various dpkg bug reports and in particular this one:
> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=229357
>
> This bug is on my radar and I certainly plan to fix it in the squeeze
> timeline but before we can clearly fix it, we need to come to a reasonable
> agreement about what constitutes the official interface to build Debian
> packages and how it should look like. We currently have an unfortunate
> divergence between dpkg-buildpackage and the policy that needs to be
> solved before we can tackle this problem seriously.

Wether dpkg-buildpackage calls build or the user call debian/rules
build manually makes no difference to the discussion. Policy says the
build targets needs B-D-I installed while current practice is that
build must work without B-D-I installed.

Think of it this way: The question is not about the interface for the
user to build package but about the interface of the source to allow
building. Wether dpkg-buildpackage invokes the build target or the
user makes no difference to the source.

>> Now, option 1 (cold turkey):
>> 
>> Make build-arch to be a mandatory target in debian/rules files in the
>> next policy version (3.9.0, already?).  Any existing "build" targets
>> work, by necessity, correctly without having B-D-I installed, and a
>> debian/rules file could be fixed by adding one line:
>> build-arch: build
>> 
>> Buildds would still call "debian/rules build" on anything that had a
>
> Note: buildd use dpkg-buildpackage so the change needs to be done in
> dpkg-buildpackage.

Possibly as the last step. All packages could be build with a patched
dpkg-buildpackage, bugs could be filed, patches send, packages fixed
before anything has to be done to the official dpkg-buildpackage.

Although I favour breaking sources by changing the buildds as fast as
possible. If a maintainer bumps their standards version but fails to
follow it then let the source FTBFS.

>> Option 2 (features field):
>> 
>> Add a field called "Build-Features:" to debian/control and have it
>> contain a space separated list of tokens.  Define "build-arch" as a
>> recognized value.  Put that in .dsc.  As with things like this, we'd
>> potentially get stuck with it forever, but it'd be the least invasive
>> thing to do and still get buildds to use build-arch.  There'd be no
>> transition, other than getting sbuild patched.
>> 
>> We could also change build-arch into a "should" feature and warn
>> anyone who didn't support build-arch and switch over to having it as a
>> "must" once everyone did it.  It'd be easy to check for that, with
>> this.
>
> My current plan is to implement a Build-Options field but the expected use
> case for such a field are a bit too broad and it leads us to the
> discussion about how much "build customization" we should support and how
> that customization must be handled (and how we should mix choices of
> packagers, choices of user that rebuild the package, choices of the
> (derivative) distributions). Note the usage of standards-version to
> auto-enable some options is still possible even if we implement
> Build-Options.

I think Build-Options should only be for options. And the build-arch
target is not ment to be optional. Only for the transition there could
be a window of optionality. After that the target should just be a
MUST. Adding the target is trivialst and there is really no reason to
complicate the build tools by having it optional in the long run.

> The first and main customization that users and derivatives distributions
> want is related to compiler options so that they can do hardened builds or
> optimized builds without having to hand-edit each and every package.

And how is a per package Build-Options field supposed to do that? That
is clearly a per package choice and not a distribution choise. For
distribution choices the VENDOR approach from emdebian is more in line.

MfG
        Goswin


Reply to: