git: 39cb8160cb90 - main - sysutils/rldd: add port: Print shared object dependencies

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Tue, 27 May 2025 13:31:18 UTC
The branch main has been updated by tagattie:

URL: https://cgit.FreeBSD.org/ports/commit/?id=39cb8160cb9095ee6f9d3c34f45ab2b6f37cb502

commit 39cb8160cb9095ee6f9d3c34f45ab2b6f37cb502
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2025-05-27 13:30:17 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2025-05-27 13:30:17 +0000

    sysutils/rldd: add port: Print shared object dependencies
    
    The rldd tool resolves and prints the binary or shared library
    dependencies with different visualization options. In opposite to the
    Linux ldd tool, it does not invoke the system loader but instead
    parses the loading information directly from either ELF or Mach-O
    files, along with any required system files (such as loader cache or
    extra configuration files).
    
    WWW: https://github.com/zatrazz/rldd
---
 sysutils/Makefile                    |  1 +
 sysutils/rldd/Makefile               | 27 ++++++++++++
 sysutils/rldd/Makefile.crates        | 40 +++++++++++++++++
 sysutils/rldd/distinfo               | 83 ++++++++++++++++++++++++++++++++++++
 sysutils/rldd/files/patch-Cargo.toml | 11 +++++
 sysutils/rldd/pkg-descr              |  6 +++
 6 files changed, 168 insertions(+)

diff --git a/sysutils/Makefile b/sysutils/Makefile
index 5dc2b2126b92..9da0d38c2751 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -1124,6 +1124,7 @@
     SUBDIR += rhc
     SUBDIR += rinse
     SUBDIR += rkbin
+    SUBDIR += rldd
     SUBDIR += rmlint
     SUBDIR += rocinante
     SUBDIR += rocr
