Bug#530687: Support for architecture wildcards

2010-06-02 Thread Russ Allbery
Cyril Brulebois k...@debian.org writes:
 Russ Allbery r...@debian.org (01/06/2010):

 +Specifying a list of architecture wildcards indicates that
 +the source will build an architecture-dependent package on
 +the union of the lists of architectures from the expansion
 +of each specified architecture wildcard, and will only
 +work correctly on the architectures in the union of the
 +lists.footnote
 +  Use of architecture wildcards other than ttall/tt is for
 +  a minority of cases where the program is not portable and
 +  should not be used for most packages.  Wildcards are not
 +  expanded into a list of known architectures before comparing
 +  to the build architecutre.  Instead, the build architecture

 s/cutre/cture/ (already present previously).

Thanks, fixed in my version.

-- 
Russ Allbery (r...@debian.org)   http://www.eyrie.org/~eagle/



-- 
To UNSUBSCRIBE, email to debian-policy-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/87vda19xfx@windlord.stanford.edu



Bug#530687: Support for architecture wildcards

2010-06-01 Thread Kurt Roeckx
On Mon, May 31, 2010 at 11:41:15AM -0700, Russ Allbery wrote:
 - architectures separated by spaces.  If ttany/tt or
 - ttall/tt appear, they must be the entire contents of the
 - field. 
[...]
 + spaces.  If ttall/tt appears, that value must be the
 + entire contents of the field.

Note that it removed the any part, and I think that still
applies.

 +   should not be used for most packages.  Wildcards are not
 +   expanded into a list of known architectures before comparing
 +   to the build architecutre.  Instead, the build architecture
 +   is matched against any wildcards and this package is built
 +   if any wildcard matches.
 + /footnote

I don't see the point of mentioning this implementation detail?

 + If the source package also builds at least one
 + architecture-independent package, ttall/tt will also be
 + included in the list.
 +   /p

This seems to be existing text already, and I think your diff it's
showing everything that was removed.


 @@ -4259,6 +4287,23 @@ Build-Depends: foo [!i386] | bar [!amd64]
 source package section of the control file (which is the
 first section).
   /p
 +p
 +  All fields that specify build-time relationships
 +  (ttBuild-Depends/tt, ttBuild-Depends-Indep/tt,
 +  ttBuild-Conflicts/tt and ttBuild-Conflicts-Indep/tt) may 
 also
 +  be restricted to a certain set of architectures using architecture
 +  wildcards. The syntax for declaring such restrictions is the same 
 as
 +  declaring restrictions using a certain set of architectures without
 +  architecture wildcards.
 +  For example:
 +  example compact=compact
 +Build-Depends: foo [linux-any], bar [any-i386], baz [!linux-any]
 +  /example
 +   is equivalent to ttfoo/tt on architectures using the Linux
 +   kernel and any cpu, ttbar/tt on architectures using any
 +   kernel and an i386 cpu, and ttbaz/tt on any architecture
 +   using a kernel other than Linux.
 +/p
/sect

Shouldn't that be moved one paragraph up?  And not sure that
repeating that it's about Build-Depends, Build-Depends-Indep is needed.


Kurt




-- 
To UNSUBSCRIBE, email to debian-policy-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20100601214035.ga14...@roeckx.be



Bug#530687: Support for architecture wildcards

2010-06-01 Thread Russ Allbery
Kurt Roeckx k...@roeckx.be writes:
 On Mon, May 31, 2010 at 11:41:15AM -0700, Russ Allbery wrote:

 -architectures separated by spaces.  If ttany/tt or
 -ttall/tt appear, they must be the entire contents of the
 -field. 
 [...]
 +spaces.  If ttall/tt appears, that value must be the
 +entire contents of the field.

 Note that it removed the any part, and I think that still
 applies.

I thought so too, but after looking at it some more, I don't think it
does.  With this change, any is now just another case of a wildcard, and
while listing both any and something else doesn't make much sense (it's
equivalent to any), I don't think it's a syntax error.  any is no longer
really treated specially the way that it was before.

 +  should not be used for most packages.  Wildcards are not
 +  expanded into a list of known architectures before comparing
 +  to the build architecutre.  Instead, the build architecture
 +  is matched against any wildcards and this package is built
 +  if any wildcard matches.
 +/footnote

 I don't see the point of mentioning this implementation detail?

It emphasizes a bit that if a new architecture is introduced, it will
start matching wildcard patterns immediately.  I think it's of marginal
interest, but it's also in a footnote.  (I think this was in the original
proposed patch.)

 +If the source package also builds at least one
 +architecture-independent package, ttall/tt will also be
 +included in the list.
 +  /p

 This seems to be existing text already, and I think your diff it's
 showing everything that was removed.

