From 7e81b832a385b6b01fa86c0f3fb428b51822bf48 Mon Sep 17 00:00:00 2001 From: Bryan Drewery Date: Fri, 16 Oct 2015 21:09:15 +0000 Subject: [PATCH] Correct a bitrotted comment about installworld order requirements. The case of make(1) using a new /bin/sh issue was fixed in r173219 when ITOOLS was introduced. There are still issues with mid-install errors leaving a system unusable that are currently non-trivial to solve. The safest ordering requires installing rtld, libc and libthr (in that order) before anything else. We don't do that now though. Much improvement is needed here still. Discussed with: kip and kan (rtld/library ordering) MFC after: 1 week Sponsored by: EMC / Isilon Storage Division --- Makefile.inc1 | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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}