summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2016-10-15 17:50:26 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2016-10-15 19:38:09 +0100
commita69af4ad7b2a029fd9902df6e4b7ee824151020a (patch)
tree67876f54e402e2aa69f7e33924c54f6313da76d7
parent02bc0d2ca13bda7484c72b30cd20a7e36097da34 (diff)
Infra: dgit-infrastructure has, and uses, its own copies of the perl modules
This avoids introducing a versioned dependency between dgit and dgit-infrastructure (and also makes it easier to test cross-version compatibility). Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rw-r--r--Debian/Dgit/Infra.pm9
-rw-r--r--Makefile5
-rw-r--r--debian/changelog4
-rw-r--r--debian/control6
-rwxr-xr-xdebian/rules20
5 files changed, 39 insertions, 5 deletions
diff --git a/Debian/Dgit/Infra.pm b/Debian/Dgit/Infra.pm
index 1f2c702..eff460b 100644
--- a/Debian/Dgit/Infra.pm
+++ b/Debian/Dgit/Infra.pm
@@ -5,6 +5,13 @@ package Debian::Dgit::Infra;
use strict;
use warnings;
-# push @INC, q{usr/share/dgit/infra/perl5}; ###substituted###
+# Scripts and programs which are going to `use Debian::Dgit' but which
+# live in dgit-infrastructure (ie are installed with install-infra)
+# should `use Debian::Dgit::Infra' first. All this module does is
+# adjust @INC so that the script gets the version of the script from
+# the dgit-infrastructure package (which is installed in a different
+# location and may be a different version).
+
+# unshift @INC, q{/usr/share/dgit/infra/perl5}; ###substituted###
1;
diff --git a/Makefile b/Makefile
index d3e26b1..6fcc9bd 100644
--- a/Makefile
+++ b/Makefile
@@ -41,7 +41,10 @@ INFRA_PROGRAMS=dgit-repos-server dgit-ssh-dispatch \
dgit-repos-policy-debian dgit-repos-admin-debian \
dgit-repos-policy-trusting dgit-mirror-rsync
INFRA_EXAMPLES=get-dm-txt ssh-wrap drs-cron-wrap get-suites
-INFRA_PERLMODULES=Debian/Dgit/Policy/Debian.pm
+INFRA_PERLMODULES= \
+ Debian/Dgit.pm \
+ Debian/Dgit/Infra.pm \
+ Debian/Dgit/Policy/Debian.pm
all:
diff --git a/debian/changelog b/debian/changelog
index f36dbbd..4992dde 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -56,6 +56,10 @@ dgit (1.5~~) unstable; urgency=medium
* Better error handling in dgit-repos-policy-debian.
* dgit-repos-policy-debian.: fix git-cat-file-handling with multiple
taints in db (!).
+ * dgit-infrastructure has, and uses, its own copies of the perl modules.
+ This avoids introducing a versioned dependency between dgit and
+ dgit-infrastructure (and also makes it easier to test cross-version
+ compatibility).
Documentation:
* Document the dgit-distro.DISTRO.quilt-mode config setting.
diff --git a/debian/control b/debian/control
index 294b811..edf8c09 100644
--- a/debian/control
+++ b/debian/control
@@ -26,10 +26,12 @@ Description: git interoperability with the Debian archive
dgit clone and dgit fetch construct git commits from uploads.
Package: dgit-infrastructure
-Depends: ${misc:Depends}, perl, git-core, dgit, gpgv, chiark-utils-bin,
+Depends: ${misc:Depends}, perl, git-core, gpgv, chiark-utils-bin,
libjson-perl, libdigest-sha-perl, libdbd-sqlite3-perl, sqlite3
+Recommends: dgit
Architecture: all
Priority: extra
Description: dgit server backend infrastructure
This package contains tools which are useful for setting up a dgit
- git repository server. You probably want dgit, the client package.
+ git repository server. You probably want dgit, the client package,
+ instead of dgit-infrastructure.
diff --git a/debian/rules b/debian/rules
index 6580f96..9249f88 100755
--- a/debian/rules
+++ b/debian/rules
@@ -30,9 +30,27 @@ override_dh_gencontrol:
v=$$(perl -ne 'print if s/^version:\s+//i' DEBIAN/control); \
perl -i -pe "s/UNRELEASED/$$v/g if m/###substituted###/" usr/bin/dgit
+globalperl=/usr/share/perl5
+infraperl=/usr/share/dgit/infra/perl5
+
override_dh_auto_install:
make install prefix=/usr DESTDIR=debian/dgit
- make install-infra prefix=/usr DESTDIR=debian/dgit-infrastructure
+ make install-infra prefix=/usr DESTDIR=debian/dgit-infrastructure \
+ perldir=$(infraperl)
+# # Most of the Perl modules in dgit-infrastructure live in
+# # $(infraperl). The exception is Debian::Dgit::Infra, which
+# # lives in $(globalperl) and adds $(infraperl) to @INC.
+ set -ex; \
+ base=debian/dgit-infrastructure; \
+ mod=Debian/Dgit/Infra.pm; \
+ src=$${base}$(infraperl)/$${mod}; \
+ dst=$${base}$(globalperl)/$${mod}; \
+ mkdir -p $${dst%/*}; \
+ mv -f $$src $$dst; \
+ perl -i -p -e 'next unless m/###substituted###/;' \
+ -e 'next unless s/^# (?=unshift \@INC,)//;' \
+ -e 'die unless s{q\{\S+\}}{q{$(infraperl)}};' \
+ $$dst
debian/tests/control: tests/enumerate-tests debian/tests/control.in
$< gencontrol >$@.new && mv -f $@.new $@