Thanks. The xcode-select command always exists. What works is to run the command with stderr redirected to /dev/null and then check $?. I will open a PR.
- Marc On Thursday, April 25, 2024 at 4:05:34 PM UTC-5 John H Palmieri wrote: > I also don't know when the linker was fixed and whether we need to support > systems on which it is still broken. Anyway, if you want to open up a PR to > avoid the call to xcode-select, I'd be happy to take a look. We could also > revive some version of the branch at #36337 to filter out the warnings when > doctesting. > > -- > John > > On Thursday, April 25, 2024 at 1:19:50 PM UTC-7 John H Palmieri wrote: > >> Take a look at the discussion at >> https://github.com/sagemath/sage/pull/36337, in particular >> https://github.com/sagemath/sage/pull/36337#issuecomment-1741293729. I >> saw both "duplicate rpath" warnings and "duplicate library" warnings. Some >> (maybe all, at least at that point) of the duplicate rpaths were removed by >> https://github.com/sagemath/sage/pull/36364, but I don't know how to >> prevent the duplicate libary warnings. >> >> -- >> John >> >> >> On Thursday, April 25, 2024 at 1:07:17 PM UTC-7 marc....@gmail.com wrote: >> >>> 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 <jhpalm...@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+...@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/bbcc2f1e-22aa-4e7e-a5c8-560766fa9d64n%40googlegroups.com.