Hi Maxim,

Maxim Cournoyer <[email protected]> writes:

Hi Ian,

I haven't read the code you wrote, so my suggestion may not be to the point, but have you considered "generating the profile" as part of the
service?

This is more or less what I was struggling to do.

I.e., the collectd-configuration could have an 'extensions' field or similar that would accept a list-of-file-likes type that would be python packages, and you'd compute the GUIX_PYTHONPATH in the supporting
service code and write this in its configuration?

The issue with this approach is that computing GUIX_PYTHONPATH is non-trivial. Python abstracts its dependencies -- meaning you have "import foo" in the code, and the specific "foo" is dynamic based on the contents of sys.path (instead of directloading a store path computed ahead of time) -- so all dependencies have to be propagated-inputs. Computing GUIX_PYTHONPATH means a recursive walk over the inputs of every package, accumulating those packages and their propagated-inputs, otherwise everything breaks when you add a package that needs any Python library.

And doing that is basically reimplementing what profiles already do. That feels like a mistake.

In any case, Rutherer helped me solve this. Creating the profile in the service code, then ungexping it in the serializer will implicitly build the profile, allowing its GUIX_PYTHONPATH to be extracted and dropped in the configuration file.

If you want to take a look at the PR, I’d still appreciate feedback, particularly around the documentation.

 -- Ian

Reply via email to