John Marino is working on a very good idea: bringing bmake into DragonFly as a replacement for the current ‘make’. bmake is going through more active development and apparently also in use/will be used? on FreeBSD, so syncing up with the same make flavor as FreeBSD and NetBSD will help everyone. It’ll also remove the problem where you ‘make’ everything in DragonFly, except pkgsrc packages which you ‘bmake’. It’s not changed over yet.
(What does OpenBSD use for make?)
OpenBSD uses heavily-modified pmake which is under active development (recently) by Marc Espie (see his slides http://www.openbsd.org/papers/eurobsd2012/espie-dpb/mgp00010.html).
pkgsrc will continue to use “bmake”. the system make needs the files in /usr/share/mk while bmake needs the files in /usr/pkg/share/mk.
The only way to converge to a single make would be to import pkgsrc *.mk files into base and I doubt we will do that.
Aw, poop. I wanted to have it be the same tool use.
Could the DragonFly bmake be patched up to just look in both places?
Simon Gerraty, the author of bmake, has given me a diff that should allow one tool to be used in both places.
I’m not sure how life will be much easier with this, other than if you type “make” instead of “bmake” in a pkgsrc directory, the intended action will occur.
We can visit whether or not bmake shouldn’t not be built by default or if we need to bootstrap pkgsrc at all later. those are relatively minor issues.
The difference between typing ‘bmake’ and ‘make’ may seem minor, but it’s significant. There’s no obvious clues in the system about which one is the right one to type, when. Most of the pkgsrc documentation out there is for NetBSD, and says only “make”. If you do pick the wrong one, you get a lot of console spew and no helpful error message.
There’s lots of other fiddly details about pkgsrc; pkgsrc works but the amount of steps to take lead to a death by a thousand cuts, where what you want to do and the procedure you have to do to get there seem totally separate. See, for instance, upgrading packages. Lots of choices, none of them totally reliable and simple. The basic method, (b)make replace, doesn’t even work.
Ironically, the “console spew” is the obvious clue that the wrong make was picked. The cause of the spew is basically that our legacy make was frozen while FreeBSD, OpenBSD, and NetBSD continued to update their make. The spew was caused by unknown modifiers like “:u”. It would have been worse to add “:u” support because then it wouldn’t be obvious the wrong make was invoked.
Replacing system make with bmake won’t solve pkgsrc idiosyncrasies though.