summaryrefslogtreecommitdiffstats
path: root/debian/ada/libgnat_alihash
diff options
context:
space:
mode:
Diffstat (limited to 'debian/ada/libgnat_alihash')
-rwxr-xr-xdebian/ada/libgnat_alihash39
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;
+}