On Apr 30, 2023, at 00:38, Alan Ruttenberg alanruttenberg@gmail.com wrote:
Here's what I did: https://github.com/alanruttenberg/lsw2/blob/owlapiv4/util/setenv.lisp
You still can't set environment variables in the parent process, of course.
Alan
On Sat, Apr 29, 2023 at 2:25 AM Scott L. Burson Scott@sympoiesis.com wrote: Hi,
I've been away from ABCL for some time, so I ask your indulgence in case I'm revisiting a familiar issue. I tried (SETF (UIOP:GETENV "foo") "value") and got
Not (currently) implemented on ABCL: (SETF UIOP/OS:GETENV)
On investigation, I see that the JVM doesn't normally support setting environment variables, but there are known ways to jimmy it into doing so: https://stackoverflow.com/questions/318239/how-do-i-set-environment-variable...
Would a PR to add such a hack to ABCL be welcome, or should I just make it a local mod? Or is there another, recommended way of doing this?
A patch for ABCL to add this would be appreciated, but the implementation should somehow be changed to the “standard” load for JNA by the ABCL-ASDF contrib, namely something like
(require :abcl-contrib) (asdf:make :jna)
As I understand it, Alan’s implementation only works if ABCL-ASDF:RESOLVE is present, meaning it cannot be put “as is” in the base ABCL system. I believe this is possible because the OWL2 application uses the ABCL-AIO build of ABCL which merges abcl.jar which abcl-contrib.jar, but I could be wrong. Conceptually, we should somehow place the implementation of setting environment variables via the C syscall as a patch in the contrib system in a new contrib called (?) USE-POSIX-SYSCALLS (terrible name, please change). Such a new contrib would a) depend on JNA and b) have to be used via
(asdf:make :use-posix-syscalls)