Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 08 Feb 2021 19:08:10 +0200
From:      "Oleg V. Nauman" <oleg@theweb.org.ua>
To:        freebsd-questions@freebsd.org
Subject:   Re: "make" in ports tells me "requires kernel source files in SRC_BASE=/usr/src." despite an up-to-date /usr/src
Message-ID:  <2281312.bDOn7JOVgO@sigill.theweb.org.ua>
In-Reply-To: <601d6f51-e3e5-a780-332a-95648fe87168@yuripv.dev>
References:  <CADqw_gKG6ovTuN7bZvYy7PCydfCXH4M2fw68YLmLvZhxi-g2xw@mail.gmail.com> <601d6f51-e3e5-a780-332a-95648fe87168@yuripv.dev>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2021 M02 8, Mon 09:01:26 EET Yuri Pankov wrote:
> Michael Schuster wrote:
> > Hi,
> > 
> > again, apologies if this is not the right place to ask this question ...
> > 
> > I've done a fair amount of googling, without relevant findings.
> > 
> > $Subject says all - both the port I'm trying to build as well as /usr/src
> > are up-to-date (one using "svn up", the other "git pull"), I'm also
> > running
> > the kernel that I built from those sources.
> > 
> > uname:
> > FreeBSD host 14.0-CURRENT FreeBSD 14.0-CURRENT #12
> > main-n244657-344f1083e12: Sat Feb  6 12:17:33 CET 2021
> > root@host:/usr/obj/usr/src/amd64.amd64/sys/GENERIC
> > 
> >   amd64
> 
> FWIW, I am not seeing the issue.  Having said that, the trailing dot
> after /usr/src in that error message looks suspicious, it is not there
> in /usr/ports/Mk/Uses/kmod.mk; was that an exact copy/paste?  If yes,
> check if you are (incorrectly) setting SRC_BASE somewhere?

 It is a bug in /etc/rc.d/linux script

linux_start()
{
        local _emul_path _tmpdir
        _emul_path="$(sysctl -n compat.linux.emul_path)"
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  Attempt to use of "sysctl -n compat.linux.emul_path" value when it is not 
available because we are loading 'linux64.ko' later. It means that _emul_path 
contains empty data.


        load_kld -e 'linux(aout|elf)' linux
        case `sysctl -n hw.machine_arch` in
        amd64)
                load_kld -e 'linux64elf' linux64
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  Actual load of linux64 kernel module 

.................................
and later..


        if checkyesno linux_mounts_enable; then
                mount -o nocover -t linprocfs linprocfs "${_emul_path}/proc"
                mount -o nocover -t linsysfs linsysfs "${_emul_path}/sys"
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 _emul_path is empty so it will run
mount -o nocover -t linsysfs linsysfs "/sys"
while 
# ls -dl /sys
lrwxr-xr-x  1 root  wheel  11 Jun  4  2018 /sys -> usr/src/sys
symlink to /usr/src/sys
It will effectively hide actual content of /usr/src/sys if you have 
linux_enable="YES", causing build failure of any port with kernel modules. 

Thank you






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2281312.bDOn7JOVgO>