Bug#1064950: AW: Bug#1064950: apache2: (Legacy?) "Depends: apache2-data (= ${source:Version})," in debian/control breaks binNMU builds.

2024-03-03 Thread Sebastian Ramacher
On 2024-03-04 06:19:58 +, Warlich, Christof wrote:
> Sebastian Ramacher wrote:
> > This is wrong. apache2-data is an Architecture: all package,
> > but apache2 is Architecture: any. So using ${source:Version}
> > here is correct. Note that Debian does not currently support
> > binNMUs for Architecture: all packages, so apache2-data will
> > never have a +bX version.
> 
> Thanks for that clarification.
> 
> This is somewhat confusing for someone not doing package builds as a daily 
> profession: If just doing a "dpkg-buildpackage -us -uc" on the apache2 
> sources _with_ the +bX extension, the apache2-data binary package _does_ get 
> the +bX extension as well, at least with my build, causing the issue that I 
> described initially.

For binNMUs you'll need to pass "-B" at least, but see below.

> Thus, as much as I think I've leaned so far, binNMU builds on source packages 
> that also produce Architekture: all binary packages must always be built 
> separately from sources without the +bX extension for the Architecture: all 
> binary packages, whereras the architecture-dependent binary packages may be 
> built from a source package with a +bX extension, right?

Not exactly. The source packages are not changed for binNMUs. This is
handled via sbuild's --binNMU-* options to set the changelog and the
version. Specifically, these options imply that Arch: all binaries are
not built.

> If this assumption is true, then why is the Debian build system (i.e. 
> dpkg-buildpackage) not smart enough to simply ignore an existing +bX 
> extension for Architecture: all binary packages? IMHO, this would simplify 
> matters, as it would have avoided the pitfall that I stumbled into altogether.

binNMUs are handled a layer above. sbuild will pass the correct options
to dpkg-buildpackage to build binNMUs. If you are interested in having
binNMU builds for your own infrastructure, you'll probably need to take
a look at the sbuild source to see how it is implemented.

Cheers
-- 
Sebastian Ramacher



Bug#1064950: AW: Bug#1064950: apache2: (Legacy?) "Depends: apache2-data (= ${source:Version})," in debian/control breaks binNMU builds.

2024-03-03 Thread Warlich, Christof
Sebastian Ramacher wrote:
> This is wrong. apache2-data is an Architecture: all package,
> but apache2 is Architecture: any. So using ${source:Version}
> here is correct. Note that Debian does not currently support
> binNMUs for Architecture: all packages, so apache2-data will
> never have a +bX version.

Thanks for that clarification.

This is somewhat confusing for someone not doing package builds as a daily 
profession: If just doing a "dpkg-buildpackage -us -uc" on the apache2 sources 
_with_ the +bX extension, the apache2-data binary package _does_ get the +bX 
extension as well, at least with my build, causing the issue that I described 
initially.

Thus, as much as I think I've leaned so far, binNMU builds on source packages 
that also produce Architekture: all binary packages must always be built 
separately from sources without the +bX extension for the Architecture: all 
binary packages, whereras the architecture-dependent binary packages may be 
built from a source package with a +bX extension, right?

If this assumption is true, then why is the Debian build system (i.e. 
dpkg-buildpackage) not smart enough to simply ignore an existing +bX extension 
for Architecture: all binary packages? IMHO, this would simplify matters, as it 
would have avoided the pitfall that I stumbled into altogether.

Please note that I my main goal is to better understand how to do it right for 
future builds.