|
7 | 7 |
|
8 | 8 | import logging
|
9 | 9 | import os
|
| 10 | +import shutil |
10 | 11 |
|
11 | 12 | from pip._internal.cache import WheelCache
|
12 | 13 | from pip._internal.cli import cmdoptions
|
13 | 14 | from pip._internal.cli.req_command import RequirementCommand
|
14 | 15 | from pip._internal.exceptions import CommandError, PreviousBuildDirError
|
15 | 16 | from pip._internal.req import RequirementSet
|
16 | 17 | from pip._internal.req.req_tracker import get_requirement_tracker
|
| 18 | +from pip._internal.utils.misc import ensure_dir |
17 | 19 | from pip._internal.utils.temp_dir import TempDirectory
|
18 | 20 | from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
19 | 21 | from pip._internal.wheel_builder import WheelBuilder
|
@@ -161,10 +163,23 @@ def run(self, options, args):
|
161 | 163 | build_options=options.build_options or [],
|
162 | 164 | global_options=options.global_options or [],
|
163 | 165 | )
|
164 |
| - _, build_failures = wb.build( |
| 166 | + build_successes, build_failures = wb.build( |
165 | 167 | requirement_set.requirements.values(),
|
166 | 168 | should_unpack=False,
|
167 | 169 | )
|
| 170 | + for req in build_successes: |
| 171 | + assert req.link and req.link.is_wheel |
| 172 | + assert req.local_file_path |
| 173 | + # copy from cache to target directory |
| 174 | + try: |
| 175 | + ensure_dir(options.wheel_dir) |
| 176 | + shutil.copy(req.local_file_path, options.wheel_dir) |
| 177 | + except OSError as e: |
| 178 | + logger.warning( |
| 179 | + "Building wheel for %s failed: %s", |
| 180 | + req.name, e, |
| 181 | + ) |
| 182 | + build_failures.append(req) |
168 | 183 | if len(build_failures) != 0:
|
169 | 184 | raise CommandError(
|
170 | 185 | "Failed to build one or more wheels"
|
|
0 commit comments