Index | Thread | Search

From:
Ingo Schwarze <schwarze@usta.de>
Subject:
Re: make: -j without params
To:
Marc Espie <marc.espie.openbsd@gmail.com>
Cc:
tech@openbsd.org
Date:
Wed, 5 Mar 2025 20:07:26 +0100

Download raw body.

Thread
Hi Marc,

Marc Espie wrote on Sun, Feb 23, 2025 at 07:58:02PM +0100:

> I just wanted -j (nothing)
> to be a shorthand to "hey give me cpuonline"

In addition to what others said, i disagree strongly with that basic idea.

Having an option that takes an optional argument is atrocious user
interface design because it tends to cause parsing ambiguities and
confusion among users, and it's hard to document in a way that is
both concise and clear.

I'm not alone with that opinion, POSIX also says so:

https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap12.html#tag_12_02

  Guideline 7:
    Option-arguments should not be optional.

So i strongly oppose making an option argument optional unless there are
unusually compelling reasons, which is not the case here.

Given that POSIX discourages optional option arguments in general,
i think that even if there were unusually good reasons, i would
still oppose adding an optional option argument to a POSIX utility,
unless the POSIX standard itself makes an exception from its own rule
and requires a specific option argument to be optional for a specific
utility.

The POSIX specification of make(1),

  https://pubs.opengroup.org/onlinepubs/9799919799/utilities/make.html ,

requires the -j maxjobs option argument to be mandatory, so
supporting -j without an option argument would not only be a POSIX
extension, but a POSIX violation, which is quite a non-starter.

> if it's complicated I won't pursue it further

That sounds more reasonable to me.

Yours,
  Ingo