GSoC: Separation of Ports Build Process from Local Installation

Theron Tarigo theron at freebsd.org
Tue Jul 9 18:42:23 UTC 2019


Hello all,

This project aims to decouple the build process of the ports framework 
from the local installation.  To work around the assumptions made by 
ports about dependency file locations, a userspace tool to remap 
processes' filesystem namespaces is under development.

This past week, I have made the following progress:
- Ldconfig hints file is maintained at each dependency port 
installation, allowing build tools to run as expected.
- Fixed several more problems with running programs under the namespace 
tool:
     - Some ports contain /bin/sh scripts with no shebang.  FreeBSD 
allows this; Namespace tool's execve implementation is changed accordingly.
     - Fixed a bug in execve implementation concerning argv[0]
     - Debugging output, when requested, now does not get written to 
wrong file after (v)fork and/or exec.
- Have ports use devel/bmake instead of /usr/bin/make, where possible, 
as the latter is statically linked and cannot handle ports Makefiles' 
dependencies on installed files.
- Confirmed that devel/llvm60 and all its dependencies build 
successfully.  This selection of ports represents many build tools 
commonly used in building of other ports.  To see for yourself: make -C 
/usr/ports/devel/llvm60 all-depends-list

What I am working on next:
- Create a port of freebsd-user-namespace to be used by ports framework, 
similarly to how ports-mgmt/pkg is used.
- Build larger set of ports to discover remaining incompatibilities.
- Set up automated testing of ports to assess progress and catch 
regressions.

Project goals and status are kept at 
https://wiki.freebsd.org/SummerOfCode2019Projects/PortsSeparatedBuild .

Source of the userspace filesystem namespace tool is shared at 
https://github.com/therontarigo/freebsd-user-namespace .
Changes to ports framework are shared at 
https://github.com/freebsd/freebsd-ports/compare/master...therontarigo:separated.

Theron Tarigo



More information about the soc-status mailing list