btxld not found

Kyle Evans kevans at freebsd.org
Tue Jan 28 22:23:01 UTC 2020


On Tue, Jan 28, 2020 at 3:28 PM Kyle Evans <kevans at freebsd.org> wrote:
>
> On Tue, Jan 28, 2020 at 2:15 PM Mark Millard <marklmi at yahoo.com> wrote:
> >
> > Marek Zarychta zarychtam at plan-b.pwste.edu.pl wrote on
> > Tue Jan 28 19:33:45 UTC 2020 :
> >
> > > W dniu 28.01.2020 o 19:11, Dimitry Andric pisze:
> > > > On 28 Jan 2020, at 12:36, Nick Hibma <nick at van-laarhoven.org> wrote:
> > > >>
> > > >> Could anyone explain to me what I am doing wrong? make installworld fails each time with the following error
> > > >>
> > > >> ===> stand/i386/libi386 (install)
> > > >> ===> stand/i386/loader_4th (install)
> > > >> strip -R .comment -R .note -o loader_4th.bin loader_4th.sym
> > > >> btxld -v -f aout -e 0x200000 -o loader_4th -l /usr/obj/usr/src/i386.i386/stand/i386/btx/btxldr/btxldr  -b /usr/obj/usr/src/i386.i386/stand/i386/btx/btx/btx loader_4th.bin
> > > >> make[6]: exec(btxld) failed (No such file or directory)
> > > >> *** Error code 1
> > > >>
> > > >> This is with source of last week. I had this problem before (from old sources) and fixed it by specifying the full path to btxld in the stand/i386/*/Makefile.
> > > >
> > > > Yes, this is most likely your clock(s) being off.  At installworld time,
> > > > it should *not* start rebuilding your loader.
> > > >
> > > > Usually this happens if you build on one machine, and install on
> > > > another, while the install machine's time is behind the build machine's
> > > > time.  But it can also happens on one machine, for instance if you
> > > > start in single user mode, and the clock is not yet synchronized.
> > > >
> > > > -Dimitry
> > > >
> > >
> > > I build and install on the same machine, WITH_META_MODE=yes
> > . . .
> >
> > Same here on a ThreadRipper 1950X: a self hosted build and
> > install gets the issue at install time. WITH_META_MODE in use.
> >
> > Never started in single user mode. Also happens for targeting a
> > local directory tree in the install, instead of updating the
> > live system. (A directory tree used later with poudriere.)
> >
> > https://lists.freebsd.org/pipermail/freebsd-toolchain/2019-December/005130.html
> >
> > has some timestamps that I observed. btxld.full was about 27
> > seconds later in the file system than btxld.meta, btxld.debug,
> > and such (until I rebuilt).
> >
> > Looks to me more like multiple parallel builds that stomp on
> > each other.
> >
>
> I suspect y'all want something like the following:
>

Sorry, that patch is clearly wrong- here's take two. A lot of these
have dependencies on btxldr that aren't formally described in the
targets, so I missed... a lot. New version just builds btx first gated
behind a .WAIT then parallel the rest.

diff --git a/stand/i386/Makefile b/stand/i386/Makefile
index a9d402acf60..24255eefabf 100644
--- a/stand/i386/Makefile
+++ b/stand/i386/Makefile
@@ -4,7 +4,10 @@ NO_OBJ=t

 .include <bsd.init.mk>

-SUBDIR.yes=    mbr pmbr boot0 boot0sio btx boot2 cdboot gptboot \
+# Almost everything else here relies on btxldr, so we must make sure it's built
+# before everything else proceeds so we don't end up building against a stale
+# btxldr and ending up with a build-during-install scenario.
+SUBDIR.yes=    btx .WAIT mbr pmbr boot0 boot0sio boot2 cdboot gptboot \
                isoboot libi386

 SUBDIR.${MK_LOADER_FIREWIRE}+= libfirewire


More information about the freebsd-current mailing list