Bug in make setting wrong MAKESYSPATH
Thomas Mueller
mueller6722 at twc.com
Tue May 23 06:55:02 UTC 2017
> On Sun, May 21, 2017 at 1:54 AM, Thomas Mueller <mueller6722 at twc.com> wrote:
> > I tried building ports, starting with ports-mgmt/synth, on HEAD (12-current) and ran into difficulties with syntax error in bsd.compiler.mk .
> > With PORTSDIR on another partition, mounted as /BETA1, I got these errors, but not when I null-mounted /BETA1/usr/ports as /usr/ports.
> > I shouldn't have to resort to this kludge, didn't have to in the recent past.
> > This bug shows in both 11.0-STABLE and 12.0-CURRENT.
> > I looked into "man make" and found that make got the wrong path for MAKESYSPATH, setting to /BETA1/usr/share/mk instead of what it should be, /usr/share/mk .
> > Going into /BETA1/usr/ports/archivers/zip (for a short and simple example),
> > make all-depends-list produced
> > sh: Syntax error: ")" unexpected
> > make: "/BETA1/usr/share/mk/bsd.compiler.mk" line 52: warning: "echo 4.0.0 4.0.0) | awk -F. '{print $1 * 10000 + $2 * 100 + $3;}'" returned non-zero status
> > sh: Syntax error: ")" unexpected
> > make[1]: "/BETA1/usr/share/mk/bsd.compiler.mk" line 52: warning: "echo 4.0.0 4.0.0) | awk -F. '{print $1 * 10000 + $2 * 100 + $3;}'" returned non-zero status
> > /BETA1/usr/ports/ports-mgmt/pkg
> > make -m /usr/share/mk all-depends-list produces
> > /BETA1/usr/ports/ports-mgmt/pkg
> > This looks like a bug that ought to be fixed, though there is a workaround using "make -m /usr/share/mk ..." every time, or presumably, setting
> > MAKESYSPATH=/usr/share/mk
> > in the environment.
> > Should I file a bug report?
> > I could get much more verbose outputs when there are more dependencies, such as in /BETA1/usr/ports/ports-mgmt/synth, or more so,
> > /BETA1/usr/ports/www/seamonkey
> > I also noticed that in newer versions of FreeBSD, /usr/share/mk/bsd.compiler.mk has greatly increased in size (not a bug. except when "make" goes to the wrong MAKESYSPATH.
> > Maybe add in .cshrc and .profile
> > MAKESYSPATH=/usr/share/mk
> ?
> Hi Tom,
> make isn't at fault here as much as there's something else leaking
> bsd.compiler.mk into the ports build. That's not supposed to happen.
> Are you including any bsd.*.mk or src.*.mk files from /etc/make.conf ,
> /etc/src.conf , etc?
> Cheers,
> -Ngie
I looked through /etc/make.conf and /etc/src.conf, and there were no explicit references to any .mk files.
So I don't know what could have brought in /BETA1/usr/share/mk/bsd.compiler.mk .
from Simon J. Gerraty:
> The default value for MAKESYSPATH is ".../share/mk:/usr/share/mk" which
> is geared to building src/, there was some to and fro over that value
> when we first started using bmake, but that's what we settled on.
> Presumably /BETA1/usr/share/mk exists?
> If so, it will be found via .../share/mk if you start somewhere under
> /BETA1/usr/ports
> > This bug shows in both 11.0-STABLE and 12.0-CURRENT.
> Not a bug - working as intended, which doesn't mean it is doing what you
> want.
> You can of course set MAKESYSPATH as you wish, but of course
> /usr/share/mk would not be correct for building src/
/BETA1 is a mount point for a partition with an older FreeBSD 11-current (August 2015) installation.
Ports, doc, src11 (src tree for 11-STABLE), and src (src tree for HEAD) have been updated since then.
What if I had a NetBSD installation, or no BSD installation, on the partition where src and ports trees are located?
It seems to me that MAKESYSPATH should match the host building system FreeBSD version.
I also have /pkgsrc and /netbsd-HEAD/usr/src on that same partition mounted at /BETA1, and it didn't seem to have any adverse effect on building NetBSD system or packages.
For FreeBSD, besides setting MAKESYSPATH, I could mount_nullfs /BETA1/usr/ports at /usr/ports, and
/BETA1/usr/src or /BETA1/usr/src11 at /usr/src .
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
Tom
More information about the freebsd-current
mailing list