[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1001677: lintian: check for: "cd ... py3versions -r" in autopkgtest scripts



Hi Julian,

On Tue, Dec 14, 2021 at 06:49:12AM +0000, Julian Gilbey wrote:
> I discovered that in several of my autopkgtest scripts, and in various
> other packages in the archive, the following pattern appears:

I think (although I'm not an authoritative voice of any kind here) that
you you are using the wrong option altogether actually.

> cd somewhere
> ...
> for py in $(py3versions -r 2>/dev/null)
> ...
> 
> Unfortunately, this silently fails,

Of course it's silent.  you are asking something and then ignoring the
output…

> is given.  The "2>/dev/null" is nevertheless usually required even
> when run from the correct directory to silence the warning:
> 
> py3versions: no X-Python3-Version in control file, using supported versions

that's because you are using the wrong option.

You should use `-s` instead of `-r` in those cases, and drop the
2>/dev/null.
Besides, even if you keep the -r it wouldn't be much of a problem: $()
only captures stdout, stderr just gets printed and doesn't interfere
with the for loop or such, so why are you doing this?

-r is used by dh_python and other build scripts because they have to
support all packages, but IMHO you really should be using -s if you know
you don't have X-Python3-Version in your package and you *really* want
to just suppose whatever are the current supported python3 versions.

> The corrected script should read something like:
> 
> ...
> for py in $(py3versions -r 2>/dev/null); do
>     cd somewhere
> ...


And then, `py3versions -s` will "just work" wherever you are, no need to
do this fairly complicated check.

> A regex such as /\bcd\b.*py3versions\s+-r/s applied to the entire
> content of debian/tests/control and every other file in debian/tests
> should catch this issue.

Yeah sure, and then what about pushd ?  Doing this kind of check in
lintian is fraught with false positives, so I recommend the lintian
maintainers don't try to do this.


However, instead, I'd suggest that, after checking with the
debian-python@ lists, we could tell people to use -s if and only if
X-Python3-Version is not defined (conversely, we should warn if packages
use -s if X-Python3-Version *is* defined, probably).

-- 
regards,
                        Mattia Rizzolo

GPG Key: 66AE 2B4A FCCF 3F52 DA18  4D18 4B04 3FCD B944 4540      .''`.
More about me:  https://mapreri.org                             : :'  :
Launchpad user: https://launchpad.net/~mapreri                  `. `'`
Debian QA page: https://qa.debian.org/developer.php?login=mattia  `-

Attachment: signature.asc
Description: PGP signature


Reply to: