mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Michael Olbrich <m.olbrich@pengutronix.de>
To: Christian Melki <christian.melki@t2data.com>
Cc: ptxdist@pengutronix.de
Subject: Re: [ptxdist] Request for comments: CROSS_LIB_DIR handling etc.
Date: Thu, 23 Mar 2023 06:59:46 +0100	[thread overview]
Message-ID: <20230323055946.GK19906@pengutronix.de> (raw)
In-Reply-To: <3bce4a46-0eb6-8bf1-3057-c0d0c2f393fe@t2data.com>

Hi,

On Fri, Nov 05, 2021 at 10:31:24AM +0100, Christian Melki wrote:
> On 11/5/21 9:57 AM, Michael Olbrich wrote:
> > On Thu, Nov 04, 2021 at 11:06:13AM +0100, Christian Melki wrote:
> > > On 10/15/21 3:34 PM, Christian Melki wrote:
> > > > On 10/15/21 3:12 PM, Michael Olbrich wrote:
> > > > > On Wed, Oct 13, 2021 at 09:29:24AM +0200, Christian Melki wrote:
> > > > > > I've been correcting various hardcoded paths in ptxdist packages
> > > > > > and whatnot
> > > > > > lately. This started with ptxdist not coping well with toolchains that
> > > > > > adhere to the ABI path for various architectures.
> > > > > > 
> > > > > > Yesterday, I dug into the problem that on x86_64 (/lib64), all
> > > > > > .pc.in -> .pc
> > > > > > file transformations looked broken with hardcoded paths. At
> > > > > > first I thought
> > > > > > it had something to do with autoconf or pkg-config but after a
> > > > > > while I found
> > > > > > this.
> > > > > > 
> > > > > > scripts/lib/ptxd_make_world_install_mangle_pc.awk
> > > > > > 
> > > > > > Which after a while made me realize that there is still a lot of code in
> > > > > > ptxdist core stuff that assumes that lib-paths are only /lib and nothing
> > > > > > else.
> > > > > > 
> > > > > > So. I'm presenting a two options here.
> > > > > > 
> > > > > > 1. Fix all ptxdist core stuff, because really, ptxdist should be more
> > > > > > flexible than hardcoded paths. Esp. for libs.
> > > > > > 
> > > > > > 2. Split ptxd_get_lib_dir, because, ld.so path should not be
> > > > > > assumed to be
> > > > > > the same as main library install path. So ptxd_get_ld_lib_dir which does
> > > > > > what it does today and install ld there and ptxd_get_lib_dir =
> > > > > > /lib and be
> > > > > > done with all the userspace library transformations.
> > > > > 
> > > > > So, put everything in lib/ and only the ld.so in lib64/, right?
> > > > > 
> > > > 
> > > > Yes. And depending on toolchain configuration.. + glibc, but not the
> > > > rest of the userspace libs as you say. Since the copy_toolchain routines
> > > > query the linker by itself afaiu.
> > 
> > Good point about copy_toolchain. I don't mind if glibc (etc.) is installed
> > in /lib64 as well. Whatever is easier to start with. We can change that
> > later if necessary.
> > 
> 
> Ok. I'll prepare a patch for hardcoding ptxdist to /lib for non toolchain
> related things. I will be naive/stupid/simple, but the discussion about
> configurability etc can start there.
> 
> > > > Either way, the important bit is the hardcoded path to ld.so in the ABI
> > > > declaration. That's the one you have to hit, otherwise you'll have
> > > > bricked userspace. :) The rest can be solved with ld.so.conf.
> > 
> > So /usr/lib is not in the default search path and /etc/ld.so.conf is
> > necessary in this case?
> > 
> 
> Hmm. If we do nothing then I guess that depends on the toolchain. If the
> toolchain is configured with an extended "user-defined-trusted-dirs" option
> you probably don't need an ld.so.conf for the default search paths. But
> otherwise, I'd say yes? Can't remember. I use an ld.so.conf that always
> includes the usual suspects and prepare a cache when I boot (after ld.so has
> been hit).
> 
> To me it looks like glibc expects the default usr search path to be the
> usr/ld.so path (/lib64, /usr/lib64)

So, I've picked this up myself and I've pushed something to master.

CROSS_LIB_DIR is now always /lib and CROSS_LINKER_LIB_DIR has its previous
value. If they differ, then /$(CROSS_LINKER_LIB_DIR) is created as a
symlink to /lib (which is a symlink to /usr/lib). And everything is
installed to /usr/lib including the dynamic linker.

This avoids any issues with the search path.

I've removed all uses of CROSS_LIB_DIR in PTXdist itself, but it's still
there for compatibility for now.

I've tested this with a crosstool-ng x86_64 toolchain, but it would be
great if you could take a look at it with your setup.

Michael


-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



      reply	other threads:[~2023-03-23  6:00 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-13  7:29 Christian Melki
2021-10-15 13:12 ` Michael Olbrich
2021-10-15 13:34   ` Christian Melki
2021-11-04 10:06     ` Christian Melki
2021-11-05  8:57       ` Michael Olbrich
2021-11-05  9:31         ` Christian Melki
2023-03-23  5:59           ` Michael Olbrich [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230323055946.GK19906@pengutronix.de \
    --to=m.olbrich@pengutronix.de \
    --cc=christian.melki@t2data.com \
    --cc=ptxdist@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox