Petter Reinholdtsen:
> [Jakub Wilk]
>> Hi Petter!
>
> Hi. Thank you very much for taking the time to review the code. It is
> very valuable.
>
Hi,
Thanks for working on this and to Jakub for the excellent review! :)
>> [...]
>>> +use YAML;
>>
>> Linian already uses YAML::XS in lib/Lintian/Util.pm, so I wonder if
>> we should use this instead. (See bug #784639 for rationale for using
>> this particular module.)
>
> Hm, perhaps. I have no strong opinion here, but picked one with a pure
> perl implementationn and a function to load a file. Could not find a
> file loading function in YAML::XS. Am I looking for the wrong thing, or
> do I have to read the file myself?
>
The YAML modules are hopelessly poorly documented. However, YAML::XS
does have a "LoadFile" method.
>[...]
>
> See attached updated version.
>
>>From c103de5fe45d5fb7800fef25c0bc2da77be31734 Mon Sep 17 00:00:00 2001
> From: Petter Reinholdtsen <pere@hungry.com>
> Date: Sat, 6 Feb 2016 15:50:09 +0100
> Subject: [PATCH] Add draft lintian check for debian/upstream/metadata.
>
> ---
> checks/upstream-metadata.desc | 20 ++++++++++++++++
> checks/upstream-metadata.pm | 55 +++++++++++++++++++++++++++++++++++++++++++
> profiles/debian/main.profile | 3 ++-
> 3 files changed, 77 insertions(+), 1 deletion(-)
> create mode 100644 checks/upstream-metadata.desc
> create mode 100644 checks/upstream-metadata.pm
>
> diff --git a/checks/upstream-metadata.desc b/checks/upstream-metadata.desc
> new file mode 100644
> index 0000000..bdb3204
> --- /dev/null
> +++ b/checks/upstream-metadata.desc
> @@ -0,0 +1,20 @@
> +Check-Script: upstream-metadata
> +Author: Petter Reinholdtsen <pere@hungry.com>
> +Type: source
> +Needs-Info: unpacked
> +Info: This script checks the upstream/metadata file for problems.
> +
> +Tag: upstream-metadata-not-readable
I think we use "<foo>-is-not-a-file". At least that is the term used in
the systemd check.
> +Severity: normal
> +Certainty: certain
> +Ref: http://dep.debian.net/deps/dep12/
> +Info: The DEP 12 metadata file in the source is not readable. This
> + could be caused by a dangling symlink, but or that the name is used
^^^^^^^^^^^
Missing a word there (or a word too much)?
> + by some none file directory entry.
> +
> +Tag: upstream-metadata-yaml-invalid
> +Severity: normal
> +Certainty: certain
> +Ref: http://dep.debian.net/deps/dep12/
> +Info: The DEP 12 metadata file is not well formed. The formatting
> + need to be adjusted to match the YAML specification.
> diff --git a/checks/upstream-metadata.pm b/checks/upstream-metadata.pm
> new file mode 100644
> index 0000000..9ff82f3
> --- /dev/null
> +++ b/checks/upstream-metadata.pm
> @@ -0,0 +1,55 @@
> +[...]
> +
> +package Lintian::upstream_metadata;
> +
> +use strict;
> +use warnings;
> +
> +use Lintian::Data;
^^^^^^^^^^^^^^^^^
Redundant module?
> +use Lintian::Tags qw(tag);
> +
> +use YAML;
> +use Data::Dumper;
^^^^^^^^^^^^^^^^^
Redundant module?
> +
> +sub run {
> + my (undef, undef, $info) = @_;
> + my $yamlfile = $info->index_resolved_path('debian/upstream/metadata');
> + return if not $yamlfile;
> +
> + if ($yamlfile->is_open_ok()) {
> + my $yaml;
> + eval { $yaml = YAML::LoadFile($yamlfile->fs_path()); };
> + if (!$yaml) {
> + tag('upstream-metadata-yaml-invalid');
> + }
> + } else {
> + tag('upstream-metadata-not-readable');
> + }
> + return;
> +}
> +
> +1;
> +
> +[...]
Attachment:
signature.asc
Description: OpenPGP digital signature