From a69af4ad7b2a029fd9902df6e4b7ee824151020a Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 15 Oct 2016 17:50:26 +0100 Subject: [PATCH] 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 --- Debian/Dgit/Infra.pm | 9 ++++++++- Makefile | 5 ++++- debian/changelog | 4 ++++ debian/control | 6 ++++-- debian/rules | 20 +++++++++++++++++++- 5 files changed, 39 insertions(+), 5 deletions(-) diff --git a/Debian/Dgit/Infra.pm b/Debian/Dgit/Infra.pm index 1f2c702e..eff460b7 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 d3e26b1e..6fcc9bd2 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 f36dbbd8..4992ddee 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 294b811d..edf8c095 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 6580f96e..9249f888 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 $@ -- 2.30.2