[bug#53781,shepherd] support: Use XDG_STATE_HOME for log files.
Commit Message
As per XDG Base Directory Specification 0.8, "action history" (such as logs)
ought to be stored in $XDG_STATE_HOME, defaulting to $HOME/.local/state.
Respect this specification.
* modules/shepherd/support.scm (%user-log-dir): Define in terms of
XDG_STATE_HOME.
* doc/shepherd.texi: Adjust accordingly.
* tests/basic.sh: Adjust accordingly.
---
doc/shepherd.texi | 3 ++-
modules/shepherd/support.scm | 4 ++--
tests/basic.sh | 4 +++-
3 files changed, 7 insertions(+), 4 deletions(-)
Comments
Hello Liliana,
Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
> As per XDG Base Directory Specification 0.8, "action history" (such as logs)
> ought to be stored in $XDG_STATE_HOME, defaulting to $HOME/.local/state.
> Respect this specification.
>
> * modules/shepherd/support.scm (%user-log-dir): Define in terms of
> XDG_STATE_HOME.
> * doc/shepherd.texi: Adjust accordingly.
> * tests/basic.sh: Adjust accordingly.
> ---
> doc/shepherd.texi | 3 ++-
> modules/shepherd/support.scm | 4 ++--
> tests/basic.sh | 4 +++-
> 3 files changed, 7 insertions(+), 4 deletions(-)
[...]
> diff --git a/tests/basic.sh b/tests/basic.sh
> index 5079aa1..5ef1fb0 100644
> --- a/tests/basic.sh
> +++ b/tests/basic.sh
> @@ -260,7 +260,9 @@ test -f "$log"
>
> # Set XDG_CONFIG_HOME for configuration files.
> export XDG_CONFIG_HOME=$confdir
> -export XDG_DATA_DIR=$datadir
> +export XDG_DATA_HOME=$datadir
> +# Reuse XDG_DATA_HOME as XDG_STATE_HOME for backwards compatibility.
> +export XDG_STATE_HOME=$datadir
> mkdir -p $confdir/shepherd
> mkdir -p $datadir/shepherd
> mv $conf $confdir/shepherd/init.scm
I don't get why you define XDG_DATA_HOME here, as it wasn't used before and it
is a test and shouldn't need to be backward compatible except for testing such
backward compatibility.
Otherwise it LGTM! Thank you for the patch.
Cheers,
- Brice
Hi,
Liliana Marie Prikler <liliana.prikler@gmail.com> skribis:
> As per XDG Base Directory Specification 0.8, "action history" (such as logs)
> ought to be stored in $XDG_STATE_HOME, defaulting to $HOME/.local/state.
> Respect this specification.
>
> * modules/shepherd/support.scm (%user-log-dir): Define in terms of
> XDG_STATE_HOME.
> * doc/shepherd.texi: Adjust accordingly.
> * tests/basic.sh: Adjust accordingly.
Pushed as ec2a0b07a6dedcbec3cf6bb7328b144a117873e8, thanks!
Ludo’.
@@ -419,7 +419,8 @@ permissions are not as expected.
Log output into @var{file}.
For unprivileged users, the default log file is
-@file{$XDG_DATA_DIR/.local/share/shepherd/shepherd.log}.
+@file{$XDG_STATE_HOME/shepherd/shepherd.log} with @file{$XDG_STATE_HOME}
+defaulting to @file{$HOME/.local/state}.
@cindex syslog
When running as root, the default behavior is to connect to
@@ -277,8 +277,8 @@ There is NO WARRANTY, to the extent permitted by law.")))
(define %user-log-dir
;; Default log directory if shepherd is run as a normal user.
- (string-append (or (getenv "XDG_DATA_DIR")
- (string-append user-homedir "/.local/share"))
+ (string-append (or (getenv "XDG_STATE_HOME")
+ (string-append user-homedir "/.local/state"))
"/shepherd"))
(define %user-runtime-dir
@@ -260,7 +260,9 @@ test -f "$log"
# Set XDG_CONFIG_HOME for configuration files.
export XDG_CONFIG_HOME=$confdir
-export XDG_DATA_DIR=$datadir
+export XDG_DATA_HOME=$datadir
+# Reuse XDG_DATA_HOME as XDG_STATE_HOME for backwards compatibility.
+export XDG_STATE_HOME=$datadir
mkdir -p $confdir/shepherd
mkdir -p $datadir/shepherd
mv $conf $confdir/shepherd/init.scm