The diff is correctly expressing my change.  This was repeated, which
shows that there was a problem with ordering in how this was all
discussed.  Thank you for the catch!  I also see that I failed to say
something specific about what happens with *.changes files and *.dsc
files.

 Shouldn't that be moved one paragraph up?  And not sure that repeating
 that it's about Build-Depends, Build-Depends-Indep is needed.

Yup, good catch.

Here's an updated patch.

diff --git a/policy.sgml b/policy.sgml
index d16df70..338ac7c 100644
--- a/policy.sgml
+++ b/policy.sgml
@@ -2727,27 +2727,52 @@ Package: libc6
ttArchitecture/tt field can include the following sets of
values:
list
-   itemA unique single word identifying a Debian machine
- architecture as described in ref id=arch-spec.
-   itemttall/tt, which indicates an
- architecture-independent package.
-   itemttany/tt, which indicates a package available
- for building on any architecture.
-   itemttsource/tt, which indicates a source package.
+   item
+ A unique single word identifying a Debian machine
+ architecture as described in ref id=arch-spec.
+   /item
+   item
+ An architecture wildcard identifying a set of Debian
+ machine architectures, see ref id=arch-wildcard-spec.
+   /item
+   item
+ ttall/tt, which indicates an
+ architecture-independent package.
+   /item
+   item
+ ttsource/tt, which indicates a source package.
+   /item
/list
  /p
 
  p
In the main filedebian/control/file file in the source
-   package, this field may contain the special value
-   ttany/tt, the special value ttall/tt, or a list of
-   architectures separated by spaces.  If ttany/tt or
-   ttall/tt appear, they must be the entire contents of the
-   field.  Most packages will use either ttany/tt or
-   ttall/tt.  Specifying a specific list of architectures is
-   for the minority of cases where a program is not portable or
-   is not useful on some architectures, and where possible the
-   program should be made portable instead.
+   package, this field may contain the special value ttall/tt
+   or a list of specific and wildcard architectures separated by
+   spaces.  If ttall/tt appears, that value must be the
+   entire contents of the field.  Most packages will use
+   either ttany/tt or ttall/tt.  Specifying a specific
+   list of architectures is for the minority of cases where a
+   program is not portable or is not useful on some
+   architectures, and where possible the program should be made
+   portable instead.
+ /p
+
+ p
+   Specifying a list of architecture wildcards indicates that
+   the source will build an architecture-dependent package on
+   the union of the lists of architectures from the expansion
+   of each specified 

Bug#530687: Support for architecture wildcards

2010-05-31 Thread Russ Allbery
Here's a new wording proposal for this bug based on Manoj's previous patch
with some minor modifications from subsequent discussion.  I'm looking for
seconds; this material is rather overdue for making it into Policy.

diff --git a/policy.sgml b/policy.sgml
index ab8fedf..3c3d556 100644
--- a/policy.sgml
+++ b/policy.sgml
@@ -2727,27 +2727,35 @@ Package: libc6
ttArchitecture/tt field can include the following sets of
values:
list
-   itemA unique single word identifying a Debian machine
- architecture as described in ref id=arch-spec.
-   itemttall/tt, which indicates an
- architecture-independent package.
-   itemttany/tt, which indicates a package available
- for building on any architecture.
-   itemttsource/tt, which indicates a source package.
+   item
+ A unique single word identifying a Debian machine
+ architecture as described in ref id=arch-spec.
+   /item
+   item
+ An architecture wildcard identifying a set of Debian
+ machine architectures, see ref id=arch-wildcard-spec.
+   /item
+   item
+ ttall/tt, which indicates an
+ architecture-independent package.
+   /item
+   item
+ ttsource/tt, which indicates a source package.
+   /item
/list
  /p
 
  p
In the main filedebian/control/file file in the source
-   package, this field may contain the special value
-   ttany/tt, the special value ttall/tt, or a list of
-   architectures separated by spaces.  If ttany/tt or
-   ttall/tt appear, they must be the entire contents of the
-   field.  Most packages will use either ttany/tt or
-   ttall/tt.  Specifying a specific list of architectures is
-   for the minority of cases where a program is not portable or
-   is not useful on some architectures, and where possible the
-   program should be made portable instead.
+   package, this field may contain special value ttall/tt or
+   a list of specific and wildcard architectures separated by
+   spaces.  If ttall/tt appears, that value must be the
+   entire contents of the field.  Most packages will use
+   either ttany/tt or ttall/tt.  Specifying a specific
+   list of architectures is for the minority of cases where a
+   program is not portable or is not useful on some
+   architectures, and where possible the program should be made
+   portable instead.
  /p
 
  p
@@ -2789,6 +2797,27 @@ Package: libc6
  /p
 
  p
