Skip to content
Snippets Groups Projects
Commit fb7f16fc authored by Samuel John's avatar Samuel John
Browse files

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"...
parent 9fb163d3
No related branches found
No related tags found
No related merge requests found
......@@ -70,7 +70,7 @@ class DependencyCollector
elsif (tag = tags.first) && LANGUAGE_MODULES.include?(tag)
# Next line only for legacy support of `depends_on 'module' => :python`
# It should be replaced by `depends_on :python => 'module'`
return PythonInstalled.new("2", spec, *tags) if tag == :python
return PythonInstalled.new("2", spec) if tag == :python
LanguageModuleDependency.new(tag, spec)
else
Dependency.new(spec, tags)
......@@ -99,8 +99,8 @@ class DependencyCollector
when :clt then CLTDependency.new(tags)
when :arch then ArchRequirement.new(tags)
when :hg then MercurialDependency.new(tags)
when :python, :python2 then PythonInstalled.new("2", *tags)
when :python3 then PythonInstalled.new("3", *tags)
when :python, :python2 then PythonInstalled.new("2", tags)
when :python3 then PythonInstalled.new("3", tags)
# Tiger's ld is too old to properly link some software
when :ld64 then LD64Dependency.new if MacOS.version < :leopard
else
......
......@@ -31,15 +31,16 @@ class PythonInstalled < Requirement
end
end
def initialize(version="2.6", *tags )
# Extract the min_version if given. Default to python 2.X else
if /(\d+\.)*\d+/ === version.to_s
@min_version = PythonVersion.new(version)
def initialize(default_version="2.6", tags=[] )
tags = [tags].flatten
# Extract the min_version if given. Default to default_version else
if /(\d+\.)*\d+/ === tags.first.to_s
@min_version = PythonVersion.new(tags.shift)
else
raise "Invalid version specification for Python: '#{version}'"
@min_version = PythonVersion.new(default_version)
end
# often used idiom: e.g. sipdir = "share/sip" + python.if3then3
# often used idiom: e.g. sipdir = "share/sip#{python.if3then3}"
if @min_version.major == 3
@if3then3 = "3"
else
......@@ -56,7 +57,7 @@ class PythonInstalled < Requirement
@imports = {}
tags.each do |tag|
if tag.kind_of? String
@imports[tag] = tag
@imports[tag] = tag # if the module name is the same as the PyPi name
elsif tag.kind_of? Hash
@imports.merge!(tag)
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment