Howdy!

I want to build Pharo images using Nix <https://nixos.org/nix/>. On the one
hand this should look basically like the Jenkins scripts, but on the other
hand the build must run inside a sandbox that is isolated from the network.
So I need to download all of the code that I need ahead of time because I
am not able to contact Github, SmalltalkHub, etc, once the build is running.

I am not sure how to approach this problem yet but I have a preliminary
question.

Is there an easy way that I could "recursively" download all the Smalltalk
code (etc) required for an application onto the local filesystem, and then
load this into a Pharo image that does not have network access?

Concrete example - How could I write a Pharo script that downloads all the
software required to install Moose in a standard Pharo 6.0 image? Then how
could I load that into an image off the local filesystem?

I feel like there should be a solution here, since Monticello seems to be
able to cache packages locally on the filesystem, but I don't how enough
experience to quite know how to approach it.

If this is possible then the "utopian" vision could be to recursively
download every Pharo package that exists, in every relevant version, and
make them available in the Nix universe. This is what Nix does with Python,
R, Emacs, etc packages.

Or if this turns out to be difficult for some reason then I could perhaps
build the Pharo image externally - e.g. on the Inria Jenkins - and then
import that into Nix as an opaque binary. This is probably the simplest
solution but it is not very appealing from my Nix-centric viewpoint because
I won't have visibility into what has changed between one image build and
the next.

Feedback would be much appreciated!
-Luke

P.S. Screenshot from the Pharo part of my application that is starting to
come together, visualizing Lua JIT compiler IR code to make it more
understandable than disassembly listings:
https://github.com/raptorjit/raptorjit/pull/63#issuecomment-310138536.

Reply via email to