Re: packages expected to fail on some archs

2022-10-03 Thread Adam Borowski
On Tue, Sep 27, 2022 at 12:23:57AM +0300, Adrian Bunk wrote:
> If we limit the problem to avoiding build failures in cases that 
> upstream does not support, there would be the trivial solution of
> having a package ship Provides like:
> - architecture-is-64bit
> - architecture-is-32bit
> - architecture-is-little-endian
> - architecture-is-big-endian
> - architecture-has-64bit-timet

>   Build-Depends: architecture-is-64bit, architecture-is-little-endian,...
> would be a package that only supports 64bit little endian architectures, 
> and that would never be attempted to build on 32bit or big endian
> architectures.
> 
> The buildd page would then show for i386:
>   mypackage build-depends on missing:
>   - architecture-is-64bit

Alas, this scheme won't work for cross-building or multi-arch :(


Meow!
-- 
⢀⣴⠾⠻⢶⣦⠀ Genetics say, virgin birth may not possibly produce male offspring.
⣾⠁⢠⠒⠀⣿⡁ Thus, either Jesus was fathered by (Abdes?) Pantera, or she was trans.
⢿⡄⠘⠷⠚⠋⠀
⠈⠳⣄ In neither case Joseph is involved, making Jesus a bastard.



Re: packages expected to fail on some archs

2022-09-26 Thread Julien Puydt
Hi

Le lun. 26 sept. 2022 à 23:42, Adrian Bunk  a écrit :

>
> If we limit the problem to avoiding build failures in cases that
> upstream does not support, there would be the trivial solution of
> having a package ship Provides like:
> - architecture-is-64bit
> - architecture-is-32bit
> - architecture-is-little-endian
> - architecture-is-big-endian
> - architecture-has-64bit-timet
> -...
>
>   Build-Depends: architecture-is-64bit, architecture-is-little-endian,...
> would be a package that only supports 64bit little endian architectures,
> and that would never be attempted to build on 32bit or big endian
> architectures.
>
> The buildd page would then show for i386:
>   mypackage build-depends on missing:
>   - architecture-is-64bit
>
> Not building a source package on one specific architecture could already
> today be achieved with:
>   Build-Depends: package-is-broken-on-ppc64el [ppc64el],...
>
> This might not be the most elegant solution, but it should be sufficient
> to solve the problem in this thread and it does not require any tool
> changes.
>

I find it both simple and elegant -- and it's probably pretty efficient too.

Perhaps there should be a conventional naming scheme for such virtual
packages ; say deb-missing-feature, deb-unsupported-architecture or some
such?

J.Puydt

>


Re: packages expected to fail on some archs

