At 9:39 PM -0500 11/26/03, Garance A Drosihn wrote:
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 Instituteor [EMAIL PROTECTED]
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "[EMAIL PROTECTED]"