Older mac install


#1

any time on when the next release will be that will work on older macs?


#2

Hi @ozie,

We investigated a bit why our binaries aren’t working on old architectures and we found that homebrew tweak some optimization flags during the build. It basically add some instructions into binaries that are not known by old CPUs…

We tried to fix it but so far without any success. We don’t have a time frame to communicate as this isn’t a priority for us to support old macOS architectures but be sure that if we find a way, we’ll communicate about it.


#3

right o then

so tried to get brew to build it properly since Snips just uses brew to install pre built binaries by downloading them from brew

but we can’t use brew to do this because Snips does not allow access the to the git repo where the files are
git clone --branch 0.60.5 ssh://git@github.com/snipsco/snips-platform.git

if it was accessible, then we users, could build for our mac osx system and cpu type ourselves

oh well, another wasted adventure with snips the “open source” system that is closed source and limited

==> Installing snips-asr from snipsco/snips
==> Cloning ssh://git@github.com/snipsco/snips-platform.git
Cloning into '/Users/minimac/Library/Caches/Homebrew/snips-asr--git'...
ERROR: Repository not found.
fatal: Could not read from remote repository.

as for “homebrew tweaking some flags”… homebrew state that they by default build for the oldest systems

By default, bottles will be built for the oldest CPU supported by 
the OS/architecture you’re building for (Core 2 for 64-bit OSs). 
This ensures that bottles are compatible with all computers you
 might distribute them to. 

however this can be changed, but it is then SNIPS that is preventing older systems being supported and not BREW

If you really want your bottles to be optimized for something else, you
 can pass the --bottle-arch= option to build for another architecture; for 
example, brew install foo --build-bottle --bottle-arch=penryn. 
Just remember that if you build for a newer architecture some of your
 users might get binaries they can’t run and that would be sad!

#4

Hello @ozie,

I wanted to let you know that I may have found a way to fix this issue.

Tweaking homebrew wasn’t the solution, this was because, as you may know, our code base is mostly written in rust. And some of our libs compile themselves some C and/or C++ code. This issue was caused by the fact that cargo doesn’t forward environment variables when there are build scripts.

Basically, if we compile something with the -mmacosx-version-min=version flag or if we set the env var MACOSX_DEPLOYMENT_TARGET=version. Then clang ensures you that your binaries will run on this given version c.f. man clang. What I didn’t know was the fact that this also ensures that binaries will run on CPU that is targeted by this version of macOS.

For instance, the NLU has a dependency on crfsuite-rs and compile some C code.
Note that there were some other services, not open-sourced, like the ASR that had this issue too.

Despite the fact that Snips doesn’t officially support this old hardware configuration, the fix will be included in the 1.1.2 release and will be pushed hopefully next week.

Cheers