diff --git a/0001-clib-Use-build.rs-to-fix-SONAME.patch b/0001-clib-Use-build.rs-to-fix-SONAME.patch new file mode 100644 index 0000000..69aecc3 --- /dev/null +++ b/0001-clib-Use-build.rs-to-fix-SONAME.patch @@ -0,0 +1,60 @@ +From 0b530d4c8e75f60015d13c225b1c634389fbe798 Mon Sep 17 00:00:00 2001 +From: Gris Ge +Date: Fri, 17 May 2024 13:12:14 +0800 +Subject: [PATCH] clib: Use build.rs to fix SONAME + +Use [`cargo:rustc-cdylib-link-arg`][1] to `build.rs` to fix the SONAME issue +of cargo. + +Removed workarounds in rpm spec and `.cargo/config.toml`. + +Changed Makefile to place `-lnmstate` after the source file to fix +compile issue on ubuntu 20.04 old gcc. + +[1]: https://doc.rust-lang.org/cargo/reference/build-scripts.html#rustc-cdylib-link-arg + +Signed-off-by: Gris Ge +--- + rust/.cargo/config.toml | 3 --- + rust/src/clib/Cargo.toml | 1 + + rust/src/clib/build.rs | 6 ++++++ + 3 files changed, 7 insertions(+), 3 deletions(-) + create mode 100644 rust/src/clib/build.rs + +diff --git a/rust/.cargo/config.toml b/rust/.cargo/config.toml +index 018e59d4..ca6c72f7 100644 +--- a/rust/.cargo/config.toml ++++ b/rust/.cargo/config.toml +@@ -1,5 +1,2 @@ +-[build] +-rustflags = "-Clink-arg=-Wl,-soname=libnmstate.so.1" +- + [target.x86_64-unknown-linux-gnu] + runner = 'sudo -E' +diff --git a/rust/src/clib/Cargo.toml b/rust/src/clib/Cargo.toml +index 462757ca..0eb00922 100644 +--- a/rust/src/clib/Cargo.toml ++++ b/rust/src/clib/Cargo.toml +@@ -6,6 +6,7 @@ authors = ["Gris Ge "] + license = "Apache-2.0" + edition = "2018" + rust-version = "1.58" ++build = "build.rs" + + [lib] + name = "nmstate" +diff --git a/rust/src/clib/build.rs b/rust/src/clib/build.rs +new file mode 100644 +index 00000000..74ad7e48 +--- /dev/null ++++ b/rust/src/clib/build.rs +@@ -0,0 +1,6 @@ ++// SPDX-License-Identifier: Apache-2.0 ++ ++fn main() { ++ #[cfg(target_os = "linux")] ++ println!("cargo:rustc-cdylib-link-arg=-Wl,-soname=libnmstate.so.1"); ++} +-- +2.45.1 + diff --git a/nmstate.spec b/nmstate.spec index 78b3d81..60bd266 100644 --- a/nmstate.spec +++ b/nmstate.spec @@ -4,7 +4,7 @@ Name: nmstate Version: 1.4.6 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Declarative network manager API License: LGPLv2+ URL: https://github.com/%{srcname}/%{srcname} @@ -14,6 +14,7 @@ Source2: https://www.nmstate.io/nmstate.gpg Source3: %{url}/releases/download/v%{version}/%{srcname}-vendor-%{version}.tar.xz # Patches 0X are reserved to downstream only Patch0: BZ_2132570-nm-reverse-IPv6-order-before-adding-them-to-setting.patch +Patch10: 0001-clib-Use-build.rs-to-fix-SONAME.patch BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: gnupg2 @@ -83,15 +84,6 @@ gpgv2 --keyring ./gpgkey-mantainers.gpg %{SOURCE1} %{SOURCE0} pushd rust # Source3 is vendored dependencies %cargo_prep -V 3 - -# The cargo_prep will create `.cargo/config` which take precedence over -# `.cargo/config.toml` shipped by upstream which fix the SONAME of cdylib. -# To workaround that, merge upstream rustflags into cargo_prep created one. -_FLAGS=`sed -ne 's/rustflags = "\(.\+\)"/\1/p' .cargo/config.toml` -sed -i -e "s/rustflags = \[\(.\+\), \]$/rustflags = [\1, \"$_FLAGS\"]/" \ - .cargo/config -rm .cargo/config.toml - popd %build @@ -150,6 +142,9 @@ popd /sbin/ldconfig %changelog +* Fri May 17 2024 Gris Ge - 1.4.6-2 +- Fix clib SONAME. RHEL-32218 + * Thu May 16 2024 Gris Ge - 1.4.6-1 - Do not touch interface DNS if global DNS is used. RHEL-32218