From: Tomas Martin-B. <ber...@bi...> - 2011-05-30 13:22:42
|
Hi I had a halted installation of fink 0.29.21 on MacOS 10.7.4 due to the gcc version was detected as 'unknown'. It appears Services::gcc_selected assumes /usr/bin/gcc is a symbolic link, but on my new MacBook Pro (core i proc.) the file is an actual copy of gcc. I successfully tried changing the function definition by adding an alternative way of getting gcc version if the symbolic-link strategy fails, basically using the output from the command 'gcc -dumpversion'. It resolved the problem and I have had no issues regarding intallation of fink-0.29.21. Best regards Tomas Here is the modified function in Services.pm: ---------------------------- sub gcc_selected { # Return e.g. 4.2 if full version is 4.2.1 # It would probably be more safe to use 'gcc' command itself # 'gcc -dumpversion' to get default selected version # of gcc, since (at least for Darwin 10.7.4 on new MacBook Pro) # '/usr/bin/gcc' is not a symlink but an actual copy! # Using '-dumpversion' should also work even if '/usr/bin/gcc' is a symlink. # However, it is possible gcc has not been compiled with version info(?) # so probably more safe to try the symlink approach first: # # this should work anywhere we support, really (fink-0.29.21) if (-l '/usr/bin/gcc') { # try symlink approach my $link = readlink('/usr/bin/gcc'); if ($link =~ /gcc-(\d+\.\d+)/) { return $1; } else { print STDERR "WARNING: /usr/bin/gcc is not symlinked to something expected!\n"; } } else { # ask gcc directly for version if it is not a symlink my $version = `gcc -dumpversion`; if ($version =~ /(\d+\.\d+)(\.\d+)?/) { return $1; } else { print STDERR "WARNING: 'gcc -versiondump' not returning as expected, but instead: ", $version; } } return 0; } |