diff --git a/get-version.sh b/get-version.sh index 0cbf7163c8647c999c753ae4f7541be226dc2724..ef62d40ee8dd0c762f7ee7485c26c0f98460d285 100755 --- a/get-version.sh +++ b/get-version.sh @@ -20,12 +20,16 @@ cd - cp -r ${REPO} ${REPO}-${VERSION} cd ${REPO}-${VERSION} -git checkout ${VERSION} +if [ "${VERSION}" != "HEAD" ]; then + git checkout v${VERSION} +else + git checkout ${VERSION} +fi for file in `find . -name Cargo.toml` -do +do dir=${file%/Cargo.toml*} - + if [ -n "${dir}" ]; then cd ${dir} cargo vendor diff --git a/syscare-0.1.1.tar.gz b/syscare-1.0.1.tar.gz similarity index 100% rename from syscare-0.1.1.tar.gz rename to syscare-1.0.1.tar.gz diff --git a/syscare.spec b/syscare.spec old mode 100644 new mode 100755 index 65b0a405e70f525a158711eedb9031e718dc65b2..8cf9c58afc9db9c98a06ea44a7e3acc2b1fc7888 --- a/syscare.spec +++ b/syscare.spec @@ -1,30 +1,44 @@ %global debug_package %{nil} +%define kernel_devel_rpm %(echo $(rpm -q kernel-devel | head -n 1)) +%define kernel_version %(echo $(rpm -q --qf "\%%{VERSION}" %{kernel_devel_rpm})) +%define kernel_name %(echo $(rpm -q --qf "\%%{VERSION}-\%%{RELEASE}.\%%{ARCH}" %{kernel_devel_rpm})) + Name: syscare -Version: 0.1.1 -Release: 1 +Version: 1.0.1 +Release: 5 Summary: system hot-fix service -License: MulanPSL-2.0, GPLv2 +License: MulanPSL-2.0 and GPL-2.0-only URL: https://gitee.com/openeuler/syscare Source0: %{name}-%{version}.tar.gz -ExclusiveArch: x86_64 - BuildRequires: rust cargo gcc gcc-g++ cmake make BuildRequires: elfutils-libelf-devel -Requires: kpatch-runtime +Requires: coreutils systemd kpatch-runtime +Requires: %{name}-kmod >= 1.0.1-1 %description SysCare is a system-level hot-fix software that provides single-machine-level and cluster-level security patches and system error hot-fixes for the operating system. The host can fix the system problem without rebooting. +%package kmod +Summary: Syscare kernel modules. +Requires: kernel = %{kernel_version} +BuildRequires: kernel-devel +BuildRequires: make gcc bison flex + +%description kmod +Syscare kernel modules dependency. + %package build -Summary: Tools for build syscare patch. -Requires: %{name} = %{version}-%{release} -Requires: kpatch make gcc openssl-devel dwarves python3-devel bison flex -Requires: rpm-build +Summary: Tools for build syscare patch. +Requires: %{name} = %{version}-%{release} +Requires: %{name}-kmod >= 1.0.1-1 +Requires: kpatch make gcc openssl-devel dwarves python3-devel bison flex +Requires: elfutils-libelf-devel +Requires: rpm-build %description build Syscare build tools. @@ -33,11 +47,53 @@ Syscare build tools. %autosetup -p1 %build -cmake . +mkdir -p build_tmp +cd build_tmp + +cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_VERSION=%{version}-%{release} -DKERNEL_VERSION=%{kernel_name} .. make %install +cd build_tmp %make_install +mkdir -p %{buildroot}/lib/modules/%{kernel_name}/extra/syscare +mv %{buildroot}/usr/libexec/syscare/upatch.ko %{buildroot}/lib/modules/%{kernel_name}/extra/syscare + +%post +# Create runtime directory +mkdir -p /usr/lib/syscare/patches + +# Start all services +systemctl enable syscare +systemctl start syscare + +%preun +# Stop all services +systemctl stop syscare +systemctl disable syscare + +%postun +# Remove runtime directory at uninstallation +if [ "$1" -eq 0 ] || { [ -n "$2" ] && [ "$2" -eq 0 ]; }; then + rm -rf /usr/lib/syscare +fi + +%post kmod +# Create kmod weak-updates link +echo "/lib/modules/%{kernel_name}/extra/syscare/upatch.ko" | /sbin/weak-modules --add-module --no-initramfs --verbose >&2 + +# Start all services +systemctl enable syscare-upatch +systemctl start syscare-upatch + +%preun kmod +# Stop all services +systemctl stop syscare-upatch +systemctl disable syscare-upatch + +%postun kmod +# Remove kmod weak-updates link +echo "/lib/modules/%{kernel_name}/extra/syscare/upatch.ko" | /sbin/weak-modules --remove-module --no-initramfs --verbose >&2 mkdir -p %{buildroot}/usr/lib/systemd/system install -m 0644 %{_builddir}/%{name}-%{version}/misc/%{name}-restore.service %{buildroot}/usr/lib/systemd/system @@ -50,20 +106,72 @@ install -m 0644 %{_builddir}/%{name}-%{version}/misc/%{name}-pre.service %{build %files %defattr(-,root,root,-) %attr(755,root,root) /usr/bin/syscare +<<<<<<< HEAD %attr(755,root,root) /usr/libexec/%{name}/upatch-tool %attr(755,root,root) /usr/libexec/%{name}/auto-recovery.sh %attr(644,root,root) /usr/lib/systemd/system/%{name}-restore.service %attr(644,root,root) /usr/lib/systemd/system/%{name}-pre.service +======= +%attr(644,root,root) /usr/lib/systemd/system/syscare.service +%dir /usr/libexec/syscare +%attr(755,root,root) /usr/libexec/syscare/upatch-tool + +%files kmod +%dir /lib/modules/%{kernel_name}/extra/syscare +%attr(640,root,root) /lib/modules/%{kernel_name}/extra/syscare/upatch.ko +%attr(644,root,root) /usr/lib/systemd/system/syscare-upatch.service +>>>>>>> openEuler-22.03-LTS-SP2 %files build %defattr(-,root,root,-) -%dir /usr/libexec/%{name} -%attr(755,root,root) /usr/libexec/%{name}/upatch-diff -%attr(755,root,root) /usr/libexec/%{name}/upatch-build -%attr(755,root,root) /usr/libexec/%{name}/syscare-build +%dir /usr/libexec/syscare +%attr(755,root,root) /usr/libexec/syscare/syscare-build +%attr(755,root,root) /usr/libexec/syscare/upatch-build +%attr(755,root,root) /usr/libexec/syscare/upatch-diff %changelog +<<<<<<< HEAD * Mon Nov 28 2022 snoweay - 0.1.1-1 - First version for test. Support patches restore, remove, insmod upatch.ko. * Mon Nov 21 2022 snoweay - 0.1.0-1 - init version for 0.1.1-1. +======= +* Mon May 15 2023 renoseven - 1.0.1-5 +- Fix aarch64 kmod patch jump instruction error issue +- Add ifunc support +- Add 'syscare accept' command +- Add patch 'ACCEPT' state +* Tue Apr 04 2023 renoseven - 1.0.1-4 +- Enable aarch64 +- Fix syscare-upatch service may start failed issue +* Thu Mar 30 2023 renoseven - 1.0.1-3 +- Fix upatch may not contain all symbols issue +- Add syscare-kmod package +* Wed Mar 29 2023 renoseven - 1.0.1-2 +- Fix rpm install & remove script issue +* Wed Mar 15 2023 renoseven - 1.0.1-1 +- New syscare cli +- Support building patch for C++ code +- Support patch version verification +- Support elf name derivation +- Support fast reboot +* Wed Dec 21 2022 snoweay - 1.0.0-7 +- Fix 42 relocation caused by gcc 11. +* Tue Dec 20 2022 snoweay - 1.0.0-6 +- Fix patch open failure by reading patches at attach instead of load. +- Support epoch in spec. +* Sat Dec 17 2022 snoweay - 1.0.0-5 +- Check version-release of source pkg & debuginfo pkg. +* Fri Dec 16 2022 snoweay - 1.0.0-4 +- Avoid duplicate elfs by not following symlinks at build. +* Thu Dec 15 2022 snoweay - 1.0.0-3 +- Change kernel patches' scontext before apply not at rpm-post. +* Wed Dec 14 2022 snoweay - 1.0.0-2 +- Fix some issues: +- manager: Allow apply to actived kernel patch +- build: only 'NOT-APPLIED' patch package can be removed +- build: fix 'kernel patch cannot be insmod during system start' issue +- kmod: unregister when rmmod upatch +* Tue Dec 13 2022 snoweay - 1.0.0-1 +- Release the first version 1.0.0. +>>>>>>> openEuler-22.03-LTS-SP2