[buildd-tools-devel] Bug#559533: Bug#559533: sbuild: does not support new source formats

Roger Leigh rleigh at codelibre.net
Sun Dec 13 21:54:14 UTC 2009


On Sat, Dec 05, 2009 at 02:39:38AM -0500, Andres Mejia wrote:
> From 6cccbe91eb787cdf3cb77eed10be88e827b64fda Mon Sep 17 00:00:00 2001
> From: Andres Mejia <mcitadel at gmail.com>
> Date: Sat, 5 Dec 2009 02:35:09 -0500
> Subject: [PATCH] Allow sbuild to support new source formats

I think some bits need a little tweaking to make the matching a bit
stricter, and I think there's a bit missing in one place.  I'd must
also give due credit to Niels Thykier for his comments on this
patch on #debian-devel.

> diff --git a/lib/Sbuild/Build.pm b/lib/Sbuild/Build.pm
> index 6aae838..be15fd0 100644
> --- a/lib/Sbuild/Build.pm
> +++ b/lib/Sbuild/Build.pm
> @@ -572,7 +572,7 @@ sub fetch_source_files {
>  
>      $dsctext =~ /^Files:\s*\n((\s+.*\s*\n)+)/mi and $files = $1;
>      @other_files = map { (split( /\s+/, $_ ))[3] } split( "\n", $files );
> -    $files =~ /(\Q$pkg\E.*orig.tar.gz)/mi and $orig = $1;
> +    $files =~ /(\Q$pkg\E\.(?:orig\.)?tar\.[a-z\d]+)$/mi and $orig = $1;

The tar extension is one of gz, bz2, lzma and xz according to
dpkg-source(1).  I'd rather do a strict match of (gz|bz2|lzma|xz).
Also, does it need to match orig-component here, or is this
sufficient?

>      $self->log_subsubsection("Check arch");
>      if (!$dscarchs) {
> @@ -2375,7 +2375,22 @@ sub fixup_pkgv {
>      my $pkgv = shift;
>  
>      $pkgv =~ s,^.*/,,; # strip path
> -    $pkgv =~ s/\.(dsc|diff\.gz|tar\.gz|deb)$//; # strip extension
> +    $pkgv =~ s{
> +        \. # strip the preceding dot
> +        (  # for grouping the variuos suffixes
> +            dsc| # a dsc
> +            deb| # or deb
> +            diff\.gz| # or diff.gz
> +            debian\.tar\.[a-z\d]+| # or debian.tar.$extension

As above, I'd rather use (gz|bz2|lzma|xz) in place of [a-z\d]+

> +            ( # or some tarball
> +                orig # orig
> +                (-[\w-]+)? # followed by component part 0 or 1 time

I'm not sure this is correct.  From dpkg-source(1): "component can only
contain alphanumeric characters and dashes ("-")".  I'd rather match
on the strict [[:alnum:]-] (or it's Perlish equivalent) rather than
any non-whitespace.

> +                \. # followed by a dot
> +            )? # matches 0 time for native, 1 time for upstream
> +            tar # tar portion
> +            \.[a-z\d]+ # matches any extension like gz, bz2, etc.

This is another case of allowing all extentions.

> +        )$ # must be at the end of the line
> +        }{}x; # strip extension
>      $pkgv =~ s/_[a-zA-Z\d+~-]+\.(changes|deb)$//; # strip extension
>  
>      return $pkgv;
> @@ -2510,8 +2525,10 @@ sub dsc_files {
>      my $stanza = @{$stanzas}[0];
>  
>      # We're only interested in the name of the files in the Files field.
> +    my $source = ${$stanza}{'Source'};
> +    $source =~ s/\s+//msg;
>      my $entry = ${$stanza}{'Files'};
> -    @files = grep(/\.tar\.gz$|\.diff\.gz$/, split(/\s/, $entry));
> +    @files = grep(/$source/, split(/\s+/, $entry));

I'm not entirely clear on what this bit is doing.  Could you possibly
explain what the change is here?


Many thanks,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linux             http://people.debian.org/~rleigh/
 `. `'   Printing on GNU/Linux?       http://gutenprint.sourceforge.net/
   `-    GPG Public Key: 0x25BFB848   Please GPG sign your mail.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/buildd-tools-devel/attachments/20091213/0023b6c1/attachment.pgp>


More information about the Buildd-tools-devel mailing list