Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-21 Thread Goswin von Brederlow
Wouter Verhelst [EMAIL PROTECTED] writes:

 Therefore, if the implementation of sbuild differs from whatever Policy
 happens to claim, then Policy is simply wrong.

As state before policy is wrong.

That doesn't mean we can't change both policy and sbuild at the same
time to something that both reflects current practice and adds room
for improvements.

MfG
Goswin


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-20 Thread Goswin von Brederlow
Manoj Srivastava [EMAIL PROTECTED] writes:

 On 18 Jun 2006, Goswin von Brederlow outgrape:

 Peter Eisentraut [EMAIL PROTECTED] writes:

 Goswin von Brederlow wrote:
 On the other hand the savings can be huge. Think about how many
 packages install latex and fonts and generate the documentation
 needlessly during build. Installing and purging latex as well as
 all the initex runs and font generation takes up a awfull lot of
 time

 I think most packages build their documentation or other
 architecture-independent parts as part of a general make/make
 install process, so it's not possible to create useful separate
 build-arch and build-indep targets.

 A lot of software has a doc dir and it is relatively simple to
 seperate recursing into doc from the rest. Unless the build-*
 targets become actually usefull nobody will put any work into
 splitting the build process into arch and indep parts though.

 Umm. Most of my packages I can simply call make or ake
  build and let upstream  Makefiles build stuff -- which means that if
  the arch indep part is split of changed (./scripts dir, for example),
  I do not have to change my rules file to follow suit. In this case,
  splitting the buiild process into arch and indep parts is not trivial.

I would think make will always do the customary all and include
docs and such. But what stops you from having a make binary to
compile and make doc in the Makefile? Yes you need to change the
makefile and debian/rules but it usualy isn't that hard.

 Looking at the archive right now, there are only 129 source
 packages (in testing) that are not Architecture: all and declare
 Build-Depends-Indep (and quite a few of those are obviously wrong).
 So it seems to be a limited problem.  However, if your concern is
 mostly to reduce installation time of documentation tools, then the
 current Build-Depends/Build-Depends-Indep setup seems to work quite
 well.  I don't see where Build-Depends-Arch would fit in there.

 The problem currently is that it isn't even possible to seperate
 them even if the makefile suports it because the build target must
 be called. The proposal is as much a clarification and extension of
 the Build-Depends* fields as a mechanism to detect and use build-*
 targets. Only then can one split arch and indep building and have a
 meaningfull Build-Depends-Indep.

 I think the way to do this is to make the build target depend
  on build-arch and build-indep, so calling build builds everything,
  but allows for a future improvement in efficiency. Assuming, of
  course, that  upstream build process also allows for this split up. 

We already have that like forever. This is not helping at all since
you can't detect the existance of build-arch/indep in the makefile
correctly and thus dpkg-buildpackage can never call it. So you always
call build and always need all Build-Depends for arch and indep
building. THAT is the core problem. 

   manoj

MfG
Goswin


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-20 Thread Goswin von Brederlow
Manoj Srivastava [EMAIL PROTECTED] writes:

 On 16 Jun 2006, Goswin Brederlow stated:

 the current use and definition of Build-Depends/Conflicts[-Indep] in
 policy 7.6 don't match. Both use and definition also greatly reduce
 the usefullness of these fields. This issue has come up again and
 again over the last few years and nothing has been done about it. I
 hope this proposal provides a elegant and non disruptive way out so
 we can finaly do something about it.

 Currently policy reads:

 SNIP

 This comes down to Build-Depends have to be always
 installed. Buildds always and only install Build-Depends.

 Build-Depends-Indep, Build-Conflicts-Indep

 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.  

 But buildds do call the build targets (via dpkg-buildpackage) and
 don't honor Build-Depends/Conflicts-Indep. And since build calls
 build-indep that means anything needed to build the architecture
 independent part needs to be included in Build-Depends. This make
 the Build-Depends-Indep quite useless.

 Proposal:
 -

 Two new fields are introduced:

 Build-Depends-Arch, Build-Conflicts-Arch

 The Build-Depends-Arch and Build-Conflicts-Arch fields must be
 satisfied when any of the following targets is invoked:
 build-arch, binary-arch.

 The existance of either of the two makes build-arch mandatory.

 The old fields change their meaning:

 Build-Depends, Build-Conflicts

 The Build-Depends and Build-Conflicts fields must be satisfied
 when any target is invoked.

 Does the converse hold as well? Is  Build-Depends a superset
  of all dependencies until further notice? If not, if I am using an
  older dpkg-checkbuildeps or an older sbuild, my package may fail to
  build. 

