cracauer@
Developer
One of several 16-current machines doesn't build kernel or world, on identical /usr/src trees. The others work fine as always. The problem seems to be rooted at the macro SYSCTL_PROC(...) from FreeBSD base expanding to nothing.
Obviously there should be a problem in the C compiler install or in /usr/include.
Here is what I tried:
- plaster a snapshot over / - no change
- rsync /usr/include from a working machine - no change
- empty /etc/make.conf and copy a make.conf from a working machine - no change
- `diff -y` a complete truss of a compiler run for spa.o - no obvious causes
- remove obsolete files via Makefile in /usr/src - no change but broke PAM. That was "fun"
- use `cc -E` to compare output of cpp - nothing obvious
I then went and did `sh release.sh` in /usr/src/release, which builds world and kernel. Worked fine. Install the result to / - still broken. WTF?
Any further ideas for try-n-error are welcome.
Code:
[...] -o spa.o
/xcarb3/usr/src/sys/contrib/openzfs/module/zfs/spa.c:11341:1: error: too few arguments provided to function-like macro invocation
11341 | ZFS_MODULE_VIRTUAL_PARAM_CALL(zfs_zio, zio_, taskq_free,
| ^
/xcarb3/usr/src/sys/contrib/openzfs/include/os/freebsd/spl/sys/mod_os.h:54:39: note: expanded from macro 'ZFS_MODULE_VIRTUAL_PARAM_CALL'
54 | #define ZFS_MODULE_VIRTUAL_PARAM_CALL ZFS_MODULE_PARAM_CALL
| ^
/xcarb3/usr/src/sys/contrib/openzfs/include/os/freebsd/spl/sys/mod_os.h:51:2: note: expanded from macro 'ZFS_MODULE_PARAM_CALL'
51 | ZFS_MODULE_PARAM_CALL_IMPL(_vfs_ ## scope_prefix, name, perm, \
| ^
/xcarb3/usr/src/sys/contrib/openzfs/include/os/freebsd/spl/sys/mod_os.h:47:75: note: expanded from macro 'ZFS_MODULE_PARAM_CALL_IMPL'
47 | SYSCTL_PROC(parent, OID_AUTO, name, CTLFLAG_MPSAFE | perm | args, desc)
| ^
/xcarb3/usr/src/sys/sys/sysctl.h:816:9: note: macro 'SYSCTL_PROC' defined here
816 | #define SYSCTL_PROC(parent, nbr, name, access, ptr, arg, handler, fmt, descr) \
| ^
/xcarb3/usr/src/sys/contrib/openzfs/module/zfs/spa.c:11341:1: error: type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int [-Werror,-Wimplicit-int]
11341 | ZFS_MODULE_VIRTUAL_PARAM_CALL(zfs_zio, zio_, taskq_free,
| ^
/xcarb3/usr/src/sys/contrib/openzfs/include/os/freebsd/spl/sys/mod_os.h:54:39: note: expanded from macro 'ZFS_MODULE_VIRTUAL_PARAM_CALL'
54 | #define ZFS_MODULE_VIRTUAL_PARAM_CALL ZFS_MODULE_PARAM_CALL
| ^
/xcarb3/usr/src/sys/contrib/openzfs/include/os/freebsd/spl/sys/mod_os.h:51:2: note: expanded from macro 'ZFS_MODULE_PARAM_CALL'
51 | ZFS_MODULE_PARAM_CALL_IMPL(_vfs_ ## scope_prefix, name, perm, \
| ^
/xcarb3/usr/src/sys/contrib/openzfs/include/os/freebsd/spl/sys/mod_os.h:47:5: note: expanded from macro 'ZFS_MODULE_PARAM_CALL_IMPL'
47 | SYSCTL_PROC(parent, OID_AUTO, name, CTLFLAG_MPSAFE | perm | args, desc)
| ^
2 errors generated.
*** Error code 1
Obviously there should be a problem in the C compiler install or in /usr/include.
Here is what I tried:
- plaster a snapshot over / - no change
- rsync /usr/include from a working machine - no change
- empty /etc/make.conf and copy a make.conf from a working machine - no change
- `diff -y` a complete truss of a compiler run for spa.o - no obvious causes
- remove obsolete files via Makefile in /usr/src - no change but broke PAM. That was "fun"
- use `cc -E` to compare output of cpp - nothing obvious
I then went and did `sh release.sh` in /usr/src/release, which builds world and kernel. Worked fine. Install the result to / - still broken. WTF?
Any further ideas for try-n-error are welcome.