Re: git-ubuntu build

2023-06-09 Thread Bryce Harrington
On Fri, Jun 09, 2023 at 09:11:34PM -0700, Steve Langasek wrote:
> On Wed, Jun 07, 2023 at 09:27:47PM -0700, Bryce Harrington wrote:
> > On Wed, Jun 07, 2023 at 06:41:14PM -0700, Steve Langasek wrote:
> 
> > It does not exist, actually!  I recall we dropped it a few years ago,
> > see see f2dc622e.
> 
> $ git-ubuntu help
> usage: git-ubuntu [-h]  ...
> git-ubuntu: error: argument : invalid choice: 'help' (choose from 
> 'build', 'build-source', 'import-local', 'import-ppa', 'lint', 'review', 
> 'clone', 'export-orig', 'import', 'importer-service-broker', 
> 'importer-service-poller', 'importer-service-worker', 'merge', 
> 'prepare-upload', 'queue', 'remote', 'submit', 'tag')
> 
> ^
> $

Heh, that list is pretty out of date.  build-source is gone, and I think
review and lint are as well.  There is still a 'build' module with some
of the remaining code from the original build command, but you can see
from the above commit that the hook for the command was removed.

> > That said, though, I've wondered if 'build' may not necessarily be the
> > ideal jargon, anyway.  Since the (prepare-upload args) step can trigger
> > a git push, and because this is done principly when uploading, it feels
> > more like a submission-style workflow than a build; "build" also implies
> > you're creating some form of artifact for local use, which in this case
> > you're not, really.
> 
> > So, I'd suggest that even though 'git-ubuntu build' is not used, you may
> > still want to think more anyway about if there's a better term.
> 
> Related commands:
> 
>  - dpkg-buildpackage
>  - debuild
>  - gbp buildpackage
>  - bzr builddeb
>  - sbuild
> 
> So "build" is quite a strong theme in the existing tools.
>
> An interesting point, though, is that this makes me realize I would only
> ever care about the sauce this provides when preparing a source package for
> upload to Ubuntu, and not when I was trying to do a binary package build. 
> Another previous git-ubuntu subcommand was 'git-ubuntu build-source'.  Do
> you think that would be a better fit?

That occurred to me too.  We had subsumbed 'build-source' to 'build -S'
since both commands used basically the same code just passing the -S
along to the underlying tools.

> I don't think 'submission-style' quite describes what I'm expecting to
> achieve here.  I might want to build a source package, then do a variety of
> things with it before actually uploading it; e.g. run a debdiff against the
> previous package to be sure it's actually a clean diff at that level, take
> the source artifacts and do a test build, push to a ppa before pushing to
> the Ubuntu archive, manually mangle the .changes file (rare, but I happen
> to have just done this for a series of SRUs so that they would have complete
> changelogs but not link to a whole list of unrelated bugs in the SRU
> process), etc.  And the target of the 'git push' may or may not be something
> that we want to merge immediately, may or may not want to raise an MP for
> immediately.

Right, the point I was making there is that since the 'prepare-upload'
step pushes the branch to Launchpad, I don't want or need to include
that in my workflow until the end, after all that is done and I'm ready
to do the .changes upload.  Then I do one final debuild -S and run
prepare-upload, verify it worked and check the .changes file has
expected fields, and then I directly dput the .changes.  I think of that
as more of a submission-style procedure.

But, there's more than one way to do this.  I'm sure we all have unique
workflows for how we prep source packages.

Bryce

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: git-ubuntu build

2023-06-09 Thread Steve Langasek
On Wed, Jun 07, 2023 at 09:27:47PM -0700, Bryce Harrington wrote:
> On Wed, Jun 07, 2023 at 06:41:14PM -0700, Steve Langasek wrote:

> > As git-ubuntu sees increasing use, including for such things as requests for
> > sponsorship of Debian merges, I've had an itch to scratch regarding the
> > complexity of passing correct flags to dpkg-buildpackage, so I spent some
> > time prototyping a git-ubuntu wrapper for it.

