[libconfig-model-dpkg-perl] 01/03: sort dependencies like wrap-and-sort

dod at debian.org dod at debian.org
Tue Dec 5 12:49:40 UTC 2017


This is an automated email from the git hooks/post-receive script.

dod pushed a commit to branch master
in repository libconfig-model-dpkg-perl.

commit a19752b315ec9287229bc9cc6da7aed6ae698a1b
Author: Dominique Dumont <dod at debian.org>
Date:   Thu Nov 23 19:40:28 2017 +0100

    sort dependencies like wrap-and-sort
---
 lib/Config/Model/Dpkg/DependencyList.pm        | 16 ++++++++++++++++
 lib/Config/Model/models/Dpkg/Control/Binary.pl |  9 +++++++++
 lib/Config/Model/models/Dpkg/Control/Source.pl |  7 +++++++
 3 files changed, 32 insertions(+)

diff --git a/lib/Config/Model/Dpkg/DependencyList.pm b/lib/Config/Model/Dpkg/DependencyList.pm
new file mode 100644
index 0000000..6c72391
--- /dev/null
+++ b/lib/Config/Model/Dpkg/DependencyList.pm
@@ -0,0 +1,16 @@
+package Config::Model::Dpkg::DependencyList;
+
+use strict;
+use warnings;
+use Mouse;
+
+extends qw/Config::Model::ListId/ ;
+
+sub sort_algorithm {
+    return sub {
+        substr($_[0],0,1) eq '$' xor substr($_[1],0,1) eq '$' ? $_[1]->fetch cmp $_[0]->fetch
+            : $_[0]->fetch cmp $_[1]->fetch;
+    };
+}
+
+1;
diff --git a/lib/Config/Model/models/Dpkg/Control/Binary.pl b/lib/Config/Model/models/Dpkg/Control/Binary.pl
index 0b39dca..33dd5a9 100644
--- a/lib/Config/Model/models/Dpkg/Control/Binary.pl
+++ b/lib/Config/Model/models/Dpkg/Control/Binary.pl
@@ -110,6 +110,7 @@ A package may specify an architecture wildcard. Architecture wildcards are in th
             }
           }
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'The Depends field should be used if the depended-on package is required for the depending package to provide a significant amount of functionality. See also L<debian policy|https://www.debian.org/doc/debian-policy/ch-relationships.html>',
         'duplicates' => 'warn',
         'summary' => 'declares an absolute dependency.',
@@ -122,6 +123,7 @@ A package may specify an architecture wildcard. Architecture wildcards are in th
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'This field should list packages that would be found together with this one in all but unusual installations. See also L<debian policy|https://www.debian.org/doc/debian-policy/ch-relationships.html>',
         'duplicates' => 'warn',
         'summary' => 'declares a strong, but not absolute, dependency.',
@@ -134,6 +136,7 @@ A package may specify an architecture wildcard. Architecture wildcards are in th
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'Using this field tells the packaging system and the user that the listed packages are related to this one and can perhaps enhance its usefulness, but that installing this one without them is perfectly reasonable. See also L<debian policy|https://www.debian.org/doc/debian-policy/ch-relationships.html> ',
         'duplicates' => 'warn',
         'summary' => 'declare that one package may be more useful with one or more others.',
@@ -157,6 +160,7 @@ A package may specify an architecture wildcard. Architecture wildcards are in th
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'This field is like Depends, except that it also forces dpkg to complete installation of the packages named before even starting the installation of the package which declares the pre-dependency.  See also L<debian policy|https://www.debian.org/doc/debian-policy/ch-relationships.html>',
         'type' => 'list'
       },
@@ -167,6 +171,7 @@ A package may specify an architecture wildcard. Architecture wildcards are in th
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'When one binary package declares that it breaks another, dpkg will refuse to allow the package which declares Breaks to be unpacked unless the broken package is deconfigured first, and it will refuse to allow the broken package to be reconfigured. See also L<debian policy|https://www.debian.org/doc/debian-policy/ch-relationships.html>',
         'type' => 'list'
       },
@@ -177,6 +182,7 @@ A package may specify an architecture wildcard. Architecture wildcards are in th
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'When one binary package declares a conflict with another using a Conflicts field, dpkg will refuse to allow them to be unpacked on the system at the same time. This is a stronger restriction than Breaks, which prevents the broken package from being configured while the breaking package is in the "Unpacked" state but allows both packages to be unpacked at the same time. See also L<debian policy|https://www.debian.org/doc/debian-policy/ch-relationships.html>',
         'type' => 'list'
       },
