Skip to content

Commit 409c435

Browse files
committed
rosdep resovle retuns pkg<=0.0 not 'pkg<=0.0'
1 parent bfb1d4b commit 409c435

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

src/rosdep2/platforms/pip.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,12 @@ def pip_detect(pkgs, exec_fn=None):
107107
if fallback_to_pip_show:
108108
for pkg in [p for p in pkgs if p not in ret_list]:
109109
# does not see retcode but stdout for old pip to check if installed
110+
pkg_name = pkg
111+
if any(x in pkg for x in ['>', '<', '=']):
112+
import re
113+
pkg_name = re.split('[^a-zA-Z0-9]', pkg)[0]
110114
proc = subprocess.Popen(
111-
pip_cmd + ['show', pkg],
115+
pip_cmd + ['show', pkg_name],
112116
stdout=subprocess.PIPE,
113117
stderr=subprocess.STDOUT
114118
)
@@ -172,7 +176,7 @@ def resolve(self, rosdep, rosdep_args):
172176
pip_specify_version = True
173177
if pip_specify_version:
174178
for i, package in list(enumerate(packages)):
175-
packages[i] = "'" + package + "'"
179+
packages[i] = package
176180

177181
return packages
178182

@@ -192,9 +196,9 @@ def get_install_command(self, resolved, interactive=True, reinstall=False, quiet
192196
packages = self.get_packages_to_install(resolved, reinstall=reinstall)
193197
if not packages:
194198
return []
195-
cmd = pip_cmd + ['install', '-U']
199+
cmd = pip_cmd + ['install']
196200
if quiet:
197201
cmd.append('-q')
198202
if reinstall:
199203
cmd.append('-I')
200-
return [self.elevate_priv(cmd + [p]) for p in packages]
204+
return [self.elevate_priv(cmd + [p] if any(x in p for x in ['>', '<', '=']) else cmd + ['-U'] + [p]) for p in packages]

test/test_rosdep_pip.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,20 +90,20 @@ def test_PackageManagerInstaller_resolve():
9090
assert ['baz', 'bar'] == installer.resolve(Dependency('baz'), ['baz', 'bar'])
9191

9292
# version_eq
93-
assert ["'baz==1.0'"] == installer.resolve(Dependency('baz', version_eq='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
94-
assert ["'baz==1.0'", "'bar==1.0'"] == installer.resolve(Dependency('baz', version_eq='1.0'), dict(packages=['baz', 'bar']))
93+
assert ['baz==1.0'] == installer.resolve(Dependency('baz', version_eq='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
94+
assert ['baz==1.0', 'bar==1.0'] == installer.resolve(Dependency('baz', version_eq='1.0'), dict(packages=['baz', 'bar']))
9595
# version_gte
96-
assert ["'baz>=1.0'"] == installer.resolve(Dependency('baz', version_gte='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
97-
assert ["'baz>=1.0'", "'bar>=1.0'"] == installer.resolve(Dependency('baz', version_gte='1.0'), dict(packages=['baz', 'bar']))
96+
assert ['baz>=1.0'] == installer.resolve(Dependency('baz', version_gte='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
97+
assert ['baz>=1.0', 'bar>=1.0'] == installer.resolve(Dependency('baz', version_gte='1.0'), dict(packages=['baz', 'bar']))
9898
# version_lte
99-
assert ["'baz<=1.0'"] == installer.resolve(Dependency('baz', version_lte='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
100-
assert ["'baz<=1.0'", "'bar<=1.0'"] == installer.resolve(Dependency('baz', version_lte='1.0'), dict(packages=['baz', 'bar']))
99+
assert ['baz<=1.0'] == installer.resolve(Dependency('baz', version_lte='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
100+
assert ['baz<=1.0', 'bar<=1.0'] == installer.resolve(Dependency('baz', version_lte='1.0'), dict(packages=['baz', 'bar']))
101101
# version_gt
102-
assert ["'baz>1.0'"] == installer.resolve(Dependency('baz', version_gt='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
103-
assert ["'baz>1.0'", "'bar>1.0'"] == installer.resolve(Dependency('baz', version_gt='1.0'), dict(packages=['baz', 'bar']))
102+
assert ['baz>1.0'] == installer.resolve(Dependency('baz', version_gt='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
103+
assert ['baz>1.0', 'bar>1.0'] == installer.resolve(Dependency('baz', version_gt='1.0'), dict(packages=['baz', 'bar']))
104104
# version_lt
105-
assert ["'baz<1.0'"] == installer.resolve(Dependency('baz', version_lt='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
106-
assert ["'baz<1.0'", "'bar<1.0'"] == installer.resolve(Dependency('baz', version_lt='1.0'), dict(packages=['baz', 'bar']))
105+
assert ['baz<1.0'] == installer.resolve(Dependency('baz', version_lt='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
106+
assert ['baz<1.0', 'bar<1.0'] == installer.resolve(Dependency('baz', version_lt='1.0'), dict(packages=['baz', 'bar']))
107107
# test invalid data
108108
try:
109109
installer.resolve({}, 0)

0 commit comments

Comments
 (0)