+   Specifying a list of architecture wildcards indicates that
+   the source will build an architecture-dependent package on
+   the union of the lists of architectures from the expansion
+   of each specified architecture wildcard, and will only
+   work correctly on the architectures in the union of the
+   lists.footnote
+ As mentioned in the footnote for specifying a list of
+ architectures, this is for a minority of cases where the
+ program is not portable.  It should not be used for most
+ packages.  Wildcards are not expanded into a list of known
+ architectures before comparing to the build architecutre.
+ Instead, the build architecture is matched against any
+ wildcards and this package is built if any wildcard
+ matches.
+   /footnote
+   If the source package also builds at least one
+   architecture-independent package, ttall/tt will also be
+   included in the list.
+ /p
+
+ p
In a file.changes/file file, the ttArchitecture/tt
field lists the architecture(s) of the package(s)
currently being uploaded.  This will be a list; if the
@@ -4259,6 +4288,23 @@ Build-Depends: foo [!i386] | bar [!amd64]
  source package section of the control file (which is the
  first section).
/p
+p
+  All fields that specify build-time relationships
+  (ttBuild-Depends/tt, ttBuild-Depends-Indep/tt,
+  ttBuild-Conflicts/tt and ttBuild-Conflicts-Indep/tt) may also
+  be restricted to a certain set of architectures using architecture
+  wildcards. The syntax for declaring such restrictions is the same as
+  declaring restrictions using a certain set of architectures without
+  architecture wildcards.
+  For example:
+  example compact=compact
+Build-Depends: foo [linux-any], bar [any-i386], baz [!linux-any]
+  /example
+  is equivalent to ttfoo/tt on 

Bug#530687: Support for architecture wildcards

2010-05-31 Thread Steve Langasek
On Mon, May 31, 2010 at 10:17:39AM -0700, Russ Allbery wrote:
 p
   In the main filedebian/control/file file in the source
 - package, this field may contain the special value
 - ttany/tt, the special value ttall/tt, or a list of
 - architectures separated by spaces.  If ttany/tt or
 - ttall/tt appear, they must be the entire contents of the
 - field.  Most packages will use either ttany/tt or
 - ttall/tt.  Specifying a specific list of architectures is
 - for the minority of cases where a program is not portable or
 - is not useful on some architectures, and where possible the
 - program should be made portable instead.
 + package, this field may contain special value ttall/tt or
^

en_RU? :)  Should be 'the special value', I think.

 @@ -2789,6 +2797,27 @@ Package: libc6
 /p
  
 p
 + Specifying a list of architecture wildcards indicates that
 + the source will build an architecture-dependent package on
 + the union of the lists of architectures from the expansion
 + of each specified architecture wildcard, and will only
 + work correctly on the architectures in the union of the
 + lists.footnote
 +   As mentioned in the footnote for specifying a list of
 +   architectures, this is for a minority of cases where the

Footnotes referencing footnotes?  Not sure this phrase really adds anything
here unless it can be made a mechanically-followable reference.

 @@ -4259,6 +4288,23 @@ Build-Depends: foo [!i386] | bar [!amd64]
 source package section of the control file (which is the
 first section).
   /p
 +p
 +  All fields that specify build-time relationships
 +  (ttBuild-Depends/tt, ttBuild-Depends-Indep/tt,
 +  ttBuild-Conflicts/tt and ttBuild-Conflicts-Indep/tt) may 
 also
 +  be restricted to a certain set of architectures using architecture
 +  wildcards. The syntax for declaring such restrictions is the same 
 as
 +  declaring restrictions using a certain set of architectures without
 +  architecture wildcards.
 +  For example:
 +  example compact=compact
 +Build-Depends: foo [linux-any], bar [any-i386], baz [!linux-any]
 +  /example
 +  is equivalent to ttfoo/tt on architectures using the
 +  Linux kernel and any cpu, ttbar/tt on architectures
 +  using any kernel and an i386 cpu, and ttbaz/tt on
 +  on any architecture using a kernel other than Linux.
 +/p

Doubled on

 @@ -7956,6 +8002,29 @@ done
   /p
/sect
  
 +  sect id=arch-wildcard-spec
 +headingArchitecture Wildcards/heading
 +
 +p
 +  A package may specify an architecture wildcard. Architecture
 +  wildcards are in the format ttvaros/var/tt-any and
 +  any-ttvarcpu/var/tt. footnote
 + Internally, the package system normalizes the GNU triplets and
 + the Debian arches into Debian arch triplets (which are kind of
 + inverted GNU triplets), with the first component of the
 + triplet representing the libc in use.  When matching two
 + Debian arch triplets, whenever an varany/var is found it
 + matches with anything on the other side, like in:
 +   example
 +  gnu-linux-i386 is matched by gnu-linux-any
 +  gnu-kfreebsd-amd64 is matched by any-any-amd64
 +  /example
 +  And, for example, varany/var is normalized to
 +  varany-any-any/var.
 +/footnote

