I just installed 5.1-release on a sparc64, and then cvsup'ed to the latest snapshot of -current. Since that update is such a large jump in time, I was going from a system which had no /rescue or /libexec to one which builds everything dynamically.
This gets one into a mess in the middle of installworld, where suddenly almost everything dies with messages like: "ELF interpreter /libexec/ld-elf.so.1 not found" I know others have run into this problem, but there seems to be nothing in UPDATING to warn people about it. Or at least, I didn't see anything in /usr/src/UPDATING under sparc64.
I did some more tests today, and it looks like it is still true that updating from a non-/libexec system to a system with both /libexec and dynamic-root will not work right.
There is a check in /usr/src/Makefile.inc1 which tries to help out, but when I try a test-run of make (with the right environment and parameters), that section does not seem to do anything. That section says:
# When upgrading to a dynamically linked root, install the runtime
# linker early into its new location before make(1) has a chance # to run the dynamically linked /bin/sh.
.if !defined(NO_DYNAMICROOT) && !defined(NOPIC) && \ (!defined(TARGET_ARCH) || ${TARGET_ARCH} == ${MACHINE_ARCH}) && \
!defined(DISTDIR) && \
(!defined(DESTDIR) || empty(DESTDIR) || ${DESTDIR} == "/") && \
!exists(/libexec/ld-elf.so.1)
SUBDIR+= libexec/rtld-elf
.endif
However, libexec/rtld-elf does not get added to the list of subdirectories. I am not completely sure what all those lines in the .if are checking for, but if I change "DISTDIR" to "DESTDIR" on the third line, I do get libexec/rtld-elf added to the the SUBDIR variable.
But even if that fixes the check, I don't understand why we would not just move up the:
.if exists(${.CURDIR}/libexec) SUBDIR+= libexec .endif
so that it will be installed before /bin is. We already install /include and /lib before we install /bin, and I would think that we would *always* want a "new" /libexec installed before installing /bin files which may depend on some change to libraries in that directory.
Disclaimer: I realize there could be many subtleties here that I am not aware off, so consider this more of a question than a statement that something is definitely wrong. Why *wouldn't* we want /libexec installed before /bin? I do know that the current setup still does not work (going from 5.1-secure to 5.1-rightNow), but I may be pushing for the wrong solution.
[also, I intended to do more checking of this, but I've run out of "weekend" and I doubt I'll work on this much until next weekend....]
-- Garance Alistair Drosehn = [EMAIL PROTECTED] Senior Systems Programmer or [EMAIL PROTECTED] Rensselaer Polytechnic Institute or [EMAIL PROTECTED] _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "[EMAIL PROTECTED]"