7ae7c82dd6
After the staging installation, we replace a number of paths in libtool .la files so that those paths point to STAGING_DIR instead of a location in the build machine. However, we replace only paths that start with /usr. And it turns out that the linux-pam package is configured with --libdir=/lib (linux-pam seems to always be installed in /lib rather than /usr/lib). Due to this, libpam.la contains the following line: libdir='/lib' When building a configuration that has: - BR2_ROOTFS_MERGED_USR=y - BR2_PACKAGE_LINUX_PAM=y - BR2_PACKAGE_POLKIT=y on a system that has its system-wide PAM library installed in /lib, the build fails with: /lib/libpam.so: file not recognized: File format not recognized For some reason, libtool searches only in STAGING_DIR/usr/lib, but when BR2_ROOTFS_MERGED_USR=y, STAGING_DIR/lib points to STAGING_DIR/usr/lib, so libtool finds libpam.la. And this libpam.la contains a bogus libdir='/lib' path. libtool then goes on, finds /lib/libpam.so, and links with it, causing the build failure. By doing the proper replacement of libdir='/lib', we have a correct libpam.la, and solve the build issue. There is no autobuilder failure associated to this issue, as it requires /lib/libpam.so to exist. This is the case on ArchLinux, on which Xogium reported the issue, which can also be reproduced in an ArchLinux container. Reported-by: Xogium <contact@xogium.me> Cc: Xogium <contact@xogium.me> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Tested-by: Yann E. MORIN <yann.morin.1998@free.fr> [yann.morin.1998@free.fr: - tested by manually creating a symlink to libpam.so in /lib ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> |
||
---|---|---|
arch | ||
board | ||
boot | ||
configs | ||
docs | ||
fs | ||
linux | ||
package | ||
support | ||
system | ||
toolchain | ||
utils | ||
.defconfig | ||
.flake8 | ||
.gitignore | ||
.gitlab-ci.yml | ||
.gitlab-ci.yml.in | ||
CHANGES | ||
Config.in | ||
Config.in.legacy | ||
COPYING | ||
DEVELOPERS | ||
Makefile | ||
Makefile.legacy | ||
README |
Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation. The documentation can be found in docs/manual. You can generate a text document with 'make manual-text' and read output/docs/manual/manual.text. Online documentation can be found at http://buildroot.org/docs.html To build and use the buildroot stuff, do the following: 1) run 'make menuconfig' 2) select the target architecture and the packages you wish to compile 3) run 'make' 4) wait while it compiles 5) find the kernel, bootloader, root filesystem, etc. in output/images You do not need to be root to build or run buildroot. Have fun! Buildroot comes with a basic configuration for a number of boards. Run 'make list-defconfigs' to view the list of provided configurations. Please feed suggestions, bug reports, insults, and bribes back to the buildroot mailing list: buildroot@buildroot.org You can also find us on #buildroot on Freenode IRC. If you would like to contribute patches, please read https://buildroot.org/manual.html#submitting-patches