summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Grande2021-01-10 18:14:13 -0500
committerVincent Grande2021-01-10 18:14:13 -0500
commit003ec35820bf14d6c5f0c3e590039832c4bb691b (patch)
treeac216d2cb545345362f8608683a0d92dbb4621f0
downloadaur-003ec35820bf14d6c5f0c3e590039832c4bb691b.tar.gz
initial upload
-rw-r--r--.SRCINFO24
-rw-r--r--PKGBUILD62
-rw-r--r--fs66093.patch60
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
+