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,40 +97,34 @@ class MakeReleaseCommand(Command): ...@@ -100,40 +97,34 @@ 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, solver = Solver(package, pool, Repository(), Repository(), self.io)
shell=WINDOWS, with solver.use_environment(env):
).stdout ops = solver.solve()
) for op in ops:
env = VirtualEnv(Path(prefix.strip()), base=Path(prefix.strip())) if not env.is_valid_for_marker(op.package.marker):
solver = Solver(package, pool, Repository(), Repository(), self.io) op.skip("Not needed for the current environment")
with solver.use_environment(env):
ops = solver.solve() vendor_dir = Path(
for op in ops: self.vendorize_for_python(
if not env.is_valid_for_marker(op.package.marker): env,
op.skip("Not needed for the current environment") [op.package for op in ops if not op.skipped],
poetry_dir,
self.vendorize_for_python( version,
python, )
[op.package for op in ops if not op.skipped], )
poetry_dir, created_files += [
version, p.relative_to(Path(tmp_dir))
) for p in vendor_dir.glob("**/*")
vendor_dir = Path( if p.is_file()
os.path.join(poetry_dir, "_vendor", "py{}".format(python)) and p.suffix != ".pyc"
) and str(p.relative_to(Path(tmp_dir))) not in vcs_excluded
created_files += [ ]
p.relative_to(Path(tmp_dir))
for p in vendor_dir.glob("**/*")
if p.is_file()
and p.suffix != ".pyc"
and str(p.relative_to(Path(tmp_dir))) not in vcs_excluded
]
self.line("") self.line("")
...@@ -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(
[ "install",
python, "{}=={}".format(package.name, package.version),
"-m", "--no-deps",
"pip", "--target",
"install", vendor_dir,
"{}=={}".format(package.name, package.version),
"--no-deps",
"--target",
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