Subject: bug#63161: Issue with mkinstalldirs and symb links

From: Panaiotis Arnaud <[email-masked]>
Date: Tue, 2 May 2023 06:34:17 +0000

Hello,

    The glibc installing process is calling
    ./scripts/mkinstalldirs [..]/lib64
    which failed to mkdir -p it.

With literal brackets? I don't understand.

> No, I did not copy the full path, which is like : buildroot_dir/output/host/x86_64-buildroot-linux-gnu/sysroot/usr/lib64 

In any case, "resolving" a broken link is a fundamental change in behavior.  I'm doubtful that is desirable at this late date. I'm not sure it's mkinstalldir's job to figure out that you made a broken symlink and create the directory it points to. If I'm understanding your scenario correctly.

> I don't know why/how glibc created this broken link. Glibc version is glibc-2.34-9-g9acab0bba6a5a57323b1f94bf95b21618a9e5aa4 if this information is helpfull.

Regards,
Arnaud

-----Message d'origine-----
De : Karl Berry <[email-masked]> 
Envoyé : samedi 29 avril 2023 22:48
À : Panaiotis Arnaud <[email-masked]>
Cc : [email-masked]
Objet : Re: bug#63161: Issue with mkinstalldirs and symb links

CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.

Thanks for the report.

    The glibc installing process is calling
    ./scripts/mkinstalldirs [..]/lib64
    which failed to mkdir -p it.

With literal brackets? I don't understand.

+      if test -L "$@"; then
+        echo "mkdir -p -- \"\$(realpath $*)\""

Neither test -L nor (especially) realpath are portable.
(test -h can be used for the former; have to resort to ls -l|sed for the latter, I think.)

In any case, "resolving" a broken link is a fundamental change in behavior.  I'm doubtful that is desirable at this late date. I'm not sure it's mkinstalldir's job to figure out that you made a broken symlink and create the directory it points to. If I'm understanding your scenario correctly.

What do others think? --thanks, karl.