<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jun 2, 2022 at 7:58 AM Rob Landley <<a href="mailto:rob@landley.net" target="_blank">rob@landley.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
On 6/2/22 00:47, enh via Toybox wrote:<br>
> the mac build on github has been broken for a few days:<br>
> <br>
> Run make<br>
> scripts/make.sh<br>
> readlink: illegal option -- f<br>
> usage: readlink [-n] [file ...]<br>
> readlink: illegal option -- f<br>
> usage: readlink [-n] [file ...]<br>
> $GENDIR=generated cannot include $***<br>
> make: *** [toybox] Error 1<br>
> Error: Process completed with exit code 2.<br>
> <br>
> (from <a href="https://github.com/landley/toybox/runs/6682393952?check_suite_focus=true" rel="noreferrer" target="_blank">https://github.com/landley/toybox/runs/6682393952?check_suite_focus=true</a><br>
> <<a href="https://github.com/landley/toybox/runs/6682393952?check_suite_focus=true" rel="noreferrer" target="_blank">https://github.com/landley/toybox/runs/6682393952?check_suite_focus=true</a>>)<br>
> <br>
> funnily enough, it works fine for me locally because i'm on macOS 12, and one of<br>
> the few improvements i've actually noticed in it is that readlink now has a -f<br>
> option. i've attached a patch that switches the CI over to just testing the<br>
> current macOS release, but 10.15 is actually still getting security updates<br>
> (until the end of this year, if history is any guide).<br>
<br>
Applied.<br>
<br>
> note that it's possible to tell the compiler you're _targeting_ an older macOS<br>
> version, so we could do that if you don't care about _building_ on old versions<br>
> of macOS [without installing a custom readlink] but still want to support<br>
> _running_ on them...<br>
<br>
If we build an older target binary will it run on newer OS vesions? If so that's<br>
probably a good thing to do.<br></blockquote><div><br></div><div>yeah, it's basically like Android... more of a "minimum" than a "target". (effectively "don't let me link against functions that don't exist yet".)</div><div><br></div><div>in the short term, though, it looks like we can't say "12.4" (i was confused by the previous "10.15" --- Apple changed their numbering scheme, so "12.4" is actually more like "10.15.4" than "10.15", despite how it looks), so here's a patch that should work (with a link to the github docs for the "citation needed" :-) )...</div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Longer-term, I'm trying to come up with a build.sh that compiles just the toybox<br>
commands it needs to build itself, without running any configure plumbing,<br>
needing to probe anything about the host (assume "no" for all checks), or<br>
pulling in any optional libraries. Just a cc command line building a list of *.c<br>
files with a snapshot .config and generated/*.h so the only binary you run for<br>
that build is the compiler. Then you can run the config and such with the<br>
resulting binaries. (Basically a "make airlock" variant, except it's a canned<br>
bootstrap airlock.)<br>
<br>
Alas, I need to get toysh to the point it runs make.sh and install.sh first. And<br>
before _that_ I'm trying to get toysh to run test.sh. Working on it...<br>
<br>
Rob<br>
<br>
(It would be easier if I had one generated/generated.h I could #include instead<br>
of needing 5 of them, but config.h needs to go before portability.h, and then<br>
the other 4 happen after #including everything else so the full range of types<br>
is available. I suppose I could keep config.h separate and have a<br>
generated/toys.h that #includes the other 4, and then when providing a canned<br>
generated directory as cc -I it would only need two headers in it. They're<br>
separate so they can be rebuilt as needed, but a hand-crafted canned file can<br>
collate...)<br>
</blockquote></div></div>