diff options
Diffstat (limited to 'debian/ada/libgnat_alihash')
-rwxr-xr-x | debian/ada/libgnat_alihash | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/debian/ada/libgnat_alihash b/debian/ada/libgnat_alihash new file mode 100755 index 0000000..26b223e --- /dev/null +++ b/debian/ada/libgnat_alihash @@ -0,0 +1,39 @@ +#!/usr/bin/perl + +# Helper for debian/rules2. + +# Exit silently during builds without Ada. + +# If .ali (Ada Library Information) files are found in gnat RTS directory, +# output a dpkg-gencontrol command line argument setting the +# libgnat:Provides substitution variable +# to the XOR of the checksums in all such files, +# as 8 lowercase hexadecimal digits. + +# See https://people.debian.org/~lbrenta/debian-ada-policy.html. + +# Should be in sync with dh_ada_library in the dh-ada-library package. + +# perl -c $script +# perltidy $script -st | diff -u $script - +# perlcritic -1 --verbose=11 --exclude=Modules::RequireVersionVar $script + +use autodie; +use re '/amsx'; +use strict; +use warnings; + +my @ali_files = glob 'build/gcc/ada/rts/*.ali'; +if (@ali_files) { + my $result = 0; + for my $path (@ali_files) { + open my $fh, q{<}, $path; + while (<$fh>) { + if (m/ ^ D [ ] [^\t]+ \t+ \d{14} [ ] ( [[:xdigit:]]{8} ) /) { + $result ^= hex $1; + } + } + close $fh; + } + printf '-Vlibgnat:alihash=%08x', $result; +} |