bug-make
[Top][All Lists]
Advanced

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

[bug #63039] implicit rule recursion is forbidden


From: Brami
Subject: [bug #63039] implicit rule recursion is forbidden
Date: Thu, 8 Sep 2022 22:02:54 -0400 (EDT)

URL:
  <https://savannah.gnu.org/bugs/?63039>

                 Summary: implicit rule recursion is forbidden
                 Project: make
               Submitter: et7f3
               Submitted: ven. 09 sept. 2022 02:02:53 UTC
                Severity: 3 - Normal
              Item Group: Bug
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
       Component Version: 4.3
        Operating System: POSIX-Based
           Fixed Release: None
           Triage Status: None


    _______________________________________________________

Follow-up Comments:


-------------------------------------------------------
Date: ven. 09 sept. 2022 02:02:53 UTC By: Brami <et7f3>
Hello,

I know `mkdir -p` but wanted to take advantage of make to concurrently produce
folder.

I builded this snippet:

```mak
build/:
        mkdir "$@"

.SECONDARY: build/DEV/a/b/c/d/e/f/g/h/k/ build/DEV/a/b/c/d/e/f/g/h/
build/DEV/a/b/c/d/e/f/g/

.SECONDEXPANSION:
build/%/: | $$(dir build/%)
        mkdir "$@"
```

(I didn't listed all in .SECONDARY but it shouldn't matter for the issue.)

I tried to build `build/DEV/a/b/c/d/e/f/g/h/k/l/`
here the implicit rule will try to build `build/DEV/a/b/c/d/e/f/g/h/k/` but it
didn't find any rule to this target because they are explicitly disabled.

src/implicit.c
```C
      if (rule->in_use)
        {
          DBS (DB_IMPLICIT, (_("Avoiding implicit rule recursion.\n")));
          continue;
        }
```

The workaround is to myself enumerate different level so it is considered as
another rule.

I tried to blame this but it appear in "Initial revision" implicit.c of
b9c983dee3c6aff460532d9b4fd7aaea079c672b

What is added only to prevent `%: %` ? or maybe weird loop: `a%: b%` and `b%:
aa%`. I think my case is fine because length only reduce so it will always
finish.







    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?63039>

_______________________________________________
Message posté via Savannah
https://savannah.gnu.org/




reply via email to

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