This commit is contained in:
Zdenek Dohnal 2020-11-30 14:04:18 +01:00
parent 68dc1f2b34
commit 48e9d6b921
18 changed files with 12 additions and 890 deletions

1
.gitignore vendored
View File

@ -93,3 +93,4 @@ cups-1.4.4-source.tar.bz2
/cups-2.3.0-source.tar.gz
/cups-2.3.1-source.tar.gz
/cups-2.3.3-source.tar.gz
/cups-2.3.3op1-source.tar.gz

View File

@ -1,25 +0,0 @@
From 1157832777d18f614cee9f396d8f34a938adb796 Mon Sep 17 00:00:00 2001
From: Didier Raboud <odyx@debian.org>
Date: Mon, 24 Feb 2020 11:46:49 +0100
Subject: [PATCH] Add Requires=cups.socket to cups.service, to make sure they
start in the right order
---
scheduler/cups.service.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/scheduler/cups.service.in b/scheduler/cups.service.in
index 5273762fb..e9052d7a3 100644
--- a/scheduler/cups.service.in
+++ b/scheduler/cups.service.in
@@ -2,6 +2,7 @@
Description=CUPS Scheduler
Documentation=man:cupsd(8)
After=network.target sssd.service ypbind.service
+Requires=cups.socket
[Service]
ExecStart=@sbindir@/cupsd -l
--
2.26.2

View File

@ -1,43 +0,0 @@
diff --git a/cups/http-support.c b/cups/http-support.c
index 6317514..ea8640c 100644
--- a/cups/http-support.c
+++ b/cups/http-support.c
@@ -1,8 +1,9 @@
/*
* HTTP support routines for CUPS.
*
- * Copyright 2007-2019 by Apple Inc.
- * Copyright 1997-2007 by Easy Software Products, all rights reserved.
+ * Copyright © 2020 by Michael R Sweet
+ * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 1997-2007 by Easy Software Products, all rights reserved.
*
* Licensed under Apache License v2.0. See the file "LICENSE" for more
* information.
@@ -26,6 +27,8 @@
#elif defined(HAVE_AVAHI)
# include <avahi-client/client.h>
# include <avahi-client/lookup.h>
+// for avahi_free()
+# include <avahi-common/malloc.h>
# include <avahi-common/simple-watch.h>
#endif /* HAVE_DNSSD */
@@ -2536,6 +2539,8 @@ http_resolve_cb(
memcpy(uuid, value, valueLen);
uuid[valueLen] = '\0';
+ avahi_free(value);
+
if (_cups_strcasecmp(uuid, uribuf->uuid))
{
if (uribuf->options & _HTTP_RESOLVE_STDERR)
@@ -2620,6 +2625,8 @@ http_resolve_cb(
memcpy(resource + 1, value, valueLen);
resource[valueLen + 1] = '\0';
}
+
+ avahi_free(value);
}
else
{

View File

@ -1,52 +0,0 @@
From 48655d013efbbebf5cb489458789e15356ea63eb Mon Sep 17 00:00:00 2001
From: Tim Waugh <twaugh@redhat.com>
Date: Tue, 9 Aug 2016 18:11:30 +0200
Subject: [PATCH] Let snmp backend also use manufacturer-specific MIBs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
… of HP and Ricoh to obtain the device IDs of network-connected
printers. This way we get more reliable information about make and model
and in addition the supported page description languages, which allows one to
identify whether an optional PostScript add-on is installed or for an
unsupported printer which generic PPD is the best choice (requested by
Ricoh).
Bug: https://github.com/apple/cups/issues/3552
Patch-Name: Let-snmp-backend-also-use-manufacturer-specific-MIBs.patch
---
backend/snmp.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/backend/snmp.c b/backend/snmp.c
index 66ac884c6..9572822a8 100644
--- a/backend/snmp.c
+++ b/backend/snmp.c
@@ -154,6 +154,8 @@ static const int UriOID[] = { CUPS_OID_ppmPortServiceNameOrURI, 1, 1, -1 };
static const int LexmarkProductOID[] = { 1,3,6,1,4,1,641,2,1,2,1,2,1,-1 };
static const int LexmarkProductOID2[] = { 1,3,6,1,4,1,674,10898,100,2,1,2,1,2,1,-1 };
static const int LexmarkDeviceIdOID[] = { 1,3,6,1,4,1,641,2,1,2,1,3,1,-1 };
+static const int HPDeviceIdOID[] = { 1,3,6,1,4,1,11,2,3,9,1,1,7,0,-1 };
+static const int RicohDeviceIdOID[] = { 1,3,6,1,4,1,367,3,2,1,1,1,11,0,-1 };
static const int XeroxProductOID[] = { 1,3,6,1,4,1,128,2,1,3,1,2,0,-1 };
static cups_array_t *DeviceURIs = NULL;
static int HostNameLookups = 0;
@@ -969,9 +971,15 @@ read_snmp_response(int fd) /* I - SNMP socket file descriptor */
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
packet.community, CUPS_ASN1_GET_REQUEST,
DEVICE_ID, LexmarkDeviceIdOID);
+ _cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
+ packet.community, CUPS_ASN1_GET_REQUEST,
+ DEVICE_ID, RicohDeviceIdOID);
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
packet.community, CUPS_ASN1_GET_REQUEST,
DEVICE_PRODUCT, XeroxProductOID);
+ _cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
+ packet.community, CUPS_ASN1_GET_REQUEST,
+ DEVICE_ID, HPDeviceIdOID);
break;
case DEVICE_DESCRIPTION :
--
2.26.2

