summary refs log tree commit diff
path: root/pkgs/misc/cups
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/misc/cups')
-rw-r--r--pkgs/misc/cups/default.nix7
-rw-r--r--pkgs/misc/cups/drivers/samsung/4.00.39/builder.sh (renamed from pkgs/misc/cups/drivers/samsung/builder.sh)0
-rw-r--r--pkgs/misc/cups/drivers/samsung/4.00.39/default.nix40
-rw-r--r--pkgs/misc/cups/drivers/samsung/default.nix102
-rw-r--r--pkgs/misc/cups/filters.nix35
-rw-r--r--pkgs/misc/cups/longer-shell-path.patch13
6 files changed, 138 insertions, 59 deletions
diff --git a/pkgs/misc/cups/default.nix b/pkgs/misc/cups/default.nix
index a63db544118..43c2d63bddb 100644
--- a/pkgs/misc/cups/default.nix
+++ b/pkgs/misc/cups/default.nix
@@ -3,7 +3,7 @@
 , libusb ? null, gnutls ? null, avahi ? null, libpaper ? null
 }:
 
-let version = "2.0.4"; in
+let version = "2.1.2"; in
 
 with stdenv.lib;
 stdenv.mkDerivation {
@@ -13,7 +13,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "https://www.cups.org/software/${version}/cups-${version}-source.tar.bz2";
-    sha256 = "1gaakz24k6x5nc09rmpiq0xq20j1qdjc3szag8qwmyi4ky6ydmg1";
+    sha256 = "1bc1y8fjgh54ryh520gk63i5rbagn6jijsrskcqlibhfm0xwmc5s";
   };
 
   # FIXME: the cups libraries contains some $out/share strings so can't be split.
