Hello community,

here is the log from the commit of package cups for openSUSE:Factory checked in 
at 2014-11-29 08:39:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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-11-15 
12:14:07.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.cups.new/cups.changes   2014-11-29 
08:39:45.000000000 +0100
@@ -1,0 +2,19 @@
+Tue Nov 25 16:13:50 CET 2014 - [email protected]
+
+- Refresh and/or clean up the systemd units that belong to CUPS
+  (cups.service cups.socket cups.path) via RPM posttrans scriplet
+  in a generic way via "systemctl --force reenable" (bnc#904215).
+  An enabled systemd unit may need a refresh via
+  "systemctl --force reenable" after updating a package when
+  the new package had installed a changed systemd unit file.
+  A disabled systemd unit also may need a refresh via
+  "systemctl --force reenable" but then it is again disabled.
+  A systemd unit may become obsolete by updating a package when
+  the new package does no longer provide a unit file. In this
+  case "systemctl --force reenable" removes the unit.
+  In any case currently running services are not stopped even
+  when the new package does no longer provide the unit file
+  because a RPM package update must not automatically disrupt
+  (stop or restart) running services.
+
+-------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cups.spec ++++++
--- /var/tmp/diff_new_pack.IFwUBp/_old  2014-11-29 08:39:47.000000000 +0100
+++ /var/tmp/diff_new_pack.IFwUBp/_new  2014-11-29 08:39:47.000000000 +0100
@@ -603,25 +603,6 @@
 # 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
 %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
@@ -641,14 +622,6 @@
 # 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}
@@ -689,6 +662,52 @@
 %endif
 exit 0
 
+%posttrans
+# 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
+%if 0%{?have_systemd}
+# Begin refresh systemd units and clean up possibly obsolete systemd units
+# The following is a generic way how to refresh and/or clean up systemd units.
+# A systemd unit may need a refresh after updating a package when the new 
package
+# had installed a changed systemd unit file for an enabled systemd unit.
+# A systemd unit may become obsolete by updating a package (see bnc#904215).
+# A systemd unit is considered to have become obsolete when the systemd
+# symlink /etc/systemd/system/.../unit_name -> /path/to/unit_file is broken.
+# When during package update the new package does no longer provide a unit file
+# then the systemd symlink becomes broken after the files of the old package
+# had been actually removed by RPM.
+# According to /usr/share/doc/packages/rpm/manual/triggers and according
+# to 
https://en.opensuse.org/openSUSE:Packaging_scriptlet_snippets#Scriptlet_Ordering
+# and 
http://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Scriptlet_Ordering
+# from the new package only "posttrans of new package" is run after "removal 
of old package"
+# so that the new package must do the clean up as RPM posttrans scriptlet.
+for u in cups.service cups.socket cups.path
+do if systemctl --quiet is-enabled $u 2>/dev/null
+   then # Refresh still valid enabled systemd units and clean up possibly 
obsoleted systemd units:
+        # Enforce systemd to use the current unit file which is usually the 
unit file of the new package
+        # but also in case of custom units (that use other unit files) a 
"reenable" won't hurt because
+        # "reenable" does not implicitly stop a running service which is "the 
right thing" because
+        # a RPM package installation must not automatically disrupt (restart) 
a running service.
+        # Using "--force reenable" is essential to clean up possibly 
conflicting/broken symlinks.
+        # (without "|| :" build fails with "Failed to get D-Bus connection: No 
connection to service manager. posttrans script ... failed"):
+        systemctl --quiet --force reenable $u 2>/dev/null || :
+   else # Refresh still valid disabled systemd units and clean up possibly 
obsoleted systemd units:
+        # First using "--force reenable" is essential to clean up possibly 
conflicting/broken symlinks
+        # because there is no "--force disable" that would clean up possibly 
conflicting/broken symlinks
+        # see https://bugzilla.opensuse.org/show_bug.cgi?id=904215#c34
+        # so that first the unit has a clean state and then it is set back to 
disabled (as it was before).
+        # If a disabled systemd unit has become obsoleted, "systemctl --force 
reenable" will clean it up
+        # which means the unit gets removed and the subsequent "systemctl 
disable" will do nothing.
+        # (without "|| :" build fails with "Failed to get D-Bus connection: No 
connection to service manager. posttrans script ... failed"):
+        systemctl --quiet --force reenable $u 2>/dev/null || :
+        systemctl --quiet disable $u 2>/dev/null || :
+   fi
+done
+# End refresh systemd units and clean up possibly obsolete systemd units
+%endif
+exit 0
+
 %post libs
 # 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




-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to