From b3ff8416afaf05f726b8a7f0eda26e93bc2a2916 Mon Sep 17 00:00:00 2001 From: eileencodes Date: Wed, 1 May 2024 15:17:20 -0400 Subject: [PATCH] Fix macos bug deleting too many files Since #10209 we've been noticing that on macos after running `make clean` the `coroutine/arm64/Context.S` file is missing, causing subsequent make calls to fail because `Context.S` is needed to build `Context.o`. The reason this is happening is because macos is case-insensitive so the `.s` looks for `coroutine/arm64/Context.s` and finds `coroutine/arm64/Context.s`. This does not happen on linux because the filesystem is case sensitive. I attempted to use `find` because it is case sensitive regardless of filesystem, but it was a lot slower than `rm` since we can't pass multiple file names the same way to `find`. Reverting this small part of #10209 fixes the issue for macos and it wasn't clear that those changes were strictly necessary for the rest of the PR. We changed the original code to use `rm` instead of `delete` because it is not standarized on POSIX. --- template/Makefile.in | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/template/Makefile.in b/template/Makefile.in index 813a727cf9f4db..22148e7feaba94 100644 --- a/template/Makefile.in +++ b/template/Makefile.in @@ -493,9 +493,8 @@ clean-local:: enc/encinit.c enc/encinit.$(OBJEXT) $(pkgconfig_DATA) \ ruby-runner.$(OBJEXT) ruby-runner.h \ || $(NULLCMD) - @$(RM) $(ALLOBJS:.$(OBJEXT)=.bc) - @$(RM) $(ALLOBJS:.$(OBJEXT)=.i) - @$(RM) $(ALLOBJS:.$(OBJEXT)=.s) + $(Q)find . ! -type d \( -name '*.bc' -o -name '*.[is]' \) -exec rm -f {} + || true + distclean-local:: $(Q)$(RM) \