diff options
Diffstat (limited to 'pkgs/misc/cups')
-rw-r--r-- | pkgs/misc/cups/default.nix | 7 | ||||
-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.nix | 40 | ||||
-rw-r--r-- | pkgs/misc/cups/drivers/samsung/default.nix | 102 | ||||
-rw-r--r-- | pkgs/misc/cups/filters.nix | 35 | ||||
-rw-r--r-- | pkgs/misc/cups/longer-shell-path.patch | 13 |
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) - { |