Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Feb 2017 14:30:06 +0100
From:      "Marin Bernard" <lists@olivarim.com>
To:        freebsd-current@freebsd.org
Subject:   `make buildworld` does not build base llvm on amd64
Message-ID:  <1487424607-f76018bce4dae5ad698063232671f85c@olivarim.com>

next in thread | raw e-mail | index | archive | help
Hi,
I'm in the process of testing the drm-next-4.7 branch from the FreeBSDDesktop=
 github repository on several computers. As I want to avoid building world on=
 every machine, I decided to set up a dedicated build machine running FreeBSD=
 11.0-STABLE. The plan was to build world, kernel and some parts of the ports=
 tree with poudriere, and then generate FreeBSD release images and a pkgng re=
pository for binary packages.

I was able to build both the world and the kernel successfully. I was also ab=
le to generate working install images with the  make release command. However=
, it seems that the whole build process skips building the base versions of l=
lvm39 and clang: as a consequence, all systems installed from the release ima=
ges lack a compiler. Installing the new world and kernel on the build machine=
 does not install llvm39: instead, llvm38 is left untouched, until flagged ob=
solete by the  make remove-old-libs command, and deleted.

Does anybody know why  make avoids building base llvm39 as a bootstrap compil=
er even while the current base version is llvm38 ? Is there a way to force th=
e build of base llvm and clang ?

I do not use any src.conf or make.conf file. I read the src.conf(5) man page=
=20and tried to pass custom flags to  make (like  WITH_CLANG,  WITH_CLANG_BOO=
TSTRAP,  WITH_CLANG_FULL), without any success.

Here is how to reproduce:

1. Install FreeBSD 11.0-RELEASE or a snapshot of 12.0-CURRENT with default op=
tions. I tried the following with both versions and base llvm was not built i=
n both case.

2. Install the devel/git package with  pkg.

3. Clone the github repository to /usr/src.

4. Try to build everything:
 # cd /usr/src/
# make buildworld buildkernel

5. The build stops immediately because  make cannot find llvm39. Here is the=
=20error message:
"You need to install devel/llvm39 to build or set XCC"

That error is new to me: I never saw it when I ran  make buildworld in previo=
us releases. As a workaround, install devel/llvm39, or run  make with explici=
t environment variables:
 # make XCC=3Dclang XCXX=3Dclang++ XCPP=3Dclang-cpp buildworld buildkernel

llvm39 will not be built whatever workaround you chose.

5. After the build finishes, make a release:
 # cd /usr/src/release
# make XCC=3Dclang XCXX=3Dclang++ XCPP=3Dclang-cpp release WITH_DVD=3D1

6. Install the release to another computer, or install the new world and kern=
el on the current machine as you would normally do, with  mergemaster and  ma=
ke remove-old /  make remove-old-libs.

7. Boot the new install or the new kernel, then run:
# cc -v
No compiler found.

Thanks a lot for your help!

Marin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1487424607-f76018bce4dae5ad698063232671f85c>