Hi John, I have noticed that .dylib files generated by Sage often have as many as 3 identical rpaths. (When building the macOS app I remove all rpaths and replace them with a single rpath which is relative, meaning it starts with @loader_path. Apple will not notarize app bundles with absolute rpaths.)
I wonder if the "duplicate libraries" warnings are caused by duplicate rpath entries in the mach files. I will try to test that hypothesis. Do you have any idea what could cause those duplicate rpaths? Are there multiple -rpath options being passed to the compiler? - Marc On Thu, Apr 25, 2024 at 2:50 PM John H Palmieri <jhpalmier...@gmail.com> wrote: > Hi Marc, > > I just tried building Sage without `-ld-classic`. It builds, but I get > warnings about "ignoring duplicate libraries", and those cause doctest > failures. The lines could be modified to test whether xcode-select is > present and executable first, or since Sage now does indeed build without > `-ld-classic`, we could filter out the warnings when doctesting. > > -- > John > > > On Wednesday, April 24, 2024 at 3:20:54 PM UTC-7 marc....@gmail.com wrote: > >> Well, it almost solved the problem. >> >> It turns out that calling /usr/bin/gcc was not the only issue in >> sage-env. That script also calls xcode-select. On a system with no XCode >> app and no command line tools, calling gcc causes an error message to be >> printed to stderr and a dialog to open asking whether to install the >> command line tools. Calling xcode-select on such a system prints the same >> error message but does not open the dialog. The error message appears in >> the terminal when running sage in a command line, which is annoying and/or >> alarming to someone with no plans to do anything involving compilation of C >> code. >> >> The calls to xcode-select were added in PR#36599 >> <https://github.com/sagemath/sage/pull/36599> in order to force XCode to >> use Apple's ld-classic linker instead of ld when their new version of ld >> was totally broken. This is done by adding -ld_classic to LDFLAGS. >> >> *Note to people who worked on PR #36599* (@jhpalmieri and @mkoeppe): I >> think Apple's new linker is working now, so it is probably no longer >> necessary and not a good idea to force use of ld_classic. >> >> - Marc >> >> On Tuesday, April 23, 2024 at 10:45:54 PM UTC-5 Marc Culler wrote: >> >> That was it! >> >> Thank you Gonzalo; indeed, it helps a lot. And your workaround is fine, >> since we don't support the -i option, Even if we did, the default names >> for as, ld and ar are correct whenever the command line tools are >> installed. So that block of code is completely irrelevant for the macOS >> platform. This solves the problem. >> >> - Marc >> >> >> >> On Tuesday, April 23, 2024 at 8:59:12 PM UTC-5 Gonzalo Tornaría wrote: >> >> https://github.com/sagemath/sage/blob/develop/src/bin/sage-env#L482 and >> L494 >> >> See: https://github.com/sagemath/sage/issues/14296 and >> https://github.com/sagemath/sage/commit/69213d74ead4e93687cf61f214b0d96dd3f9885a >> >> Maybe you can workaround this by setting AS=as and LD=ld in >> sage-env-config. >> >> HTH, >> Gonzalo >> >> >> On Tuesday, April 23, 2024 at 3:48:18 PM UTC-3 Marc Culler wrote: >> >> I discovered, by installing the Sage_macOS app on a pristine macOS >> system, that somehow, somewhere, in Sage's startup sequence there is a call >> to gcc. This is true whether Sage is being started from a command line or >> a notebook. >> >> On such a macOS system /usr/bin/gcc exists, but calling it causes a >> dialog to be posted which asks whether to download and install the Xcode >> "command line tools". >> >> There is no need for a user to install, or be prompted to install, a C >> compiler in order to run Sage. If we want to verify whether a C compiler >> is installed on the host system then we should check the return value of >> xcode-select >> -p rather than calling /usr/bin/gcc. >> >> I am unable to find where this call occurs. Do any of the Sage >> developers know which component of Sage could be calling /usr/bin/gcc on >> start up? >> >> - Marc >> >> -- > You received this message because you are subscribed to a topic in the > Google Groups "sage-devel" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/sage-devel/4s_5HmznHZM/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > sage-devel+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sage-devel/c81c9434-3b0c-4730-b3e8-6e36802f5224n%40googlegroups.com > <https://groups.google.com/d/msgid/sage-devel/c81c9434-3b0c-4730-b3e8-6e36802f5224n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/CALcZXRGN%2B38QrbAmnoROTOq7CjhOWsMD4W2gpLATPz0jzWi%2Beg%40mail.gmail.com.