diff options
Diffstat (limited to 'abs/extra')
-rw-r--r-- | abs/extra/cups/PKGBUILD | 37 | ||||
-rw-r--r-- | abs/extra/cups/cups-dbus-utf8.patch | 106 | ||||
-rw-r--r-- | abs/extra/cups/cups-systemd-socket.patch | 4 |
3 files changed, 127 insertions, 20 deletions
diff --git a/abs/extra/cups/PKGBUILD b/abs/extra/cups/PKGBUILD index 63bb641..08a3e19 100644 --- a/abs/extra/cups/PKGBUILD +++ b/abs/extra/cups/PKGBUILD @@ -1,16 +1,15 @@ -# $Id$ +# $Id: PKGBUILD 199750 2013-11-15 15:38:18Z andyrtr $ # Maintainer: Andreas Radke <andyrtr@archlinux.org> pkgbase="cups" pkgname=('libcups' 'cups') -pkgver=1.7.1 -pkgrel=4 +pkgver=1.7.0 +pkgrel=2 arch=('i686' 'x86_64') license=('GPL') url="http://www.cups.org/" -makedepends=('libtiff>=4.0.0' 'libpng>=1.5.7' 'acl' 'pam' 'xdg-utils' 'krb5' 'openssl' - 'cups-filters' 'bc' 'colord' 'xinetd' 'gzip' 'autoconf' 'libusb' 'dbus' - 'avahi' 'hicolor-icon-theme' 'systemd' 'inetutils' 'libpaper' 'valgrind') +makedepends=('libtiff>=4.0.0' 'libpng>=1.5.7' 'acl' 'pam' 'xdg-utils' 'krb5' 'gnutls>=2.8.3' 'cups-filters' 'bc' + 'colord' 'xinetd' 'gzip' 'autoconf' 'libusb' 'dbus-core' 'avahi' 'hicolor-icon-theme' 'systemd') source=(#http://mirror.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2 http://www.cups.org/software/${pkgver}/cups-${pkgver}-source.tar.bz2 cups.logrotate cups.pam @@ -20,6 +19,7 @@ source=(#http://mirror.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.b cups-no-gzip-man.patch # FC cups-systemd-socket.patch + cups-dbus-utf8.patch cups-res_init.patch cups-avahi-address.patch cups-enum-all.patch @@ -31,13 +31,14 @@ source=(#http://mirror.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.b cupsd-no-crash-on-avahi-threaded-poll-shutdown.patch get-ppd-file-for-statically-configured-ipp-shared-queues.patch ppd-poll-with-client-conf.patch) -md5sums=('55277c40fd4b7183dc3671d39c5c42b7' +md5sums=('5ab496a2ce27017fcdb3d7ec4818a75a' 'f861b18f4446c43918c8643dcbbd7f6d' '96f82c38f3f540b53f3e5144900acf17' '3ba9e3410df1dc3015463d615ef91b3b' 'cc4101beccb5ed6deb1c92707a575925' '90c30380d4c8cd48a908cfdadae1ea24' - 'cf2f881967b0531ec49bcb5d0e9573a8' + '555a1c71151ce990e176315b46e3de2f' + 'a2a88b3a3257c3b5fd3edcc169e6aca4' '8fe27d4248cacbc02824e7937cab4088' 'df0c367c0022e3c7d8e01827e8a6c5e7' 'f30c2a161caaf27854581507cde8cac6' @@ -68,6 +69,9 @@ prepare() { # various bugfixes (upstream reports/SVN or Fedora/Debian + # Ensure attributes are valid UTF-8 in dbus notifier + patch -Np1 -i ${srcdir}/cups-dbus-utf8.patch + # Fixed crash which sometimes happens on shutdown of the CUPS daemon, caused by a wrong shutdown sequence for shutting down the Avahi threaded poll. # patch -Np1 -i ${srcdir}/cupsd-no-crash-on-avahi-threaded-poll-shutdown.patch # Applications could not get the PPD file for statically-configured IPP-shared print queues @@ -108,10 +112,9 @@ build() { --enable-pam=yes \ --enable-raw-printing \ --enable-dbus --with-dbusdir=/etc/dbus-1 \ - --enable-ssl=yes --enable-openssl \ + --enable-ssl=yes --enable-gnutls \ --enable-threads \ --enable-avahi\ - --enable-libpaper \ --with-php=/usr/bin/php-cgi \ --with-optim="$CFLAGS" make @@ -119,14 +122,15 @@ build() { check() { cd ${pkgbase}-${pkgver} -#./run-stp-tests.sh: line 782: 6307 Aborted (core dumped) $VALGRIND ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f > /tmp/cups-$user/log/debug_log 2>&1 -#FAIL: 87 error messages, expected 33. + #httpAddrGetList(workstation64): FAIL + #1 TESTS FAILED! + #make[1]: *** [testhttp] Error 1 make -k check || /bin/true } package_libcups() { pkgdesc="The CUPS Printing System - client libraries and headers" -depends=('openssl' 'libtiff>=4.0.0' 'libpng>=1.5.7' 'krb5' 'avahi') +depends=('gnutls>=2.8.3' 'libtiff>=4.0.0' 'libpng>=1.5.7' 'krb5' 'avahi') backup=(etc/cups/client.conf) cd ${pkgbase}-${pkgver} @@ -158,8 +162,7 @@ backup=(etc/cups/cupsd.conf etc/logrotate.d/cups etc/pam.d/cups etc/xinetd.d/cups-lpd) -depends=('acl' 'pam' "libcups>=${pkgver}" 'cups-filters' 'bc' 'colord' - 'libusb' 'dbus' 'systemd' 'libpaper' 'hicolor-icon-theme') +depends=('acl' 'pam' "libcups>=${pkgver}" 'cups-filters' 'bc' 'colord' 'libusb' 'dbus-core' 'libsystemd' 'hicolor-icon-theme') optdepends=('xdg-utils: xdg .desktop file support') cd ${pkgbase}-${pkgver} @@ -180,8 +183,8 @@ optdepends=('xdg-utils: xdg .desktop file support') # install ssl directory where to store the certs, solves some samba issues install -dm700 -g lp ${pkgdir}/etc/cups/ssl - # remove directory from package, it will be recreated at each server start - rm -rf ${pkgdir}/run + # remove directory from package, we create it in cups rc.d file + rm -rf ${pkgdir}/var/run # install some more configuration files that will get filled by cupsd touch ${pkgdir}/etc/cups/printers.conf diff --git a/abs/extra/cups/cups-dbus-utf8.patch b/abs/extra/cups/cups-dbus-utf8.patch new file mode 100644 index 0000000..0bcd4a1 --- /dev/null +++ b/abs/extra/cups/cups-dbus-utf8.patch @@ -0,0 +1,106 @@ +diff -up cups-1.6.1/notifier/dbus.c.dbus-utf8 cups-1.6.1/notifier/dbus.c +--- cups-1.6.1/notifier/dbus.c.dbus-utf8 2012-01-20 19:00:32.000000000 +0000 ++++ cups-1.6.1/notifier/dbus.c 2012-10-31 11:04:47.686973616 +0000 +@@ -31,6 +31,9 @@ + #include <sys/stat.h> + #include <sys/types.h> + #include <unistd.h> ++#include <assert.h> ++#include <locale.h> ++#include <wchar.h> + + #ifdef HAVE_DBUS + # include <dbus/dbus.h> +@@ -157,10 +160,82 @@ enum + * Local functions... + */ + +-static int acquire_lock(int *fd, char *lockfile, size_t locksize); ++static int acquire_lock(int *fd, char *lockfile, size_t locksize); ++static const char *validate_utf8(const char *str); + + + /* ++ * 'validate_utf8()' - Convert to valid UTF-8 ++ */ ++ ++static const char * ++validate_utf8 (const char *str) ++{ ++ static char *buffer = NULL; ++ static size_t buflen = 0; ++ char *p; ++ size_t str_len; ++ unsigned int i; ++ mbstate_t instate, outstate; ++ ++ if (str == NULL) ++ { ++ free (buffer); ++ return (NULL); ++ } ++ ++ /* Is it already valid? */ ++ if (mbstowcs (NULL, str, 0) != (size_t) -1) ++ return str; ++ ++ /* Make sure our buffer is at least as large as the input string */ ++ str_len = strlen (str); ++ if (str_len > buflen) ++ { ++ if (buffer == NULL) ++ /* Set encoding type to UTF-8 the first time we need to */ ++ setlocale (LC_CTYPE, "en_US.UTF-8"); ++ ++ buflen = str_len + 1; ++ buffer = realloc (buffer, buflen); ++ } ++ ++ memset (&instate, '\0', sizeof (mbstate_t)); ++ memset (&outstate, '\0', sizeof (mbstate_t)); ++ p = buffer; ++ i = 0; ++ while (i < str_len) ++ { ++ wchar_t wc; ++ size_t used, written; ++ mbstate_t orig_instate = instate; ++ used = mbrtowc (&wc, str + i, str_len - i, &instate); ++ switch (used) ++ { ++ case (size_t) -2: ++ case (size_t) -1: ++ wc = L'?'; /* so replacement is never longer than original char */ ++ instate = orig_instate; ++ /* fallthru */ ++ case 0: ++ used = 1; ++ } ++ ++ written = wcrtomb (p, wc, &outstate); ++ if (written != -1) ++ { ++ p += written; ++ assert (p - buffer < buflen); ++ } ++ ++ i += used; ++ } ++ ++ *p = '\0'; ++ return buffer; ++} ++ ++/* + * 'main()' - Read events and send DBUS notifications. + */ + +@@ -366,7 +441,7 @@ main(int argc, /* I - Number of comm + attr = ippFindAttribute(msg, "notify-text", IPP_TAG_TEXT); + if (attr) + { +- const char *val = ippGetString(attr, 0, NULL); ++ const char *val = validate_utf8 (ippGetString(attr, 0, NULL)); + if (!dbus_message_iter_append_string(&iter, &val)) + goto bail; + } diff --git a/abs/extra/cups/cups-systemd-socket.patch b/abs/extra/cups/cups-systemd-socket.patch index ad13a6d..cfbe933 100644 --- a/abs/extra/cups/cups-systemd-socket.patch +++ b/abs/extra/cups/cups-systemd-socket.patch @@ -117,14 +117,12 @@ diff -up cups-1.7rc1/data/cups.service.in.systemd-socket cups-1.7rc1/data/cups.s diff -up cups-1.7rc1/data/cups.socket.in.systemd-socket cups-1.7rc1/data/cups.socket.in --- cups-1.7rc1/data/cups.socket.in.systemd-socket 2013-07-12 11:16:53.259546235 +0200 +++ cups-1.7rc1/data/cups.socket.in 2013-07-12 11:16:53.259546235 +0200 -@@ -0,0 +1,10 @@ +@@ -0,0 +1,8 @@ +[Unit] +Description=CUPS Printing Service Sockets + +[Socket] +ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@ -+ListenStream=@DEFAULT_IPP_PORT@ -+BindIPv6Only=ipv6-only + +[Install] +WantedBy=sockets.target |