Commit 25ecf42f by Arun Babu Neelicattu

sonnet: fix incorrect environment handling

parent 4d47e54f
...@@ -19,6 +19,6 @@ else ...@@ -19,6 +19,6 @@ else
POETRY="$PYTHON -m poetry" POETRY="$PYTHON -m poetry"
fi fi
$POETRY config virtualenvs.create false $POETRY config virtualenvs.in-project true
$POETRY install --no-dev $POETRY install --no-dev
$POETRY run python sonnet make release ${RUNTIMES[@]} $POETRY run python sonnet make release ${RUNTIMES[@]}
...@@ -55,10 +55,7 @@ class MakeReleaseCommand(Command): ...@@ -55,10 +55,7 @@ class MakeReleaseCommand(Command):
from poetry.repositories.pool import Pool from poetry.repositories.pool import Pool
from poetry.repositories.repository import Repository from poetry.repositories.repository import Repository
from poetry.utils._compat import Path from poetry.utils._compat import Path
from poetry.utils._compat import decode from poetry.utils.env import EnvManager
from poetry.utils._compat import encode
from poetry.utils._compat import subprocess
from poetry.utils.env import GET_BASE_PREFIX
from poetry.utils.env import VirtualEnv from poetry.utils.env import VirtualEnv
from poetry.utils.helpers import temporary_directory from poetry.utils.helpers import temporary_directory
...@@ -100,17 +97,12 @@ class MakeReleaseCommand(Command): ...@@ -100,17 +97,12 @@ class MakeReleaseCommand(Command):
version version
) )
) )
prefix = decode(
subprocess.run( with temporary_directory() as tmp_venv_dir:
[python], venv_dir = Path(tmp_venv_dir) / ".venv"
stdout=subprocess.PIPE, EnvManager.build_venv(venv_dir.as_posix(), executable=python)
stderr=subprocess.STDOUT,
input=encode(GET_BASE_PREFIX), env = VirtualEnv(venv_dir, venv_dir)
check=True,
shell=WINDOWS,
).stdout
)
env = VirtualEnv(Path(prefix.strip()), base=Path(prefix.strip()))
solver = Solver(package, pool, Repository(), Repository(), self.io) solver = Solver(package, pool, Repository(), Repository(), self.io)
with solver.use_environment(env): with solver.use_environment(env):
ops = solver.solve() ops = solver.solve()
...@@ -118,14 +110,13 @@ class MakeReleaseCommand(Command): ...@@ -118,14 +110,13 @@ class MakeReleaseCommand(Command):
if not env.is_valid_for_marker(op.package.marker): if not env.is_valid_for_marker(op.package.marker):
op.skip("Not needed for the current environment") op.skip("Not needed for the current environment")
vendor_dir = Path(
self.vendorize_for_python( self.vendorize_for_python(
python, env,
[op.package for op in ops if not op.skipped], [op.package for op in ops if not op.skipped],
poetry_dir, poetry_dir,
version, version,
) )
vendor_dir = Path(
os.path.join(poetry_dir, "_vendor", "py{}".format(python))
) )
created_files += [ created_files += [
p.relative_to(Path(tmp_dir)) p.relative_to(Path(tmp_dir))
...@@ -227,7 +218,7 @@ class MakeReleaseCommand(Command): ...@@ -227,7 +218,7 @@ class MakeReleaseCommand(Command):
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
raise RuntimeError("Python {} is not available".format(version)) raise RuntimeError("Python {} is not available".format(version))
def vendorize_for_python(self, python, packages, dest, python_version): def vendorize_for_python(self, env, packages, dest, python_version):
vendor_dir = os.path.join(dest, "_vendor", "py{}".format(python_version)) vendor_dir = os.path.join(dest, "_vendor", "py{}".format(python_version))
bar = self.progress_bar(max=len(packages)) bar = self.progress_bar(max=len(packages))
...@@ -239,19 +230,12 @@ class MakeReleaseCommand(Command): ...@@ -239,19 +230,12 @@ class MakeReleaseCommand(Command):
) )
bar.start() bar.start()
for package in packages: for package in packages:
subprocess.check_output( env.run_pip(
[
python,
"-m",
"pip",
"install", "install",
"{}=={}".format(package.name, package.version), "{}=={}".format(package.name, package.version),
"--no-deps", "--no-deps",
"--target", "--target",
vendor_dir, vendor_dir,
],
stderr=subprocess.STDOUT,
shell=WINDOWS,
) )
bar.advance() bar.advance()
...@@ -259,6 +243,8 @@ class MakeReleaseCommand(Command): ...@@ -259,6 +243,8 @@ class MakeReleaseCommand(Command):
self.line("") self.line("")
return vendor_dir
class MakeCommand(Command): class MakeCommand(Command):
""" """
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment