Large builds with poudriere

Mark Millard marklmi at yahoo.com
Thu May 20 22:09:37 UTC 2021


Kevin Oberman rkoberman at gmail.com wrote on
Thu May 20 21:37:28 UTC 2021 :

> On Thu, May 20, 2021 at 12:48 PM Mark Millard <marklmi at yahoo.com> wrote:
> 
> > Kevin Oberman rkoberman at gmail.com wrote on
> > Thu May 20 19:21:24 UTC 2021 :
> >
> > > You can greatly reduce the build-time for devel/llvm* by changing the
> > > config to BE_NATIVE to avoid building backends for all FreeBSD supported
> > > platforms. Obviously this is not acceptable for many cases, but if you
> > > never cross-compile for other platforms, it's a really big win.
> >
> >
> > Unfortunately, using something like (llvm10 is just one example,
> > llvm11 showed the same sort of problem at the time):
> >
> > /usr/local/etc/poudriere.d/options/devel_llvm10/options:_FILE_COMPLETE_OPTIONS_LIST=BE_AMDGPU
> > CLANG DOCS EXTRAS LIT LLD LLDB LLD_LINK OPENMP PYCLANG BE_FREEBSD BE_NATIVE
> > BE_STANDARD
> >
> > /usr/local/etc/poudriere.d/options/devel_llvm10/options:OPTIONS_FILE_SET+=BE_AMDGPU
> >
> > /usr/local/etc/poudriere.d/options/devel_llvm10/options:OPTIONS_FILE_UNSET+=BE_FREEBSD
> >
> > /usr/local/etc/poudriere.d/options/devel_llvm10/options:OPTIONS_FILE_SET+=BE_NATIVE
> >
> > /usr/local/etc/poudriere.d/options/devel_llvm10/options:OPTIONS_FILE_UNSET+=BE_STANDARD
> >
> > does not work for all platforms/targets. On a Cortex-A57
> > this lead to:
> >
> > Registered Targets:
> >   amdgcn - AMD GCN GPUs
> >   r600   - AMD GPUs HD2XXX-HD6XXX
> >
> > In other words, aarch64 was missing. I had to pick
> > BE_STANDARD or BE_FREEBSD to get something that
> > would target aarch64 on aarch64.
> >
> > ===
> > Mark Millard
> > marklmi at yahoo.com
> > ( dsl-only.net went
> > away in early 2018-Mar)
> >
> Looks like the Makefile might need some work. I see stuff for handling
> aach64/arm64, so it SHOULD work, but there are things I don't understand
> about AARCH64 to figure it all out. Still, it should be detected.
> 
> Out of curiosity, if you do a "make -C  /usr/ports/devel/llvm10 config",
> the line for BE_NATIVE should show the architecture you are running on. If
> it's missing/something else, maybe you should ask brooks@ about it.


On two types of Cortex-A72 context
# make -C  /usr/ports/devel/llvm10 config

produced:

BE_NATIVE Backend(s) for this architecture ()

The same for each of:

# make -C  /usr/ports/devel/llvm80 config
# make -C  /usr/ports/devel/llvm90 config
# make -C  /usr/ports/devel/llvm11 config
# make -C  /usr/ports/devel/llvm12 config

But this turns out to be because:

# make -C  /usr/ports/devel/llvm10 -V ARCH
aarch64

yet the Makefiles have a test for arm64 instead:

.elif ${ARCH} == arm64
_NATIVE_BACKENDS=       AAarch64


FYI (from one of the test environments):

# uname -apKU
FreeBSD CA72_4c8G_ZFS 13.0-RELEASE FreeBSD 13.0-RELEASE #0 releng/13.0-n244733-ea31abc261ff-dirty: Thu Apr 29 21:53:20 PDT 2021     root at CA72_4c8G_ZFS:/usr/obj/BUILDs/13_0R-CA72-nodbg-clang/usr/13_0R-src/arm64.aarch64/sys/GENERIC-NODBG-CA72  arm64 aarch64 1300139 1300139


===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the freebsd-ports mailing list