Hi, the attached patch extends the source format 3.0 handling by adding support for .lzma and .xz compressed tarballs to svn-inject and svn-buildpackage. Patch is vs. SVN r15858 (where the original patch from Raphael adding 3.0 and bz2 support was already applied).
Andreas
Index: svn-buildpackage =================================================================== --- svn-buildpackage (revision 15861) +++ svn-buildpackage (working copy) @@ -172,6 +172,13 @@ "svn-noautodch" => \$opt_noautodch, ); +my %tar_compress_flags = ( + "gz" => "--gzip", + "bz2" => "--bzip2", + "lzma" => "--lzma", + "xz" => "--xz", +); + my $tagVersion; my $upVersion; my $upRNumber; @@ -362,36 +369,30 @@ mkdir $$c{"buildArea"} if (! -d $$c{"buildArea"}); -my $orig = $package."_".$upVersion.".orig.tar.gz"; -my $bzorig = $package."_".$upVersion.".orig.tar.bz2"; +# See #560391 for why we can't use dpkg-source --print-format . +my $is_format_3_0; +$is_format_3_0 = `grep \"3.0\" debian/source/format` + if (-f "debian/source/format"); -if ($$c{"origDir"}) { - my $bzorigExpect = $$c{"origDir"}."/$bzorig"; - # See #560391 for why we can't use dpkg-source --print-format . - my $check; - $check = `grep \"3.0\" debian/source/format` - if (-f "debian/source/format"); - if ((-f $bzorigExpect) and (defined $check)) - { - $origExpect = $$c{"origDir"}."/$bzorig"; # just for the messages - $orig = $bzorig; +my @origExtList = (".gz"); +push @origExtList, (".bz2", ".lzma", ".xz") if $is_format_3_0; +my $origTar = $package."_".$upVersion.".orig.tar"; +my $orig = $origt...@origextlist[0]; # fallback +$origExpect = ($$c{"origDir"} || "../tarballs") . "/$orig"; # fallback +my $origDir = $$c{"origDir"} || "$startdir/../tarballs"; +my $ext; +foreach $ext (@origExtList) { + if (-f "$origDir/$origTar$ext") { + $orig = "$origTar$ext"; + $origExpect = "$origDir/$orig"; # just for the messages + last; } - else - { - $origExpect = $$c{"origDir"}."/$orig"; # just for the messages - } - if (-f $origExpect) { - $origfile = long_path($origExpect); # for the actual operation - } -} else { - $origExpect = "../tarballs/$orig"; - if(-f ($startdir . "/../tarballs/$orig")) { - $origfile = long_path($startdir . "/../tarballs/$orig"); - } -}; -my $origDir = $$c{"origDir"} || "$startdir/../tarballs"; -my %otherOrigFiles = map { /\.orig-([\w-]+)\.tar\.(gz|bz2|lzma)$/ ? ($1 => $_) : () } grep { - /(?:^|\/)\Q${package}_${upVersion}\E\.orig-[\w-]+\.tar\.(gz|bz2|lzma)$/ +} +if (-f $origExpect) { + $origfile = long_path($origExpect); # for the actual operation +} +my %otherOrigFiles = map { /\.orig-([\w-]+)\.tar\.(gz|bz2|lzma|xz)$/ ? ($1 => $_) : () } grep { + /(?:^|\/)\Q${package}_${upVersion}\E\.orig-[\w-]+\.tar\.(gz|bz2|lzma|xz)$/ } <$origDir/*>; if(!defined($origfile)) { @@ -574,8 +575,7 @@ print _g("Reusing old build directory\n") if $opt_verbose; } else { - my $compress = "--gzip"; - $compress = "--bzip2" if ($orig =~ /\.tar\.bz2/); + my $compress = $tar_compress_flags{($orig=~/\.tar\.([^.]*)$/)[0]}; withecho "tar", "--no-same-owner", "--no-same-permissions", "--extract", $compress, "--file", $origfile, "--directory", "$ba/tmp-$mod"; my @entries = (<$ba/tmp-$mod/*>); if (@entries == 1) { Index: svn-inject =================================================================== --- svn-inject (revision 15861) +++ svn-inject (working copy) @@ -144,6 +144,13 @@ "3.0 (native)" => 1, ); +my %tar_compress_flags = ( + "gz" => "--gzip", + "bz2" => "--bzip2", + "lzma" => "--lzma", + "xz" => "--xz", +); + #shamelessly copied and slightly modified from svn-bp my @CONFARGS; for my $file ($ENV{"HOME"}."/.svn-buildpackage.conf") { @@ -306,17 +313,17 @@ $dscFormat = $1 if (/^Format: (.+)\n/); $package=$1 if(/^Source: (.+)\n/); $debVersion=$1 if(/^Version: (.+)\n/ && !$debVersion); - if(/^(\s\w+\s\d+\s+)((.*)_(.*).orig.tar.(gz|bz2))/) + if(/^(\s\w+\s\d+\s+)((.*)_(.*).orig.tar.(gz|bzip2|lzma|xz))/) { $dscOrig="$fromDir/$2"; $upsVersion=$4; } - if (/^(\s\w+\s\d+\s+)((.*)_(.*).orig(?:-([\w-]+)).tar.(gz|bz2))/) + if (/^(\s\w+\s\d+\s+)((.*)_(.*).orig(?:-([\w-]+)).tar.(gz|bzip2|lzma|xz))/) { $dscOtherOrig{$5}="$fromDir/$2"; } - $dscDebianTar = "$fromDir/$1" if(/^\s\w+\s\d+\s(.+\.debian\.tar\.(gz|bz2))\n/); - $dscDiff = "$fromDir/$1" if(/^\s\w+\s\d+\s(.+\.diff.(gz|bz2))\n/); + $dscDebianTar = "$fromDir/$1" if(/^\s\w+\s\d+\s(.+\.debian\.tar\.(gz|bzip2|lzma|xz))\n/); + $dscDiff = "$fromDir/$1" if(/^\s\w+\s\d+\s(.+\.diff.(gz|bzip2|lzma|xz))\n/); } close($dsc); @@ -399,7 +406,8 @@ chdir "$subupsTags"; # extract the whole package and use its Debian version as upstream version - withecho "tar", $opt_tarquiet, ($dscOrig=~/bz2$/i ? "-j" : "-z"), "-x", "-f", $dscOrig; + my $compress = $tar_compress_flags{($dscOrig=~/\.tar\.([^.]*)$/)[0]}; + withecho "tar", $opt_tarquiet, $compress, "-x", "-f", $dscOrig; oldSvnDirsCheck "."; my @filesInside=(<*>); @@ -453,7 +461,7 @@ withecho "mkdir", "-p", $dir; chdir $dir; withecho "dpkg-source -x $opt_dsc"; - system "rm -f *.gz *.bz2"; + system "rm -f *.gz *.bz2 *.lzma *.xz"; withecho "mv * $base"; } chdir $tempdir; @@ -506,7 +514,7 @@ } else { withecho "dpkg-source -x $opt_dsc"; } - system "rm -f *.gz *.bz2"; + system "rm -f *.gz *.bz2 *.lzma *.xz"; # now use svn_load_dirs to upgrade the trunk fork to Debian versions. # For mergeWithUpstream mode, drop all unchanged files my $dirname=<*>;