Providing artifacts/libraries for unsupported platforms (e.g. Apple Silicon)

Hi,

as I have recently switched to a MBP with Apple M1 I have experienced some issues with packages relying on Artifacts/JLL packages which do not yet include a wrapper in their JLL package.
In particular I have encountered these issues while trying to use LibSerialPort and NetCDF/NCDatasets. There are no errors/warnings when installing these packages but they will fail as soon as the C-DLL is called using ccall.

Is it possible to manually provide the path to the library locally for the package? I have already read the documentation on overriding Artifacts locations (8. Artifacts · Pkg.jl) but it seems this is not enough as the library is still not found by the LibSerialPort package. I have installed the library locally using Homebrew. I have the same problem with providing NetCDF.

Thanks!

Hi, I updated the jll packages of both libs and they should be working. They pass their own tests at least.

2 Likes

Awesome!

Just out of curiosity: Is there another option just in case there is no one around for updating Yggdrasil? :wink:

I wonder why the Overrides.toml approach didn’t work for you. I’ve used it before with success (in a different context). Maybe you can elaborate a bit what you tried.

I don’t think at the moment there is any way to override/provide the libraries for platforms that the JLL package itself doesn’t support

1 Like

I think the reason is that no “Product” is provided if the target platform is not supported by the JLL package. I’ve tried to use an Override.toml with the following content for LibSerialPort.

[220460dc-b50e-5ed0-8176-09b0fd261e90]
libserialport =  "/opt/homebrew/Cellar/libserialport/"

The file was parsed by Pkg (I know that because I had a syntax error which lead to an error with Pkg).

Thanks again to @gbaraldi for updating the packages.