Собирал на днях fusefs-wdfs на одном из серверов, на котором стоит еще 9.0 версия FreeBSD. Однако успешно собрать с первого раза не получилось, сборка вылетает при компиляции fusefs-kmod со следующим исключением:
===> Building for fusefs-kmod-0.3.9.p1.20080208_11
===> fuse_module (all)
"/usr/src/sys/conf/kmod.mk", line 76: Could not find bsd.compiler.mk
"/usr/src/sys/conf/kmod.mk", line 112: Malformed conditional (${COMPILER_TYPE} != "clang")
"/usr/src/sys/conf/kmod.mk", line 116: if-less endif
"/usr/src/sys/conf/kern.mk", line 18: Malformed conditional (${COMPILER_TYPE} == "clang")
"/usr/src/sys/conf/kern.mk", line 33: if-less endif
"/usr/src/sys/conf/kern.mk", line 103: Malformed conditional (${COMPILER_TYPE} == "clang")
"/usr/src/sys/conf/kern.mk", line 109: if-less endif
make: fatal errors encountered -- cannot continue
*** Error code 1
1 error
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1
Stop in /usr/ports/sysutils/fusefs-kmod.
*** Error code 1
Stop in /usr/ports/sysutils/fusefs-kmod.
Добавление MAKE_JOBS_UNSAFE=yes в Makefile проблемы не решило. Как видно из ошибки, система не может найти bsd.compiler.mk. Определяем где он находится:
find / -name bsd.compiler.mk
/usr/src/share/mk/bsd.compiler.mk
Понятно что нужный нам файл лежит в исходниках, но его нет там, где его ищет система при сборке. Исправил копированием /usr/src/share/mk/bsd.compiler.mk в /usr/share/mk/bsd.compiler.mk
Забавно то, что рядом стоит еще одна виртуальная машина, на которой крутится то же самое, но fusefs-wdfs там был успешно собран ранее, и версия fusefs-kmod там 0.3.9.p1.20080208_08 а не _11.
Получается что при обновлении портов, для корректной сборки более свежих версий fusefs_kmod уже критически необходимо обновить все ядро системы, что собственно правомерно, так как текущая production версия 9.1