Reusing sources, object files and the compiler cache when building FreeBSD using poudriere and the classic way with make

I plan to update the base system from source and install packages from ports, compiling the ports with poudriere.

To do this, I'll create a jail using poudriere:

Code:
poudriere jail \
          -J 64 \
          -b \
          -c \
          -j test \
          -m src=/usr/src

And then update it as follows:

Code:
poudriere jail \
      -b \
      -j test \
      -u

In this case, the system is assembled in the directory:

Code:
/usr/obj/poudriere/jails/test/usr/src/amd64.amd64

Regarding this jail I compile ports.

Now I'm going to compile the code for the base system (which has the same architecture and source code version).

Question 1: Am I correct in understanding that to reuse the contents of /usr/obj without recompiling everything, I can simply redefine the MAKEOBJDIRPREFIX variable as follows?

Code:
setenv MAKEOBJDIRPREFIX "/usr/obj/poudriere/jails/test"

Or would it be better to compile the system in advance on the host in a special directory, and then create a jail with a command like this (this command does not work):

Code:
poudriere jail \
          -J 64 \
          -c \
          -j test \
          -m null \
          -M /usr/obj

Question 2:

Can I also reuse the poudriere cache when building a base system from source? Like this:

Code:
echo "WITH_CCACHE_BUILD=yes" >> /etc/make.conf
setenv CCACHE_DIR "/path/to/my/poudriere/ccache/dir"

Question 3:

Can I reuse the ports tree located in /usr/src when creating a jail poudriere? Currently, when creating ports, it is copied to the jail directory:

Code:
[00:00:00] Creating test fs at /poudriere/jails/test... done
[00:00:00] Copying /usr/src to /poudriere/jails/test/usr/src... done
[00:00:05] Starting make buildworld with 64 jobs
[Creating objdir /usr/obj/poudriere/jails/test/poudriere/jails/lab/usr/src/amd64.amd64...]
--- buildworld ---
...
 
Back
Top