cc9361b2a3
As is, the gfortran formula reports an Error when no compatible Xcode version is available, but does so even in cases when it is neither installed nor in the process of being installed. For example, `brew outdated` reports the error, just because it needs to load the formula to check its version. This changeset delays the error message until someone tries to install the formula. The version and URL are determined solely by checking the OSX version. Signed-off-by: Adam Vandenberg <flangy@gmail.com>
85 lines
2.8 KiB
Ruby
85 lines
2.8 KiB
Ruby
require 'formula'
|
|
require 'brew.h'
|
|
|
|
class GfortranPkgDownloadStrategy <CurlDownloadStrategy
|
|
def stage
|
|
# The 4.2.4 compiler is distributed as a OS X 10.5
|
|
# package- a single flat xar archive instead of a
|
|
# bundle.
|
|
safe_system "/usr/bin/xar -xf #{@tarball_path}"
|
|
chdir
|
|
|
|
# Clean up.
|
|
safe_system "mv *.pkg/Payload Payload.gz"
|
|
safe_system "ls | grep -v Payload | xargs rm -r"
|
|
end
|
|
end
|
|
|
|
class Gfortran <Formula
|
|
if MACOS_VERSION >= 10.6
|
|
url 'http://r.research.att.com/gfortran-42-5659.pkg'
|
|
md5 '71bd546baa45c9c0fb4943cdd72ee274'
|
|
version "4.2.4-5659"
|
|
else
|
|
url 'http://r.research.att.com/gfortran-42-5577.pkg'
|
|
md5 '30fb495c93cf514003cdfcb7846dc701'
|
|
version "4.2.4-5577"
|
|
end
|
|
|
|
homepage 'http://r.research.att.com/tools/'
|
|
|
|
def download_strategy
|
|
GfortranPkgDownloadStrategy
|
|
end
|
|
|
|
# Shouldn't strip compiler binaries.
|
|
skip_clean [ 'bin', 'lib', 'libexec' ]
|
|
|
|
def install
|
|
# The version of pax jumped 16 years in development between OS X 10.5
|
|
# and OS X 10.6. In that time it became security concious. Additionally,
|
|
# there are some slight variations in the packaging- because of this
|
|
# installation is broken down by XCode version.
|
|
case gcc_42_build
|
|
when 5577
|
|
ohai "Installing gfortran 4.2.4 for XCode 3.1.4 (build 5577)"
|
|
safe_system "pax -rz -f Payload.gz -s ',./usr,#{prefix},'"
|
|
# The 5577 package does not contain the gfortran->gfortran-4.2 symlink
|
|
safe_system "ln -sf #{bin}/gfortran-4.2 #{bin}/gfortran"
|
|
safe_system "ln -sf #{man1}/gfortran-4.2.1 #{man1}/gfortran.1"
|
|
when 5659
|
|
ohai "Installing gfortran 4.2.4 for XCode 3.2.2 (build 5659)"
|
|
safe_system "pax --insecure -rz -f Payload.gz -s ',./usr,#{prefix},'"
|
|
safe_system "ln -sf #{man1}/gfortran-4.2.1 #{man1}/gfortran.1"
|
|
else
|
|
onoe <<-EOS.undent
|
|
Currently the gfortran compiler provided by this brew is only supported
|
|
for XCode 3.1.4 on OS X 10.5.x and XCode 3.2.2 on OS X 10.6.x
|
|
EOS
|
|
end
|
|
end
|
|
|
|
def caveats
|
|
caveats = <<-EOS
|
|
Fortran compiler support in brews is currently experimental. One of the
|
|
consequences of this is that Homebrew does not set environment flags to ensure
|
|
that a particular Fortran compiler is used and that the resulting code is
|
|
optimized properly. Therefore, in addition to using:
|
|
|
|
depends_on "gfortran"
|
|
|
|
Fortran-based brews should also specify environment variables for the Fortran
|
|
compiler in the install section:
|
|
|
|
# Select the Fortran compiler to be used:
|
|
ENV["FC"] = ENV["F77"] "\#{HOMEBREW_PREFIX}/bin/gfortran"
|
|
|
|
# Set Fortran optimization flags:
|
|
ENV["FFLAGS"] = ENV["FCFLAGS"] = ENV["CFLAGS"]
|
|
|
|
Following these guidelines will allow Fortran-based brews to be easily edited so
|
|
that alternate Fortran compilers, such as ifort, can be used instead of the
|
|
version of gfortran provided by Homebrew.
|
|
EOS
|
|
end
|
|
end
|