source: trunk/dports/sysutils/rpm/files/patch-autodeps-darwin-prov.diff @ 2715

Last change on this file since 2715 was 2715, checked in by ranger, 17 years ago

fat frameworks were getting set wrong because of a stay regex

  • Property svn:eol-style set to native
File size: 1.2 KB
  • new file autodeps/darwin.prov

    - +  
     1#!/usr/bin/perl
     2# ----------------------------------------------------------
     3#       find-provides for Darwin
     4# ----------------------------------------------------------
     5
     6my %files;
     7
     8while (my $DEP = <STDIN>) {
     9        chomp $DEP;
     10
     11        next if (-d $DEP);
     12
     13        next if ($DEP =~ m,\.class$,);
     14
     15        for my $ARCH ('ppc', 'i386') {
     16                my $FILE = $DEP;
     17                my $header;
     18                my $FILE_esc = $FILE;
     19                $FILE_esc =~ s/\'/\\\'/g;
     20                if (open(OTOOL, "otool -arch '$ARCH' -hv '$FILE_esc' 2>/dev/null |")) {
     21                        while (<OTOOL>) {
     22                                if (/MH_MAGIC/) {
     23                                                $header = $_;
     24                                }
     25                        }
     26                        close(OTOOL);
     27                        if (split(/\s+/, $header) and $_[4] eq 'DYLIB') {
     28                                if (open(OTOOL, "otool -arch '$ARCH' -DX '$FILE_esc' 2>/dev/null |")) {
     29                                        chomp($FILE = <OTOOL>);
     30                                        if ($FILE =~ m,\.framework/,) {
     31                                                $FILE =~ s,^.*?/([^/]*?\.framework)/.*$,$1,;
     32                                        }
     33                                        $files{"$FILE-$ARCH"} = 1;
     34                                } else {
     35                                        warn "couldn't determine install_name for '$FILE': $!\n";
     36                                }
     37                        }
     38                } else {
     39                        warn "unable to run otool on $FILE: $!\n";
     40                        next;
     41                }
     42        }
     43}
     44
     45print join("\n", sort keys %files), "\n";
Note: See TracBrowser for help on using the repository browser.