2022-09-26 Thread Adrian Bunk
On Wed, Sep 14, 2022 at 01:38:01PM +0200, Guillem Jover wrote:
>...
> [ Mostly to summarize the status re dpkg. ]
>...
>   * Lack of bits/endianness arch "aliases" (#962848). The main problem
> with this one is that we cannot simply add such aliases, as then
> those would silently be considered as regular arches, and they do
> not map into the current naming convention at all. These would need
> to be added with a breaking syntax (say with some non-accepted
> char, such as % or whatever) so that they do not introduce silent
> breakage. This would then need to be supported by anything
> handling arch restrictions (field and dependencies) which can be a
> rather large surface. Then there is the problem that architectures
> are evaluated as ORed lists, and the bits/endianness might require
> to be treated as ANDed lists some times (of course the latter
> could be handled by combining them into single aliases, but meh).

If we limit the problem to avoiding build failures in cases that 
upstream does not support, there would be the trivial solution of
having a package ship Provides like:
- architecture-is-64bit
- architecture-is-32bit
- architecture-is-little-endian
- architecture-is-big-endian
- architecture-has-64bit-timet
-...

  Build-Depends: architecture-is-64bit, architecture-is-little-endian,...
would be a package that only supports 64bit little endian architectures, 
and that would never be attempted to build on 32bit or big endian
architectures.

The buildd page would then show for i386:
  mypackage build-depends on missing:
  - architecture-is-64bit

Not building a source package on one specific architecture could already 
today be achieved with:
  Build-Depends: package-is-broken-on-ppc64el [ppc64el],...

This might not be the most elegant solution, but it should be sufficient 
to solve the problem in this thread and it does not require any tool changes.

> Thanks,
> Guillem

cu
Adrian



Re: packages expected to fail on some archs

2022-09-14 Thread Samuel Thibault
Guillem Jover, le mer. 14 sept. 2022 13:38:01 +0200, a ecrit:
> Something else to consider is that, for packages that make sense
> porting, deny-listing them from building means we do not have build
> failure logs, so deciding what to port or trying to check for patterns
> becomes more costly for humans,

Yes!

> of course at the cost of potentially throwing at it buildd resources.

Ports buildd maintainers can blacklist packages easily if they are seen
to hog buildd resources. That's easier for them to maintain than having
to get a package uploaded.

> we already had something similar with the Packages-arch-specific file,
> but my understanding is that we are moving away from it?

Yes we are because it's tedious to update.

Samuel



Re: packages expected to fail on some archs

2022-09-14 Thread Guillem Jover
Hi!

[ Mostly to summarize the status re dpkg. ]

On Sun, 2022-09-11 at 17:08:57 +0200, Samuel Thibault wrote:
> The issue we see is that some DDs end up setting a hardcoded list in
> the "Architecture" field, rather than just letting builds keep failing
> on these archs (and then possibly succeeding after some time whenever
> somebody contributes a fix upstream that gets propagated to Debian).

> That said, I guess DDs would still set a manual Arch list so as to get
> the red flags away from their sight on the buildd page status, e.g. from
> https://buildd.debian.org/status/package.php?p=sthibault%40debian.org=yes=compact
> so that they can easily notice which build failures are actually not
> expected, to be able to efficiently work on those.
> 
> So perhaps what is missing is a way to express that an FTBFS is
> expected, so that the buildd page status represents it differently, e.g.
> in orange rather than red?  The idea would be that it should be really
> easy to set (as easy as setting an Architecture list) so that we can
> easily recommend it.

Yes, I agree that this seems like a problem with representing state,
where people feel the need to move from the red to green. I think the
proposals that have been mentioned elsethread are nice, where a
regression would be red but whenever a package was not previously
built (because it never has or it got removed) for an arch, that
is shown in a way consistent with how testing transitions would take
it (orange or another non-red color seems good).

Something else to consider is that, for packages that make sense
porting, deny-listing them from building means we do not have build
failure logs, so deciding what to port or trying to check for patterns
becomes more costly for humans, of course at the cost of potentially
throwing at it buildd resources.

> We could for instance:
> - Add an Architecture-FTBFS field to debian/control
> - Add an environment variable to debian/rules so that on these archs dh
>   fails with a different exit code that buildds would notice.
> - Add a Architecture-FTBFS field in the wb database that DDs can set
> 
> The tricky part I see is that AIUI the buildd status page doesn't
> have direct access to debian/control, only to the wb database, so the
> first solution is not immediate to implement. The third option would
> be the most obvious from the buildd point of view, but that's not very
> convenient for DDs. Possibly such field could be automatically set
> according to the Packages entry when a newer upload is done?

While these might be worth it on their own, it feels (as has been
covered elsethread) to be a bit of a workaround for lack of better
expressiveness in our Architecture declarations, and build state
representation. But see my reply to #807263 about how I see the
different cases. Also for the third we already had something similar
with the Packages-arch-specific file, but my understanding is that we
are moving away from it?

The common mentioned omissions are:

  * Lack of negated architectures in the field. As mentioned on #807264
this is kind of supported already by dpkg, but it would need to be
accepted by the project, and the actual syntax and semantics
documented. (Personally I think this should not generally be used,
and there are very few cases where this seems legitimate?)

  * Lack of bits/endianness arch "aliases" (#962848). The main problem
with this one is that we cannot simply add such aliases, as then
those would silently be considered as regular arches, and they do
not map into the current naming convention at all. These would need
to be added with a breaking syntax (say with some non-accepted
char, such as % or whatever) so that they do not introduce silent
breakage. This would then need to be supported by anything
handling arch restrictions (field and dependencies) which can be a
rather large surface. Then there is the problem that architectures
are evaluated as ORed lists, and the bits/endianness might require
to be treated as ANDed lists some times (of course the latter
could be handled by combining them into single aliases, but meh).

Thanks,
Guillem



Re: packages expected to fail on some archs

2022-09-13 Thread Adrian Bunk
On Mon, Sep 12, 2022 at 04:08:08PM +0200, Tobias Frost wrote:
>...
> The problem is that if you want to exclude an arch explicitly, you have to
> list all archs you want to build it on. IOW,  I'm missing an easy way to say
> "not on THIS architecture", somthing like "[!armel]"
>...
> I don't actually believe people are using them on that arch, because if they
> would, I would get bug reports about them… Upstream agrees with that: Although
> off-topic, I would be eager to know if there is anybody using $PACKAGE on an
> s390/System Z?"

A relevant quesion would be whether this is [!s390x] or [littleendian].

There are 5 additional big endian architectures in ports,
plus people elsewhere apparently working on ports like arm64eb.

And while it is unclear whether s390x has any users at all on Debian,
ports architectures like hppa or powerpc do have users.

cu
Adrian



Re: packages expected to fail on some archs

2022-09-12 Thread Samuel Thibault
Tobias Frost, le lun. 12 sept. 2022 18:36:09 +0200, a ecrit:
> On Mon, Sep 12, 2022 at 05:11:46PM +0200, Samuel Thibault wrote:
> > Tobias Frost, le lun. 12 sept. 2022 16:08:08 +0200, a ecrit:
> > > The problem is that if you want to exclude an arch explicitly, you have to
> > > list all archs you want to build it on. IOW,  I'm missing an easy way to 
> > > say
> > > "not on THIS architecture", somthing like "[!armel]"
> > 
> > Yes, but see below.
> > 
> > > There are a few packages I take care of which make trouble on some archs 
> > > or
> > > simply do not make much sense to run on those low-end archs.
> > 
> > If they make trouble, I would say just let the package FTBFS there.
> 
> Well, it compiles there… Of course I could fail it artifically, but that
> isn't something I would say it would be appropiate.

That may still be more informative than hardcoding an Architecture list?
I happen to be doing that in sphinxbase actually:

https://salsa.debian.org/a11y-team/sphinxbase/-/blob/master/debian/rules#L30

> > > I was spending siginifant time in the past weeks on such a package, to fix
> > > autopkgtests issues specific to that arch -- unsuccessfully, I disabled 
> > > the
> > > tests in the end --,
> > 
> > Is it possible to get the same test be performed during package build
> > time? That way, it will be just not built, not shipped, and the state
> > will be clear on the buildd status page, and you can move on to more
> > useful work. For instance in my pocketsphinx package case:
> 
> Would do that if it would be possible; The tests won't run properly without 
> the
> data installed properly.

Ok, so it's a corner case we were discussing on debian-ports indeed.

Samuel



Re: packages expected to fail on some archs

2022-09-12 Thread Tobias Frost
On Mon, Sep 12, 2022 at 05:11:46PM +0200, Samuel Thibault wrote:
> Hello,
> 
> Tobias Frost, le lun. 12 sept. 2022 16:08:08 +0200, a ecrit:
> > The problem is that if you want to exclude an arch explicitly, you have to
> > list all archs you want to build it on. IOW,  I'm missing an easy way to say
> > "not on THIS architecture", somthing like "[!armel]"
> 
> Yes, but see below.
> 
> > There are a few packages I take care of which make trouble on some archs or
> > simply do not make much sense to run on those low-end archs.
> 
> If they make trouble, I would say just let the package FTBFS there.

Well, it compiles there… Of course I could fail it artifically, but that
isn't something I would say it would be appropiate.

> > I was spending siginifant time in the past weeks on such a package, to fix
> > autopkgtests issues specific to that arch -- unsuccessfully, I disabled the
> > tests in the end --,
> 
> Is it possible to get the same test be performed during package build
> time? That way, it will be just not built, not shipped, and the state
> will be clear on the buildd status page, and you can move on to more
> useful work. For instance in my pocketsphinx package case:

Would do that if it would be possible; The tests won't run properly without the
data installed properly.

-- 
tobi



Re: packages expected to fail on some archs

2022-09-12 Thread Samuel Thibault
Hello,

Tobias Frost, le lun. 12 sept. 2022 16:08:08 +0200, a ecrit:
> The problem is that if you want to exclude an arch explicitly, you have to
> list all archs you want to build it on. IOW,  I'm missing an easy way to say
> "not on THIS architecture", somthing like "[!armel]"

Yes, but see below.

> There are a few packages I take care of which make trouble on some archs or
> simply do not make much sense to run on those low-end archs.

If they make trouble, I would say just let the package FTBFS there.

> I was spending siginifant time in the past weeks on such a package, to fix
> autopkgtests issues specific to that arch -- unsuccessfully, I disabled the
> tests in the end --,

Is it possible to get the same test be performed during package build
time? That way, it will be just not built, not shipped, and the state
will be clear on the buildd status page, and you can move on to more
useful work. For instance in my pocketsphinx package case:

https://buildd.debian.org/status/package.php?p=pocketsphinx

the mips tests fail, I just let it fail. If anybody feels interested
enough to take the time to fix the bug, then great. In the meanwhile it
will just not be available since it is broken. The only work I have done
for that problem is reporting the issue upstream:

https://github.com/cmusphinx/pocketsphinx/issues/252

What was proposed in the thread was to make the buildd page show the
failure in orange, so that people know that it's a known failure, and
not a new bug.

Samuel



Re: packages expected to fail on some archs

2022-09-12 Thread Tobias Frost
On Sun, Sep 11, 2022 at 11:07:13PM +0300, Adrian Bunk wrote:
> On Sun, Sep 11, 2022 at 05:08:57PM +0200, Samuel Thibault wrote:
> >...
> > The issue we see is that some DDs end up setting a hardcoded list in
> > the "Architecture" field, rather than just letting builds keep failing
> > on these archs (and then possibly succeeding after some time whenever
> > somebody contributes a fix upstream that gets propagated to Debian).
> >...
> 
> I'd say it is the best solution when a package needs non-trivial
> architecture-specific porting for every architecture it supports.
> 
> With "non-trivial" I mean not just adding a new architecture to a few 
> #ifdefs, but serious upstream porting efforts. E.g. valgrind does not
> support riscv64, and if it would ever gain the support in a new upstream
> version I'd expect the maintainer to add that to the Architecture field
> when upstream announces support for a new architecture.
> 
> But Architecture lists for expressing e.g. "64bit" or "little endian"
> are a real pain for everyone working on bringup of a new port.
> 
> Which happens far more often than most people realize.
> 
> There is not only riscv64 (64bit, little endian).
> 
> Ports is about to start building for arc (32bit, little endian).
> 
> There are people working on ports like arm64be (64bit, big endian),
> loongarch64 (64bit, little endian) and many other ports that might
> never end up being built in the Debian infrastructure (but some of
> them might get built by derivatives).
> 
> Architecture lists containing all 64bit ports or all little endian
> ports create much extra work for anyone adding support for a new 64bit
> little endian architecture.

The problem is that if you want to exclude an arch explicitly, you have to
list all archs you want to build it on. IOW,  I'm missing an easy way to say
"not on THIS architecture", somthing like "[!armel]"

There are a few packages I take care of which make trouble on some archs or
simply do not make much sense to run on those low-end archs.  They compile
there beautifully, or at least the usually do, (which then creates a lot
of maintainer overhead then, because out-of-date…)

I was spending siginifant time in the past weeks on such a package, to fix
autopkgtests issues specific to that arch -- unsuccessfully, I disabled the
tests in the end --, where noone will ever use that package. I was very close
just to do what Sam asked us not to do. (And I agree with him that this is not
good.)

I don't actually believe people are using them on that arch, because if they
would, I would get bug reports about them… Upstream agrees with that: Although
off-topic, I would be eager to know if there is anybody using $PACKAGE on an
s390/System Z?"

> > Samuel
> 
> cu
> Adrian
> 



Re: packages expected to fail on some archs

2022-09-11 Thread Paul Wise
On Sun, 2022-09-11 at 23:07 +0300, Adrian Bunk wrote:

> Architecture lists containing all 64bit ports or all little endian
> ports create much extra work for anyone adding support for a new
> 64bit little endian architecture.

Since dpkg already knows about the bits and endianness of ports,
perhaps it could add some sort of architecture wildcard system,
which would get resolved to real architectures at .dsc build time?

Alternatively the wildcards could be added to the .dsc too but that
would require sbuild, wb, dak and other tools to understand them too.

Until one of those happens, an unofficial Architecture-Tags field that
the Debian Janitor could use to update Architecture fields might work.

-- 
bye,
pabs

https://wiki.debian.org/PaulWise


signature.asc
Description: This is a digitally signed message part


Re: packages expected to fail on some archs

2022-09-11 Thread Rene Engelhard

Hi,


Am 11.09.22 um 22:07 schrieb Adrian Bunk:

On Sun, Sep 11, 2022 at 05:08:57PM +0200, Samuel Thibault wrote:

...
The issue we see is that some DDs end up setting a hardcoded list in
the "Architecture" field, rather than just letting builds keep failing
on these archs (and then possibly succeeding after some time whenever
somebody contributes a fix upstream that gets propagated to Debian).
...

I'd say it is the best solution when a package needs non-trivial
architecture-specific porting for every architecture it supports.

With "non-trivial" I mean not just adding a new architecture to a few
#ifdefs, but serious upstream porting efforts. E.g. valgrind does not
support riscv64, and if it would ever gain the support in a new upstream
version I'd expect the maintainer to add that to the Architecture field
when upstream announces support for a new architecture.


As a maintainer of such package I agree.

I would not like it to fail when it is known that it won't work. Ever.

Unless someone actually writes the matching asm part, knowing the ABI 
and calling convetions, etc.



Regards,


Reme



Re: packages expected to fail on some archs

2022-09-11 Thread Adrian Bunk
On Sun, Sep 11, 2022 at 05:08:57PM +0200, Samuel Thibault wrote:
>...
> The issue we see is that some DDs end up setting a hardcoded list in
> the "Architecture" field, rather than just letting builds keep failing
> on these archs (and then possibly succeeding after some time whenever
> somebody contributes a fix upstream that gets propagated to Debian).
>...

I'd say it is the best solution when a package needs non-trivial
architecture-specific porting for every architecture it supports.

With "non-trivial" I mean not just adding a new architecture to a few 
#ifdefs, but serious upstream porting efforts. E.g. valgrind does not
support riscv64, and if it would ever gain the support in a new upstream
version I'd expect the maintainer to add that to the Architecture field
when upstream announces support for a new architecture.

But Architecture lists for expressing e.g. "64bit" or "little endian"
are a real pain for everyone working on bringup of a new port.

Which happens far more often than most people realize.

There is not only riscv64 (64bit, little endian).

Ports is about to start building for arc (32bit, little endian).

There are people working on ports like arm64be (64bit, big endian),
loongarch64 (64bit, little endian) and many other ports that might
never end up being built in the Debian infrastructure (but some of
them might get built by derivatives).

Architecture lists containing all 64bit ports or all little endian
ports create much extra work for anyone adding support for a new 64bit 
little endian architecture.

> Samuel

cu
Adrian



Re: packages expected to fail on some archs

2022-09-11 Thread Adrian Bunk
On Sun, Sep 11, 2022 at 09:25:40PM +0200, Samuel Thibault wrote:
> Paul Gevers, le dim. 11 sept. 2022 21:16:08 +0200, a ecrit:
> > 
> > - color packages that "never" had a successful built on an architecture
> > different. That information is already available because that's what marks
> > the package as "uncompiled" vs "out-of-date".
>...
> That doesn't cover the case when a package stopped building on an arch,
> though.

In practive it does, when Paul wrote "never" that actually means
"no older version is in the archive on that architecture".

On release architectures people are usually fast with getting stale 
versions of no longer buildable packages removed since it prevents
testing migration.

> Samuel

cu
Adrian



Re: packages expected to fail on some archs

2022-09-11 Thread Samuel Thibault
Paul Gevers, le dim. 11 sept. 2022 21:16:08 +0200, a ecrit:
> On 11-09-2022 17:08, Samuel Thibault wrote:
> > We could for instance:
> > - Add an Architecture-FTBFS field to debian/control
> > - Add an environment variable to debian/rules so that on these archs dh
> >fails with a different exit code that buildds would notice.
> > - Add a Architecture-FTBFS field in the wb database that DDs can set
> 
> - color packages that "never" had a successful built on an architecture
> different. That information is already available because that's what marks
> the package as "uncompiled" vs "out-of-date".

Oh, right, that information is already available in wb.  Mehdi, do you
think you can implement that easily for a start?

That doesn't cover the case when a package stopped building on an arch,
though.

Samuel



Re: packages expected to fail on some archs

2022-09-11 Thread Paul Gevers

Hi Samuel,

On 11-09-2022 17:08, Samuel Thibault wrote:

We could for instance:
- Add an Architecture-FTBFS field to debian/control
- Add an environment variable to debian/rules so that on these archs dh
   fails with a different exit code that buildds would notice.
- Add a Architecture-FTBFS field in the wb database that DDs can set


- color packages that "never" had a successful built on an architecture 
different. That information is already available because that's what 
marks the package as "uncompiled" vs "out-of-date".


I think it has added value if both cases (marked by the maintainer vs 
detected automatically) have value and could have different colors. 
Comparing it to autopkgtest, we currently color no-regression orange, 
while "neutral" (because of all kind of reasons, but the result of an 
actively set property) is blue.


Paul


OpenPGP_signature
Description: OpenPGP digital signature