That could be a requirement for a transitional period, like till etch
becomes stable. Someone wanting to backport to sarge old-stable then
would first have to backport dpkg/sbuild from stable (or copy the perl
script manualy).

Lets ammend the proposal with Until the stable release supports
Build-Depends-Arch the Build-Depends field must be a superset of
Build-Depends and Build-Depends-Arch and the same goes for
Build-Conflicts. But I don't think this has to be spelled out in
policy.

 Does this mean a package which conforms to the new proposal
  would fail if the an old sbuild/dpkg-checkbuilddeps is used? In other
  words, can someone running Sarge build a package from Etch?

Yes it would fail and not it wouldn't build. But that depends on the
above ammendment.

MfG
Goswin


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-20 Thread Thomas Bushnell BSG
Wouter Verhelst [EMAIL PROTECTED] writes:

 Sbuild explicitely, by design, only looks at build-depends. So in order
 for build-depends to be useful at this time if you want a package to
 build, you need to list mostly everything in build-depends right now
 anyway.

Isn't it sbuild's job to comply with policy, not the other way round?



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-20 Thread Goswin von Brederlow
Thomas Bushnell BSG [EMAIL PROTECTED] writes:

 Wouter Verhelst [EMAIL PROTECTED] writes:

 Sbuild explicitely, by design, only looks at build-depends. So in order
 for build-depends to be useful at this time if you want a package to
 build, you need to list mostly everything in build-depends right now
 anyway.

 Isn't it sbuild's job to comply with policy, not the other way round?

Sort of. But policy is not usefull here and existing practice in some
8000+ source packages has a little more weight. The time to change
sbuild to what policy says was some years ago. Now it is way to late.

Now we have to fix just policy or policy and sbuild/dpkg-buildpackage
in a way that doesn't break every source in debian.

MfG
Goswin


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-20 Thread Goswin von Brederlow
Manoj Srivastava [EMAIL PROTECTED] writes:

 Previously, any new feature in dpkg which goes into release
  foo gets into policy in release foo + 1.  Is there a compelling
  reason to diverge from this practice?

 manoj

Isn't that for binary packages because otherwise you can't upgrade
from old-stable to stable or from stable to testing/unstable anymore.

If you mean gets used by gets into policy then I don't believe
this was ever enforced for sources. For example udeb shlibs magic was
added and is used in etch. Adding -gnu and new fields to
dpkg-architecture output was added and is used in etch. And so on.

If you mean that we agree on this now, implement it in dpkg and
friends but only add it to policy after the etch release then that is
fine by me too.

But it doesn't feel right to just implement this in dpkg and then
force this into policy later or decide that we don't want this at
all. I don't think issues directly affecting policy should just be
decided by the dpkg maintainers alone

MfG
Goswin


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-20 Thread Wouter Verhelst
On Tue, Jun 20, 2006 at 10:50:46AM -0700, Thomas Bushnell BSG wrote:
 Wouter Verhelst [EMAIL PROTECTED] writes:
  Sbuild explicitely, by design, only looks at build-depends. So in order
  for build-depends to be useful at this time if you want a package to
  build, you need to list mostly everything in build-depends right now
  anyway.
 
 Isn't it sbuild's job to comply with policy, not the other way round?

No. Policy is not a stick to beat people with. Our Policy document is
not flawless, and errors have been known to occur in Policy before.

