From unknown Thu Sep 11 09:18:05 2025 X-Loop: help-debbugs@gnu.org Subject: bug#20437: ls links too many dynamic libraries Resent-From: Paul Eggert Original-Sender: "Debbugs-submit" Resent-CC: bug-coreutils@gnu.org Resent-Date: Mon, 27 Apr 2015 05:31:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 20437 X-GNU-PR-Package: coreutils X-GNU-PR-Keywords: To: 20437@debbugs.gnu.org X-Debbugs-Original-To: bug-coreutils@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.14301126494454 (code B ref -1); Mon, 27 Apr 2015 05:31:02 +0000 Received: (at submit) by debbugs.gnu.org; 27 Apr 2015 05:30:49 +0000 Received: from localhost ([127.0.0.1]:40788 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Ymbd2-00019l-3K for submit@debbugs.gnu.org; Mon, 27 Apr 2015 01:30:49 -0400 Received: from eggs.gnu.org ([208.118.235.92]:55610) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Ymbcv-00018P-KX for submit@debbugs.gnu.org; Mon, 27 Apr 2015 01:30:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ymbco-0004HA-UN for submit@debbugs.gnu.org; Mon, 27 Apr 2015 01:30:36 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:36376) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ymbco-0004Gy-RK for submit@debbugs.gnu.org; Mon, 27 Apr 2015 01:30:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40875) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ymbcm-0007VB-UC for bug-coreutils@gnu.org; Mon, 27 Apr 2015 01:30:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ymbci-0004DI-MG for bug-coreutils@gnu.org; Mon, 27 Apr 2015 01:30:32 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:53165) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ymbci-00043s-AN for bug-coreutils@gnu.org; Mon, 27 Apr 2015 01:30:28 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id DE254A60004 for ; Sun, 26 Apr 2015 22:30:19 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id c6DbOa7opK7O for ; Sun, 26 Apr 2015 22:30:17 -0700 (PDT) Received: from [192.168.1.9] (pool-100-32-155-148.lsanca.fios.verizon.net [100.32.155.148]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id E346139E8016 for ; Sun, 26 Apr 2015 22:30:16 -0700 (PDT) Message-ID: <553DC968.80809@cs.ucla.edu> Date: Sun, 26 Apr 2015 22:30:16 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------090303010607060104090207" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) This is a multi-part message in MIME format. --------------090303010607060104090207 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Currently GNU 'ls' dynamically links a whole bunch of libraries, libraries like libpcre and liblzma. Can we figure out some way to remove the runtime dependencies on these libraries? It's better if a core utility like 'ls' avoids libthis and libthat unless the libraries are vital to its function, which these shouldn't be. I installed the attached patches to get rid of one unnecessary library, libacl, on GNU/Linux. Can we do better and get rid of more dependencies? Perhaps using techniques similar to what was used to get rid of libacl? --------------090303010607060104090207 Content-Type: text/x-patch; name="0001-build-update-gnulib-submodule-to-latest.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-build-update-gnulib-submodule-to-latest.patch" >From 5874d5a7070e0f19ffa8bc48e15e094bbe91d75c Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 26 Apr 2015 15:46:18 -0700 Subject: [PATCH 1/2] build: update gnulib submodule to latest * bootstrap.conf (gnulib_modules): Add file-has-acl. (buildreq): Bump autopoint and gettext to 0.19.4. * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.19.4. * gl/lib/tempname.c.diff, gl/lib/tempname.h.diff: Merge recent gnulib changes. --- bootstrap.conf | 5 +++-- configure.ac | 2 +- gl/lib/tempname.c.diff | 22 +++++++++++----------- gl/lib/tempname.h.diff | 18 ++++++++++-------- gnulib | 2 +- 5 files changed, 26 insertions(+), 23 deletions(-) diff --git a/bootstrap.conf b/bootstrap.conf index 4283140..75df5de 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -81,6 +81,7 @@ gnulib_modules=" fdl fdopen fdutimensat + file-has-acl file-type fileblocks filemode @@ -318,9 +319,9 @@ gnulib_tool_option_extras="--tests-base=gnulib-tests --with-tests --symlink\ buildreq="\ autoconf 2.64 automake 1.11.2 -autopoint - +autopoint 0.19.4 bison - -gettext 0.18.1 +gettext 0.19.4 git 1.4.4 gperf - gzip - diff --git a/configure.ac b/configure.ac index 3918f43..7959bf4 100644 --- a/configure.ac +++ b/configure.ac @@ -590,7 +590,7 @@ AM_CONDITIONAL([CROSS_COMPILING], [test "$cross_compiling" = yes]) # As long as "grep 'PRI[diouxX]' po/*.pot" reports matches in # translatable strings, we must use need-formatstring-macros here. AM_GNU_GETTEXT([external], [need-formatstring-macros]) -AM_GNU_GETTEXT_VERSION([0.18.1]) +AM_GNU_GETTEXT_VERSION([0.19.4]) # For a test of uniq: it uses the $LOCALE_FR envvar. gt_LOCALE_FR diff --git a/gl/lib/tempname.c.diff b/gl/lib/tempname.c.diff index 459a1e5..43858e9 100644 --- a/gl/lib/tempname.c.diff +++ b/gl/lib/tempname.c.diff @@ -1,5 +1,5 @@ diff --git a/lib/tempname.c b/lib/tempname.c -index 49c7df1..84a45d4 100644 +index 69c572f..1920274 100644 --- a/lib/tempname.c +++ b/lib/tempname.c @@ -20,6 +20,7 @@ @@ -34,9 +34,9 @@ index 49c7df1..84a45d4 100644 int -__try_tempname (char *tmpl, int suffixlen, void *args, -- int (*try) (char *, void *)) +- int (*tryfunc) (char *, void *)) +try_tempname_len (char *tmpl, int suffixlen, void *args, -+ int (*try) (char *, void *), size_t x_suffix_len) ++ int (*tryfunc) (char *, void *), size_t x_suffix_len) { - int len; + size_t len; @@ -113,7 +113,7 @@ index 49c7df1..84a45d4 100644 + for (i = 0; i < x_suffix_len; i++) + XXXXXX[i] = letters[randint_genmax (rand_src, sizeof letters - 2)]; - fd = try (tmpl, args); + fd = tryfunc (tmpl, args); if (fd >= 0) { __set_errno (save_errno); @@ -144,7 +144,7 @@ index 49c7df1..84a45d4 100644 } static int -@@ -285,9 +291,10 @@ try_nocreate (char *tmpl, void *flags) +@@ -285,9 +291,10 @@ try_nocreate (char *tmpl, void *flags _GL_UNUSED) } /* Generate a temporary file name based on TMPL. TMPL must match the @@ -157,7 +157,7 @@ index 49c7df1..84a45d4 100644 KIND may be one of: __GT_NOCREATE: simply verify that the name does not exist -@@ -298,7 +305,8 @@ try_nocreate (char *tmpl, void *flags) +@@ -298,7 +305,8 @@ try_nocreate (char *tmpl, void *flags _GL_UNUSED) We use a clever algorithm to get hard-to-predict names. */ int @@ -165,14 +165,14 @@ index 49c7df1..84a45d4 100644 +gen_tempname_len (char *tmpl, int suffixlen, int flags, int kind, + size_t x_suffix_len) { - int (*try) (char *, void *); + int (*tryfunc) (char *, void *); @@ -320,5 +328,18 @@ __gen_tempname (char *tmpl, int suffixlen, int flags, int kind) assert (! "invalid KIND in __gen_tempname"); abort (); } -- return __try_tempname (tmpl, suffixlen, &flags, try); -+ return try_tempname_len (tmpl, suffixlen, &flags, try, x_suffix_len); +- return __try_tempname (tmpl, suffixlen, &flags, tryfunc); ++ return try_tempname_len (tmpl, suffixlen, &flags, tryfunc, x_suffix_len); +} + +int @@ -183,7 +183,7 @@ index 49c7df1..84a45d4 100644 + +int +__try_tempname (char *tmpl, int suffixlen, void *args, -+ int (*try) (char *, void *)) ++ int (*tryfunc) (char *, void *)) +{ -+ return try_tempname_len (tmpl, suffixlen, args, try, 6); ++ return try_tempname_len (tmpl, suffixlen, args, tryfunc, 6); } diff --git a/gl/lib/tempname.h.diff b/gl/lib/tempname.h.diff index 843692e..210e70b 100644 --- a/gl/lib/tempname.h.diff +++ b/gl/lib/tempname.h.diff @@ -1,21 +1,23 @@ diff --git a/lib/tempname.h b/lib/tempname.h -index f7c98d0..793207f 100644 +index e609360..6029b9f 100644 --- a/lib/tempname.h +++ b/lib/tempname.h -@@ -46,6 +46,8 @@ +@@ -50,6 +50,8 @@ extern "C" { We use a clever algorithm to get hard-to-predict names. */ extern int gen_tempname (char *tmpl, int suffixlen, int flags, int kind); +extern int gen_tempname_len (char *tmpl, int suffixlen, int flags, int kind, + size_t x_suffix_len); - /* Similar to gen_tempname, but TRY is called for each temporary - name to try. If TRY returns a non-negative number, TRY_GEN_TEMPNAME -@@ -53,5 +55,7 @@ extern int gen_tempname (char *tmpl, int suffixlen, int flags, int kind); + /* Similar to gen_tempname, but TRYFUNC is called for each temporary + name to try. If TRYFUNC returns a non-negative number, TRY_GEN_TEMPNAME +@@ -57,6 +59,9 @@ extern int gen_tempname (char *tmpl, int suffixlen, int flags, int kind); name is tried, or else TRY_GEN_TEMPNAME returns -1. */ extern int try_tempname (char *tmpl, int suffixlen, void *args, - int (*try) (char *, void *)); + int (*tryfunc) (char *, void *)); +extern int try_tempname_len (char *tmpl, int suffixlen, void *args, -+ int (*try) (char *, void *), size_t x_suffix_len); ++ int (*tryfunc) (char *, void *), ++ size_t x_suffix_len); - #endif /* GL_TEMPNAME_H */ + #ifdef __cplusplus + } diff --git a/gnulib b/gnulib index 6e0e31c..ff714c0 160000 --- a/gnulib +++ b/gnulib @@ -1 +1 @@ -Subproject commit 6e0e31c383c86e297bfbb8dae89515b0587a1b15 +Subproject commit ff714c0a2094bdefd9ed41603493e66aaf285f12 -- 2.1.0 --------------090303010607060104090207 Content-Type: text/x-patch; name="0002-ls-on-GNU-Linux-remove-dependency-on-libacl.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0002-ls-on-GNU-Linux-remove-dependency-on-libacl.patch" >From 5279e31bbdb1e570d7b86a947c6c76d7f8f68b11 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 26 Apr 2015 22:09:30 -0700 Subject: [PATCH 2/2] ls: on GNU/Linux, remove dependency on libacl * src/local.mk (src_ls_LDADD): Change from LIB_ACL to LIB_HAS_ACL. --- src/local.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/local.mk b/src/local.mk index 19152f0..5a3b1b3 100644 --- a/src/local.mk +++ b/src/local.mk @@ -278,7 +278,7 @@ src_uptime_LDADD += $(GETLOADAVG_LIBS) # for various ACL functions copy_ldadd += $(LIB_ACL) -src_ls_LDADD += $(LIB_ACL) +src_ls_LDADD += $(LIB_HAS_ACL) # for various xattr functions copy_ldadd += $(LIB_XATTR) -- 2.1.0 --------------090303010607060104090207-- From unknown Thu Sep 11 09:18:05 2025 X-Loop: help-debbugs@gnu.org Subject: bug#20437: ls links too many dynamic libraries Resent-From: Bernhard Voelker Original-Sender: "Debbugs-submit" Resent-CC: bug-coreutils@gnu.org Resent-Date: Mon, 27 Apr 2015 06:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20437 X-GNU-PR-Package: coreutils X-GNU-PR-Keywords: To: Paul Eggert , 20437@debbugs.gnu.org Received: via spool by 20437-submit@debbugs.gnu.org id=B20437.143011682710662 (code B ref 20437); Mon, 27 Apr 2015 06:41:02 +0000 Received: (at 20437) by debbugs.gnu.org; 27 Apr 2015 06:40:27 +0000 Received: from localhost ([127.0.0.1]:40795 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YmciP-0002lt-Mk for submit@debbugs.gnu.org; Mon, 27 Apr 2015 02:40:26 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:49808) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YmciM-0002lf-Pn for 20437@debbugs.gnu.org; Mon, 27 Apr 2015 02:40:23 -0400 Received: from [192.168.101.10] ([217.87.213.182]) by mrelayeu.kundenserver.de (mreue004) with ESMTPSA (Nemesis) id 0MNPzx-1YfipK0k5h-006wAx; Mon, 27 Apr 2015 08:40:15 +0200 Message-ID: <553DD9CD.3060304@bernhard-voelker.de> Date: Mon, 27 Apr 2015 08:40:13 +0200 From: Bernhard Voelker User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 References: <553DC968.80809@cs.ucla.edu> In-Reply-To: <553DC968.80809@cs.ucla.edu> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:3pws4vDURS0U1wetxd1pDrF9xEE6gZV2pz1vvOLadFVPcB0n49N kvyqP9CevG7JfUlqCMS5Z3G7REfwmssJvY0wp3wNAHCZLxgWINQRpk9n6XB3h4A8wSvYePJ pdkN0fLDjOuoN911IiBgny9xcQ5J8C0ecTLhf7yQLF1Ld++w1ppqvHNOowbuNXjr2+313tZ XBHO4T4+9XfmDsFhLZBcQ== X-UI-Out-Filterresults: notjunk:1; X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) On 04/27/2015 07:30 AM, Paul Eggert wrote: > --- a/bootstrap.conf > +++ b/bootstrap.conf ... > @@ -318,9 +319,9 @@ gnulib_tool_option_extras="--tests-base=gnulib-tests --with-tests --symlink\ > buildreq="\ > autoconf 2.64 > automake 1.11.2 > -autopoint - > +autopoint 0.19.4 > bison - > -gettext 0.18.1 > +gettext 0.19.4 > git 1.4.4 > gperf - > gzip - This gnulib update seems to bump the prerequisites for building coreutils quite high - at least on a current openSUSE-13.2 system building now fails: ./bootstrap ./bootstrap: Error: 'autopoint' version == 0.19.2 is too old ./bootstrap: 'autopoint' version >= 0.19.4 is required ./bootstrap: Error: 'gettext' version == 0.19.2 is too old ./bootstrap: 'gettext' version >= 0.19.4 is required I know that we tend to use the newest gear, but IIRC from last time we agreed on supporting at least the latest stable version of the bigger distros to ease providing patches for regular (advanced) users. What especially does gnulib need from 0.19.4? Could we work around it? Thanks & have a nice day, Berny From unknown Thu Sep 11 09:18:05 2025 X-Loop: help-debbugs@gnu.org Subject: bug#20437: ls links too many dynamic libraries Resent-From: Paul Eggert Original-Sender: "Debbugs-submit" Resent-CC: bug-coreutils@gnu.org Resent-Date: Mon, 27 Apr 2015 07:28:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20437 X-GNU-PR-Package: coreutils X-GNU-PR-Keywords: To: Bernhard Voelker , 20437@debbugs.gnu.org Received: via spool by 20437-submit@debbugs.gnu.org id=B20437.143011965214860 (code B ref 20437); Mon, 27 Apr 2015 07:28:02 +0000 Received: (at 20437) by debbugs.gnu.org; 27 Apr 2015 07:27:32 +0000 Received: from localhost ([127.0.0.1]:40800 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YmdRz-0003rb-PJ for submit@debbugs.gnu.org; Mon, 27 Apr 2015 03:27:32 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:37874) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YmdRx-0003rN-DF for 20437@debbugs.gnu.org; Mon, 27 Apr 2015 03:27:30 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 10854A60006; Mon, 27 Apr 2015 00:27:22 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wzAcYeR5uf2h; Mon, 27 Apr 2015 00:27:21 -0700 (PDT) Received: from [192.168.1.9] (pool-100-32-155-148.lsanca.fios.verizon.net [100.32.155.148]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id AB298A60004; Mon, 27 Apr 2015 00:27:21 -0700 (PDT) Message-ID: <553DE4D9.8070603@cs.ucla.edu> Date: Mon, 27 Apr 2015 00:27:21 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 References: <553DC968.80809@cs.ucla.edu> <553DD9CD.3060304@bernhard-voelker.de> In-Reply-To: <553DD9CD.3060304@bernhard-voelker.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Bernhard Voelker wrote: > Could we work around > it? Sure, how about if we shrink it down to 0.19? Would that work for you? I picked 0.19.4 only because the old value was too low for gnulib and I was at 0.19.4. I think it needs to be at least 0.19, because of the recent gnulib changes. From unknown Thu Sep 11 09:18:05 2025 X-Loop: help-debbugs@gnu.org Subject: bug#20437: ls links too many dynamic libraries Resent-From: Bernhard Voelker Original-Sender: "Debbugs-submit" Resent-CC: bug-coreutils@gnu.org Resent-Date: Mon, 27 Apr 2015 09:56:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20437 X-GNU-PR-Package: coreutils X-GNU-PR-Keywords: To: Paul Eggert , 20437@debbugs.gnu.org Received: via spool by 20437-submit@debbugs.gnu.org id=B20437.143012853728081 (code B ref 20437); Mon, 27 Apr 2015 09:56:02 +0000 Received: (at 20437) by debbugs.gnu.org; 27 Apr 2015 09:55:37 +0000 Received: from localhost ([127.0.0.1]:40849 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YmflI-0007Ir-Vz for submit@debbugs.gnu.org; Mon, 27 Apr 2015 05:55:37 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:53045) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YmflH-0007If-CS for 20437@debbugs.gnu.org; Mon, 27 Apr 2015 05:55:36 -0400 Received: from [10.0.4.15] ([62.153.148.194]) by mrelayeu.kundenserver.de (mreue103) with ESMTPSA (Nemesis) id 0MKcX1-1YlI2y2tLb-0020qJ; Mon, 27 Apr 2015 11:55:27 +0200 Message-ID: <553E078A.1090008@bernhard-voelker.de> Date: Mon, 27 Apr 2015 11:55:22 +0200 From: Bernhard Voelker User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 References: <553DC968.80809@cs.ucla.edu> <553DD9CD.3060304@bernhard-voelker.de> <553DE4D9.8070603@cs.ucla.edu> In-Reply-To: <553DE4D9.8070603@cs.ucla.edu> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:S/fKtLJQHgiVpc5AZ0Bw4kcoE7nJAj3d+7hPRKXKb2Z3KMvVno0 8v1FdW1kga7FHB/GDRs3odfDB1Ydb60BolXv0p1iv/Eu3pZe3BKH5A8ST1OjL04rUbKqlve InrnBkNe/dp46z5ssrGt8CxAceHAocjXVQG7H0kLpZZZ+11j8gydbSyZhzerw8utBkVKScJ MJ+UzR8/fWyEinLy6UtQg== X-UI-Out-Filterresults: notjunk:1; X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) On 04/27/2015 09:27 AM, Paul Eggert wrote: > Bernhard Voelker wrote: >> Could we work around >> it? > > Sure, how about if we shrink it down to 0.19? Would that work for you? yes, "0.19" is okay for me - openSUSE-13.2 has 0.19.2. Thanks & have a nice day, Berny From unknown Thu Sep 11 09:18:05 2025 X-Loop: help-debbugs@gnu.org Subject: bug#20437: ls links too many dynamic libraries Resent-From: =?UTF-8?Q?P=C3=A1draig?= Brady Original-Sender: "Debbugs-submit" Resent-CC: bug-coreutils@gnu.org Resent-Date: Mon, 27 Apr 2015 13:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20437 X-GNU-PR-Package: coreutils X-GNU-PR-Keywords: To: Paul Eggert , 20437@debbugs.gnu.org Received: via spool by 20437-submit@debbugs.gnu.org id=B20437.143014035920586 (code B ref 20437); Mon, 27 Apr 2015 13:13:01 +0000 Received: (at 20437) by debbugs.gnu.org; 27 Apr 2015 13:12:39 +0000 Received: from localhost ([127.0.0.1]:40946 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Ymipy-0005Lw-Ry for submit@debbugs.gnu.org; Mon, 27 Apr 2015 09:12:39 -0400 Received: from mail4.vodafone.ie ([213.233.128.170]:52988) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Ymipu-0005LR-D4; Mon, 27 Apr 2015 09:12:36 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtUPAH80PlVtT0tl/2dsb2JhbABcDoJ+HzRcgxrDEYFlCoYBAQICgTBMAQEBAQEBgQtBAQSDWwEBBAECAgEdZgsNCwUBAQIWCwICAgcDAgECAQUBEC8GAQwIAQGIKwEIslaFaI15AQEBAQYBAQEBAR2LOIRqIoJogUUFk0eBNwFXhAiED4VwjhIjggccgRQ+PTEBgkMBAQE Received: from unknown (HELO localhost.localdomain) ([109.79.75.101]) by mail3.vodafone.ie with ESMTP; 27 Apr 2015 14:12:24 +0100 Message-ID: <553E35B7.3020105@draigBrady.com> Date: Mon, 27 Apr 2015 14:12:23 +0100 From: =?UTF-8?Q?P=C3=A1draig?= Brady User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 References: <553DC968.80809@cs.ucla.edu> In-Reply-To: <553DC968.80809@cs.ucla.edu> Content-Type: multipart/mixed; boundary="------------070501000200090901030506" X-Spam-Score: 0.3 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.3 (/) This is a multi-part message in MIME format. --------------070501000200090901030506 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit tag 20437 notabug close 20437 stop On 27/04/15 06:30, Paul Eggert wrote: > Currently GNU 'ls' dynamically links a whole bunch of libraries, libraries like > libpcre and liblzma. Can we figure out some way to remove the runtime > dependencies on these libraries? It's better if a core utility like 'ls' avoids > libthis and libthat unless the libraries are vital to its function, which these > shouldn't be. > > I installed the attached patches to get rid of one unnecessary library, libacl, > on GNU/Linux. Can we do better and get rid of more dependencies? Perhaps using > techniques similar to what was used to get rid of libacl? As was discussed recently¹ with removing the libmount dependency for df, these dependencies are coming from libselinux, and one of the primary authors of libselinux was made aware of that issue, so I'm closing this here. coreutils linking with libselinux are: chcon cp dir install id ls mkdir mkfifo mknod mv runcon stat vdir BTW I noticed ldd -v doesn't give complete info, and that `readelf -d $(which ls) | grep NEEDED` is better. This is wrapped in the lddot² visualizer, and I've attached the output from `lddot git/coreutils/src/ls | graph-easy --as png` cheers, Pádraig. ¹ http://lists.gnu.org/archive/html/coreutils/2015-04/msg00011.html ² http://jwilk.net/software/lddot --------------070501000200090901030506 Content-Type: image/png; name="ls-shared-libs.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ls-shared-libs.png" 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 VE3XtWtXqlevrnZUUQkUFRWxfPlyPv30U6ysrFi8eLFM1a+ASpvyHxsbi1arBf7/qP/t5/g7 Ozvj6upK1apVVX4lFd/169fZtGkTfn5+7N69m1q1ajFq1CheffVVGjZsqHY88eRIuRdCiPLg yJEjfPXVV/pSP2PGDLy8vNSOJZ6SoqIiTp8+rS/zBw4c4ObNmzg7O+un2ffq1UumYApVpaSk 8P777+Pn50e/fv1YunQpdevWVTuWeApu3rxJQkLCXYv/5cuXyczM1B9b2pT/+vXry64uj1l4 eDi///47v/zyC3Fxcbi7uzN+/HhGjBiBhYXFHccrioKfnx8+Pj7yQUz5I+VeCCHKsqNHjzJr 1iyCgoLo1KkTH374If3791c7lnjCtFotp06d0pf5Q4cOkZeXpy/zHh4eeHl5UatWLbWjCnGH HTt2MHHiRNLS0pg/fz5jx45VO5JQWUZGxl3P8Y+KiuLChQvk5uYCYGpqSu3ate9a/Bs1aiQf YD6C4m31fvzxRzZv3oyZmRkvvPACY8aMoWfPnvpddXJzc7G1taV9+/Zs27ZNTucqX6TcCyFE WXTs2DGmT5/O9u3b8fT0ZMaMGTL9voKLiorSl/ng4GAyMjKwt7enS5cu+pH5+vXrqx1TiAeS l5fHtGnT+O6773juuef48ccf5cMocU+lTfmPiYlBp9MBpY/616tXT7aDe0BXr15lzZo1/Pzz z5w9e5amTZvyyiuvMHr0aBwdHfnggw+YO3cu3bt356+//pLFV8sPKfdCCFGWhIWFMW3aNDZt 2kTHjh2ZOXOmTL+voG7dnm7btm3Ex8djYWFBhw4d9FPt27Ztqx9NEaI8CgkJ4ZVXXiEtLY3v v/+ekSNHqh1JlDOlTfmPjIwkKytLf2xp5b9Bgwby/9O7OH78OL/++itr164lOzsbX19fevTo wcSJEyksLKRPnz5s3rwZExMTtaOK+5NyL4QQZUFMTAwzZsxg9erVNG/enFmzZsmCVBVMWloa u3fvJjg4mD179nD58mWqVKmCp6cnPXr0oGfPnrRt21ZWNBYVTk5ODh9++CFLlixh5MiRLF26 lGrVqqkdS1QQ9xr1T0xMJDo6mry8PKD0Kf8uLi6V/u9kfn4+gYGBrFy5kuDgYP1sCY1GQ//+ /fnjjz8wNjZWOaW4Dyn3QgihpmvXrvHtt9+ycOFC7O3t+fjjjxk3bpwUvArg5s2bHD58mF27 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 W1vrC7yvry/u7u60atVKtoC9i6KiIpYsWcInn3xCw4YNOXLkCO7u7qxevRpFUZg/f74Ue5XJ yL0Qolz67bffmDhxIs2aNeP333+v0Cuy6nQ6Dh8+fEehlxF6IR5dYWGhfqTuVkZGRvLmvoLL zMyke/fu3Lhxg5CQENm2q5zLysoiMjKyRJEPDQ0lKSkJACsrKxo2bKg/H75Zs2blZpu5suDs 2bOMGzeOs2fPMnXqVD7++GP9lrl+fn4EBgbi7+8vu+6oS6blCyHKl+vXrzNhwgTWrVvHG2+8 wbfffouxsbHasR670gr98OHDadKkidoRhXiiFEUhLS2NtLQ0bty4QUZGhn7/5Bs3bpCZmam/ np2dTVZWFjk5OeTm5pKVlXVHac/MzNTvCZybm0tBQcF/znS3wm9qaoq5uTlWVlaYm5tjbm6O hYVFievVqlXD0tJSf7169erUqFEDe3t7bG1t9W+QxdN37do1PD09MTU1Zf/+/VhZWakdSdzH zZs3uXTpUokCf/78eaKjo1EUherVq9O4ceMS0+mbNWtWoQcBnqTCwkLmz5/PZ599hru7OytX rpRTWcouKfdCiPIjNDQUX19f8vPz8fPzq5B7FR8/fpw1a9awbt06kpOTad26NUOHDsXX15dG jRqpHU+Ih5aTk0NCQgJXr17Vl/Zr166VuH7rz9PS0rjbWxRjY2MsLCzuKMvVqlXTX7eyssLA wKDENkzVqlXDyOjfsxHNzMyoUqUKwB3HFSsoKLhj3+b8/Hzy8vLu+FlOTg5ZWVlkZ2eTm5tL Tk7OHR9GFH/4kJ+ff8dzWVtb4+DggK2tLfb29iW+t7e3x87OTv/zyrKmyNMUHR2Nh4cHTZo0 Ydu2bQ+9MJp4vB7HNnPi0Zw6dYqxY8cSHh7OZ599xnvvvXff1f+FqqTcCyHKh5UrVzJ58mQ8 PT1Zs2YNdnZ2akd6bC5fvszatWtZs2YN4eHhuLi4MHLkSIYPHy6r3IsyLz8/n6SkJK5cuUJi YqL+++KvycnJJCQkkJ2dXeJ+FhYW2NjYYGtrS82aNbGxsaFmzZr6y623WVhYYG1tjbm5ebkf 5dZqtVy/fp20tDRSU1NJTU0lOTm5xPcpKSlcvXqV5ORksrKyStzfxsYGJycn6tWrR7169WjQ oAH16tWjfv36NG7cGAsLC5VeWfl27tw5unTpQpcuXfjzzz+lwDxF99tmztjYmLp165aYTu/m 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 RK5CYII= --------------070501000200090901030506-- From unknown Thu Sep 11 09:18:05 2025 X-Loop: help-debbugs@gnu.org Subject: bug#20437: ls links too many dynamic libraries Resent-From: =?UTF-8?Q?P=C3=A1draig?= Brady Original-Sender: "Debbugs-submit" Resent-CC: bug-coreutils@gnu.org Resent-Date: Mon, 27 Apr 2015 14:03:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20437 X-GNU-PR-Package: coreutils X-GNU-PR-Keywords: notabug To: Paul Eggert , 20437@debbugs.gnu.org Cc: SE-Linux Received: via spool by 20437-submit@debbugs.gnu.org id=B20437.143014336631968 (code B ref 20437); Mon, 27 Apr 2015 14:03:02 +0000 Received: (at 20437) by debbugs.gnu.org; 27 Apr 2015 14:02:46 +0000 Received: from localhost ([127.0.0.1]:41343 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YmjcU-0008JY-4y for submit@debbugs.gnu.org; Mon, 27 Apr 2015 10:02:46 -0400 Received: from mail4.vodafone.ie ([213.233.128.170]:11302) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YmjcQ-0008JE-Sq for 20437@debbugs.gnu.org; Mon, 27 Apr 2015 10:02:43 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtEPAGRAPlVtT0tl/2dsb2JhbABcDoJ+HzRcgxrEdgqGAQECAoExTAEBAQEBAYELQQEEg1sBAQQBAiAPAUYQCw0LAgIFFgsCAgkDAgECARYvBgEMAQcBAYgrAQiyeYVojX0BAQEBAQUBAQEBAR2BIYoXhQUHgmiBRQWVVoQIg1I9hXALjgcjggccgRQ+PTEBgkMBAQE Received: from unknown (HELO localhost.localdomain) ([109.79.75.101]) by mail3.vodafone.ie with ESMTP; 27 Apr 2015 15:02:35 +0100 Message-ID: <553E417B.3040406@draigBrady.com> Date: Mon, 27 Apr 2015 15:02:35 +0100 From: =?UTF-8?Q?P=C3=A1draig?= Brady User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 References: <553DC968.80809@cs.ucla.edu> <553E35B7.3020105@draigBrady.com> In-Reply-To: <553E35B7.3020105@draigBrady.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) On 27/04/15 14:12, Pádraig Brady wrote: > tag 20437 notabug > close 20437 > stop > > On 27/04/15 06:30, Paul Eggert wrote: >> Currently GNU 'ls' dynamically links a whole bunch of libraries, libraries like >> libpcre and liblzma. Can we figure out some way to remove the runtime >> dependencies on these libraries? It's better if a core utility like 'ls' avoids >> libthis and libthat unless the libraries are vital to its function, which these >> shouldn't be. >> >> I installed the attached patches to get rid of one unnecessary library, libacl, >> on GNU/Linux. Can we do better and get rid of more dependencies? Perhaps using >> techniques similar to what was used to get rid of libacl? > > As was discussed recently¹ with removing the libmount dependency for df, > these dependencies are coming from libselinux, and one of the primary > authors of libselinux was made aware of that issue, so I'm closing > this here. > > coreutils linking with libselinux are: > > chcon cp dir install id ls mkdir mkfifo mknod mv runcon stat vdir > > BTW I noticed ldd -v doesn't give complete info, > and that `readelf -d $(which ls) | grep NEEDED` is better. > This is wrapped in the lddot² visualizer, and I've attached > the output from `lddot git/coreutils/src/ls | graph-easy --as png` > > cheers, > Pádraig. > > ¹ http://lists.gnu.org/archive/html/coreutils/2015-04/msg00011.html > ² http://jwilk.net/software/lddot BTW I had a look at whether we could duplicate some getfilecon() logic internally, but it doesn't seem practical due to mcstransd which is a daemon that's used to translate the MCS / MLS internal policy levels into user friendly labels. I.E. we could duplicate the logic, and remove the lzma and pcre dependencies, but it seems like too much to be duplicating. Further reductions in deps might be possible by splitting up libselinux, allowing apps like ls that just read contexts, to link with the appropriate lib. cheers, Pádraig. From unknown Thu Sep 11 09:18:05 2025 X-Loop: help-debbugs@gnu.org Subject: bug#20437: ls links too many dynamic libraries Resent-From: Paul Eggert Original-Sender: "Debbugs-submit" Resent-CC: bug-coreutils@gnu.org Resent-Date: Mon, 27 Apr 2015 15:22:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20437 X-GNU-PR-Package: coreutils X-GNU-PR-Keywords: notabug To: =?UTF-8?Q?P=C3=A1draig?= Brady , 20437@debbugs.gnu.org Cc: SE-Linux Received: via spool by 20437-submit@debbugs.gnu.org id=B20437.14301480818223 (code B ref 20437); Mon, 27 Apr 2015 15:22:02 +0000 Received: (at 20437) by debbugs.gnu.org; 27 Apr 2015 15:21:21 +0000 Received: from localhost ([127.0.0.1]:41365 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YmkqW-00028Y-Rx for submit@debbugs.gnu.org; Mon, 27 Apr 2015 11:21:21 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:54016) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YmkqU-00028H-4i for 20437@debbugs.gnu.org; Mon, 27 Apr 2015 11:21:18 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id E522CA60006; Mon, 27 Apr 2015 08:21:11 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fDpgF-1kAReY; Mon, 27 Apr 2015 08:21:10 -0700 (PDT) Received: from [192.168.1.9] (pool-100-32-155-148.lsanca.fios.verizon.net [100.32.155.148]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 5C29BA60004; Mon, 27 Apr 2015 08:21:10 -0700 (PDT) Message-ID: <553E53E2.2060206@cs.ucla.edu> Date: Mon, 27 Apr 2015 08:21:06 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 References: <553DC968.80809@cs.ucla.edu> <553E35B7.3020105@draigBrady.com> <553E417B.3040406@draigBrady.com> In-Reply-To: <553E417B.3040406@draigBrady.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Pádraig Brady wrote: > Further reductions in deps > might be possible by splitting up libselinux, allowing apps like ls > that just read contexts, to link with the appropriate lib. I tried to see how to send a copy of this bug to the libselinux developers, but the libselinux source distribution doesn't mention any way to file bug reports (!). (So now I guess I have *two* bug reports to send them. :-) Who maintains libselinux and how does one file and track a bug report about libselinux?