Make texino indices reproducible by genrating deterministic order
From Debian #790065
While working on the "reproducible builds" effort [1], we have noticed
that texinfo generates indices in a non-deterministic order.

This appears to happen because the index sort is not stable with respect
to the line number, resulting in output non-determinstically changing
from:                                                                           
                                                                                
  * Entry   (line 1)                                                            
  * Entry   (line 2)

and

  * Entry   (line 2)
  * Entry   (line 1)

.. when the entry is the same string.

The attached patch adds the line number to the sort comparator. Once
applied, (some) packages using texinfo can be built reproducibly in
our reproducible toolchain.

Patch by Chris Lamb
---
 tp/Texinfo/Structuring.pm |    4 ++++
 1 file changed, 4 insertions(+)

--- texinfo.orig/tp/Texinfo/Structuring.pm
+++ texinfo/tp/Texinfo/Structuring.pm
@@ -1984,6 +1984,9 @@
   if ($res == 0) {
     $res = ($key1->{'number'} <=> $key2->{'number'});
   }
+  if ($res == 0) {                                                             
+    $res = ($key1->{'line_nr'} <=> $key2->{'line_nr'});                        
+  }                                                                            
   return $res;
 }
 
@@ -2016,6 +2019,7 @@
   foreach my $index_name (keys(%$index_entries)) {
     foreach my $entry (@{$index_entries->{$index_name}}) {
       $entry->{'in_code'} = $index_names->{$entry->{'index_name'}}->{'in_code'};
+      $entry->{'line_nr'} = $entry->{'command'}->{'line_nr'}->{'line_nr'};
       $options->{'code'} = $entry->{'in_code'};
       $entry->{'key'} = Texinfo::Convert::Text::convert(
                               {'contents' => $entry->{'content'}}, $options);
