Re: The multisubstitute commands in the run script generated by s6-usertree-maker are in a wrong order
Great, thanks! MMS On Fri, Jan 22, 2021, 17:28 Laurent Bercot wrote: > >As shown above, the multisubstitute command that contains XDG_RUNTIME_DIR > is put after the one that contains USER, HOME, UID, GID, and GIDLIST. If > for example XDG_RUNTIME_DIR=/run/user/$UID, the $UID here will not be > substituted with the user's UID since by the time $UID is substituted, > $XDG_RUNTIME_DIR hasn't been substituted yet. So perhaps the order of these > two multisubstitute should be inverted. > > You're right, of course. I remember testing it, and it *working*, so > I did not think any further, but in retrospect it appears my test was > incorrect. > Thanks for the report! Fixed in git head. > > I'll give it the week-end, in case more bug-reports come in, then > I'll release 2.10.0.1. > > Note that skalibs-2.10.0.1 is out already, it fixes a bug that > manifests in execline's 'emptyenv -c' command. > > -- > Laurent > >
Re: The multisubstitute commands in the run script generated by s6-usertree-maker are in a wrong order
As shown above, the multisubstitute command that contains XDG_RUNTIME_DIR is put after the one that contains USER, HOME, UID, GID, and GIDLIST. If for example XDG_RUNTIME_DIR=/run/user/$UID, the $UID here will not be substituted with the user's UID since by the time $UID is substituted, $XDG_RUNTIME_DIR hasn't been substituted yet. So perhaps the order of these two multisubstitute should be inverted. You're right, of course. I remember testing it, and it *working*, so I did not think any further, but in retrospect it appears my test was incorrect. Thanks for the report! Fixed in git head. I'll give it the week-end, in case more bug-reports come in, then I'll release 2.10.0.1. Note that skalibs-2.10.0.1 is out already, it fixes a bug that manifests in execline's 'emptyenv -c' command. -- Laurent
The multisubstitute commands in the run script generated by s6-usertree-maker are in a wrong order
Hello everyone, I'm using skalibs-2.10.0.0, execline-2.7.0.0, and s6-2.10.0.0 here in my system. I tried using the s6-usertree-maker with below invocation: s6-usertree-maker -E /etc/user-env -e XDG_RUNTIME_DIR user /var/log/user-subtree /tmp/user-subtree Below is the generated run script: #!/bin/execlineb -P fdmove -c 2 1 emptyenv -p export USER "user" s6-envuidgid -i -- "user" s6-applyuidgid -U -- backtick -in HOME { homeof "user" } s6-envdir -i -- "/etc/user-env" multisubstitute { importas -i USER USER importas -i HOME HOME importas -i UID UID importas -i GID GID importas -i GIDLIST GIDLIST } multisubstitute { importas -D "" -- "XDG_RUNTIME_DIR" "XDG_RUNTIME_DIR" } export "XDG_RUNTIME_DIR" ${"XDG_RUNTIME_DIR"} export PATH "/usr/bin:/bin" s6-svscan -d3 -- "${HOME}/service" As shown above, the multisubstitute command that contains XDG_RUNTIME_DIR is put after the one that contains USER, HOME, UID, GID, and GIDLIST. If for example XDG_RUNTIME_DIR=/run/user/$UID, the $UID here will not be substituted with the user's UID since by the time $UID is substituted, $XDG_RUNTIME_DIR hasn't been substituted yet. So perhaps the order of these two multisubstitute should be inverted. I was hit by this problem when trying to use it on my system, where I found XDG_DATA_HOME was still set to ${HOME}/.local/share (i.e. the ${HOME} was not substituted with the path to my home directory). Has anyone encountered this too? Or perhaps I'm just doing things incorrectly? Thanks!