Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6076237

Browse files
authored
Merge pull request #1 from area1/piphack-script-fix
patch piphack script versions of pip 19.1+
2 parents 6dae1d0 + 092fefd commit 6076237

File tree

2 files changed

+58
-17
lines changed

2 files changed

+58
-17
lines changed

files/halite_gem/poise_python/resources/python_package.rb

Lines changed: 58 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,37 @@ module PythonPackage
4242
sys.stderr.write('The python_package resource requires pip >= 6.1.0, currently '+pip.__version__+'\\n')
4343
sys.exit(1)
4444
45+
# pip has shuffled around it's internals over the years so we gotta test where things are
4546
try:
4647
from pip.commands import InstallCommand
48+
cmd = InstallCommand()
49+
except ImportError:
50+
try:
51+
from pip._internal.commands import InstallCommand
52+
cmd = InstallCommand()
53+
except ImportError:
54+
from pip._internal.commands import create_command
55+
cmd = create_command("install")
56+
57+
try:
4758
from pip.index import PackageFinder
48-
from pip.req import InstallRequirement
4959
except ImportError:
50-
# Pip 10 moved all internals to their own package.
51-
from pip._internal.commands import InstallCommand
52-
from pip._internal.index import PackageFinder
60+
try:
61+
from pip._internal.index import PackageFinder
62+
except ImportError:
63+
from pip._internal.index.package_finder import PackageFinder
5364
65+
try:
66+
from pip.req import InstallRequirement
67+
install_req_from_line = InstallRequirement.from_line
68+
except ImportError:
69+
try:
70+
from pip._internal.req import InstallRequirement
71+
install_req_from_line = InstallRequirement.from_line
72+
except ImportError:
73+
from pip._internal.req.constructors import install_req_from_line
5474
5575
packages = {}
56-
cmd = InstallCommand()
5776
options, args = cmd.parse_args(sys.argv[1:])
5877
with cmd._build_session(options) as session:
5978
if options.no_index:
@@ -71,20 +90,45 @@ module PythonPackage
7190
finder_options['process_dependency_links'] = options.process_dependency_links
7291
if getattr(options, 'format_control', None):
7392
finder_options['format_control'] = options.format_control
74-
finder = PackageFinder(**finder_options)
75-
find_all = getattr(finder, 'find_all_candidates', getattr(finder, '_find_all_versions', None))
76-
for arg in args:
93+
try:
94+
finder = PackageFinder(**finder_options)
95+
except TypeError:
96+
# need to use LinkCollector
7797
try:
78-
from pip._internal.req.constructors import install_req_from_line
79-
req = install_req_from_line(arg)
98+
from pip._internal.collector import LinkCollector
8099
except ImportError:
81-
from pip._internal.req import InstallRequirement
82-
req = InstallRequirement.from_line(arg)
100+
from pip._internal.index.collector import LinkCollector
101+
102+
from pip._internal.models.search_scope import SearchScope
103+
from pip._internal.models.selection_prefs import SelectionPreferences
104+
105+
search_scope = SearchScope.create(
106+
finder_options['find_links'], finder_options['index_urls']
107+
)
108+
collector = LinkCollector(session, search_scope)
109+
selection_prefs = SelectionPreferences(
110+
allow_yanked=False,
111+
allow_all_prereleases=options.pre,
112+
format_control=finder_options.get('format_control')
113+
)
114+
finder = PackageFinder.create(collector, selection_prefs)
115+
find_all = getattr(finder, 'find_all_candidates', getattr(finder, '_find_all_versions', None))
116+
117+
def candidate_link(c, default=None):
118+
return getattr(c, 'location', getattr(c, 'link', default))
119+
120+
for arg in args:
121+
req = install_req_from_line(arg)
83122
found = finder.find_requirement(req, True)
84123
all_candidates = find_all(req.name)
85-
candidate = [c for c in all_candidates if c.location == found]
124+
candidate = [
125+
c for c in all_candidates
126+
if candidate_link(c) == candidate_link(found, default=found)
127+
]
86128
if candidate:
87-
packages[candidate[0].project.lower()] = str(candidate[0].version)
129+
c = candidate[0]
130+
candidate_name = getattr(c, 'project', getattr(c, 'name', None)).lower()
131+
packages[candidate_name] = str(c.version)
88132
json.dump(packages, sys.stdout)
89133
EOH
90134

files/halite_gem/poise_python/resources/python_runtime_pip.rb

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,6 @@ def install_pip
180180
end
181181

182182
Chef::Log.debug("[#{new_resource}] Installing pip #{new_resource.version} via itself")
183-
if pip_version.to_i < 19
184-
get_pip_url = 'https://s3.amazonaws.com/a1s-public-software-repository/get-pip.py'
185-
end
186183
notifying_block do
187184
# Use pip to upgrade (or downgrade) itself.
188185
python_package 'pip' do

0 commit comments

Comments
 (0)