diff --git a/sysutils/rldd/Makefile b/sysutils/rldd/Makefile
new file mode 100644
index 000000000000..40d840e35ce1
--- /dev/null
+++ b/sysutils/rldd/Makefile
@@ -0,0 +1,27 @@
+PORTNAME=	rldd
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.3.0
+CATEGORIES=	sysutils
+
+MAINTAINER=	tagattie@FreeBSD.org
+COMMENT=	Print shared object dependencies
+WWW=		https://github.com/zatrazz/rldd
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+USES=		cargo
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	zatrazz
+
+PLIST_FILES=	bin/rldd
+PORTDOCS=	README.md
+
+OPTIONS_DEFINE=	DOCS
+
+post-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_MAN} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/sysutils/rldd/Makefile.crates b/sysutils/rldd/Makefile.crates
new file mode 100644
index 000000000000..1774d207cbcf
--- /dev/null
+++ b/sysutils/rldd/Makefile.crates
@@ -0,0 +1,40 @@
+CARGO_CRATES=	argh-0.1.13 \
+		argh_derive-0.1.13 \
+		argh_shared-0.1.13 \
+		bitflags-1.3.2 \
+		bitflags-2.8.0 \
+		cfg-if-1.0.0 \
+		errno-0.3.10 \
+		fastrand-2.3.0 \
+		getrandom-0.3.1 \
+		glob-0.3.2 \
+		libc-0.2.169 \
+		linux-raw-sys-0.4.15 \
+		memchr-2.7.4 \
+		memmap2-0.5.10 \
+		object-0.29.0 \
+		once_cell-1.20.2 \
+		proc-macro2-1.0.93 \
+		quote-1.0.38 \
+		raw-cpuid-10.7.0 \
+		rust-fuzzy-search-0.1.1 \
+		rustix-0.38.44 \
+		serde-1.0.217 \
+		serde_derive-1.0.217 \
+		syn-2.0.96 \
+		tempfile-3.16.0 \
+		termcolor-1.4.1 \
+		unicode-ident-1.0.16 \
+		wasi-0.13.3+wasi-0.2.2 \
+		winapi-util-0.1.9 \
+		windows-sys-0.59.0 \
+		windows-targets-0.52.6 \
+		windows_aarch64_gnullvm-0.52.6 \
+		windows_aarch64_msvc-0.52.6 \
+		windows_i686_gnu-0.52.6 \
+		windows_i686_gnullvm-0.52.6 \
+		windows_i686_msvc-0.52.6 \
+		windows_x86_64_gnu-0.52.6 \
+		windows_x86_64_gnullvm-0.52.6 \
+		windows_x86_64_msvc-0.52.6 \
+		wit-bindgen-rt-0.33.0
diff --git a/sysutils/rldd/distinfo b/sysutils/rldd/distinfo
new file mode 100644
index 000000000000..cefd94fd5d94
--- /dev/null
+++ b/sysutils/rldd/distinfo
@@ -0,0 +1,83 @@
+TIMESTAMP = 1748351833
+SHA256 (rust/crates/argh-0.1.13.crate) = 34ff18325c8a36b82f992e533ece1ec9f9a9db446bd1c14d4f936bac88fcd240
+SIZE (rust/crates/argh-0.1.13.crate) = 28366
+SHA256 (rust/crates/argh_derive-0.1.13.crate) = adb7b2b83a50d329d5d8ccc620f5c7064028828538bdf5646acd60dc1f767803
+SIZE (rust/crates/argh_derive-0.1.13.crate) = 23278
+SHA256 (rust/crates/argh_shared-0.1.13.crate) = a464143cc82dedcdc3928737445362466b7674b5db4e2eb8e869846d6d84f4f6
+SIZE (rust/crates/argh_shared-0.1.13.crate) = 5230
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.8.0.crate) = 8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36
+SIZE (rust/crates/bitflags-2.8.0.crate) = 47482
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/errno-0.3.10.crate) = 33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d
+SIZE (rust/crates/errno-0.3.10.crate) = 11824
+SHA256 (rust/crates/fastrand-2.3.0.crate) = 37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be
+SIZE (rust/crates/fastrand-2.3.0.crate) = 15076
+SHA256 (rust/crates/getrandom-0.3.1.crate) = 43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8
+SIZE (rust/crates/getrandom-0.3.1.crate) = 42449
+SHA256 (rust/crates/glob-0.3.2.crate) = a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2
+SIZE (rust/crates/glob-0.3.2.crate) = 22359
+SHA256 (rust/crates/libc-0.2.169.crate) = b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a
+SIZE (rust/crates/libc-0.2.169.crate) = 757901
+SHA256 (rust/crates/linux-raw-sys-0.4.15.crate) = d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab
+SIZE (rust/crates/linux-raw-sys-0.4.15.crate) = 2150898
+SHA256 (rust/crates/memchr-2.7.4.crate) = 78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3
+SIZE (rust/crates/memchr-2.7.4.crate) = 96670
+SHA256 (rust/crates/memmap2-0.5.10.crate) = 83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327
+SIZE (rust/crates/memmap2-0.5.10.crate) = 26847
+SHA256 (rust/crates/object-0.29.0.crate) = 21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53
+SIZE (rust/crates/object-0.29.0.crate) = 237723
+SHA256 (rust/crates/once_cell-1.20.2.crate) = 1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775
+SIZE (rust/crates/once_cell-1.20.2.crate) = 33394
+SHA256 (rust/crates/proc-macro2-1.0.93.crate) = 60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99
+SIZE (rust/crates/proc-macro2-1.0.93.crate) = 52388
+SHA256 (rust/crates/quote-1.0.38.crate) = 0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc
+SIZE (rust/crates/quote-1.0.38.crate) = 31252
+SHA256 (rust/crates/raw-cpuid-10.7.0.crate) = 6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332
+SIZE (rust/crates/raw-cpuid-10.7.0.crate) = 107292
+SHA256 (rust/crates/rust-fuzzy-search-0.1.1.crate) = a157657054ffe556d8858504af8a672a054a6e0bd9e8ee531059100c0fa11bb2
+SIZE (rust/crates/rust-fuzzy-search-0.1.1.crate) = 1198984
+SHA256 (rust/crates/rustix-0.38.44.crate) = fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154
+SIZE (rust/crates/rustix-0.38.44.crate) = 379347
+SHA256 (rust/crates/serde-1.0.217.crate) = 02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70
+SIZE (rust/crates/serde-1.0.217.crate) = 79019
+SHA256 (rust/crates/serde_derive-1.0.217.crate) = 5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0
+SIZE (rust/crates/serde_derive-1.0.217.crate) = 57749
+SHA256 (rust/crates/syn-2.0.96.crate) = d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80
+SIZE (rust/crates/syn-2.0.96.crate) = 297497
+SHA256 (rust/crates/tempfile-3.16.0.crate) = 38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91
+SIZE (rust/crates/tempfile-3.16.0.crate) = 38550
+SHA256 (rust/crates/termcolor-1.4.1.crate) = 06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755
+SIZE (rust/crates/termcolor-1.4.1.crate) = 18773
+SHA256 (rust/crates/unicode-ident-1.0.16.crate) = a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034
+SIZE (rust/crates/unicode-ident-1.0.16.crate) = 47684
+SHA256 (rust/crates/wasi-0.13.3+wasi-0.2.2.crate) = 26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2
+SIZE (rust/crates/wasi-0.13.3+wasi-0.2.2.crate) = 136754
+SHA256 (rust/crates/winapi-util-0.1.9.crate) = cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb
+SIZE (rust/crates/winapi-util-0.1.9.crate) = 12464
+SHA256 (rust/crates/windows-sys-0.59.0.crate) = 1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b
+SIZE (rust/crates/windows-sys-0.59.0.crate) = 2387323
+SHA256 (rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973
+SIZE (rust/crates/windows-targets-0.52.6.crate) = 6403
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3
+SIZE (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 435718
+SHA256 (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469
+SIZE (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 832615
+SHA256 (rust/crates/windows_i686_gnu-0.52.6.crate) = 8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b
+SIZE (rust/crates/windows_i686_gnu-0.52.6.crate) = 880402
+SHA256 (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66
+SIZE (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 475940
+SHA256 (rust/crates/windows_i686_msvc-0.52.6.crate) = 240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66
+SIZE (rust/crates/windows_i686_msvc-0.52.6.crate) = 901163
+SHA256 (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78
+SIZE (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 836363
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d
+SIZE (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 435707
+SHA256 (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec
+SIZE (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 832564
+SHA256 (rust/crates/wit-bindgen-rt-0.33.0.crate) = 3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c
+SIZE (rust/crates/wit-bindgen-rt-0.33.0.crate) = 3357
+SHA256 (zatrazz-rldd-v0.3.0_GH0.tar.gz) = 7c84f08d598c81c1575e24ca99082757c5e833d6be80fa355f7f2bd07e37fdca
+SIZE (zatrazz-rldd-v0.3.0_GH0.tar.gz) = 205150
diff --git a/sysutils/rldd/files/patch-Cargo.toml b/sysutils/rldd/files/patch-Cargo.toml
new file mode 100644
index 000000000000..5273833d9113
--- /dev/null
+++ b/sysutils/rldd/files/patch-Cargo.toml
@@ -0,0 +1,11 @@
+--- Cargo.toml.orig	2025-05-27 13:19:29 UTC
++++ Cargo.toml
+@@ -31,7 +31,7 @@ raw-cpuid = "10.6.0"
+ [target.'cfg(any(target_arch = "x86", target_arch = "x86_64"))'.dependencies]
+ raw-cpuid = "10.6.0"
+ 
+-[target.'cfg(target_os = "android")'.dev-dependencies]
++[target.'cfg(any(target_os = "android", target_os = "freebsd"))'.dev-dependencies]
+ tempfile = "3.3.0"
+ 
+ [profile.release]
diff --git a/sysutils/rldd/pkg-descr b/sysutils/rldd/pkg-descr
new file mode 100644
index 000000000000..453b7e6eb7e0
--- /dev/null
+++ b/sysutils/rldd/pkg-descr
@@ -0,0 +1,6 @@
+The rldd tool resolves and prints the binary or shared library
+dependencies with different visualization options. In opposite to the
+Linux ldd tool, it does not invoke the system loader but instead
+parses the loading information directly from either ELF or Mach-O
+files, along with any required system files (such as loader cache or
+extra configuration files).