While an inconsistency between Policy and an individual package is
usually a bug in the package rather than a bug in Policy, the same is
not true for highly influential implementations of whatever Policy
happens to say; e.g., if the definition of the dpkg file format in
policy differs from the actual implementation in dpkg, then we usually
consider Policy to be either outdated or buggy, since in that particular
case, stuff was written for Policy to document existing practice to
people not familiar with the dpkg innards.

The same is true for buildd/sbuild and build-dependencies; since
build-dependencies were defined in Debian to make autobuilding possible,
it would be madness to require that buildd and sbuild jump through every
hoop that a high enough number of developers (i.e., 5) can come up with
and get through the policy process.

Therefore, if the implementation of sbuild differs from whatever Policy
happens to claim, then Policy is simply wrong.

-- 
Fun will now commence
  -- Seven Of Nine, Ashes to Ashes, stardate 53679.4


signature.asc
Description: Digital signature


Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-19 Thread Goswin von Brederlow
Guillem Jover [EMAIL PROTECTED] writes:

 On Fri, 2006-06-16 at 23:10:36 +0200, Goswin Brederlow wrote:
 Package: debian-policy
 Severity: normal

 [Side note: Buildds/dpkg-buildpackage has no robust way of telling if
 the optional build-arch field exists and must call build. This is
 wastefull for both build dependencies and build time.]

 I've a counter-proposal. ;) Make dpkg source v2.0 (Wig And Pen) format
 require build-arch and build-indep.

And when will that ever happen?

 - Build-Depends/Conflicts-Indep becomes usefull, build-indep becomes
   usefull

 Ditto.

It won't have a usefull meaning for building just architecture all
packages since that requires both Build-Depends/Conflicts and
Build-Depends/Conflicts-Indep. There currently is no dpkg-buildpackage
option for this but there are plans for it.

MfG
Goswin


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-19 Thread Manoj Srivastava
On 18 Jun 2006, Goswin von Brederlow outgrape:

 Peter Eisentraut [EMAIL PROTECTED] writes:

 Goswin von Brederlow wrote:
 On the other hand the savings can be huge. Think about how many
 packages install latex and fonts and generate the documentation
 needlessly during build. Installing and purging latex as well as
 all the initex runs and font generation takes up a awfull lot of
 time

 I think most packages build their documentation or other
 architecture-independent parts as part of a general make/make
 install process, so it's not possible to create useful separate
 build-arch and build-indep targets.

 A lot of software has a doc dir and it is relatively simple to
 seperate recursing into doc from the rest. Unless the build-*
 targets become actually usefull nobody will put any work into
 splitting the build process into arch and indep parts though.

Umm. Most of my packages I can simply call make or ake
 build and let upstream  Makefiles build stuff -- which means that if
 the arch indep part is split of changed (./scripts dir, for example),
 I do not have to change my rules file to follow suit. In this case,
 splitting the buiild process into arch and indep parts is not trivial.

 Looking at the archive right now, there are only 129 source
 packages (in testing) that are not Architecture: all and declare
 Build-Depends-Indep (and quite a few of those are obviously wrong).
 So it seems to be a limited problem.  However, if your concern is
 mostly to reduce installation time of documentation tools, then the
 current Build-Depends/Build-Depends-Indep setup seems to work quite
 well.  I don't see where Build-Depends-Arch would fit in there.

 The problem currently is that it isn't even possible to seperate
 them even if the makefile suports it because the build target must
 be called. The proposal is as much a clarification and extension of
 the Build-Depends* fields as a mechanism to detect and use build-*
 targets. Only then can one split arch and indep building and have a
 meaningfull Build-Depends-Indep.

I think the way to do this is to make the build target depend
 on build-arch and build-indep, so calling build builds everything,
 but allows for a future improvement in efficiency. Assuming, of
 course, that  upstream build process also allows for this split up. 

