NetBSD libc invocation
NetBSD libc is in the master branch and hooked into the make world/elf-libraries procedure.
In the latest version of the master branch, gcc and clang *always* use the netbsd headers and libraries, and no elf libraries of the minix libraries are generated any more, to simplify things.
NetBSD Code Patch System
In order to be able to neatly track NetBSD sources, and easily import and patch more, there is a system to retrieve NetBSD sources using cvs, and automatically generate patch files from the current Minix code with respect to the current NetBSD code.
Imported NetBSD code
The list of imported NetBSD sub-hierarchies is in tools/nbsd_ports. Each line is an imported hierarchy, where the first column is the Minix location, and the second column is the NetBSD CVS location. E.g.:
common/lib/libc src/common/lib/libc lib/nbsd_libc src/lib/libc lib/nbsd_libm src/lib/libm nbsd_include src/include
The CVS revision of the NetBSD code currently imported in Minix is set in nbsd.config.
Hierarchy Maintenance
Install the cvs package.
pkgin in cvs
After running the following command, the original NetBSD sources will be stored, for reference, in src/nbsdsrc.
cd /usr/src/tools && make nbsd_fetch
Using nbsd.config, this fetches the right revision of the imported hierarchies.
To update each hierarchy's patch file (minix-port.patch):
make nbsd_diff
Remaining Issues
- Implement issetugid.c
- Can't build image with clang
- RENAME
- syslog doesn't seem to work (connects to unix domain socket)
- Make off_t, time_t, mode_t match NetBSD's types
- Clean up other warnings
- The sys/bswap.h header indirectly includes sys/endian.h, which implicitly declares the bswap{16,32,64} functions; sys/bswap.h later declares them as well, resulting in a compilation error
- Phase out MINIX sed
- zoneinfo build problem with gcc/clang
- signal number conflicts
- test set build failures
<unistd.h> feature-test macros vary on the level of POSIX conformance (_POSIX*_VERSION), functionnality of chown (_POSIX_CHOWN_RESTRICTED), path too long signalling (_POSIX_NO_TRUNC), support of job control (_POSIX_JOB_CONTROL), perhaps tty disabling (_POSIX_VDISABLE, cannot figure it out), and a host of post-1993 POSIX features, not all of them implemented in the MINIX system; I guess src/nbsd_include/sys/unistd.h is unchanged from NetBSD
- not-stubbed uuid_xxx(3) functions (need uuidgen).
widely distributed ~/.ashrc uses non-standard construction if [ "$-" : '.*i.*' which takes advantage of expr and test/[ being the same with MINIX port of ash(1), not so with NetBSD
- MSG_DONTWAIT is missing
Resolved Issues, with future follow-up
- dns lookups need resolv.conf; fine, we need a resolv.conf then; when everyone uses it, we can phase out nonamed
- Password format