Given that any is the single most commonly used wildcard (for good reason)
and that this patch changes other parts of Policy to drop explicit mention
of any in favor of a reference to this section, I don't think the
any-any-any normalization belongs in the footnote.

Cheers,
-- 
Steve Langasek   Give me a lever long enough and a Free OS
Debian Developer   to set it on, and I can move the world.
Ubuntu Developerhttp://www.debian.org/
slanga...@ubuntu.com vor...@debian.org



-- 
To UNSUBSCRIBE, email to debian-policy-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20100531183235.ga29...@dario.dodds.net



Bug#530687: Support for architecture wildcards

2010-05-31 Thread Russ Allbery
Steve Langasek vor...@debian.org writes:
 On Mon, May 31, 2010 at 10:17:39AM -0700, Russ Allbery wrote:

 -program should be made portable instead.
 +package, this field may contain special value ttall/tt or
 ^
 en_RU? :)  Should be 'the special value', I think.

No, my fault.  Multiple editing passes with insufficient proofreading.

 +lists.footnote
 +  As mentioned in the footnote for specifying a list of
 +  architectures, this is for a minority of cases where the

 Footnotes referencing footnotes?  Not sure this phrase really adds
 anything here unless it can be made a mechanically-followable reference.

Also, it's not true for the case of all.  Reworded.

 +  using any kernel and an i386 cpu, and ttbaz/tt on
 +  on any architecture using a kernel other than Linux.
 +/p

 Doubled on

Thanks.

 Given that any is the single most commonly used wildcard (for good
 reason) and that this patch changes other parts of Policy to drop
 explicit mention of any in favor of a reference to this section, I
 don't think the any-any-any normalization belongs in the footnote.

I think the any-any-any normalization belongs in the footnote since I
don't think the triplet stuff is particularly important right now, but all
definitely needs to be called out in that paragraph.  Thanks!

Here's an updated patch with those issues fixed.

diff --git a/policy.sgml b/policy.sgml
index ab8fedf..63858eb 100644
--- a/policy.sgml
+++ b/policy.sgml
@@ -2727,27 +2727,35 @@ Package: libc6
ttArchitecture/tt field can include the following sets of
values:
list
-   itemA unique single word identifying a Debian machine
- architecture as described in ref id=arch-spec.
-   itemttall/tt, which indicates an
- architecture-independent package.
-   itemttany/tt, which indicates a package available
- for building on any architecture.
-   itemttsource/tt, which indicates a source package.
+   item
+ A unique single word identifying a Debian machine
+ architecture as described in ref id=arch-spec.
+   /item
+   item
+ An architecture wildcard identifying a set of Debian
+ machine architectures, see ref id=arch-wildcard-spec.
+   /item
+   item
+ ttall/tt, which indicates an
+ architecture-independent package.
+   /item
+   item
+ ttsource/tt, which indicates a source package.
+   /item
/list
  /p
 
  p
In the main filedebian/control/file file in the source
-   package, this field may contain the special value
-   ttany/tt, the special value ttall/tt, or a list of
-   architectures separated by spaces.  If ttany/tt or
-   ttall/tt appear, they must be the entire contents of the
-   field.  Most packages will use either ttany/tt or
-   ttall/tt.  Specifying a specific list of architectures is
-   for the minority of cases where a program is not portable or
-   is not useful on some architectures, and where possible the
-   program should be made portable instead.
+   package, this field may contain the special value ttall/tt
+   or a list of specific and wildcard architectures separated by
+   spaces.  If ttall/tt appears, that value must be the
+   entire contents of the field.  Most packages will use
+   either ttany/tt or ttall/tt.  Specifying a specific
+   list of architectures is for the minority of cases where a
+   program is not portable or is not useful on some
+   architectures, and where possible the program should be made
+   portable instead.
  /p
 
  p
@@ -2789,6 +2797,26 @@ Package: libc6
  /p
 
  p
+   Specifying a list of architecture wildcards indicates that
+   the source will build an architecture-dependent package on
+   the union of the lists of architectures from the expansion
+   of each specified architecture wildcard, and will only
+   work correctly on the architectures in the union of the
+   lists.footnote
+ Use of architecture wildcards other than ttall/tt is for
+ a minority of cases where the program is not portable and
+ should not be used for most packages.  Wildcards are not
+ expanded into a list of known architectures before comparing
+ to the build architecutre.  Instead, the build architecture
+ is matched against any wildcards and this package is built
+ if any wildcard matches.
+   /footnote
+