Re: Bug in make setting wrong MAKESYSPATH

From: Thomas Mueller <mueller6722_at_twc.com>
Date: Wed, 24 May 2017 08:56:08 +0000
>From Simon J. Gerraty:

> Thomas Mueller <mueller6722_at_twc.com> wrote:
> > It seems to me that MAKESYSPATH should match the host building system
> > FreeBSD version.
        
> Which would only be correct if building the same version of FreeBSD as
> is running on the host.
> Many folk work on multiple branches on the same machine.

I have even built FreeBSD i386 from FreeBSD amd64, and vice versa.

Even when the user tracks only one branch, such as HEAD, one or more /usr/share/mk files may have been updated since the last build, and therefore not in sync with the build host's /usr/share/mk .

For building the system, MAKESYSPATH should be $SRCDIR/share/mk , to be in sync.

I tried "make -V MAKESYSPATH" from several SRCDIRs, and that's what happened.

Like this:

$ make -C /usr/src -V MAKESYSPATH
/usr/src/share/mk
$ make -C /freebsd-base-graphics -V MAKESYSPATH
/freebsd-base-graphics/share/mk

> Thus for anyone working on src/ there is no guarantee that /usr/share/mk
> is even remotely correct.
        
> So you either buy into the idea of using a wrapper script and canned
> .env file for each tree (that's what I do;
> http://www.crufty.net/sjg/docs/sb-tools.htm) to ensure correct
> settings per tree (whether FreeBSD, NetBSD, ...), or you compromise and
> have 'make' itself try to find the "correct" share/mk for whereever it is.
> This is why the default MAKESYSPATH starts with .../share/mk

> > Now I believe the correct syntax for setting MAKESYSPATH in .cshrc and .profile would be
> > export MAKESYSPATH=/usr/share/mk  # for .profile, or
> > setenv MAKESYSPATH /usr/share/mk  # for .cshrc

Something like that might be appropriate for ports but not for building the system.

So maybe I have to set MAKESYSPATH every time I am in ports, don't know if this would work from /etc/make.conf (need to experiment).

I wonder what would happen if there is no FreeBSD installation at all on partition where ports tree is located.

> Yes, but requires you to keep /usr/share/mk in sync with whatever you a
> building, tricky if you build head, stable/10 and stable/11 on the
> same box.

I don't think you have to do that, since I find that MAKESYSPATH becomes $SRCDIR/share/mk .

> sjg


Tom
Received on Wed May 24 2017 - 06:57:21 UTC

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