Package: devscripts Version: 2.18.1 Severity: normal File: /usr/bin/uscan Tags: patch
My ~/.devscripts includes: USCAN_DESTDIR="$HOME/tmp/build-area" This works for most uscan modes, but not for mode=git, where uscan tries to compose a path "$curdir/$dst" where $curdir is the current working directory and $dst is USCAN_DESTDIR, resulting in an attempt to access a path like /home/smcv/src/debian/ioquake3//home/smcv/tmp/build-area/... which fails. Please consider the attached path, which replaces "$curdir/$dst" with abs_path($dst). Regards, smcv -- System Information: Debian Release: buster/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'buildd-unstable'), (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental-debug'), (1, 'buildd-experimental'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.15.0-2-amd64 (SMP w/4 CPU cores) Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8), LANGUAGE=en_GB:en (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages devscripts depends on: ii dpkg-dev 1.19.0.5 ii libc6 2.27-3 ii libfile-homedir-perl 1.002-1 ii perl 5.26.1-5 ii python3 3.6.5-2 ii sensible-utils 0.0.12 Versions of packages devscripts recommends: ii apt 1.6~beta1 ii at 3.1.20-3.1 ii curl 7.58.0-2 ii dctrl-tools 2.24-2+b1 ii debian-keyring 2018.03.24 ii dput 1.0.2 ii equivs 2.1.0 ii fakeroot 1.22-2 ii file 1:5.32-2 ii gnupg 2.2.5-1 ii libdistro-info-perl 0.18 ii libdpkg-perl 1.19.0.5 ii libencode-locale-perl 1.05-1 ii libgit-wrapper-perl 0.048-1 ii liblist-compare-perl 0.53-1 ii liblwp-protocol-https-perl 6.07-2 ii libsoap-lite-perl 1.26-1 ii liburi-perl 1.73-1 ii libwww-perl 6.33-1 ii licensecheck 3.0.31-2 ii lintian 2.5.81 ii man-db 2.8.3-2 ii patch 2.7.6-2 ii patchutils 0.3.4-2 ii pseudo [fakeroot] 1.8.1+git20161012-2 ii python3-apt 1.6.0~rc2 ii python3-debian 0.1.32 ii python3-magic 2:0.4.15-1 ii python3-requests 2.18.4-2 ii python3-unidiff 0.5.4-1 ii python3-xdg 0.25-4 ii strace 4.21-1 ii unzip 6.0-21 ii wdiff 1.2.2-2 ii wget 1.19.4-1 ii xz-utils 5.2.2-1.3 Versions of packages devscripts suggests: ii adequate 0.15.1 ii autopkgtest 5.2 pn bls-standalone <none> ii bsd-mailx [mailx] 8.1.2-0.20160123cvs-4 ii build-essential 12.4 ii check-all-the-things 2017.05.20 pn cvs-buildpackage <none> pn devscripts-el <none> ii diffoscope 93 pn disorderfs <none> pn dose-extra <none> pn duck <none> ii faketime 0.9.7-2 ii gnuplot 5.2.2+dfsg1-2 ii gnuplot-x11 [gnuplot] 5.2.2+dfsg1-2 ii gpgv 2.2.5-1 ii how-can-i-help 16 ii libauthen-sasl-perl 2.1600-1 ii libfile-desktopentry-perl 0.22-1 pn libnet-smtps-perl <none> pn libterm-size-perl <none> ii libtimedate-perl 2.3000-2 ii libyaml-syck-perl 1.29-1+b3 pn mozilla-devscripts <none> ii mutt 1.9.4-3 ii openssh-client [ssh-client] 1:7.7p1-2 ii piuparts 0.84 pn postgresql-client <none> ii quilt 0.63-8.2 pn ratt <none> ii reprotest 0.7.7 ii svn-buildpackage 0.8.6 ii w3m 0.5.3-36 -- no debconf information
>From f3a6681d075ef7fdb4f1cf75c1cf406e9929740f Mon Sep 17 00:00:00 2001 From: Simon McVittie <s...@debian.org> Date: Mon, 9 Apr 2018 10:07:54 +0100 Subject: [PATCH] uscan: Handle absolute USCAN_DESTDIR in git mode An absolute path for USCAN_DESTDIR was handled everywhere else, but in git mode uscan blindly appended it to $curdir, resulting in paths like "/home/smcv/src/debian/ioquake3//home/smcv/tmp/build-area..." when used. Signed-off-by: Simon McVittie <s...@debian.org> --- scripts/uscan.pl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/uscan.pl b/scripts/uscan.pl index 06428164..bd7d693b 100755 --- a/scripts/uscan.pl +++ b/scripts/uscan.pl @@ -4435,6 +4435,7 @@ sub downloader ($$$$$) my $curdir = cwd(); $fname =~ m%(.*)/([^/]*)-([^_/-]*)\.tar\.(gz|xz|bz2|lzma)%; my $dst = $1; + my $abs_dst = abs_path($dst); my $pkg = $2; my $ver = $3; my $suffix = $4; @@ -4451,14 +4452,14 @@ sub downloader ($$$$$) $gitrepo_state=2; } } - uscan_verbose "Execute: git --git-dir=$destdir/$gitrepo_dir archive --format=tar --prefix=$pkg-$ver/ --output=$curdir/$dst/$pkg-$ver.tar $gitref\n"; - system('git', "--git-dir=$destdir/$gitrepo_dir", 'archive', '--format=tar', "--prefix=$pkg-$ver/", "--output=$curdir/$dst/$pkg-$ver.tar", $gitref) == 0 or uscan_die("git archive failed\n"); + uscan_verbose "Execute: git --git-dir=$destdir/$gitrepo_dir archive --format=tar --prefix=$pkg-$ver/ --output=$abs_dst/$pkg-$ver.tar $gitref\n"; + system('git', "--git-dir=$destdir/$gitrepo_dir", 'archive', '--format=tar', "--prefix=$pkg-$ver/", "--output=$abs_dst/$pkg-$ver.tar", $gitref) == 0 or uscan_die("git archive failed\n"); # If git cloned repo exists and not --debug ($verbose=1) -> remove it if ($gitrepo_state > 0 and $verbose < 1) { - system('rm', '-rf', "$curdir/$dst/$gitrepo_dir"); + system('rm', '-rf', "$abs_dst/$gitrepo_dir"); $gitrepo_state=0; } - chdir "$curdir/$dst" or uscan_die("Unable to chdir($curdir/$dst): $!\n"); + chdir "$abs_dst" or uscan_die("Unable to chdir($abs_dst): $!\n"); if ($suffix eq 'gz') { uscan_verbose "Execute: gzip -n -9 $pkg-$ver.tar\n"; system("gzip", "-n", "-9", "$pkg-$ver.tar") == 0 or uscan_die("gzip failed\n"); -- 2.17.0