diff --git a/extra/cups/PKGBUILD b/extra/cups/PKGBUILD index c4730be3e..d36475137 100644 --- a/extra/cups/PKGBUILD +++ b/extra/cups/PKGBUILD @@ -7,7 +7,7 @@ pkgbase="cups" pkgname=('libcups' 'cups') pkgver=2.2.4 -pkgrel=1 +pkgrel=2 arch=('i686' 'x86_64') license=('GPL') url="https://www.cups.org/" @@ -24,7 +24,7 @@ source=(https://github.com/apple/cups/releases/download/v${pkgver}/cups-${pkgver cups-fix-install-perms.patch # bugfixes cups-systemd-socket.patch -) + cupsGetDests.diff) sha256sums=('596d4db72651c335469ae5f37b0da72ac9f97d73e30838d787065f559dea98cc' 'SKIP' 'd87fa0f0b5ec677aae34668f260333db17ce303aa1a752cba5f8e72623d9acf9' @@ -34,7 +34,8 @@ sha256sums=('596d4db72651c335469ae5f37b0da72ac9f97d73e30838d787065f559dea98cc' 'b8fc2e3bc603495f0278410350ea8f0161d9d83719feb64f573b63430cb4800b' '23349c96f2f7aeb7d48e3bcd35a969f5d5ac8f55a032b0cfaa0a03d7e37ea9af' '2496b683920417c922d58c1f70807f7a0f0c818db9ce75fe182104bd4484027b' - 'cdad3c266cb2abb0f90af3113420fa47a09e3ed974a2ffa9fb6a642e11971d65') + 'cdad3c266cb2abb0f90af3113420fa47a09e3ed974a2ffa9fb6a642e11971d65' + '25c1f212d0055848c9d46195d74ade64514675c83b2098e41ba1144bd6b8a05d') validpgpkeys=('3737FD0D0E63B30172440D2DDBA3A7AB08D76223') # CUPS.org (CUPS.org PGP key) prepare() { @@ -60,7 +61,10 @@ prepare() { sed -i -e '5i\ ' conf/cupsd.conf.in sed -i -e '6i# Disable cups internal logging - use logrotate instead' conf/cupsd.conf.in sed -i -e '7iMaxLogSize 0' conf/cupsd.conf.in - + + # upstream fix for https://bugs.archlinux.org/task/54695 + patch -Np1 -i ../cupsGetDests.diff + # Rebuild configure script for not zipping man-pages. aclocal -I config-scripts autoconf -I config-scripts diff --git a/extra/cups/cupsGetDests.diff b/extra/cups/cupsGetDests.diff new file mode 100644 index 000000000..69e928d52 --- /dev/null +++ b/extra/cups/cupsGetDests.diff @@ -0,0 +1,167 @@ +diff --git a/cups/dest.c b/cups/dest.c +index fc57ed342..9d7426ed3 100644 +--- a/cups/dest.c ++++ b/cups/dest.c +@@ -1015,6 +1015,8 @@ cupsEnumDests( + #endif /* HAVE_DNSSD || HAVE_AVAHI */ + + ++ DEBUG_printf(("cupsEnumDests(flags=%x, msec=%d, cancel=%p, type=%x, mask=%x, cb=%p, user_data=%p)", flags, msec, (void *)cancel, type, mask, (void *)cb, (void *)user_data)); ++ + /* + * Range check input... + */ +@@ -1022,7 +1024,10 @@ cupsEnumDests( + (void)flags; + + if (!cb) ++ { ++ DEBUG_puts("1cupsEnumDests: No callback, returning 0."); + return (0); ++ } + + /* + * Get ready to enumerate... +@@ -1141,7 +1146,10 @@ cupsEnumDests( + + # ifdef HAVE_DNSSD + if (DNSServiceCreateConnection(&data.main_ref) != kDNSServiceErr_NoError) ++ { ++ DEBUG_puts("1cupsEnumDests: Unable to create service browser, returning 0."); + return (0); ++ } + + main_fd = DNSServiceRefSockFD(data.main_ref); + +@@ -1172,8 +1180,8 @@ cupsEnumDests( + # else /* HAVE_AVAHI */ + if ((data.simple_poll = avahi_simple_poll_new()) == NULL) + { +- DEBUG_puts("cupsEnumDests: Unable to create Avahi simple poll object."); +- return (1); ++ DEBUG_puts("1cupsEnumDests: Unable to create Avahi poll, returning 0."); ++ return (0); + } + + avahi_simple_poll_set_func(data.simple_poll, cups_dnssd_poll_cb, &data); +@@ -1183,9 +1191,9 @@ cupsEnumDests( + &error); + if (!data.client) + { +- DEBUG_puts("cupsEnumDests: Unable to create Avahi client."); ++ DEBUG_puts("1cupsEnumDests: Unable to create Avahi client, returning 0."); + avahi_simple_poll_free(data.simple_poll); +- return (1); ++ return (0); + } + + data.browsers = 1; +@@ -1374,6 +1382,8 @@ cupsEnumDests( + # endif /* HAVE_DNSSD */ + #endif /* HAVE_DNSSD || HAVE_AVAHI */ + ++ DEBUG_puts("1cupsEnumDests: Returning 1."); ++ + return (1); + } + +@@ -2040,13 +2050,16 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_ + _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */ + + +- /* ++ DEBUG_printf(("cupsGetDests2(http=%p, dests=%p)", (void *)http, (void *)dests)); ++ ++/* + * Range check the input... + */ + + if (!dests) + { + _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad NULL dests pointer"), 1); ++ DEBUG_puts("1cupsGetDests2: NULL dests pointer, returning 0."); + return (0); + } + +@@ -2061,6 +2074,8 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_ + + if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE) + { ++ DEBUG_printf(("1cupsGetDests2: cupsLastError() is %s, returning 0.", cupsLastErrorString())); ++ + cupsFreeDests(data.num_dests, data.dests); + + *dests = (cups_dest_t *)0; +@@ -2178,6 +2193,8 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_ + if (data.num_dests > 0) + _cupsSetError(IPP_STATUS_OK, NULL, 0); + ++ DEBUG_printf(("1cupsGetDests2: Returning %d destinations.", data.num_dests)); ++ + return (data.num_dests); + } + +diff --git a/xcode/CUPS.xcodeproj/project.pbxproj b/xcode/CUPS.xcodeproj/project.pbxproj +index 2edef8343..bdbb62d19 100644 +--- a/xcode/CUPS.xcodeproj/project.pbxproj ++++ b/xcode/CUPS.xcodeproj/project.pbxproj +@@ -11049,8 +11049,6 @@ + buildSettings = { + ASSETCATALOG_COMPRESSION = lossless; + CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES; +- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; +- CLANG_WARN_COMMA = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; +@@ -11067,7 +11065,7 @@ + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = DEBUG; + GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; +- GCC_TREAT_WARNINGS_AS_ERRORS = YES; ++ GCC_TREAT_WARNINGS_AS_ERRORS = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; +@@ -11096,8 +11094,6 @@ + buildSettings = { + ASSETCATALOG_COMPRESSION = "respect-asset-catalog"; + CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES; +- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; +- CLANG_WARN_COMMA = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; +@@ -11112,7 +11108,7 @@ + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; +- GCC_TREAT_WARNINGS_AS_ERRORS = YES; ++ GCC_TREAT_WARNINGS_AS_ERRORS = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + +diff --git a/cups/dest.c b/cups/dest.c +index 9d7426ed3..09bb76b73 100644 +--- a/cups/dest.c ++++ b/cups/dest.c +@@ -2072,17 +2072,6 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_ + + cupsEnumDests(0, 1000, NULL, 0, 0, (cups_dest_cb_t)cups_get_cb, &data); + +- if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE) +- { +- DEBUG_printf(("1cupsGetDests2: cupsLastError() is %s, returning 0.", cupsLastErrorString())); +- +- cupsFreeDests(data.num_dests, data.dests); +- +- *dests = (cups_dest_t *)0; +- +- return (0); +- } +- + /* + * Make a copy of the "real" queues for a later sanity check... + */ +