Bug#914419: debhelper mustn't set pass V to make
On Sun, 2018-11-25 at 21:39 +0200, Adrian Bunk wrote: > On Sun, Nov 25, 2018 at 07:21:17PM +, Luca Boccassi wrote: > > ... > > In general, I realise that not every makefile might implement > > VERBOSE/V, but I think it's the most common pattern, so I think > > it's > > the best chance we have to support it automagically via debhelper. > > If > > some package uses a different set of variables for verbosity (or > > none > > at all), then they'll have to use overrides, but they'd be no worse > > than now - of course unless there are more breakages, in which case > > we > > can revert/use a compat level. Does this sound like a plan? > > ... > > The problem is not about finding the correct variable for verbosity. > > The problem is that Makefiles are allowed to use variables like V or > VERBOSE for whatever purpose they want, and with whatever values > they > want. > > It is not even clear that all breakages are FTBFS, > we might end up with misbuilt packages due to that. True, I didn't think of other more subtle failures. I've updated the MR to revert the change. It's a pity, but I guess the lesser evil is to live with having to add more boilerplate to d/rules. -- Kind regards, Luca Boccassi signature.asc Description: This is a digitally signed message part
Bug#914419: debhelper mustn't set pass V to make
On Sun, Nov 25, 2018 at 07:21:17PM +, Luca Boccassi wrote: >... > In general, I realise that not every makefile might implement > VERBOSE/V, but I think it's the most common pattern, so I think it's > the best chance we have to support it automagically via debhelper. If > some package uses a different set of variables for verbosity (or none > at all), then they'll have to use overrides, but they'd be no worse > than now - of course unless there are more breakages, in which case we > can revert/use a compat level. Does this sound like a plan? >... The problem is not about finding the correct variable for verbosity. The problem is that Makefiles are allowed to use variables like V or VERBOSE for whatever purpose they want, and with whatever values they want. It is not even clear that all breakages are FTBFS, we might end up with misbuilt packages due to that. > Kind regards, > Luca Boccassi cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed
Bug#914419: debhelper mustn't set pass V to make
On Sun, 2018-11-25 at 14:12 +0200, Adrian Bunk wrote: > On Sun, Nov 25, 2018 at 11:58:57AM +, Luca Boccassi wrote: > > On Sun, 25 Nov 2018, 11:30 Niels Thykier > > > > Adrian Bunk: > > > > Package: debhelper > > > > Version: 11.5.2 > > > > Severity: serious > > > > > > > > > > > > > > https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd6 > > > 4/apcupsd.html > > > > > > > > ... > > > > dh clean --with autoreconf > > > > dh_auto_clean > > > > make V=1 -j16 clean > > > > make[1]: Entering directory '/build/1st/apcupsd-3.14.14' > > > > 1find . -depth \ > > > > \( -name -o -name -o -name \*.a \) \ > > > > -exec " CLEAN" \{\} \; -exec \{\} \; > > > > /bin/sh: 1: 1find: not found > > > > make[1]: *** [autoconf/targets.mak:98: clean] Error 127 > > > > > > > > > > > > > > > > > > https://sources.debian.org/src/apcupsd/3.14.14-2/autoconf/targets > > > .mak/#L98 > > > > > > > > > > > > Using V=1 for getting verbose build output is a relatively > > > > recent convention followed by some software. > > > > > > > > It is not something that is safe to use everywhere. > > > > > > > > > > Hi, > > > > > > Adding Luca to this report as it affect a change by Luca. > > > > > > @Luca: What is your take on this? Should we roll back on this, > > > guard it > > > by a compat level or something else? > > > > > > Thanks, > > > ~Niels > > > > > > > Hi Niels and Adrian, > > Hi Luca, > > > Before considering other options, would using VERBOSE=1 instead of > > V=1 > > work? I'm afk until later today so I can't check right now if gmake > > accepts > > it, iirc it does but I could be confusing it with other tools. > > make happily accepts them, but this misses the problem. > > None of these options is supported directly by make. > > make just passes such options to the package-specific > Makefile that might do something or nothing with them. Sorry, was on the phone and didn't properly read the snippet nor the link, thought it was make itself complaining (for some reasons - it didn't make much sense actually). Still, looking at that makefile, it would seem that using VERBOSE would do the right thing: https://sources.debian.org/src/apcupsd/3.14.14-2/autoconf/targets.mak/#L20 It would seem less likely, intuitively, that VERBOSE would be used in a similar way that would break the build if set to 1/0, so perhaps it's still the right fix? It does work with apcupsd for example, just tested it. iproute2, which is the package I added this for originally, works just fine likewise. In general, I realise that not every makefile might implement VERBOSE/V, but I think it's the most common pattern, so I think it's the best chance we have to support it automagically via debhelper. If some package uses a different set of variables for verbosity (or none at all), then they'll have to use overrides, but they'd be no worse than now - of course unless there are more breakages, in which case we can revert/use a compat level. Does this sound like a plan? If so, here's the MR: https://salsa.debian.org/debian/debhelper/merge_requests/16 -- Kind regards, Luca Boccassi signature.asc Description: This is a digitally signed message part
Bug#914419: debhelper mustn't set pass V to make
On Sun, Nov 25, 2018 at 11:58:57AM +, Luca Boccassi wrote: > On Sun, 25 Nov 2018, 11:30 Niels Thykier > > Adrian Bunk: > > > Package: debhelper > > > Version: 11.5.2 > > > Severity: serious > > > > > > > > https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/apcupsd.html > > > > > > ... > > > dh clean --with autoreconf > > >dh_auto_clean > > > make V=1 -j16 clean > > > make[1]: Entering directory '/build/1st/apcupsd-3.14.14' > > > 1find . -depth \ > > > \( -name -o -name -o -name \*.a \) \ > > > -exec " CLEAN" \{\} \; -exec \{\} \; > > > /bin/sh: 1: 1find: not found > > > make[1]: *** [autoconf/targets.mak:98: clean] Error 127 > > > > > > > > > > > https://sources.debian.org/src/apcupsd/3.14.14-2/autoconf/targets.mak/#L98 > > > > > > > > > Using V=1 for getting verbose build output is a relatively > > > recent convention followed by some software. > > > > > > It is not something that is safe to use everywhere. > > > > > > > Hi, > > > > Adding Luca to this report as it affect a change by Luca. > > > > @Luca: What is your take on this? Should we roll back on this, guard it > > by a compat level or something else? > > > > Thanks, > > ~Niels > > > > Hi Niels and Adrian, Hi Luca, > Before considering other options, would using VERBOSE=1 instead of V=1 > work? I'm afk until later today so I can't check right now if gmake accepts > it, iirc it does but I could be confusing it with other tools. make happily accepts them, but this misses the problem. None of these options is supported directly by make. make just passes such options to the package-specific Makefile that might do something or nothing with them. > Kind regards, > Luca Boccassi cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed
Bug#914419: debhelper mustn't set pass V to make
On Sun, 25 Nov 2018, 11:30 Niels Thykier Adrian Bunk: > > Package: debhelper > > Version: 11.5.2 > > Severity: serious > > > > > https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/apcupsd.html > > > > ... > > dh clean --with autoreconf > >dh_auto_clean > > make V=1 -j16 clean > > make[1]: Entering directory '/build/1st/apcupsd-3.14.14' > > 1find . -depth \ > > \( -name -o -name -o -name \*.a \) \ > > -exec " CLEAN" \{\} \; -exec \{\} \; > > /bin/sh: 1: 1find: not found > > make[1]: *** [autoconf/targets.mak:98: clean] Error 127 > > > > > > > https://sources.debian.org/src/apcupsd/3.14.14-2/autoconf/targets.mak/#L98 > > > > > > Using V=1 for getting verbose build output is a relatively > > recent convention followed by some software. > > > > It is not something that is safe to use everywhere. > > > > Hi, > > Adding Luca to this report as it affect a change by Luca. > > @Luca: What is your take on this? Should we roll back on this, guard it > by a compat level or something else? > > Thanks, > ~Niels > Hi Niels and Adrian, Before considering other options, would using VERBOSE=1 instead of V=1 work? I'm afk until later today so I can't check right now if gmake accepts it, iirc it does but I could be confusing it with other tools. Kind regards, Luca Boccassi >
Bug#914419: debhelper mustn't set pass V to make
Adrian Bunk: > Package: debhelper > Version: 11.5.2 > Severity: serious > > https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/apcupsd.html > > ... > dh clean --with autoreconf >dh_auto_clean > make V=1 -j16 clean > make[1]: Entering directory '/build/1st/apcupsd-3.14.14' > 1find . -depth \ > \( -name -o -name -o -name \*.a \) \ > -exec " CLEAN" \{\} \; -exec \{\} \; > /bin/sh: 1: 1find: not found > make[1]: *** [autoconf/targets.mak:98: clean] Error 127 > > > https://sources.debian.org/src/apcupsd/3.14.14-2/autoconf/targets.mak/#L98 > > > Using V=1 for getting verbose build output is a relatively > recent convention followed by some software. > > It is not something that is safe to use everywhere. > Hi, Adding Luca to this report as it affect a change by Luca. @Luca: What is your take on this? Should we roll back on this, guard it by a compat level or something else? Thanks, ~Niels
Bug#914419: debhelper mustn't set pass V to make
Package: debhelper Version: 11.5.2 Severity: serious https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/apcupsd.html ... dh clean --with autoreconf dh_auto_clean make V=1 -j16 clean make[1]: Entering directory '/build/1st/apcupsd-3.14.14' 1find . -depth \ \( -name -o -name -o -name \*.a \) \ -exec " CLEAN" \{\} \; -exec \{\} \; /bin/sh: 1: 1find: not found make[1]: *** [autoconf/targets.mak:98: clean] Error 127 https://sources.debian.org/src/apcupsd/3.14.14-2/autoconf/targets.mak/#L98 Using V=1 for getting verbose build output is a relatively recent convention followed by some software. It is not something that is safe to use everywhere.