Package: devscripts
Version: 2.10.57
Severity: wishlist
File: /usr/bin/uscan
Tags: patch
Hello,
upstream ( http://ktorrent.org/downloads/ ) uses directory structure based on
released versions. Therefore, beta/rc releases need mangling (e.g. 3.3rc1 to
3.3~rc1) in order to be not prefered over stable releases (e.g. 3.3).
Therefore, I propose to support dirversionmangle option. The patch attached. I
hope I didn't miss anything, code is kind of duplicated in a couple of places.
Whether to add it to meta 'versionmangle', it is up to you.
-- Package-specific info:
--- /etc/devscripts.conf ---
DEBSIGN_MAINT="Modestas Vainius"
DEBCHANGE_RELEASE_HEURISTIC=changelog
DEBCHANGE_MULTIMAINT_MERGE=yes
DEBCHANGE_MAINTTRAILER=yes
--- ~/.devscripts ---
Not present
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (101, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.31-1-amd64 (SMP w/1 CPU core)
Locale: LANG=lt_LT.UTF-8, LC_CTYPE=lt_LT.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages devscripts depends on:
ii dpkg-dev 1.15.5.2 Debian package development tools
ii libc6 2.10.1-7 GNU C Library: Shared libraries
ii perl 5.10.1-8 Larry Wall's Practical Extraction
Versions of packages devscripts recommends:
ii at 3.1.11-1 Delayed job execution and batch pr
ii bsd-mailx [mailx] 8.1.2-0.20090911cvs-2 simple mail user agent
ii bzr 2.0.2-1 easy to use distributed version co
ii curl 7.19.7-1 Get a file from an HTTP, HTTPS or
ii cvs 1:1.12.13-12 Concurrent Versions System
ii dctrl-tools 2.13.1 Command-line tools to process Debi
pn debian-keyring <none> (no description available)
pn debian-maintainers <none> (no description available)
ii dput 0.9.5.1 Debian package upload tool
ii dupload 2.6.6 utility to upload Debian packages
ii equivs 2.0.7-0.1 Circumvent Debian package dependen
ii fakeroot 1.14.4-1 Gives a fake root environment
ii git-core 1:1.6.5.3-1 fast, scalable, distributed revisi
ii gnupg 1.4.10-2 GNU privacy guard - a free PGP rep
ii iceweasel [www-bro 3.5.5-1 lightweight web browser based on M
ii konqueror [www-bro 4:4.3.3-0r1 KDE 4's advanced file manager, web
pn libauthen-sasl-per <none> (no description available)
ii libcrypt-ssleay-pe 0.57-2 Support for https protocol in LWP
ii libparse-debcontro 2.005-2 Easy OO parsing of Debian control-
ii libsoap-lite-perl 0.710.10-1 Perl implementation of a SOAP clie
pn libterm-size-perl <none> (no description available)
ii libtimedate-perl 1.1900-1 Time and date functions for Perl
ii liburi-perl 1.37+dfsg-1 Manipulates and accesses URI strin
ii libwww-perl 5.833-1 Perl HTTP/WWW client/server librar
pn libyaml-syck-perl <none> (no description available)
ii links [www-browser 2.2-1+b1 Web browser running in text mode
ii links2 [www-browse 2.2-1+b1 Web browser running in both graphi
ii lintian 2.2.18 Debian package checker
ii lsb-release 3.2-23 Linux Standard Base version report
ii lynx-cur [www-brow 2.8.8dev.1-1 Text-mode WWW Browser with NLS sup
ii lzma 4.43-14 Compression method of 7z format in
ii mailx 1:20081101-2 Transitional package for mailx ren
ii man-db 2.5.6-4 on-line manual pager
ii openssh-client [ss 1:5.1p1-8 secure shell client, an rlogin/rsh
ii patch 2.5.9-5 Apply a diff file to an original
ii patchutils 0.3.1-2 Utilities to work with patches
ii sensible-utils 0.0.1 Utilities for sensible alternative
ii strace 4.5.19-1 A system call tracer
ii subversion 1.6.6dfsg-1 Advanced version control system
ii unzip 6.0-1 De-archiver for .zip files
ii w3m [www-browser] 0.5.2-2.1 WWW browsable pager with excellent
pn wdiff <none> (no description available)
ii wget 1.12-1.1 retrieves files from the web
Versions of packages devscripts suggests:
ii build-essential 11.4 Informational list of build-essent
pn cvs-buildpackage <none> (no description available)
pn devscripts-el <none> (no description available)
pn gnuplot <none> (no description available)
pn libfile-desktopentry-perl <none> (no description available)
pn libnet-smtp-ssl-perl <none> (no description available)
ii mutt 1.5.20-4 text-based mailreader supporting M
pn svn-buildpackage <none> (no description available)
ii w3m 0.5.2-2.1 WWW browsable pager with excellent
-- no debconf information
--- uscan.orig 2009-11-24 01:52:15.000000000 +0200
+++ uscan 2009-11-24 12:01:49.000000000 +0200
@@ -765,6 +765,9 @@
elsif ($opt =~ /^filenamemangle\s*=\s*(.+)/) {
@{$options{'filenamemangle'}} = split /;/, $1;
}
+ elsif ($opt =~ /^dirversionmangle\s*=\s*(.+)/) {
+ @{$options{'dirversionmangle'}} = split /;/, $1;
+ }
elsif ($opt =~ /^downloadurlmangle\s*=\s*(.+)/) {
@{$options{'downloadurlmangle'}} = split /;/, $1;
}
@@ -1553,6 +1556,15 @@
my $href = $2;
if ($href =~ m&^$dirpattern/?$&) {
my $mangled_version = join(".", $href =~ m&^$dirpattern/?$&);
+ foreach my $pat (@{$optref->{'dirversionmangle'}}) {
+ if (! safe_replace(\$mangled_version, $pat)) {
+ warn "$progname: In $watchfile, potentially"
+ . " unsafe or malformed dirversionmangle"
+ . " pattern:\n '$pat'"
+ . " found.\n";
+ return 1;
+ }
+ }
push @hrefs, [$mangled_version, $href];
}
}
@@ -1560,7 +1572,7 @@
@hrefs = Devscripts::Versort::versort(@hrefs);
if ($debug) {
print "-- Found the following matching hrefs (newest first):\n";
- foreach my $href (@hrefs) { print " $$href[1]\n"; }
+ foreach my $href (@hrefs) { print " $$href[1] (version
$$href[0])\n"; }
}
my $newdir = $hrefs[0][1];
# just give the final directory component
@@ -1611,6 +1623,15 @@
m/(?:<\s*a\s+[^>]*href\s*=\s*\")((?-i)$pattern)\"/gi) {
my $dir = $1;
my $mangled_version = join(".", $dir =~ m/^$pattern$/);
+ foreach my $pat (@{$optref->{'dirversionmangle'}}) {
+ if (! safe_replace(\$mangled_version, $pat)) {
+ warn "$progname: In $watchfile, potentially"
+ . " unsafe or malformed dirversionmangle"
+ . " pattern:\n '$pat'"
+ . " found.\n";
+ return 1;
+ }
+ }
push @dirs, [$mangled_version, $dir];
}
} else {
@@ -1619,13 +1640,22 @@
while ($content =~ m/($pattern)(\s+->\s+\S+)?$/mg) {
my $dir = $1;
my $mangled_version = join(".", $dir =~ m/^$pattern$/);
+ foreach my $pat (@{$optref->{'dirversionmangle'}}) {
+ if (! safe_replace(\$mangled_version, $pat)) {
+ warn "$progname: In $watchfile, potentially"
+ . " unsafe or malformed dirversionmangle"
+ . " pattern:\n '$pat'"
+ . " found.\n";
+ return 1;
+ }
+ }
push @dirs, [$mangled_version, $dir];
}
}
if (@dirs) {
if ($debug) {
print STDERR "-- Found the following matching dirs:\n";
- foreach my $dir (@dirs) { print STDERR " $$dir[1]\n"; }
+ foreach my $dir (@dirs) { print STDERR " $$dir[1] (version
$$dir[0])\n"; }
}
@dirs = Devscripts::Versort::versort(@dirs);
my ($newversion, $newdir) = @{$dirs[0]};