diff --git a/0001-add-some-missing-c-rust-struct-transfer.patch b/0001-add-some-missing-c-rust-struct-transfer.patch new file mode 100644 index 0000000000000000000000000000000000000000..7399e169c5ea247371d44a71bf4f774a35d173d3 --- /dev/null +++ b/0001-add-some-missing-c-rust-struct-transfer.patch @@ -0,0 +1,59 @@ +From 8f18f3be75b1631d259c0a296cbf79df0cecd17a Mon Sep 17 00:00:00 2001 +From: jikai +Date: Sat, 17 Aug 2024 17:02:02 +0000 +Subject: [PATCH] add some missing c-rust struct transfer + +Signed-off-by: jikai +--- + nri/src/nri/c_transfer.rs | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/nri/src/nri/c_transfer.rs b/nri/src/nri/c_transfer.rs +index 7c67e01..913fab9 100644 +--- a/nri/src/nri/c_transfer.rs ++++ b/nri/src/nri/c_transfer.rs +@@ -218,6 +218,11 @@ impl From<&NriLinuxMemory> for nri::LinuxMemory { + disable_oom_killer.value = unsafe { *req.disable_oom_killer } != 0; + r_rq.disable_oom_killer = MessageField::some(disable_oom_killer); + } ++ if !req.use_hierarchy.is_null() { ++ let mut use_hierarchy = OptionalBool::new(); ++ use_hierarchy.value = unsafe { *req.use_hierarchy } != 0; ++ r_rq.use_hierarchy = MessageField::some(use_hierarchy); ++ } + r_rq + + } +@@ -619,8 +624,9 @@ impl From<&NriPodSandbox> for nri::PodSandbox { + r_req.id = to_string(req.id); + r_req.name = to_string(req.name); + r_req.uid = to_string(req.uid); +- r_req.labels = to_hash_map(req.labels); + r_req.namespace = to_string(req.namespace); ++ r_req.labels = to_hash_map(req.labels); ++ r_req.annotations = to_hash_map(req.annotations); + r_req.runtime_handler =to_string(req.runtime_handler); + if !req.linux.is_null() { + r_req.linux = MessageField::some(nri::LinuxPodSandbox::from(unsafe { req.linux.as_ref() }.unwrap())); +@@ -645,7 +651,7 @@ impl From<&NriMount> for nri::Mount { + let mut r_req = nri::Mount::new(); + r_req.destination = to_string(req.destination); + r_req.type_ = to_string(req.type_); +- r_req.source =to_string(req.source); ++ r_req.source = to_string(req.source); + r_req.options = c_char_ptr_ptr_to_vec(req.options, req.options_len); + r_req + } +@@ -929,6 +935,9 @@ impl From<&NriContainerUpdate> for nri::ContainerUpdate { + fn from(req: &NriContainerUpdate) -> Self { + let mut r_req = nri::ContainerUpdate::new(); + r_req.container_id = to_string(req.container_id); ++ if !req.linux.is_null() { ++ r_req.linux = MessageField::some(nri::LinuxContainerUpdate::from(unsafe { req.linux.as_ref() }.unwrap())); ++ } + r_req.ignore_failure = (req.ignore_failure != 0) as bool; + r_req + } +-- +2.34.1 + diff --git a/isula-rust-extensions-0.0.1.tar.gz b/isula-rust-extensions-0.0.1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..3ece194ce3b283d69c2ce2339e6ff493e919b24b Binary files /dev/null and b/isula-rust-extensions-0.0.1.tar.gz differ diff --git a/isula-rust-extensions.spec b/isula-rust-extensions.spec new file mode 100644 index 0000000000000000000000000000000000000000..9059afdc5dfd9c0d95c7778abf27177e2648f0e1 --- /dev/null +++ b/isula-rust-extensions.spec @@ -0,0 +1,71 @@ +#needsrootforbuild +%global __cargo_skip_build 0 +%global _debugsource_packages 1 +%global _debuginfo_subpackages 1 +%define _unpackaged_files_terminate_build 0 +%define debug_package %{nil} + +Name: isula-rust-extensions +Version: 0.0.1 +Release: 1 +URL: https://gitee.com/openeuler/isula-rust-extensions +Source: %{name}-%{version}.tar.gz +Summary: isula-rust-extensions is a rust-extension library for iSulad. +Group: Application/System +License: Mulan PSL v2 + +ExclusiveArch: x86_64 aarch64 + +Patch0001: 0001-add-some-missing-c-rust-struct-transfer.patch + +BuildRequires: rust +BuildRequires: cargo +BuildRequires: rust-packaging +BuildRequires: gcc + +%description +Based on Rust programming language, rust-extension library for iSulad. + +%package devel +Summary: Rust extensions for iSulad +Group: Libraries +ExclusiveArch: x86_64 aarch64 +Requires: %{name} = %{version}-%{release} + +%description devel +the %{name}-libs package contains rust-extension library for iSulad + +%prep +%autosetup -p1 +pushd nri +%cargo_prep +%cargo_generate_buildrequires +popd + +%build +cd nri +sed -i '/\[source.crates-io\]/{n;d}' ./.cargo/config +sed -i '/\[source.local-registry\]/{n;d}' ./.cargo/config +sed -i '/\[source.local-registry\]/a directory = "vendor"' ./.cargo/config +%ifarch aarch64 +sed -i 's/rustflags = \[/rustflags = \["-Clink-arg=-lgcc", "-Clink-arg=-lfdt", /g' ./.cargo/config +%endif +%cargo_build -a + +%install +mkdir -p ${RPM_BUILD_ROOT}/{%{_libdir},%{_includedir}} +install -m 0644 nri/nri_plugin.h ${RPM_BUILD_ROOT}/%{_includedir}/nri_plugin.h +strip nri/target/release/libisula_nri.so +install -m 0755 nri/target/release/libisula_nri.so ${RPM_BUILD_ROOT}/%{_libdir}/libisula_nri.so + +%files +%defattr(-,root, root,-) +%{_libdir}/* + +%files devel +%defattr(-,root, root,-) +%{_includedir}/nri_plugin.h + +%changelog +* Fri Aug 09 2024 jikai - 0.0.1-1 +- Initial RPM release