source: tags/ms_r17q3/SOURCE_TOOLS/check_bin_dependencies.pl

Last change on this file was 16127, checked in by westram, 7 years ago
  • Property svn:executable set to *
File size: 1.8 KB
Line 
1#!/usr/bin/perl
2#
3# Check whether dependency files in ../BINDEP
4# match arb-binaries in ../bin
5
6my @ignored_binaries = qw/arb_perf_test arb_test arb_readseq/;
7my %ignored_binaries = map { $_ => 1; } @ignored_binaries;
8
9my $ARBHOME = $ENV{ARBHOME};
10if (not -d $ARBHOME) {
11  die "ARBHOME has to be defined and has to mark a directory";
12}
13chdir($ARBHOME);
14
15sub check_dependencies($$) {
16  my ($bindir,$depdir) = @_;
17
18  my %used_dep = ();
19  my $fail = 0;
20
21  opendir(BIN,$bindir) || die "Failed to read directory '$bindir' (Reason: $!)";
22  opendir(DEP,$depdir) || die "Failed to read directory '$depdir' (Reason: $!)";
23
24  foreach (readdir(BIN)) {
25    if ($_ ne '.' and $_ ne '..') {
26      my $fullbin = $bindir.'/'.$_;
27
28      if (-d $fullbin) { ; }        # skip subdirs
29      elsif (-l $fullbin) { ; }     # skip links
30      elsif (not -x $fullbin) { ; } # skip non-executables
31      elsif (not /^arb_/) { ; }     # skip non-arb-tools
32      elsif (/\.(sh|pl)$/) { ; }    # skip perl- and shell-scripts
33      elsif (defined $ignored_binaries{$_}) { ; } # skip ignored_binaries
34      else {
35        my $dep_file = $depdir.'/needs_libs.'.$_;
36        if (-e $dep_file) { # dependencies defined. ok.
37          $used_dep{$_} = 1;
38        }
39        else {
40          print "$dep_file:1: missing dependency for '$_'\n";
41          $fail = 1;
42        }
43      }
44    }
45  }
46
47  foreach (readdir(DEP)) {
48    if (/^needs_libs\./o) {
49      my $name = $';
50      if ($used_dep{$name}) { ; } # ok, have seen binary
51      else {
52        my $fulldep = $depdir.'/'.$_;
53        print $fulldep.":1: unused dependency file (no such binary '$name')\n";
54        $fail = 1;
55      }
56    }
57  }
58
59  closedir(DEP);
60  closedir(BIN);
61
62  if ($fail==1) {
63    die "Error: dependencies not defined correctly\n";
64  }
65}
66
67sub main() {
68  check_dependencies($ARBHOME.'/bin', $ARBHOME.'/BINDEP');
69}
70main();
Note: See TracBrowser for help on using the repository browser.