forked from Homebrew/legacy-homebrew
-
Notifications
You must be signed in to change notification settings - Fork 0
Homebrew 0.9.3
scicalculator edited this page Jan 8, 2013
·
6 revisions
Superenv is an attempt to improve build-reliability and end-build-quality. It is:
- The user’s
PATH
is ignored. Thus, only tools we authorize can be used during builds1. -
PATH
is reconstructed. For example:/usr/local/Library/$ENV/4.3:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
. -
/usr/local/Library/$ENV/4.3
(superbin
2) contains wrapper-scripts forcc
, etc.) - We unset all build-related
ENV
variables. - Build systems now pick their preferred compilers from
superbin
. -
superbin
scripts are smart. They forcibly insert all include-paths and library-paths that Homebrew formulae need to compile, as well as remove flags that break builds.
Because we are working with a practically virgin environment, we are essentially giving build-systems the kind of environments that the developers are using to building with. This makes them more reliable. By stepping into the toolchain between the build-system and the compiler, we have complete control over the toolchain. We can prevent a good deal of breakage, and it ensures that Homebrew uses the same executables that the compiler sees (and not those bundled with the system).
So:
- We no longer worry about MacPorts/Fink being installed†
- We no longer worry about system duplicates†
- We override common tools and fix them—we no longer have to do so with workarounds in affected formula, waiting for a fix from Apple.
- Builds are forcibly optimized how we want, and debug info forcibly removed.