On Thu, 25 Jan 2018 13:50:19 -0500,
Dave Reisner wrote:On Thu, Jan 25, 2018 at 01:31:45PM -0500, Luke Shumaker wrote:
> From: Luke Shumaker <lukeshu@parabola.nu>
>
> https://bugs.archlinux.org/task/57193
>
> If the user mistakenly passes in some other (non-package, non-PKGBUILD)
> file, instead of refusing to process it (saying
> "Error: Cannot process ${filename}"), it will now try to parse it as a
> PKGBUILD, probably encounter and print at least one error, but finally say
> "Error: ${filename} is not a valid PKGBUILD". This is actually probably
> *more* helpful to a confused user who passed in the wrong file.
> ---
> namcap.py | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/namcap.py b/namcap.py
> index b62a2fa..fd62d3c 100755
> --- a/namcap.py
> +++ b/namcap.py
> @@ -248,9 +248,7 @@ for package in packages:
>
> if os.path.isfile(package) and tarfile.is_tarfile(package):
> process_realpackage(package, active_modules)
> - elif package.endswith('PKGBUILD'):
> + else:
Install files? Other assets? Doesn't this mean we assume they're
PKGBUILDs?--
Yes, it does. It's already the case that running namcap on those
install files and other assets is an error.
Though, this will make those errors much more... verbose.
For example, running `namcap *` in pacman's package directory
currently looks like:
$ namcap *
PKGBUILD (pacman) W: Reference to i686 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to x86_64 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to i686 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to i686 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to i686 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to i686 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to x86_64 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to x86_64 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to x86_64 should be changed to $CARCH
Error: Cannot process makepkg.conf
Error: Cannot process pacman.conf.i686
Error: Cannot process pacman.conf.x86_64
But this patch changes that to:
$ namcap *
PKGBUILD (pacman) W: Reference to i686 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to x86_64 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to i686 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to i686 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to i686 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to i686 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to x86_64 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to x86_64 should be changed to $CARCH
PKGBUILD (pacman) W: Reference to x86_64 should be changed to $CARCH
Error: error: invalid package file
Error: makepkg.conf is not a valid PKGBUILD
Error: error: invalid package file
Error: pacman.conf.i686: line 9: [options]: command not found
pacman.conf.i686: line 18: HoldPkg: command not found
pacman.conf.i686: line 23: Architecture: command not found
pacman.conf.i686: line 36: CheckSpace: command not found
pacman.conf.i686: line 41: SigLevel: command not found
pacman.conf.i686: line 42: LocalFileSigLevel: command not found
pacman.conf.i686: line 75: [core]: command not found
pacman.conf.i686: line 76: Include: command not found
pacman.conf.i686: line 78: [extra]: command not found
pacman.conf.i686: line 79: Include: command not found
pacman.conf.i686: line 84: [community]: command not found
pacman.conf.i686: line 85: Include: command not found
Error: pacman.conf.i686 is not a valid PKGBUILD
Error: error: invalid package file
Error: pacman.conf.x86_64: line 9: [options]: command not found
pacman.conf.x86_64: line 18: HoldPkg: command not found
pacman.conf.x86_64: line 23: Architecture: command not found
pacman.conf.x86_64: line 36: CheckSpace: command not found
pacman.conf.x86_64: line 41: SigLevel: command not found
pacman.conf.x86_64: line 42: LocalFileSigLevel: command not found
pacman.conf.x86_64: line 75: [core]: command not found
pacman.conf.x86_64: line 76: Include: command not found
pacman.conf.x86_64: line 78: [extra]: command not found
pacman.conf.x86_64: line 79: Include: command not found
pacman.conf.x86_64: line 84: [community]: command not found
pacman.conf.x86_64: line 85: Include: command not found
Error: pacman.conf.x86_64 is not a valid PKGBUILD
There is a possible safety concern. namcap will call `parsepkgbuild`
on the file, which does evaluate the file as a bash script; it is
conceivable that it this could accidentally do something bad,
depending on what the file is. However, I don't believe this to be a
legitimate concern because of the rbash restricted environment that it
is executed in.
Happy hacking,
~ Luke Shumaker