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]