summaryrefslogtreecommitdiff
path: root/extra/cups
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-08-07 00:01:58 +0000
committerroot <root@rshg054.dnsready.net>2012-08-07 00:01:58 +0000
commit9d36fcd5638035abf19f303deebd9e861d384254 (patch)
treeec8d5410dd1f54369b7b5926bb94cedbc906ef70 /extra/cups
parent1613e8d1c11997f5507d90ecfc05213199aca3ed (diff)
Tue Aug 7 00:01:58 UTC 2012
Diffstat (limited to 'extra/cups')
-rw-r--r--extra/cups/PKGBUILD25
-rw-r--r--extra/cups/avahi-missing-in-conditionals.patch118
-rw-r--r--extra/cups/cupsd-conf-remove-obsolete-browse-directives.patch12
-rw-r--r--extra/cups/recognize-remote-cups-queue-via-dnssd-uri.patch25
4 files changed, 176 insertions, 4 deletions
diff --git a/extra/cups/PKGBUILD b/extra/cups/PKGBUILD
index a1f8b2b04..e6c6d07d3 100644
--- a/extra/cups/PKGBUILD
+++ b/extra/cups/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 164328 2012-07-30 14:40:47Z andyrtr $
+# $Id: PKGBUILD 164782 2012-08-05 08:32:04Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
pkgbase="cups"
pkgname=('libcups' 'cups')
pkgver=1.6.1
-pkgrel=1
+pkgrel=2
arch=('i686' 'x86_64')
license=('GPL')
url="http://www.cups.org/"
@@ -15,7 +15,10 @@ source=(ftp://ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2
cups-no-gcrypt.patch
cups-no-gzip-man.patch
cups-systemd-socket.patch
- cups cups.logrotate cups.pam)
+ 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)
#options=('!emptydirs')
md5sums=('87ade07e3d1efd03c9c3add949cf9c00'
'9b8467a1e51d360096b70e2c3c081e6c'
@@ -24,7 +27,10 @@ md5sums=('87ade07e3d1efd03c9c3add949cf9c00'
'a81573a429b98e16670d7fea47e528c4'
'9657daa21760bb0b5fa3d8b51d5e01a1'
'f861b18f4446c43918c8643dcbbd7f6d'
- '96f82c38f3f540b53f3e5144900acf17')
+ '96f82c38f3f540b53f3e5144900acf17'
+ '6bef262b5081051e88cd2ae94fed1867'
+ '9c91b1319f4b20dc323986cb4abbe806'
+ 'dcef8dd5614461166cada8a706eebb49')
build() {
cd ${srcdir}/${pkgbase}-${pkgver}
@@ -40,6 +46,14 @@ build() {
patch -Np1 -i "${srcdir}/cups-no-gcrypt.patch"
# don't zip man pages in make install, let makepkg do that / Fedora
patch -Np1 -i ${srcdir}/cups-no-gzip-man.patch
+
+ # upstream bugtracker patches
+ # http://www.cups.org/str.php?L4157 - fix broken default server config
+ patch -Np1 -i ${srcdir}/cupsd-conf-remove-obsolete-browse-directives.patch
+ # http://www.cups.org/str.php?L4156 - In many DNS-SD/Bonjour conditionals Avahi is not considered
+ 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
# Rebuild configure script for not zipping man-pages.
aclocal -I config-scripts
@@ -150,4 +164,7 @@ optdepends=('xdg-utils: xdg .desktop file support')
rm -v ${pkgdir}/usr/share/cups/data/testprint
# comment out all conversion rules which use any of the removed filters
perl -p -i -e 's:^(.*\s+bannertops\s*)$:#\1:' /usr/share/cups/mime/mime.convs
+
+ # Provide native service for arch-daemons generator
+ ln -s cups.service "$pkgdir/usr/lib/systemd/system/cupsd.service"
}
diff --git a/extra/cups/avahi-missing-in-conditionals.patch b/extra/cups/avahi-missing-in-conditionals.patch
new file mode 100644
index 000000000..b261f58ae
--- /dev/null
+++ b/extra/cups/avahi-missing-in-conditionals.patch
@@ -0,0 +1,118 @@
+diff -uraN cups/scheduler/client.c cups-new/scheduler/client.c
+--- cups/scheduler/client.c 2012-05-25 15:28:49.000000000 +0200
++++ cups-new/scheduler/client.c 2012-08-04 20:13:17.082220961 +0200
+@@ -4021,7 +4021,7 @@
+ !strncmp(host, "[::1]:", 6));
+ }
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ /*
+ * Check if the hostname is something.local (Bonjour); if so, allow it.
+ */
+@@ -4040,7 +4040,7 @@
+ !_cups_strcasecmp(end, ".local.") ||
+ !_cups_strncasecmp(end, ".local.:", 8)))
+ return (1);
+-#endif /* HAVE_DNSSD */
++#endif /* HAVE_DNSSD || HAVE_AVAHI */
+
+ /*
+ * Check if the hostname is an IP address...
+@@ -4101,7 +4101,7 @@
+ }
+ }
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ for (a = (cupsd_alias_t *)cupsArrayFirst(DNSSDAlias);
+ a;
+ a = (cupsd_alias_t *)cupsArrayNext(DNSSDAlias))
+@@ -4126,7 +4126,7 @@
+ return (1);
+ }
+ }
+-#endif /* HAVE_DNSSD */
++#endif /* HAVE_DNSSD || HAVE_AVAHI */
+
+ /*
+ * Check for interface hostname matches...
+diff -uraN cups/scheduler/conf.c cups-new/scheduler/conf.c
+--- cups/scheduler/conf.c 2012-05-25 15:28:49.000000000 +0200
++++ cups-new/scheduler/conf.c 2012-08-04 20:15:49.830978405 +0200
+@@ -89,9 +89,9 @@
+ {
+ { "AccessLog", &AccessLog, CUPSD_VARTYPE_STRING },
+ { "AutoPurgeJobs", &JobAutoPurge, CUPSD_VARTYPE_BOOLEAN },
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ { "BrowseDNSSDSubTypes", &DNSSDSubTypes, CUPSD_VARTYPE_STRING },
+-#endif /* HAVE_DNSSD */
++#endif /* HAVE_DNSSD || HAVE_AVAHI */
+ { "BrowseWebIF", &BrowseWebIF, CUPSD_VARTYPE_BOOLEAN },
+ { "Browsing", &Browsing, CUPSD_VARTYPE_BOOLEAN },
+ { "CacheDir", &CacheDir, CUPSD_VARTYPE_STRING },
+@@ -735,9 +735,9 @@
+ Browsing = CUPS_DEFAULT_BROWSING;
+ DefaultShared = CUPS_DEFAULT_DEFAULT_SHARED;
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ cupsdSetString(&DNSSDSubTypes, "_cups,_print");
+-#endif /* HAVE_DNSSD */
++#endif /* HAVE_DNSSD || HAVE_AVAHI */
+
+ cupsdSetString(&LPDConfigFile, CUPS_DEFAULT_LPD_CONFIG_FILE);
+ cupsdSetString(&SMBConfigFile, CUPS_DEFAULT_SMB_CONFIG_FILE);
+diff -uraN cups/scheduler/ipp.c cups-new/scheduler/ipp.c
+--- cups/scheduler/ipp.c 2012-05-25 15:28:49.000000000 +0200
++++ cups-new/scheduler/ipp.c 2012-08-04 20:13:17.086220978 +0200
+@@ -4813,7 +4813,7 @@
+ ippAddDate(con->response, IPP_TAG_PRINTER, "printer-current-time",
+ ippTimeToDate(curtime));
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ if (!ra || cupsArrayFind(ra, "printer-dns-sd-name"))
+ {
+ if (printer->reg_name)
+@@ -4823,7 +4823,7 @@
+ ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_NOVALUE,
+ "printer-dns-sd-name", 0);
+ }
+-#endif /* HAVE_DNSSD */
++#endif /* HAVE_DNSSD || HAVE_AVAHI */
+
+ if (!ra || cupsArrayFind(ra, "printer-error-policy"))
+ ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_NAME,
+diff -uraN cups/scheduler/main.c cups-new/scheduler/main.c
+--- cups/scheduler/main.c 2012-05-25 15:28:49.000000000 +0200
++++ cups-new/scheduler/main.c 2012-08-04 20:13:17.090221001 +0200
+@@ -781,9 +781,9 @@
+ * Got an error from select!
+ */
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ cupsd_printer_t *p; /* Current printer */
+-#endif /* HAVE_DNSSD */
++#endif /* HAVE_DNSSD || HAVE_AVAHI */
+
+
+ if (errno == EINTR) /* Just interrupted by a signal */
+@@ -824,13 +824,13 @@
+ job->print_pipes[0], job->print_pipes[1],
+ job->back_pipes[0], job->back_pipes[1]);
+
+-#ifdef HAVE_DNSSD
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
+ p;
+ p = (cupsd_printer_t *)cupsArrayNext(Printers))
+ cupsdLogMessage(CUPSD_LOG_EMERG, "printer[%s] reg_name=\"%s\"", p->name,
+ p->reg_name ? p->reg_name : "(null)");
+-#endif /* HAVE_DNSSD */
++#endif /* HAVE_DNSSD || HAVE_AVAHI */
+
+ break;
+ }
diff --git a/extra/cups/cupsd-conf-remove-obsolete-browse-directives.patch b/extra/cups/cupsd-conf-remove-obsolete-browse-directives.patch
new file mode 100644
index 000000000..97636c7f2
--- /dev/null
+++ b/extra/cups/cupsd-conf-remove-obsolete-browse-directives.patch
@@ -0,0 +1,12 @@
+diff -uraN cups/conf/cupsd.conf.in cups-new/conf/cupsd.conf.in
+--- cups/conf/cupsd.conf.in 2012-05-25 15:28:25.000000000 +0200
++++ cups-new/conf/cupsd.conf.in 2012-08-04 20:56:26.699062177 +0200
+@@ -19,8 +19,6 @@
+
+ # Show shared printers on the local network.
+ Browsing On
+-BrowseOrder allow,deny
+-BrowseAllow all
+ BrowseLocalProtocols @CUPS_BROWSE_LOCAL_PROTOCOLS@
+
+ # Default authentication type, when authentication is required...
diff --git a/extra/cups/recognize-remote-cups-queue-via-dnssd-uri.patch b/extra/cups/recognize-remote-cups-queue-via-dnssd-uri.patch
new file mode 100644
index 000000000..6349bd901
--- /dev/null
+++ b/extra/cups/recognize-remote-cups-queue-via-dnssd-uri.patch
@@ -0,0 +1,25 @@
+diff -uraN cups/scheduler/printers.c cups-new/scheduler/printers.c
+--- cups/scheduler/printers.c 2012-05-25 15:28:49.000000000 +0200
++++ cups-new/scheduler/printers.c 2012-08-04 20:58:40.475725544 +0200
+@@ -4829,13 +4829,14 @@
+ "printer-make-and-model", NULL,
+ "Local System V Printer");
+ }
+- else if (!strncmp(p->device_uri, "ipp://", 6) &&
+- (strstr(p->device_uri, "/printers/") != NULL ||
+- strstr(p->device_uri, "/classes/") != NULL ||
+- ((strstr(p->device_uri, "._ipp.") != NULL ||
+- strstr(p->device_uri, "._ipps.") != NULL) &&
+- !strcmp(p->device_uri + strlen(p->device_uri) - 5,
+- "/cups"))))
++ else if ((!strncmp(p->device_uri, "ipp://", 6) &&
++ (strstr(p->device_uri, "/printers/") != NULL ||
++ strstr(p->device_uri, "/classes/") != NULL)) ||
++ (!strncmp(p->device_uri, "dnssd://", 8) &&
++ (strstr(p->device_uri, "._ipp.") != NULL ||
++ strstr(p->device_uri, "._ipps.") != NULL) &&
++ !strcmp(p->device_uri + strlen(p->device_uri) - 5,
++ "/cups")))
+ {
+ /*
+ * Tell the client this is really a hard-wired remote printer.