From 4ae2235e33aa97e05965e39232d22cbe0d2cb6dc Mon Sep 17 00:00:00 2001 From: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> Date: Sat, 7 Aug 2021 16:39:49 +0200 Subject: pkgs/sternenseemann/mandoc: update to today's CVS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The READ_ALLOWED_PATH patch was applied 🥳 --- pkgs/sternenseemann/default.nix | 7 +- pkgs/sternenseemann/patches/mandoc-nix-store.patch | 133 --------------------- 2 files changed, 3 insertions(+), 137 deletions(-) delete mode 100644 pkgs/sternenseemann/patches/mandoc-nix-store.patch diff --git a/pkgs/sternenseemann/default.nix b/pkgs/sternenseemann/default.nix index 45296ad5..ec4ef793 100644 --- a/pkgs/sternenseemann/default.nix +++ b/pkgs/sternenseemann/default.nix @@ -96,16 +96,15 @@ lib.fix (self: { # patched packages mandoc = pkgs.mandoc.overrideAttrs (old: rec { src = pkgs.fetchcvs { - sha256 = "13dz321f7fyqkz71xgyk42m4la9phqrijs9phn6icarnqrfi9fpr"; - date = "2021-08-06"; + date = "2021-08-08"; + sha256 = "0g3hzhngklgxcyfc7mp6gq129chhgkl6z0i7r872iri4d9dq59sg"; cvsRoot = "anoncvs@mandoc.bsd.lv:/cvs"; module = "mandoc"; }; + patches = []; version = "unstable-${src.date}"; # actually early but idc # fix makewhatis(1) skipping all man pages that # are symlinks to /nix/store - patches = [ ./patches/mandoc-nix-store.patch ]; - patchFlags = [ "-p0" ]; preConfigure = old.preConfigure + '' echo READ_ALLOWED_PATH=\"${builtins.storeDir}\" >> configure.local ''; diff --git a/pkgs/sternenseemann/patches/mandoc-nix-store.patch b/pkgs/sternenseemann/patches/mandoc-nix-store.patch deleted file mode 100644 index 2e225241..00000000 --- a/pkgs/sternenseemann/patches/mandoc-nix-store.patch +++ /dev/null @@ -1,133 +0,0 @@ -Index: configure -=================================================================== -RCS file: /home/cvs/mandoc/mandoc/configure,v -retrieving revision 1.77 -diff -u -p -r1.77 configure ---- configure 20 Jul 2020 16:57:30 -0000 1.77 -+++ configure 5 Aug 2021 11:42:59 -0000 -@@ -107,7 +107,7 @@ BIN_FROM_SBIN= - INCLUDEDIR= - LIBDIR= - MANDIR= --HOMEBREWDIR= -+READ_ALLOWED_PATH= - - WWWPREFIX="/var/www" - HTDOCDIR= -@@ -461,7 +461,8 @@ echo "#define MANPATH_DEFAULT \"${MANPAT - echo "#define OSENUM ${OSENUM}" - [ -n "${OSNAME}" ] && echo "#define OSNAME \"${OSNAME}\"" - [ -n "${UTF8_LOCALE}" ] && echo "#define UTF8_LOCALE \"${UTF8_LOCALE}\"" --[ -n "${HOMEBREWDIR}" ] && echo "#define HOMEBREWDIR \"${HOMEBREWDIR}\"" -+[ -n "${READ_ALLOWED_PATH}" ] \ -+ && echo "#define READ_ALLOWED_PATH \"${READ_ALLOWED_PATH}\"" - [ ${HAVE_ATTRIBUTE} -eq 0 ] && echo "#define __attribute__(x)" - [ ${HAVE_EFTYPE} -eq 0 ] && echo "#define EFTYPE EINVAL" - [ ${HAVE_O_DIRECTORY} -eq 0 ] && echo "#define O_DIRECTORY 0" -Index: configure.local.example -=================================================================== -RCS file: /home/cvs/mandoc/mandoc/configure.local.example,v -retrieving revision 1.39 -diff -u -p -r1.39 configure.local.example ---- configure.local.example 20 Jul 2020 16:57:30 -0000 1.39 -+++ configure.local.example 5 Aug 2021 11:43:00 -0000 -@@ -209,14 +209,28 @@ INSTALL_LIB="${INSTALL} -m 0444" - INSTALL_MAN="${INSTALL} -m 0444" - INSTALL_DATA="${INSTALL} -m 0444" - --# When using the "homebrew" package manager on Mac OS X, the actual --# manuals are located in a so-called "cellar" and only symlinked --# into the manual trees. To allow mandoc to follow such symlinks, --# you have to specify the physical location of the cellar as returned --# by realpath(3), for example: -+# By default, makewhatis(8) can only read from the paths passed on the -+# command line or configured in man.conf(5). -+# But some package managers on some operating systems store manual pages -+# in separate "cellar" or "store" directories and only symlink them -+# into the manual trees. -+# To support one or more such package managers, give makewhatis(8) -+# read access to the cellars and stores on your system, in the form -+# of a colon-separated path: - -+# Homebrow package manager on Mac OS X: - PREFIX="/usr/local" --HOMEBREWDIR="${PREFIX}/Cellar" -+READ_ALLOWED_PATH="${PREFIX}/Cellar" -+ -+# Nix package manager and/or NixOS Linux distibution: -+READ_ALLOWED_PATH="/nix/store" -+ -+# GNU Guix package manager and/or GNU Guix Linux distibution: -+READ_ALLOWED_PATH="/gnu/store" -+ -+# If multiple package managers are used concurrently: -+PREFIX="/usr/local" -+READ_ALLOWED_PATH="/nix/store:${PREFIX}/Cellar" - - # --- user settings for the mandoc(3) library -------------------------- - -Index: mandocdb.c -=================================================================== -RCS file: /home/cvs/mandoc/mandoc/mandocdb.c,v -retrieving revision 1.267 -diff -u -p -r1.267 mandocdb.c ---- mandocdb.c 3 Apr 2020 11:35:01 -0000 1.267 -+++ mandocdb.c 5 Aug 2021 11:43:00 -0000 -@@ -165,6 +165,9 @@ static void putkey(const struct mpage * - static void putkeys(const struct mpage *, char *, size_t, uint64_t); - static void putmdockey(const struct mpage *, - const struct roff_node *, uint64_t, int); -+#ifdef READ_ALLOWED_PATH -+static int read_allowed(const char *); -+#endif - static int render_string(char **, size_t *); - static void say(const char *, const char *, ...) - __attribute__((__format__ (__printf__, 2, 3))); -@@ -612,8 +615,8 @@ treescan(void) - continue; - } - if (strncmp(buf, basedir, basedir_len) != 0 --#ifdef HOMEBREWDIR -- && strncmp(buf, HOMEBREWDIR, strlen(HOMEBREWDIR)) -+#ifdef READ_ALLOWED_PATH -+ && !read_allowed(buf) - #endif - ) { - if (warnings) say("", -@@ -823,8 +826,8 @@ filescan(const char *infile) - start = usefile; - else if (strncmp(usefile, basedir, basedir_len) == 0) - start = usefile + basedir_len; --#ifdef HOMEBREWDIR -- else if (strncmp(usefile, HOMEBREWDIR, strlen(HOMEBREWDIR)) == 0) -+#ifdef READ_ALLOWED_PATH -+ else if (read_allowed(usefile)) - start = usefile; - #endif - else { -@@ -2380,6 +2383,25 @@ set_basedir(const char *targetdir, int r - } - return 1; - } -+ -+#ifdef READ_ALLOWED_PATH -+static int -+read_allowed(const char *candidate) -+{ -+ const char *cp; -+ size_t len; -+ -+ for (cp = READ_ALLOWED_PATH;; cp += len) { -+ while (*cp == ':') -+ cp++; -+ if (*cp == '\0') -+ return 0; -+ len = strcspn(cp, ":"); -+ if (strncmp(candidate, cp, len) == 0) -+ return 1; -+ } -+} -+#endif - - static void - say(const char *file, const char *format, ...) -- cgit 1.4.1