manoj
-- 
Eat drink and be merry, for tomorrow we diet.
Manoj Srivastava   [EMAIL PROTECTED]  http://www.debian.org/%7Esrivasta/
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-19 Thread Manoj Srivastava
On 16 Jun 2006, Goswin Brederlow stated:

 the current use and definition of Build-Depends/Conflicts[-Indep] in
 policy 7.6 don't match. Both use and definition also greatly reduce
 the usefullness of these fields. This issue has come up again and
 again over the last few years and nothing has been done about it. I
 hope this proposal provides a elegant and non disruptive way out so
 we can finaly do something about it.

 Currently policy reads:

SNIP

 This comes down to Build-Depends have to be always
 installed. Buildds always and only install Build-Depends.

 Build-Depends-Indep, Build-Conflicts-Indep

 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.  

 But buildds do call the build targets (via dpkg-buildpackage) and
 don't honor Build-Depends/Conflicts-Indep. And since build calls
 build-indep that means anything needed to build the architecture
 independent part needs to be included in Build-Depends. This make
 the Build-Depends-Indep quite useless.

 Proposal:
 -

 Two new fields are introduced:

 Build-Depends-Arch, Build-Conflicts-Arch

 The Build-Depends-Arch and Build-Conflicts-Arch fields must be
 satisfied when any of the following targets is invoked:
 build-arch, binary-arch.

 The existance of either of the two makes build-arch mandatory.

 The old fields change their meaning:

 Build-Depends, Build-Conflicts

 The Build-Depends and Build-Conflicts fields must be satisfied
 when any target is invoked.

Does the converse hold as well? Is  Build-Depends a superset
 of all dependencies until further notice? If not, if I am using an
 older dpkg-checkbuildeps or an older sbuild, my package may fail to
 build. 

 Build-Depends-Indep, Build-Conflicts-Indep

 The Build-Depends-Indep and Build-Conflicts-Indep fields must be
 satisfied when any of the following targets is invoked:
 build-indep, binary-indep.

 The existance of either of the two makes build-indep mandatory.

 The use of Build-Depends/Conflicts-Arch/Indep is optional but should
 be used in architecture all/any mixed packages. If any of them is
 omitted the respective Build-Depends/Conflicts field must be
 suffient already.

 ### End of Proposal ###

 - Simple to implement.
 + Trivial change in dpkg for the new field.
 + dpkg-checkbuilddeps has to parse 3 fields (2 with -B option)
 instead of 2 (1).
 + sbuild, same change
 + Simple change for 'apt-get build-dep'


Does this mean a package which conforms to the new proposal
 would fail if the an old sbuild/dpkg-checkbuilddeps is used? In other
 words, can someone running Sarge build a package from Etch?


manoj
-- 
Linux: because a PC is a terrible thing to waste [EMAIL PROTECTED] put
this on Tshirts in '93
Manoj Srivastava   [EMAIL PROTECTED]  http://www.debian.org/%7Esrivasta/
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-19 Thread Wouter Verhelst
On Mon, Jun 19, 2006 at 01:02:42PM -0500, Manoj Srivastava wrote:
 On 16 Jun 2006, Goswin Brederlow stated:
  The existance of either of the two makes build-arch mandatory.
 
  The old fields change their meaning:
 
  Build-Depends, Build-Conflicts
 
  The Build-Depends and Build-Conflicts fields must be satisfied
  when any target is invoked.
 
 Does the converse hold as well? Is  Build-Depends a superset
  of all dependencies until further notice? If not, if I am using an
  older dpkg-checkbuildeps or an older sbuild, my package may fail to
  build. 

Sbuild explicitely, by design, only looks at build-depends. So in order
for build-depends to be useful at this time if you want a package to
build, you need to list mostly everything in build-depends right now
anyway.

It is in fact not against policy to list build dependencies that could
technically be put in build-depends-indep in build-depends only, and I
believe (though I'm not sure, and can't remember offhand where) that I
have already seen some packages do so in the past.