View File

@ -1,43 +0,0 @@
From 5313c22785446473771e07d5adb1d2f11cbcbfe7 Mon Sep 17 00:00:00 2001
From: Zdenek Dohnal <zdohnal@redhat.com>
Date: Mon, 9 Nov 2020 07:40:20 +0100
Subject: [PATCH] backend,scheduler/ipp.c: Fix 'printer-alert' invalid free
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The fix is created by Bernhard Übelacker from apple/cups #5826.
---
backend/ipp.c | 2 +-
scheduler/ipp.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/backend/ipp.c b/backend/ipp.c
index 35c0711c0..3e601b2ad 100644
--- a/backend/ipp.c
+++ b/backend/ipp.c
@@ -3075,7 +3075,7 @@ report_printer_state(ipp_t *ipp) /* I - IPP response */
* Report alerts and messages...
*/
- if ((pa = ippFindAttribute(ipp, "printer-alert", IPP_TAG_TEXT)) != NULL)
+ if ((pa = ippFindAttribute(ipp, "printer-alert", IPP_TAG_STRING)) != NULL)
report_attr(pa);
if ((pam = ippFindAttribute(ipp, "printer-alert-message",
diff --git a/scheduler/ipp.c b/scheduler/ipp.c
index 0c44d7d4a..68763a0f1 100644
--- a/scheduler/ipp.c
+++ b/scheduler/ipp.c
@@ -4891,7 +4891,7 @@ copy_printer_attrs(
}
if (printer->alert && (!ra || cupsArrayFind(ra, "printer-alert")))
- ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_STRING, "printer-alert", NULL, printer->alert);
+ ippAddOctetString(con->response, IPP_TAG_PRINTER, "printer-alert", printer->alert, (int)strlen(printer->alert));
if (printer->alert_description && (!ra || cupsArrayFind(ra, "printer-alert-description")))
ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-alert-description", NULL, printer->alert_description);
--
2.26.2

View File

@ -1,25 +0,0 @@
diff --git a/cups/http-addrlist.c b/cups/http-addrlist.c
index e4ffc3d..a989055 100644
--- a/cups/http-addrlist.c
+++ b/cups/http-addrlist.c
@@ -240,7 +240,10 @@ httpAddrConnect2(
}
if (!addrlist && nfds == 0)
+ {
+ errno = EHOSTDOWN;
break;
+ }
/*
* See if we can connect to any of the addresses so far...
@@ -371,6 +374,9 @@ httpAddrConnect2(
remaining -= 250;
}
+ if (remaining <= 0)
+ errno = ETIMEDOUT;
+
while (nfds > 0)
{
nfds --;

View File

@ -1,39 +0,0 @@
diff --git a/cups/ipp-vars.c b/cups/ipp-vars.c
index 395b0eb..d863287 100644
--- a/cups/ipp-vars.c
+++ b/cups/ipp-vars.c
@@ -12,7 +12,7 @@
* Include necessary headers...
*/
-#include <cups/cups.h>
+#include "cups/cups-private.h"
#include "ipp-private.h"
#include "string-private.h"
#include "debug-internal.h"
@@ -220,10 +220,22 @@ _ippVarsSet(_ipp_vars_t *v, /* I - IPP variables */
{
if (!strcmp(name, "uri"))
{
- char uri[1024]; /* New printer URI */
- http_uri_status_t uri_status; /* URI status */
+ char uri[1024]; /* New printer URI */
+ char resolved[1024]; /* Resolved mDNS URI */
- if ((uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, value, v->scheme, sizeof(v->scheme), v->username, sizeof(v->username), v->host, sizeof(v->host), &(v->port), v->resource, sizeof(v->resource))) < HTTP_URI_STATUS_OK)
+ if (strstr(value, "._tcp"))
+ {
+ /*
+ * Resolve URI...
+ */
+
+ if (!_httpResolveURI(value, resolved, sizeof(resolved), _HTTP_RESOLVE_DEFAULT, NULL, NULL))
+ return (0);
+
+ value = resolved;
+ }
+
+ if (httpSeparateURI(HTTP_URI_CODING_ALL, value, v->scheme, sizeof(v->scheme), v->username, sizeof(v->username), v->host, sizeof(v->host), &(v->port), v->resource, sizeof(v->resource)) < HTTP_URI_STATUS_OK)
return (0);
if (v->username[0])

View File

@ -1,13 +0,0 @@
diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c
index 94a125a..79aab32 100644
--- a/cups/ppd-cache.c
+++ b/cups/ppd-cache.c
@@ -3228,7 +3228,7 @@ _ppdCreateFromIPP(char *buffer, /* I - Filename buffer */
cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 10 -\"\n");
}
else
- cupsFilePuts(fp, "*cupsManualCopies: true\n");
+ cupsFilePuts(fp, "*cupsManualCopies: True\n");
if (is_apple)
cupsFilePuts(fp, "*cupsFilter2: \"image/urf image/urf 100 -\"\n");
if (is_pwg)

View File

@ -1,22 +0,0 @@
diff --git a/ppdc/ppdc-import.cxx b/ppdc/ppdc-import.cxx
index 04b587d..60d8834 100644
--- a/ppdc/ppdc-import.cxx
+++ b/ppdc/ppdc-import.cxx
@@ -27,7 +27,7 @@ ppdcSource::import_ppd(const char *f) // I - Filename
char line[256], // Comment line
*ptr; // Pointer into line
int cost; // Cost for filter
- ppd_file_t *ppd; // PPD file data
+ ppd_file_t *ppd = NULL; // PPD file data
ppd_group_t *group; // PPD group
ppd_option_t *option; // PPD option
ppd_choice_t *choice; // PPD choice
@@ -323,5 +323,8 @@ ppdcSource::import_ppd(const char *f) // I - Filename
}
}
+ if (ppd)
+ ppdClose(ppd);
+
return (1);
}

