This is an automated email from the git hooks/post-receive script. jamessan pushed a commit to branch master in repository devscripts.
commit f45a0b4b71424b50adffe4f8c47cca64ac5fff53 Author: James McCoy <[email protected]> Date: Sun May 24 23:14:50 2015 -0400 Store cached files in $XDG_CACHE_HOME Change bts/rc-alert/wnpp-alert to store cached files under $XDG_CACHE_HOME/devscripts. Include logic to migrate the existing cache to the new location on first use so things like “wnpp-alert -d” continue to work properly during the migration. Signed-off-by: James McCoy <[email protected]> --- debian/changelog | 2 ++ scripts/bts.pl | 19 +++++++++++++++---- scripts/rc-alert.1 | 4 ++-- scripts/rc-alert.pl | 22 ++++++++++++++++------ scripts/wnpp-alert.1 | 2 +- scripts/wnpp-alert.sh | 14 ++++++++++++-- 6 files changed, 48 insertions(+), 15 deletions(-) diff --git a/debian/changelog b/debian/changelog index fdb249a..68c141d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -23,6 +23,8 @@ devscripts (2.15.5) UNRELEASED; urgency=medium directory) to /usr/share/bash-completion/completions. * debdiff: Inspect wdiff's return code rather than Dpkg::IPC::spawn's exception to determine if wdiff found differences. (Closes: #786518) + * Store cached files in $XDG_CACHE_HOME instead of ~/.devscripts_cache. + (Closes: #659330) [ Dominique Dumont ] * licensecheck: diff --git a/scripts/bts.pl b/scripts/bts.pl index 71695b9..43c8e6c 100755 --- a/scripts/bts.pl +++ b/scripts/bts.pl @@ -46,7 +46,7 @@ use 5.006_000; use strict; use File::Basename; use File::Copy; -use File::Path; +use File::Path qw(mkpath make_path rmtree); use File::Spec; use File::Temp qw/tempfile/; use Net::SMTP; @@ -168,9 +168,11 @@ my @valid_severities=qw(wishlist minor normal important my $browser; # Will set if necessary -my $cachedir=$ENV{'HOME'}."/.devscripts_cache/bts/"; -my $timestampdb=$cachedir."bts_timestamps.db"; -my $prunestamp=$cachedir."bts_prune.timestamp"; +my $cachedir = $ENV{XDG_CACHE_HOME} || File::Spec->catdir($ENV{HOME}, '.cache'); +$cachedir = File::Spec->catdir($cachedir, 'devscripts', 'bts'); + +my $timestampdb = File::Spec->catfile($cachedir, 'bts_timestamps.db'); +my $prunestamp = File::Spec->catfile($cachedir, 'bts_prune.timestamp'); my %timestamp; END { @@ -3684,6 +3686,15 @@ sub browse { # this at most once per day for efficiency. sub prunecache { + # TODO: Remove handling of $oldcache post-Stretch + my $oldcache = File::Spec->catdir($ENV{HOME}, '.devscripts_cache', 'bts'); + if (-d $oldcache && ! -d $cachedir) { + my $err; + make_path(dirname($cachedir), { error => \$err }); + if (!@$err) { + system('mv', $oldcache, $cachedir); + } + } return unless -d $cachedir; return if -f $prunestamp and -M _ < 1; diff --git a/scripts/rc-alert.1 b/scripts/rc-alert.1 index 840de79..8250aaa 100644 --- a/scripts/rc-alert.1 +++ b/scripts/rc-alert.1 @@ -10,14 +10,14 @@ rc-alert \- check for installed packages with release-critical bugs Debian BTS webpages, and then outputs a list of packages installed on the system, or given on the command-line, which are in that list. .P -If the directory \fI~/.devscripts_cache\fP exists or the +If the directory \fI$XDG_CACHE_HOME/devscripts/rc-alert\fP exists or the \fB\-\-cache\fP option is given, then the (sizable) downloaded list will be cached, and will only be downloaded again on a second invocation if it has changed. .SH OPTIONS .TP .BR \-\-cache -Force the creation of the \fI~/.devscripts_cache\fP cache directory. +Force the creation of the \fI$XDG_CACHE_HOME/devscripts/rc-alert\fP cache directory. .TP .BR \-\-help ", " \-h Show a summary of options. diff --git a/scripts/rc-alert.pl b/scripts/rc-alert.pl index 003bf46..9685c29 100755 --- a/scripts/rc-alert.pl +++ b/scripts/rc-alert.pl @@ -23,6 +23,9 @@ use strict; use warnings; use Devscripts::Packages; use File::Basename; +use File::Copy qw(move); +use File::Path qw(make_path); +use File::Spec; use Getopt::Long qw(:config gnu_getopt); sub remove_duplicate_values($); @@ -31,9 +34,11 @@ sub human_flags($); sub unhtmlsanit($); sub dt_parse_request($); -my $cachedir = $ENV{'HOME'}."/.devscripts_cache/"; +my $cachedir = $ENV{XDG_CACHE_HOME} || File::Spec->catdir($ENV{HOME}, '.cache'); +$cachedir = File::Spec->catdir($cachedir, 'devscripts', 'rc-alert'); + my $url = "http://bugs.debian.org/release-critical/other/all.html"; -my $cachefile = $cachedir . basename($url); +my $cachefile = File::Spec->catfile($cachedir, basename($url)); my $forcecache = 0; my $usecache = 0; @@ -171,10 +176,15 @@ if (system("command -v wget >/dev/null 2>&1") == 0) { die "$progname: this program requires either the wget or curl package to be installed\n"; } - -if (! -d $cachedir and $forcecache) { - mkdir $cachedir - or die "$progname: can't make cache directory $cachedir: $!\n"; +# TODO: Remove oldcache handling post-Stretch +my $oldcache = File::Spec->catfile($ENV{HOME}, '.devscripts_cache', 'all.html'); +if (! -d $cachedir) { + if (-f $oldcache || $forcecache) { + make_path($cachedir); + if (-f $oldcache) { + move($oldcache, $cachefile); + } + } } if (-d $cachedir) { diff --git a/scripts/wnpp-alert.1 b/scripts/wnpp-alert.1 index 3050c69..ce2a40f 100644 --- a/scripts/wnpp-alert.1 +++ b/scripts/wnpp-alert.1 @@ -17,7 +17,7 @@ package based. .SH OPTIONS .TP .BR \-\-diff ", " \-d -If the \fI~/.devscripts_cache\fP directory exists, compare the output of +If the \fI$XDG_CACHE_HOME/devscripts\fP directory exists, compare the output of \fBwnpp-alert\fR to the previous output (cached in the file \fIwnpp-diff\fR) and output the differences. .TP diff --git a/scripts/wnpp-alert.sh b/scripts/wnpp-alert.sh index bb20c37..4146d86 100755 --- a/scripts/wnpp-alert.sh +++ b/scripts/wnpp-alert.sh @@ -16,7 +16,11 @@ set -e PROGNAME="${0##*/}" -CACHEDIR=~/.devscripts_cache +# TODO: Remove use of OLDCACHEDDIR post-Stretch +OLDCACHEDIR=~/.devscripts_cache +OLDCACHEDDIFF="${OLDCACHEDIR}/wnpp-diff" +CACHEDIR=${XDG_CACHE_HOME:-$HOME/.cache} +CACHEDIR=${CACHEDIR%/}/devscripts CACHEDDIFF="${CACHEDIR}/wnpp-diff" CURLORWGET="" GETCOMMAND="" @@ -37,6 +41,9 @@ Modifications: Julian Gilbey <[email protected]>" } wnppdiff () { + if [ -f "$OLDCACHEDDIFF" ]; then + mv "$OLDCACHEDDIFF" "$CACHEDDIFF" + fi if [ ! -f "$CACHEDDIFF" ]; then # First use comm -12 $WNPP_PACKAGES $INSTALLED | sed -e 's/+/\\+/g' | \ @@ -120,7 +127,10 @@ else fi if [ -f "$WNPP_DIFF" ]; then - if [ -d "$CACHEDIR" ]; then + # This may fail when run from a cronjob (c.f., #309802), so just ignore it + # and carry on. + mkdir -p "$CACHEDIR" >/dev/null 2>&1 || true + if [ -d "$CACHEDIR" ] || [ -d "$OLDCACHEDIR" ]; then wnppdiff exit 0 else -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git _______________________________________________ devscripts-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/devscripts-devel
