From 1a025a4a9649bbe581a6d6da68bb61cdf7109c81 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Wed, 13 Jan 2016 19:46:41 +0300 Subject: [PATCH 1/2] cups: 2.0.4 -> 2.1.3 Also enable parallel building and don't install rc.d scripts. --- pkgs/misc/cups/default.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/misc/cups/default.nix b/pkgs/misc/cups/default.nix index 82fd1d65baf5..437300650419 100644 --- a/pkgs/misc/cups/default.nix +++ b/pkgs/misc/cups/default.nix @@ -5,7 +5,7 @@ ### IMPORTANT: before updating cups, make sure the nixos/tests/printing.nix test ### works at least for your platform. -let version = "2.0.4"; in +let version = "2.1.3"; in with stdenv.lib; stdenv.mkDerivation { @@ -15,7 +15,7 @@ stdenv.mkDerivation { src = fetchurl { url = "https://www.cups.org/software/${version}/cups-${version}-source.tar.bz2"; - sha256 = "1gaakz24k6x5nc09rmpiq0xq20j1qdjc3szag8qwmyi4ky6ydmg1"; + sha256 = "1lyl3z01xhg9xb9c8m42398c6h9kw8qr6jwiv8bjdsjab11hv9rn"; }; buildInputs = [ pkgconfig zlib libjpeg libpng libtiff libusb gnutls libpaper ] @@ -53,7 +53,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. @@ -63,6 +62,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 From 8b124b752179a5e28dc75bf4adbfd6f49bb85cdb Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Mon, 22 Feb 2016 12:22:29 +0300 Subject: [PATCH 2/2] nixos.tests.printing: fix for new CUPS version It looks like now queue is not immediately cleared from cancelled jobs. Instead, files like "c00001" are left alongside "d00001-001", and cleanup happens at some later point of time. Also, all new jobs are assigned consecutive numbers now (00002, 00003 etc.). So when original d00001 file is finally cleaned, it breaks the test. Fixed by checking for any "d*" file inside the queue and cleaning it by ourselves to ensure that each job works correctly. --- nixos/tests/printing.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nixos/tests/printing.nix b/nixos/tests/printing.nix index 02980cee2fbd..10d69b446cd7 100644 --- a/nixos/tests/printing.nix +++ b/nixos/tests/printing.nix @@ -78,7 +78,7 @@ import ./make-test.nix ({pkgs, ... }: { # (showing that the right filters have been applied). Of # course, since there is no actual USB printer attached, the # file will stay in the queue forever. - $server->waitForFile("/var/spool/cups/d00001-001"); + $server->waitForFile("/var/spool/cups/d*-001"); $server->sleep(10); $server->succeed("lpq -a") =~ /$fn/ or die; @@ -90,6 +90,9 @@ import ./make-test.nix ({pkgs, ... }: { Machine::retry sub { return 1 if $server->succeed("lpq -a") =~ /no entries/; }; + # The queue is empty already, so this should be safe. + # Otherwise, pairs of "c*"-"d*-001" files might persist. + $server->execute("rm /var/spool/cups/*"); }; } '';