> > bzr-builddeb hasn't been useful for general work on Ubuntu packages for
> > quite a while, but the behavior of this wrapper is inspired by it. 
> > Hopefully some of you will find using this tool pleasantly familiar!

> > The intent is that this will eventually become a git-ubuntu subcommand,
> > though there are some namespace questions to sort out first - the obvious
> > name for such a command IMHO would be 'git-ubuntu build' but that already
> > exists and does other things.

> It does not exist, actually!  I recall we dropped it a few years ago,
> see see f2dc622e.

$ git-ubuntu help
usage: git-ubuntu [-h]  ...
git-ubuntu: error: argument : invalid choice: 'help' (choose from 
'build', 'build-source', 'import-local', 'import-ppa', 'lint', 'review', 
'clone', 'export-orig', 'import', 'importer-service-broker', 
'importer-service-poller', 'importer-service-worker', 'merge', 
'prepare-upload', 'queue', 'remote', 'submit', 'tag')

^
$

So, it does *partially* exist, even though running 'git-ubuntu build'
returns an error :-)

> I recall at the time it was intended to one day bring it back, but the
> plan was to reimplement - as you're doing - but also build it up from
> first principles with ample test case coverage.  The original subcommand
> lacked tests, but tried to do a bit too much (it included wrapping lxd,
> running lint, etc.) and the lack of tests made maintenance a bit scary. 
> So, I'd encourage making matching tests as you go.  :-)

Yes, Robie and I have talked about this; adding tests was not a blocker for
including it in a separate sandbox/ directory but will be for landing it as
a git-ubuntu subcommand.  I'll be working on adding tests shortly.

> That said, though, I've wondered if 'build' may not necessarily be the
> ideal jargon, anyway.  Since the (prepare-upload args) step can trigger
> a git push, and because this is done principly when uploading, it feels
> more like a submission-style workflow than a build; "build" also implies
> you're creating some form of artifact for local use, which in this case
> you're not, really.

> So, I'd suggest that even though 'git-ubuntu build' is not used, you may
> still want to think more anyway about if there's a better term.

Related commands:

 - dpkg-buildpackage
 - debuild
 - gbp buildpackage
 - bzr builddeb
 - sbuild

So "build" is quite a strong theme in the existing tools.

An interesting point, though, is that this makes me realize I would only
ever care about the sauce this provides when preparing a source package for
upload to Ubuntu, and not when I was trying to do a binary package build. 
Another previous git-ubuntu subcommand was 'git-ubuntu build-source'.  Do
you think that would be a better fit?

I don't think 'submission-style' quite describes what I'm expecting to
achieve here.  I might want to build a source package, then do a variety of
things with it before actually uploading it; e.g. run a debdiff against the
previous package to be sure it's actually a clean diff at that level, take
the source artifacts and do a test build, push to a ppa before pushing to
the Ubuntu archive, manually mangle the .changes file (rare, but I happen
to have just done this for a series of SRUs so that they would have complete
changelogs but not link to a whole list of unrelated bugs in the SRU
process), etc.  And the target of the 'git push' may or may not be something
that we want to merge immediately, may or may not want to raise an MP for
immediately.

> > Why this is useful:

> > - the syntax 'dpkg-buildpackage $(git-ubuntu prepare-upload args)' is
> >   onerous and repetitive - but we want to encourage inclusion of these
> >   headers in .changes files, as this lets us automate closure of git-ubuntu
> >   MPs
> > - there are certain options that can be inferred as correct for any
> >   git-ubuntu repo (-i -I)
> > - orig.tar.xz should be reconstituted or downloaded when needed, without
> >   extra commands (we have pristine-tar branches in git-ubuntu which often
> >   save having to do a duplicate download; having to clone a git repository
> >   *and* apt source the package is meh)
> > - getting the correct options to dpkg-buildpackage by hand for a package
> >   merge is tedious; this automates -v and -sa arguments.

