FreeBSD の install は build と同じバージョンが必須 ― 2021年03月02日 12時26分05秒
FreeBSD に PR を投げたが、どうも make install
を行うホストは、 make build
を行ったホストと同じバージョンを使う必要があるそうだ。つまり、FreeBSD 13.0-RELEASE を複数の 12.2-RELEASE のホストにインストールしたければ、コンパイルも 12.2-RELEASE 上でやったのを共有する必要がある。うっかり 13.0-BETA に上げてしまったホストでインクリメンタルビルドを行うと tmp 以下が 13.0-BETA になってしまい今回の様な問題に出喰わす。
さて、もう一度作り直すの面倒だったので、取り敢えず LD_LIBRARY_CONFIG を用いて回避することは出来た。make installworld を行わないと、make installkernel が上手にいかないが、現状を回避するのには充分。なお、この手順の更新はサポートされていないので非公式の回避策になる。
diff --git a/Makefile.inc1 b/Makefile.inc1
index f27cd270635..1dbaa1a4861 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -607,6 +607,7 @@ BUILD_ARCH!= uname -p
.endif
WORLDTMP?= ${OBJTOP}/tmp
BPATH= ${CCACHE_WRAPPER_PATH_PFX}${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/bin:${WORLDTMP}/legacy/usr/libexec
+BLD_LIBRARY_PATH=${WORLDTMP}/lib:${WORLDTMP}/usr/lib:${WORLDTMP}/lib/casper
XPATH= ${WORLDTMP}/bin:${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin
# When building we want to find the cross tools before the host tools in ${BPATH}.
@@ -717,6 +718,7 @@ BOOTSTRAPPING_OSRELDATE?=${OSRELDATE}
BMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \
TOOLS_PREFIX=${TOOLS_PREFIX_UNDEF:U${WORLDTMP}} \
PATH=${BPATH}:${PATH} \
+ LD_LIBRARY_PATH=${BLD_LIBRARY_PATH}:${LD_LIBRARY_PATH} \
WORLDTMP=${WORLDTMP} \
MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}"
# need to keep this in sync with targets/pseudo/bootstrap-tools/Makefile
@@ -764,6 +766,7 @@ XMAKE= ${BMAKE} \
# kernel-tools stage
KTMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \
PATH=${BPATH}:${PATH} \
+ LD_LIBRARY_PATH=${BLD_LIBRARY_PATH}:${LD_LIBRARY_PATH} \
WORLDTMP=${WORLDTMP} \
MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}"
@@ -1360,7 +1360,8 @@ distributeworld installworld stageworld: _installcheck_world .PHONY
fi; \
done); \
if [ -z "${CROSSBUILD_HOST}" ] ; then \
- libs=$$(LD_LIBRARY_PATH=${BLD_LIBRARY_PATH}:${LD_LIBRARY_PATH} ldd -f "%o %p\n" -f "%o %p\n" $$progs 2>/dev/null | sort -u | \
+ libs=$$(LD_LIBRARY_PATH=${BLD_LIBRARY_PATH}:${LD_LIBRARY_PATH} \
+ ldd -f "%o %p\n" -f "%o %p\n" $$progs 2>/dev/null | sort -u | \
while read line; do \
set -- $$line; \
if [ "$$2 $$3" != "not found" ]; then \
前回。
最近のコメント