about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrandon Dimcheff <bdimchef-git@wieldim.com>2014-12-21 20:33:51 -0500
committerBrandon Dimcheff <bdimchef-git@wieldim.com>2014-12-21 20:47:36 -0500
commit6a2195c3a5ff2cfb1e5ec0792976cdb609ddb022 (patch)
tree659b1e8e966d3453482bdecdddc624bd5bf07fe2
parent6a7971bee73a560b6cb5ced97bbe364b01e3cd6d (diff)
downloadnixlib-6a2195c3a5ff2cfb1e5ec0792976cdb609ddb022.tar
nixlib-6a2195c3a5ff2cfb1e5ec0792976cdb609ddb022.tar.gz
nixlib-6a2195c3a5ff2cfb1e5ec0792976cdb609ddb022.tar.bz2
nixlib-6a2195c3a5ff2cfb1e5ec0792976cdb609ddb022.tar.lz
nixlib-6a2195c3a5ff2cfb1e5ec0792976cdb609ddb022.tar.xz
nixlib-6a2195c3a5ff2cfb1e5ec0792976cdb609ddb022.tar.zst
nixlib-6a2195c3a5ff2cfb1e5ec0792976cdb609ddb022.zip
Fix compiled-in /bin/bash in foomatic filters
Foomatic filters contained a 64-char c string hardcoded to /bin/bash.
This caused some filters (at least pdftops) to fail.

I also had to increase the size of the string because nix paths are too
long.
-rw-r--r--pkgs/misc/cups/filters.nix9
-rw-r--r--pkgs/misc/cups/longer-shell-path.patch13
2 files changed, 21 insertions, 1 deletions
diff --git a/pkgs/misc/cups/filters.nix b/pkgs/misc/cups/filters.nix
index 8a0406203aeb..18723779527f 100644
--- a/pkgs/misc/cups/filters.nix
+++ b/pkgs/misc/cups/filters.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, cups, poppler, fontconfig
-, libjpeg, libpng, perl, ijs, qpdf, dbus }:
+, libjpeg, libpng, perl, ijs, qpdf, dbus, bash }:
 
 stdenv.mkDerivation rec {
   name = "cups-filters-${version}";
@@ -34,6 +34,13 @@ stdenv.mkDerivation rec {
       substituteInPlace filter/gstoraster.c --replace execve execvpe
     '';
 
+  patches = [ ./longer-shell-path.patch ];
+
+  postPatch =
+    ''
+      substituteInPlace filter/foomatic-rip/foomaticrip.c --replace "/bin/bash" "${bash}/bin/bash"
+    '';
+
   postInstall =
     ''
       for i in $out/lib/cups/filter/{pstopdf,texttops,imagetops}; do
diff --git a/pkgs/misc/cups/longer-shell-path.patch b/pkgs/misc/cups/longer-shell-path.patch
new file mode 100644
index 000000000000..351bcc0b4096
--- /dev/null
+++ b/pkgs/misc/cups/longer-shell-path.patch
@@ -0,0 +1,13 @@
+diff --git a/filter/foomatic-rip/foomaticrip.c b/filter/foomatic-rip/foomaticrip.c
+index 1c019aa..431d2f9 100644
+--- a/filter/foomatic-rip/foomaticrip.c
++++ b/filter/foomatic-rip/foomaticrip.c
+@@ -174,7 +174,7 @@ char cupsfilterpath[PATH_MAX] = "/usr/local/lib/cups/filter:"
+                                 "/opt/cups/filter:"
+                                 "/usr/lib/cups/filter";
+ 
+-char modern_shell[64] = "/bin/bash";
++char modern_shell[128] = "/bin/bash";
+ 
+ void config_set_option(const char *key, const char *value)
+ {