Bug 230018 - devel/libtool: baked in compile time CC/LD paths (/nxb-bin/ on armv6/armv7)
Summary: devel/libtool: baked in compile time CC/LD paths (/nxb-bin/ on armv6/armv7)
Status: New
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: arm Any
: --- Affects Only Me
Assignee: Tijl Coosemans
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-07-24 16:48 UTC by Greg V
Modified: 2019-06-02 13:28 UTC (History)
2 users (show)

See Also:
bugzilla: maintainer-feedback? (tijl)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Greg V 2018-07-24 16:48:34 UTC
Official FreeBSD packages for 32-bit ARM are built using cross-compilation, and the ARM system root in that case is /nxb-bin/.

So these paths are baked directly into libtool:

$ grep nxb-bin /usr/local/bin/libtool
LTCC="/nxb-bin/usr/bin/cc"
sys_lib_search_path_spec="/nxb-bin/usr/lib/clang/6.0.0 /usr/lib "
LD="/nxb-bin/usr/bin/ld"
CC="/nxb-bin/usr/bin/cc"
LD="/nxb-bin/usr/bin/ld"
CC="/nxb-bin/usr/bin/c++"
LD="/nxb-bin/usr/bin/ld"
LD="/nxb-bin/usr/bin/ld"

Which results in surprising errors when building stuff natively on arm:

libtool: link: /nxb-bin/usr/bin/cc -shared  -fPIC -DPIC  .libs/sgc.o      -Wl,-soname -Wl,libmzgc-6.12.so -o ../.libs/libmzgc-6.12.so                                            
eval: /nxb-bin/usr/bin/cc: not found

I'm not sure what's the right solution for this. Make a symlink from /nxb-bin to / on arm installs? Ugly. s|/nxb-bin||g on the generated libtool package? Will break the cross-compilation environment I think.

Actually, shouldn't all libtool invocations override these variables, so that both cross and native always work?
Comment 1 Tijl Coosemans freebsd_committer 2019-06-02 12:56:45 UTC
Is this still a problem?

I would build packages without setting systemroot and put whatever is in /nxb-bin/usr/bin/ in /usr/bin.
Comment 2 Mikael Urankar freebsd_committer 2019-06-02 13:10:19 UTC
Yes the issue is still present.
poudriere still creates a make.nxb.conf [1] instead of creating hardlinks for the toolchain (like it's done for some utilities [2]).

[1] https://github.com/freebsd/poudriere/blob/master/src/share/poudriere/common.sh#L2214
[2] https://github.com/freebsd/poudriere/blob/master/src/share/poudriere/common.sh#L2233
Comment 3 Tijl Coosemans freebsd_committer 2019-06-02 13:28:35 UTC
(In reply to mikael.urankar from comment #2)
Ok, then please discuss this issue with the poudriere devs.  I cannot address this in devel/libtool.  The libtool script is generated during build for the compiler used during build.  It cannot reliably use another compiler.