Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 May 2017 08:56:08 +0000
From:      "Thomas Mueller" <mueller6722@twc.com>
To:        freebsd-current@freebsd.org
Cc:        Ngie Cooper <yaneurabeya@gmail.com>, "Simon J. Gerraty" <sjg@juniper.net>
Subject:   Re: Bug in make setting wrong MAKESYSPATH
Message-ID:  <BF.E8.25473.8AA45295@dnvrco-omsmta03>
References:  <4E.66.25473.9D551295@dnvrco-omsmta03> <81057.1495500066@kaos.jnpr.net> <CAGHfRMCC6KzywEL==_=EoH_JxmQQu2aRsU-tag8pa5M-1UD%2Bcw@mail.gmail.com> <E3.CD.25473.3CCD3295@dnvrco-omsmta03> <95058.1495555282@kaos.jnpr.net>

next in thread | previous in thread | raw e-mail | index | archive | help
>From Simon J. Gerraty:

> Thomas Mueller <mueller6722@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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BF.E8.25473.8AA45295>