@@ -186,6 +192,7 @@ A package may specify an architecture wildcard. Architecture wildcards are in th
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'declare the functionality brought by this package. Be sure to read the chapter about virtual package in L<debian policy|https://www.debian.org/doc/debian-policy/ch-relationships.html> before using this parameter',
         'type' => 'list'
       },
@@ -196,6 +203,7 @@ A package may specify an architecture wildcard. Architecture wildcards are in th
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'declare that this package should overwrite files in certain other packages, or completely replace other packages. Be sure to read the section 7.6 of L<debian policy|https://www.debian.org/doc/debian-policy/ch-relationships.html> before using this parameter',
         'type' => 'list'
       },
@@ -211,6 +219,7 @@ A package may specify an architecture wildcard. Architecture wildcards are in th
             }
           }
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'Some binary packages incorporate parts of other packages when built but do not have to depend on those packages. Examples include linking with static libraries or incorporating source code from another package during the build. In this case, the source packages of those other packages are a required part of the complete source (the binary package is not reproducible without them).
 
 A Built-Using field must list the corresponding source package for any such binary package incorporated during the build, including an "exactly equal" ("=") version relation on the version that was used to build that binary package.
diff --git a/lib/Config/Model/models/Dpkg/Control/Source.pl b/lib/Config/Model/models/Dpkg/Control/Source.pl
index b905dd1..9f3f579 100644
--- a/lib/Config/Model/models/Dpkg/Control/Source.pl
+++ b/lib/Config/Model/models/Dpkg/Control/Source.pl
@@ -245,6 +245,7 @@ in Debian developer reference.',
             }
           }
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'List of packages that must be installed:
 
 '.'=over
@@ -277,6 +278,7 @@ See also L<deb-src-control|https://manpages.debian.org/unstable/dpkg-dev/deb-src
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'Same as Build-Depends, but these pakcages are only needed when building the architecture dependent packages. The Build-Depends are also installed in this case. 
 
 See L<deb-src-control man page|https://manpages.debian.org/unstable/dpkg-dev/deb-src-control.5.en.html> for details',
@@ -291,6 +293,7 @@ See L<deb-src-control man page|https://manpages.debian.org/unstable/dpkg-dev/deb
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'List of packages that must be installed to build architecture-independent binaries ("Architecture: all").
 
 Technically, these packages must be installed for the following build targets: build, build-indep, binary, and binary-indep. See L<build target|https://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules> doc and L<details on this field|https://www.debian.org/doc/debian-policy/ch-relationships.html#s-sourcebinarydeps>.
@@ -306,6 +309,7 @@ Note that packages required during "clean" phase must be declared in "Build-Depe
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'List of packages that must be missing (i.e. B<not> installed):
 
 '.'=over
@@ -337,6 +341,7 @@ See L<deb-src-control man page|https://manpages.debian.org/unstable/dpkg-dev/deb
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'List of packages that must be missing (i.e. B<not> installed) to build archictecture dependent binaries 
 
 See L<deb-src-control man page|https://manpages.debian.org/unstable/dpkg-dev/deb-src-control.5.en.html> for details.',
@@ -350,6 +355,7 @@ See L<deb-src-control man page|https://manpages.debian.org/unstable/dpkg-dev/deb
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => 'List of packages that must be missing (i.e. B<not> installed) to build binaries with arch set to "all.
 
 Technically, these packages must B<not> be installed for the following build targets: build, build-indep, binary, and binary-indep. See L<build target|https://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules> doc and L<details on this field|https://www.debian.org/doc/debian-policy/ch-relationships.html#s-sourcebinarydeps>.
@@ -366,6 +372,7 @@ Note that packages not wanted during "clean" phase must be declared in "Build-Co
           'type' => 'leaf',
           'value_type' => 'uniline'
         },
+        'class' => 'Config::Model::Dpkg::DependencyList',
         'description' => ' Some binary packages incorporate parts of other packages when built but do not have to depend on those packages. Examples include linking with static libraries or incorporating source code from another package during the build. In this case, the source packages of those other packages are a required part of the complete source (the binary package is not reproducible without them).
 
 A Built-Using field must list the corresponding source package for any such binary package incorporated during the build, including an B<exactly equal> ("=") version relation on the version that was used to build that binary package[57].

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libconfig-model-dpkg-perl.git



More information about the Pkg-perl-cvs-commits mailing list