Moving sources (base/ports) from /usr

Ede Wolf listac at nebelschwaden.de
Thu Jun 11 07:22:23 UTC 2020


With a little delay, here is just the conclusion. Moving ports or src to 
another location is actually way more simple than it seemed at first 
impression. Seems like well structured OS.
So, to the best of my knowledge:

For ports, simple move to the desired location and specify in 
/etc/make.conf:

PORTSDIR=/clutter/ports
WRKDIRPREFIX=/clutter/work
DISTDIR=/clutter/binpkg

SRCCONF=/etc/src.conf
SRC_ENV_CONF=/etc/src-env.conf

That's it, you are set. Works without any modification for portmaster as 
well.
I do not know about other tools that have an own configuration files, 
like portsnap, as I have not have them used yet.

WRKDIRPREFIX is where stuff is build, but it also keeps your config 
settings?
DISTDIR is where the downloaded source is kept.

Moving /usr/src is even more effortless, just set following variable in 
/etc/src-env.conf (or whatever you have defined this file to be in 
make.conf):


MAKEOBJDIRPREFIX?=/clutter/obj


That's it. There is one more environmant variable, that can optionally 
be exported in the shell of your choice, that is SOURCEDIR

setenv SOURCEDIR /clutter/src
OR
export SOURCEDIR=/clutter/src

Or your respective configuration file.

This is only used by mergemaster, and if not set, mergemaster will ask 
during invocation.
Just be aware, if not net and you have not deleted the contents below 
/usr/src, mergemaster may use /usr/src if a certain makefile is present 
and this may lead to unexpected results.

Remaining open questions:
- Is it possible for makeworld/kernek to move the workdir out of 
/usr/obj? So temporary stuff may go to /tmp

- Is there a way to prevent installworld from creating /usr/src if it 
not present?

- Why are portvariables defined in make.conf, not in src-env.conf?

But those are minuscule.

Thanks everybode for your time, help and explanations.

Ede


More information about the freebsd-questions mailing list