Bug#1029831: debian-policy: Make required packages build-essential

2023-01-29 Thread Ansgar
On Sun, 2023-01-29 at 13:53 +0100, Santiago Vila wrote:
> What you call current practice is only current debootstrap behaviour.

Then I'll reply here as well (content is the same as -devel):

Current practice is to use Build-Depends to specify build dependencies
in a way that the buildd network will successfully build packages. The
data might also be of (limited) use for other purposes.

We do *not* specify additional Build-Conflicts (that might make builds
fail / produce different results). Neither does the buildd network
require that packages already installed are listed additionally in
Build-Depends to install those and build packages successfully.

The set of preinstalled packages in build environments is decided by
the debootstrap implementation, so yes, the debootstrap behavior is
current practice.

If you want Build-{Depends,Conflicts} to provide stronger promises,
that is a change from current practice. And could be extended to
forcing /usr/local to be empty and a sane, standard environment and
contents of $HOME and anything else that could affect build results.

Ansgar



Bug#1029831: debian-policy: Make required packages build-essential

2023-01-29 Thread Santiago Vila

El 28/1/23 a las 14:07, Ansgar escribió:

+---
| The required packages are called build-essential, and include packages
| with Priority "required" and additional packages. An informational
| list of additional packages can be found in
| /usr/share/doc/build-essential/list (which is contained in the
| build-essential package).
+---

This only documents existing practice as practically all systems have
required packages installed.


(I replied in -devel but should have replied here).

What you call current practice is only current debootstrap behaviour.

There are already packages in bullseye having build-depends
on tzdata, and afaik it was not me who reported them to have such
build-dependency. If current practice was really not to consider
tzdata as build-essential, as you say, somebody would have reported
those build-dependencies as a bug, because we don't use build-depends
when the package is build-essential.

I would say, therefore, that current practice all this time has really
been to report those bugs and fix them, i.e. current practice is
that tzdata is not build-essential, despite debootstrap behaviour.

Thanks.



Bug#1029831: debian-policy: Make required packages build-essential

2023-01-28 Thread Guillem Jover
On Sat, 2023-01-28 at 14:07:06 +0100, Ansgar wrote:
> Timo Röhling writes:
> > * Andreas Henriksson  [2023-01-28 12:50]:
> >>Policy is not a religion. Policy has many bugs. Policy is very outdated.
> >>[...]
> >>Here's an example you could follow:
> >>https://lists.debian.org/debian-policy/2022/12/msg00023.html
> > Your argument cuts both ways. Right now, Policy says that
> > the bugs are RC, and if you believe that should be different, why
> > don't you propose such a change and seek consensus yourself?
> 
> I don't think it does.  Policy doesn't specify what packages actually
> are build-essential; it only refers to an "informational list" in
> Section 4.2.

It does, but in a way that does not require encoding package names in
policy to leave breathing room to toolchain maintainers.

Policy says this:

  ,---
  It is not necessary to explicitly specify build-time relationships on
  a minimal set of packages that are always needed to compile, link and
  put in a Debian package a standard “Hello World!” program written in C
  or C++. The required packages are called *build-essential*, and an
  informational list can be found in "/usr/share/doc/build-
  essential/list" (which is contained in the "build-essential" package).
  [1]
  `---

With that footnote explaining the rationale:

  ,---
  [1] Rationale:

* This allows maintaining the list separately from the policy
  documents (the list does not need the kind of control that the
  policy documents do).

* Having a separate package allows one to install the build-
  essential packages on a machine, as well as allowing other
  packages such as tasks to require installation of the build-
  essential packages using the depends relation.

* The separate package allows bug reports against the list to be
  categorized separately from the policy management process in the
  BTS.
  `---

And further down it says this:

  ,---
  If build-time dependencies are specified, it must be possible to build
  the package and produce working binaries on a system with only
  essential and build-essential packages installed and also those
  required to satisfy the build-time relationships (including any
  implied relationships). […]
  `---

> I think discussion in #1027832 suggested that required packages should
> be build-essential as well. Maybe this should be made explicit, for
> example by changing
> 
> +---
> | The required packages are called build-essential, and an informational
> | list can be found in /usr/share/doc/build-essential/list (which is
> | contained in the build-essential package).
> +---[ Section 4.2 ]
> 
> to something like
> 
> +---
> | The required packages are called build-essential, and include packages
> | with Priority "required" and additional packages. An informational
> | list of additional packages can be found in
> | /usr/share/doc/build-essential/list (which is contained in the
> | build-essential package).
> +---
> 
> This only documents existing practice as practically all systems have
> required packages installed.

If the point of this proposal is to include tzdata by proxy, then that
makes no sense, because tzdata does not have the properties to keep
being a "required" package. And if Priority "required" packages are
a way to denote the pseudo-essential set via priorities (even though we
do not even mark depended libraries as such anymore, so it's at most a
subset) instead of the Essential:yes field and dependencies of those,
then this is already covered by the "essential" mention above.

So adding this would only confuse things more than help anything. And
would be only a definition hack to preserve tzdata in that set only
temporarily anyway.

Guillem



Bug#1029831: debian-policy: Make required packages build-essential

2023-01-28 Thread Sam Hartman
Ansgar> +--- | The required packages are called build-essential, and
Ansgar> an informational | list can be found in
Ansgar> /usr/share/doc/build-essential/list (which is | contained in
Ansgar> the build-essential package).  +---[ Section 4.2 ]

Ansgar> to something like

Ansgar> +--- | The required packages are called build-essential, and
Ansgar> include packages | with Priority "required" and additional
Ansgar> packages. An informational | list of additional packages can
Ansgar> be found in | /usr/share/doc/build-essential/list (which is
Ansgar> contained in the | build-essential package).  +---

Ansgar> This only documents existing practice as practically all
Ansgar> systems have required packages installed.

I support this change and would second if submitted as a patch.


signature.asc
Description: PGP signature


Bug#1029831: debian-policy: Make required packages build-essential

2023-01-28 Thread Ansgar
Package: debian-policy

[ This is basically #1027832 ]

Timo Röhling writes:
> * Andreas Henriksson  [2023-01-28 12:50]:
>>Policy is not a religion. Policy has many bugs. Policy is very outdated.
>>[...]
>>Here's an example you could follow:
>>https://lists.debian.org/debian-policy/2022/12/msg00023.html
> Your argument cuts both ways. Right now, Policy says that
> the bugs are RC, and if you believe that should be different, why
> don't you propose such a change and seek consensus yourself?

I don't think it does.  Policy doesn't specify what packages actually
are build-essential; it only refers to an "informational list" in
Section 4.2.

I think discussion in #1027832 suggested that required packages should
be build-essential as well. Maybe this should be made explicit, for
example by changing

+---
| The required packages are called build-essential, and an informational
| list can be found in /usr/share/doc/build-essential/list (which is
| contained in the build-essential package).
+---[ Section 4.2 ]

to something like

+---
| The required packages are called build-essential, and include packages
| with Priority "required" and additional packages. An informational
| list of additional packages can be found in
| /usr/share/doc/build-essential/list (which is contained in the
| build-essential package).
+---

This only documents existing practice as practically all systems have
required packages installed.

Ansgar