Re: Module compiles looking in /usr/src when alternate src tree is in use

From: Julian Elischer <julian_at_freebsd.org>
Date: Mon, 16 Apr 2018 18:58:47 +0800
On 11/4/18 8:29 am, Rodney W. Grimes wrote:
>> Rodney W. Grimes <freebsd-rwg_at_pdx.rh.CN85.dnsmgr.net> wrote:
>>
>>> I am having a compile time issue for a patched that compiled fine on my
>>> r329294 system, but now failes to compile with what looks like a wrong
>>> header being included.
>> You may find it helpful to do something like:
>>
>> make -dv -C sys/modules/vmm -V CFLAGS > /tmp/dvo 2>&1
>> egrep ':.PARSE|/usr/src/sys' /tmp/dvo | grep -B1 usr/src | more
>>
>> The arg to -V doesn't matter btw.
>> You could narrow that down if you know what var -I/usr/src/sys is in
>> (probably CFLAGS but you never know)
>> the above should help find the makefile that is introducing the bogus -I
>>
> Thank you, that does help narrow it down:  (I backed up a vew lines
> from the first place I saw src/.)
>
> ...
> Global:.PARSEFILE = bsd.kmod.mk
> Global:.PARSEDIR = /usr/src-topo/share/mk
> Global:.PARSEFILE = bsd.kmod.mk
> Result[] of :U is "/usr/src/sys"
> Result[] of :U is "/usr/src/sys"
> Global:SYSDIR = ${:U/usr/src/sys:tA}
> Global:.PARSEDIR = /usr/src-topo/share/mk
> Global:.PARSEFILE = bsd.kmod.mk
> Result[] of :U is "/usr/src/sys"
> Applying[] :t to "/usr/src/sys"
> Result[] of :t is "/usr/src/sys"
> Result[] of :U is "/usr/src/sys"
> Applying[] :t to "/usr/src/sys"
> Result[] of :t is "/usr/src/sys"
> Result[] of :U is "/usr/src/sys"
> Applying[] :t to "/usr/src/sys"
> Result[] of :t is "/usr/src/sys"
> Global:.MAKE.MAKEFILES = /usr/src-topo/share/mk/sys.mk /usr/src-topo/share/mk/local.sys.env.mk /usr/src-topo/share/mk/src.sys.env.mk /usr/src-topo/share/mk/bsd.mkopt.m
> k /usr/src-topo/share/mk/src.sys.obj.mk /usr/src-topo/share/mk/auto.obj.mk /usr/src-topo/share/mk/bsd.suffixes.mk /usr/src-topo/share/mk/local.sys.mk /usr/src-topo/sha
> re/mk/src.sys.mk /usr/src-topo/sys/modules/vmm/Makefile /usr/src-topo/share/mk/bsd.kmod.mk /usr/src/sys/conf/kmod.mk
>                                                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^
> Thats gona bust something some day....
>
> Global:.PARSEDIR = /usr/src/sys/conf
> Global:.PARSEFILE = kmod.mk
> Global:.INCLUDEDFROMDIR = /usr/src/sys/conf
> Oh my!  Uggggg
>
>
> So something in bsd.kmod.mk is going very wrong... it looks like it
> starts to pull all sorts of stuff from /usr/src/sys!

I seem to remember that there is code in the Makefiles that looks for 
the sys directory.
I believe it can be directed to use a directory but in its absence it 
looks at some well
known locations, which would probably fail if there is already a 
DIFFERENT tree in /usr/src.
>
>>> I have wrapped the long line so I can point to a difference between
>>> r329294 and r332262 make log of this file.
>>>
>>> r329294 make output:
>>>
>>> cc  -O2 -pipe -DVMM_KEEP_STATS -DSMP  -fno-strict-aliasing -Werror -D_KERNEL \
>>> -DKLD_MODULE -nostdinc  -I/usr/src-topo/sys/amd64/vmm \
>>> -I/usr/src-topo/sys/amd64/vmm/io -I/usr/src-topo/sys/amd64/vmm/intel \
>>> -I/usr/src-topo/sys/amd64/vmm/amd -I. -I/usr/src-topo/sys -fno-common  \
>>>                                         ^^^^^^^^^^^^^^^^^ this is what I would expect
>>
Received on Mon Apr 16 2018 - 08:58:59 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:15 UTC