From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Thu, 24 Sep 2026 15:28:47 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-wr1-f57.google.com (mail-wr1-f57.google.com [209.85.221.57]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 68ODSklg021801 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 24 Sep 2026 15:28:46 +0200 Received: by mail-wr1-f57.google.com with SMTP id ffacd0b85a97d-4871575eebbsf1738701f8f.2 for ; Thu, 24 Sep 2026 06:28:46 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1790256521; cv=pass; d=google.com; s=arc-20260327; b=ipbil7Zn5CCtXhDtDvjy94iLe3QTP4WUlhjoNZF++K8ongTIIppJH2cTD3NCnkvLpE WlqoU+WwboDmQQzc1Z9iNuDf8g72M4ZVGOxdOY+5Y8JQS5rcCffTfgVuFQ8o+Ty+f54H eEYjugEg22SUmHEsbcZLPgR+rBpqcKnLrhXGq4awHmTs55+2noNWpYs8x2HCCHji5gIM 0SG2HlR12IllsWxH6lIq2snicJpsRnzZKL9SW0FFiylFefLgTWJlDOnelTLfcDoDqc/m ZcPvUQENmLamqSYJtryrgHM5YEkhXsylHs9CUWYqKeyHKM1TvAt8Uyjf2agelfcj4S1i bQHw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:content-transfer-encoding :in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:sender:dkim-signature; bh=LIi2I0H27uTvXobaJDKMc3dm9sMBouVdPC8LYhwMjb0=; fh=8PHwIZ35yNXX+g5v8m4kJfFR+ys7cHrgnVbAV/pWN54=; b=WvzE2ZcJl0xL+4+xC5dHw7a8rcQLhABt66foor4jLIkKPqnlzrb6j4hC2XTuFZDpcT w2VQ4eegWzzvDv3QXG9GZOqUndOsP3NX8pS4LqRWMQKrKBET9IYEI5sJ41m/zj7r+NGm TFKY/Rlin791YXxvpfm1sczaoAiKSY/GFVP8BhHdl96PrIxiTHVAgsbP3WlEyiHDvGjB Aujooe28KO0W2KoYItJwrA/ZgRE4S7itYvwuGNJnsa9aiDTvdHqZuaEK7/tQPDSuITlc 4FuQzx9Azvg4YgPnd7a2wDSS7SkPI15zJ9imMeQs4lQjP8Z+cgKPD78sAF33Or/QWQII 7jnA==; darn=ilbers.de ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of wzh@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=wzh@ilbers.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20251104; t=1790256521; x=1790861321; darn=ilbers.de; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:content-transfer-encoding:content-type :in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:sender:from:to:cc:subject :date:message-id:reply-to:content-type; bh=LIi2I0H27uTvXobaJDKMc3dm9sMBouVdPC8LYhwMjb0=; b=JTbG4yNsTwpFzCMXdJ3ftwptuSK1iJS6f0VP7IIqmTxbrERL+pxOzoT6vVFYjgGebh A0R7PaM9DAhozgqDaoT9JtZ3Z3A3VP4sz3d4AEhJQr+xBr0tnawhUmIhkbX7iMNQ/4rS pZZ0R8qZ2oahKQz6x1dKIVrCWcKD7jF2WjnFrudiEyxa0B2Q39IN8PyOXg8GGeBzO5Ca xPw+DU45dpgrFSjnIrLF4NirtRQaid7Fv2pk0ZRtZnGdILxeecYpCnQYf7sdOISTVcSS dZHSDk7jwLr1bvg/MQvXQ6Q8ymIHkPuH3lRZbNfxa7XK15/yymbqqg7aUcPcNFKA8Oii xduQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790256521; x=1790861321; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender :content-transfer-encoding:content-type:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-beenthere:x-gm-message-state:sender:from:to:cc :subject:date:message-id:reply-to:content-type; bh=LIi2I0H27uTvXobaJDKMc3dm9sMBouVdPC8LYhwMjb0=; b=JRH3tHT/rG6RUkz9CXvwmctEYuuOWTpprjliUhz7buBJ2c/KuOoEKfbB4kN3RbpNpa +M9Q9j8Xusx9OJp1v1OKdVmTCdTnORf1fNXwld9Aquo+dYyIThbJumO1MTZNVfW4YhQw 9ZHak0X16wld0EC/aJ7tQgbIrX0zGiZdoGrFBrxNLBJI1FsuCeCGYyP5WfaZnBpp/nm5 wQoVnbP1m2Ew2sHAlX5nQU/PX2BgVIbBO6lVBJWuu/HsFsJLv4VMuEzClqlmcVCTLfMm Dz4Yg3sBbsxShtftPwszs2+KeN0oyVYXC7vDsAd03D3i4+QJdWTfEUAbObCHiuWz1NKc 1+Rg== Sender: isar-users@googlegroups.com X-Forwarded-Encrypted: i=2; AKwUvByhQxHexRNHkcVjCvRX0eXz7j8xHpHj93L8KJiA9uU/8UK1aFJFcVx6jf7fNDt4hLYRm43y@ilbers.de X-Gm-Message-State: AFuF++m1qgGLVTj+6zK+F/z6XeSGI+63sG0s61bo7Vk17GXOtZhxX47D 6PxY2ZjBoKV77AyRBsJloNuOnJNkr2wWe7nDU3h9TglhwdlUMchUXr5P X-Received: by 2002:a05:6000:60b:b0:487:c99:8bec with SMTP id ffacd0b85a97d-488717147f1mr4222044f8f.3.1790256520591; Thu, 24 Sep 2026 06:28:40 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com; h="ATskLdeIPoSgLX3LH9Oxsb/Mjj6khrg4ZzRpAQHp1yxfDa36+w==" Received: by 2002:a05:6000:2611:b0:487:a89:5d6f with SMTP id ffacd0b85a97d-488795db3b8ls1340f8f.0.-pod-prod-07-eu; Thu, 24 Sep 2026 06:28:37 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvByVX9VlcsuLs5W2aSRL28T8i72NP6XqnSPx/Mw/fEnFgDeNE5TNIDOGAOHuhGpxxF5Fbt4xCRfF2wzZ@googlegroups.com X-Received: by 2002:a05:600c:a47:b0:49b:9202:6f80 with SMTP id 5b1f17b1804b1-49fe66abc9cmr40899765e9.6.1790256517572; Thu, 24 Sep 2026 06:28:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1790256517; cv=none; d=google.com; s=arc-20260327; b=ZRF9iXLCVZszgp4i2xFWyaQArnbdvQrAe1IcISqA/6RAQzzHLu4RRppAzMq0HHMPe9 /wI2i7voJnAkyMlg9KIsoG36cIFYDmb2EmDUepBgZ/SPGkKdJx+japxK+7TIYHnF205H FjU+fbKScGG/C0nvvcqVQLViMSW7+09PaaktB/zeK01iU39UQAra2/1T4lfL0KFpNHYs /9CN/a3EobHIjeVJ39xwvU1v9lbsoBtRAf/2gYLHZa1kmzF1EN/NniM7B/qqt+rehnlF ugmvdHjPlULYmDPKEwS3XI6t0aPcZsKm4zO/pP/zcI1h3Lnp2fKmEe/NCrlkc0qt9EZe 96NA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id; bh=WDlNsr9KNcOTp1IET8Ww6+5hap+uA+Pxv+GcL1JYGkM=; fh=IF1bGxK9SKeXTAgxr7bs40fCANvMKJ395PraMev3s3Q=; b=WCX+BQyx6RIhYoAKxWEhC4u7vgHyZN4HGBll9mRle40uMq4vCHCHVmpk4vaefrTU6S x4vCodg1q3rEGwDXgrLc5gBcDa4vZs+naGZuEAk/eRv9jnkm5XcqWR2AYmQhpoq0Fn8V bwoL3w/pGWpl/HRd0BHrA+mwLqCQ/ujQwlvvWnduPDKmnE5eBGeprCATn/kq/90GfPs8 ECc3If8dHVioGkMMT34suvqJeksQJbClWrr0IP8wJJB2Sp5YtLmTlOLfZQPN7N56ziof yaihUAmVH7PzlSmS0k957Mx4GmOZ8jnvvAK1i/7nse4aB2ft0o5ECqS1exfFNviwk1Jr lbPw==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of wzh@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=wzh@ilbers.de Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id 5b1f17b1804b1-49fdf14f8fdsi582075e9.0.2026.09.24.06.28.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 24 Sep 2026 06:28:37 -0700 (PDT) Received-SPF: pass (google.com: domain of wzh@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Received: from [192.168.178.139] ([88.130.203.42]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 68ODSaim021792 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 24 Sep 2026 15:28:36 +0200 Message-ID: <4322fa2c-05cd-494b-93d3-dfd185c75ccf@ilbers.de> Date: Thu, 24 Sep 2026 15:28:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 7/8] dracut: add support for cross initrd generation To: Felix Moessbauer , isar-users@googlegroups.com Cc: quirin.gylstorff@siemens.com, jan.kiszka@siemens.com References: <20260924072340.4038396-1-felix.moessbauer@siemens.com> <20260924072340.4038396-8-felix.moessbauer@siemens.com> Content-Language: en-US From: Zhihang Wei In-Reply-To: <20260924072340.4038396-8-felix.moessbauer@siemens.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-4.6 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2, RCVD_IN_RP_CERTIFIED,RCVD_IN_RP_RNBL,RCVD_IN_RP_SAFE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-Original-Sender: wzh@ilbers.de X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of wzh@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=wzh@ilbers.de Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-TUID: zQr7NC6VwtIy On 9/24/26 09:23, 'Felix Moessbauer' via isar-users wrote: > For cross-initrd generation, a cross variant of the ldd tool needs to > be provided. As there is no such tool, but this is THE performance > critical part (it needs to scan each binary and all transitive dependenci= es), > we provide a custom one which uses readelf to determine the shared librar= y > dependencies. > > Signed-off-by: Felix Moessbauer > --- > meta/classes-recipe/host-tooling.bbclass | 4 +- > meta/classes-recipe/initrd-dracut.bbclass | 38 ++++++++++- > meta/classes-recipe/rootfs.bbclass | 4 +- > .../dracut-cross-ldd/dracut-cross-ldd.bb | 16 +++++ > .../dracut-cross-ldd/files/dracut-cross-ldd | 65 +++++++++++++++++++ > 5 files changed, 123 insertions(+), 4 deletions(-) > create mode 100644 meta/recipes-devtools/dracut-cross-ldd/dracut-cross-= ldd.bb > create mode 100644 meta/recipes-devtools/dracut-cross-ldd/files/dracut-= cross-ldd > > diff --git a/meta/classes-recipe/host-tooling.bbclass b/meta/classes-reci= pe/host-tooling.bbclass > index b76f8898..5e81dfda 100644 > --- a/meta/classes-recipe/host-tooling.bbclass > +++ b/meta/classes-recipe/host-tooling.bbclass > @@ -5,8 +5,8 @@ > LICENSE =3D "gpl-2.0" > LIC_FILES_CHKSUM =3D "file://${LAYERDIR_core}/licenses/COPYING.GPLv2;md= 5=3D751419260aa954499f7abaabaa882bbe" > =20 > -HOST_TOOLING_PACKAGES ?=3D "" > -HOST_TOOLING_DEPENDS ?=3D "" > +HOST_TOOLING_PACKAGES ?=3D "dracut-core binutils zstd dracut-cross-ldd" > +HOST_TOOLING_DEPENDS ?=3D "dracut-cross-ldd" > =20 > # dependency to build the host-tooling-chroot > HOST_TOOLING_DEP ?=3D "host-tooling-chroot:do_build" > diff --git a/meta/classes-recipe/initrd-dracut.bbclass b/meta/classes-rec= ipe/initrd-dracut.bbclass > index 00999b91..e3c9f174 100644 > --- a/meta/classes-recipe/initrd-dracut.bbclass > +++ b/meta/classes-recipe/initrd-dracut.bbclass > @@ -56,8 +56,44 @@ def extend_dracut_cmdline(d): > ROOTFS_INITRAMFS_GENERATOR_CMDLINE =3D "dracut --force --kver $kernel_v= ersion -L 5 --reproducible" > ROOTFS_INITRAMFS_GENERATOR_CMDLINE:append =3D " ${@ extend_dracut_cmdli= ne(d)}" > =20 > +# Cross-assemble the initramfs, requires preparation of dracut module de= finitions > +def dracut_cross_default(d): > + return bb.utils.to_boolean(d.getVar('ISAR_CROSS_COMPILE')) \ > + and bb.utils.to_boolean(d.getVar('ROOTFS_USE_DRACUT')) \ > + and d.getVar('ROOTFS_ARCH') !=3D d.getVar('HOST_ARCH') > + > +ROOTFS_DRACUT_CROSS ??=3D "${@ '1' if dracut_cross_default(d) else '0' }= " > +ROOTFS_DRACUT_CROSS:bookworm =3D "0" > +OVERRIDES:append =3D "${@':dracut-cross' if bb.utils.to_boolean(d.getVar= ('ROOTFS_DRACUT_CROSS')) else ''}" > + > +ROOTFS_INSTALL_DEPENDS:append:dracut-cross =3D " ${@bb.utils.contains('R= OOTFS_INSTALL_COMMAND', 'rootfs_generate_initramfs', '${HOST_TOOLING_DEP}',= '', d)}" > +ROOTFS_INITRAMFS_GENERATOR_CMDLINE:append:dracut-cross =3D " --sysroot /= mnt/rootfs" > +DRACUT_MOUNTS =3D "" > +DRACUT_MOUNTS:append:dracut-cross =3D " ${ROOTFSDIR}:/mnt/rootfs" > +DRACUT_ROOTFS =3D "${ROOTFSDIR}" > +DRACUT_ROOTFS:dracut-cross =3D "${WORKDIR}/host-tooling" > +DRACUT_ENV =3D "DRACUT_ARCH=3D${QEMU_ARCH}" > +DRACUT_ENV:append:dracut-cross =3D " \ > + DRACUT_INSTALL=3D/usr/lib/dracut/dracut-install \ > + DRACUT_LDD=3D/usr/libexec/dracut-cross-ldd \ > +" > + > run_initrd_generator() { > mods_total=3D"$(find ${ROOTFSDIR}/usr/lib/dracut/modules.d/ -maxdep= th 1 -type d | wc -l)" > echo "Total number of modules: $mods_total (dracut)" > - run_in_chroot "${ROOTFSDIR}" sh -c "${ROOTFS_INITRAMFS_GENERATOR_CMD= LINE}" > + if [ "${ROOTFS_DRACUT_CROSS}" =3D "1" ]; then > + mkdir -p ${DRACUT_ROOTFS} > + run_privileged tar -xf ${HOST_TOOLING_CHROOT} -C ${DRACUT_ROOTFS= } > + trap 'run_privileged rm -rf ${DRACUT_ROOTFS}' EXIT > + fi > + ${@ insert_isar_umounts(d, d.getVar('DRACUT_ROOTFS'), d.getVar('DRAC= UT_MOUNTS')) } > + run_privileged_heredoc <<'EOF' > + ${@ insert_isar_mounts(d, d.getVar('DRACUT_ROOTFS'), d.getVar('D= RACUT_MOUNTS')) } > + export ${DRACUT_ENV} > + chroot ${DRACUT_ROOTFS} ${ROOTFS_INITRAMFS_GENERATOR_CMDLINE} > +EOF > } > + Hi Felix, In privileged mode,mounts are left behind, e.g.: [stdlog] 2026-09-24 14:46:59,368 avocado.test cibuilder=C2=A0 =C2=A0 =C2=A0= =C2=A0 L0369=20 INFO | WARNING:=20 /isar/build/tmp/work/debian-trixie-arm64/isar-image-ci-qemuarm64/1.0-r0/hos= t-tooling/mnt/rootfs=20 left mounted, unmounting... and [stdlog] 2026-09-24 14:54:33,999 avocado.test cibuilder=C2=A0 =C2=A0 =C2=A0= =C2=A0 L0369=20 INFO | WARNING:=20 /isar/build/tmp/work/debian-trixie-arm64/isar-dracut-qemuarm64/1.0-r0/host-= tooling/mnt/rootfs=20 left mounted, unmounting... On Jenkins these are treated as errors. Zhihang > +HOST_TOOLING_DEP ??=3D "" > +inherit_defer ${@'host-tooling' if bb.utils.to_boolean(d.getVar('ROOTFS_= DRACUT_CROSS')) else ''} > +do_generate_initramfs[depends] +=3D "${HOST_TOOLING_DEP}" > diff --git a/meta/classes-recipe/rootfs.bbclass b/meta/classes-recipe/roo= tfs.bbclass > index 1de27d7b..cea85626 100644 > --- a/meta/classes-recipe/rootfs.bbclass > +++ b/meta/classes-recipe/rootfs.bbclass > @@ -452,6 +452,8 @@ rootfs_capture_apt_state() { > var/lib/dpkg/status > } > =20 > +ROOTFS_INSTALL_DEPENDS ?=3D "" > + > do_rootfs_install[root_cleandirs] =3D "${ROOTFSDIR}" > do_rootfs_install[cleandirs] +=3D "${DEPLOYDIR}" > do_rootfs_install[sstate-inputdirs] =3D "${DEPLOYDIR}" > @@ -459,7 +461,7 @@ do_rootfs_install[sstate-outputdirs] =3D "${DEPLOY_DI= R_IMAGE}" > do_rootfs_install[vardeps] +=3D "${ROOTFS_CONFIGURE_COMMAND} ${ROOTFS_I= NSTALL_COMMAND} ${ROOTFS_POSTPROCESS_COMMAND} ${ROOTFS_VARDEPS}" > do_rootfs_install[vardepsexclude] +=3D "IMAGE_ROOTFS" > do_rootfs_install[depends] =3D "bootstrap-${@'target' if d.getVar('ROOT= FS_ARCH') =3D=3D d.getVar('DISTRO_ARCH') else 'host'}:do_build" > -do_rootfs_install[depends] +=3D "base-apt:do_cache isar-apt:do_cache_con= fig" > +do_rootfs_install[depends] +=3D "base-apt:do_cache isar-apt:do_cache_con= fig ${ROOTFS_INSTALL_DEPENDS}" > do_rootfs_install[deptask] =3D "do_deploy_deb" > do_rootfs_install[rdeptask] =3D "do_deploy_deb" > do_rootfs_install[network] =3D "${TASK_USE_SUDO}" > diff --git a/meta/recipes-devtools/dracut-cross-ldd/dracut-cross-ldd.bb b= /meta/recipes-devtools/dracut-cross-ldd/dracut-cross-ldd.bb > new file mode 100644 > index 00000000..327a5c82 > --- /dev/null > +++ b/meta/recipes-devtools/dracut-cross-ldd/dracut-cross-ldd.bb > @@ -0,0 +1,16 @@ > +# This software is a part of Isar. > +# Copyright (C) 2026 Siemens AG > + > +inherit dpkg-raw > + > +MAINTAINER =3D "isar-users " > +DESCRIPTION =3D "Minimal ldd replacement for dracut cross builds" > + > +SRC_URI =3D "file://${BPN}" > + > +DEBIAN_DEPENDS .=3D ",python3, binutils" > + > +do_install[cleandirs] +=3D "${D}/usr/libexec" > +do_install() { > + install -v -m 755 "${WORKDIR}/${BPN}" "${D}/usr/libexec/${BPN}" > +} > diff --git a/meta/recipes-devtools/dracut-cross-ldd/files/dracut-cross-ld= d b/meta/recipes-devtools/dracut-cross-ldd/files/dracut-cross-ldd > new file mode 100644 > index 00000000..ef60b3fa > --- /dev/null > +++ b/meta/recipes-devtools/dracut-cross-ldd/files/dracut-cross-ldd > @@ -0,0 +1,65 @@ > +#!/usr/bin/env python3 > +# This software is a part of Isar. > +# Copyright (C) 2026 Siemens AG > +import re > +import subprocess > +import sys > +from pathlib import Path > + > +# glob patterns relative to the sysroot, including multiarch directories > +LIB_DIRS =3D ["lib", "lib/*", "usr/lib", "usr/lib/*"] > + > + > +def find_sysroot(binary): > + for parent in binary.parents: > + if (parent / "usr/lib").is_dir(): > + return parent > + return Path("/") > + > + > +def find_library(name, search_dirs, sysroot): > + for directory in search_dirs: > + for path in sysroot.glob(f"{directory.strip('/')}/{name}"): > + return "/" + str(path.relative_to(sysroot)) > + return None > + > + > +def read_dynamic_section(path): > + return subprocess.check_output(["readelf", "-d", path], text=3DTrue) > + > + > +def get_needed(dynamic): > + runpaths =3D re.findall(r'\((?:RUNPATH|RPATH)\).*?\[(.*?)\]', dynami= c) > + search_dirs =3D [d for paths in runpaths for d in paths.split(":")] > + needed =3D re.findall(r'\(NEEDED\).*?\[(.*?)\]', dynamic) > + return search_dirs + LIB_DIRS, needed > + > + > +binary =3D Path(sys.argv[-1]).absolute() > +try: > + dynamic =3D read_dynamic_section(binary) > +except subprocess.SubprocessError: > + sys.exit(1) > + > +sysroot =3D find_sysroot(binary) > +resolved =3D {} > +pending =3D [get_needed(dynamic)] > + > +# ldd reports the whole dependency tree, so resolve it transitively > +while pending: > + search_dirs, needed =3D pending.pop() > + for library in needed: > + if library in resolved: > + continue > + path =3D find_library(library, search_dirs, sysroot) > + resolved[library] =3D path > + if path: > + try: > + pending.append(get_needed( > + read_dynamic_section(sysroot / path.strip("/")))) > + except subprocess.SubprocessError: > + pass > + > +for library, path in resolved.items(): > + print(f"\t{library} =3D> {path} (0x0000000000000000)" if path > + else f"\t{library} =3D> not found") --=20 You received this message because you are subscribed to the Google Groups "= isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an e= mail to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/= 4322fa2c-05cd-494b-93d3-dfd185c75ccf%40ilbers.de.