On 2021-02-23 12:34 pm, Kyle Evans wrote:> The more I look at `make -dm` output, the less sense it makes. Your
> patch is decidedly correct regardless of how this specific scenario is
> playing out:
>
> 1.) As you noted, it's wrong to clean something that's built
> elsewhere. You can reasonably expect `make clean all` to work pretty
> much everywhere else.
>
> 2.) i386/loader cannot make an informed decision about whether it's
> out-of-date, which is sufficient to tell that the existing addition to
> OBJS was not the correct implementation in hindsight.
>
> 3.) The failure mode if it's *missing* is exactly the same before and
> after your patch; file can't be found, cannot build it.
>
> On Tue, Feb 23, 2021 at 12:09 PM Warner Losh <imp at bsdimp.com>
wrote:
>>
>> I'm unsure of the mechanics as well. I do know that we
shouldn't
>> delete stuff in OTHER directories, though. the btx stuff is trying to
>> do a bit of an end run around the link only with the installed stuff
>> here and using crt0.o as a library from the 'where it was
built'
>> directory which I think creates one too many dependencies... I've
not
>> yet puzzled through all of them to find out which one is causing us to
>> think we need to rebuild though.
>>
>> Warner
>>
>> On Tue, Feb 23, 2021 at 9:21 AM Kyle Evans <kevans at
freebsd.org> wrote:
>>>
>>> Hi,
>>>
>>> What I don't understand here is, why are these being considered
>>> out-of-date? That seems like it is indicative of a larger problem
>>> that
>>> we'd surely fall over elsewhere on if not for here, that the
source
>>> tree's timestamps are post-dated w.r.t. the objdir.
>>>
>>> Thanks,
>>>
>>> Kyle Evans
>>>
>>> On Mon, Feb 22, 2021 at 5:52 PM Warner Losh <imp at
bsdimp.com> wrote:
>>> >
>>> > What does this patch do for you?
>>> >
>>> > diff --git a/stand/i386/loader/Makefile
b/stand/i386/loader/Makefile
>>> > index ad95948ec50a..cbbe15bd1fc0 100644
>>> > --- a/stand/i386/loader/Makefile
>>> > +++ b/stand/i386/loader/Makefile
>>> > @@ -90,7 +90,8 @@ FILES+= ${LOADER}
>>> > FILESMODE_${LOADER}= ${BINMODE} -b
>>> >
>>> > # XXX crt0.o needs to be first for pxeboot(8) to work
>>> > -OBJS= ${BTXCRT}
>>> > +# Can't add it to OBJS w/o pain and suffering
>>> > +LDFLAGS+= ${BTXCRT}
>>> >
>>> > DPADD= ${LDR_INTERP32} ${LIBFIREWIRE} ${LIBI386} ${LIBSA32}
>>> > LDADD= ${LDR_INTERP32} ${LIBFIREWIRE} ${LIBI386} ${LIBSA32}
>>> >
>>> > Anything?
>>> >
>>> > Warner
>>> >
>>> > On Mon, Feb 22, 2021 at 4:17 PM Dean E. Weimer <dweimer at
dweimer.net> wrote:
>>> >
>>> > > On 2021-02-22 10:53 am, Dean E. Weimer wrote:
>>> > > > On 2021-02-22 9:38 am, Dean E. Weimer via
freebsd-stable wrote:
>>> > > >> On 2021-02-22 9:29 am, Warner Losh wrote:
>>> > > >>
>>> > > >>> On Mon, Feb 22, 2021 at 8:24 AM Dean E.
Weimer via freebsd-stable
>>> > > >>> <freebsd-stable at freebsd.org> wrote:
>>> > > >>>
>>> > > >>>> I was able to successfully build and
install BETA2 from source,
>>> > > >>>> however
>>> > > >>>> I am now attempting to upgrade the same
machine to BETA3 buildworld
>>> > > >>>> and
>>> > > >>>> buildkernel complete. installkernel also
completes, but installworld
>>> > > >>>> fails, it appears to not find a file for
i386 boot.
>>> > > >>>>
>>> > > >>>> I do have a customized src.conf
>>> > > >>>> WIHTOUT_FLOPPY="YES"
>>> > > >>>> WITHOUT_FREEBSD_UPDATE="YES"
>>> > > >>>> WITH_BSD_GREP="YES"
>>> > > >>>> WITHOUT_BLUETOOTH="YES"
>>> > > >>>> WITHOUT_PORTSNAP="YES"
>>> > > >>>> WITHOUT_WIRELESS="YES"
>>> > > >>>>
WITHOUT_WPA_SUPPLICANT_EAPOL="YES"
>>> > > >>>> WITHOUT_ATM="YES"
>>> > > >>>> WITHOUT_LPR="YES"
>>> > > >>>> WITHOUT_PPP="YES"
>>> > > >>>> WITHOUT_LLDB="YES"
>>> > > >>>> WITHOUT_FTP="YES"
>>> > > >>>> WITHOUT_RBOOTD="YES"
>>> > > >>>> WITHOUT_TALK="YES"
>>> > > >>>> WITHOUT_NTP="YES"
>>> > > >>>> WITH_ISCSI="YES"
>>> > > >>>> WITH_REPRODUCIBLE_BUILD="YES"
>>> > > >>>> WITHOUT_GNU_DIFF="YES"
>>> > > >>>> WITH_KERNEL_RETPOLINE="YES"
>>> > > >>>>
>>> > > >>>> and customized make.conf
>>> > > >>>> CFLAGS?= -O
>>> > > >>>> CLFAGS+= -pipe
>>> > > >>>> NO_CPU_CFLAGS>>> > >
>>>> MK_WERROR=no
>>> > > >>>>
>>> > > >>>> WITH_CCACHE_BUILD= YES
>>> > > >>>> OPTIONS_SET= LIBEDIT OPTIMIZED_CFLAGS
GSSAPI_NONE
>>> > > >>>> OPTIONS_UNSET= X11 X GUI TLS_SRP AVAHI
GSSAPI_BASE XPM CUPS EXAMPLES
>>> > > >>>> DOCS
>>> > > >>>> WRKDIRPREFIX= /var/ports
>>> > > >>>> PACKAGES= /var/ports/packages
>>> > > >>>> WITH_PKGNG= YES
>>> > > >>>> DEFAULT_VERSIONS= pgsql=13 php=80
apache=2.4 perl5=5.32 bdb=6
>>> > > >>>> mysql=105m
>>> > > >>>> ssl=openssl python=3.9 python3=3.9 gcc=9
linux=c7 samba=4.13
>>> > > >>>>
>>> > > >>>> .if (!empty(.CURDIR:M/usr/src*) ||
!empty(.CURDIR:M/usr/obj*)) &&
>>> > > >>>> !defined(NOCCACHE)
>>> > > >>>>
CC:=${CC:C,^cc,/usr/local/libexec/ccache/world/cc,1}
>>> > > >>>>
CXX:=${CXX:C,^c\+\+,/usr/local/libexec/ccache/world/c++,1}
>>> > > >>>> .endif
>>> > > >>>> .if
(!empty(.CURDIR:M/jails/devel/ROOT/usr/src*) ||
>>> > > >>>>
!empty(.CURDIR:M/jails/devel/ROOT/usr/obj*)) && !defined(NOCCACHE)
>>> > > >>>>
CC:=${CC:C,^cc,/usr/local/libexec/ccache/world/cc,1}
>>> > > >>>>
CXX:=${CXX:C,^c\+\+,/usr/local/libexec/ccache/world/c++,1}
>>> > > >>>> .endif
>>> > > >>>>
>>> > > >>>> Here's the part of where it fails
during the install, src tree was
>>> > > >>>> checked out at commit
1d0d443daa570c8eaa60ec2c2accbe19554a6c12.
>>> > > >>>>
>>> > > >>>> ...
>>> > > >>>> ===> stand/userboot (install)
>>> > > >>>> ===> stand/userboot/test (install)
>>> > > >>>> ===> stand/userboot/userboot_4th
(install)
>>> > > >>>> install -o root -g wheel -m 444 -S
userboot_4th.so
>>> > > >>>> /jails/devel/ROOT/boot/
>>> > > >>>> install -o root -g wheel -m 444
userboot_4th.so.debug
>>> > > >>>> /jails/devel/ROOT/usr/lib/debug/boot/
>>> > > >>>> ===> stand/userboot/userboot_lua
(install)
>>> > > >>>> install -o root -g wheel -m 444 -S
userboot_lua.so
>>> > > >>>> /jails/devel/ROOT/boot/
>>> > > >>>> install -o root -g wheel -m 444
userboot_lua.so.debug
>>> > > >>>> /jails/devel/ROOT/usr/lib/debug/boot/
>>> > > >>>> install -l h -o root -g wheel -m 444
>>> > > >>>> /jails/devel/ROOT/boot/userboot_lua.so
>>> > > >>>> /jails/devel/ROOT/boot/userboot.so
>>> > > >>>> ===> stand/i386 (install)
>>> > > >>>> ===> stand/i386/btx (install)
>>> > > >>>> ===> stand/i386/btx/btx (install)
>>> > > >>>> ===> stand/i386/btx/btxldr (install)
>>> > > >>>> ===> stand/i386/btx/lib (install)
>>> > > >>>> ===> stand/i386/libi386 (install)
>>> > > >>>> ===> stand/i386/mbr (install)
>>> > > >>>> install -o root -g wheel -m 444 mbr
/jails/devel/ROOT/boot/mbr
>>> > > >>>> ===> stand/i386/pmbr (install)
>>> > > >>>> install -o root -g wheel -m 444 pmbr
/jails/devel/ROOT/boot/pmbr
>>> > > >>>> ===> stand/i386/boot0 (install)
>>> > > >>>> install -o root -g wheel -m 444
boot0
>>> > > >>>> /jails/devel/ROOT/boot/boot0
>>> > > >>>> ===> stand/i386/boot0sio (install)
>>> > > >>>> install -o root -g wheel -m 444
boot0
>>> > > >>>> /jails/devel/ROOT/boot/boot0sio
>>> > > >>>> ===> stand/i386/boot2 (install)
>>> > > >>>> objcopy -S -O binary boot1.out boot1
>>> > > >>>> objcopy -S -O binary boot2.out boot2.bin
>>> > > >>>> btxld -v -E 0x2000 -f bin -b
>>> > > >>>>
>>> > >
/jails/devel/ROOT/usr/obj/jails/devel/ROOT/usr/src/amd64.amd64/stand/i386/btx/btx/btx
>>> > > >>>> -l boot2.ldr -o boot2.ld -P 1 boot2.bin
>>> > > >>>> make[6]: exec(btxld) failed (No such
file or directory)
>>> > > >>>
>>> > > >>> Does this happen every time, or only
sometimes? Do you have the
>>> > > >>> complete log? Why we're trying to run
btxld and objcopy in the
>>> > > >>> *INSTALL* phase is likely why (paths are
different between the two)
>>> > > >>>
>>> > > >>> Warner
>>> > > >>>
>>> > > >>>> mail to "freebsd-stable-unsubscribe
at freebsd.org"
>>> > > >>
>>> > > >> Everytime, not sure why I am trying to run btxld
and objcopy in
>>> > > >> install phase, I am simply running the command
make installworld
>>> > > >>
>>> > > >> I do use env variables to change paths, as I
install to a ZFS clone of
>>> > > >> the original system dataset then change boot
setting on pool and
>>> > > >> reboot.
>>> > > >>
>>> > > >> Environment Variables used during build and
install, been doing this
>>> > > >> process ever since I started using ZFS boot on
FreeBSD 9.2.
>>> > > >>
>>> > > >> setenv MAKEOBJDIRPREFIX
/jails/devel/ROOT/usr/obj
>>> > > >> setenv DESTDIR /jails/devel/ROOT
>>> > > >> setenv __MAKE_CONF
/jails/devel/ROOT/etc/make.conf
>>> > > >> setenv SRCCONF /jails/devel/ROOT/etc/src.conf
>>> > > >
>>> > > > I had already started a new build specifying
CPUTYPE=silvermont in
>>> > > > make.conf, as attempt work around. It failed as
well. I did check and
>>> > > > the path above exists on the system
>>> > > >
>>> > > >
>>> > >
:/jails/devel/ROOT/usr/obj/jails/devel/ROOT/usr/src/amd64.amd64/stand/i386/btx/btx
>>> > > > # ll
>>> > > > total 10
>>> > > > -rw-r--r-- 1 root wheel 117B Feb 22 10:13
.depend.btx.o
>>> > > > -rwxr-xr-x 1 root wheel 1.7K Feb 22 10:37 btx*
>>> > > > -rw-r--r-- 1 root wheel 5.4K Feb 22 10:13 btx.o
>>> > > > drwxr-xr-x 2 root wheel 4B Feb 22 10:13
include/
>>> > > >
>>> > > > I have removed my CPU Type specification and will
run a new make and
>>> > > > install capturing full logs so that I can post a
link to full logs.
>>> > >
>>> > > I did a new build and capture output from full buildworld
and
>>> > > installworld, but first I cleared ccache same error was a
result.
>>> > >
>>> > > Here is the entire output along with my make.conf and
src.conf files.
>>> > > https://nextcloud.dweimer.net/index.php/s/YYx6WX7KieatM9L
>>> > >
>>> > >
>>> > > --
>>> > > Thanks,
>>> > > Dean E. Weimer
>>> > > http://www.dweimer.net/
>>> > >
>>> > _______________________________________________
>>> > freebsd-stable at freebsd.org mailing list
>>> > https://lists.freebsd.org/mailman/listinfo/freebsd-stable
>>> > To unsubscribe, send any mail to
"freebsd-stable-unsubscribe at freebsd.org"
Do you guys know which part of my configuration is triggering this
issue, so I can work around it for now? My last build attempt with the
latest updates for the security fixes failed to install even with patch.
--
Thanks,
Dean E. Weimer
http://www.dweimer.net/