diff --git a/Makefile.inc1 b/Makefile.inc1 index 256a6f81a137..8b54edf4c457 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -50,11 +50,14 @@ .include .include -# We must do lib/ and libexec/ before bin/, because if installworld -# installs a new /bin/sh, the 'make' command will *immediately* -# use that new version. And the new (dynamically-linked) /bin/sh -# will expect to find appropriate libraries in /lib and /libexec. -# +# We must do lib/ and libexec/ before bin/ in case of a mid-install error to +# keep the users system reasonably usable. For static->dynamic root upgrades, +# we don't want to install a dynamic binary without rtld and the needed +# libraries. More commonly, for dynamic root, we don't want to install a +# binary that requires a newer library version that hasn't been installed yet. +# This ordering is not a guarantee though. The only guarantee of a working +# system here would require fine-grained ordering of all components based +# on their dependencies. SRCDIR?= ${.CURDIR} .if defined(SUBDIR_OVERRIDE) SUBDIR= ${SUBDIR_OVERRIDE}