On Wed, Jun 28, 2023 at 3:22 AM Kevin Kofler via devel
<devel@lists.fedoraproject.org> wrote:
>
> Kalev Lember wrote:
> > I would like to have a layout similar to what Debian is doing, so that
> > shared libraries would go in /usr/lib/x86_64-redhat-linux/ and /usr/lib64
> > would be a legacy symlink pointing to it.
>
> That layout is NOT compliant with the FHS.
>
> Which is particularly hilarious as Debian has long refused to use
> /usr/libexec (despite GNU having had it for ages, and Debian's refusal has
> in turn lead several upstreams to not or poorly support it and abuse
> /usr/lib or other directories for its purpose instead) because it was
> purportedly against the FHS (it seems they have never noticed that the
> clause that allows lib64 and lib32 does not actually require the suffix to
> be a number, "exec" is a perfectly fine suffix, so libexec is just another
> lib64/lib32-type directory), but was very fast to add an exception for this
> new entirely non-standard layout. (The FHS requires the arch-specific libdir
> variants to be suffixed sibling directories of lib, NOT subdirectories.)

In RISCV lands things look like this:

[..]
#define STARTFILE_PREFIX_SPEC             \
   "/lib" XLEN_SPEC "/" ABI_SPEC "/ "        \
   "/usr/lib" XLEN_SPEC "/" ABI_SPEC "/ "    \
[..]

Linker default search paths:

[..]
SEARCH_DIR("=/usr/riscv64-redhat-linux/lib64/lp64d")
SEARCH_DIR("=/usr/riscv64-redhat-linux/lib64")
SEARCH_DIR("=/usr/riscv64-redhat-linux/lib6464/lp64d")
SEARCH_DIR("=/usr/lib6464/lp64d")
SEARCH_DIR("=/usr/lib64")
SEARCH_DIR("=/usr/local/lib64/lp64d")
SEARCH_DIR("=/usr/local/lib64")
SEARCH_DIR("=/lib64/lp64d")
SEARCH_DIR("=/lib64")
SEARCH_DIR("=/usr/lib64/lp64d")
SEARCH_DIR("=/usr/riscv64-redhat-linux/lib")
SEARCH_DIR("=/usr/local/lib")
SEARCH_DIR("=/lib")
SEARCH_DIR("=/usr/lib")
[..]

By default the expectation is to find libraries under ABI
subdirectory, e.g. /usr/lib64/lp64d

In Fedora/RISCV /usr/lib64/lp64d is a symlink back to /usr/lib64

From glibc:

[..]
This program interpreter self-identifies as: /lib/ld-linux-riscv64-lp64d.so.1

Shared library search path:
  (libraries located via /etc/ld.so.cache)
  /lib64/lp64d (system search path)
  /usr/lib64/lp64d (system search path)
[..]

david

>
> > That kind of layout would make it much easier to do cross compilation
> > because you could just take the whole /usr/lib/another-host-triplet/
> > directory from another architecture without it interfering with the host
> > libraries and use it for cross compilation purposes.
>
> Practical cross-compilation to a completely different architecture needs
> sysroots anyway. That way, one can also easily target a different
> distribution on a different (or even the same) architecture, not just Fedora
> on a different architecture.
>
>         Kevin Kofler
> _______________________________________________
> devel mailing list -- devel@lists.fedoraproject.org
> To unsubscribe send an email to devel-le...@lists.fedoraproject.org
> Fedora Code of Conduct: 
> https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives: 
> https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
> Do not reply to spam, report it: 
> https://pagure.io/fedora-infrastructure/new_issue
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to