Thanks for the feedback!

1. -o FILE, --old-file=FILE, --assume-old=FILE
This could theoretically work, maybe, but it is poor UX. The user should
not involve the user needing to think about which of the prerequisites to
ignore. They should be able to just say "I want to run this makefile
command/goal/target, and I want to just ignore any and all prerequisites on
it." They should simply be able to use the same flag every time, on any
goal, with the same behavior.

Also note that some prerequisites are not references to files, but are
actually phony targets.

2. Extensibility
I think this is an important enough and common enough use case that core
`make` should have it.

3. What this would look like in practice

```make
my-goal: prereq1 prereq2 prereq3
   BODY
```

```sh
make my-goal --ignore-prerequisites
```

When the user does this, it should run `my-goal` and completely ignore
`prereq1 prereq2 prereq3`.

---

Example use case:

I've had big, deeply nested builds that involve artefact downloads that
take minutes to download, and then pipelines need to re-run after that. And
sometimes it can be difficult for the system to know whether it needs to
download the artefact or not. For example, imagine it is hosted at
example.com/release/latest. But there is no way to check the hash of that
release. If there was, then I could store the hash locally, and I could
check if the hash of my local artefact matched that of the release online.
But in systems where the hash is not hosted, my Makefile will have to first
download it, which can take a long time for some of the releases I'm
talking about (100s of MB or several gigs). So for me and my fellows, the
easy way around this is to go in and just temporarily remove the prereqs,
run what we need, and remember to add the prereqs back later. But this is
poor UX and error prone.

Don't need to focus too much on this 1 use case. It is just an example.
There are many such use cases, and rather than having to come up with an ad
hoc way to solve every situation, the easiest thing is to just have an
--ignore-prerequisites flag.



On Mon, Nov 24, 2025 at 2:12 AM Basile Starynkevitch <
[email protected]> wrote:

> On Mon, 2025-11-24 at 07:47 +0100, Basile Starynkevitch wrote:
> > On Sun, 2025-11-23 at 15:33 -0500, Joe Flack wrote:
> > > Hi!
> > >
> > > I have a feature request. Sorry, I was told to mail here, as opposed
> to a different list or a ticketing system.
> > >
> > > Me and others using make have frequently wanted this simple feature:
> > >
> > > "Run a goal, but ignore prerequisites. Act as if they don't exist."
> > >
> > > Please consider adding!
> >
> > Well, if a prerequisite don't exist, how can a given rule be fired?
> >
> > However, make --help tells us:
> >   -o FILE, --old-file=FILE, --assume-old=FILE
> >                               Consider FILE to be very old and don't
> remake it.
> >
> > Isn't it equivalent to the feature you ask?
> >
> > Otherwise, at least give a use case with sample GNUmakefile (e.g. for
> POSIX system)
>
> Notice also that GNU make 4.4 can be extended with Python or Guile.
> Perhaps coding that feature in them is easier?
> --
>
> Basile STARYNKEVITCH                    basile AT starynkevitch DOT net
> 8 rue de la Faïencerie
> http://starynkevitch.net/Basile/
> 92340 Bourg-la-Reine                         https://github.com/bstarynk
> France
> https://github.com/RefPerSys/RefPerSys
>                   https://orcid.org/0000-0003-0908-5250
>

Reply via email to