diff --git a/namcap/001-disable-some-things.patch b/namcap/001-disable-some-things.patch new file mode 100644 index 00000000..6fc9a3d0 --- /dev/null +++ b/namcap/001-disable-some-things.patch @@ -0,0 +1,43 @@ +--- namcap-3.2.10/Namcap/rules/__init__.py.orig 2019-12-15 19:37:54.000000000 +0100 ++++ namcap-3.2.10/Namcap/rules/__init__.py 2020-05-29 08:05:59.885381000 +0200 +@@ -23,7 +23,7 @@ + # Tarball rules + from . import ( + anyelf, +- elffiles, ++ #elffiles, + emptydir, + externalhooks, + fhs, +@@ -36,17 +36,17 @@ + javafiles, + kdeprograms, + libtool, +- licensepkg, ++ #licensepkg, + lotsofdocs, + missingbackups, + pathdepends, + perllocal, + permissions, + py_mtime, +- rpath, ++ #rpath, + scrollkeeper, + shebangdepends, +- sodepends, ++ #sodepends, + symlink, + systemdlocation, + unusedsodepends +--- namcap-3.2.10/setup.py.orig 2019-12-15 19:37:54.000000000 +0100 ++++ namcap-3.2.10/setup.py 2020-05-29 07:50:19.848393400 +0200 +@@ -16,7 +16,7 @@ + + py_modules=["namcap"], + packages = find_packages(), +- scripts=["namcap", 'parsepkgbuild'], ++ scripts=["namcap.sh", 'parsepkgbuild'], + test_suite = "Namcap.tests", + data_files=DATAFILES) + \ No newline at end of file diff --git a/namcap/002-force-msys-python.patch b/namcap/002-force-msys-python.patch new file mode 100644 index 00000000..aa1fc3db --- /dev/null +++ b/namcap/002-force-msys-python.patch @@ -0,0 +1,8 @@ +--- namcap-3.2.10/namcap.sh.orig 2020-05-29 08:10:32.607965100 +0200 ++++ namcap-3.2.10/namcap.sh 2020-05-29 08:10:55.469396300 +0200 +@@ -36,4 +36,4 @@ + fi + done + +-/usr/bin/env python3 -m namcap ${args} ++/usr/bin/python -m namcap ${args} diff --git a/namcap/003-handle-no-source.patch b/namcap/003-handle-no-source.patch new file mode 100644 index 00000000..258d127c --- /dev/null +++ b/namcap/003-handle-no-source.patch @@ -0,0 +1,35 @@ +From 05dbc1f226980a46001ed472ca8e34c83c8128c0 Mon Sep 17 00:00:00 2001 +From: Michael Straube +Date: Mon, 20 Jan 2020 10:57:59 +0100 +Subject: Fix makedepends.py for PKGBUILD without source array + +Namcap errors when a PKGBUILD has no source array. Test if the PKGBUILD +has a source array in the VCSMakedepends rule to avoid such errors. + +Fixes FS#65042 + +Signed-off-by: Michael Straube +Signed-off-by: Kyle Keen +--- + Namcap/rules/makedepends.py | 3 +++ + 1 file changed, 3 insertions(+) + +(limited to 'Namcap/rules/makedepends.py') + +diff --git a/Namcap/rules/makedepends.py b/Namcap/rules/makedepends.py +index 53676c2..380a089 100644 +--- a/Namcap/rules/makedepends.py ++++ b/Namcap/rules/makedepends.py +@@ -56,6 +56,9 @@ class VCSMakedepends(PkgbuildRule): + missing = [] + protocols = set() + ++ if 'source' not in pkginfo: ++ return ++ + for s in pkginfo["source"]: + p = s.split("::", 1)[-1] + p = p.split("://", 1)[0] +-- +cgit v1.2.3-1-gf6bb5 + diff --git a/namcap/PKGBUILD b/namcap/PKGBUILD new file mode 100644 index 00000000..4bf13ba0 --- /dev/null +++ b/namcap/PKGBUILD @@ -0,0 +1,49 @@ +# Maintainer : Christoph Reiter + +pkgname=namcap +pkgver=3.2.10 +pkgrel=1 +pkgdesc="A Pacman package analyzer" +arch=('any') +url="https://projects.archlinux.org/namcap.git/" +license=('GPL') +depends=('python' + 'python-pyalpm' + 'binutils') +makedepends=('python-setuptools') +source=(https://sources.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.gz + '001-disable-some-things.patch' + '002-force-msys-python.patch' + '003-handle-no-source.patch' + 'namcap.sh') +sha256sums=('d40479dd533e1171987579c5e11a09d55628addaf891256389839e1701117e06' + 'b3251592be11fcc7a667531c2b84bc1bbce25e29c7546d54b99a509b336dc429' + 'e45456455412eee2838069cfb0079925dddc997e0cc887f66899c72ac1d93aad' + '8795bdf9e2ce0faad29be5a281d46f365d2ac1e19535874ec8899ddc2b3a6e7c' + '875e4ddd70ad8f2cc26cdf9512f18872a76e8f5496e347b3a2701fc4f3fec0aa') +noextract=(${pkgname}-${pkgver}.tar.gz) + +prepare() { + tar -xzvf ${pkgname}-${pkgver}.tar.gz || true + cp namcap.sh "${pkgname}-${pkgver}" + cd ${pkgname}-${pkgver} + + patch -Nbp1 -i "${srcdir}/001-disable-some-things.patch" + patch -Nbp1 -i "${srcdir}/002-force-msys-python.patch" + patch -Nbp1 -i "${srcdir}/003-handle-no-source.patch" +} + +build() { + cd ${pkgname}-${pkgver} + + /usr/bin/python setup.py build +} + +package() { + cd ${pkgname}-${pkgver} + + /usr/bin/python setup.py install --prefix=/usr --root="${pkgdir}" + + mv "${pkgdir}/usr/bin/namcap.sh" "${pkgdir}/usr/bin/namcap" +} + diff --git a/namcap/namcap.sh b/namcap/namcap.sh new file mode 100644 index 00000000..ea0bc947 --- /dev/null +++ b/namcap/namcap.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +args='' +tmp=$(mktemp -d --tmpdir namcap.XXXXXXXXXX) +cleanup() { + rm -rf "${tmp}" +} +trap 'cleanup' 0 + +for arg in "${@}"; do + if echo "${arg}" | grep -q -E "^.+\.pkg\.tar\..+$" && [ -f "${arg}" ]; then + + extra_opts='' + case "${arg##*.}" in + gz|z|Z) cmd='gzip' ;; + bz2|bz) cmd='bzip2' ;; + xz) cmd='xz' ;; + lzo) cmd='lzop' ;; + lrz) cmd='lrzip' + extra_opts="-q -o -" ;; + lz4) cmd='lz4' + extra_opts="-q" ;; + lz) cmd='lzip' + extra_opts="-q" ;; + zst) cmd='zstd' + extra_opts="-q" ;; + *) echo 'Unsupported compression'; exit 1;; + esac + + tar="${tmp}/$(basename "${arg%.*}")" + $cmd -dcf $extra_opts "${arg}" > "${tar}" + + args="${args} ${tar}" + else + args="${args} ${arg}" + fi +done + +/usr/bin/env python3 -m namcap ${args}