[libconfig-model-dpkg-perl] 01/03: keep old param order when writing control file

dod at debian.org dod at debian.org
Fri Sep 29 12:09:55 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 b6afff757de9ecb84e1572488e38995e6253738d
Author: Dominique Dumont <dod at debian.org>
Date:   Fri Sep 29 13:57:36 2017 +0200

    keep old param order when writing control file
    
    Tweak the parameter list used to write the sequence of parameters to
    keep the order defined in Debian policy even though Standards-Version
    must be *before* Priority  (because of warp mechanism).
    
    This is a bit of a hack that will probably evolve later.
---
 lib/Config/Model/Backend/Dpkg/Control.pm | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/lib/Config/Model/Backend/Dpkg/Control.pm b/lib/Config/Model/Backend/Dpkg/Control.pm
index bad3432..9986784 100644
--- a/lib/Config/Model/Backend/Dpkg/Control.pm
+++ b/lib/Config/Model/Backend/Dpkg/Control.pm
@@ -214,12 +214,31 @@ sub write {
     return 1;
 }
 
-sub package_spec {
-    my ( $self, $node ) = @_ ;
+sub _re_order ($list, $move_after) {
+    my $i = 0;
+    while ( $i < $move_after->@* ) {
+        my $k = $move_after->[$i++];
+        my $v = $move_after->[$i++];
+        my ($ik, $iv);
+        my $j = 0;
+        map { $ik = $j if $_ eq $k; $iv = $j if $_ eq $v; $j++ } @$list;
+        next unless defined $ik and defined $iv;
+        splice @$list, $ik, 1; # remove $k from list
+        splice @$list, $iv, 0, $k; # add back $k after $v
+    }
+}
+
+my @move_after = (
+    'Standards-Version' => 'Built-Using',
+);
+
+sub package_spec ( $self, $node ) {
+    my @list = $node->get_element_name;
+    _re_order(\@list, \@move_after);
 
     my @section ;
     my $description_ref ;
-    foreach my $elt ($node->get_element_name ) {
+    foreach my $elt ( @list ) {
         my $type = $node->element_type($elt) ;
         my $elt_obj = $node->fetch_element($elt) ;
 

-- 
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