Skip to content

Commit 6fc4829

Browse files
author
Sergio Schvezov
authored
Merge 2.3 hotfixes
2 parents 5785834 + 68cbb7b commit 6fc4829

File tree

4 files changed

+44
-13
lines changed

4 files changed

+44
-13
lines changed

charmcraft/charm_builder.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
import os
2626
import pathlib
2727
import shutil
28-
import sys
2928
import subprocess
29+
import sys
3030
from typing import List
3131

3232
from charmcraft import instrum
@@ -62,7 +62,7 @@ def __init__(
6262
binary_python_packages: List[str] = None,
6363
python_packages: List[str] = None,
6464
requirements: List[pathlib.Path] = None,
65-
):
65+
) -> None:
6666
self.builddir = builddir
6767
self.installdir = installdir
6868
self.entrypoint = entrypoint
@@ -249,17 +249,15 @@ def _install_dependencies(self, staging_venv_dir):
249249
cmd.extend(self.python_packages) # the python packages to install
250250
_process_run(cmd)
251251

252-
if self.requirement_paths:
253-
# install dependencies from requirement files
252+
if self.requirement_paths or self.charmlib_deps:
254253
cmd = [pip_cmd, "install", "--upgrade", "--no-binary", ":all:"] # base command
255-
for reqspath in self.requirement_paths:
256-
cmd.append("--requirement={}".format(reqspath)) # the dependencies file(s)
257-
_process_run(cmd)
258254

259-
if self.charmlib_deps:
260-
# install charmlibs python dependencies
261-
cmd = [pip_cmd, "install", "--upgrade", "--no-binary", ":all:"] # base command
262-
cmd.extend(self.charmlib_deps) # the python packages to install
255+
if self.requirement_paths:
256+
# install dependencies from requirement files
257+
cmd.extend(f"--requirement={path}" for path in self.requirement_paths)
258+
259+
if self.charmlib_deps:
260+
cmd.extend(self.charmlib_deps)
263261
_process_run(cmd)
264262

265263
def handle_dependencies(self):
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
summary: pack a charm with a specific (old) dependency version
2+
3+
include:
4+
- tests/
5+
6+
prepare: |
7+
tests.pkgs install unzip
8+
charmcraft init --project-dir=charm
9+
cd charm
10+
echo "ops==2.0.0" > requirements.txt
11+
cat <<- EOF >> charmcraft.yaml
12+
parts:
13+
charm:
14+
charm-requirements: [requirements.txt]
15+
EOF
16+
mkdir -p lib/charms/charm/v0/
17+
cat <<- EOF > lib/charms/charm/v0/my_lib.py
18+
PYDEPS = ["ops"]
19+
LIBID = "my_lib"
20+
LIBAPI = 0
21+
LIBPATCH = 1
22+
EOF
23+
restore: |
24+
pushd charm
25+
charmcraft clean
26+
popd
27+
rm -rf charm
28+
execute: |
29+
cd charm
30+
charmcraft pack --verbose
31+
test -f charm*.charm
32+
unzip -p charm_*.charm venv/ops/version.py | MATCH "version = '2.0.0'"

tests/test_charm_builder.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -791,9 +791,10 @@ def test_build_dependencies_virtualenv_all(tmp_path, assert_output):
791791
":all:",
792792
f"--requirement={reqs_file_1}",
793793
f"--requirement={reqs_file_2}",
794+
"pkg5",
795+
"pkg6",
794796
]
795797
),
796-
call([pip_cmd, "install", "--upgrade", "--no-binary", ":all:", "pkg5", "pkg6"]),
797798
]
798799

799800
site_packages_dir = charm_builder._find_venv_site_packages(pathlib.Path(STAGING_VENV_DIRNAME))

tests/test_providers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import pathlib
1919
import re
2020
import sys
21-
from unittest.mock import Mock, patch, call
21+
from unittest.mock import Mock, call, patch
2222

2323
import pytest
2424
from craft_cli import CraftError

0 commit comments

Comments
 (0)