[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: building groff with GNU Make and *BSD Make

From: Ingo Schwarze
Subject: Re: building groff with GNU Make and *BSD Make
Date: Tue, 29 Mar 2022 05:31:57 +0200

Hi Larry,

Larry McVoy wrote on Mon, Mar 28, 2022 at 12:42:15PM -0700:
> On Tue, Mar 29, 2022 at 06:26:14AM +1100, G. Branden Robinson wrote:
>> At 2022-03-28T12:11:32-0700, Larry McVoy wrote:

>>> I'm a little late, are you guys trying to make things build with
>>> different make(1) implementations?

>> Yes.  Apparently that has worked in the past and does again after Ingo's
>> commits of the past week.

>>> Because that is the path to heartache.

>> I'm learning that.  :-|

> And you will _keep_ learning it, over and over.

You are exaggerating.  Yes, the POSIX specification of make(1) is
not great and it is hard to use for some tasks that occur in *very*
complicated build systems.

But the tasks that the groff build system needs to perform are
simple throughout, and it is not really a problem to perform them
in a portable way.

>>> Just pick one, we picked GNU make, not my favorite by any stretch but
>>> it runs everywhere.  Build the makefiles for that make and call it a
>>> day.

>> Some people will sign a thousand EULAs before touching one copylefted
>> byte.

No doubt all kinds of people exist, but i'm not sure i personally know
any people who would subscribe to that particular philosophy.

>> That doesn't describe Ingo, but it does describe some of the
>> people he works with.

No, that is not true.  All OpenBSD developers by far prefer the GPL
to any kind of proprietary EULA, and the same applies to all FreeBSD,
NetBSD, DragonFly, and Illumos developers i have been working with.
Of course i can't speak for all *BSD developers because there are many
i never met, but finding one who prefers EULAs over the GPL would seem
like a surprising and rather weird exception to me.

> "And that's why they can't have nice things".

This is badly misleading.

I'm not saying "if GNU troff required gmake(1) to build, that would
mean GNU troff would have to be deleted from the OpenBSD ports tree".
Quite to the contrary, a very rough estimate is that out of the about ten
thousand packages in the OpenBSD ports tree, about one thousand already
require gmake(1) and use it to build as we speak.  So if some project
decides "we only support gmake(1)" and if they make their Makefiles so
non-portable that gmake(1) is indeed required - no matter whether they
have good reasons or merely act in a thoughtless way - then of course
we use gmake(1).

What i'm saying is "GNU troff has no good reason to require gmake(1),
everything can be done just fine in a portable way, and when portability
is possible with no significant downside, then portability should
be provided."  Or to say the same in different words: Do not go the
"non-portable, GNU only" way unless there is a significant reason to.

> If the openbsd people want to be that weird, they get to maintain
> their own port of groff.

Guess what?  That is *exactly* what i have already been doing for about
a decade: maintaining our port of groff, and other OpenBSD developers
have been doing that for another 15 years before i took over, and other
BSD projects have been doing that for several more years before OpenBSD
was forked from NetBSD and from 4.4BSD, so much so that in some respects,
old BSD releases provide more information about groff history than even
the official groff git repository.

That maintenance work includes feeding as much as possible back upstream
and working hard to minimize our local patches.  A small number of small
local patches that are inadequate for upstream are unavoidable, but these
local patches will *shrink* rather than grow with the next groff release:
the current official OpenBSD groff-1.22.4 patches +248 -209 lines in 7
files, including several bugfixes that have also been committed upstream.
My work-in-progress port of the git head patches +132 -126 lines in five
files, including stuff like setting the operating system name in manual
page footers and the like.  I hope to shrink patches even further in
the future.

> groff itself is copylefted, is it not?  So if we're already over the
> copyleft "cliff", how does GNU make screw things up?

Copyleft software can be included in the ports tree of *any* BSD project,
there is no problem with that at all, so GNU make does not screw things
up in that sense.  In fact, GNU make is available in the ports trees of
all the BSD projects.

OpenBSD has a policy to not include any new GPL software into the
OpenBSD base system as long as there is any way to avoid it, but that
is completely unrelated to all that we are discussing here.

> The idea that you, someone working on groff for free, have to jump 
> through more hoops to keep things going because of fear-of-copyleft,
> is just insane.  Completely unreasonable, bigger fish to fry.

Not jump through hoops, just adhere to standard portability practice.

What next?  Build only with Bash, GNU awk, GNU sed, GNU grep,
GNU mkdir, Bison, GCC, GNU ld, GNU ar, and glibc?  How is not being
gratuitiously non-portable with respect to make(1) different from not
being gratuitiously non-portable in any other respect?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]