Package: debian-policy
Version: 3.1.0.0

----- Forwarded message from Antti-Juhani Kaijanaho <[EMAIL PROTECTED]> -----

Date: Tue, 9 Nov 1999 18:13:45 +0200
From: Antti-Juhani Kaijanaho <[EMAIL PROTECTED]>
To: debian-policy@lists.debian.org
Subject: Correction to the build-dependency spec, Packaging manual section 8.1

I feel ashamed.

My initial draft for the build-dependency specification - which
was carefully put together after a period of experimentation and
checking of prior art - did not include the architecture specifications
("[!i386]").  It was added very late in the process after Marcus
Brinkmann and Joel Klecker had lobbyed hard for it.  When I wrote my
final draft, I added them and wrote the relevant language with too little
thought, as it turns out.  The result is a humiliating error in the spec,
which should be corrected ASAP.

Here's the relevant part of the Packaging Manual, section 8.1, last
non-example paragraph:
  "An exclamation mark may be prepended to each name. If the current
  Debian host architecture is not in this list, or it is in the list
  with a prepended exclamation mark, the package name and the associated
  version specification are ignored completely for the purposes of
  defining the relationships."

The idea was that [!i386] would be ignored ONLY in i386 and used by
other architectures.  As it turns out, the wording of the spec means
something quite different:

    Suppose we're building on alpha, and we need to decide whether
    "kernel-headers-2.2.12 [!hurd-i386 !m68k]" is a relevant dependency.
    We check that

        + alpha is not in the list [!hurd-i386 !m68k], and

        + alpha is not in the list [!hurd-i386 !m68k] with a prepended
        exclamation mark

    and therefore conclude that the dependency must be ignored.

In fact, this reasoning is valid for all values of "alpha" not equal
to "hurd-i386" or "m68k", and therefore [!X !Y !Z ...] means "always
ignore me".  Ouch!

I think it is quite clear that this is not what was intended, and
therefore I ask the policy editors to consider this problem a typo on my
part, and replace the quoted paragraph with the following, which should
reflect the intended semantics:

  An exclamation mark may be prepended to each name. If the current Debian
  host architecture is not in this list and there are no exclamation
  marks in the list, or it is in the list with a prepended exclamation
  mark, the package name and the associated version specification are
  ignored completely for the purposes of defining the relationships.

The only change is the addition of the phrase "and there are no
exclamation marks in the list".


Theorem: This paragraph does indeed reflect the intended semantics.

Proof:  It is easy to see that the exclamation mark defines exclusion
from the set and the absence of the exclamation mark defines inclusion in
the set.  The base set for the exclusion is the set of all architectures,
since all architecture names which are not mentioned with an exclamation
mark are included; that is, [!m68k !sparc] means the same as [alpha arm
hurd-i386 i386 powerpc].  If there are architecture names without an
exclamation mark when the list contains names with an exclamation mark,
the list is equivalent to one without the names without the exclamation
mark; that is, [i386 !m68k !sparc] means the same as [!m68k !sparc].  _
                                                                     |_|

[How did I notice this?  I was putting together the build-essential
package and decided to use the same syntax in a certain file which
is used for generating the /usr/share/doc file and the dependencies.
I tried to state the semantics in a different, more formal way, in which
the problem was obvious.]

-- 
%%% Antti-Juhani Kaijanaho % [EMAIL PROTECTED] % http://www.iki.fi/gaia/ %%%

                                  ""
                             (John Cage)


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



----- End forwarded message -----

-- 
%%% Antti-Juhani Kaijanaho % [EMAIL PROTECTED] % http://www.iki.fi/gaia/ %%%

                                  ""
                             (John Cage)

Reply via email to