<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-legacy-support.
</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/f1becf1234ee8065e8c8c8be8d9d0d87435eeeee">https://github.com/macports/macports-legacy-support/commit/f1becf1234ee8065e8c8c8be8d9d0d87435eeeee</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit f1becf1234ee8065e8c8c8be8d9d0d87435eeeee
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Sat Nov 2 18:49:19 2024 -0700
<span style='display:block; white-space:pre;color:#404040;'> Makefile: Fix superfluous library rebuilds.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> The fix for parallel builds made directories separate targets, but
</span><span style='display:block; white-space:pre;color:#404040;'> directory dependencies need to be order-only, since their mtimes are
</span><span style='display:block; white-space:pre;color:#404040;'> updated whenever files are added, removed, or renamed. Failure to do
</span><span style='display:block; white-space:pre;color:#404040;'> this resulted in intermittent unnecessary rebuilds of libraries when
</span><span style='display:block; white-space:pre;color:#404040;'> building tests. When building directly in the repo, this is a
</span><span style='display:block; white-space:pre;color:#404040;'> harmless waste of time, but when building in the MacPorts context,
</span><span style='display:block; white-space:pre;color:#404040;'> such rebuilds fail due to ownership and permission issues. This
</span><span style='display:block; white-space:pre;color:#404040;'> change makes directories order-only dependencies, thereby ignoring
</span><span style='display:block; white-space:pre;color:#404040;'> their mtimes.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This also removes unnecessary directory dependencies from the tests
</span><span style='display:block; white-space:pre;color:#404040;'> that don't use the library.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> TESTED:
</span><span style='display:block; white-space:pre;color:#404040;'> Ran tests on all platforms. Intermittent test failures are now gone.
</span>---
Makefile | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/Makefile b/Makefile
</span><span style='display:block; white-space:pre;color:#808080;'>index 44a7369..37be43b 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/Makefile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/Makefile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -328,14 +328,14 @@ $(SOBJLIST): $(ALLSLIBOBJS)
</span> $(BUILDLIBDIR) $(DESTDIR)$(LIBDIR):
$(MKINSTALLDIRS) $@
<span style='display:block; white-space:pre;background:#ffe0e0;'>-$(BUILDDLIBPATH): $(ALLDLIBOBJS) $(BUILDLIBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(BUILDDLIBPATH): $(ALLDLIBOBJS) | $(BUILDLIBDIR)
</span> $(CC) $(BUILDDLIBFLAGS) $(ALLLDFLAGS) $(ALLDLIBOBJS) -o $@
<span style='display:block; white-space:pre;background:#ffe0e0;'>-$(BUILDSYSLIBPATH): $(ALLSYSLIBOBJS) $(BUILDLIBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(BUILDSYSLIBPATH): $(ALLSYSLIBOBJS) | $(BUILDLIBDIR)
</span> $(CC) $(BUILDSYSLIBFLAGS) $(ALLLDFLAGS) $(SYSREEXPORTFLAG) \
$(ALLSYSLIBOBJS) -o $@
<span style='display:block; white-space:pre;background:#ffe0e0;'>-$(BUILDSLIBPATH): $(SOBJLIST) $(BUILDLIBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(BUILDSLIBPATH): $(SOBJLIST) | $(BUILDLIBDIR)
</span> $(RM) $@
$(AR) $(BUILDSLIBFLAGS) $@ $$(cat $<)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -367,7 +367,7 @@ $(XTESTOBJS_C): %.o: %.c $(ALLHEADERS)
</span> $(CC) -c -std=c99 -fno-builtin -I$(SRCINCDIR) $(CFLAGS) $< -o $@
# The xtests don't require the library
<span style='display:block; white-space:pre;background:#ffe0e0;'>-$(XTESTPRGS_C): %: %.o $(BUILDLIBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(XTESTPRGS_C): %: %.o
</span> $(CC) $(XTESTLDFLAGS) $< -o $@
# The "darwin_c" tests need the -fno-builtin option with some compilers.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -376,7 +376,7 @@ $(MANTESTOBJS_C): %.o: %.c $(ALLHEADERS)
</span> $(CC) -c -std=c99 -fno-builtin -I$(SRCINCDIR) $(CFLAGS) $< -o $@
# Currently, the manual C tests don't require the library
<span style='display:block; white-space:pre;background:#ffe0e0;'>-$(MANTESTPRGS_C): %: %.o $(BUILDLIBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(MANTESTPRGS_C): %: %.o
</span> $(CC) $(MANTESTLDFLAGS) $< -o $@
# But the manual C++ tests *do* require the library
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -471,15 +471,15 @@ install-headers:
</span>
install-lib: install-dlib install-slib install-syslib
<span style='display:block; white-space:pre;background:#ffe0e0;'>-install-dlib: $(BUILDDLIBPATH) $(DESTDIR)$(LIBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+install-dlib: $(BUILDDLIBPATH) | $(DESTDIR)$(LIBDIR)
</span> $(INSTALL_PROGRAM) $(BUILDDLIBPATH) $(DESTDIR)$(LIBDIR)
$(POSTINSTALL) -id $(DLIBPATH) $(DESTDIR)$(DLIBPATH)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-install-syslib: $(BUILDSYSLIBPATH) $(DESTDIR)$(LIBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+install-syslib: $(BUILDSYSLIBPATH) | $(DESTDIR)$(LIBDIR)
</span> $(INSTALL_PROGRAM) $(BUILDSYSLIBPATH) $(DESTDIR)$(LIBDIR)
$(POSTINSTALL) -id $(SYSLIBPATH) $(DESTDIR)$(SYSLIBPATH)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-install-slib: $(BUILDSLIBPATH) $(DESTDIR)$(LIBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+install-slib: $(BUILDSLIBPATH) | $(DESTDIR)$(LIBDIR)
</span> $(INSTALL_DATA) $(BUILDSLIBPATH) $(DESTDIR)$(LIBDIR)
install-tiger: $(TIGERBINS)
</pre><pre style='margin:0'>
</pre>