Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

makeDBusConf: init

Use XSLT transform to modify stock dbus configuration file. This is needed
because some dbus components doesn't support <include> so we need to put our
core configuration in the main file.

+96
+27
pkgs/development/libraries/dbus/make-dbus-conf.nix
···
··· 1 + { runCommand, libxslt, dbus, serviceDirectories ? [], suidHelper ? "/var/setuid-wrappers/dbus-daemon-launch-helper" }: 2 + 3 + /* DBus has two configuration parsers -- normal and "trivial", which is used 4 + * for suid helper. Unfortunately the latter doesn't support <include> 5 + * directive. That means that we can't just place our configuration to 6 + * *-local.conf -- it needs to be in the main configuration file. 7 + */ 8 + runCommand "dbus-1" 9 + { 10 + buildInputs = [ libxslt ]; 11 + inherit serviceDirectories suidHelper; 12 + } 13 + '' 14 + mkdir -p $out 15 + 16 + xsltproc \ 17 + --stringparam serviceDirectories "$serviceDirectories" \ 18 + --stringparam suidHelper "$suidHelper" \ 19 + --path ${dbus.doc}/share/xml/dbus \ 20 + ${./make-system-conf.xsl} ${dbus}/share/dbus-1/system.conf \ 21 + > $out/system.conf 22 + xsltproc \ 23 + --stringparam serviceDirectories "$serviceDirectories" \ 24 + --path ${dbus.doc}/share/xml/dbus \ 25 + ${./make-session-conf.xsl} ${dbus}/share/dbus-1/session.conf \ 26 + > $out/session.conf 27 + ''
+30
pkgs/development/libraries/dbus/make-session-conf.xsl
···
··· 1 + <?xml version="1.0"?> 2 + 3 + <!-- 4 + This script copies the original system.conf from the dbus 5 + distribution, but sets paths from $serviceDirectories parameter 6 + and suid helper from $suidHelper parameter. 7 + --> 8 + 9 + <xsl:stylesheet version="1.0" 10 + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 11 + xmlns:str="http://exslt.org/strings" 12 + extension-element-prefixes="str" 13 + > 14 + 15 + <xsl:output method='xml' encoding="UTF-8" doctype-system="busconfig.dtd" /> 16 + 17 + <xsl:param name="serviceDirectories" /> 18 + 19 + <xsl:template match="/busconfig"> 20 + <busconfig> 21 + <xsl:copy-of select="child::node()[name() != 'include' and name() != 'standard_session_servicedirs' and name() != 'servicedir' and name() != 'includedir']" /> 22 + 23 + <xsl:for-each select="str:tokenize($serviceDirectories)"> 24 + <servicedir><xsl:value-of select="." />/share/dbus-1/services</servicedir> 25 + <includedir><xsl:value-of select="." />/etc/dbus-1/session.d</includedir> 26 + </xsl:for-each> 27 + </busconfig> 28 + </xsl:template> 29 + 30 + </xsl:stylesheet>
+34
pkgs/development/libraries/dbus/make-system-conf.xsl
···
··· 1 + <?xml version="1.0"?> 2 + 3 + <!-- 4 + This script copies the original system.conf from the dbus 5 + distribution, but sets paths from $serviceDirectories parameter 6 + and suid helper from $suidHelper parameter. 7 + --> 8 + 9 + <xsl:stylesheet version="1.0" 10 + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 11 + xmlns:str="http://exslt.org/strings" 12 + extension-element-prefixes="str" 13 + > 14 + 15 + <xsl:output method='xml' encoding="UTF-8" doctype-system="busconfig.dtd" /> 16 + 17 + <xsl:param name="serviceDirectories" /> 18 + <xsl:param name="suidHelper" /> 19 + 20 + <xsl:template match="/busconfig"> 21 + <busconfig> 22 + <xsl:copy-of select="child::node()[name() != 'include' and name() != 'standard_system_servicedirs' and name() != 'servicehelper' and name() != 'servicedir' and name() != 'includedir']" /> 23 + 24 + <!-- set suid helper --> 25 + <servicehelper><xsl:value-of select="$suidHelper" /></servicehelper> 26 + 27 + <xsl:for-each select="str:tokenize($serviceDirectories)"> 28 + <servicedir><xsl:value-of select="." />/share/dbus-1/system-services</servicedir> 29 + <includedir><xsl:value-of select="." />/etc/dbus-1/system.d</includedir> 30 + </xsl:for-each> 31 + </busconfig> 32 + </xsl:template> 33 + 34 + </xsl:stylesheet>
+5
pkgs/top-level/all-packages.nix
··· 7094 dbus_libs = dbus; 7095 dbus_daemon = dbus.daemon; 7096 7097 dee = callPackage ../development/libraries/dee { }; 7098 7099 dhex = callPackage ../applications/editors/dhex { };
··· 7094 dbus_libs = dbus; 7095 dbus_daemon = dbus.daemon; 7096 7097 + makeDBusConf = { suidHelper, serviceDirectories }: 7098 + callPackage ../development/libraries/dbus/make-dbus-conf.nix { 7099 + inherit suidHelper serviceDirectories; 7100 + }; 7101 + 7102 dee = callPackage ../development/libraries/dee { }; 7103 7104 dhex = callPackage ../applications/editors/dhex { };