So, yes, for all practical matters build-depends right now is a superset
of build-depends-indep.

  Build-Depends-Indep, Build-Conflicts-Indep
 
  The Build-Depends-Indep and Build-Conflicts-Indep fields must be
  satisfied when any of the following targets is invoked:
  build-indep, binary-indep.
 
  The existance of either of the two makes build-indep mandatory.
 
  The use of Build-Depends/Conflicts-Arch/Indep is optional but should
  be used in architecture all/any mixed packages. If any of them is
  omitted the respective Build-Depends/Conflicts field must be
  suffient already.
 
  ### End of Proposal ###
 
  - Simple to implement.
  + Trivial change in dpkg for the new field.
  + dpkg-checkbuilddeps has to parse 3 fields (2 with -B option)
  instead of 2 (1).
  + sbuild, same change
  + Simple change for 'apt-get build-dep'
 
 Does this mean a package which conforms to the new proposal
  would fail if the an old sbuild/dpkg-checkbuilddeps is used? In other
  words, can someone running Sarge build a package from Etch?

old sbuild should not be an issue. Official buildd hosts never run
sbuild from stable, they run sbuild from a separate repository at
db.debian.org. If policy is updated to do something new which will
benefit the buildd hosts, then sbuild will follow suit (provided there
is code to do that)

Of course, if a package does not build with old dpkg-buildpackage, that
might be a problem; not sure about that.

-- 
Fun will now commence
  -- Seven Of Nine, Ashes to Ashes, stardate 53679.4


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-18 Thread Goswin von Brederlow
Peter Eisentraut [EMAIL PROTECTED] writes:

 Goswin von Brederlow wrote:
 On the other hand the savings can be huge. Think about how many
 packages install latex and fonts and generate the documentation
 needlessly during build. Installing and purging latex as well as all
 the initex runs and font generation takes up a awfull lot of time

 I think most packages build their documentation or other 
 architecture-independent parts as part of a general make/make install 
 process, so it's not possible to create useful separate build-arch and 
 build-indep targets.

A lot of software has a doc dir and it is relatively simple to
seperate recursing into doc from the rest. Unless the build-* targets
become actually usefull nobody will put any work into splitting the
build process into arch and indep parts though.

 Looking at the archive right now, there are only 129 source packages (in 
 testing) that are not Architecture: all and declare Build-Depends-Indep 
 (and quite a few of those are obviously wrong).  So it seems to be a 
 limited problem.  However, if your concern is mostly to reduce 
 installation time of documentation tools, then the current 
 Build-Depends/Build-Depends-Indep setup seems to work quite well.  I 
 don't see where Build-Depends-Arch would fit in there.

The problem currently is that it isn't even possible to seperate them
even if the makefile suports it because the build target must be
called. The proposal is as much a clarification and extension of the
Build-Depends* fields as a mechanism to detect and use build-*
targets. Only then can one split arch and indep building and have a
meaningfull Build-Depends-Indep.

MfG
Goswin


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-18 Thread Guillem Jover
On Fri, 2006-06-16 at 23:10:36 +0200, Goswin Brederlow wrote:
 Package: debian-policy
 Severity: normal

 [Side note: Buildds/dpkg-buildpackage has no robust way of telling if
 the optional build-arch field exists and must call build. This is
 wastefull for both build dependencies and build time.]

I've a counter-proposal. ;) Make dpkg source v2.0 (Wig And Pen) format
require build-arch and build-indep.

 Why is this proposal better than others that have failed before?
 
 - non disruptive: Current buildd behaviour will continue to build all
   existing packages.

Ditto.

 - Packages will not instantly have RC bugs.

Ditto.

 - Simple to implement.
   + Trivial change in dpkg for the new field.
   + dpkg-checkbuilddeps has to parse 3 fields (2 with -B option)
 instead of 2 (1).
   + sbuild, same change
   + Simple change for 'apt-get build-dep'

Those changes will not be needed.

 - Buildds/dpkg-buildpackage can use the build-arch target
   + reduces Build-Depends field and install time of same
   + build-indep is no longer called, reduces compile time and disk
 space

