Hello community, here is the log from the commit of package cups for openSUSE:Factory checked in at 2014-02-22 20:44:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cups (Old) and /work/SRC/openSUSE:Factory/.cups.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "cups" Changes: -------- --- /work/SRC/openSUSE:Factory/cups/cups.changes 2014-02-19 09:09:45.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.cups.new/cups.changes 2014-02-22 20:44:30.000000000 +0100 @@ -1,0 +2,33 @@ +Thu Feb 20 13:57:24 CET 2014 - jsmeix@suse.de + +- Cautious clean up of systemd units via RPM scriptlets + (see the entry below dated "Wed Feb 19 15:05:44 CET 2014") + does not work reliable because it would leave a messsed up + systemd setup for cupsd when YaST was used before + to start/stop/enable/disable the cupsd, see + https://bugzilla.novell.com/show_bug.cgi?id=857372#c115 + so that now cups.socket and cups.path are stopped and disabled + in any case to ensure starting/stopping/enabling/disabling + of the cupsd also works with YaST, see + https://bugzilla.novell.com/show_bug.cgi?id=857372#c120 + (bnc#857372). +- str4351.patch from CUPS upstream fixes + https://www.cups.org/str.php?L4351 + "STR #4351 cups-lpd hugh jobs (>2G) fail" + (bnc#864782). + +------------------------------------------------------------------- +Wed Feb 19 15:05:44 CET 2014 - jsmeix@suse.de + +- Cautious clean up of systemd units via RPM scriptlets: + * When /usr/lib/systemd/system/cups.path and/or + /usr/lib/systemd/system/cups.socket are in use + stop and disable them because they are no longer provided + but keep manually set up cups.path and/or cups.socket units. + * Enforce systemd to use the cups.service file in this package + by "systemctl reenable cups.service" if it was enabled + (intentionally this does not restart a running cupsd). + For details see "rpm -q --scripts cups" and have a look at + http://lists.opensuse.org/opensuse-packaging/2014-02/msg00096.html + +------------------------------------------------------------------- New: ---- str4351.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cups.spec ++++++ --- /var/tmp/diff_new_pack.pwsrz4/_old 2014-02-22 20:44:31.000000000 +0100 +++ /var/tmp/diff_new_pack.pwsrz4/_new 2014-02-22 20:44:31.000000000 +0100 @@ -41,13 +41,6 @@ BuildRequires: openssl-devel BuildRequires: pam-devel BuildRequires: pkgconfig -%if 0%{?suse_version} > 1140 -BuildRequires: pkgconfig(systemd) -%{?systemd_requires} -%define have_systemd 1 -# may not be defined in older systemd macros.. -%{!?_tmpfilesdir: %global _tmpfilesdir /usr/lib/tmpfiles.d } -%endif # The "BuildRequires: poppler-tools" installs /usr/bin/pdftops for the # check in config-scripts/cups-pdf.m4 regarding HAVE_PDFTOPS_WITH_ORIGPAGESIZE # see https://www.cups.org/str.php?L3689 @@ -61,8 +54,35 @@ BuildRequires: tcpd-devel BuildRequires: update-desktop-files BuildRequires: zlib-devel +# See http://en.opensuse.org/openSUSE:Systemd_packaging_guidelines +# that reads as of this writing (Thu Feb 13 12:20:32 CET 2014) +# where here the RPM macro percentage sign is replaced with '@' to be safe: +# Starting with openSUSE 12.1, several RPM macros +# must be used to package systemd services files +# Build Requirement +# You should add : +# @if 0@{?suse_version} >= 1210 +# BuildRequires: systemd +# @endif +# as Build Requires. +# Requires +# Add +# @{?systemd_requires} +# to ensure the needed dependencies are added to your package +%if 0%{?suse_version} >= 1210 +%define have_systemd 1 +%endif +%if 0%{?have_systemd} +BuildRequires: pkgconfig(systemd) +%{?systemd_requires} +# _tmpfilesdir is not defined in systemd macros up to openSUSE 12.3 and +# in openSUSE 13.1 "rpm --eval @{_tmpfilesdir}" results /usr/lib/tmpfiles.d +# (above the RPM macro percentage sign is replaced with '@' to be safe): +%{!?_tmpfilesdir: %global _tmpfilesdir /usr/lib/tmpfiles.d } +%else PreReq: %insserv_prereq PreReq: %fillup_prereq +%endif # sysvinit(syslog) is first provided in openSUSE:Factory (i.e. openSUSE 11.4): %if 0%{?suse_version} > 1130 PreReq: sysvinit(syslog) @@ -196,6 +216,8 @@ # who have been allowed by root to do CUPS configuration changes # (CUPS STR#4223 CVE-2012-5519 Novell/Suse Bugzilla bnc#789566): Patch113: cups-1.5.4-CVE-2012-5519.patch +# Patch114 fixes STR #4351: cups-lpd hugh jobs (>2G) fail +Patch114: str4351.patch # Install into this non-root directory (required when norootforbuild is used): BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -356,6 +378,8 @@ # who have been allowed by root to do CUPS configuration changes # (CUPS STR#4223 CVE-2012-5519 Novell/Suse Bugzilla bnc#789566): %patch113 +# Patch114 fixes STR #4351: cups-lpd hugh jobs (>2G) fail +%patch114 %build # Disable SILENT run of make so that make runs verbose as usual: @@ -514,6 +538,13 @@ %else ln -s /sbin/service %{buildroot}%{_sbindir}/rccups %endif +# For information only: +# When cupsd is launched via systemd there must no longer be any /etc/init.d/cups script +# (e.g. as an attempt to provide backward compatibility e.g. via "exec /usr/sbin/rccups $@") +# because systemd would recognize /etc/init.d/cups as another way to launch cupsd +# in addition to the actual unit file /usr/lib/systemd/system/cups.service +# which means calling "/etc/init.d/cups [start|stop|status]" does no longer work, +# see http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities/ # End launch cupsd via systemd %else # Begin launch cupsd via SysVinit: @@ -546,12 +577,35 @@ # Use a real bash script with an explicit "exit 0" at the end to be by default fail safe # an explicit "exit 1" must be use to enforce package install/upgrade/erase failure where needed # see the "Shared_libraries" section in http://en.opensuse.org/openSUSE:Packaging_scriptlet_snippets -/usr/sbin/groupadd -g 71 -o -r ntadmin 2>/dev/null || : %if 0%{?have_systemd} +# Cleaning up obsolete systemd units cups.path and cups.socket is only needed up to openSUSE 13.1 +# because cups.path and cups.socket are only provided from openSUSE 12.2 up to openSUSE 13.1 +# see bnc#857372 starting at https://bugzilla.novell.com/show_bug.cgi?id=857372#c61 +%if 0%{?suse_version} <= 1310 +# Begin clean up obsolete systemd units cups.path and cups.socket +# Stop and disable systemd units that have been provided by a previous package version but are no longer provided by this package. +# Do this in any case because YaST only supprts cups.service but not cups.socket or cups.path +# see https://bugzilla.novell.com/show_bug.cgi?id=857372#c120 +# and if cups.socket or cups.path would be actuve YaST would mess up the systemd setup for CUPS +# see https://bugzilla.novell.com/show_bug.cgi?id=857372#c115 +# which is one more reason that cups.socket and cups.path are completely disabled and removed +# see https://bugzilla.novell.com/show_bug.cgi?id=857372#c61 +for u in cups.path cups.socket +do # (without "|| :" build fails with "Failed to get D-Bus connection: No connection to service manager. preinstall script ... failed"): + systemctl --quiet stop $u || : + systemctl --quiet disable $u || : +done +# End clean up obsolete systemd units cups.path and cups.socket +%endif # Begin service_add_pre cups.service %service_add_pre cups.service # End service_add_pre cups.service %endif +# See https://bugzilla.novell.com/show_bug.cgi?id=suse45719 +# and attr(0775,root,ntadmin) for /usr/share/cups/drivers/ in the files section below +# and the samba.spec file in openSUSE:13.1 for the used command there to be in sync with Samba +# (without "|| :" build fails on SLE_11 and SLE_11_SP1 with "build_patchrpmcheck_scr: line 7: groupadd: command not found"): +getent group ntadmin >/dev/null || groupadd -g 71 -o -r ntadmin || : exit 0 %post @@ -562,6 +616,14 @@ # Begin service_add_post cups.service %service_add_post cups.service # End service_add_post cups.service +# Begin refresh systemd unit cups.service +# Be on the safe side and enforce systemd to use the cups.service file in this package +# ("reenable" does not implicitly stop a running cupsd which is exactly correct here): +if systemctl --quiet is-enabled cups.service +then # (without "|| :" build fails with "Failed to get D-Bus connection: No connection to service manager. postinstall script ... failed"): + systemctl --quiet reenable cups.service || : +fi +# End refresh systemd unit cups.service %else # Begin fillup_and_insserv -ny cups cups %{fillup_and_insserv -ny cups cups} ++++++ str4351.patch ++++++ Index: scheduler/cups-lpd.c =================================================================== --- scheduler/cups-lpd.c (revision 11557) +++ scheduler/cups-lpd.c (revision 11558) @@ -781,7 +770,8 @@ int fd; /* Temporary file */ FILE *fp; /* File pointer */ char filename[1024]; /* Temporary filename */ - int bytes; /* Bytes received */ + ssize_t bytes; /* Bytes received */ + size_t total; /* Total bytes */ char line[256], /* Line from file/stdin */ command, /* Command from line */ *count, /* Number of bytes */ @@ -965,15 +955,15 @@ * Copy the data or control file from the client... */ - for (i = atoi(count); i > 0; i -= bytes) + for (total = (size_t)strtoll(count, NULL, 10); total > 0; total -= (size_t)bytes) { - if (i > sizeof(line)) - bytes = sizeof(line); + if (total > sizeof(line)) + bytes = (ssize_t)sizeof(line); else - bytes = i; + bytes = (ssize_t)total; - if ((bytes = fread(line, 1, bytes, stdin)) > 0) - bytes = write(fd, line, bytes); + if ((bytes = (ssize_t)fread(line, 1, (size_t)bytes, stdin)) > 0) + bytes = write(fd, line, (size_t)bytes); if (bytes < 1) { -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org