devel/llvm38 & custom poudriere

Christian Schwarz me at cschwarz.com
Mon Sep 26 16:11:22 UTC 2016


Hi all,

I have been testing the drm-next-4.* branches for the last months, with a
short break since end of August, when - apparently - the build was changed
to depend on devel/llvm38...

I just pulled the latest HEAD 2652d2a6e8c714932dc3331bb130b31b176c3bc9
It requires having devel/llvm38 installed, so I did that.

The base operating system builds fine, but poudriere builds fail because
of the missing C compiler:

Using `poudriere jail -c -m src=...` does not work (lack of C compiler).

 ...
 /usr/bin/cc: /usr/local/llvm38/bin/cc: not found
 make: "/usr/ports/Mk/Uses/compiler.mk" line 69: warning: "cc --version" returned non-zero status
 make: "/usr/ports/Mk/Uses/compiler.mk" line 120: warning: "c++ -### /dev/null 2>&1" returned non-zero status
 ...

I figured I could set up the build jail manually:

 zfs create zroot/poudriere/jails/12graphics
 zfs set mountpoint=/usr/local/poudriere/jails/12graphics zroot/poudriere/jails/12graphics
 # manually create the poudriere.d/jail/12graphics
 #   by copying & adjusting a regular build jail
 cd path-to-drm-next-4.7
 make buildworld
 make installworld DESTDIR=/usr/local/poudriere/jails/12graphics
 make distribution DESTDIR=/usr/local/poudriere/jails/12graphics
 zfs snapshot zroot/poudriere/jails/12graphics at nollvm
 cp /etc/resolv.conf /usr/local/poudriere/jails/12graphics/etc/resolv.conf
 pkg --chroot /usr/local/poudriere/jails/12graphics install clang38
 rm /etc/resolv.conf
 echo 'CC=/usr/local/bin/clang38' >> /usr/local/poudriere/jails/12graphics/etc/make.conf
 echo 'CXX=/usr/local/bin/clang++38' >> /usr/local/poudriere/jails/12graphics/etc/make.conf
 echo 'CPP=/usr/local/bin/clang-cpp38' >> /usr/local/poudriere/jails/12graphics/etc/make.conf
 # create the zfs snapshot @clean, it is used as source for build jail clones created by poudriere
 zfs snapshot zroot/poudriere/jails/12graphics at clean
 poudriere bulk -j 12graphics -p xserver-next -c -f /usr/local/etc/poudriere.d/myports.list

This seems to stop poudriere's complaints about missing C compiler
(it needs it for buildworld when specifying `-m src=`),
however, autoconf (./configure) still fails when compiling ports,
apparently because it cannot find a C compiler in the jail:

 # truncated log from failing build
 =======================<phase: configure      >============================
 ===>  Configuring for p5-XML-Parser-2.44
 Couldn't find your C compiler
 Compilation failed in require at ./Makefile.PL line 4.
 BEGIN failed--compilation aborted at ./Makefile.PL line 4.
 *** Error code 2

I tried fiddling around by symlinkng /usr/bin/cc to the clang binaries,
this was not successful however.

How should I setup the build jail correctly?
I guess this work must have been done by the 'official' repo [1] already.

Thanks,

Christian

[1] http://www.bsddesktop.com/images/120amd64-ports-graphics-xserver-mesa-next


More information about the freebsd-x11 mailing list