View File

@ -1,16 +0,0 @@
diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c
index 167e1df..6c05735 100644
--- a/cups/ppd-cache.c
+++ b/cups/ppd-cache.c
@@ -3790,6 +3790,11 @@ _ppdCreateFromIPP(char *buffer, /* I - Filename buffer */
PRINTF_COLOROPTION("RGB", _("Color"), CUPS_CSPACE_SRGB, 8)
default_color = "RGB";
+
+ // Apparently some printers only advertise color support, so make sure
+ // we also do grayscale for these printers...
+ if (!ippContainsString(attr, "sgray_8") && !ippContainsString(attr, "black_1") && !ippContainsString(attr, "black_8"))
+ PRINTF_COLOROPTION("Gray", _("GrayScale"), CUPS_CSPACE_SW, 8)
}
else if (!strcasecmp(keyword, "adobe-rgb_16") || !strcmp(keyword, "ADOBERGB48") || !strcmp(keyword, "ADOBERGB24-48"))
{

View File

@ -1,14 +0,0 @@
diff --git a/filter/rastertopwg.c b/filter/rastertopwg.c
index 1e63e4e..b3a2e87 100644
--- a/filter/rastertopwg.c
+++ b/filter/rastertopwg.c
@@ -260,7 +260,8 @@ main(int argc, /* I - Number of command-line args */
}
if (inheader.cupsPageSizeName[0] &&
- (pwg_size = _ppdCacheGetSize(cache, inheader.cupsPageSizeName)) != NULL)
+ (pwg_size = _ppdCacheGetSize(cache, inheader.cupsPageSizeName)) != NULL &&
+ pwg_size->map.pwg)
{
strlcpy(outheader.cupsPageSizeName, pwg_size->map.pwg,
sizeof(outheader.cupsPageSizeName));

View File

@ -1,191 +0,0 @@
From 9c1dcee087eee3c57937a223df76757a61dfd046 Mon Sep 17 00:00:00 2001
From: Michael R Sweet <msweet@msweet.org>
Date: Sat, 14 Nov 2020 09:58:12 -0500
Subject: [PATCH] Add --enable-sync-on-close configure option (Issue #37)
---
CHANGES-OPENPRINTING.md | 1 +
conf/cups-files.conf.in | 2 +-
config-scripts/cups-defaults.m4 | 10 ++++++++++
config.h.in | 7 +++++++
configure | 17 +++++++++++++++++
man/cups-files.conf.5 | 3 +--
scheduler/conf.c | 4 ++++
vcnet/config.h | 7 +++++++
xcode/config.h | 7 +++++++
9 files changed, 55 insertions(+), 3 deletions(-)
diff --git a/conf/cups-files.conf.in b/conf/cups-files.conf.in
index 4a78ba615..af11fcce6 100644
--- a/conf/cups-files.conf.in
+++ b/conf/cups-files.conf.in
@@ -7,7 +7,7 @@
#FatalErrors @CUPS_FATAL_ERRORS@
# Do we call fsync() after writing configuration or status files?
-#SyncOnClose No
+#SyncOnClose @CUPS_SYNC_ON_CLOSE@
# Default user and group for filters/backends/helper programs; this cannot be
# any user or group that resolves to ID 0 for security reasons...
diff --git a/config-scripts/cups-defaults.m4 b/config-scripts/cups-defaults.m4
index b6051778d..df386b822 100644
--- a/config-scripts/cups-defaults.m4
+++ b/config-scripts/cups-defaults.m4
@@ -137,6 +137,16 @@ else
fi
AC_SUBST(CUPS_PAGE_LOG_FORMAT)
+dnl Default SyncOnClose
+AC_ARG_ENABLE(sync_on_close, [ --enable-sync-on-close enable SyncOnClose (off by default)])
+if test "x$enable_sync_on_close" = xyes; then
+ CUPS_SYNC_ON_CLOSE="Yes"
+ AC_DEFINE(CUPS_DEFAULT_SYNC_ON_CLOSE)
+else
+ CUPS_SYNC_ON_CLOSE="No"
+fi
+AC_SUBST(CUPS_SYNC_ON_CLOSE)
+
dnl Default Browsing
AC_ARG_ENABLE(browsing, [ --disable-browsing disable Browsing by default])
if test "x$enable_browsing" = xno; then
diff --git a/config.h.in b/config.h.in
index 6a197ecc5..6343e6dd0 100644
--- a/config.h.in
+++ b/config.h.in
@@ -101,6 +101,13 @@
#define CUPS_DEFAULT_MAX_COPIES 9999
+/*
+ * Default SyncOnClose value...
+ */
+
+#undef CUPS_DEFAULT_SYNC_ON_CLOSE
+
+
/*
* Do we have domain socket support, and if so what is the default one?
*/
diff --git a/configure b/configure
index a7e7a825e..ee25f1f24 100755
--- a/configure
+++ b/configure
@@ -642,6 +642,7 @@ CUPS_USER
CUPS_DEFAULT_SHARED
CUPS_BROWSE_LOCAL_PROTOCOLS
CUPS_BROWSING
+CUPS_SYNC_ON_CLOSE
CUPS_PAGE_LOG_FORMAT
CUPS_ACCESS_LOG_LEVEL
CUPS_LOG_LEVEL
@@ -903,6 +904,7 @@ with_fatal_errors
with_log_level
with_access_log_level
enable_page_logging
+enable_sync_on_close
enable_browsing
with_local_protocols
enable_default_shared
@@ -1573,6 +1575,7 @@ Optional Features:
--disable-systemd disable systemd support
--enable-upstart enable upstart support
--enable-page-logging enable page_log by default
+ --enable-sync-on-close enable SyncOnClose (off by default)
--disable-browsing disable Browsing by default
--disable-default-shared
disable DefaultShared by default
@@ -9459,6 +9462,20 @@ else
fi
+# Check whether --enable-sync_on_close was given.
+if test "${enable_sync_on_close+set}" = set; then :
+ enableval=$enable_sync_on_close;
+fi
+
+if test "x$enable_sync_on_close" = xyes; then
+ CUPS_SYNC_ON_CLOSE="Yes"
+ $as_echo "#define CUPS_DEFAULT_SYNC_ON_CLOSE 1" >>confdefs.h
+
+else
+ CUPS_SYNC_ON_CLOSE="No"
+fi
+
+
# Check whether --enable-browsing was given.
if test "${enable_browsing+set}" = set; then :
enableval=$enable_browsing;
diff --git a/man/cups-files.conf.5 b/man/cups-files.conf.5
index b451e2f92..d9b9a63e3 100644
--- a/man/cups-files.conf.5
+++ b/man/cups-files.conf.5
@@ -7,7 +7,7 @@
.\" Licensed under Apache License v2.0. See the file "LICENSE" for more
.\" information.
.\"
-.TH cups-files.conf 5 "CUPS" "26 April 2019" "Apple Inc."
+.TH cups-files.conf 5 "CUPS" "14 November 2020" "Apple Inc."
.SH NAME
cups\-files.conf \- file and directory configuration file for cups
.SH DESCRIPTION
@@ -211,7 +211,6 @@ The default is "/var/run/cups" or "/etc/cups" depending on the platform.
Specifies whether the scheduler calls
.BR fsync (2)
after writing configuration or state files.
-The default is "No".
.\"#SystemGroup
.TP 5
\fBSystemGroup \fIgroup-name \fR[ ... \fIgroup-name\fR ]
diff --git a/scheduler/conf.c b/scheduler/conf.c
index 839cd6866..8dfebe546 100644
--- a/scheduler/conf.c
+++ b/scheduler/conf.c
@@ -735,7 +735,11 @@ cupsdReadConfiguration(void)
RootCertDuration = 300;
Sandboxing = CUPSD_SANDBOXING_STRICT;
StrictConformance = FALSE;
+#ifdef CUPS_DEFAULT_SYNC_ON_CLOSE
+ SyncOnClose = TRUE;
+#else
SyncOnClose = FALSE;
+#endif /* CUPS_DEFAULT_SYNC_ON_CLOSE */
Timeout = 900;
WebInterface = CUPS_DEFAULT_WEBIF;
diff --git a/vcnet/config.h b/vcnet/config.h
index 5e105c826..05d36dcfc 100644
--- a/vcnet/config.h
+++ b/vcnet/config.h
@@ -181,6 +181,13 @@ typedef unsigned long useconds_t;
#define CUPS_DEFAULT_MAX_COPIES 9999
+/*
+ * Default SyncOnClose value...
+ */
+
+/* #undef CUPS_DEFAULT_SYNC_ON_CLOSE */
+
+
/*
* Do we have domain socket support, and if so what is the default one?
*/
diff --git a/xcode/config.h b/xcode/config.h
index 7a3f98aa9..5f8117467 100644
--- a/xcode/config.h
+++ b/xcode/config.h
@@ -102,6 +102,13 @@
#define CUPS_DEFAULT_MAX_COPIES 9999
+/*
+ * Default SyncOnClose value...
+ */
+
+/* #undef CUPS_DEFAULT_SYNC_ON_CLOSE */
+
+
/*
* Do we have domain socket support, and if so what is the default one?
*/

View File

@ -1,40 +0,0 @@
diff --git a/scheduler/cups.service.in b/scheduler/cups.service.in
index cd23343..928d77f 100644
--- a/scheduler/cups.service.in
+++ b/scheduler/cups.service.in
@@ -1,11 +1,11 @@
[Unit]
Description=CUPS Scheduler
Documentation=man:cupsd(8)
-After=sssd.service
+After=network.target sssd.service
[Service]
ExecStart=@sbindir@/cupsd -l
-Type=simple
+Type=notify
Restart=on-failure
[Install]
diff --git a/scheduler/main.c b/scheduler/main.c
index 4fee24f..206db30 100644
--- a/scheduler/main.c
+++ b/scheduler/main.c
@@ -706,8 +706,16 @@ main(int argc, /* I - Number of command-line args */
#ifdef HAVE_ONDEMAND
if (OnDemand)
+ {
cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started on demand.");
- else
+# ifdef HAVE_SYSTEMD
+ sd_notifyf(0, "READY=1\n"
+ "STATUS=Scheduler is running...\n"
+ "MAINPID=%lu",
+ (unsigned long) getpid());
+# endif /* HAVE_SYSTEMD */
+ } else
+
#endif /* HAVE_ONDEMAND */
if (fg)
cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started in foreground.");

View File

@ -1,265 +0,0 @@
diff --git a/configure b/configure
index 6f34f65..e57e603 100755
--- a/configure
+++ b/configure
@@ -9993,7 +9993,7 @@ fi
-ac_config_files="$ac_config_files Makedefs conf/cups-files.conf conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf cups-config desktop/cups.desktop doc/index.html scheduler/cups-lpd.xinetd scheduler/cups.sh scheduler/cups.xml scheduler/org.cups.cups-lpd.plist scheduler/org.cups.cups-lpdAT.service scheduler/org.cups.cupsd.path scheduler/org.cups.cupsd.service scheduler/org.cups.cupsd.socket templates/header.tmpl packaging/cups.list $LANGFILES"
+ac_config_files="$ac_config_files Makedefs conf/cups-files.conf conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf cups-config desktop/cups.desktop doc/index.html scheduler/cups-lpd.xinetd scheduler/cups.sh scheduler/cups.xml scheduler/org.cups.cups-lpd.plist scheduler/cups-lpdAT.service scheduler/cups.path scheduler/cups.service scheduler/cups.socket templates/header.tmpl packaging/cups.list $LANGFILES"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -10700,10 +10700,10 @@ do
"scheduler/cups.sh") CONFIG_FILES="$CONFIG_FILES scheduler/cups.sh" ;;
"scheduler/cups.xml") CONFIG_FILES="$CONFIG_FILES scheduler/cups.xml" ;;
"scheduler/org.cups.cups-lpd.plist") CONFIG_FILES="$CONFIG_FILES scheduler/org.cups.cups-lpd.plist" ;;
- "scheduler/org.cups.cups-lpdAT.service") CONFIG_FILES="$CONFIG_FILES scheduler/org.cups.cups-lpdAT.service" ;;
- "scheduler/org.cups.cupsd.path") CONFIG_FILES="$CONFIG_FILES scheduler/org.cups.cupsd.path" ;;
- "scheduler/org.cups.cupsd.service") CONFIG_FILES="$CONFIG_FILES scheduler/org.cups.cupsd.service" ;;
- "scheduler/org.cups.cupsd.socket") CONFIG_FILES="$CONFIG_FILES scheduler/org.cups.cupsd.socket" ;;
+ "scheduler/cups-lpdAT.service") CONFIG_FILES="$CONFIG_FILES scheduler/cups-lpdAT.service" ;;
+ "scheduler/cups.path") CONFIG_FILES="$CONFIG_FILES scheduler/cups.path" ;;
+ "scheduler/cups.service") CONFIG_FILES="$CONFIG_FILES scheduler/cups.service" ;;
+ "scheduler/cups.socket") CONFIG_FILES="$CONFIG_FILES scheduler/cups.socket" ;;
"templates/header.tmpl") CONFIG_FILES="$CONFIG_FILES templates/header.tmpl" ;;
"packaging/cups.list") CONFIG_FILES="$CONFIG_FILES packaging/cups.list" ;;
"$LANGFILES") CONFIG_FILES="$CONFIG_FILES $LANGFILES" ;;
diff --git a/configure.ac b/configure.ac
index 44bf6eb..78b318e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -72,10 +72,10 @@ AC_OUTPUT(Makedefs
scheduler/cups.sh
scheduler/cups.xml
scheduler/org.cups.cups-lpd.plist
- scheduler/org.cups.cups-lpdAT.service
- scheduler/org.cups.cupsd.path
- scheduler/org.cups.cupsd.service
- scheduler/org.cups.cupsd.socket
+ scheduler/cups-lpdAT.service
+ scheduler/cups.path
+ scheduler/cups.service
+ scheduler/cups.socket
templates/header.tmpl
packaging/cups.list
$LANGFILES)
diff --git a/packaging/cups.list.in b/packaging/cups.list.in
index 537c194..a167a99 100644
--- a/packaging/cups.list.in
+++ b/packaging/cups.list.in
@@ -1,6 +1,7 @@
#
# ESP Package Manager (EPM) file list for CUPS.
#
+# Copyright © 2020 by Michael R Sweet
# Copyright © 2007-2019 by Apple Inc.
# Copyright © 1997-2007 by Easy Software Products, all rights reserved.
#
@@ -10,8 +11,8 @@
# Product information
%product CUPS
-%copyright 2007-2019 by Apple Inc.
-%vendor Apple Inc.
+%copyright 2020 by Michael R Sweet, 2007-2019 by Apple Inc.
+%vendor OpenPrinting
#%license LICENSE
%readme LICENSE
%format rpm
@@ -20,8 +21,9 @@
%format !rpm
%version @CUPS_VERSION@
%format all
-%description CUPS is the standards-based, open source printing system developed by
-%description Apple Inc. for macOS® and other UNIX®-like operating systems.
+%description CUPS is the standards-based, open source printing system developed
+%description by Apple Inc. and maintained by OpenPrinting for macOS® and other
+%description UNIX®-like operating systems.
%format rpm
%provides lpd
diff --git a/packaging/cups.spec.in b/packaging/cups.spec.in
index d37103c..59caee0 100644
--- a/packaging/cups.spec.in
+++ b/packaging/cups.spec.in
@@ -3,6 +3,7 @@
#
# Original version by Jason McMullan <jmcc@ontv.com>.
#
+# Copyright © 2020 by Michael R Sweet
# Copyright © 2007-2019 by Apple Inc.
# Copyright © 1999-2007 by Easy Software Products, all rights reserved.
#
@@ -48,7 +49,7 @@ Group: System Environment/Daemons
Source: https://github.com/apple/cups/releases/download/v%{version}/cups-%{version}-source.tar.gz
Url: http://www.cups.org
Packager: Anonymous <anonymous@example.com>
-Vendor: Example Corp
+Vendor: OpenPrinting
# Package names are as defined for Red Hat (and clone) distributions
BuildRequires: gnutls-devel, pam-devel
@@ -97,7 +98,8 @@ Requires: %{name} = %{epoch}:%{version} xinetd
%description
CUPS is the standards-based, open source printing system developed by
-Apple Inc. for macOS® and other UNIX®-like operating systems.
+Apple Inc. and maintained by OpenPrinting for macOS® and other UNIX®-like
+operating systems.
%description devel
This package provides the CUPS headers and development environment.
@@ -126,11 +128,11 @@ rm -rf $RPM_BUILD_ROOT/usr/share/cups/banners $RPM_BUILD_ROOT/usr/share/cups/dat
%post
%if %{?_with_systemd:1}%{!?_with_systemd:0}
-/bin/systemctl enable org.cups.cupsd.service
+/bin/systemctl enable cups.service
if test $1 -ge 1; then
- /bin/systemctl stop org.cups.cupsd.service
- /bin/systemctl start org.cups.cupsd.service
+ /bin/systemctl stop cups.service
+ /bin/systemctl start cups.service
fi
%else
@@ -150,8 +152,8 @@ fi
%preun
%if %{?_with_systemd:1}%{!?_with_systemd:0}
if test $1 -ge 1; then
- /bin/systemctl stop org.cups.cupsd.service
- /bin/systemctl disable org.cups.cupsd.service
+ /bin/systemctl stop cups.service
+ /bin/systemctl disable cups.service
fi
%else
@@ -164,8 +166,8 @@ fi
%postun
%if %{?_with_systemd:1}%{!?_with_systemd:0}
if test $1 -ge 1; then
- /bin/systemctl stop org.cups.cupsd.service
- /bin/systemctl start org.cups.cupsd.service
+ /bin/systemctl stop cups.service
+ /bin/systemctl start cups.service
fi
%else
@@ -203,7 +205,7 @@ rm -rf $RPM_BUILD_ROOT
%if %{?_with_systemd:1}%{!?_with_systemd:0}
# SystemD
-/usr/lib/systemd/system/org.cups.cupsd.*
+/usr/lib/systemd/system/cups.*
%else
# Legacy init support on Linux
@@ -425,7 +427,7 @@ rm -rf $RPM_BUILD_ROOT
%defattr(-,root,root)
%if %{?_with_systemd:1}%{!?_with_systemd:0}
# SystemD
-/usr/lib/systemd/system/org.cups.cups-lpd*
+/usr/lib/systemd/system/cups-lpd*
%else
# Legacy xinetd
/etc/xinetd.d/cups-lpd
diff --git a/scheduler/Makefile b/scheduler/Makefile
index b50bd0a..a9b6ad6 100644
--- a/scheduler/Makefile
+++ b/scheduler/Makefile
@@ -194,11 +194,11 @@ install-data:
if test "x$(SYSTEMD_DIR)" != x; then \
echo Installing systemd configuration files...; \
$(INSTALL_DIR) $(BUILDROOT)$(SYSTEMD_DIR); \
- $(INSTALL_DATA) org.cups.cupsd.path $(BUILDROOT)$(SYSTEMD_DIR); \
- $(INSTALL_DATA) org.cups.cupsd.service $(BUILDROOT)$(SYSTEMD_DIR); \
- $(INSTALL_DATA) org.cups.cupsd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
- $(INSTALL_DATA) org.cups.cups-lpdAT.service $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cups-lpd@.service; \
- $(INSTALL_DATA) org.cups.cups-lpd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
+ $(INSTALL_DATA) cups.path $(BUILDROOT)$(SYSTEMD_DIR); \
+ $(INSTALL_DATA) cups.service $(BUILDROOT)$(SYSTEMD_DIR); \
+ $(INSTALL_DATA) cups.socket $(BUILDROOT)$(SYSTEMD_DIR); \
+ $(INSTALL_DATA) cups-lpdAT.service $(BUILDROOT)$(SYSTEMD_DIR)/cups-lpd@.service; \
+ $(INSTALL_DATA) cups-lpd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
elif test "x$(XINETD)" != x; then \
echo Installing xinetd configuration file for cups-lpd...; \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(XINETD); \
@@ -294,9 +294,9 @@ uninstall:
fi
if test "x$SYSTEMD_DIR" != x; then \
echo Uninstalling systemd files...; \
- $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cupsd.path; \
- $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cupsd.service; \
- $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cupsd.socket; \
+ $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/cups.path; \
+ $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/cups.service; \
+ $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/cups.socket; \
fi
if test "x$(SMFMANIFESTDIR)" != x; then \
echo Uninstalling SMF manifest file...;\
diff --git a/scheduler/org.cups.cups-lpd.socket b/scheduler/cups-lpd.socket
similarity index 77%
rename from scheduler/org.cups.cups-lpd.socket
rename to scheduler/cups-lpd.socket
index ed23f9d..eb84459 100644
--- a/scheduler/org.cups.cups-lpd.socket
+++ b/scheduler/cups-lpd.socket
@@ -1,6 +1,6 @@
[Unit]
Description=CUPS LPD Server Socket
-PartOf=org.cups.cups-lpd.service
+PartOf=cups-lpd.service
[Socket]
ListenStream=515
diff --git a/scheduler/org.cups.cups-lpdAT.service.in b/scheduler/cups-lpdAT.service.in
similarity index 100%
rename from scheduler/org.cups.cups-lpdAT.service.in
rename to scheduler/cups-lpdAT.service.in
diff --git a/scheduler/org.cups.cupsd.path.in b/scheduler/cups.path.in
similarity index 80%
rename from scheduler/org.cups.cupsd.path.in
rename to scheduler/cups.path.in
index 0f1cc46..7c8509f 100644
--- a/scheduler/org.cups.cupsd.path.in
+++ b/scheduler/cups.path.in
@@ -1,6 +1,6 @@
[Unit]
Description=CUPS Scheduler
-PartOf=org.cups.cupsd.service
+PartOf=cups.service
[Path]
PathExists=@CUPS_CACHEDIR@/org.cups.cupsd
diff --git a/scheduler/org.cups.cupsd.service.in b/scheduler/cups.service.in
similarity index 79%
rename from scheduler/org.cups.cupsd.service.in
rename to scheduler/cups.service.in
index 5273762..cd23343 100644
--- a/scheduler/org.cups.cupsd.service.in
+++ b/scheduler/cups.service.in
@@ -9,5 +9,5 @@ Type=simple
Restart=on-failure
[Install]
-Also=org.cups.cupsd.socket org.cups.cupsd.path
+Also=cups.socket cups.path
WantedBy=printer.target
diff --git a/scheduler/org.cups.cupsd.socket.in b/scheduler/cups.socket.in
similarity index 80%
rename from scheduler/org.cups.cupsd.socket.in
rename to scheduler/cups.socket.in
index 613b977..3c37d72 100644
--- a/scheduler/org.cups.cupsd.socket.in
+++ b/scheduler/cups.socket.in
@@ -1,6 +1,6 @@
[Unit]
Description=CUPS Scheduler
-PartOf=org.cups.cupsd.service
+PartOf=cups.service
[Socket]
ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@

