On Sat, Aug 20, 2005 at 12:47:55PM -0700, Russ Allbery wrote:
> Package: debarchiver
> Version: 0.3.2
> Tags: patch
> Followup-For: Bug #317472
> 
> Here is a patch implementing signed Release support.  The Release files
> are generated (with apt-ftparchive release) unconditionally, and are
> signed if $gpgkey is set in the configuration.
> 
> This code can be considerably simplified if my patch to apt-ftparchive
> to generate Release files at the same time as the indexes is ever
> accepted (Bug #262204), but this should do for the time being.

Uploaded now. Thanks for the work.

Regards,

// Ola

> -- System Information:
> Debian Release: testing/unstable
>   APT prefers testing
>   APT policy: (990, 'testing'), (500, 'unstable')
> Architecture: i386 (i686)
> Shell:  /bin/sh linked to /bin/bash
> Kernel: Linux 2.4.30
> Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) (ignored: LC_ALL set to C)
> 
> Versions of packages debarchiver depends on:
> ii  adduser                       3.66       Add and remove users and groups
> ii  apt-utils                     0.5.28.6   APT utility programs
> ii  dpkg-dev                      1.13.10    Package building tools for Debian
> ii  opalmod                       0.1.13     A set of Perl modules for 
> various 
> 
> debarchiver recommends no packages.
> 
> -- no debconf information

