From: Michael Olbrich <m.olbrich@pengutronix.de>
To: ptxdist@pengutronix.de
Subject: Re: [ptxdist] pkg-config-wrapper libdir confusion, ABI dynamic-linker path.
Date: Sun, 25 Apr 2021 09:18:03 +0200 [thread overview]
Message-ID: <20210425071803.GD27464@pengutronix.de> (raw)
In-Reply-To: <9ac8d312-177c-36f4-3154-0138d56e56f9@t2data.com>
On Sat, Apr 24, 2021 at 07:02:05PM +0200, Christian Melki wrote:
> On 4/23/21 9:39 AM, Michael Olbrich wrote:
> > On Thu, Apr 22, 2021 at 09:59:06PM +0200, Christian Melki wrote:
> >> I'm using a crosstool-ng toolchain which adheres to the ld.so ABI path
> >> for x86_64 (glibc).
> >>
> >> Afaiu, ptxdist does not like multilib.
> >> But it will happily get the dynamic-linker path which contain a multilib
> >> description or just a regular lib64 path.
> >>
> >> https://git.pengutronix.de/cgit/ptxdist/tree/scripts/lib/ptxd_make_00-init.sh#n169
> >>
> >> This might be a symbolic link to the real dynamic linker, because a
> >> demultilibbed toolchain must still adhere to the ABI specifications.
> >> For x86_64: 64-bit, hard-float, LE: /lib64/ld-linux-x86-64.so.2
> >>
> >> So ptxdist will use lib64 as it's base for libdirs placing various
> >> libraries in a lib64 path.
> >
> > Right, that was contributed a long time ago. But since I don't have a
> > test-case for this, the support for this has not been maintained.
> >
> >
> >> But when using the pkg-config-wrapper it looks like all libraries are
> >> only statically set from a something /lib path.
> >>
> >> https://git.pengutronix.de/cgit/ptxdist/tree/scripts/pkg-config-wrapper#n19
> >
> > Right, and here it get's ugly. I don't want to rely on some external
> > environment variable here. Maybe just search for the paths:
> >
> > libdir=( $(find ${prefix} -maxdepth 3 -type d -name pkgconfig )
> >
> > Would care to provide a patch for this?
>
> Tried a bit with a lib64 toolchain (non-demultilibbed). Got stuck in
> whitelisting looking broken. So I found something else and got through
> that bit.
> But now I'm stuck in building OpenSSH after OpenSSL. OpenSSL gets placed
> in /usr/lib not /usr/lib64.. Which I thought would be fine anyway, but
> OpenSSH can't find libcrypto.
Take a look at rules/openssl.make. In OPENSSL_CONF_OPT there is:
'--libdir=/usr/lib --openssldir=/usr/lib/ssl'
This should probably be:
'--libdir=/usr/$(CROSS_LIB_DIR) --openssldir=/usr/$(CROSS_LIB_DIR)/ssl'
I think.
> $ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
> --libdir=/usr/lib64 --build=x86_64-host-linux-gnu
> --host=x86_64-tracker-linux-gnu --libexecdir=/usr/sbin
> --sysconfdir=/etc/ssh --enable-largefile --disable-pkcs11
> --disable-security-key --disable-strip --disable-etc-default-login
> --disable-lastlog --disable-utmp --disable-utmpx --disable-wtmp
> --disable-wtmpx --enable-libutil --disable-pututline
> --disable-pututxline --with-openssl --with-stackprotect --with-hardening
> --without-rpath --without-Werror
> --with-zlib=/home/xxx/work/tracker/bin/platform-tracker/sysroot-target
> --without-ldns --without-libedit --without-audit --with-pie
> --without-ssl-engine --without-pam --with-privsep-user=sshd
> --with-sandbox=seccomp_filter --without-selinux
> --with-privsep-path=/var/run/sshd --without-md5-passwords
>
> configure:12964: x86_64-tracker-linux-gnu-gcc -o conftest -g -O2 -pipe
> -Wno-error=format-truncation -Wall -Wpointer-arith -Wuninitialized
> -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess
> -Wno-pointer-sign -Wno-unused-result -Wimplicit-fallthrough
> -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset
> -fstack-protector-strong -fPIE
> -I/home/xxx/work/tracker/bin/platform-tracker/sysroot-target/include
> -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -D_DEFAULT_SOURCE
> -L/home/xxx/work/tracker/bin/platform-tracker/sysroot-target/lib
> -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -fstack-protector-strong -pie
> conftest.c -lcrypto -ldl -lutil -lz >&5
> /home/xxx/work/tracker/x-tools/x86_64-tracker-linux-gnu/bin/../lib/gcc/x86_64-tracker-linux-gnu/10.3.0/../../../../x86_64-tracker-linux-gnu/bin/ld:
> cannot find -lcrypto
>
> -I and -L looks strange to me, but I can't figure out why.
> I quite a few places looking like hardcoded stuff. But, yeah. My
> knowledge of ptxdist innards is pretty limited.
That looks strange indeed. I'm not sure where this is coming from.
> This is what I got so far.
>
> diff --git a/scripts/lib/ptxd_make_world_install.sh
> b/scripts/lib/ptxd_make_world_install.sh
> index e878a3231..22804f6e8 100644
> --- a/scripts/lib/ptxd_make_world_install.sh
> +++ b/scripts/lib/ptxd_make_world_install.sh
> @@ -238,7 +238,7 @@ ptxd_make_world_install_post() {
> ptxd_make_world_init &&
> (
> if [ -n "${pkg_pkg_dir}" -a -d "${pkg_pkg_dir}" ]; then
> - find "${pkg_pkg_dir}"{,/usr}/{lib,share}/pkgconfig -name *.pc \
> + find "${pkg_pkg_dir}"{,/usr}/{lib,lib64,share}/pkgconfig -name *.pc \
+ find "${pkg_pkg_dir}"{,/usr}/{$(ptxd_get_lib_dir),share}/pkgconfig -name *.pc \
Should work here.
> -printf "%f\n" 2>/dev/null | sed 's/\.pc$//'
> elif [ "${pkg_type}" != "target" -a -n "${pkg_build_dir}" -a -d
> "${pkg_build_dir}" ]; then
> # workaround for packages that install directly to sysroot
> diff --git a/scripts/pkg-config-wrapper b/scripts/pkg-config-wrapper
> index 53be1a987..f21676465 100755
> --- a/scripts/pkg-config-wrapper
> +++ b/scripts/pkg-config-wrapper
> @@ -17,7 +17,7 @@ else
> fi
>
> declare -a libdir system_path system_incpath
> -libdir=( "${prefix/%//lib/pkgconfig}" "${prefix/%//share/pkgconfig}" )
> +libdir=( "$(find ${prefix} -maxdepth 3 -type d -name pkgconfig)" )
We just need the find here instead because ptxd_get_lib_dir is not
available here.
> system_libpath=( "${libdir[@]/%//../../lib}" "${libdir[@]/%//../lib}"
Hmmm, we should fix that too, but that's mostly cosmetic: pkg-config skips
these paths when adding '-L' options. And some extra shouldn't hurt.
Michael
> "/usr/lib" "/lib" )
> system_incpath=( "${libdir[@]/%//../../include}"
> "${libdir[@]/%//../include}" "/usr/include" "/include" )
--
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 |
_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
next prev parent reply other threads:[~2021-04-25 7:18 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-22 19:59 Christian Melki
2021-04-23 7:39 ` Michael Olbrich
2021-04-23 8:17 ` Christian Melki
2021-04-24 17:02 ` Christian Melki
2021-04-25 7:18 ` Michael Olbrich [this message]
2021-05-03 13:43 ` Christian Melki
2021-05-07 7:15 ` [ptxdist] [PATCH] pkg-config-wrapper: calculate the system paths dynamically as well Michael Olbrich
2021-05-07 11:14 ` Christian Melki
2021-05-07 12:14 ` Michael Olbrich
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=20210425071803.GD27464@pengutronix.de \
--to=m.olbrich@pengutronix.de \
--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