Only will need changes in dpkg-buildpackage.

 - Build-Depends/Conflicts-Indep becomes usefull, build-indep becomes
   usefull

Ditto.

regards,
guillem


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-17 Thread Peter Eisentraut
Goswin von Brederlow wrote:
 On the other hand the savings can be huge. Think about how many
 packages install latex and fonts and generate the documentation
 needlessly during build. Installing and purging latex as well as all
 the initex runs and font generation takes up a awfull lot of time

I think most packages build their documentation or other 
architecture-independent parts as part of a general make/make install 
process, so it's not possible to create useful separate build-arch and 
build-indep targets.

Looking at the archive right now, there are only 129 source packages (in 
testing) that are not Architecture: all and declare Build-Depends-Indep 
(and quite a few of those are obviously wrong).  So it seems to be a 
limited problem.  However, if your concern is mostly to reduce 
installation time of documentation tools, then the current 
Build-Depends/Build-Depends-Indep setup seems to work quite well.  I 
don't see where Build-Depends-Arch would fit in there.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-17 Thread Antti-Juhani Kaijanaho

Goswin Brederlow wrote:

Two new fields are introduced:

Build-Depends-Arch, Build-Conflicts-Arch


You are aware, I hope, that the original proposal for the Build-* fields 
contained these fields, and they were dropped from the proposal after 
several people (buildd admins, if I recall correctly) indicated that 
they are useless in practice.


I recommend reviewing the discussion and addressing their arguments in 
this proposal.



--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-17 Thread Peter Eisentraut
One question to ask is perhaps whether splitting the build dependencies 
into several sets is useful at all, considering that the current state 
of having effectively only one useful set has persistent for such a 
long time.

Not a lot of people really understand the current definition, and this 
proposal introduces even more ways of getting things wrong.  Not a lot 
of people practice local architecture-only rebuilds or some of the 
other corner cases that would be induced by this proposal.  I'm afraid 
that this will just introduce more hard-to-detect bugs, and all the 
upload and rebuild time caused thereby will probably outweigh the 
download time saved by the buildds.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-17 Thread Goswin von Brederlow
Peter Eisentraut [EMAIL PROTECTED] writes:

 One question to ask is perhaps whether splitting the build dependencies 
 into several sets is useful at all, considering that the current state 
 of having effectively only one useful set has persistent for such a 
 long time.

 Not a lot of people really understand the current definition, and this 
 proposal introduces even more ways of getting things wrong.  Not a lot 

The current description is confusing and does not reflect actual use
so people get it wrong. No wonder.

 of people practice local architecture-only rebuilds or some of the 
 other corner cases that would be induced by this proposal.  I'm afraid 

Every buildd does architecture-only builds so that will be well
tested. The only other existing case is a full build which the
uploader will test if he/she uses pbuilder or a chroot or such (and we
all know everyone should do that). In the last 2 years more and more
often someone has gone and rebuild the full archive from scratch, both
with and without architecture indep packages given it even more
testing. So what corner cases do you talk about?

 that this will just introduce more hard-to-detect bugs, and all the 
 upload and rebuild time caused thereby will probably outweigh the 
 download time saved by the buildds.

A real bug in the Build-Depends (one missing completly) will be
detected very quickly either by the buildd or by the next rebuild with
arch-indep packages.

A minor bug, such as having a package in Build-Depends instead of
Build-Depends-Arch/indep, while being wastefull, is not harmfull. Same
as having one in there that isn't needed at all. Sometimes people do
notice and if not the waste can't be that big. I don't think that
should worry us too much.

As with Build-Depends[-Indep] detecting a useless dependency or one in
the wrong place stays just as hard to detect as before and detecting a
missing one just as simple so where should the extra bugs come from?


On the other hand the savings can be huge. Think about how many
packages install latex and fonts and generate the documentation
needlessly during build. Installing and purging latex as well as all
the initex runs and font generation takes up a awfull lot of time on
say arm.

