29 Commits

Author SHA1 Message Date
Jack Nagel
d77240a98c Iterate over these directly rather than mapping first 2013-08-14 13:02:50 -05:00
Jack Nagel
603d8f9d4d Return value of modify_build_environment is unimportant 2013-08-14 13:01:35 -05:00
Jack Nagel
f8c34b5dc1 Reverse conditional 2013-08-14 12:46:37 -05:00
Jack Nagel
3857f83e9c Collapse to one-liner 2013-08-14 12:46:12 -05:00
Jack Nagel
3d39a57118 No need to map, all? takes a block 2013-08-14 12:45:54 -05:00
Jack Nagel
4d2188cc90 Add missing false 2013-08-14 12:41:52 -05:00
Jack Nagel
5561d3d09c Remove stray space 2013-08-14 12:41:15 -05:00
Jack Nagel
23fbe23426 Allow specifying a custom PATH for which method
Closes Homebrew/homebrew#21794.
2013-08-10 19:01:50 -05:00
Samuel John
a73012def4 Python: Exit if PYTHONPATH is wrong
In our sitecustomize.py we instruct python to exit with an error message
if the PYTHONPATH is pointing to a wrong homebrew site-packages dir.
With wrong meaning another major python version.

If you set the PYTHONPATH to include
    $(brew --prefix)/lib/python2.7/site-packages
and start python3, it may pick up modules from there, wich can result
in errors for non pure python modules (such as PyQt).
2013-08-08 11:54:42 +02:00
Samuel John
c968f8302f For brewed python, make sure to unset the PYTHONPATH
during building of python software inside of a `python do … end` block.
2013-08-08 11:50:46 +02:00
Adam Vandenberg
73547fc750 Remove ARCHFLAGS fixme from Python dependency
This will be handled by env/superenv, not Python.
2013-08-03 10:28:57 -07:00
Jack Nagel
6090b9b2bf Silence warnings 2013-07-22 11:41:47 -05:00
Jack Nagel
e33cdb2f8b Fix python dependency hash equality
eql? should not depend on the hash value as hash values of uneql objects
can collide, but eql values may only collide for objects that are
actually eql.

Further, python dependencies are uniquely identified by the combination
of the name and imports attributes, so there is no reason to involved
the expensive binary computation for simple equality checks.

Fixes Homebrew/homebrew#20840.
2013-07-22 11:41:46 -05:00
Jack Nagel
b0138b9c9b Remove redundant reader method 2013-07-22 11:41:46 -05:00
Samuel John
1721cd9c08 Typo in comments 2013-07-17 09:52:30 +02:00
Samuel John
fb7f16fc94 Allow specifying version in depends_on :python
Note, in the explict form:

    PythonInstalled.new('2.7') => :recommended

the tag :recommended is ignored (not a limitation
of PythonInstalled itself). One solution was to write

    PythonInstalled.new('2.7', [:recommended])

but that is not as beautiful as we like it.

Therefore, now it is possible to:

    depends_on :python => ['2.7', :recommended]

Only the first tag is attempted to be parsed as
a version specifyer "x" or "x.y" or "x.y.z"...
2013-07-16 11:04:57 +02:00
Jack Nagel
52574240af Use old #eql? for python reqs, for now 2013-06-27 01:43:30 -05:00
Samuel John
215b584c3b depends_on :python => 'module' allow user packages
Some prefer to install with `--user` into their
home. For example to avoid `sudo` with system's
python. Now Homebrew can use those modules to
satisfy a python dependency on a certain module.
2013-06-19 12:18:48 +02:00
Samuel John
a3a0146d7c Python module deps, ext. python fix and 10.6 fix
* Fixes Homebrew/homebrew#20572 by tweaking the logic that decides
  which python is used by the `python` object
  inside a formula. There was a bug when on 10.6
  there is no Python 2.7 but a :recommended
  Python was still treated as being available.

