make ldconfig use the built-in system paths

Make ldconfig use the same view of built-in system paths that ld.so does,
instead of just using SLIBDIR and LIBDIR; this corrects a failure of
ldconfig to cache libraries in non-multiarch directories when building for
multiarch, even though they're on the system path.
Bug-Ubuntu: https://bugs.launchpad.net/bugs/736932

Gbp-Pq: Topic any
Gbp-Pq: Name local-ldconfig-multiarch.diff
This commit is contained in:
Steve Langasek 2022-05-13 23:32:11 +08:00 committed by openKylinBot
parent a5f9e8fc98
commit 6c8f802f0b
1 changed files with 21 additions and 3 deletions

View File

@ -63,6 +63,17 @@
#define PATH_MAX 1024
#endif
/* Get the generated information about the trusted/standard directories. */
#include "trusted-dirs.h"
static const char system_dirs[] = SYSTEM_DIRS;
static const size_t system_dirs_len[] =
{
SYSTEM_DIRS_LEN
};
#define nsystem_dirs_len \
(sizeof (system_dirs_len) / sizeof (system_dirs_len[0]))
static const struct
{
const char *name;
@ -1385,12 +1396,19 @@ main (int argc, char **argv)
if (!opt_only_cline)
{
const char *strp = system_dirs;
size_t idx = 0;
parse_conf (config_file, true);
/* Always add the standard search paths. */
add_system_dir (SLIBDIR);
if (strcmp (SLIBDIR, LIBDIR))
add_system_dir (LIBDIR);
do
{
add_system_dir (strp);
strp += system_dirs_len[idx] + 1;
idx++;
}
while (idx < nsystem_dirs_len);
}
const char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE;