[packages/rust] use installed manifests to split libs between packages

atler atler at pld-linux.org
Mon Mar 30 19:25:46 CEST 2026


commit 2dded9bfbd4c32d124c03f10b684611e4c73d9c0
Author: Jan Palus <atler at pld-linux.org>
Date:   Sun Mar 29 01:12:40 2026 +0100

    use installed manifests to split libs between packages

 rust.spec | 28 +++++++++++++++++++---------
 1 file changed, 19 insertions(+), 9 deletions(-)
---
diff --git a/rust.spec b/rust.spec
index 9dbd82b..b4825e1 100644
--- a/rust.spec
+++ b/rust.spec
@@ -488,9 +488,6 @@ find $RPM_BUILD_ROOT%{common_libdir} -maxdepth 1 -type f -name '*.so' \
 # The shared libraries should be executable for debuginfo extraction.
 find $RPM_BUILD_ROOT%{_prefix}/ -type f -name '*.so' -exec chmod -v +x '{}' '+'
 
-# Remove installer artifacts (manifests, uninstall scripts, etc.)
-find $RPM_BUILD_ROOT%{rustlibdir}/ -maxdepth 1 -type f -exec rm -v '{}' '+'
-
 # FIXME: __os_install_post will strip the rlibs
 # -- should we find a way to preserve debuginfo?
 
@@ -514,19 +511,35 @@ install -d $RPM_BUILD_ROOT%{_datadir}/%{name}
 # Create the path for crate-devel packages
 install -d $RPM_BUILD_ROOT%{_datadir}/cargo/registry
 
+process_manifest() {
+	local manifest=$1 output=$2
+	grep '\.\(so\|rlib\|rmeta\)$' "$manifest" | sed -e "s;file:$RPM_BUILD_ROOT;;" \
+		-e 's;^%{common_libdir}/\([^/]*\.so\)$;%{_libdir}/\1;' >> "$output"
+}
+
+: > rust-std.libs
+for target in %{rust_targets}; do
+	process_manifest $RPM_BUILD_ROOT%{rustlibdir}/manifest-rust-std-$target rust-std.libs
+done
+
+: > rust.libs
+process_manifest $RPM_BUILD_ROOT%{rustlibdir}/manifest-rustc rust.libs
+
+# Remove installer artifacts (manifests, uninstall scripts, etc.)
+find $RPM_BUILD_ROOT%{rustlibdir}/ -maxdepth 1 -type f -exec rm -v '{}' '+'
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %post	-p /sbin/ldconfig
 %postun	-p /sbin/ldconfig
 
-%files
+%files -f rust.libs
 %defattr(644,root,root,755)
 %doc COPYRIGHT LICENSE-APACHE LICENSE-MIT README.md
 %attr(755,root,root) %{_bindir}/rustc
 %attr(755,root,root) %{_bindir}/rustdoc
 %attr(755,root,root) %{_bindir}/rustfmt
-%attr(755,root,root) %{_libdir}/librustc_driver-*.so
 %{_mandir}/man1/rustc.1*
 %{_mandir}/man1/rustdoc.1*
 %dir %{rustlibdir}
@@ -539,15 +552,12 @@ rm -rf $RPM_BUILD_ROOT
 %dir %{rustlibdir}/%rust_host_triple/bin/self-contained
 %attr(755,root,root) %{rustlibdir}/%rust_host_triple/bin/self-contained/llvm-bitcode-linker
 
-%files std
+%files std -f rust-std.libs
 %defattr(644,root,root,755)
 %(for rust_target in %rust_targets; do
 cat <<EOF
 %dir %{rustlibdir}/$rust_target
 %dir %{rustlibdir}/$rust_target/lib
-%attr(755,root,root) %{rustlibdir}/$rust_target/lib/*.so
-%{rustlibdir}/$rust_target/lib/*.rlib
-%{rustlibdir}/$rust_target/lib/*.rmeta
 EOF
 done
 )
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/rust.git/commitdiff/b4fae5d3261285c29a11705b7262a2d988c0ba0d



More information about the pld-cvs-commit mailing list