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?
>
> Michael
>
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.
$ ./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.
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
\
-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)" )
system_libpath=( "${libdir[@]/%//../../lib}" "${libdir[@]/%//../lib}"
"/usr/lib" "/lib" )
system_incpath=( "${libdir[@]/%//../../include}"
"${libdir[@]/%//../include}" "/usr/include" "/include" )
>> So building a library yields:
>> $ ls -la platform-tracker/sysroot-target/usr/lib64/libmnl.so*
>> lrwxrwxrwx 2 xxx users 15 Apr 22 21:01
>> platform-tracker/sysroot-target/usr/lib64/libmnl.so -> libmnl.so.0.2.0*
>> lrwxrwxrwx 2 xxx users 15 Apr 22 21:01
>> platform-tracker/sysroot-target/usr/lib64/libmnl.so.0 -> libmnl.so.0.2.0*
>> -rwxr-xr-x 2 xxx users 77216 Apr 22 21:01
>> platform-tracker/sysroot-target/usr/lib64/libmnl.so.0.2.0*
>>
>> $ ls -la platform-tracker/sysroot-target/usr/lib64/pkgconfig/libmnl.pc
>> -rw-r--r-- 2 xxx users 318 Apr 22 21:01
>> platform-tracker/sysroot-target/usr/lib64/pkgconfig/libmnl.pc
>>
>> In the search for the library:
>> PKG_CONFIG_DEBUG_SPEW variable enabling debug spew
>> Adding directory
>> '/home/xxx/work/tracker/bin/platform-tracker/sysroot-target/usr/lib/pkgconfig'
>> from PKG_CONFIG_PATH
>> Adding directory
>> '/home/xxx/work/tracker/bin/platform-tracker/sysroot-target/usr/share/pkgconfig'
>> from PKG_CONFIG_PATH
>> Global variable definition 'pc_sysrootdir' = '/'
>> Global variable definition 'pc_top_builddir' = '$(top_builddir)'
>> Error printing enabled by default due to use of output options besides
>> --exists, --atleast/exact/max-version or --list-all. Value of
>> --silence-errors: 0
>> Error printing enabled
>> Adding virtual 'pkg-config' package to list of known packages
>> Looking for package 'libmnl'
>> Looking for package 'libmnl-uninstalled'
>> No package 'libmnl' found
>>
>> _______________________________________________
>> ptxdist mailing list
>> [email protected]
>> To unsubscribe, send a mail with subject "unsubscribe" to
>> [email protected]
>>
>
> _______________________________________________
> ptxdist mailing list
> [email protected]
> To unsubscribe, send a mail with subject "unsubscribe" to
> [email protected]
>
_______________________________________________
ptxdist mailing list
[email protected]
To unsubscribe, send a mail with subject "unsubscribe" to
[email protected]