Bug#771516: unblock: cups/1.7.5-9
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Please unblock package cups in its 1.7.5-9 version. The 1.7.5-8 version had
already been unblocked (#770707), but couldn't migrate to testing because it
was FTBFS on mips.
1.7.5-9 fixes that mips FTBFS by removing an upstream backport, as well as
fixes two bugs by removing a GSoC-contributed patch for per-queue color
management that upstream has refused:
The changelog is as follows:
* Drop color-management patch; it got refused by upstream and is not
available in non-english translations (Closes: #763517, #768163)
* Drop the upstream patch to limit Get-Jobs replies to 500, as this
triggers a FTBS on mips
I'll attach the debdiff against 1.7.5-8 as that version got unblocked already.
Thanks in advance, cheers,
OdyX
unblock cups/1.7.5-9
diff -Nru cups-1.7.5/debian/changelog cups-1.7.5/debian/changelog
--- cups-1.7.5/debian/changelog 2014-11-23 13:26:25.000000000 +0100
+++ cups-1.7.5/debian/changelog 2014-11-27 20:45:03.000000000 +0100
@@ -1,3 +1,12 @@
+cups (1.7.5-9) unstable; urgency=medium
+
+ * Drop color-management patch; it got refused by upstream and is not
+ available in non-english translations (Closes: #763517, #768163)
+ * Drop the upstream patch to limit Get-Jobs replies to 500, as this triggers
+ a FTBS on mips
+
+ -- Didier Raboud <odyx@debian.org> Thu, 27 Nov 2014 20:44:45 +0100
+
cups (1.7.5-8) unstable; urgency=medium
* Add a USB quirk fix for Brother HL-1250 (Closes: #712512)
diff -Nru cups-1.7.5/debian/patches/airprint-support.patch cups-1.7.5/debian/patches/airprint-support.patch
--- cups-1.7.5/debian/patches/airprint-support.patch 2014-11-23 13:23:41.000000000 +0100
+++ cups-1.7.5/debian/patches/airprint-support.patch 2014-11-26 13:31:19.000000000 +0100
@@ -47,7 +47,7 @@
# Text files...
--- a/scheduler/printers.c
+++ b/scheduler/printers.c
-@@ -3601,7 +3601,9 @@
+@@ -3575,7 +3575,9 @@
}
else if (!_cups_strcasecmp(type->super, "image"))
{
diff -Nru cups-1.7.5/debian/patches/color-management-extension.patch cups-1.7.5/debian/patches/color-management-extension.patch
--- cups-1.7.5/debian/patches/color-management-extension.patch 2014-11-23 13:23:41.000000000 +0100
+++ cups-1.7.5/debian/patches/color-management-extension.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,518 +0,0 @@
-Description: Color management per queue using colord.
-Author: Joe Simon <jsimon383@gmail.com>
-Last-Update: 2014-08-29
---- a/cgi-bin/admin.c
-+++ b/cgi-bin/admin.c
-@@ -1132,6 +1132,11 @@
- IPP_TAG_BOOLEAN)) != NULL)
- cgiSetVariable("PRINTER_IS_SHARED",
- attr->values[0].boolean ? "1" : "0");
-+
-+ if ((attr = ippFindAttribute(oldinfo, "printer-is-cm-calibrating",
-+ IPP_TAG_BOOLEAN)) != NULL)
-+ cgiSetVariable("PRINTER_IS_CM_CALIBRATING",
-+ attr->values[0].boolean ? "1" : "0");
- }
-
- cgiCopyTemplateLang("modify-printer.tmpl");
-@@ -1149,6 +1154,8 @@
- #endif /* __APPLE__ */
- cgiSetVariable("printer_is_shared", "0");
-
-+ cgiSetVariable("printer_is_cm_calibrating", "0");
-+
- cgiCopyTemplateLang("add-printer.tmpl");
- }
-
-@@ -1335,6 +1342,7 @@
- * printer-info
- * ppd-name
- * device-uri
-+ * printer-is-cm-calibrating
- * printer-is-accepting-jobs
- * printer-is-shared
- * printer-state
-@@ -1395,6 +1403,10 @@
- ippAddBoolean(request, IPP_TAG_PRINTER, "printer-is-shared",
- var && (!strcmp(var, "1") || !strcmp(var, "on")));
-
-+ var = cgiGetVariable("printer_is_cm_calibrating");
-+ ippAddBoolean(request, IPP_TAG_PRINTER, "printer-is-cm-calibrating",
-+ var && (!strcmp(var, "1") || !strcmp(var, "on")));
-+
- ippAddInteger(request, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-state",
- IPP_PRINTER_IDLE);
-
---- a/cups/cups.h
-+++ b/cups/cups.h
-@@ -241,6 +241,7 @@
- * @since CUPS 1.4/OS X 10.6@ */
- CUPS_PRINTER_MFP = 0x4000000, /* Printer with scanning capabilities
- * @since CUPS 1.4/OS X 10.6@ */
-+ CUPS_PRINTER_CM_OFF = 0x8000000, /* Printer is not color-managed */
- CUPS_PRINTER_OPTIONS = 0x6fffc /* ~(CLASS | REMOTE | IMPLICIT |
- * DEFAULT | FAX | REJECTING | DELETE |
- * NOT_SHARED | AUTHENTICATED |
---- a/cups/dest.c
-+++ b/cups/dest.c
-@@ -1437,6 +1437,7 @@
- "printer-defaults",
- "printer-info",
- "printer-is-accepting-jobs",
-+ "printer-is-cm-calibrating",
- "printer-is-shared",
- "printer-location",
- "printer-make-and-model",
-@@ -1544,7 +1545,8 @@
- !strcmp(attr->name, "marker-types") ||
- !strcmp(attr->name, "printer-commands") ||
- !strcmp(attr->name, "printer-info") ||
-- !strcmp(attr->name, "printer-is-shared") ||
-+ !strcmp(attr->name, "printer-info") ||
-+ !strcmp(attr->name, "printer-is-cm-calibrating") ||
- !strcmp(attr->name, "printer-make-and-model") ||
- !strcmp(attr->name, "printer-mandatory-job-attributes") ||
- !strcmp(attr->name, "printer-state") ||
-@@ -1581,7 +1583,7 @@
- break;
- }
- }
--#endif /* __APPLE__ */
-+#endif /* __APPLE__ */
- else if (!strcmp(attr->name, "printer-name") &&
- attr->value_tag == IPP_TAG_NAME)
- printer_name = attr->values[0].string.text;
---- a/cups/encode.c
-+++ b/cups/encode.c
-@@ -274,6 +274,7 @@
- { 0, "printer-error-policy", IPP_TAG_NAME, IPP_TAG_PRINTER },
- { 0, "printer-info", IPP_TAG_TEXT, IPP_TAG_PRINTER },
- { 0, "printer-is-accepting-jobs", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
-+ { 0, "printer-is-cm-calibrating", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
- { 0, "printer-is-shared", IPP_TAG_BOOLEAN, IPP_TAG_PRINTER },
- { 0, "printer-location", IPP_TAG_TEXT, IPP_TAG_PRINTER },
- { 0, "printer-make-and-model", IPP_TAG_TEXT, IPP_TAG_PRINTER },
---- a/cups/ipp-support.c
-+++ b/cups/ipp-support.c
-@@ -1556,6 +1556,7 @@
- "printer-icons",
- "printer-info",
- "printer-is-accepting-jobs",
-+ "printer-is-cm-calibrating", /* CUPS extension */
- "printer-is-shared", /* CUPS extension */
- "printer-kind", /* IPP Paid Printing */
- "printer-location",
---- a/scheduler/classes.c
-+++ b/scheduler/classes.c
-@@ -506,6 +506,27 @@
- "Syntax error on line %d of classes.conf.",
- linenum);
- }
-+ else if (!_cups_strcasecmp(line, "CM-Calibration"))
-+ {
-+ /*
-+ * Set the initial color calibration mode state...
-+ */
-+
-+ if (value &&
-+ (!_cups_strcasecmp(value, "yes") ||
-+ !_cups_strcasecmp(value, "on") ||
-+ !_cups_strcasecmp(value, "true")))
-+ p->calibrating = 1;
-+ else if (value &&
-+ (!_cups_strcasecmp(value, "no") ||
-+ !_cups_strcasecmp(value, "off") ||
-+ !_cups_strcasecmp(value, "false")))
-+ p->calibrating = 0;
-+ else
-+ cupsdLogMessage(CUPSD_LOG_ERROR,
-+ "Syntax error on line %d of classes.conf.",
-+ linenum);
-+ }
- else if (!_cups_strcasecmp(line, "Shared"))
- {
- /*
-@@ -772,6 +793,11 @@
- else
- cupsFilePuts(fp, "Accepting No\n");
-
-+ if (pclass->calibrating)
-+ cupsFilePuts(fp, "CM-Calibration Yes\n");
-+ else
-+ cupsFilePuts(fp, "CM-Calibration No\n");
-+
- if (pclass->shared)
- cupsFilePuts(fp, "Shared Yes\n");
- else
---- a/scheduler/cups-lpd.c
-+++ b/scheduler/cups-lpd.c
-@@ -60,7 +60,8 @@
- int num_options, cups_option_t *options);
- static int get_printer(http_t *http, const char *name, char *dest,
- int destsize, cups_option_t **options,
-- int *accepting, int *shared, ipp_pstate_t *state);
-+ int *accepting, int *calibrating, int *shared,
-+ ipp_pstate_t *state);
- static int print_file(http_t *http, int id, const char *filename,
- const char *docname, const char *user,
- const char *format, int last);
-@@ -401,6 +402,7 @@
- int destsize, /* I - Size of destination buffer */
- cups_option_t **options, /* O - Printer options */
- int *accepting, /* O - printer-is-accepting-jobs value */
-+ int *calibrating, /* O - printer-is-cm-calibrating value */
- int *shared, /* O - printer-is-shared value */
- ipp_pstate_t *state) /* O - printer-state value */
- {
-@@ -419,6 +421,7 @@
- { /* Requested attributes */
- "printer-info",
- "printer-is-accepting-jobs",
-+ "printer-is-cm-calibrating",
- "printer-is-shared",
- "printer-name",
- "printer-state"
-@@ -431,6 +434,8 @@
-
- if (accepting)
- *accepting = 0;
-+ if (calibrating)
-+ *calibrating = 0;
- if (shared)
- *shared = 0;
- if (state)
-@@ -476,11 +481,12 @@
- * using the printer-info values...
- */
-
-- ipp_attribute_t *accepting_attr,/* printer-is-accepting-jobs */
-- *info_attr, /* printer-info */
-- *name_attr, /* printer-name */
-- *shared_attr, /* printer-is-shared */
-- *state_attr; /* printer-state */
-+ ipp_attribute_t *accepting_attr, /* printer-is-accepting-jobs */
-+ *calibrating_attr,/* printer-is-cm-calibrating */
-+ *info_attr, /* printer-info */
-+ *name_attr, /* printer-name */
-+ *shared_attr, /* printer-is-shared */
-+ *state_attr; /* printer-state */
-
-
- ippDelete(response);
-@@ -535,17 +541,21 @@
- * Get all of the attributes for the current printer...
- */
-
-- accepting_attr = NULL;
-- info_attr = NULL;
-- name_attr = NULL;
-- shared_attr = NULL;
-- state_attr = NULL;
-+ accepting_attr = NULL;
-+ calibrating_attr = NULL;
-+ info_attr = NULL;
-+ name_attr = NULL;
-+ shared_attr = NULL;
-+ state_attr = NULL;
-
- while (attr && attr->group_tag == IPP_TAG_PRINTER)
- {
- if (!strcmp(attr->name, "printer-is-accepting-jobs") &&
- attr->value_tag == IPP_TAG_BOOLEAN)
- accepting_attr = attr;
-+ else if (!strcmp(attr->name, "printer-is-cm-calibrating") &&
-+ attr->value_tag == IPP_TAG_BOOLEAN)
-+ calibrating_attr = attr;
- else if (!strcmp(attr->name, "printer-info") &&
- attr->value_tag == IPP_TAG_TEXT)
- info_attr = attr;
-@@ -574,6 +584,9 @@
- if (accepting && accepting_attr)
- *accepting = accepting_attr->values[0].boolean;
-
-+ if (calibrating && calibrating_attr)
-+ *calibrating = calibrating_attr->values[0].boolean;
-+
- if (shared && shared_attr)
- *shared = shared_attr->values[0].boolean;
-
-@@ -611,6 +624,19 @@
- *accepting = attr->values[0].boolean;
- }
-
-+ if (calibrating)
-+ {
-+ if ((attr = ippFindAttribute(response, "printer-is-cm-calibrating",
-+ IPP_TAG_BOOLEAN)) == NULL)
-+ {
-+ syslog(LOG_ERR, "No printer-is-cm-calibrating attribute found in "
-+ "response from server!");
-+ *calibrating = 1;
-+ }
-+ else
-+ *calibrating = attr->values[0].boolean;
-+ }
-+
- if (shared)
- {
- if ((attr = ippFindAttribute(response, "printer-is-shared",
-@@ -643,7 +669,7 @@
-
- num_options = 0;
-
-- if (options && shared && accepting)
-+ if (options && shared && calibrating && accepting)
- {
- if ((cups_serverroot = getenv("CUPS_SERVERROOT")) == NULL)
- cups_serverroot = CUPS_SERVERROOT;
-@@ -786,6 +812,7 @@
- docname[1024], /* Document name */
- dest[256]; /* Printer/class queue */
- int accepting, /* printer-is-accepting */
-+ calibrating, /* printer-is-cm-calibrating */
- shared, /* printer-is-shared */
- num_options; /* Number of options */
- cups_option_t *options; /* Options */
-@@ -813,7 +840,7 @@
- */
-
- num_options = get_printer(http, queue, dest, sizeof(dest), &options,
-- &accepting, &shared, NULL);
-+ &accepting, &calibrating, &shared, NULL);
-
- if (num_options < 0 || !accepting || !shared)
- {
-@@ -1362,7 +1389,7 @@
- * Get the actual destination name and printer state...
- */
-
-- if (get_printer(http, queue, dest, sizeof(dest), NULL, NULL, NULL, &state))
-+ if (get_printer(http, queue, dest, sizeof(dest), NULL, NULL, NULL, NULL, &state))
- {
- syslog(LOG_ERR, "Unable to get printer %s: %s", queue,
- cupsLastErrorString());
---- a/scheduler/ipp.c
-+++ b/scheduler/ipp.c
-@@ -988,6 +988,16 @@
- pclass->accepting ? "Now" : "No longer");
- }
-
-+ if ((attr = ippFindAttribute(con->request, "printer-is-cm-calibrating",
-+ IPP_TAG_BOOLEAN)) != NULL)
-+ {
-+ cupsdLogMessage(CUPSD_LOG_INFO,
-+ "Setting %s printer-is-cm-calibrating to %d (was %d.)",
-+ pclass->name, attr->values[0].boolean, pclass->calibrating);
-+
-+ pclass->calibrating = attr->values[0].boolean;
-+ }
-+
- if ((attr = ippFindAttribute(con->request, "printer-is-shared",
- IPP_TAG_BOOLEAN)) != NULL)
- {
-@@ -2492,6 +2502,16 @@
- printer->accepting ? "Now" : "No longer");
- }
-
-+ if ((attr = ippFindAttribute(con->request, "printer-is-cm-calibrating",
-+ IPP_TAG_BOOLEAN)) != NULL)
-+ {
-+ cupsdLogMessage(CUPSD_LOG_INFO,
-+ "Setting %s printer-is-cm-calibrating to %d (was %d.)",
-+ printer->name, attr->values[0].boolean, printer->calibrating);
-+
-+ printer->calibrating = attr->values[0].boolean;
-+ }
-+
- if ((attr = ippFindAttribute(con->request, "printer-is-shared",
- IPP_TAG_BOOLEAN)) != NULL)
- {
-@@ -4950,6 +4970,10 @@
- ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-accepting-jobs",
- printer->accepting);
-
-+ if (!ra || cupsArrayFind(ra, "printer-is-cm-calibrating"))
-+ ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-cm-calibrating",
-+ printer->calibrating);
-+
- if (!ra || cupsArrayFind(ra, "printer-is-shared"))
- ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-shared",
- printer->shared);
-@@ -4999,6 +5023,9 @@
- if (!printer->accepting)
- type |= CUPS_PRINTER_REJECTING;
-
-+ if (!printer->calibrating)
-+ type |= CUPS_PRINTER_CM_OFF;
-+
- if (!printer->shared)
- type |= CUPS_PRINTER_NOT_SHARED;
-
---- a/scheduler/printers.c
-+++ b/scheduler/printers.c
-@@ -95,11 +95,12 @@
- uuid, sizeof(uuid)));
- cupsdSetDeviceURI(p, "file:///dev/null");
-
-- p->state = IPP_PRINTER_STOPPED;
-- p->state_time = time(NULL);
-- p->accepting = 0;
-- p->shared = DefaultShared;
-- p->filetype = mimeAddType(MimeDatabase, "printer", name);
-+ p->state = IPP_PRINTER_STOPPED;
-+ p->state_time = time(NULL);
-+ p->accepting = 0;
-+ p->calibrating = 0;
-+ p->shared = DefaultShared;
-+ p->filetype = mimeAddType(MimeDatabase, "printer", name);
-
- cupsdSetString(&p->job_sheets[0], "none");
- cupsdSetString(&p->job_sheets[1], "none");
-@@ -1081,6 +1082,26 @@
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Syntax error on line %d of printers.conf.", linenum);
- }
-+ else if (!_cups_strcasecmp(line, "CM-Calibration"))
-+ {
-+ /*
-+ * Set the initial color calibration mode state...
-+ */
-+
-+ if (value &&
-+ (!_cups_strcasecmp(value, "yes") ||
-+ !_cups_strcasecmp(value, "on") ||
-+ !_cups_strcasecmp(value, "true")))
-+ p->calibrating = 1;
-+ else if (value &&
-+ (!_cups_strcasecmp(value, "no") ||
-+ !_cups_strcasecmp(value, "off") ||
-+ !_cups_strcasecmp(value, "false")))
-+ p->calibrating = 0;
-+ else
-+ cupsdLogMessage(CUPSD_LOG_ERROR,
-+ "Syntax error on line %d of printers.conf.", linenum);
-+ }
- else if (!_cups_strcasecmp(line, "Type"))
- {
- if (value)
-@@ -1443,6 +1464,11 @@
- else
- cupsFilePuts(fp, "Accepting No\n");
-
-+ if (printer->calibrating)
-+ cupsFilePuts(fp, "CM-Calibration Yes\n");
-+ else
-+ cupsFilePuts(fp, "CM-Calibration No\n");
-+
- if (printer->shared)
- cupsFilePuts(fp, "Shared Yes\n");
- else
---- a/scheduler/printers.h
-+++ b/scheduler/printers.h
-@@ -69,6 +69,7 @@
- *op_policy, /* Operation policy name */
- *error_policy; /* Error policy */
- cupsd_policy_t *op_policy_ptr; /* Pointer to operation policy */
-+ int calibrating; /* Color-calibration Mode? */
- int shared; /* Shared? */
- int accepting; /* Accepting jobs? */
- int holding_new_jobs; /* Holding new jobs for printing? */
---- a/templates/add-printer.tmpl
-+++ b/templates/add-printer.tmpl
-@@ -33,6 +33,11 @@
- <TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
- </TR>
- <TR>
-+<TH CLASS="label">Color Calibration Mode:</TH>
-+<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_CM_CALIBRATING" {PRINTER_IS_CM_CALIBRATING=1?CHECKED:}>
-+Enabled</TD>
-+</TR>
-+<TR>
- <TH CLASS="label">Sharing:</TH>
- <TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
- Share This Printer</TD>
-@@ -44,4 +49,4 @@
- </TABLE>
-
- </FORM>
--</DIV>
-\ No newline at end of file
-+</DIV>
---- a/templates/choose-make.tmpl
-+++ b/templates/choose-make.tmpl
-@@ -25,6 +25,10 @@
- <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
- </TR>
- <TR>
-+<TH CLASS="label">Color Calibration Mode:</TH>
-+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_CM_CALIBRATING" VALUE="{?printer_is_cm_calibrating}">{?printer_is_cm_calibrating=?Not:{?printer_is_cm_calibrating=0?Not:}} Enabled</TD>
-+</TR>
-+<TR>
- <TH CLASS="label">Connection:</TH>
- <TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
- </TR>
-@@ -61,4 +65,4 @@
- </TABLE>
-
- </FORM>
--</DIV>
-\ No newline at end of file
-+</DIV>
---- a/templates/choose-model.tmpl
-+++ b/templates/choose-model.tmpl
-@@ -24,6 +24,10 @@
- <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
- </TR>
- <TR>
-+<TH CLASS="label">Color Calibration Mode:</TH>
-+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_CM_CALIBRATING" VALUE="{?printer_is_cm_calibrating}">{?printer_is_cm_calibrating=?Not:{?printer_is_cm_calibrating=0?Not:}} Enabled</TD>
-+</TR>
-+<TR>
- <TH CLASS="label">Connection:</TH>
- <TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
- </TR>
-@@ -57,4 +61,4 @@
- </TABLE>
-
- </FORM>
--</DIV>
-\ No newline at end of file
-+</DIV>
---- a/templates/modify-printer.tmpl
-+++ b/templates/modify-printer.tmpl
-@@ -27,12 +27,16 @@
- <TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
- </TR>
- <TR>
-+<TH CLASS="label">Color Calibration Mode:</TH>
-+<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_CM_CALIBRATING" {PRINTER_IS_CM_CALIBRATING=1?CHECKED:}>
-+Enabled</TD>
-+</TR>
-+<TR>
- <TH CLASS="label">Sharing:</TH>
- <TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
- Share This Printer</TD>
- </TR>
- <TR>
--<TR>
- <TD></TD>
- <TD><INPUT TYPE="SUBMIT" VALUE="Continue"></TD>
- </TR>
---- a/templates/printer.tmpl
-+++ b/templates/printer.tmpl
-@@ -3,7 +3,7 @@
- <H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
- ({printer_state=3?Idle:{printer_state=4?Processing:Paused}},
- {printer_is_accepting_jobs=0?Rejecting Jobs:Accepting Jobs},
--{server_is_sharing_printers=0?Not:{printer_is_shared=0?Not:}} Shared{default_name={printer_name}?, Server Default:})</H2>
-+{server_is_sharing_printers=0?Not:{printer_is_shared=0?Not:}} Shared{default_name={printer_name}?, Server Default:} {printer_is_cm_calibrating=1?, Not Color-Managed:})</H2>
-
- <FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
- <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-@@ -44,4 +44,4 @@
- {sides_default?sides={sides_default}:}</TD></TR>
- </TABLE>
-
--</DIV>
-\ No newline at end of file
-+</DIV>
diff -Nru cups-1.7.5/debian/patches/move-cupsd-conf-default-to-share.patch cups-1.7.5/debian/patches/move-cupsd-conf-default-to-share.patch
--- cups-1.7.5/debian/patches/move-cupsd-conf-default-to-share.patch 2014-11-23 13:23:41.000000000 +0100
+++ cups-1.7.5/debian/patches/move-cupsd-conf-default-to-share.patch 2014-11-26 13:31:19.000000000 +0100
@@ -7,7 +7,7 @@
--- a/cgi-bin/admin.c
+++ b/cgi-bin/admin.c
-@@ -1949,6 +1949,7 @@
+@@ -1937,6 +1937,7 @@
int ch; /* Character from file */
char filename[1024]; /* Filename */
const char *server_root; /* Location of config files */
@@ -15,7 +15,7 @@
/*
-@@ -2032,7 +2033,10 @@
+@@ -2020,7 +2021,10 @@
* well...
*/
diff -Nru cups-1.7.5/debian/patches/no-conffile-timestamp.patch cups-1.7.5/debian/patches/no-conffile-timestamp.patch
--- cups-1.7.5/debian/patches/no-conffile-timestamp.patch 2014-11-23 13:23:41.000000000 +0100
+++ cups-1.7.5/debian/patches/no-conffile-timestamp.patch 2014-11-27 20:42:16.000000000 +0100
@@ -5,7 +5,7 @@
--- a/scheduler/classes.c
+++ b/scheduler/classes.c
-@@ -719,7 +719,7 @@
+@@ -698,7 +698,7 @@
strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", curdate);
cupsFilePuts(fp, "# Class configuration file for " CUPS_SVERSION "\n");
@@ -16,7 +16,7 @@
/*
--- a/scheduler/job.c
+++ b/scheduler/job.c
-@@ -2128,7 +2128,7 @@
+@@ -2118,7 +2118,7 @@
strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", curdate);
cupsFilePuts(fp, "# Job cache file for " CUPS_SVERSION "\n");
@@ -27,7 +27,7 @@
/*
--- a/scheduler/printers.c
+++ b/scheduler/printers.c
-@@ -1370,7 +1370,7 @@
+@@ -1349,7 +1349,7 @@
strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", curdate);
cupsFilePuts(fp, "# Printer configuration file for " CUPS_SVERSION "\n");
diff -Nru cups-1.7.5/debian/patches/read-embedded-options-from-incoming-postscript-and-add-to-ipp-attrs.patch cups-1.7.5/debian/patches/read-embedded-options-from-incoming-postscript-and-add-to-ipp-attrs.patch
--- cups-1.7.5/debian/patches/read-embedded-options-from-incoming-postscript-and-add-to-ipp-attrs.patch 2014-11-23 13:23:41.000000000 +0100
+++ cups-1.7.5/debian/patches/read-embedded-options-from-incoming-postscript-and-add-to-ipp-attrs.patch 2014-11-27 20:42:15.000000000 +0100
@@ -11,7 +11,7 @@
--- a/scheduler/ipp.c
+++ b/scheduler/ipp.c
-@@ -8381,6 +8381,11 @@
+@@ -8249,6 +8249,11 @@
ipp_attribute_t *attr, /* Current attribute */
*attr2, /* Job attribute */
*prev2; /* Previous job attribute */
@@ -23,7 +23,7 @@
/*
-@@ -8442,6 +8447,85 @@
+@@ -8310,6 +8315,85 @@
}
/*
diff -Nru cups-1.7.5/debian/patches/series cups-1.7.5/debian/patches/series
--- cups-1.7.5/debian/patches/series 2014-11-23 13:25:22.000000000 +0100
+++ cups-1.7.5/debian/patches/series 2014-11-27 20:41:54.000000000 +0100
@@ -1,6 +1,5 @@
# patches accepted and committed upstream
str4396-make-scheduler-return-completed-jobs-in-correct-order.patch
-str2913-limit-Get-Jobs-replies-to-500-jobs.patch
str4461-restore-access-to-logfiles.patch
str4475-fix-the-spinner-imager-on-restart.patch
str4484-fix-random-crash-in-scheduler.patch
@@ -17,7 +16,6 @@
brother-hl-1250-quirks.patch
# patches which should go upstream
-color-management-extension.patch
systemd-optional-socket-activation.patch
cupsd-upstart-support.patch
# Fix tests, should probably go upstream
diff -Nru cups-1.7.5/debian/patches/str2913-limit-Get-Jobs-replies-to-500-jobs.patch cups-1.7.5/debian/patches/str2913-limit-Get-Jobs-replies-to-500-jobs.patch
--- cups-1.7.5/debian/patches/str2913-limit-Get-Jobs-replies-to-500-jobs.patch 2014-11-04 08:53:19.000000000 +0100
+++ cups-1.7.5/debian/patches/str2913-limit-Get-Jobs-replies-to-500-jobs.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,407 +0,0 @@
-Description: Performance fixes for Get-Jobs (STR #2913)
- .
- Cache a few additional job attributes so that we normally do not need to load
- the job attributes from the 'c' files.
- .
- If we do need to load them, limit the returned jobs to 500 at a time.
- .
- Implement first-index operation attribute
-Bug: https://www.cups.org/str.php?L2913
-Author: Michael Sweet <msweet@apple.com>
-Last-Update: 2014-10-22
---- a/scheduler/ipp.c
-+++ b/scheduler/ipp.c
-@@ -1531,8 +1531,7 @@
- }
-
- if ((attr = ippFindAttribute(con->request, "job-name", IPP_TAG_ZERO)) == NULL)
-- ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL,
-- "Untitled");
-+ ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, "Untitled");
- else if ((attr->value_tag != IPP_TAG_NAME &&
- attr->value_tag != IPP_TAG_NAMELANG) ||
- attr->num_values != 1)
-@@ -1612,6 +1611,9 @@
- ippDeleteAttribute(job->attrs, auth_info);
- }
-
-+ if ((attr = ippFindAttribute(con->request, "job-name", IPP_TAG_NAME)) != NULL)
-+ cupsdSetString(&(job->name), attr->values[0].string.text);
-+
- if ((attr = ippFindAttribute(job->attrs, "job-originating-host-name",
- IPP_TAG_ZERO)) != NULL)
- {
-@@ -1706,8 +1708,7 @@
- ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL,
- printer->uri);
-
-- if ((attr = ippFindAttribute(job->attrs, "job-k-octets",
-- IPP_TAG_INTEGER)) != NULL)
-+ if ((attr = ippFindAttribute(job->attrs, "job-k-octets", IPP_TAG_INTEGER)) != NULL)
- attr->values[0].integer = 0;
- else
- ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-k-octets", 0);
-@@ -4348,8 +4349,9 @@
-
- kbytes = (cupsFileTell(out) + 1023) / 1024;
-
-- if ((attr = ippFindAttribute(job->attrs, "job-k-octets",
-- IPP_TAG_INTEGER)) != NULL)
-+ job->koctets += kbytes;
-+
-+ if ((attr = ippFindAttribute(job->attrs, "job-k-octets", IPP_TAG_INTEGER)) != NULL)
- attr->values[0].integer += kbytes;
-
- cupsFileClose(out);
-@@ -4771,7 +4773,55 @@
- "job-uri", NULL, job_uri);
- }
-
-- copy_attrs(con->response, job->attrs, ra, IPP_TAG_JOB, 0, exclude);
-+ if (job->attrs)
-+ {
-+ copy_attrs(con->response, job->attrs, ra, IPP_TAG_JOB, 0, exclude);
-+ }
-+ else
-+ {
-+ /*
-+ * Generate attributes from the job structure...
-+ */
-+
-+ if (!ra || cupsArrayFind(ra, "job-id"))
-+ ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job->id);
-+
-+ if (!ra || cupsArrayFind(ra, "job-k-octets"))
-+ ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-k-octets", job->koctets);
-+
-+ if (job->name && (!ra || cupsArrayFind(ra, "job-name")))
-+ ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, job->name);
-+
-+ if (job->username && (!ra || cupsArrayFind(ra, "job-originating-user-name")))
-+ ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_NAME, "job-originating-user-name", NULL, job->username);
-+
-+ if (!ra || cupsArrayFind(ra, "job-state"))
-+ ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_ENUM, "job-state", (int)job->state_value);
-+
-+ if (!ra || cupsArrayFind(ra, "job-state-reasons"))
-+ {
-+ switch (job->state_value)
-+ {
-+ default : /* Should never get here for processing, pending, held, or stopped jobs since they don't get unloaded... */
-+ break;
-+ case IPP_JSTATE_ABORTED :
-+ ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-state-reasons", NULL, "job-aborted-by-system");
-+ break;
-+ case IPP_JSTATE_CANCELED :
-+ ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-state-reasons", NULL, "job-canceled-by-user");
-+ break;
-+ case IPP_JSTATE_COMPLETED :
-+ ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-state-reasons", NULL, "job-completed-successfully");
-+ break;
-+ }
-+ }
-+
-+ if (job->completed_time && (!ra || cupsArrayFind(ra, "time-at-completed")))
-+ ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-completed", (int)job->completed_time);
-+
-+ if (job->completed_time && (!ra || cupsArrayFind(ra, "time-at-creation")))
-+ ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-creation", (int)job->creation_time);
-+ }
- }
-
-
-@@ -6124,9 +6174,13 @@
- int port; /* Port portion of URI */
- int job_comparison; /* Job comparison */
- ipp_jstate_t job_state; /* job-state value */
-- int first_job_id; /* First job ID */
-- int limit; /* Maximum number of jobs to return */
-+ int first_job_id = 1, /* First job ID */
-+ first_index = 1, /* First index */
-+ current_index = 0; /* Current index */
-+ int limit = 0; /* Maximum number of jobs to return */
- int count; /* Number of jobs that match */
-+ int need_load_job = 0; /* Do we need to load the job? */
-+ const char *job_attr; /* Job attribute requested */
- ipp_attribute_t *job_ids; /* job-ids attribute */
- cupsd_job_t *job; /* Current job pointer */
- cupsd_printer_t *printer; /* Printer */
-@@ -6292,8 +6346,7 @@
- * See if they want to limit the number of jobs reported...
- */
-
-- if ((attr = ippFindAttribute(con->request, "limit",
-- IPP_TAG_INTEGER)) != NULL)
-+ if ((attr = ippFindAttribute(con->request, "limit", IPP_TAG_INTEGER)) != NULL)
- {
- if (job_ids)
- {
-@@ -6305,11 +6358,20 @@
-
- limit = attr->values[0].integer;
- }
-- else
-- limit = 0;
-
-- if ((attr = ippFindAttribute(con->request, "first-job-id",
-- IPP_TAG_INTEGER)) != NULL)
-+ if ((attr = ippFindAttribute(con->request, "first-index", IPP_TAG_INTEGER)) != NULL)
-+ {
-+ if (job_ids)
-+ {
-+ send_ipp_status(con, IPP_CONFLICT,
-+ _("The %s attribute cannot be provided with job-ids."),
-+ "first-index");
-+ return;
-+ }
-+
-+ first_index = attr->values[0].integer;
-+ }
-+ else if ((attr = ippFindAttribute(con->request, "first-job-id", IPP_TAG_INTEGER)) != NULL)
- {
- if (job_ids)
- {
-@@ -6321,15 +6383,12 @@
-
- first_job_id = attr->values[0].integer;
- }
-- else
-- first_job_id = 1;
-
- /*
- * See if we only want to see jobs for a specific user...
- */
-
-- if ((attr = ippFindAttribute(con->request, "my-jobs",
-- IPP_TAG_BOOLEAN)) != NULL && job_ids)
-+ if ((attr = ippFindAttribute(con->request, "my-jobs", IPP_TAG_BOOLEAN)) != NULL && job_ids)
- {
- send_ipp_status(con, IPP_CONFLICT,
- _("The %s attribute cannot be provided with job-ids."),
-@@ -6342,6 +6401,43 @@
- username[0] = '\0';
-
- ra = create_requested_array(con->request);
-+ for (job_attr = (char *)cupsArrayFirst(ra); job_attr; job_attr = (char *)cupsArrayNext(ra))
-+ if (strcmp(job_attr, "job-id") &&
-+ strcmp(job_attr, "job-k-octets") &&
-+ strcmp(job_attr, "job-media-progress") &&
-+ strcmp(job_attr, "job-more-info") &&
-+ strcmp(job_attr, "job-name") &&
-+ strcmp(job_attr, "job-originating-user-name") &&
-+ strcmp(job_attr, "job-preserved") &&
-+ strcmp(job_attr, "job-printer-up-time") &&
-+ strcmp(job_attr, "job-printer-uri") &&
-+ strcmp(job_attr, "job-state") &&
-+ strcmp(job_attr, "job-state-reasons") &&
-+ strcmp(job_attr, "job-uri") &&
-+ strcmp(job_attr, "time-at-completed") &&
-+ strcmp(job_attr, "time-at-creation") &&
-+ strcmp(job_attr, "number-of-documents"))
-+ {
-+ need_load_job = 1;
-+ break;
-+ }
-+
-+ if (need_load_job && (limit == 0 || limit > 500) && (list == Jobs || delete_list))
-+ {
-+ /*
-+ * Limit expensive Get-Jobs for job history to 500 jobs...
-+ */
-+
-+ ippAddInteger(con->response, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "limit", 500);
-+
-+ if (limit)
-+ ippAddInteger(con->response, IPP_TAG_UNSUPPORTED_GROUP, IPP_TAG_INTEGER, "limit", limit);
-+
-+ limit = 500;
-+
-+ cupsdLogMessage(CUPSD_LOG_INFO,
-+ "Limiting Get-Jobs response to %d jobs.", limit);
-+ }
-
- /*
- * OK, build a list of jobs for this printer...
-@@ -6368,13 +6464,15 @@
- {
- job = cupsdFindJob(job_ids->values[i].integer);
-
-- cupsdLoadJob(job);
--
-- if (!job->attrs)
-+ if (need_load_job && !job->attrs)
- {
-- cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs: No attributes for job %d",
-- job->id);
-- continue;
-+ cupsdLoadJob(job);
-+
-+ if (!job->attrs)
-+ {
-+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs: No attributes for job %d", job->id);
-+ continue;
-+ }
- }
-
- if (i > 0)
-@@ -6424,13 +6522,19 @@
- if (job->id < first_job_id)
- continue;
-
-- cupsdLoadJob(job);
-+ current_index ++;
-+ if (current_index < first_index)
-+ continue;
-
-- if (!job->attrs)
-+ if (need_load_job && !job->attrs)
- {
-- cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs: No attributes for job %d",
-- job->id);
-- continue;
-+ cupsdLoadJob(job);
-+
-+ if (!job->attrs)
-+ {
-+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs: No attributes for job %d", job->id);
-+ continue;
-+ }
- }
-
- if (username[0] && _cups_strcasecmp(username, job->username))
-@@ -8164,8 +8268,9 @@
-
- cupsdUpdateQuota(printer, job->username, 0, kbytes);
-
-- if ((attr = ippFindAttribute(job->attrs, "job-k-octets",
-- IPP_TAG_INTEGER)) != NULL)
-+ job->koctets += kbytes;
-+
-+ if ((attr = ippFindAttribute(job->attrs, "job-k-octets", IPP_TAG_INTEGER)) != NULL)
- attr->values[0].integer += kbytes;
-
- /*
-@@ -9401,8 +9506,9 @@
-
- cupsdUpdateQuota(printer, job->username, 0, kbytes);
-
-- if ((attr = ippFindAttribute(job->attrs, "job-k-octets",
-- IPP_TAG_INTEGER)) != NULL)
-+ job->koctets += kbytes;
-+
-+ if ((attr = ippFindAttribute(job->attrs, "job-k-octets", IPP_TAG_INTEGER)) != NULL)
- attr->values[0].integer += kbytes;
-
- snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot, job->id,
---- a/scheduler/job.c
-+++ b/scheduler/job.c
-@@ -1648,9 +1648,10 @@
- job->file_time = 0;
- job->history_time = 0;
-
-- if (job->state_value >= IPP_JOB_CANCELED &&
-- (attr = ippFindAttribute(job->attrs, "time-at-completed",
-- IPP_TAG_INTEGER)) != NULL)
-+ if ((attr = ippFindAttribute(job->attrs, "time-at-creation", IPP_TAG_INTEGER)) != NULL)
-+ job->creation_time = attr->values[0].integer;
-+
-+ if (job->state_value >= IPP_JOB_CANCELED && (attr = ippFindAttribute(job->attrs, "time-at-completed", IPP_TAG_INTEGER)) != NULL)
- {
- job->completed_time = attr->values[0].integer;
-
-@@ -1799,6 +1800,12 @@
- cupsdSetString(&job->username, attr->values[0].string.text);
- }
-
-+ if (!job->name)
-+ {
-+ if ((attr = ippFindAttribute(job->attrs, "job-name", IPP_TAG_NAME)) != NULL)
-+ cupsdSetString(&job->name, attr->values[0].string.text);
-+ }
-+
- /*
- * Set the job hold-until time and state...
- */
-@@ -1823,6 +1830,9 @@
- job->state_value = IPP_JOB_PENDING;
- }
-
-+ if ((attr = ippFindAttribute(job->attrs, "job-k-octets", IPP_TAG_INTEGER)) != NULL)
-+ job->koctets = attr->values[0].integer;
-+
- if (!job->num_files)
- {
- /*
-@@ -2131,14 +2141,18 @@
- {
- cupsFilePrintf(fp, "<Job %d>\n", job->id);
- cupsFilePrintf(fp, "State %d\n", job->state_value);
-+ cupsFilePrintf(fp, "Created %ld\n", (long)job->creation_time);
- if (job->completed_time)
- cupsFilePrintf(fp, "Completed %ld\n", (long)job->completed_time);
- cupsFilePrintf(fp, "Priority %d\n", job->priority);
- if (job->hold_until)
- cupsFilePrintf(fp, "HoldUntil %ld\n", (long)job->hold_until);
- cupsFilePrintf(fp, "Username %s\n", job->username);
-+ if (job->name)
-+ cupsFilePutConf(fp, "Name", job->name);
- cupsFilePrintf(fp, "Destination %s\n", job->dest);
- cupsFilePrintf(fp, "DestType %d\n", job->dtype);
-+ cupsFilePrintf(fp, "KOctets %d\n", job->koctets);
- cupsFilePrintf(fp, "NumFiles %d\n", job->num_files);
- for (i = 0; i < job->num_files; i ++)
- cupsFilePrintf(fp, "File %d %s/%s %d\n", i + 1, job->filetypes[i]->super,
-@@ -4079,7 +4093,7 @@
- cupsArrayAdd(ActiveJobs, job);
- else if (job->state_value > IPP_JOB_STOPPED)
- {
-- if (!job->completed_time)
-+ if (!job->completed_time || !job->creation_time || !job->name || !job->koctets)
- {
- cupsdLoadJob(job);
- unload_job(job);
-@@ -4102,6 +4116,14 @@
- else if (job->state_value > IPP_JOB_COMPLETED)
- job->state_value = IPP_JOB_COMPLETED;
- }
-+ else if (!_cups_strcasecmp(line, "Name"))
-+ {
-+ cupsdSetString(&(job->name), value);
-+ }
-+ else if (!_cups_strcasecmp(line, "Created"))
-+ {
-+ job->creation_time = strtol(value, NULL, 10);
-+ }
- else if (!_cups_strcasecmp(line, "Completed"))
- {
- job->completed_time = strtol(value, NULL, 10);
-@@ -4126,6 +4148,10 @@
- {
- job->dtype = (cups_ptype_t)atoi(value);
- }
-+ else if (!_cups_strcasecmp(line, "KOctets"))
-+ {
-+ job->koctets = atoi(value);
-+ }
- else if (!_cups_strcasecmp(line, "NumFiles"))
- {
- job->num_files = atoi(value);
---- a/scheduler/job.h
-+++ b/scheduler/job.h
-@@ -39,6 +39,8 @@
- * waiting on files */
- char *username; /* Printing user */
- char *dest; /* Destination printer or class */
-+ char *name; /* Job name/title */
-+ int koctets; /* job-k-octets */
- cups_ptype_t dtype; /* Destination type */
- cupsd_printer_t *printer; /* Printer this job is assigned to */
- int num_files; /* Number of files in job */
-@@ -47,6 +49,7 @@
- ipp_attribute_t *sheets; /* job-media-sheets-completed */
- time_t access_time, /* Last access time */
- cancel_time, /* When to cancel/send SIGTERM */
-+ creation_time, /* When job was created */
- completed_time, /* When job was completed (0 if not) */
- file_time, /* Job file retain time */
- history_time, /* Job history retain time */
diff -Nru cups-1.7.5/debian/patches/str4461-restore-access-to-logfiles.patch cups-1.7.5/debian/patches/str4461-restore-access-to-logfiles.patch
--- cups-1.7.5/debian/patches/str4461-restore-access-to-logfiles.patch 2014-11-04 08:53:19.000000000 +0100
+++ cups-1.7.5/debian/patches/str4461-restore-access-to-logfiles.patch 2014-11-27 20:42:12.000000000 +0100
@@ -103,7 +103,7 @@
Group, 1, 1) < 0 ||
--- a/scheduler/ipp.c
+++ b/scheduler/ipp.c
-@@ -2735,7 +2735,6 @@
+@@ -2734,7 +2734,6 @@
cupsdLogMessage(CUPSD_LOG_DEBUG,
"Copied PPD file successfully");
@@ -111,7 +111,7 @@
}
}
-@@ -4643,7 +4642,7 @@
+@@ -4641,7 +4640,7 @@
* Open the destination file for a copy...
*/
@@ -120,7 +120,7 @@
{
cupsFreeOptions(num_defaults, defaults);
cupsFileClose(src);
-@@ -4698,7 +4697,7 @@
+@@ -4696,7 +4695,7 @@
unlink(tempfile);
Reply to: