diff options
author | Vincent Grande | 2021-01-10 18:14:13 -0500 |
---|---|---|
committer | Vincent Grande | 2021-01-10 18:14:13 -0500 |
commit | 003ec35820bf14d6c5f0c3e590039832c4bb691b (patch) | |
tree | ac216d2cb545345362f8608683a0d92dbb4621f0 | |
download | aur-003ec35820bf14d6c5f0c3e590039832c4bb691b.tar.gz |
initial upload
-rw-r--r-- | .SRCINFO | 24 | ||||
-rw-r--r-- | PKGBUILD | 62 | ||||
-rw-r--r-- | fs66093.patch | 60 |
3 files changed, 146 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..2d93502f1965 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,24 @@ +pkgbase = procps-ng-nosystemd-minimal-git + pkgdesc = Utilities for monitoring your system and its processes + pkgver = 3.3.16 + pkgrel = 1 + url = https://gitlab.com/procps-ng/procps + arch = x86_64 + license = GPL + license = LGPL + depends = ncurses + provides = procps + provides = procps-ng + provides = sysvinit-tools + conflicts = procps + conflicts = procps-ng + conflicts = sysvinit-tools + replaces = procps + replaces = sysvinit-tools + source = git+https://gitlab.com/procps-ng/procps.git + source = fs66093.patch + sha256sums = SKIP + sha256sums = SKIP + +pkgname = procps-ng-nosystemd-minimal-git + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..8d989451a4b2 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,62 @@ +# Maintainer: Vincent Grande <shoober420@gmail.com> +# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org> +# Contributor: Gaetan Bisson <bisson@archlinux.org> +# Contributor: Eric Bélanger <eric@archlinux.org> + +pkgname=procps-ng-nosystemd-minimal-git +pkgver=3.3.16 +pkgrel=1 +pkgdesc='Utilities for monitoring your system and its processes' +url='https://gitlab.com/procps-ng/procps' +license=(GPL LGPL) +arch=(x86_64) +depends=(ncurses) +conflicts=(procps procps-ng sysvinit-tools) +provides=(procps procps-ng sysvinit-tools) +replaces=(procps sysvinit-tools) +source=("git+https://gitlab.com/procps-ng/procps.git" + fs66093.patch) +sha256sums=('SKIP' + 'SKIP') + +pkgver() { + cd procps-ng + git describe --tags | sed 's/-/+/g' +} + +prepare() { + cd procps-ng + sed 's:<ncursesw/:<:g' -i watch.c + + # pgrep: check sanity of SC_ARG_MAX + # https://bugs.archlinux.org/task/66093 + patch -p1 -i ../fs66093.patch +} + +build() { + cd procps-ng + + ./autogen.sh + ./configure \ + --prefix=/usr \ + --exec-prefix=/ \ + --sysconfdir=/etc \ + --libdir=/usr/lib \ + --bindir=/usr/bin \ + --sbindir=/usr/bin \ + --enable-watch8bit \ + --without-systemd \ + --disable-modern-top \ + --disable-kill \ + --disable-libselinux \ + --without-elogind \ + --disable-numa \ + --disable-whining + + make +} + +package() { + cd procps-ng + make DESTDIR="$pkgdir" install +} diff --git a/fs66093.patch b/fs66093.patch new file mode 100644 index 000000000000..57a9346e84ad --- /dev/null +++ b/fs66093.patch @@ -0,0 +1,60 @@ +From bb96fc42956c9ed926a1b958ab715f8b4a663dec Mon Sep 17 00:00:00 2001 +From: Craig Small <csmall@dropbear.xyz> +Date: Sun, 5 Jan 2020 15:05:55 +1100 +Subject: [PATCH] pgrep: check sanity of SC_ARG_MAX + +A kernel change means we cannot trust what sysconf(SC_ARG_MAX) +returns. We clamp it so its more than 4096 and less than 128*1024 +which is what findutils does. + +References: + procps-ng/procps#152 + https://git.savannah.gnu.org/cgit/findutils.git/tree/lib/buildcmd.c#n535 + https://lwn.net/Articles/727862/ +--- + pgrep.c | 22 +++++++++++++++++++++- + 1 file changed, 21 insertions(+), 1 deletion(-) + +diff --git a/pgrep.c b/pgrep.c +index 01563db..bde7448 100644 +--- a/pgrep.c ++++ b/pgrep.c +@@ -485,6 +485,26 @@ static regex_t * do_regcomp (void) + return preg; + } + ++/* ++ * SC_ARG_MAX used to return the maximum size a command line can be ++ * however changes to the kernel mean this can be bigger than we can ++ * alloc. Clamp it to 128kB like xargs and friends do ++ * Should also not be smaller than POSIX_ARG_MAX which is 4096 ++ */ ++static size_t get_arg_max(void) ++{ ++#define MIN_ARG_SIZE 4096u ++#define MAX_ARG_SIZE (128u * 1024u) ++ ++ size_t val = sysconf(_SC_ARG_MAX); ++ ++ if (val < MIN_ARG_SIZE) ++ val = MIN_ARG_SIZE; ++ if (val > MAX_ARG_SIZE) ++ val = MAX_ARG_SIZE; ++ ++ return val; ++} + static struct el * select_procs (int *num) + { + PROCTAB *ptp; +@@ -497,7 +517,7 @@ static struct el * select_procs (int *num) + regex_t *preg; + pid_t myself = getpid(); + struct el *list = NULL; +- long cmdlen = sysconf(_SC_ARG_MAX) * sizeof(char); ++ long cmdlen = get_arg_max() * sizeof(char); + char *cmdline = xmalloc(cmdlen); + char *cmdsearch = xmalloc(cmdlen); + char *cmdoutput = xmalloc(cmdlen); +-- +2.26.2 + |