[sdk/kdesrc-build] /: Use XDG_STATE_HOME for persistent data file

Ignacy Kajdan null at kde.org
Sat Jan 22 23:38:41 GMT 2022


Git commit 4a2c0a8fe776490fde92bec120bfae51d9e9c982 by Ignacy Kajdan.
Committed on 21/01/2022 at 17:40.
Pushed by mpyne into branch 'master'.

Use XDG_STATE_HOME for persistent data file

M  +3    -3    doc/index.docbook
M  +3    -3    doc/man-kdesrc-build.1.docbook
M  +7    -7    kdesrc-run
M  +8    -8    modules/ksb/BuildContext.pm

https://invent.kde.org/sdk/kdesrc-build/commit/4a2c0a8fe776490fde92bec120bfae51d9e9c982

diff --git a/doc/index.docbook b/doc/index.docbook
index 5c223cd..19ad36a 100644
--- a/doc/index.docbook
+++ b/doc/index.docbook
@@ -2795,9 +2795,9 @@ cannot figure out what you mean using <link linkend="conf-branch">branch</link>.
 persistent data. The default is to store this data in a file called
 <filename>.kdesrc-build-data</filename>, placed in the same directory as the
 configuration file in use. If the global configuration file is in use, it will
-be saved to <filename>~/.cache/kdesrc-build-data</filename>
-(<filename>$XDG_CONFIG_HOME/kdesrc-build-data</filename>, if
-<envar>$XDG_CONFIG_HOME</envar> is set). If you have multiple available
+be saved to <filename>~/.local/state/kdesrc-build-data</filename>
+(<filename>$XDG_STATE_HOME/kdesrc-build-data</filename>, if
+<envar>$XDG_STATE_HOME</envar> is set). If you have multiple available
 configurations in the same directory, you may want to manually set this option,
 so that different configurations do not end up with conflicting persistent data.
 </para>
diff --git a/doc/man-kdesrc-build.1.docbook b/doc/man-kdesrc-build.1.docbook
index 7d105cf..c33327f 100644
--- a/doc/man-kdesrc-build.1.docbook
+++ b/doc/man-kdesrc-build.1.docbook
@@ -1171,9 +1171,9 @@ directory</emphasis> when kdesrc-build is run, this file will be used for the
 configuration instead of <filename>~/.config/kdesrc-buildrc</filename>.
 </para>
 
-<para><filename>~/.cache/kdesrc-build-data</filename>
-(<filename>$XDG_CACHE_HOME/kdesrc-buildrc</filename>, if
-<envar>$XDG_CACHE_HOME</envar> is set) - <command>kdesrc-build</command> uses
+<para><filename>~/.local/state/kdesrc-build-data</filename>
+(<filename>$XDG_STATE_DIR/kdesrc-buildrc</filename>, if
+<envar>$XDG_STATE_DIR</envar> is set) - <command>kdesrc-build</command> uses
 this file to store persistent data (such as last CMake options used, last
 revision successfully installed, etc.). It can be safely deleted.
 </para>
diff --git a/kdesrc-run b/kdesrc-run
index 1e5e651..b27d82a 100755
--- a/kdesrc-run
+++ b/kdesrc-run
@@ -66,15 +66,15 @@ if ($#ARGV == -1 && not $optListInstalled) {
 my $module = shift @ARGV;
 my $exec   = $optExec // $module;
 
-# According to XDG spec, if $XDG_CACHE_HOME is not set, then we should default
-# to ~/.cache
-my $xdgCacheHome = $ENV{XDG_CACHE_HOME} // "$ENV{HOME}/.cache";
-my $cacheFileName = "kdesrc-build-data";
-my @possibleCachePaths = ("./.$cacheFileName", "$xdgCacheHome/$cacheFileName");
-my $buildDataFile = first { -e $_ } (@possibleCachePaths);
+# According to XDG spec, if $XDG_STATE_HOME is not set, then we should default
+# to ~/.local/state
+my $xdgStateHome = $ENV{XDG_STATE_HOME} // "$ENV{HOME}/.local/state";
+my $dataFileName = "kdesrc-build-data";
+my @possibleDataPaths = ("./.$dataFileName", "$xdgStateHome/$dataFileName");
+my $buildDataFile = first { -e $_ } (@possibleDataPaths);
 
 if (not defined $buildDataFile) {
-    say qq("$cacheFileName" file is not available. Exit now.);
+    say qq("$dataFileName" file is not available. Exit now.);
     exit 1;
 }
 
diff --git a/modules/ksb/BuildContext.pm b/modules/ksb/BuildContext.pm
index ba2e158..1f4ec09 100644
--- a/modules/ksb/BuildContext.pm
+++ b/modules/ksb/BuildContext.pm
@@ -35,10 +35,10 @@ use ksb::KDEProjectsReader 0.50;
 use File::Temp qw(tempfile);
 use File::Spec; # rel2abs
 
-# According to XDG spec, if $XDG_CACHE_HOME is not set, then we should
-# default to ~/.cache
-my $xdgCacheHome = $ENV{XDG_CACHE_HOME} // "$ENV{HOME}/.cache";
-my $xdgCacheHomeShort = $xdgCacheHome =~ s/^$ENV{HOME}/~/r; # Replace $HOME with ~
+# According to XDG spec, if $XDG_STATE_HOME is not set, then we should
+# default to ~/.local/state
+my $xdgStateHome = $ENV{XDG_STATE_HOME} // "$ENV{HOME}/.local/state";
+my $xdgStateHomeShort = $xdgStateHome =~ s/^$ENV{HOME}/~/r; # Replace $HOME with ~
 # According to XDG spec, if $XDG_CONFIG_HOME is not set, then we should
 # default to ~/.config
 my $xdgConfigHome = $ENV{XDG_CONFIG_HOME} // "$ENV{HOME}/.config";
@@ -581,7 +581,7 @@ processed correctly, however, it's recommended to move it to the new location.
 Please move b[~/.kdesrc-buildrc] to b[$xdgConfigHomeShort/kdesrc-buildrc]
 
 You may also move (or delete) the b[global cache file], as it won't be read from
-the current location: b[~/.kdesrc-build-data] to b[$xdgCacheHomeShort/kdesrc-build-data]
+the current location: b[~/.kdesrc-build-data] to b[$xdgStateHomeShort/kdesrc-build-data]
 (overwrite if needed).
 EOM
     }
@@ -804,10 +804,10 @@ sub persistentOptionFileName
     } else {
         my $configDir = $self->baseConfigDirectory();
         if ($configDir eq $xdgConfigHome) {
-            # Global config is used - store the cache file in $xdgCacheHome
-            $file = $xdgCacheHome . '/' . $PERSISTENT_FILE_NAME;
+            # Global config is used - store the data file in $xdgStateHome
+            $file = $xdgStateHome . '/' . $PERSISTENT_FILE_NAME;
         } else {
-            # Local config is used - store the cache file in the same directory
+            # Local config is used - store the data file in the same directory
             $file = $configDir . '/.' . $PERSISTENT_FILE_NAME;
         }
     }



More information about the kde-doc-english mailing list