Add tools to update debian/control's build dependencies.

The canonical list of Perl module dependencies are in
C4::Installer::PerlDependencies::PERL_DEPS now. Add a script
(debian/list-deps) to turn that into a list of Debian package names.

Because that is a slow process, and the output rarely changes, do
not do that at build time. Also, doing it at build time would require
modifying debian/control in evil ways.

Instead, add another tool, debian/update-control, which reads the
new file debian/control.in, and adds the output of debian/list-deps to
Build-Depends and creates a new debian/control.

debian/control.in is the master file. If changes are needed, that should
be edited. For performance and convenience reasons, the output is also kept
in git, but don't edit debian/control directly, please. Such changes
might get lost by the next commit by someone else.

Whenever PERL_DEPS changes, debian/update-control should be run as well
and the result committed to git.

This is not quite as automatic as it might be, but should be good enough.
It avoids keeping the list of Perl modules in two places.

Note that since it seems impossible to automatically figure out the Debian
package version that corresponds to a Perl module version, I have not
tried to do that at all.

Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
This commit is contained in:
Lars Wirzenius 2010-05-28 16:29:48 +12:00 committed by Galen Charlton
parent 469b32f318
commit 2fcc4fe94e
5 changed files with 187 additions and 58 deletions

View File

@ -468,6 +468,13 @@ A module for cataloging Koha Perl dependencies.
This module's sole purpose for existence is to provide a single location to catalog all Koha Perl dependencies. New dependencies should be added to the
end of the outer hash and follow the key/value pattern used in the other dependencies.
=head2 Debian
If you change the list of dependencies, and you use Debian, please also
run the debian/update-control script and commit the modifed version of
debian/control into git as well. If you're not running Debian, don't
worry about it.
=head1 AUTHOR
Chris Nighswonger <cnighswonger AT foundations DOT edu>

128
debian/control vendored
View File

@ -6,64 +6,76 @@ Standards-Version: 3.8.4
# NOTA BENE: Build dependencies end up as runtime dependencies as well.
# See debian/rules, the override_dh_gencontrol rules.
# There are some exceptions.
Build-Depends: debhelper (>= 7.0.50), gettext,
perl,
libalgorithm-checkdigits-perl,
libauthen-cas-client-perl,
libbiblio-endnotestyle-perl,
libcgi-session-perl,
libcgi-session-serialize-yaml-perl,
libclass-accessor-perl,
libclass-factory-util-perl,
libdbd-sqlite2-perl,
libdbd-mysql-perl,
libdbi-perl,
libdata-ical-perl,
libdate-calc-perl,
libdate-ical-perl,
libdate-manip-perl,
libemail-date-perl,
libgd-gd2-perl,
libgraphics-magick-perl,
libhtml-scrubber-perl,
libhtml-template-pro-perl,
libjson-perl,
liblingua-stem-perl,
liblingua-stem-snowball-perl,
liblist-moreutils-perl,
liblocale-po-perl,
libmarc-charset-perl,
libmarc-crosswalk-dublincore-perl,
libmarc-record-perl,
libmarc-xml-perl,
libmime-lite-perl,
libmail-sendmail-perl,
libnet-ldap-perl,
libnet-z3950-zoom-perl,
libnumber-format-perl,
libpdf-api2-perl,
libpdf-reuse-perl,
libpdf-reuse-barcode-perl,
libpdf-table-perl,
libpoe-perl,
libsms-send-perl,
libschedule-at-perl,
libstorable-perl,
libtext-csv-perl,
libxml-dumper-perl,
libxml-libxml-perl,
libxml-libxslt-perl,
libxml-rss-perl,
libxml-sax-writer-perl,
libxml-simple-perl,
libyaml-syck-perl,
libyaml-perl,
libmodule-install-perl,
libhttp-oai-perl,
libtext-csv-encoded-perl,
libpdf-api2-simple-perl,
libmemoize-memcached-perl,
liblocale-currency-format-perl
Build-Depends: libalgorithm-checkdigits-perl,
libauthen-cas-client-perl,
libbiblio-endnotestyle-perl,
libcgi-pm-perl | perl-modules,
libcgi-session-perl,
libcgi-session-serialize-yaml-perl,
libclass-accessor-perl,
libclass-factory-util-perl,
libdata-ical-perl,
libdate-calc-perl,
libdate-ical-perl,
libdate-manip-perl,
libdatetime-perl,
libdbd-mysql-perl,
libdbd-sqlite2-perl,
libdbi-perl,
libdigest-sha-perl | perl,
libemail-date-perl,
libfile-temp-perl | perl-modules,
libgd-barcode-perl,
libgd-gd2-noxpm-perl | libgd-gd2-perl,
libgraphics-magick-perl,
libhtml-scrubber-perl,
libhtml-template-pro-perl,
libhttp-oai-perl,
libjson-perl,
liblingua-stem-perl,
liblingua-stem-snowball-perl,
liblist-moreutils-perl,
liblocale-currency-format-perl,
liblocale-po-perl,
libmail-sendmail-perl,
libmarc-charset-perl,
libmarc-crosswalk-dublincore-perl,
libmarc-record-perl,
libmarc-xml-perl,
libmemoize-memcached-perl,
libmime-lite-perl,
libnet-ldap-perl,
libnet-z3950-zoom-perl,
libnumber-format-perl,
libpdf-api2-perl,
libpdf-api2-simple-perl,
libpdf-reuse-barcode-perl,
libpdf-reuse-perl,
libpdf-table-perl,
libpoe-perl,
libscalar-list-utils-perl | perl-base,
libschedule-at-perl,
libsms-send-perl,
libtest-harness-perl | perl-modules,
libtest-simple-perl | perl-modules,
libtext-csv-encoded-perl,
libtext-csv-perl,
libtext-csv-xs-perl,
libtext-iconv-perl,
liburi-perl,
libwww-perl,
libxml-dumper-perl,
libxml-libxml-perl,
libxml-libxslt-perl,
libxml-rss-perl,
libxml-sax-perl,
libxml-sax-writer-perl,
libxml-simple-perl,
libyaml-syck-perl,
perl,
perl-base,
perl-modules,
debhelper (>= 7.0.50), gettext
Package: koha-common
Architecture: all