> diff -rupN debarchiver-0.3.2.save/debian/control 
> debarchiver-0.3.2/debian/control
> --- debarchiver-0.3.2.save/debian/control     2005-02-27 06:53:10.000000000 
> -0800
> +++ debarchiver-0.3.2/debian/control  2005-08-20 12:40:32.000000000 -0700
> @@ -8,7 +8,7 @@ Standards-Version: 3.6.1
>  Package: debarchiver
>  Architecture: all
>  Depends: opalmod (>= 0.1.10), apt-utils | dpkg-dev, adduser
> -Suggests: devscripts
> +Suggests: devscripts, gnupg
>  Description: Tool to handle debian package archives
>   This tool can create a potato like file structure that dselect,
>   apt-get and similar tools can use for easier installation.
> diff -rupN debarchiver-0.3.2.save/src/debarchiver.pl 
> debarchiver-0.3.2/src/debarchiver.pl
> --- debarchiver-0.3.2.save/src/debarchiver.pl 2005-07-04 09:03:36.000000000 
> -0700
> +++ debarchiver-0.3.2/src/debarchiver.pl      2005-08-20 12:41:53.000000000 
> -0700
> @@ -271,6 +271,7 @@ will be parsed. Here you can change the 
>          \%release    Additional information to add to generated Release
>                       files.  Supported keys are origin, label, and
>                       description.
> +     \$gpgkey        GnuPG key to use to sign the archive.
>  ";
>  
>  
> ###############################################################################
> @@ -895,6 +896,62 @@ sub generateIndexConfig() {
>  }
>  
>  
> ###############################################################################
> +# Name:              handleRelease
> +# Description:       Handles creation of Release files via apt-ftparchive.
> +# Arguments: Path to the directory to generate Release for
> +#            Archive suite this Release file is for
> +#            Reference to array of sections
> +#            Reference to array of architectures
> +# Uses:              %distmapping, %release, $gpgkey
> +# Changelog:
> +#  2005-08-20 Russ Allbery <[EMAIL PROTECTED]>
> +#    Written.
> +###############################################################################
> +
> +sub generateRelease([EMAIL PROTECTED]@) {
> +    my ($path, $suite, $dsections, $darches) = @_;
> +    my $codename = $distmapping{$suite} || $suite;
> +
> +    # Judging from the Release file in the Debian archive, "all" and "source"
> +    # shouldn't be included.
> +    my @arches = grep { $_ ne 'all' && $_ ne 'source' } @$darches;
> +
> +    # We can't use the same config as generate, since release wants the
> +    # variables set in a different place.
> +    my $configpath = "$path/.apt-ftparchive.conf";
> +    action(! open(CONF, "> $configpath"),
> +        "Create apt-ftparchive Release config for $path", 2);
> +    my $prefix = 'APT::FTPArchive::Release';
> +    print CONF "${prefix}::Origin \"$release{origin}\";\n"
> +     if defined $release{origin};
> +    print CONF "${prefix}::Label \"$release{label}\";\n"
> +     if defined $release{label};
> +    print CONF "${prefix}::Description \"$release{description}\";\n"
> +     if defined $release{description};
> +    print CONF "${prefix}::Suite \"$suite\";\n";
> +    print CONF "${prefix}::Codename \"$codename\";\n";
> +    print CONF "${prefix}::Architectures \"", join (' ', @arches), "\";\n";
> +    print CONF "${prefix}::Components \"", join (' ', @$dsections), "\";\n";
> +    close CONF;
> +
> +    # Do the generation and optional signing.
> +    unlink("$path/Release");
> +    cmdaction("apt-ftparchive -c $configpath release $path > Release",
> +           "Generate Release file for $path",
> +           3);
> +    cmdaction("mv Release $path/Release",
> +           "Put Release for $path in the right location",
> +           3);
> +    if ($gpgkey) {
> +     cmdaction("gpg -a -b -s -u '$gpgkey' -o $path/Release.gpg"
> +               . " $path/Release",
> +               "Signing Release file for $path",
> +               3);
> +    }
> +    unlink("$configpath");
> +}
> +
> +###############################################################################
>  # Name:              handleIndex
>  # Description:       Handles the indexing via apt-ftparchive.
>  # Uses:              %dests, $destdir
> @@ -908,6 +965,8 @@ sub generateIndexConfig() {
>  #    Modified to add bzip2 support and handle contents-all in a proper way.
>  #  2005-05-02 Ola Lundqvist <[EMAIL PROTECTED]>
>  #    Bugfix for bzip2 support.
> +#  2005-08-20 Russ Allbery <[EMAIL PROTECTED]>
> +#       Call generateRelease for Release file support (optionally signed).
>  
> ###############################################################################
>  
>  sub handleIndex() {
> @@ -981,6 +1040,9 @@ sub handleIndex() {
>           unlink("$d/$s/binary-all/Packages", "$d/$s/binary-all/Packages.gz",
>                  "$d/$s/binary-all/Packages.bz2");
>       }
> +
> +     # This has to be done after we integrate the Packages files.
> +     generateRelease($d, $d, @dsections, @darches);
>      }
>  
>      &destinationRelease();
> @@ -2089,6 +2151,12 @@ An array of strings that should be maile
>  
>  Additional information to add to generated Release files.  Supported keys 
> are origin, label, and description.
>  
> +=item B<$gpgkey>
> +
> +GnuPG key to use to sign the archive.  If this variable is set, the Release 
> file for each changed section of the archive will be signed with GnuPG using 
> $gpgkey as the key ID.  Unless you use a key that has no passphrase, you will 
> need to run B<debarchiver> interactively when using this option so that you 
> can supply the passphrase.
> +
> +=back
> +
>  =head1 PACKAGE INDEXING
>  
>  There are two ways to generate the indexes that B<apt-get> relies on.


-- 
 --------------------- Ola Lundqvist ---------------------------
/  [EMAIL PROTECTED]                     Annebergsslingan 37      \
|  [EMAIL PROTECTED]                 654 65 KARLSTAD          |
|  +46 (0)54-10 14 30                  +46 (0)70-332 1551       |
|  http://www.opal.dhs.org             UIN/icq: 4912500         |
\  gpg/f.p.: 7090 A92B 18FE 7994 0C36  4FE4 18A1 B1CF 0FE5 3DD9 /
 ---------------------------------------------------------------


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to