summaryrefslogtreecommitdiff
path: root/extra/cups
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@kiwwwi.com.ar>2012-08-13 16:07:04 -0300
committerNicolás Reynolds <fauno@kiwwwi.com.ar>2012-08-13 16:07:04 -0300
commite6b487980c858023cb4a3678f2d27f52c2a32596 (patch)
tree3a348db541d1a1ae1f356dd3970fff4910529558 /extra/cups
parentf08b6a2decf228473f030cfd49116c9fd0b05c37 (diff)
parent07a52495b8a64f14843878d6116151fbdb6deefb (diff)
Merge branch 'master' of ssh://vparabola/home/parabola/abslibre-pre-mips64el
Conflicts: community/bird/PKGBUILD community/ecryptfs-utils/PKGBUILD community/linux-tools/PKGBUILD community/qtcurve-kde4/PKGBUILD extra/audacity/PKGBUILD extra/cups/PKGBUILD extra/imagemagick/PKGBUILD extra/kdeadmin/PKGBUILD extra/kdepim/PKGBUILD extra/kradio/PKGBUILD extra/libimobiledevice/PKGBUILD extra/libmowgli/PKGBUILD extra/llvm/PKGBUILD extra/phonon-vlc/PKGBUILD extra/pycrypto/PKGBUILD extra/xorg-server/PKGBUILD libre/linux-libre/PKGBUILD libre/syslinux/PKGBUILD multilib-staging/gcc-multilib/PKGBUILD multilib/lib32-libldap/PKGBUILD staging/binutils/PKGBUILD staging/gcc/PKGBUILD staging/glibc/PKGBUILD testing/cronie/PKGBUILD testing/cryptsetup/PKGBUILD testing/krb5/PKGBUILD testing/lvm2/PKGBUILD testing/net-tools/PKGBUILD testing/systemd/PKGBUILD
Diffstat (limited to 'extra/cups')
-rw-r--r--extra/cups/PKGBUILD12
-rw-r--r--extra/cups/cups.install5
-rw-r--r--extra/cups/usb-backend-reset-after-job-only-for-specific-devices.patch74
3 files changed, 87 insertions, 4 deletions
diff --git a/extra/cups/PKGBUILD b/extra/cups/PKGBUILD
index 5c9612235..877673b1b 100644
--- a/extra/cups/PKGBUILD
+++ b/extra/cups/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 164782 2012-08-05 08:32:04Z andyrtr $
+# $Id: PKGBUILD 165095 2012-08-10 13:32:19Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
pkgbase="cups"
pkgname=('libcups' 'cups')
pkgver=1.6.1
-pkgrel=2
+pkgrel=3
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
url="http://www.cups.org/"
@@ -18,7 +18,8 @@ source=(ftp://ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2
cups cups.logrotate cups.pam
cupsd-conf-remove-obsolete-browse-directives.patch
avahi-missing-in-conditionals.patch
- recognize-remote-cups-queue-via-dnssd-uri.patch)
+ recognize-remote-cups-queue-via-dnssd-uri.patch
+ usb-backend-reset-after-job-only-for-specific-devices.patch)
#options=('!emptydirs')
md5sums=('87ade07e3d1efd03c9c3add949cf9c00'
'9b8467a1e51d360096b70e2c3c081e6c'
@@ -30,7 +31,8 @@ md5sums=('87ade07e3d1efd03c9c3add949cf9c00'
'96f82c38f3f540b53f3e5144900acf17'
'6bef262b5081051e88cd2ae94fed1867'
'9c91b1319f4b20dc323986cb4abbe806'
- 'dcef8dd5614461166cada8a706eebb49')
+ 'dcef8dd5614461166cada8a706eebb49'
+ '0779ef8ba1d724ebb3b9bf360deba52b')
build() {
cd ${srcdir}/${pkgbase}-${pkgver}
@@ -54,6 +56,8 @@ build() {
patch -Np1 -i ${srcdir}/avahi-missing-in-conditionals.patch
# http://www.cups.org/str.php?L4158 - DNS-SD-based print queues pointing to CUPS server are not considered remote printers with driver on server
patch -Np1 -i ${srcdir}/recognize-remote-cups-queue-via-dnssd-uri.patch
+ # http://cups.org/str.php?L4155 / https://bugs.archlinux.org/task/30965
+ patch -Np0 -i ${srcdir}/usb-backend-reset-after-job-only-for-specific-devices.patch
# Rebuild configure script for not zipping man-pages.
aclocal -I config-scripts
diff --git a/extra/cups/cups.install b/extra/cups/cups.install
index cea52282e..fc015f951 100644
--- a/extra/cups/cups.install
+++ b/extra/cups/cups.install
@@ -24,6 +24,11 @@ post_upgrade() {
echo "* check your config with cupsd -t"
echo " and fix all Browsing related settings"
fi
+ if [ "`vercmp $2 1.6.1-3`" -lt 0 ]; then
+ # important upgrade notice
+ echo "> It's now safe to load usblp kernel module."
+ echo "> There's no more need to blacklist it."
+ fi
}
post_remove() {
diff --git a/extra/cups/usb-backend-reset-after-job-only-for-specific-devices.patch b/extra/cups/usb-backend-reset-after-job-only-for-specific-devices.patch
new file mode 100644
index 000000000..dcf91c833
--- /dev/null
+++ b/extra/cups/usb-backend-reset-after-job-only-for-specific-devices.patch
@@ -0,0 +1,74 @@
+--- backend/usb-libusb.c.orig 2012-07-16 19:10:55.000000000 +0200
++++ backend/usb-libusb.c 2012-08-06 11:01:58.034150159 +0200
+@@ -70,7 +70,7 @@
+ read_endp, /* Read endpoint */
+ protocol, /* Protocol: 1 = Uni-di, 2 = Bi-di. */
+ usblp_attached, /* "usblp" kernel module attached? */
+- opened_for_job; /* Set to 1 by print_device() */
++ reset_after_job; /* Set to 1 by print_device() */
+ unsigned int quirks; /* Quirks flags */
+ struct libusb_device_handle *handle; /* Open handle to device */
+ } usb_printer_t;
+@@ -122,6 +122,8 @@
+ #define USBLP_QUIRK_USB_INIT 0x2 /* needs vendor USB init string */
+ #define USBLP_QUIRK_BAD_CLASS 0x4 /* descriptor uses vendor-specific
+ Class or SubClass */
++#define USBLP_QUIRK_RESET 0x4000 /* After printing do a reset
++ for clean-up */
+ #define USBLP_QUIRK_NO_REATTACH 0x8000 /* After printing we cannot re-attach
+ the usblp kernel module */
+
+@@ -147,9 +149,11 @@
+ { 0x04b8, 0x0202, USBLP_QUIRK_BAD_CLASS }, /* Seiko Epson Receipt
+ Printer M129C */
+ { 0x067b, 0x2305, USBLP_QUIRK_BIDIR |
+- USBLP_QUIRK_NO_REATTACH },
++ USBLP_QUIRK_NO_REATTACH |
++ USBLP_QUIRK_RESET },
+ /* Prolific Technology, Inc. PL2305 Parallel Port
+ (USB -> Parallel adapter) */
++ { 0x04e8, 0x0000, USBLP_QUIRK_RESET }, /* All Samsung devices */
+ { 0, 0 }
+ };
+
+@@ -256,7 +260,12 @@
+ }
+
+ g.print_fd = print_fd;
+- g.printer->opened_for_job = 1;
++
++ /*
++ * Some devices need a reset after finishing a job, these devices are
++ * marked with the USBLP_QUIRK_RESET quirk.
++ */
++ g.printer->reset_after_job = (g.printer->quirks & USBLP_QUIRK_RESET ? 1 : 0);
+
+ /*
+ * If we are printing data from a print driver on stdin, ignore SIGTERM
+@@ -772,7 +781,7 @@
+ * Reset the device to clean up after the job
+ */
+
+- if (printer->opened_for_job == 1)
++ if (printer->reset_after_job == 1)
+ {
+ if ((errcode = libusb_reset_device(printer->handle)) < 0)
+ fprintf(stderr,
+@@ -1288,7 +1297,7 @@
+ }
+
+ printer->usblp_attached = 0;
+- printer->opened_for_job = 0;
++ printer->reset_after_job = 0;
+
+ if (verbose)
+ fputs("STATE: +connecting-to-device\n", stderr);
+@@ -1586,7 +1595,7 @@
+ for (i = 0; quirk_printers[i].vendorId; i++)
+ {
+ if (vendor == quirk_printers[i].vendorId &&
+- product == quirk_printers[i].productId)
++ (product == 0x0000 || product == quirk_printers[i].productId))
+ return quirk_printers[i].quirks;
+ }
+ return 0;