diff --git a/Library/Contributions/manpages/brew.1.md b/Library/Contributions/manpages/brew.1.md index cf4fec4a3b..b5184d055f 100644 --- a/Library/Contributions/manpages/brew.1.md +++ b/Library/Contributions/manpages/brew.1.md @@ -146,6 +146,15 @@ didn't include with OS X. * HOMEBREW\_DEBUG: If set, instructs Homebrew to always assume `--debug` when running commands. + * HOMEBREW\_TEMP: + If set, instructs Homebrew to use `HOMEBREW_TEMP` as the temporary folder + for building packages. This may be needed if your system temp folder and + Homebrew Prefix are on different volumes, as OS X has trouble moving + symlinks across volumes when the target does not yet exist. + + This issue typically occurs when using FileVault (or certain custom SSD + configurations.) + * HOMEBREW\_USE\_LLVM: If set, instructs Homebrew to use the LLVM front-ends to the GCC compilers. *NOTE*: Not all formulae will build correctly under LLVM. diff --git a/Library/Homebrew/brew_doctor.rb b/Library/Homebrew/brew_doctor.rb index e6202798c1..c4daa06c46 100644 --- a/Library/Homebrew/brew_doctor.rb +++ b/Library/Homebrew/brew_doctor.rb @@ -353,17 +353,13 @@ def check_for_multiple_volumes unless where_cellar == where_temp puts <<-EOS.undent - Your Cellar and TMP folders are on different volumes. + Your Cellar and /tmp folders are on different volumes. Putting your Cellar and TMP folders on different volumes causes problems for brews that install symlinks, such as Git. - Please post the details of your setup to this existing issue, if the comments - there don't already capture them: - http://github.com/mxcl/homebrew/issues/issue/1238 - - A work-around is available in this branch: - http://github.com/adamv/homebrew/tree/temp + You should set the "HOMEBREW_TEMP" environmental variable to a suitable + folder on the same volume as your Cellar. EOS end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 7f8b5ebc53..325ec8408c 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -347,7 +347,12 @@ private # I used /tmp rather than mktemp -td because that generates a directory # name with exotic characters like + in it, and these break badly written # scripts that don't escape strings before trying to regexp them :( - tmp=Pathname.new `/usr/bin/mktemp -d /tmp/homebrew-#{name}-#{version}-XXXX`.strip + + # If the user has FileVault enabled, then we can't mv symlinks from the + # /tmp volume to the other volume. So we let the user override the tmp + # prefix if they need to. + tmp_prefix = ENV['HOMEBREW_TEMP'] || '/tmp' + tmp=Pathname.new `/usr/bin/mktemp -d #{tmp_prefix}/homebrew-#{name}-#{version}-XXXX`.strip raise "Couldn't create build sandbox" if not tmp.directory? or $? != 0 begin wd=Dir.pwd diff --git a/share/man/man1/brew.1 b/share/man/man1/brew.1 index 7c4ff5c147..e286e430c4 100644 --- a/share/man/man1/brew.1 +++ b/share/man/man1/brew.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "BREW" "1" "June 2010" "Homebrew" "brew" +.TH "BREW" "1" "July 2010" "Homebrew" "brew" . .SH "NAME" \fBbrew\fR \- The missing package manager for OS X @@ -161,6 +161,13 @@ HOMEBREW_DEBUG If set, instructs Homebrew to always assume \fB\-\-debug\fR when running commands\. . .TP +HOMEBREW_TEMP +If set, instructs Homebrew to use \fBHOMEBREW_TEMP\fR as the temporary folder for building packages\. This may be needed if your system temp folder and Homebrew Prefix are on different volumes, as OS X has trouble moving symlinks across volumes when the target does not yet exist\. +. +.IP +This issue typically occurs when using FileVault (or certain custom SSD configurations\.) +. +.TP HOMEBREW_USE_LLVM If set, instructs Homebrew to use the LLVM front\-ends to the GCC compilers\. .