> Very cool, and I'll have to look at what you're doing to automate the
> -sa arguments, I hadn't figured out a good solution there.

> Btw, you may already be doing this but I've found in scripting this
> myself that it's worthwhile to 

Re: +1 maintenance report

2023-06-09 Thread Brian Murray
On Fri, Jun 09, 2023 at 06:20:55PM +0100, Danilo Egea Gondolfo wrote:
> I had a shorter week with some Netplan distractions but here we go:
> 
> 1. delve
> 
> FTBFS due to the installed bpftool not matching the running kernel version.
> I tried to workaround this by calling bpftool directly from
> /usr/lib/linux-tools-.
> It kinda worked but the build still fails for a different reason. It needs
> more work.
> See LP: #2021481
> 
> 2. bpftrace
> 
> FTBFS on armhf. The problem apparently is a gcc bug.
> I created a patch with a workaround and asked the upstream project about
> the issue.
> See: LP: #2023173
> Also submitted to Debian #1037185
> Github discussion
> https://github.com/iovisor/bpftrace/pull/2360#discussion_r1223534659
> 
> 3. cbmc
> 
> FTBFS on all architectures.
> The compiler is catching some errors I believe are false positives.
> There are some optional variables that it says are MAYBE uninitialized.
> I added -Wno-error=maybe-uninitialized to the CXX FLAGS and it fixed
> the build on amd64. It's now failing for a different reason on the other
> archs.
> LP: #2023276
> 
> 4. pistache
> 
> FTBFS on all architectures except riscv
> One of the unit tests tries to resolve an address via DNS and fails
> because the builder doesn't have access to the internet I suppose.
> It's not failing on Debian's CI.
> A patch was submitted to the upstream project
> https://github.com/pistacheio/pistache/pull/1134
> LP: #2023274
> 
> 5. ctffind
> 
> FTBFS on non-x86 architectures
> It uses x86 assembly inline. I implemented an alternative code calling
> sinf() and cosf() from the libc instead on non-x86 systems.
> LP: #2023288
> Debian bug: #1037227
> The patch was accepted by Debian and is already synced to Ubuntu.
> 
> 6. elinks:
> 
> FTBFS on s390x
> A tool used during tests, sgml-parser, is crashing. There is a
> use-after-free issue
> in the code that is not making it crash on other architectures.
> One can see it by using valgrind or compiling elinks with address sanitizer.
> See: LP: 2023305
> I also reported the problem upstream:
> https://github.com/rkd77/elinks/issues/235
> 
> 7. libopenmpt
> 
> Autopkgtests failing
> The test will build a C file that emits some deprecation warnings.
> This is causing the test to fail.
> LP: #2023406
> It was already reported to Debian: #1037007

I'm publicly mentioning this as it is the second time (today!) I've seen
somebody not add a bug watch[1] to a bug which affects both Debian and
Ubuntu.

Basically, a bug watch will monitor the upstream bug report (status and
comments depending on the bug tracker) in the remote tracker and update
the bug task's status in Launchpad. This makes it much easier for future
travellers to see what is going on with the bug in other bug trackers.

[1] https://wiki.ubuntu.com/Bugs/Watches

Happy Friday!
--
Brian Murray

-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: git-ubuntu MPs in the sponsorship queue

