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 000000000000..b742d5a8ffd9 --- /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 8dfe60f9026d..434b76a09eae 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 4acdd25a6b28..000000000000 --- 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 bebdfab1b546..c81db70d1b10 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