This should be a temporary workaround until we get a grip on some
Mavericks/Xcode 5.0 issues with e.g. ghc and go (stuff in core
that currently needs GCC at runtime). These formulae both have
Clang fixes in development.
Things that needs GCC at compile-time should be booted from core.
References Homebrew/homebrew#22872.
References Homebrew/homebrew-dupes#229
Currently `brew tap` only works on repos with 'homebrew-' in their name.
This version tries the repo name as is and then falls back to try
'homebrew-repo' only if that fails.
I've also tweaked the regex in tap_args to allow '-' in repo names. The
previous regex required a match on \w. This made it impossible for people
to tap repos with names like 'username/why-not'.
ClosesHomebrew/homebrew#18366.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
This stuff sucks. I'd like to just replace the dash with a directory division or tilde character. But this makes the code even more complicated, unless we can figure out how to migrate the taps.
We allow homebrew/dupes for instance, rather than Homebrew/dupes. Because nobody likes shifting in the terminal.
In the process of doing this I discovered some case-insensitive filesystem bugs we have avoided before because I had the foresight to mandate lowercase in formula names. GitHub considers Homebrew and homebrew to be different (even though you can't create both). So we had to allow case insensitivity in tap input. I have made it now so the resulting directory however is lowercased, neatly avoiding the issue. And so we also downcase tap arguments when applying them to tap directories or formula.
For when the symlink for a tap already exists and points to the thing we are about to symlink. This can happen, mostly because my code has sucked, but since the filesystem can be edited by the user at whim, it's possible then too.
Fixes:
$ brew tap adamv/alt
...blah blah blah..
$ brew tap josegonzalez/php
...blah blah blah...
Warning: Could not tap josegonzalez/php/php over mxcl/master/php
Where it should be "over adamv/alt/php".
The symlinks taps write to Formula show up in git status, but this trick prevents this. brew-(un)tap maintain a .gitignore in Formula that contains all the symlinks brew-tap creates.
We add the .gitignore to the root .gitignore and TADA! Magic.