@@ -54,7 +54,6 @@ stdenv.mkDerivation {
       # Idem for /etc.
       "PAMDIR=$(out)/etc/pam.d"
       "DBUSDIR=$(out)/etc/dbus-1"
-      "INITDIR=$(out)/etc/rc.d"
       "XINETD=$(out)/etc/xinetd.d"
       "SERVERROOT=$(out)/etc/cups"
       # Idem for /usr.
@@ -64,6 +63,8 @@ stdenv.mkDerivation {
       "CUPS_PRIMARY_SYSTEM_GROUP=root"
     ];
 
+  enableParallelBuilding = true;
+
   postInstall = ''
       # Delete obsolete stuff that conflicts with cups-filters.
       rm -rf $out/share/cups/banners $out/share/cups/data/testprint
diff --git a/pkgs/misc/cups/drivers/samsung/builder.sh b/pkgs/misc/cups/drivers/samsung/4.00.39/builder.sh
index f750df6e506..f750df6e506 100644
--- a/pkgs/misc/cups/drivers/samsung/builder.sh
+++ b/pkgs/misc/cups/drivers/samsung/4.00.39/builder.sh
diff --git a/pkgs/misc/cups/drivers/samsung/4.00.39/default.nix b/pkgs/misc/cups/drivers/samsung/4.00.39/default.nix
new file mode 100644
index 00000000000..27d21f86285
--- /dev/null
+++ b/pkgs/misc/cups/drivers/samsung/4.00.39/default.nix
@@ -0,0 +1,40 @@
+# Tested on linux-x86_64.  Might work on linux-i386.  Probably won't work on anything else.
+
+# To use this driver in NixOS, add it to printing.drivers in configuration.nix.
+# configuration.nix might look like this when you're done:
+# { pkgs, ... }: {
+#   printing = {
+#     enable = true;
+#     drivers = [ pkgs.samsungUnifiedLinuxDriver ];
+#   };
+#   (more stuff)
+# }
+# (This advice was tested on 2010 August 2.)
+
+{ stdenv, fetchurl, cups, gcc, ghostscript, glibc, patchelf }:
+
+# Do not bump lightly! Visit <http://www.bchemnet.com/suldr/supported.html>
+# to see what will break when upgrading. Consider a new versioned attribute.
+stdenv.mkDerivation rec {
+  name = "samsung-UnifiedLinuxDriver-${version}";
+  version = "4.00.39";
+
+  src = fetchurl {
+    url = "http://www.bchemnet.com/suldr/driver/UnifiedLinuxDriver-${version}.tar.gz";
+    sha256 = "144b4xggbzjfq7ga5nza7nra2cf6qn63z5ls7ba1jybkx1vm369k";
+  };
+
+  buildInputs = [ cups gcc ghostscript glibc patchelf ];
+
+  inherit cups gcc ghostscript glibc;
+
+  builder = ./builder.sh;
+
+  meta = with stdenv.lib; {
+    description = "Samsung's Linux printing drivers; includes binaries without source code";
+    homepage = http://www.samsung.com/;
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ nckx ];
+  };
+}
diff --git a/pkgs/misc/cups/drivers/samsung/default.nix b/pkgs/misc/cups/drivers/samsung/default.nix
index b78104a7ddc..34b5f58aed5 100644
--- a/pkgs/misc/cups/drivers/samsung/default.nix
+++ b/pkgs/misc/cups/drivers/samsung/default.nix
@@ -1,39 +1,89 @@
-# Tested on linux-x86_64.  Might work on linux-i386.  Probably won't work on anything else.
-
-# To use this driver in NixOS, add it to printing.drivers in configuration.nix.
-# configuration.nix might look like this when you're done:
-# { pkgs, ... }: {
-#   printing = {
-#     enable = true;
-#     drivers = [ pkgs.samsungUnifiedLinuxDriver ];
-#   };
-#   (more stuff)
-# }
-# (This advice was tested on 2010 August 2.)
-
-{stdenv, fetchurl, cups, gcc, ghostscript, glibc, patchelf}:
-
-# Do not bump lightly! Visit <http://www.bchemnet.com/suldr/supported.html>
-# to see what will break when upgrading. Consider a new versioned attribute.
-let version = "4.00.39"; in
-stdenv.mkDerivation {
-  name = "samsung-UnifiedLinuxDriver-${version}";
+{ stdenv, fetchurl, patchelf, cups, libusb, libxml2 }:
+
+let
+
+    arch = if stdenv.system == "x86_64-linux"
+      then "x86_64"
+      else "i386";
+
+in stdenv.mkDerivation rec {
+  name = "samsung-unified-linux-driver-${version}";
+  version = "1.00.37";
 
   src = fetchurl {
+    sha256 = "0r66l9zp0p1qgakh4j08hynwsr4lsgq5yrpxyr0x4ldvl0z2b1bb";
     url = "http://www.bchemnet.com/suldr/driver/UnifiedLinuxDriver-${version}.tar.gz";
-    sha256 = "144b4xggbzjfq7ga5nza7nra2cf6qn63z5ls7ba1jybkx1vm369k";
   };
 
-  buildInputs = [ cups gcc ghostscript glibc patchelf ];
+  nativeBuildInputs = [ patchelf ];
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  installPhase = ''
+    my_patchelf() {
+      opts=(); while [[ "$1" != - ]]; do opts+=( "$1" ); shift; done; shift
+      for binary in "$@"; do
+        echo "Patching ELF file: $binary"
+	patchelf "''${opts[@]}" $binary
+        ldd $binary | grep "not found" && exit 1
+      done; true
+    }
+
+    my_patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      --set-rpath ${cups}/lib:$(cat $NIX_CC/nix-support/orig-cc)/lib:${stdenv.glibc}/lib \
+      - ${arch}/{pstosecps,rastertospl,smfpnetdiscovery}
+
+    mkdir -p $out/etc/sane.d/dll.d/
+    install -m644 noarch/etc/smfp.conf $out/etc/sane.d
+    echo smfp >> $out/etc/sane.d/dll.d/smfp-scanner
 
-  inherit cups gcc ghostscript glibc;
+    mkdir -p $out/lib
+    my_patchelf \
+      --set-rpath $(cat $NIX_CC/nix-support/orig-cc)/lib:${stdenv.glibc}/lib \
+      - ${arch}/libscmssc.so*
+    install -m755 ${arch}/libscmssc.so* $out/lib
 
-  builder = ./builder.sh;
+    mkdir -p $out/lib/cups/backend
+    install -m755 ${arch}/smfpnetdiscovery $out/lib/cups/backend
+
+    mkdir -p $out/lib/cups/filter
+    install -m755 ${arch}/{pstosecps,rastertospl} $out/lib/cups/filter
+
+    mkdir -p $out/lib/sane
+    my_patchelf \
+      --set-rpath $(cat $NIX_CC/nix-support/orig-cc)/lib:${stdenv.glibc}/lib:${libusb}/lib:${libxml2}/lib \
+      - ${arch}/libsane-smfp.so*
+    install -m755 ${arch}/libsane-smfp.so* $out/lib/sane
+    ln -s libsane-smfp.so.1.0.1 $out/lib/sane/libsane-smfp.so.1
+    ln -s libsane-smfp.so.1     $out/lib/sane/libsane-smfp.so
+
+    mkdir -p $out/lib/udev/rules.d
+    (
+      OEM_FILE=noarch/oem.conf
+      INSTALL_LOG_FILE=/dev/null
+      . noarch/scripting_utils
+      . noarch/package_utils
+      . noarch/scanner-script.pkg
+      fill_full_template noarch/etc/smfp.rules.in $out/lib/udev/rules.d/60_smfp_samsung.rules
+    )
+
+    mkdir -p $out/share/ppd
+    gzip -9 noarch/share/ppd/*.ppd
+    cp -R noarch/share/ppd $out/share/ppd/suld
+
+    cp -R noarch/share/locale $out/share
+    rm -r $out/share/locale/*/*/install.mo
+  '';
 
   meta = with stdenv.lib; {
-    description = "Samsung's Linux printing drivers; includes binaries without source code";
-    homepage = http://www.samsung.com/;
+    description = "Unified Linux Driver for Samsung printers and scanners";
+    homepage = http://www.bchemnet.com/suldr;
+    downloadPage = http://www.bchemnet.com/suldr/driver/;
     license = licenses.unfree;
+
+    # Tested on linux-x86_64. Might work on linux-i386.
+    # Probably won't work on anything else.
     platforms = platforms.linux;
     maintainers = with maintainers; [ nckx ];
   };
diff --git a/pkgs/misc/cups/filters.nix b/pkgs/misc/cups/filters.nix
index b4b3a5a0624..7118511f16d 100644
--- a/pkgs/misc/cups/filters.nix
+++ b/pkgs/misc/cups/filters.nix
@@ -1,26 +1,24 @@
-{ stdenv, fetchurl, fetchpatch, pkgconfig, cups, poppler, poppler_utils, fontconfig
-, libjpeg, libpng, perl, ijs, qpdf, dbus, substituteAll, bash, avahi }:
+{ stdenv, fetchurl, pkgconfig, cups, poppler, poppler_utils, fontconfig
+, libjpeg, libpng, perl, ijs, qpdf, dbus, substituteAll, bash, avahi
+, makeWrapper, coreutils, gnused, bc, gawk, gnugrep, which
+}:
 
-stdenv.mkDerivation rec {
+let
+  binPath = stdenv.lib.makeSearchPath "bin" [ coreutils gnused bc gawk gnugrep which ];
+
+in stdenv.mkDerivation rec {
   name = "cups-filters-${version}";
-  version = "1.0.71";
+  version = "1.5.0";
 
   src = fetchurl {
     url = "http://openprinting.org/download/cups-filters/${name}.tar.xz";
-    sha256 = "07wwlqcykfjfqcwj1bxk60ggahyaw7wcx32n5s104d1qkhham01i";
+    sha256 = "0cjrh4wpdhkvmahfkg8f2a2qzilcq12i78q5arwr7dnmx1j8hapj";
   };
 
-  patches = [
-    ./longer-shell-path.patch
-    (fetchpatch { # drop on update
-      name = "poppler-0.34.patch";
-      url = "https://bugs.linuxfoundation.org/attachment.cgi?id=493";
-      sha256 = "18za83q0b0n4hpvvw76jsv0hm89zmijvps2z5kg1srickqlxj891";
-    })
-  ];
+  nativeBuildInputs = [ pkgconfig makeWrapper ];
 
   buildInputs = [
-    pkgconfig cups poppler poppler_utils fontconfig libjpeg libpng perl
+    cups poppler poppler_utils fontconfig libjpeg libpng perl
     ijs qpdf dbus avahi
   ];
 
@@ -29,9 +27,10 @@ stdenv.mkDerivation rec {
     "--enable-imagefilters"
     "--with-rcdir=no"
     "--with-shell=${stdenv.shell}"
+    "--with-test-font-path=/path-does-not-exist"
   ];
 
-  makeFlags = "CUPS_SERVERBIN=$(out)/lib/cups CUPS_DATADIR=$(out)/share/cups CUPS_SERVERROOT=$(out)/etc/cups";
+  makeFlags = [ "CUPS_SERVERBIN=$(out)/lib/cups" "CUPS_DATADIR=$(out)/share/cups" "CUPS_SERVERROOT=$(out)/etc/cups" ];
 
   postConfigure =
     ''
@@ -46,11 +45,13 @@ stdenv.mkDerivation rec {
 
   postInstall =
     ''
-      for i in $out/lib/cups/filter/{pstopdf,texttops,imagetops}; do
-        substituteInPlace $i --replace 'which ' 'type -p '
+      for i in $out/lib/cups/filter/*; do
+        wrapProgram "$i" --prefix PATH ':' ${binPath}
       done
     '';
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters;
     description = "Backends, filters, and other software that was once part of the core CUPS distribution but is no longer maintained by Apple Inc";
diff --git a/pkgs/misc/cups/longer-shell-path.patch b/pkgs/misc/cups/longer-shell-path.patch
deleted file mode 100644
index 397cc681732..00000000000
--- a/pkgs/misc/cups/longer-shell-path.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/filter/foomatic-rip/foomaticrip.c b/filter/foomatic-rip/foomaticrip.c
-index 90a851c..689a2bd 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] = SHELL;
-+char modern_shell[] = SHELL;
-
- void config_set_option(const char *key, const char *value)
- {