50
debian/control.in vendored Normal file
View File

@ -0,0 +1,50 @@
Source: koha
Maintainer: Lars Wirzenius <lars@catalyst.net.nz>
Section: web
Priority: optional
Standards-Version: 3.8.4
# NOTA BENE: Build dependencies end up as runtime dependencies as well.
# See debian/rules, the override_dh_gencontrol rules.
# There are some exceptions.
Build-Depends:__AUTODEPENDS__,
debhelper (>= 7.0.50), gettext
Package: koha-common
Architecture: all
Depends: ${shlib:Depends}, ${misc:Depends}, ${koha:Depends},
apache2,
apache2-mpm-itk,
at,
daemon,
idzebra-2.0,
libjs-jquery,
libjs-yui,
mysql-client,
tinymce2,
yaz
Suggests: mysql-server
Homepage: http://koha-community.org/
Description: integrated (physical) library management system
Koha is an Integrated Library Managment system for real-world libraries
(the kinds with books).
.
This package contains everything needed to run Koha, except the site
specific configuration files. See the package koha for the rest.
Package: koha
Architecture: all
Depends: ${shlib:Depends}, ${misc:Depends},
koha-common,
dbconfig-common,
mysql-server
Homepage: http://koha-community.org/
Description: integrated (physical) library management system
Koha is an Integrated Library Managment system for real-world libraries
(the kinds with books).
.
This package contains site-specific configuration files and sets up
the MySQL database for Koha. For simplicity, the database server is
assumed to run on the same host as Koha.
.
Please see /usr/share/doc/koha/README.Debian for instructions on how to
configure things after installing this package.

49
debian/list-deps vendored Executable file
View File

@ -0,0 +1,49 @@
#!/usr/bin/perl
#
# Write dependency list from Koha PerlDependencies.pm, in Debian format.
#
# Copyright 2010 Catalyst IT, Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
use strict;
use warnings;
use C4::Installer::PerlDependencies;
my $deps = $C4::Installer::PerlDependencies::PERL_DEPS;
my $prefix = "^/usr/((lib|share)/perl5|(lib|share)/perl/[0-9.]+)";
foreach my $module (keys %$deps) {
my $ver = $deps->{$module}->{'min_ver'};
my $subpath = $module;
$subpath =~ s,::,/,g;
my $output =
qx(apt-file -l -x search "$prefix/$subpath.pm\$");
my @lines = split(/\n/, $output);
if (scalar(@lines) == 1 && $lines[0] ne "") {
my $pkg = $lines[0];
print "$pkg\n";
} elsif (scalar(@lines) > 1) {
foreach my $pkg (@lines) {
print " | " if ($pkg ne $lines[0]);
print "$pkg";
}
print "\n";
} else {
print "EEEK: unknown package for $module\n";
}
}

11
debian/update-control vendored Executable file
View File

@ -0,0 +1,11 @@
#!/bin/sh
set -e
deps="$(debian/list-deps |
sort -u |
sed 's/.*/ &,\\n/' |
tr -d '\n' |
sed 's/,\\n$//')"
sed "s/__AUTODEPENDS__/$deps/" debian/control.in > debian/control