Re: llvm10 build failure on Rpi3 [You need to update /usr/local/poudriere/poudriere-system]

Mark Millard via freebsd-ports <[email protected]>
Newsgroups gmane.os.freebsd.devel.toolchain,gmane.os.freebsd.devel.ports,gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On 2021-Jul-3, at 21:32, Mark Millard <marklmi at yahoo.com> wrote:

> [Just correcting a bad placement of  some of the new text.]
> 
> On 2021-Jul-3, at 21:25, Mark Millard <marklmi at yahoo.com> wrote:
> 
>> On 2021-Jul-3, at 21:15, Mark Millard <marklmi at yahoo.com> wrote:
>> 
>>> Summary: You need to update /usr/local/poudriere/poudriere-system
>>> 
>>> Updating your HOST environment does not automatically update that
>>> area.
>>> 
>>> One possibility for an update procedure is:
>>> 
>>> # cd /usr/src
>>> # make installworld DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1
>>> # make distrib-dirs DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1
>>> # make distribution DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1
>>> # make -DBATCH_DELETE_OLD_FILES delete-old DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1
>>> 
>>> Sometime after after a poudriere bulk run completes:
>>> 
>>> # make -DBATCH_DELETE_OLD_FILES delete-old-libs DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1
>>> 
>>> 
>>> How I got there . . .
>>> 
>>> Someone pointed out something that I'd not even thought to check
>>> about your builds (that explains why your lang/rust did not fail
>>> to build as well and a major difference in your poudriere vs.
>>> make build tests and vs. my attempts to reproduce). Your log
>>> still reports:
>>> 
>>> Host OSVERSION: 1400024
>>> Jail OSVERSION: 1400019
>>> 
> 
> [Text moved here:]
> 
> I forgot to quote the OSVERSION in:
> 
> ---Begin Environment---
> SHELL=/bin/csh
> OSVERSION=1400019
> UNAME_v=FreeBSD 14.0-CURRENT
> UNAME_r=14.0-CURRENT
> . . .
> 
>>> 1400019 is from early June:
>>> 
>>> committer	Neel Chauhan <[email protected]>	2021-06-07 22:53:24 +0000
>>> commit	37d64dcdfa519157aff9711f1f226ad7bd778f46 (patch)
>>> 
>>> That Jail version of the system predates using llvm12
>>> as the system compiler. 1400023 was the switch to llvm12:
>>> 
>>> committer	Dimitry Andric <[email protected]>	2021-06-13 20:01:15 +0000
>>> commit	d409305fa3838fb39b38c26fc085fb729b8766d5 (patch)
>>> 
>>> This means that the direct make build of devel/llvm10
>>> was based on using system clang 12, not what you have
>>> poudriere using.
>>> 
>>> You should have (using things as they happen to
>>> be available to install now):
>>> 
>>> Host OSVERSION: 1400024
>>> Jail OSVERSION: 1400024
> 
> [Removed bad placement of example text where it could be
> greatly misleading.]
> 
>>> In other words: equal unless you have good reason to be
>>> building older materials.
>>> 
>>> 
>>> So we see that your poudriere bulk builds are based on clang 11,
>>> not clang 12, according to the log file:
>>> 
>>> _CCVERSION_921dbbb2=FreeBSD clang version 11.0.1 ([email protected]:llvm/llvm-project.git llvmorg-11.0.1-0-g43ff75f2c3fe) Target: aarch64-unknown-freebsd14.0 Thread model: posix InstalledDir: /usr/bin
>>> _ALTCCVERSION_921dbbb2=none
>>> _CXXINTERNAL_acaad9ca=FreeBSD clang version 11.0.1 ([email protected]:llvm/llvm-project.git llvmorg-11.0.1-0-g43ff75f2c3fe) Target: aarch64-unknown-freebsd14.0 Thread model: posix InstalledDir: /usr/bin "/usr/bin/ld" "--eh-frame-hdr" "-dynamic-linker" "/libexec/ld-elf.so.1" "--enable-new-dtags" "-o" "a.out" "/usr/lib/crt1.o" "/usr/lib/crti.o" "/usr/lib/crtbegin.o" "-L/usr/lib" "/dev/null" "-lc++" "-lm" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "/usr/lib/crtend.o" "/usr/lib/crtn.o"
>>> . . .
>>> _OBJC_CCVERSION_921dbbb2=FreeBSD clang version 11.0.1 ([email protected]:llvm/llvm-project.git llvmorg-11.0.1-0-g43ff75f2c3fe) Target: aarch64-unknown-freebsd14.0 Thread model: posix InstalledDir: /usr/bin
>>> . . .
>> 
>> I forgot to quote another OSVERSION:
>> 
>> . . .
>> ARCH=aarch64
>> OPSYS=FreeBSD
>> _OSRELEASE=14.0-CURRENT
>> OSREL=14.0
>> OSVERSION=1400019
>> . . .
>> 
>>> -- The C compiler identification is Clang 11.0.1
>>> -- The CXX compiler identification is Clang 11.0.1
>>> -- The ASM compiler identification is Clang
>>> . . .
>> 
> 
> 

