Hello community, here is the log from the commit of package systemd-rpm-macros for openSUSE:Factory checked in at 2015-09-19 06:51:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/systemd-rpm-macros (Old) and /work/SRC/openSUSE:Factory/.systemd-rpm-macros.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "systemd-rpm-macros" Changes: -------- --- /work/SRC/openSUSE:Factory/systemd-rpm-macros/systemd-rpm-macros.changes 2015-07-21 13:24:39.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.systemd-rpm-macros.new/systemd-rpm-macros.changes 2015-09-19 06:51:37.000000000 +0200 @@ -1,0 +2,9 @@ +Tue Aug 4 17:59:54 CEST 2015 - sbra...@suse.com + +- Add %systemd_preset_pre and %systemd_preset_posttrans that will + do one shot presetting of all services with changed system + preset. It makes possible to to fix bad default service state + (bnc#900935#c46, FATE#318949, FATE#317727, bnc#921075). +- Increment version to 3. + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ systemd-rpm-macros.spec ++++++ --- /var/tmp/diff_new_pack.gODXRY/_old 2015-09-19 06:51:39.000000000 +0200 +++ /var/tmp/diff_new_pack.gODXRY/_new 2015-09-19 06:51:39.000000000 +0200 @@ -17,7 +17,7 @@ Name: systemd-rpm-macros -Version: 2 +Version: 3 Release: 0 Summary: RPM macros for systemd License: LGPL-2.1+ ++++++ macros.systemd ++++++ --- /var/tmp/diff_new_pack.gODXRY/_old 2015-09-19 06:51:39.000000000 +0200 +++ /var/tmp/diff_new_pack.gODXRY/_new 2015-09-19 06:51:39.000000000 +0200 @@ -18,7 +18,17 @@ # # %postun # %service_del_postun demo.service -# +# +### +# +# When a package install systemd preset files, it should use the following macros: +# +# %pre -p /bin/bash +# %systemd_preset_pre +# +# %posttrans -p /bin/bash +# %systemd_preset_posttrans +# ### # This is for systemctl @@ -216,3 +226,108 @@ [ -x /usr/lib/systemd/systemd-binfmt ] && \ /usr/lib/systemd/systemd-binfmt %{?*} || : \ %{nil} + +%systemd_preset_pre() \ +cd /usr/lib/systemd/system-preset; \ +declare -a PRESET_FILES; \ +declare -A PRESETS; \ +PRESET_FILES=(*.preset); \ +if ! test -f presets-all.rpm-tmp ; then \ + for ((i=${#PRESET_FILES[@]}-1 ; i>= 0 ; i-- )) ; do \ + FILE=${PRESET_FILES[i]}; \ + exec 3<"$FILE"; \ + while read -u3 ENABLE SERVICE PAD ; do \ + if test -z "$SERVICE" ; then \ + continue; \ + fi; \ + case "$ENABLE" in \ + enable|disable) \ + PRESETS[$SERVICE]=$ENABLE;; \ + esac; \ + done; \ + exec 3<&-; \ + done; \ + exec 3>presets-all.rpm-tmp; \ + for PRESET in "${!PRESETS[@]}" ; do \ + echo >&3 "${PRESETS[$PRESET]} $PRESET"; \ + done; \ + exec 3>&-; \ +fi; \ +%{nil} + +%systemd_preset_posttrans() \ +cd /usr/lib/systemd/system-preset; \ +declare -a PRESET_FILES; \ +declare -A PRESETS_OLD; \ +declare -A PRESETS_OLD_WILDCARD; \ +declare -A PRESETS; \ +declare -A PRESETS_WILDCARD; \ +if test -f presets-all.rpm-tmp ; then \ + exec 3<presets-all.rpm-tmp; \ + while read -u3 ENABLE SERVICE PAD ; do \ + if test -z "$SERVICE" ; then \ + continue; \ + fi; \ + case "$ENABLE" in \ + enable|disable) \ + case $SERVICE in \ + *"*"*|*"?"*) PRESETS_OLD_WILDCARD[$SERVICE]=$ENABLE;; \ + *) PRESETS_OLD[$SERVICE]=$ENABLE;; \ + esac;; \ + esac; \ + done; \ + exec 3<&-; \ + PRESET_FILES=(*.preset); \ + for ((i=${#PRESET_FILES[@]}-1 ; i>= 0 ; i-- )) ; do \ + FILE=${PRESET_FILES[i]}; \ + exec 3<"$FILE"; \ + while read -u3 ENABLE SERVICE PAD ; do \ + if test -z "$SERVICE" ; then \ + continue; \ + fi; \ + case "$ENABLE" in \ + enable|disable) \ + case $SERVICE in \ + *"*"*|*"?"*) PRESETS_WILDCARD[$SERVICE]=$ENABLE;; \ + *) PRESETS[$SERVICE]=$ENABLE;; \ + esac;; \ + esac; \ + done; \ + exec 3<&-; \ + done; \ + if test -x /usr/bin/systemctl ; then \ + /usr/bin/systemctl --type=service,socket list-unit-files; \ + fi >service-states.rpm-tmp; \ + exec 3<service-states.rpm-tmp; \ + read -u3 PAD; \ + while read -u3 SERVICE ENABLE PAD ; do \ + if test -z "$SERVICE" ; then \ + break; \ + fi; \ + ENABLE_OLD=enable; \ + for PRESET in "${!PRESETS_OLD_WILDCARD[@]}" ; do \ + case "$SERVICE" in \ + $PRESET) ENABLE_OLD=${PRESETS_OLD_WILDCARD[$PRESET]};; \ + esac; \ + done; \ + if test -n "${PRESETS_OLD[$SERVICE]}" ; then \ + ENABLE_OLD="${PRESETS_OLD[$SERVICE]}"; \ + fi; \ + ENABLE_NEW=enable; \ + for PRESET in "${!PRESETS_WILDCARD[@]}" ; do \ + case "$SERVICE" in \ + $PRESET) ENABLE_NEW=${PRESETS_WILDCARD[$PRESET]};; \ + esac; \ + done; \ + if test -n "${PRESETS[$SERVICE]}" ; then \ + ENABLE_NEW="${PRESETS[$SERVICE]}"; \ + fi; \ + if test "$ENABLE_OLD" != "$ENABLE_NEW" ; then \ + echo "Resetting $SERVICE to the new default: $ENABLE_NEW"; \ + /usr/bin/systemctl preset "$SERVICE" || :; \ + fi; \ + done; \ + exec 3<&-; \ + rm -f presets-all.rpm-tmp service-states.rpm-tmp; \ +fi; \ +%{nil}