View File

@ -1,13 +0,0 @@
diff --git a/cgi-bin/admin.c b/cgi-bin/admin.c
index a87e6be..4600d33 100644
--- a/cgi-bin/admin.c
+++ b/cgi-bin/admin.c
@@ -974,6 +974,8 @@ do_am_printer(http_t *http, /* I - HTTP connection */
cgiSetVariable("TEMPLATE_NAME", template);
}
+
+ cgiSetVariable("DEVICE_URI", var);
}
}

View File

@ -1,12 +0,0 @@
diff -up cups-2.2.12/scheduler/cups.service.in.ypbind cups-2.2.12/scheduler/cups.service.in
--- cups-2.2.12/scheduler/cups.service.in.ypbind 2019-08-19 10:00:47.586326493 +0200
+++ cups-2.2.12/scheduler/cups.service.in 2019-08-19 10:01:39.295890076 +0200
@@ -1,7 +1,7 @@
[Unit]
Description=CUPS Scheduler
Documentation=man:cupsd(8)
-After=network.target sssd.service
+After=network.target sssd.service ypbind.service
[Service]
ExecStart=@sbindir@/cupsd -l

View File

@ -10,15 +10,18 @@
#%%global prever rc1
#%%global VERSION %%{version}%%{prever}
%global VERSION %{version}
# Openprinting version
%global OP_VER op1
Summary: CUPS printing system
Name: cups
Epoch: 1
Version: 2.3.3
Release: 20%{?dist}
Version: 2.3.3%{OP_VER}
Release: 1%{?dist}
License: ASL 2.0
Url: http://www.cups.org/
Source0: https://github.com/apple/cups/releases/download/v%{VERSION}/cups-%{VERSION}-source.tar.gz
# Apple stopped uploading the new versions into github, use OpenPrinting fork
Source0: https://github.com/OpenPrinting/cups/releases/download/v%{VERSION}/cups-%{VERSION}-source.tar.gz
# Pixmap for desktop file
Source1: cupsprinter.png
# cups_serverbin macro definition for use during builds
@ -65,55 +68,7 @@ Patch13: cups-dymo-deviceid.patch
Patch100: cups-lspp.patch
%endif
#### UPSTREAM PATCHES ####
# fixing snmp oid for hp and ricoh printers - taken from upstream
Patch1000: 0001-Let-snmp-backend-also-use-manufacturer-specific-MIBs.patch
# needed for correct color support of Canon printers, which
# reports better options in print-color-mode-supported than
# in pwg-raster-document-type-supported
# https://github.com/apple/cups/pull/5722/
Patch1001: cups-prioritize-print-color-mode.patch
# leaks ppd struct in ppdc
# https://github.com/apple/cups/pull/5738/
Patch1002: cups-ppdleak.patch
# crashes with wide roll printers in rastertopwg filter
# https://github.com/apple/cups/pull/5773/
Patch1003: cups-rastertopwg-crash.patch
# job for disconnected devices are processing for eternity
# https://github.com/apple/cups/pull/5782
Patch1004: cups-etimedout.patch
# cgi script creates a bad uri in web ui
# https://github.com/apple/cups/pull/5792
Patch1005: cups-webui-uri.patch
# ipptool doesn't support mdns uris
# https://github.com/apple/cups/pull/5793
Patch1006: cups-ipptool-mdns-uri.patch
# ppd generator creates invalid cupsManualCopies entry, causing
# printing only one copy everytime
# https://github.com/apple/cups/pull/5807
Patch1007: cups-manual-copies.patch
# invalid free for printer-alert IPP attribute, because it was
# freed as a different attribute type than it was allocated
# backported from upstream https://github.com/OpenPrinting/cups/pull/43
Patch1008: 0001-backend-scheduler-ipp.c-Fix-printer-alert-invalid-fr.patch
# https://github.com/OpenPrinting/cups/pull/49
# https://github.com/OpenPrinting/cups/pull/52
Patch1009: 0001-Fix-memory-leak-Issue-49.patch
# https://github.com/OpenPrinting/cups/commit/a72b0140ee9ad72f7ffc1f46fbe962bde159cbb8
# https://github.com/OpenPrinting/cups/commit/4999193d4778288e6bbddbbb86dbbb70835ea982
Patch1010: cups-unit-files.patch
# change to notify type, because when it fails to start, it gives a error
# message + renaming org.cups.cupsd names, because we have cups units in
# in older Fedoras
# https://github.com/OpenPrinting/cups/pull/51
Patch1011: cups-systemd-socket.patch
# ypbind must be started before cups if NIS configured
# https://github.com/OpenPrinting/cups/pull/51
Patch1012: cups-ypbind.patch
# https://github.com/OpenPrinting/cups/pull/31
Patch1013: 0001-Add-Requires-cups.socket-to-cups.service-to-make-sur.patch
# needs to be set to Yes to avoid race conditions
Patch1014: cups-synconclose.patch
#### UPSTREAM PATCHES (starts with 1000) ####
##### Patches removed because IMHO they aren't no longer needed
##### but still I'll leave them in git in case their removal
@ -298,30 +253,6 @@ to CUPS daemon. This solution will substitute printer drivers and raw queues in
%patch100 -p1 -b .lspp
%endif
# Taken from upstream
# Add an SNMP query for HP's device ID OID (STR #3552).
%patch1000 -p1 -b .deviceid-oid
%patch1001 -p1 -b .print-color-mode
%patch1002 -p1 -b .ppdleak
%patch1003 -p1 -b .rastertopwg-crash
# job for disconnected devices are processing for eternity
# https://github.com/apple/cups/pull/5782
%patch1004 -p1 -b .etimedout
%patch1005 -p1 -b .webui-uri
%patch1006 -p1 -b .ipptool-mdns-uri
%patch1007 -p1 -b .manual-copies
%patch1008 -p1 -b .printer-alert
%patch1009 -p1 -b .avahi-leak
%patch1010 -p1 -b .unit-files
# Make cups.service Type=notify (bug #1088918).
%patch1011 -p1 -b .systemd-socket
# CUPS may fail to start if NIS groups are used (bug #1494558)
%patch1012 -p1 -b .ypbind
# https://github.com/OpenPrinting/cups/pull/31
%patch1013 -p1 -b .require-socket
# Set the default for SyncOnClose to Yes.
%patch1014 -p1 -b .synconclose
# Log to the system journal by default (bug #1078781, bug #1519331).
sed -i -e 's,^ErrorLog .*$,ErrorLog syslog,' conf/cups-files.conf.in
@ -721,6 +652,9 @@ rm -f %{cups_serverbin}/backend/smb
%{_mandir}/man7/ippeveps.7.gz
%changelog
* Mon Nov 30 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.3.3op1-1
- 2.3.3op1
* Fri Nov 27 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.3.3-20
- make unit files writeable by root
- remove %%post scriptlet - it is covered by drop-in now

View File

@ -1 +1 @@
SHA512 (cups-2.3.3-source.tar.gz) = 7d6f4a01794c5599cc71525778ea785fd17271c31ac146a56e8fc374a88f99e4035d018dae48e37e541455e9cc93b302e892b2e93ec558c1b4bfc46dad68c92d
SHA512 (cups-2.3.3op1-source.tar.gz) = 89949b4190288d5464f425cbff6b854e9da96ba3071e4e0d595ad581797b2db4724f49d884f3ea43e372ed4d0faec72839b0b7182cdde13b96f2824d619a4843