Change-Id: I68f587df99558307bfc1b3d167d7cd523595692b
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/3377
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>
| ... | ... |
@@ -1,7 +1,7 @@ |
| 1 | 1 |
Summary: initramfs |
| 2 | 2 |
Name: initramfs |
| 3 | 3 |
Version: 2.0 |
| 4 |
-Release: 2%{?dist}
|
|
| 4 |
+Release: 3%{?dist}
|
|
| 5 | 5 |
Source0: fscks.conf |
| 6 | 6 |
License: Apache License |
| 7 | 7 |
Group: System Environment/Base |
| ... | ... |
@@ -18,53 +18,92 @@ mkdir -p %{buildroot}%{_sysconfdir}/dracut.conf.d
|
| 18 | 18 |
install -D -m644 %{SOURCE0} %{buildroot}%{_sysconfdir}/dracut.conf.d/
|
| 19 | 19 |
install -d -m755 %{buildroot}%{_localstatedir}/lib/initramfs/kernel
|
| 20 | 20 |
|
| 21 |
-%define watched_path %{_sbindir} %{_libdir}/udev/rules.d %{_libdir}/systemd/system /lib/modules
|
|
| 21 |
+%define watched_path %{_sbindir} %{_libdir}/udev/rules.d %{_libdir}/systemd/system /lib/modules %{_sysconfdir}/dracut.conf.d
|
|
| 22 | 22 |
%define watched_pkgs e2fsprogs, ostree, systemd, kpartx, device-mapper-multipath |
| 23 | 23 |
|
| 24 |
-%define removal_action \ |
|
| 25 |
-rm -rf %{_localstatedir}/lib/rpm-state/initramfs.regenerate \
|
|
| 26 |
-rm -rf %{_localstatedir}/lib/rpm-state/initramfs.pending
|
|
| 24 |
+%define removal_action() rm -rf %{_localstatedir}/lib/rpm-state/initramfs
|
|
| 27 | 25 |
|
| 28 |
-%define pkgs_trigger_action \ |
|
| 29 |
-[ -f %{_localstatedir}/lib/rpm-state/initramfs.regenerate ] && exit 0 \
|
|
| 30 |
-mkdir -p %{_localstatedir}/lib/rpm-state \
|
|
| 31 |
-touch %{_localstatedir}/lib/rpm-state/initramfs.regenerate \
|
|
| 32 |
-echo "initramfs (re)generation triggered" >&2 |
|
| 26 |
+# How it works: |
|
| 27 |
+# |
|
| 28 |
+# We would like initramfs generation to happen if a given set of packages |
|
| 29 |
+# are changed, including installing/upgrading/uninstalling. |
|
| 30 |
+# |
|
| 31 |
+# Hence, Two sets of triggers: |
|
| 32 |
+# |
|
| 33 |
+# package triggers for setting the `regenerate` flag |
|
| 34 |
+# upon critical package install/upgrade/uninstall |
|
| 35 |
+# |
|
| 36 |
+# file transaction triggers which overlaps the set of files in those packages |
|
| 37 |
+# so that we have an opportunity to check for the flag and (re)generate |
|
| 38 |
+# initrd for all the kernels. |
|
| 39 |
+# |
|
| 40 |
+# All the flags will be put in /var/lib/rpm-state/initramfs |
|
| 41 |
+# |
|
| 42 |
+# This ensures the easy removal of the intermediate state, |
|
| 43 |
+# postun is essential here, as it guarantees that no intermediate states |
|
| 44 |
+# will be left over for the new initramfs rpm, since triggerin/un |
|
| 45 |
+# in the new rpm will execute after the postun in the old rpm |
|
| 46 |
+# |
|
| 47 |
+# The order of the scriptlet is critical. The heavy lifting mkinitrd is |
|
| 48 |
+# always done post transaction, as it's always invoked in posttrans/ |
|
| 49 |
+# transfiletriggerin/transfiletriggerpostun. Whereas the creation of flag |
|
| 50 |
+# is in the middle of transaction. |
|
| 51 |
+# |
|
| 52 |
+# The kernel rpm has triggers for initramfs. This is an optimization, as |
|
| 53 |
+# we don't want mkinitrd be invoked for all the kernels if some of the kernel |
|
| 54 |
+# rpms is being installed/upgraded/uninstalled. Hence, there is no trigger |
|
| 55 |
+# in initramfs watching for linux, but there is file transaction trigger |
|
| 56 |
+# watching for /lib/modules. The triggerin in linux.rpm will create flag as |
|
| 57 |
+# |
|
| 58 |
+# pending/%{uname_r}
|
|
| 59 |
+# |
|
| 60 |
+# which indicates only the corresponding initrd will be (re)generated, and |
|
| 61 |
+# the triggerun in linux.rpm will remove the corresponding initrd. |
|
| 33 | 62 |
|
| 34 |
-%define file_trigger_action \ |
|
| 63 |
+%define pkgs_trigger_action() \ |
|
| 64 |
+[ -f %{_localstatedir}/lib/rpm-state/initramfs/regenerate ] && exit 0 \
|
|
| 65 |
+mkdir -p %{_localstatedir}/lib/rpm-state/initramfs \
|
|
| 66 |
+touch %{_localstatedir}/lib/rpm-state/initramfs/regenerate \
|
|
| 67 |
+echo "initramfs (re)generation" %* >&2 |
|
| 68 |
+ |
|
| 69 |
+%define file_trigger_action() \ |
|
| 35 | 70 |
cat > /dev/null \ |
| 36 |
-if [ -f %{_localstatedir}/lib/rpm-state/initramfs.regenerate ]; then \
|
|
| 37 |
- echo "(re)generate initramfs for all kernels" >&2 \ |
|
| 71 |
+if [ -f %{_localstatedir}/lib/rpm-state/initramfs/regenerate ]; then \
|
|
| 72 |
+ echo "(re)generate initramfs for all kernels," %* >&2 \ |
|
| 38 | 73 |
mkinitrd -q \ |
| 39 |
-elif [ -d %{_localstatedir}/lib/rpm-state/initramfs.pending ]; then \
|
|
| 40 |
- for k in `ls %{_localstatedir}/lib/rpm-state/initramfs.pending/`; do \
|
|
| 41 |
- echo "generate initramfs for $k" >&2 \ |
|
| 74 |
+elif [ -d %{_localstatedir}/lib/rpm-state/initramfs/pending ]; then \
|
|
| 75 |
+ for k in `ls %{_localstatedir}/lib/rpm-state/initramfs/pending/`; do \
|
|
| 76 |
+ echo "(re)generate initramfs for $k," %* >&2 \ |
|
| 42 | 77 |
mkinitrd -q /boot/initrd.img-$k $k \ |
| 43 | 78 |
done; \ |
| 44 | 79 |
fi \ |
| 45 |
-%{removal_action}
|
|
| 80 |
+%removal_action |
|
| 46 | 81 |
|
| 47 |
-%post |
|
| 48 |
-%{pkgs_trigger_action}
|
|
| 82 |
+%posttrans |
|
| 83 |
+echo "initramfs" %{version}-%{release} "posttrans" >&2
|
|
| 84 |
+%removal_action |
|
| 85 |
+mkinitrd -q |
|
| 49 | 86 |
|
| 50 | 87 |
%postun |
| 51 |
-[ $1 -eq 0 ] || exit 0 |
|
| 52 |
-%{removal_action}
|
|
| 53 |
- |
|
| 54 |
-%posttrans |
|
| 55 |
-%{file_trigger_action}
|
|
| 88 |
+echo "initramfs" %{version}-%{release} "postun" >&2
|
|
| 89 |
+#cleanup the states |
|
| 90 |
+%removal_action |
|
| 56 | 91 |
|
| 57 | 92 |
%triggerin -- %{watched_pkgs}
|
| 58 |
-%{pkgs_trigger_action}
|
|
| 93 |
+[ $1 -gt 1 ] && exit 0 |
|
| 94 |
+#Upgrading, let the posttrans of new initramfs handles it |
|
| 95 |
+%pkgs_trigger_action triggerin $* %{version}-%{release}
|
|
| 59 | 96 |
|
| 60 | 97 |
%triggerun -- %{watched_pkgs}
|
| 61 |
-%{pkgs_trigger_action}
|
|
| 98 |
+[ $1 -eq 0 ] && exit 0 |
|
| 99 |
+#Uninstalling, let the linux.rpm removes initrd for themselves |
|
| 100 |
+%pkgs_trigger_action triggerun $* %{version}-%{release}
|
|
| 62 | 101 |
|
| 63 | 102 |
%transfiletriggerin -- %{watched_path}
|
| 64 |
-%{file_trigger_action}
|
|
| 103 |
+%file_trigger_action transfilertriggerin %{version}-%{release}
|
|
| 65 | 104 |
|
| 66 | 105 |
%transfiletriggerpostun -- %{watched_path}
|
| 67 |
-%{file_trigger_action}
|
|
| 106 |
+%file_trigger_action transfiletriggerpostun %{version}-%{release}
|
|
| 68 | 107 |
|
| 69 | 108 |
%files |
| 70 | 109 |
%defattr(-,root,root,-) |
| ... | ... |
@@ -72,6 +111,8 @@ fi \ |
| 72 | 72 |
%dir %{_localstatedir}/lib/initramfs/kernel
|
| 73 | 73 |
|
| 74 | 74 |
%changelog |
| 75 |
+* Thu Jul 27 2017 Bo Gan <ganb@vmware.com> 2.0-3 |
|
| 76 |
+- Move all states to one directory |
|
| 75 | 77 |
* Fri May 26 2017 Bo Gan <ganb@vmware.com> 2.0-2 |
| 76 | 78 |
- Discard stdin before dracut |
| 77 | 79 |
* Wed Apr 12 2017 Bo Gan <ganb@vmware.com> 2.0-1 |
| ... | ... |
@@ -1,9 +1,9 @@ |
| 1 | 1 |
%triggerin -- initramfs |
| 2 |
-mkdir -p %{_localstatedir}/lib/rpm-state/initramfs/kernel.pending
|
|
| 3 |
-touch %{_localstatedir}/lib/rpm-state/initramfs/kernel.pending/%{uname_r}
|
|
| 2 |
+mkdir -p %{_localstatedir}/lib/rpm-state/initramfs/pending
|
|
| 3 |
+touch %{_localstatedir}/lib/rpm-state/initramfs/pending/%{uname_r}
|
|
| 4 | 4 |
echo "initrd generation of kernel %{uname_r} will be triggered later" >&2
|
| 5 | 5 |
|
| 6 | 6 |
%triggerun -- initramfs |
| 7 |
-rm -rf %{_localstatedir}/lib/rpm-state/initramfs/kernel.pending/%{uname_r}
|
|
| 7 |
+rm -rf %{_localstatedir}/lib/rpm-state/initramfs/pending/%{uname_r}
|
|
| 8 | 8 |
rm -rf /boot/initrd.img-%{uname_r}
|
| 9 | 9 |
echo "initrd of kernel %{uname_r} removed" >&2
|
| ... | ... |
@@ -2,7 +2,7 @@ |
| 2 | 2 |
Summary: Kernel |
| 3 | 3 |
Name: linux-esx |
| 4 | 4 |
Version: 4.9.38 |
| 5 |
-Release: 2%{?dist}
|
|
| 5 |
+Release: 3%{?dist}
|
|
| 6 | 6 |
License: GPLv2 |
| 7 | 7 |
URL: http://www.kernel.org/ |
| 8 | 8 |
Group: System Environment/Kernel |
| ... | ... |
@@ -187,6 +187,8 @@ ln -sf linux-%{uname_r}.cfg /boot/photon.cfg
|
| 187 | 187 |
/usr/src/linux-headers-%{uname_r}
|
| 188 | 188 |
|
| 189 | 189 |
%changelog |
| 190 |
+* Wed Jul 26 2017 Bo Gan <ganb@vmware.com> 4.9.38-3 |
|
| 191 |
+- Fix initramfs triggers |
|
| 190 | 192 |
* Thu Jul 20 2017 Alexey Makhalov <amakhalov@vmware.com> 4.9.38-2 |
| 191 | 193 |
- Disable scheduler beef up patch |
| 192 | 194 |
* Tue Jul 18 2017 Alexey Makhalov <amakhalov@vmware.com> 4.9.38-1 |
| ... | ... |
@@ -2,7 +2,7 @@ |
| 2 | 2 |
Summary: Kernel |
| 3 | 3 |
Name: linux-secure |
| 4 | 4 |
Version: 4.9.38 |
| 5 |
-Release: 5%{?dist}
|
|
| 5 |
+Release: 6%{?dist}
|
|
| 6 | 6 |
License: GPLv2 |
| 7 | 7 |
URL: http://www.kernel.org/ |
| 8 | 8 |
Group: System Environment/Kernel |
| ... | ... |
@@ -255,6 +255,8 @@ ln -sf linux-%{uname_r}.cfg /boot/photon.cfg
|
| 255 | 255 |
/usr/src/linux-headers-%{uname_r}
|
| 256 | 256 |
|
| 257 | 257 |
%changelog |
| 258 |
+* Fri Aug 04 2017 Bo Gan <ganb@vmware.com> 4.9.38-6 |
|
| 259 |
+- Fix initramfs triggers |
|
| 258 | 260 |
* Tue Aug 01 2017 Anish Swaminathan <anishs@vmware.com> 4.9.38-5 |
| 259 | 261 |
- Allow some algorithms in FIPS mode |
| 260 | 262 |
- Reverts 284a0f6e87b0721e1be8bca419893902d9cf577a and backports |
| ... | ... |
@@ -2,7 +2,7 @@ |
| 2 | 2 |
Summary: Kernel |
| 3 | 3 |
Name: linux |
| 4 | 4 |
Version: 4.9.38 |
| 5 |
-Release: 5%{?dist}
|
|
| 5 |
+Release: 6%{?dist}
|
|
| 6 | 6 |
License: GPLv2 |
| 7 | 7 |
URL: http://www.kernel.org/ |
| 8 | 8 |
Group: System Environment/Kernel |
| ... | ... |
@@ -295,6 +295,8 @@ ln -sf %{name}-%{uname_r}.cfg /boot/photon.cfg
|
| 295 | 295 |
/usr/share/doc/* |
| 296 | 296 |
|
| 297 | 297 |
%changelog |
| 298 |
+* Fri Aug 04 2017 Bo Gan <ganb@vmware.com> 4.9.38-6 |
|
| 299 |
+- Fix initramfs triggers |
|
| 298 | 300 |
* Tue Aug 01 2017 Anish Swaminathan <anishs@vmware.com> 4.9.38-5 |
| 299 | 301 |
- Allow some algorithms in FIPS mode |
| 300 | 302 |
- Reverts 284a0f6e87b0721e1be8bca419893902d9cf577a and backports |