2023-06-09 Thread Robie Basak
On Fri, Jun 09, 2023 at 12:13:29PM -0700, Steve Langasek wrote:
> On Fri, Jun 09, 2023 at 12:32:38PM +0100, Robie Basak wrote:
> > On Tue, Jul 05, 2022 at 05:41:04PM +0100, Robie Basak wrote:
> > > I've arranged for MPs against git-ubuntu repositories to appear in the
> > > sponsorship queue[1].
> 
> > I was using the fact that ~ubuntu-sponsors is requested for review in a
> > git-ubuntu MP to make it appear in the sponsorship queue. But if
> > somebody in ~ubuntu-sponsors reviews (let's say with Needs Fixing) then
> > they "grab" that review slot, and ~ubuntu-sponsors no longer has one. I
> > think this might cause the entry to disappear from the sponsorship queue
> > - for example after the contributor has fixed the issue.
> 
> > Any suggestions on what I should do instead?
> 
> You don't have to claim the ~ubuntu-sponsors review slot to leave comments
> on an MP...

The problem we had on the server team was "accidentally" claiming it. I
believe that if ~ubuntu-sponsors has a review slot, you're a member of
~ubuntu-sponsors and you vote eg. "Needs Fixing", then the
~ubuntu-sponsors slot automatically gets claimed by you.

Maybe there's a nuance I'm missing. I'm concerned that the existing
workflow will lead to MPs inadvertently disappearing from the queue like
this.


signature.asc
Description: PGP signature
-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


+1 maintenance report

2023-06-09 Thread Danilo Egea Gondolfo
I had a shorter week with some Netplan distractions but here we go:

1. delve

FTBFS due to the installed bpftool not matching the running kernel version.
I tried to workaround this by calling bpftool directly from
/usr/lib/linux-tools-.
It kinda worked but the build still fails for a different reason. It needs
more work.
See LP: #2021481

2. bpftrace

FTBFS on armhf. The problem apparently is a gcc bug.
I created a patch with a workaround and asked the upstream project about
the issue.
See: LP: #2023173
Also submitted to Debian #1037185
Github discussion
https://github.com/iovisor/bpftrace/pull/2360#discussion_r1223534659

3. cbmc

FTBFS on all architectures.
The compiler is catching some errors I believe are false positives.
There are some optional variables that it says are MAYBE uninitialized.
I added -Wno-error=maybe-uninitialized to the CXX FLAGS and it fixed
the build on amd64. It's now failing for a different reason on the other
archs.
LP: #2023276

4. pistache

FTBFS on all architectures except riscv
One of the unit tests tries to resolve an address via DNS and fails
because the builder doesn't have access to the internet I suppose.
It's not failing on Debian's CI.
A patch was submitted to the upstream project
https://github.com/pistacheio/pistache/pull/1134
LP: #2023274

5. ctffind

FTBFS on non-x86 architectures
It uses x86 assembly inline. I implemented an alternative code calling
sinf() and cosf() from the libc instead on non-x86 systems.
LP: #2023288
Debian bug: #1037227
The patch was accepted by Debian and is already synced to Ubuntu.

6. elinks:

FTBFS on s390x
A tool used during tests, sgml-parser, is crashing. There is a
use-after-free issue
in the code that is not making it crash on other architectures.
One can see it by using valgrind or compiling elinks with address sanitizer.
See: LP: 2023305
I also reported the problem upstream:
https://github.com/rkd77/elinks/issues/235

7. libopenmpt

Autopkgtests failing
The test will build a C file that emits some deprecation warnings.
This is causing the test to fail.
LP: #2023406
It was already reported to Debian: #1037007


Danilo.
-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Symbols files for C++ libraries for Ubuntu main

2023-06-09 Thread Dimitri John Ledkov
On Fri, 9 Jun 2023 at 20:10, Steve Langasek  wrote:
>
> Hi Seb,
>
> On Fri, Jun 09, 2023 at 02:27:02PM +0200, Sebastien Bacher wrote:
> > I would like to ask if there is any chance the MIR team would reconsider
> > their position on the topic (at least until the day we have a somewhat
> > working solution we can use)?
>
> > which also included those types of changes
>
> > - _Znam@Base 2.0~b2-0ubuntu3
> > + _Znaj@Base 2.0~b2-0ubuntu4
> > +#MISSING: 2.0~b2-0ubuntu4# _Znam@Base 2.0~b2-0ubuntu3
>
> > I personally don't understand why we have those symbols existing on armhf
> > which don't exist on amd64. Nor why _Znam@Base is becoming _Znaj@Base nor
> > how we are supposed to handle such cases
>
> Passing them through c++filt may help explain:
>
> $ echo _Znam@Base | c++filt
> operator new[](unsigned long)@Base
> $ echo _Znaj@Base | c++filt
> operator new[](unsigned int)@Base
> $
>
> There are various C++ functions whose signature will change based on the
> architecture word length.
>
> .symbols files support various kinds of globbing etc to be able to express
> this logically (e.g., you could say '_Zna[mj]@Base' instead of listing two
> different symbols as optional), but as you've found, it's an onerous,
> iterative process to identify all the ways C++ symbols vary across
> architectures and then encode this in a .symbols file.  And in this case,
> the symbol isn't part of the library's public ABI anyway, this is just a
> function from the base C++ library!
>
> > 4. doing those tweaks need to be done manually since it's not only applying
> > the diff but also adding optional keyword at places, I got one wrong and it
> > failed to build again
>
> > add one more symbol specific to risvc
> > http://launchpadlibrarian.net/647875197/libcupsfilters_2.0~b2-0ubuntu6_2.0~b2-0ubuntu7.diff.gz
>
> Yep.
>
> > I understand the motivation for wanting a symbol file but I agree with what
> > Robie, what's the benefit. In that case we spent a few hours to end up with
> > a .symbols which as over 150 '(optional)' entries, that doesn't protect us
> > much better than just not having a .symbols or using -c0 but still has a
> > high cost.
>
> I wouldn't say that it doesn't protect you.  It's a pain to set up initially
> and as you note, you can even have to do further fix-ups as a result of
> toolchain changes, as the set of template functions and other C++ sugar from
> outside of the library that gets exported as ELF symbols can change.  It
> DOES have a high cost, but in the end it provides the same level of
> protection against accidental ABI breakage as it does for C libraries.
>
> It would be nice to have better consistent tooling around ABI checking for
> C++ libraries.  I think the KDE team had some tools around automating the
> generation of symbols files - it does require two passes, first to build on
> all archs and then to merge the results.  But in principle that's better
> than whack-a-mole.
>
> We could also consider using abi-compliance-checker instead of symbols files
> for C++ libraries.  There is a dh-acc debhelper addon, but I've never used
> it.  We are currently using abi-compliance-checker for the ABI analysis of
> armhf for the move to 64-bit time_t; it's unmaintained upstream, but it does
> seem to work pretty well - the vast majority of issues we've encountered
> with it, when trying to run it over the entire Ubuntu archive, have been due
> to header files that #include headers from packages they don't depend on, or
> collections of headers that can't all be included together.  Both of these
> are issues of much less significance when it's the maintainer doing the
> work.  It would require the same sort of two-pass setup process as the KDE
> tools, though, and if it has to be done per-arch (probably), it's more
> awkward to set up because a-c-c .dump files aren't ascii that you can scrape
> from the build logs of failed builds - but it might be a more reliable tool
> over the long term than dpkg-gensymbols for C++ libraries.
>
> Downside: symbols files also let you track what version of a package a
> symbol was added in, which lets packages' versioned dependencies on
> libraries be no stricter than actually necessary.
>
>
> I don't speak for the MIR team, I have no objection to them relaxing the
> requirement of .symbols files for C++ libraries in main.  Just offering some
> suggestions on how we can do a better job of automating C++ ABI checks than
> we're doing today.


boost was in a similar position. it is too much work to maintain
symbols files for it, update them for new upstream releases, or even
just adjust for the new default compiler.
the solution there was to just bump the library soname on every
upstream change, and often bump package name (sort of soft library abi
bump) upon changes to the vendored re-exported libs and/or compiler
induced symbol changes. That works really well for c++. It may be
redundant for some updates, but it is a foolproof way, with single
pass uploads.

-- 
okurrr,


Re: git-ubuntu MPs in the sponsorship queue

2023-06-09 Thread Steve Langasek
On Fri, Jun 09, 2023 at 12:32:38PM +0100, Robie Basak wrote:
> On Tue, Jul 05, 2022 at 05:41:04PM +0100, Robie Basak wrote:
> > I've arranged for MPs against git-ubuntu repositories to appear in the
> > sponsorship queue[1].

> I was using the fact that ~ubuntu-sponsors is requested for review in a
> git-ubuntu MP to make it appear in the sponsorship queue. But if
> somebody in ~ubuntu-sponsors reviews (let's say with Needs Fixing) then
> they "grab" that review slot, and ~ubuntu-sponsors no longer has one. I
> think this might cause the entry to disappear from the sponsorship queue
> - for example after the contributor has fixed the issue.

> Any suggestions on what I should do instead?

You don't have to claim the ~ubuntu-sponsors review slot to leave comments
on an MP; indeed, unless you explicitly claim it on behalf of the team, it
remains there.  You can't add yourself as an additional reviewer, but I
think that's fine, it should be one or the other - either you're claiming
the review on behalf of ubuntu-sponsors and then it should be taken out of
the queue and you should be responsible for following through, or you're
*not* taking it out of the queue and then you also don't need to be listed
as a separate approver.

-- 
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 Developer   https://www.debian.org/
slanga...@ubuntu.com vor...@debian.org


signature.asc
Description: PGP signature
-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Symbols files for C++ libraries for Ubuntu main

2023-06-09 Thread Steve Langasek
Hi Seb,

On Fri, Jun 09, 2023 at 02:27:02PM +0200, Sebastien Bacher wrote:
> I would like to ask if there is any chance the MIR team would reconsider
> their position on the topic (at least until the day we have a somewhat
> working solution we can use)?

> which also included those types of changes

> - _Znam@Base 2.0~b2-0ubuntu3
> + _Znaj@Base 2.0~b2-0ubuntu4
> +#MISSING: 2.0~b2-0ubuntu4# _Znam@Base 2.0~b2-0ubuntu3

> I personally don't understand why we have those symbols existing on armhf
> which don't exist on amd64. Nor why _Znam@Base is becoming _Znaj@Base nor
> how we are supposed to handle such cases

Passing them through c++filt may help explain:

$ echo _Znam@Base | c++filt 
operator new[](unsigned long)@Base
$ echo _Znaj@Base | c++filt 
operator new[](unsigned int)@Base
$

There are various C++ functions whose signature will change based on the
architecture word length.

.symbols files support various kinds of globbing etc to be able to express
this logically (e.g., you could say '_Zna[mj]@Base' instead of listing two
different symbols as optional), but as you've found, it's an onerous,
iterative process to identify all the ways C++ symbols vary across
architectures and then encode this in a .symbols file.  And in this case,
the symbol isn't part of the library's public ABI anyway, this is just a
function from the base C++ library!

> 4. doing those tweaks need to be done manually since it's not only applying
> the diff but also adding optional keyword at places, I got one wrong and it
> failed to build again

> add one more symbol specific to risvc
> http://launchpadlibrarian.net/647875197/libcupsfilters_2.0~b2-0ubuntu6_2.0~b2-0ubuntu7.diff.gz

Yep.

> I understand the motivation for wanting a symbol file but I agree with what
> Robie, what's the benefit. In that case we spent a few hours to end up with
> a .symbols which as over 150 '(optional)' entries, that doesn't protect us
> much better than just not having a .symbols or using -c0 but still has a
> high cost.

I wouldn't say that it doesn't protect you.  It's a pain to set up initially
and as you note, you can even have to do further fix-ups as a result of
toolchain changes, as the set of template functions and other C++ sugar from
outside of the library that gets exported as ELF symbols can change.  It
DOES have a high cost, but in the end it provides the same level of
protection against accidental ABI breakage as it does for C libraries.

It would be nice to have better consistent tooling around ABI checking for
C++ libraries.  I think the KDE team had some tools around automating the
generation of symbols files - it does require two passes, first to build on
all archs and then to merge the results.  But in principle that's better
than whack-a-mole.

We could also consider using abi-compliance-checker instead of symbols files
for C++ libraries.  There is a dh-acc debhelper addon, but I've never used
it.  We are currently using abi-compliance-checker for the ABI analysis of
armhf for the move to 64-bit time_t; it's unmaintained upstream, but it does
seem to work pretty well - the vast majority of issues we've encountered
with it, when trying to run it over the entire Ubuntu archive, have been due
to header files that #include headers from packages they don't depend on, or
collections of headers that can't all be included together.  Both of these
are issues of much less significance when it's the maintainer doing the
work.  It would require the same sort of two-pass setup process as the KDE
tools, though, and if it has to be done per-arch (probably), it's more
awkward to set up because a-c-c .dump files aren't ascii that you can scrape
from the build logs of failed builds - but it might be a more reliable tool
over the long term than dpkg-gensymbols for C++ libraries.

Downside: symbols files also let you track what version of a package a
symbol was added in, which lets packages' versioned dependencies on
libraries be no stricter than actually necessary.


I don't speak for the MIR team, I have no objection to them relaxing the
requirement of .symbols files for C++ libraries in main.  Just offering some
suggestions on how we can do a better job of automating C++ ABI checks than
we're doing today.

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 Developer   https://www.debian.org/
slanga...@ubuntu.com vor...@debian.org


signature.asc
Description: PGP signature
-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel


Re: Symbols files for C++ libraries for Ubuntu main

2023-06-09 Thread Sebastien Bacher

Hey there,

We had been struggling with a few of those cases recently in desktop and 
I was going to send an email about the topic then checking the archive I 
found back that discussion that I had forgotten about.


I would like to ask if there is any chance the MIR team would reconsider 
their position on the topic (at least until the day we have a somewhat 
working solution we can use)?



Here is why. Taking  a recent example from desktop and describing the 
experience on one package where we basically had to go through those steps


1. We added a symbols to libcupsfilters as part of the MIR promotion
https://git.launchpad.net/ubuntu/+source/libcupsfilters/commit/debian/libcupsfilters2.symbols?h=applied/ubuntu/devel=c5821fe0

The build failed on armhf because dh_makeshlibs report symbols on armhf 
which do not existing on amd64

https://launchpadlibrarian.net/647850924/buildlog_ubuntu-lunar-armhf.libcupsfilters_2.0~b2-0ubuntu4_BUILDING.txt.gz

which also included those types of changes

- _Znam@Base 2.0~b2-0ubuntu3
+ _Znaj@Base 2.0~b2-0ubuntu4
+#MISSING: 2.0~b2-0ubuntu4# _Znam@Base 2.0~b2-0ubuntu3

I personally don't understand why we have those symbols existing on 
armhf which don't exist on amd64. Nor why _Znam@Base is becoming 
_Znaj@Base nor how we are supposed to handle such cases


2. I tried to help getting that resolved with that upload
http://launchpadlibrarian.net/647856580/libcupsfilters_2.0~b2-0ubuntu4_2.0~b2-0ubuntu5.diff.gz

Which basically add the symbols showing a new on the armhf as 
'(optional)' and also listed those that changes as optional in their 
different variants


3. similar round for riscv64

http://launchpadlibrarian.net/647865001/libcupsfilters_2.0~b2-0ubuntu5_2.0~b2-0ubuntu6.diff.gz

4. doing those tweaks need to be done manually since it's not only 
applying the diff but also adding optional keyword at places, I got one 
wrong and it failed to build again


add one more symbol specific to risvc
http://launchpadlibrarian.net/647875197/libcupsfilters_2.0~b2-0ubuntu6_2.0~b2-0ubuntu7.diff.gz

5. still failed, I had to add another bunch of symbols from the previous 
build log


http://launchpadlibrarian.net/647896999/libcupsfilters_2.0~b2-0ubuntu7_2.0~b2-0ubuntu8.diff.gz

Which finally got us a working build.


I understand the motivation for wanting a symbol file but I agree with 
what Robie, what's the benefit. In that case we spent a few hours to end 
up with a .symbols which as over 150 '(optional)' entries, that doesn't 
protect us much better than just not having a .symbols or using -c0 but 
still has a high cost.
And from experience it is likely that following the next toolchain 
update the .symbols will not match anymore and that those of us who will 
end up having to fix the package build will not understand why and just 
end up applying the diff proposed by dpkg-gensymbols.


Checking on the Debian side, https://wiki.debian.org/UsingSymbolsFiles 
has a 'C++ libraries' section which start by this statement written in 
bold style


> For C++ libraries it is often better not to ship symbols files.

Which means we will often fail at upstreaming such improvements to 
Debian and will have to increase our delta. And I don't blame them, I'm 
not even sure how to deal with the 'the symbols change between 
architectures' out of throwing builds to a ppa to get results and 
iterate and Debian doesn't have the ppa option...


Cheers,
Sebastien Bacher

Le 22/05/2018 à 18:25, Robie Basak a écrit :

On Fri, May 18, 2018 at 08:29:13PM +0200, Matthias Klose wrote:

I completely disagree.  Replacing a somehow suboptimal check with no
check is not an option.

On Fri, May 18, 2018 at 08:22:55PM +0100, Dimitri John Ledkov wrote:

IMHO symbols files should be mandatory for any new libraries
introduced in the archive.

And we should assert symbols files for everything in main, and fix all
the things.

It's 2018, and we really ought to have sensible and strict symbols
files.

Both of these statements on their own state that we must do this work
but don't explain why this is of benefit to Ubuntu. I feel that you need
to justify your position rather than just stating it.

Can you provide examples of where maintaining this delta has actually
helped make Ubuntu better, in the specific case that C++ symbols are
being maintained by Ubuntu in a delta that Debian and upstream have
declined to adopt or postponed adopting? Without examples, we're not
really in a position to assess the trade-off of extra work vs. benefit
to Ubuntu. I don't think we should be maintaining delta unless the
benefit can be articulated and justified.

Separately, I question whether it's in the interest of our project to
spend time on maintaining a quality improvement indefinitely if Debian
and/or upstream decline to take it, and if that particular improvement
is not a high level goal of our project.

Thanks,

Robie
-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 

Re: git-ubuntu MPs in the sponsorship queue

2023-06-09 Thread Robie Basak
On Tue, Jul 05, 2022 at 05:41:04PM +0100, Robie Basak wrote:
> I've arranged for MPs against git-ubuntu repositories to appear in the
> sponsorship queue[1].

I was using the fact that ~ubuntu-sponsors is requested for review in a
git-ubuntu MP to make it appear in the sponsorship queue. But if
somebody in ~ubuntu-sponsors reviews (let's say with Needs Fixing) then
they "grab" that review slot, and ~ubuntu-sponsors no longer has one. I
think this might cause the entry to disappear from the sponsorship queue
- for example after the contributor has fixed the issue.

Any suggestions on what I should do instead?

On the Server Team, we use a review slot for ~canonical-server-reporter
that nobody is a member of in order to avoid this happening. That way
the "marker" remains. But to do this for ~ubuntu-sponsors would mean we
have to use a separate team name.

Separately, there's a bot[1] that actually adds ~ubuntu-sponsors as a
reviewer if there is nobody else, which I think his how most git-ubuntu
MPs that need sponsoring are getting to the queue in the first place.
Maybe that could subscribe ~ubuntu-sponsors-reporter instead, and I
could adjust the sponsorship queue to display both?

Robie

[1] 
https://git.launchpad.net/~ubuntu-server/+git/ubuntu-helpers/tree/rbasak/lp_auto_sponsor.py


signature.asc
Description: PGP signature
-- 
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel