Bug#852848: dh-make-perl: fix Repository in d/upstream/metadata for github projects
Carnë Draug
carandraug+dev at gmail.com
Fri Jan 27 20:04:47 UTC 2017
Package: dh-make-perl
Version: 0.92
Severity: normal
Tags: patch
The Respository URL in d/upstream/metadata should use https and not
git but dh-make-perl does not identify this issue. The attached
patch identifies this and fixes it for github (I am unsure if the fix
can be generalized for any host but I guess it is possible for a host
to support git:// and not http://). It also automatically fill a
missing Repository-Browse for github.
-- System Information:
Debian Release: 9.0
APT prefers testing
APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 4.8.0-2-amd64 (SMP w/32 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages dh-make-perl depends on:
ii debhelper 10.2.3
ii dpkg-dev 1.18.18
ii fakeroot 1.21-3
ii libapt-pkg-perl 0.1.30
ii libarray-unique-perl 0.08-2
ii libclass-accessor-perl 0.34-1
ii libconfig-ini-perl 1:0.025-1
ii libdebian-source-perl 0.92
ii libdpkg-perl 1.18.18
ii libemail-address-perl 1.908-1
ii libemail-date-format-perl 1.005-1
ii libfile-which-perl 1.21-1
ii liblist-moreutils-perl 0.416-1+b1
ii libmodule-depends-perl 0.16-3
ii libparse-debianchangelog-perl 1.2.0-12
ii libsoftware-license-perl 0.103012-1
ii libtie-ixhash-perl 1.23-2
ii libwww-mechanize-perl 1.83-1
ii libwww-perl 6.15-1
ii libyaml-libyaml-perl 0.63-2
ii libyaml-perl 1.21-1
ii make 4.1-9
ii perl 5.24.1~rc4-1
ii perl-modules-5.22 [libcpan-meta-perl] 5.22.2-1
ii perl-modules-5.24 [libcpan-meta-perl] 5.24.1~rc4-1
Versions of packages dh-make-perl recommends:
ii apt 1.4~beta3
ii apt-file 3.1.3
ii git 1:2.11.0-2
ii libdpkg-parse-perl 0.03-1
ii libmodule-build-perl 0.422000-1
ii pristine-tar 1.37
dh-make-perl suggests no packages.
-- no debconf information
-------------- next part --------------
From 8627d079c027584d2edb3ee2e0293d4b412fa697 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carn=C3=AB=20Draug?= <carandraug+dev at gmail.com>
Date: Fri, 27 Jan 2017 19:46:25 +0000
Subject: [PATCH] Fix github Repository* on d/upstream/metadata (git://, and no
Browser)
* DhMakePerl::Command::Packaging (create_upstream_metadata):
automatically fix Repository with git protocol and missing
Repository-Browse when host is github.
---
debian/changelog | 6 +++++-
lib/DhMakePerl/Command/Packaging.pm | 28 ++++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/debian/changelog b/debian/changelog
index f74f951..3233a5b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,10 @@
dh-make-perl (0.94) UNRELEASED; urgency=medium
- * <dummy entry to bump version>
+ [ Carn? Draug ]
+ * DhMakePerl::Command::Packaging (create_upstream_metadata):
+ automatically fix Repository with git protocol and missing
+ Repository-Browse when host is github. Done to support further
+ logic on automatic fixes.
-- gregor herrmann <gregoa at debian.org> Thu, 26 Jan 2017 20:29:31 +0100
diff --git a/lib/DhMakePerl/Command/Packaging.pm b/lib/DhMakePerl/Command/Packaging.pm
index 690740a..69b19db 100644
--- a/lib/DhMakePerl/Command/Packaging.pm
+++ b/lib/DhMakePerl/Command/Packaging.pm
@@ -1641,6 +1641,34 @@ sub create_upstream_metadata {
$upstream{"Repository"} = $meta->{resources}->{repository}->{url};
$upstream{"Repository-Browse"} = $meta->{resources}->{repository}->{web};
+ if (defined $upstream{"Repository"}) {
+ my $fix_browse = ! defined $upstream{"Repository-Browse"};
+
+ my $url_parser = qr|(?:([^:/?\#]+):)? # protocol
+ (?://([^/?\#]*))? # domain name
+ ([^?\#]*) # path
+ (?:\?([^\#]*))? # query
+ (?:\#(.*))? # fragment
+ |x;
+
+ my ($protocol, $domain, $path, $query, $fragment)
+ = $upstream{"Repository"} =~ $url_parser;
+
+ my $host = {
+ 'github.com' => 'github',
+ }->{$domain};
+
+ if ($host eq "github") {
+ if ($protocol eq "git") {
+ $upstream{"Repository"} = "https://$domain$path";
+ }
+ if ($fix_browse) {
+ $path =~ s/\.git$//;
+ $upstream{"Repository-Browse"} = "https://$domain$path";
+ }
+ }
+ }
+
foreach ( keys %upstream ) {
delete $upstream{$_} unless defined $upstream{$_};
}
--
2.11.0
More information about the pkg-perl-maintainers
mailing list