* Use the user's PATH when looking for an external
  Python. Until now only brewed or OS X system's
  python have been found by `depends_on :python`.

  But now we support any Python in PATH (e.g.
  pyenv's python).

* Further, instead of handling python modules
  and import tests in LanguageModuleDependency,
  these are now handled by:

        depends_on :python => 'numpy'  # for example

  The old style

        depends_on 'numpy' => :python

  is still supported and is only an alias
  for the newer style (only for :python, the
  other languages are not altered by this commit).

  The reasoning is that if a formula requires
  a python module, it basically also needs
  python itself - and further that specific
  version of python has to provide the module.
  So the `PythonInstalled` is the natural place
  to check for the availability of a python
  module.

  Using a python module and other tags like
  :optional or :recommended is done like so:

        depends_on :python => [:optional, 'numpy']

  Specifying another PyPi (Python Package index)
  name than the module import name is seldom used
  but supported, too:

         depends_on :python => ['enchant'=>'pyenchant']

  A last note: For clarity, you can define
  multiple depends_on statements with different
  modules to be importable.`
2013-06-18 10:30:17 +02:00
Jack Nagel
113125d394 Remove Version#to_a alias
Exposing this as "to_a" was a mistake, versions are not arrays and it
causes incorrect behavior when splatted or using Kernel#Array(). Use the
more correct name "tokens" instead.
2013-06-14 18:37:27 -05:00
Samuel John
33cae6ac42 PythonInstalled: Fix libdir for Python 3.x 2013-06-09 20:37:30 +02:00
Samuel John
4412df2c00 Python: Don't print warning about PYTHONPATH
Authors should use `python.standard_caveats` instead.

* Accessor for python.binary
* Made `python.brewed?` more robust if no python found at all
* python.brewed? is more relaxed now and allows older versions
  of the Python formula.
* Only print about wrining sitecustomize.py and distutils.cfg if
verbose and debug.
2013-06-07 17:58:56 +02:00
Samuel John
1c95045033 Hotfix: Revert Python module 2013-06-06 13:18:32 +02:00
Samuel John
4e8aa8637f PythonInstalled: Don't require superenv
* The python do ... end block does no longer
  require 'superenv' but saves and restores
  the ENV by using ENV.to_hash and `ensure`.
  This should resolve some build problems
  with formulae using `env :std`!
* `python_helper` is now in a module `Python`.
* Imporoved some comments in python_dependency.rb
2013-06-06 12:33:28 +02:00
Samuel John
a3a8bee5b9 depends_on :python sets PYTHONPATH internally
This applies only to non-brewed python:
The user will still have to set his PYTHONPATH
in order to import python modules in an
external python interpreter. However, a
warning will be displayed, now.

Further, during the build, the PYTHONPATH
will be set to Homebrew's global site-packages
so that software (like PyQt and others) that
need to `import sipconfig` in python can
find the brewed sip and its python module.
2013-06-05 17:37:32 +02:00
Samuel John
7aa2bcc3d5 Python add -F#{python.framework} for brewed Python
Since Python has been removed from superenv and
added as an explicit `depends_on :python`,
we should add
`-F#{HOMEBREW_PREFIX}/opt/python/Framewoks`
so that build tools that don't use
`python-config --ldflags` (as they should!)
can link against brewed Python.
2013-06-05 14:46:02 +02:00
Samuel John
8781950294 Python: Don't use named tuples to get the version
sys.version_info.major is only possible on 2.7+ or so.
Therefore, we now use [0] instead.
2013-06-04 17:14:15 +02:00
Samuel John
0ff6c992c3 depends_on :python Default to min vers 2.6 not 2.7
To support system python on OS X
2013-06-03 21:18:05 +02:00
Samuel John
c524895666 Python 2.x and 3.x support
New `depends_on :python` Dependency.
New `depends_on :python3` Dependency.

To avoid having multiple formulae with endings -py2 and -py3,
we will handle support for different pythons (2.x vs. 3.x)
in the same formula.
Further brewed vs. external python will be transparently supported.

The formula also gets a new object `python`, which is false if
no Python is available or the user has disabled it. Otherwise
it is defined and provides several support methods:

python.site_packages # the site-packages in the formula's Cellar
python.global_site_packages
python.binary # the full path to the python binary
python.prefix
python.version
python.version.major
python.version.minor
python.xy # => e.g. "python2.7"
python.incdir # includes of python
python.libdir # the python dylib library
python.pkg_config_path # used internally by brew
python.from_osx?
python.framework?
python.universal?
python.pypy?
python.standard_caveats # Text to set PYTHONPATH for python.from_osx?
python.if3then3 # => "" for 2.x and to "3" for 3.x.

Further, to avoid code duplication, `python` takes an optional
block that is run twice if the formula defines depends_on
:python AND :python3.

python do
  system python, 'setup.py', "--prefix=#{prefix}"
end

Read more in the Homebrew wiki.
2013-06-03 17:29:43 +02:00