Steps:
``` git clone git@github.com:OpenSmalltalk/opensmalltalk-vm cd opensmalltalk-vm git checkout 202112201228 cd building/macos64ARMv8/squeak.cog.spur ./mvm -f ``` It chugs away for a while, and then fails with ``` ld: archive has no table of contents file 'build/vm/AsynchFilePlugin.lib' for architecture arm64 ```
Sometimes it's another plugin, but it's always one of the ones in the `plugins.int` file.
I've tried both the Cog branch and the 202112201228 tag.
The LOGF file for commit #06dca1d00d20747735655b25e0a7987cd5c48315 in the `Cog` branch: https://node.pk/tmp/LOGF.txt.gz
Thanks for reporting this. I presume there is an issue with `ar` and how we call it. Works fine in the CI (i.e., `10.15` and `Xcode-12.4`).
Also compiles fine with `13.2.1`.
Found the fix: run `ranlib` on the library or use the `-s` flag for `ar`: ``` diff --git a/building/macos64ARMv8/common/Makefile.plugin b/building/macos64ARMv8/common/Makefile.plugin index bc16f9533..bc4b3849a 100644 --- a/building/macos64ARMv8/common/Makefile.plugin +++ b/building/macos64ARMv8/common/Makefile.plugin @@ -180,7 +180,7 @@ ifeq ($(realpath $(PREREQUISITES)),$(abspath $(PREREQUISITES)))
$(PLUGINLIB): $(PLUGINREQS) $(VMDIR) $(OBJDIR) $(LIBOBJ) $(PLUGINFWKS) -rm $(PLUGINLIB) - ar -rc $(PLUGINLIB) $(LIBOBJ) + ar -rcs $(PLUGINLIB) $(LIBOBJ)
# Either link with normal compiler/linker or with CXX compiler/linker. If # LINK_WITH_CXX is set, use e.g. clang++ ``` I don't know why this is necessary for me. I am on a new laptop, and while I have Homebrew installed, I don't have any other copy of llvm/ar/etc. in my path -- just Apple's command-line tools.
Thanks @faried, fixing this now.
Closed #623.
vm-dev@lists.squeakfoundation.org