From e611215f5c1b7ca19785ec462e696dff103847b0 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 25 Nov 2014 16:02:19 +0100 Subject: [PATCH] Move finding XML catalogs into a separate setup hook This is because libxml/libxslt are not the only implementations that respect $XML_CATALOG_FILES. Also, look in share/xml for catalogs (in addition to the now-deprecated xml/dtd and xml/xsl). --- .../setup-hooks/find-xml-catalogs.sh | 22 +++++++++++++++++++ .../development/libraries/libxml2/default.nix | 6 ++--- .../libraries/libxml2/setup-hook.sh | 19 ---------------- pkgs/top-level/all-packages.nix | 5 ++++- 4 files changed, 28 insertions(+), 24 deletions(-) create mode 100644 pkgs/build-support/setup-hooks/find-xml-catalogs.sh delete mode 100644 pkgs/development/libraries/libxml2/setup-hook.sh diff --git a/pkgs/build-support/setup-hooks/find-xml-catalogs.sh b/pkgs/build-support/setup-hooks/find-xml-catalogs.sh new file mode 100644 index 00000000000..b742d5a8ffd --- /dev/null +++ b/pkgs/build-support/setup-hooks/find-xml-catalogs.sh @@ -0,0 +1,22 @@ +addXMLCatalogs () { + local d i + # ‘xml/dtd’ and ‘xml/xsl’ are deprecated. Catalogs should be + # installed underneath ‘share/xml’. + for d in $1/share/xml $1/xml/dtd $1/xml/xsl; do + if [ -d $d ]; then + for i in $(find $d -name catalog.xml); do + XML_CATALOG_FILES+=" $i" + done + fi + done +} + +if [ -z "$libxmlHookDone" ]; then + libxmlHookDone=1 + + # Set up XML_CATALOG_FILES. An empty initial value prevents + # xmllint and xsltproc from looking in /etc/xml/catalog. + export XML_CATALOG_FILES + if [ -z "$XML_CATALOG_FILES" ]; then XML_CATALOG_FILES=" "; fi + envHooks+=(addXMLCatalogs) +fi diff --git a/pkgs/development/libraries/libxml2/default.nix b/pkgs/development/libraries/libxml2/default.nix index 8dfe60f9026..434b76a09ea 100644 --- a/pkgs/development/libraries/libxml2/default.nix +++ b/pkgs/development/libraries/libxml2/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, zlib, xz, python ? null, pythonSupport ? true }: +{ stdenv, fetchurl, zlib, xz, python ? null, pythonSupport ? true, findXMLCatalogs }: assert pythonSupport -> python != null; @@ -22,9 +22,7 @@ stdenv.mkDerivation (rec { # RUNPATH for that, leading to undefined references for its users. ++ (stdenv.lib.optional stdenv.isFreeBSD xz); - propagatedBuildInputs = [ zlib ]; - - setupHook = ./setup-hook.sh; + propagatedBuildInputs = [ zlib findXMLCatalogs ]; passthru = { inherit pythonSupport version; }; diff --git a/pkgs/development/libraries/libxml2/setup-hook.sh b/pkgs/development/libraries/libxml2/setup-hook.sh deleted file mode 100644 index 4acdd25a6b2..00000000000 --- a/pkgs/development/libraries/libxml2/setup-hook.sh +++ /dev/null @@ -1,19 +0,0 @@ -addXMLCatalogs () { - for kind in dtd xsl; do - if test -d $1/xml/$kind; then - for i in $(find $1/xml/$kind -name catalog.xml); do - export XML_CATALOG_FILES="$XML_CATALOG_FILES $i" - done - fi - done -} - -if test -z "$libxmlHookDone"; then - libxmlHookDone=1 - - # Set up XML_CATALOG_FILES. An empty initial value prevents - # xmllint and xsltproc from looking in /etc/xml/catalog. - export XML_CATALOG_FILES - if test -z "$XML_CATALOG_FILES"; then XML_CATALOG_FILES=" "; fi - envHooks+=(addXMLCatalogs) -fi diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bebdfab1b54..c81db70d1b1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -437,7 +437,10 @@ let ../build-support/setup-hooks/make-coverage-analysis-report.sh; # intended to be used like nix-build -E 'with {}; enableDebugging fooPackage' - enableDebugging = pkg : pkg.override { stdenv = stdenvAdapters.keepDebugInfo pkg.stdenv; }; + enableDebugging = pkg: pkg.override { stdenv = stdenvAdapters.keepDebugInfo pkg.stdenv; }; + + findXMLCatalogs = makeSetupHook { } ../build-support/setup-hooks/find-xml-catalogs.sh; + ### TOOLS