I'll note that your use of:

# poudriere jail -c -j main -m null -M /usr/local/poudriere/poudriere-system -S /usr/src -v 14.0-CURRENT

where /usr/src is the same as used to build your live
boot system, means that updating /usr/src to a vintage
with:

OSVERSION: 1400024

also means that /usr/src is no longer consistent with with
system in /usr/local/poudriere/poudriere-system unless
/usr/local/poudriere/poudriere-system has also been updated.

You are using a older system and older toolchain to build
based on a new /usr/src that does not match what is in
/usr/local/poudriere/poudriere-system but the build
activity is happening in that older system environment.

It is an incoherent combination. It is not surprising that
it does not behave well.

I'd update /etc/src to a vintage that has the workaround
for the lang/rust build problem, rebuild and install the
HOST OS, boot it, install the same OS version into:

/usr/local/poudriere/poudriere-system

and then rebuild all the ports to be sure that none are
still based on an incoherent combination of materials.

My guess is that you want poudriere-system tracking the live
system and its /usr/src/ . That would mean that just after
booting a new system update that was based on an updated
/usr/src/ you would then continue updating via something like:

# cd /usr/src
# make installworld DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1
# make distrib-dirs DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1
# make distribution DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1
# make -DBATCH_DELETE_OLD_FILES delete-old DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1

Sometime after after a poudriere bulk run completes:

# make -DBATCH_DELETE_OLD_FILES delete-old-libs DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1

(That sequence is  biased to poudriere use instead of to a
chroot environment that has been tailored and needs the
tailoring preserved.)


Note: If one wants to have the likes of:

/usr/local/poudriere/poudriere-system

be based on older system versions sometimes, then a different -S PATH
needs to be used than for the boot system, say:

# poudriere jail -c -j main -m null -M /usr/local/poudriere/poudriere-system -S /usr/oldersrc -v 14.0-CURRENT

Then updates of poudriere-system would be more like:
(presuming that you have already established /usr/oldersrc)

# cd /usr/oldersrc/
# ??? do whatever to get /usr/oldersrc/ to have the commit desired ???
# make buildworld
# make installworld DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1
# make distrib-dirs DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1
# make distribution DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1
# make -DBATCH_DELETE_OLD_FILES delete-old DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1

Sometime after after a poudriere bulk run completes:

# make -DBATCH_DELETE_OLD_FILES delete-old-libs DESTDIR=/usr/local/poudriere/poudriere-system DB_FROM_SRC=1


Mistake apology:

Back 0n 2021-June-23 I had written:

QUOTE
So your jail's OSVERSION is older than the environment
that it is running in. (Unlikely to contribute to the
0xA5A5A5A5u as far as I can tell.)
END QUOTE

The "Unlikely . . ." was just wrong. Sorry.

The reality is that such is incoherent, given the use of
the same /usr/src/ code in poudriere as was used to update
the booting system. The update from clang 11 to clang 12
between make the combination even more likely to be a
problem. /usr/local/poudriere/poudriere-system needs to
track the changes as well.

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.