Index: parrot-svn/tools/dev/install_files.pl =================================================================== --- parrot-svn.orig/tools/dev/install_files.pl 2009-03-02 19:49:14.000000000 +0100 +++ parrot-svn/tools/dev/install_files.pl 2009-03-03 17:05:51.640625000 +0100 @@ -190,6 +190,7 @@ my $copy = $dest; $dest =~ s/^installable_//; # parrot with different config $dest = File::Spec->catdir( $options{bindir}, $dest ); + # TODO track bin here to check later below if ( $copy =~ /^installable/ ) { push @installable_exe, [ $src, $dest ]; next; @@ -246,8 +247,35 @@ } } } +# TT #347 +# 1. skip build_dir-only binaries for @installable_exe +for (@installable_exe) { + my ( $i, $dest ) = @$_; + my ($file) = $i =~ /installable_(.+)$/; + next unless $file; + my @f = map { $_ ? $_->[0] : '' } @files; + if (grep(/^$file$/, @f)) { + if (-e $file) { + print "skipping $file, using installable_$file instead\n"; + @files = map {$_ and $_->[0] !~ /^$file$/ ? $_ : undef} @files; + } + } +} +# 2. for every .exe check if there's an installable. fail if not +foreach my $f (@files ) { + next unless $_; + my ( $f, $dest ) = @$_; + # this logic will fail on non-win32 if the generated files + # are really generated as planned. Here we don't have [main]bin here. + my $i = "installable_$f" if $f =~ /\.exe$/; + next unless $i; + unless (map {$_->[0] =~ /^$i$/} @installable_exe) { + die "$i is missing in MANIFEST or MANIFEST.generated\n"; + } +} print("Installing ...\n"); foreach ( @files, @installable_exe ) { + next unless $_; my ( $src, $dest ) = @$_; $dest = $options{destdir} . $dest; if ( $options{'dry-run'} ) {