graalvm / mx

Command-line tool used for the development of Graal projects.
GNU General Public License v2.0
179 stars 108 forks source link

Can remote libraries be provided locally to mx? #284

Open aragos opened 2 weeks ago

aragos commented 2 weeks ago

I'm attempting to build Graal targets in a hermetic environment (no network access) to assure supply chain security. Because of this I need to find a way to provide libraries normally downloaded over the network (example) locally.

I've managed to track down where mx stores these kinds of dependencies once they're downloaded (~/.mx/cache) but fiddling with that location seems unwise. Is there a way to pass an alternate location for a given library, perhaps by flag, or a minimal patch to apply to the suite.pys so they can find the dependencies on the local file system instead?

dougxc commented 2 weeks ago

It should be possible to replace the urls attribute of each library in suite.py with a path attribute which is the absolute path to the installed library. That said, it has been a long time since we've used explicit path attributes so I cannot guarantee that it works out of the box. If not, it should not be too hard to fix though.

rschatz commented 2 weeks ago

Another way to do this is just pre-populate the mx cache. You can use the MX_CACHE env variable to point it at a different cache.

I don't know whether MX_URLREWRITE works with local (file:///) urls, but that might also be worth checking out.