diff --git a/docs/cicd/build_rpm_with_mock/sysmaster.spec b/docs/cicd/build_rpm_with_mock/sysmaster.spec index 9c8050d0083ccfd2792c6d33552f7e0fb6d87377..2c7db5a6ed4dd2b84264baa0cebc86b2cb86fb57 100644 --- a/docs/cicd/build_rpm_with_mock/sysmaster.spec +++ b/docs/cicd/build_rpm_with_mock/sysmaster.spec @@ -33,6 +33,10 @@ Summary: %{summary} %package -n devmaster Summary: Infrastructure of device management in userspace. BuildRequires: util-linux-devel kmod-devel +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires(post): sysmaster +Requires(preun): sysmaster +Requires(postun): sysmaster %description -n devmaster This package provides the infrastructure of device management in userspace. @@ -65,6 +69,7 @@ install -Dm0750 -t %{sysmaster_install_target} %{sysmaster_install_source}/sysmo install -Dm0750 -t %{sysmaster_install_target} %{sysmaster_install_source}/random_seed install -Dm0750 -t %{sysmaster_install_target} %{sysmaster_install_source}/rc-local-generator install -Dm0750 -t %{sysmaster_install_target} %{sysmaster_install_source}/hostname_setup +install -Dm0750 -t %{sysmaster_install_target} %{sysmaster_install_source}/sysmaster-run install -Dm0750 -t %{sysmaster_install_target}/system-generators %{sysmaster_install_source}/getty-generator cp -a %{factory_install_source}/* %{factory_install_target} @@ -72,12 +77,12 @@ cp -a %{factory_install_source}/* %{factory_install_target} install -Dm0750 -t %{buildroot}/usr/bin %{sysmaster_install_source}/devctl ln -s /usr/bin/devctl %{buildroot}/usr/lib/devmaster/devmaster -for unit in NetworkManager.service dbus.service fstab.service hostname-setup.service getty.target sshd.service; do +for unit in NetworkManager.service dbus.service fstab.service hostname-setup.service getty.target sshd.service devctl-trigger.service; do # enable service for booting ln -s /usr/lib/sysmaster/system/$unit %{buildroot}/etc/sysmaster/system/multi-user.target.wants/$unit done -for unit in udevd.service udev-trigger.service devmaster.service devctl-trigger.service; do +for unit in udevd.service udev-trigger.service devmaster.service; do ln -s /usr/lib/sysmaster/system/$unit %{buildroot}/etc/sysmaster/system/sysinit.target.wants/$unit done @@ -96,6 +101,7 @@ sed -i 's/\"\/lib\/devmaster\/rules.d\"/&, \"\/etc\/udev\/rules.d\", \"\/run\/ud %attr(0550,-,-) /usr/lib/sysmaster/rc-local-generator %attr(0550,-,-) /usr/lib/sysmaster/system-generators/getty-generator %attr(0550,-,-) /usr/lib/sysmaster/hostname_setup +%attr(0550,-,-) /usr/lib/sysmaster/sysmaster-run %attr(0550,-,-) /usr/lib/sysmaster/sysmaster %dir %attr(0750,-,-) /etc/sysmaster %dir %attr(0750,-,-) /etc/sysmaster/system @@ -109,7 +115,7 @@ sed -i 's/\"\/lib\/devmaster\/rules.d\"/&, \"\/etc\/udev\/rules.d\", \"\/run\/ud %exclude /usr/lib/sysmaster/system/devmaster-simu-udev.service %exclude /usr/lib/sysmaster/system/devmaster.service %exclude /etc/sysmaster/system/sysinit.target.wants/devmaster.service -%exclude /etc/sysmaster/system/sysinit.target.wants/devctl-trigger.service +%exclude /etc/sysmaster/system/multi-user.target.wants/devctl-trigger.service %files -n devmaster %dir %attr(0550,-,-) /usr/lib/devmaster @@ -120,34 +126,36 @@ sed -i 's/\"\/lib\/devmaster\/rules.d\"/&, \"\/etc\/udev\/rules.d\", \"\/run\/ud %dir %attr(0750,-,-) /etc/devmaster/network.d %attr(0640,-,-) /etc/devmaster/network.d/99-default.link %attr(0550,-,-) /usr/bin/devctl -/usr/lib/devmaster/devmaster +%attr(0550,-,-) /usr/lib/devmaster/devmaster %attr(0640,-,-) /usr/lib/sysmaster/system/devctl-trigger.service %attr(0640,-,-) /usr/lib/sysmaster/system/devmaster-simu-udev.service %attr(0640,-,-) /usr/lib/sysmaster/system/devmaster.service %attr(0550,-,-) /usr/lib/devmaster/simulate_udev.sh /etc/sysmaster/system/sysinit.target.wants/devmaster.service -/etc/sysmaster/system/sysinit.target.wants/devctl-trigger.service +/etc/sysmaster/system/multi-user.target.wants/devctl-trigger.service %post -n sysmaster -test -f /usr/bin/sctl && ln -sf ../bin/sctl /usr/sbin/reboot -test -f /usr/bin/sctl && ln -sf ../bin/sctl /usr/sbin/shutdown -test -f /usr/bin/sctl && ln -sf ../bin/sctl /usr/sbin/poweroff -test -f /usr/bin/sctl && ln -sf ../bin/sctl /usr/sbin/halt +test -f /usr/bin/sctl && ln -sf ../bin/sctl /usr/sbin/reboot || : +test -f /usr/bin/sctl && ln -sf ../bin/sctl /usr/sbin/shutdown || : +test -f /usr/bin/sctl && ln -sf ../bin/sctl /usr/sbin/poweroff || : +test -f /usr/bin/sctl && ln -sf ../bin/sctl /usr/sbin/halt || : %postun -n sysmaster -test -f /usr/bin/systemctl && ln -sf ../bin/systemctl /usr/sbin/reboot -test -f /usr/bin/systemctl && ln -sf ../bin/systemctl /usr/sbin/shutdown -test -f /usr/bin/systemctl && ln -sf ../bin/systemctl /usr/sbin/poweroff -test -f /usr/bin/systemctl && ln -sf ../bin/systemctl /usr/sbin/halt +test -f /usr/bin/systemctl && ln -sf ../bin/systemctl /usr/sbin/reboot || : +test -f /usr/bin/systemctl && ln -sf ../bin/systemctl /usr/sbin/shutdown || : +test -f /usr/bin/systemctl && ln -sf ../bin/systemctl /usr/sbin/poweroff || : +test -f /usr/bin/systemctl && ln -sf ../bin/systemctl /usr/sbin/halt || : %post -n devmaster -test -f /etc/sysmaster/system/sysinit.target.wants/udevd.service && unlink /etc/sysmaster/system/sysinit.target.wants/udevd.service -test -f /etc/sysmaster/system/sysinit.target.wants/udev-trigger.service && unlink /etc/sysmaster/system/sysinit.target.wants/udev-trigger.service +test -f /etc/sysmaster/system/sysinit.target.wants/udevd.service && unlink /etc/sysmaster/system/sysinit.target.wants/udevd.service || : +test -f /etc/sysmaster/system/sysinit.target.wants/udev-trigger.service && unlink /etc/sysmaster/system/sysinit.target.wants/udev-trigger.service || : %postun -n devmaster -test -f /usr/lib/sysmaster/system/udevd.service && ln -s /usr/lib/sysmaster/system/udevd.service /etc/sysmaster/system/sysinit.target.wants/udevd.service -test -f /usr/lib/sysmaster/system/udev-trigger.service && ln -s /usr/lib/sysmaster/system/udev-trigger.service /etc/sysmaster/system/sysinit.target.wants/udev-trigger.service +if [ $1 -eq 0 ] ; then + test -f /usr/lib/sysmaster/system/udevd.service && ln -s /usr/lib/sysmaster/system/udevd.service /etc/sysmaster/system/sysinit.target.wants/udevd.service || : + test -f /usr/lib/sysmaster/system/udev-trigger.service && ln -s /usr/lib/sysmaster/system/udev-trigger.service /etc/sysmaster/system/sysinit.target.wants/udev-trigger.service || : +fi %changelog * Mon Aug 22 2022 He Xiaowen - 0.2.0-1 diff --git a/libs/basic/src/condition.rs b/libs/basic/src/condition.rs index 3c1690f0ef7869a2949ca9793273a95060fbdba5..ec5bab210ef8e272f6ef3d345fb9e56a6b3ebfbc 100644 --- a/libs/basic/src/condition.rs +++ b/libs/basic/src/condition.rs @@ -236,41 +236,25 @@ impl Condition { } fn test_kernel_command_line(&self) -> i8 { - let has_equal = self.params.contains('='); - let search_value = if has_equal { - self.params.split_once('=').unwrap().0 - } else { - &self.params + let (params_key, params_value) = match self.params.split_once('=') { + None => return cmdline::Cmdline::default().has_param(&self.params) as i8, + Some(values) => (values.0, values.1), }; - let value = match cmdline::Cmdline::default().get_param(search_value) { + + let value = match cmdline::Cmdline::default().get_param(params_key) { None => { log::info!("Failed to get cmdline content, assuming ConditionKernelCommandLine check failed."); return 0; } - Some(v) => { - if v.is_empty() { - log::info!( - "/proc/cmdline doesn't contain the given item: {}", - search_value - ); - return 0; - } - v - } + Some(v) => v, }; - log::debug!("Found kernel command line value: {}", value); - if has_equal { - /* has an equal, "crashkernel=512M matches crashkernel=512M" */ - self.params.eq(&value) as i8 - } else { - /* Check if the value has an equal */ - match value.split_once('=') { - /* doesn't has an equal, "rd matches rd" */ - None => self.params.eq(&value) as i8, - /* has an equal, "crashkernel matches crashkernel=512M" */ - Some(v) => self.params.eq(v.0) as i8, - } - } + log::debug!( + "Found kernel command line value: {}={}, params: {}", + params_key, + value, + self.params + ); + (value == params_value) as i8 } fn test_needs_update(&self) -> i8 {