diff options
Diffstat (limited to 'nixpkgs/pkgs/build-support/mono-dll-fixer/dll-fixer.pl')
-rw-r--r-- | nixpkgs/pkgs/build-support/mono-dll-fixer/dll-fixer.pl | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/build-support/mono-dll-fixer/dll-fixer.pl b/nixpkgs/pkgs/build-support/mono-dll-fixer/dll-fixer.pl new file mode 100644 index 000000000000..4a8b468692f0 --- /dev/null +++ b/nixpkgs/pkgs/build-support/mono-dll-fixer/dll-fixer.pl @@ -0,0 +1,32 @@ +#! @perl@ -w + +use strict; + +my @paths = split ' ', $ENV{"ALL_INPUTS"}; + +open IN, "<$ARGV[0]" or die; +open OUT, ">$ARGV[0].tmp" or die; + +while (<IN>) { + # !!! should use a real XML library here. + if (!/<dllmap dll="(.*)" target="(.*)"\/>/) { + print OUT; + next; + } + my $dll = $1; + my $target = $2; + + foreach my $path (@paths) { + my $fullPath = "$path/lib/$target"; + if (-e "$fullPath") { + $target = $fullPath; + last; + } + } + + print OUT " <dllmap dll=\"$dll\" target=\"$target\"/>\n"; +} + +close IN; + +rename "$ARGV[0].tmp", "$ARGV[0]" or die "cannot rename $ARGV[0]"; |