summary refs log tree commit diff
path: root/pkgs/os-specific/linux/shadow
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2017-10-16 01:33:02 +0200
committerJan Tojnar <jtojnar@gmail.com>2019-04-30 23:19:32 +0200
commite2e3f6b6a606a26e9bcb2e90b1abd61ef27797a7 (patch)
treec5bbc1de109eccd110acdc1e8c15b7d45c7deaa9 /pkgs/os-specific/linux/shadow
parenta5c04ea77442c8e25d2754ad69dc5bfe93f192cc (diff)
downloadnixpkgs-e2e3f6b6a606a26e9bcb2e90b1abd61ef27797a7.tar
nixpkgs-e2e3f6b6a606a26e9bcb2e90b1abd61ef27797a7.tar.gz
nixpkgs-e2e3f6b6a606a26e9bcb2e90b1abd61ef27797a7.tar.bz2
nixpkgs-e2e3f6b6a606a26e9bcb2e90b1abd61ef27797a7.tar.lz
nixpkgs-e2e3f6b6a606a26e9bcb2e90b1abd61ef27797a7.tar.xz
nixpkgs-e2e3f6b6a606a26e9bcb2e90b1abd61ef27797a7.tar.zst
nixpkgs-e2e3f6b6a606a26e9bcb2e90b1abd61ef27797a7.zip
shadow: rely on propagated findXMLCatalogs hook
shadow uses a copy of m4 from gtk-doc so we need to apply the same
fix as in 407db7b0196417296677f2a4ef929bb092ec382b.

Also patch it to use the correct DocBook version.
Diffstat (limited to 'pkgs/os-specific/linux/shadow')
-rw-r--r--pkgs/os-specific/linux/shadow/default.nix18
-rw-r--r--pkgs/os-specific/linux/shadow/respect-xml-catalog-files-var.patch30
2 files changed, 41 insertions, 7 deletions
diff --git a/pkgs/os-specific/linux/shadow/default.nix b/pkgs/os-specific/linux/shadow/default.nix
index 8c778e72b70..6b808f0d6a6 100644
--- a/pkgs/os-specific/linux/shadow/default.nix
+++ b/pkgs/os-specific/linux/shadow/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchpatch, fetchFromGitHub, autoreconfHook, libxslt, libxml2
-, docbook_xml_dtd_412, docbook_xsl, gnome-doc-utils, flex, bison
+, docbook_xml_dtd_45, docbook_xsl, gnome-doc-utils, flex, bison
 , pam ? null, glibcCross ? null
 }:
 
@@ -30,12 +30,21 @@ stdenv.mkDerivation rec {
 
   buildInputs = stdenv.lib.optional (pam != null && stdenv.isLinux) pam;
   nativeBuildInputs = [autoreconfHook libxslt libxml2
-    docbook_xml_dtd_412 docbook_xsl gnome-doc-utils flex bison
+    docbook_xml_dtd_45 docbook_xsl gnome-doc-utils flex bison
     ];
 
   patches =
     [ ./keep-path.patch
+      # Obtain XML resources from XML catalog (patch adapted from gtk-doc)
+      ./respect-xml-catalog-files-var.patch
       dots_in_usernames
+
+      # Check for correct DocBook version during configure
+      # https://github.com/shadow-maint/shadow/pull/162
+      (fetchpatch {
+        url = "https://github.com/shadow-maint/shadow/commit/47797ca6654f79e3de854a6c69db2bdb0516db08.patch";
+        sha256 = "1zn8f6fd26gj5sh60099xqc7mjwgbbkkic5xfigvxa4b90vm8fd7";
+      })
     ];
 
   # The nix daemon often forbids even creating set[ug]id files.
@@ -52,11 +61,6 @@ stdenv.mkDerivation rec {
   preConfigure = ''
     export ac_cv_func_setpgrp_void=yes
     export shadow_cv_logdir=/var/log
-    (
-    head -n -1 "${docbook_xml_dtd_412}/xml/dtd/docbook/catalog.xml"
-    tail -n +3 "${docbook_xsl}/share/xml/docbook-xsl/catalog.xml"
-    ) > xmlcatalog
-    configureFlags="$configureFlags --with-xml-catalog=$PWD/xmlcatalog ";
   '';
 
   configureFlags = [
diff --git a/pkgs/os-specific/linux/shadow/respect-xml-catalog-files-var.patch b/pkgs/os-specific/linux/shadow/respect-xml-catalog-files-var.patch
new file mode 100644
index 00000000000..7d922eae71f
--- /dev/null
+++ b/pkgs/os-specific/linux/shadow/respect-xml-catalog-files-var.patch
@@ -0,0 +1,30 @@
+diff --git a/acinclude.m4 b/acinclude.m4
+index dd01f165..e23160ee 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -46,9 +46,21 @@ AC_DEFUN([JH_CHECK_XML_CATALOG],
+     ifelse([$3],,,[$3
+ ])dnl
+   else
+-    AC_MSG_RESULT([not found])
+-    ifelse([$4],,
+-       [AC_MSG_ERROR([could not find ifelse([$2],,[$1],[$2]) in XML catalog])],
+-       [$4])
++    jh_check_xml_catalog_saved_ifs="$IFS"
++    IFS=' '
++    for f in $XML_CATALOG_FILES; do
++      if [[ -f "$f" ]] && \
++        AC_RUN_LOG([$XMLCATALOG --noout "$f" "$1" >&2]); then
++        jh_found_xmlcatalog=true
++        AC_MSG_RESULT([found])
++        ifelse([$3],,,[$3])
++        break
++      fi
++    done
++    IFS="$jh_check_xml_catalog_saved_ifs"
++    if ! $jh_found_xmlcatalog; then
++      AC_MSG_RESULT([not found])
++      ifelse([$4],,[AC_MSG_ERROR([could not find ifelse([$2],,[$1],[$2]) in XML catalog])],[$4])
++    fi
+   fi
+ ])