URL: <https://savannah.gnu.org/bugs/?63098>
Summary: make-4.3.90 regression of unexpected dependencies in pattern rules with multiple targets Project: make Submitter: slyfox Submitted: Fri 23 Sep 2022 07:05:25 PM UTC Severity: 3 - Normal Item Group: None Status: None Privacy: Public Assigned to: None Open/Closed: Open Discussion Lock: Any Component Version: None Operating System: None Fixed Release: None Triage Status: None _______________________________________________________ Follow-up Comments: ------------------------------------------------------- Date: Fri 23 Sep 2022 07:05:25 PM UTC By: Sergei Trofimovich <slyfox> Initially noticed the problem in OpenSP-1.5.2 build failure. Here is a minimised example: # cat Makefile all: foo.a foo.b %.a %.b %.c: %.d touch $*.a touch $*.b touch $*.c To trigger it we need to have up-to-date foo.d, foo.a and foo.b: $ touch foo.d; touch foo.a; touch foo.b # good make-4.3: $ make-4.3 make: Nothing to be done for 'all'. # problematic make-4.3.90: $ make-4.3.90 touch foo.a touch foo.b touch foo.c Note how new make version decided it needs to do extra work. Looks like a bug. A bit of background on original bug context (in case I extracted it incorrectly): OpenSP-1.5.2 uses similar pattern in https://sourceforge.net/p/openjade/code/HEAD/tree/trunk/sp/lib/Makefile.am # ... %.h %.cxx %.rc: %.msg [ ! -f $(top_srcdir)/msggen.pl ] || $(PERL) -w $(top_srcdir)/msggen.pl $(MSGGENFLAGS) $< OpenSP's release tarball ships only .h and .rc files (but not .cxx): lib/WinInetStorageMessages.h lib/WinInetStorageMessages.msg lib/WinInetStorageMessages.rc. It looks like nothing requires .cxx files in that directory. I only noticed the failure because my sandbox environment did not have perl and caused build failure of make upgrade to 4.3.90. _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?63098> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/