MfG
Goswin


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#374029: Fixing inconsisten and unusefull Build-Depends/Conflicts definition

2006-06-16 Thread Goswin Brederlow
Package: debian-policy
Severity: normal

Hi,

the current use and definition of Build-Depends/Conflicts[-Indep] in
policy 7.6 don't match. Both use and definition also greatly reduce
the usefullness of these fields. This issue has come up again and
again over the last few years and nothing has been done about it. I
hope this proposal provides a elegant and non disruptive way out so we
can finaly do something about it.


Currently policy reads:

| 7.6 Relationships between source and binary packages -
| Build-Depends, Build-Depends-Indep, Build-Conflicts,
| Build-Conflicts-Indep
|
| Source packages that require certain binary packages to be installed
| or absent at the time of building the package can declare
| relationships to those binary packages.
|
| This is done using the Build-Depends, Build-Depends-Indep,
| Build-Conflicts and Build-Conflicts-Indep control file fields.
|
|Build-dependencies on build-essential binary packages can be
|omitted. Please see Package relationships, Section 4.2 for more
|information.
|
|The dependencies and conflicts they define must be satisfied (as
|defined earlier for binary packages) in order to invoke the targets in
|debian/rules, as follows:[42]
|
|Build-Depends, Build-Conflicts
|
|The Build-Depends and Build-Conflicts fields must be satisfied
|when any of the following targets is invoked: build, clean,
|binary, binary-arch, build-arch, build-indep and binary-indep.

This comes down to Build-Depends have to be always installed. Buildds
always and only install Build-Depends.

|Build-Depends-Indep, Build-Conflicts-Indep
|
|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.  

But buildds do call the build targets (via dpkg-buildpackage) and
don't honor Build-Depends/Conflicts-Indep. And since build calls
build-indep that means anything needed to build the architecture
independent part needs to be included in Build-Depends. This make the
Build-Depends-Indep quite useless.

[Side note: Buildds/dpkg-buildpackage has no robust way of telling if
the optional build-arch field exists and must call build. This is
wastefull for both build dependencies and build time.]


Proposal:
-

Two new fields are introduced:

Build-Depends-Arch, Build-Conflicts-Arch

The Build-Depends-Arch and Build-Conflicts-Arch fields must be
satisfied when any of the following targets is invoked:
build-arch, binary-arch.

The existance of either of the two makes build-arch mandatory.


The old fields change their meaning:

Build-Depends, Build-Conflicts

The Build-Depends and Build-Conflicts fields must be satisfied
when any target is invoked.

Build-Depends-Indep, Build-Conflicts-Indep

The Build-Depends-Indep and Build-Conflicts-Indep fields must be
satisfied when any of the following targets is invoked:
build-indep, binary-indep.

The existance of either of the two makes build-indep mandatory.

The use of Build-Depends/Conflicts-Arch/Indep is optional but should
be used in architecture all/any mixed packages. If any of them is
omitted the respective Build-Depends/Conflicts field must be suffient
already.

### End of Proposal ###



Why is this proposal better than others that have failed before?

- non disruptive: Current buildd behaviour will continue to build all
  existing packages.

- Packages will not instantly have RC bugs.

- Simple to implement.
  + Trivial change in dpkg for the new field.
  + dpkg-checkbuilddeps has to parse 3 fields (2 with -B option)
instead of 2 (1).
  + sbuild, same change
  + Simple change for 'apt-get build-dep'

- Buildds/dpkg-buildpackage can use the build-arch target
  + reduces Build-Depends field and install time of same
  + build-indep is no longer called, reduces compile time and disk
space

- Build-Depends/Conflicts-Indep becomes usefull, build-indep becomes
  usefull

  Large packages no longer have to build indep stuff in the
  binary-indep target to avoid building it on buildds.

MfG
Goswin

-- System Information:
Debian Release: 3.1
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.16-rc4-xen
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]