alibuild 1.17.12__tar.gz → 1.17.14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {alibuild-1.17.12 → alibuild-1.17.14}/.github/workflows/pr-check.yml +11 -7
- {alibuild-1.17.12 → alibuild-1.17.14}/PKG-INFO +8 -3
- {alibuild-1.17.12 → alibuild-1.17.14}/alfaBuild +1 -1
- {alibuild-1.17.12 → alibuild-1.17.14}/aliBuild +1 -1
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild.egg-info/PKG-INFO +8 -3
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild.egg-info/requires.txt +1 -1
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/_version.py +2 -2
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/build.py +25 -2
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/utilities.py +21 -20
- {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/reference.md +1 -1
- {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/troubleshooting.md +1 -1
- {alibuild-1.17.12 → alibuild-1.17.14}/pyproject.toml +2 -1
- alibuild-1.17.14/requirements.txt +7 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/setup.py +1 -1
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_args.py +19 -12
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_build.py +4 -4
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_packagelist.py +14 -11
- {alibuild-1.17.12 → alibuild-1.17.14}/tox.ini +1 -1
- alibuild-1.17.12/requirements.txt +0 -9
- {alibuild-1.17.12 → alibuild-1.17.14}/.flake8 +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/.github/workflows/documentation.yml +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/.github/workflows/release.yml +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/.gitignore +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/.pylintrc +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/ANALYTICS.md +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/DESIGN.md +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/LICENSE.md +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/MANIFEST.in +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/PACKAGING.md +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/README.rst +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/aliDeps +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/aliDoctor +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild.egg-info/SOURCES.txt +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild.egg-info/dependency_links.txt +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild.egg-info/top_level.txt +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/__init__.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/analytics.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/args.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/build_template.sh +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/clean.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/cmd.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/deps.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/doctor.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/git.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/init.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/log.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/scm.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/sl.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/sync.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/templating_plugin.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/workarea.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/alienv +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/codecov.yml +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/debian/changelog +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/debian/compat +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/debian/control +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/debian/copyright +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/debian/files +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/debian/rules +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/docs/README.md +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/docs/SUPPORT +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/alice_logo.png +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/deps.png +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/index.md +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/quick.md +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/stylesheets/extra.css +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/user.md +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/docs/mkdocs.yml +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/pb +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/setup.cfg +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/templates/alibuild_to_please.jnj +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_analytics.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_clean.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_cmd.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_deps.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_doctor.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_git.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_hashing.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_init.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_log.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_parseRecipe.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_sync.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_utilities.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_workarea.py +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken1.sh +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken2.sh +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken3.sh +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken4.sh +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken5.sh +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken6.sh +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken7.sh +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/clobber-initdotsh.sh +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/defaults-o2.sh +0 -0
- {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/delete-etc.sh +0 -0
|
@@ -30,6 +30,7 @@ jobs:
|
|
|
30
30
|
- '3.10.6' # ubuntu2204 container
|
|
31
31
|
- '3.11'
|
|
32
32
|
- '3.12'
|
|
33
|
+
- '3.13'
|
|
33
34
|
|
|
34
35
|
steps:
|
|
35
36
|
- uses: actions/checkout@v4
|
|
@@ -60,13 +61,13 @@ jobs:
|
|
|
60
61
|
|
|
61
62
|
- name: Upload coverage information
|
|
62
63
|
if: ${{ always() && github.event.repository.owner.login == 'alisw' }}
|
|
63
|
-
uses: codecov/codecov-action@
|
|
64
|
+
uses: codecov/codecov-action@v5
|
|
64
65
|
with:
|
|
65
66
|
files: coverage.json
|
|
66
67
|
|
|
67
68
|
mac-unittest:
|
|
68
69
|
name: mac-python${{ matrix.python-version }}
|
|
69
|
-
runs-on: macos-
|
|
70
|
+
runs-on: macos-14
|
|
70
71
|
|
|
71
72
|
strategy:
|
|
72
73
|
fail-fast: false # continue executing other checks if one fails
|
|
@@ -75,15 +76,18 @@ jobs:
|
|
|
75
76
|
- '3.11'
|
|
76
77
|
|
|
77
78
|
steps:
|
|
78
|
-
- uses: actions/checkout@
|
|
79
|
+
- uses: actions/checkout@v4
|
|
79
80
|
|
|
80
81
|
- name: Set up Python ${{ matrix.python-version }}
|
|
81
|
-
uses: actions/setup-python@
|
|
82
|
+
uses: actions/setup-python@v5
|
|
82
83
|
with:
|
|
83
84
|
python-version: ${{ matrix.python-version }}
|
|
84
85
|
|
|
85
86
|
- name: Install test dependencies
|
|
86
87
|
run: |
|
|
88
|
+
# Hack to remove whatever the CI default image brings now, as it
|
|
89
|
+
# conflicts with the one in o2-full-deps [O2-5580]
|
|
90
|
+
brew uninstall --ignore-dependencies --force pkg-config@0.29.2
|
|
87
91
|
brew install modules alisw/system-deps/o2-full-deps sapling
|
|
88
92
|
python3 -m pip install --upgrade tox tox-gh-actions coverage
|
|
89
93
|
|
|
@@ -102,7 +106,7 @@ jobs:
|
|
|
102
106
|
|
|
103
107
|
- name: Upload coverage information
|
|
104
108
|
if: ${{ always() && github.event.repository.owner.login == 'alisw' }}
|
|
105
|
-
uses: codecov/codecov-action@
|
|
109
|
+
uses: codecov/codecov-action@v5
|
|
106
110
|
with:
|
|
107
111
|
files: coverage.json
|
|
108
112
|
|
|
@@ -111,10 +115,10 @@ jobs:
|
|
|
111
115
|
runs-on: ubuntu-latest
|
|
112
116
|
|
|
113
117
|
steps:
|
|
114
|
-
- uses: actions/checkout@
|
|
118
|
+
- uses: actions/checkout@v4
|
|
115
119
|
|
|
116
120
|
- name: Set up Python
|
|
117
|
-
uses: actions/setup-python@
|
|
121
|
+
uses: actions/setup-python@v5
|
|
118
122
|
with:
|
|
119
123
|
python-version: 3.x
|
|
120
124
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: alibuild
|
|
3
|
-
Version: 1.17.
|
|
3
|
+
Version: 1.17.14
|
|
4
4
|
Summary: ALICE Build Tool
|
|
5
5
|
Home-page: https://alisw.github.io/alibuild
|
|
6
6
|
Author: Giulio Eulisse
|
|
@@ -18,13 +18,18 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.10
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
22
|
Description-Content-Type: text/x-rst
|
|
22
23
|
License-File: LICENSE.md
|
|
23
24
|
Requires-Dist: pyyaml
|
|
24
25
|
Requires-Dist: requests
|
|
25
26
|
Requires-Dist: distro
|
|
26
27
|
Requires-Dist: jinja2
|
|
27
|
-
Requires-Dist: boto3
|
|
28
|
+
Requires-Dist: boto3==1.23.10
|
|
29
|
+
Dynamic: author
|
|
30
|
+
Dynamic: description
|
|
31
|
+
Dynamic: description-content-type
|
|
32
|
+
Dynamic: home-page
|
|
28
33
|
|
|
29
34
|
.. image:: https://badge.fury.io/py/alibuild.svg
|
|
30
35
|
.. image:: https://github.com/alisw/alibuild/actions/workflows/pr-check.yml/badge.svg?branch=master&event=push
|
|
@@ -57,7 +57,7 @@ def doMain(args, parser):
|
|
|
57
57
|
error(e.message)
|
|
58
58
|
exit(1)
|
|
59
59
|
|
|
60
|
-
if args.action == "version":
|
|
60
|
+
if args.action == "version" or args.action == None:
|
|
61
61
|
print("aliBuild version: {version} ({arch})".format(
|
|
62
62
|
version=__version__ or "unknown", arch=args.architecture or "unknown"))
|
|
63
63
|
sys.exit(0)
|
|
@@ -57,7 +57,7 @@ def doMain(args, parser):
|
|
|
57
57
|
error(e.message)
|
|
58
58
|
exit(1)
|
|
59
59
|
|
|
60
|
-
if args.action == "version":
|
|
60
|
+
if args.action == "version" or args.action == None:
|
|
61
61
|
print("aliBuild version: {version} ({arch})".format(
|
|
62
62
|
version=__version__ or "unknown", arch=args.architecture or "unknown"))
|
|
63
63
|
sys.exit(0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: alibuild
|
|
3
|
-
Version: 1.17.
|
|
3
|
+
Version: 1.17.14
|
|
4
4
|
Summary: ALICE Build Tool
|
|
5
5
|
Home-page: https://alisw.github.io/alibuild
|
|
6
6
|
Author: Giulio Eulisse
|
|
@@ -18,13 +18,18 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.10
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
22
|
Description-Content-Type: text/x-rst
|
|
22
23
|
License-File: LICENSE.md
|
|
23
24
|
Requires-Dist: pyyaml
|
|
24
25
|
Requires-Dist: requests
|
|
25
26
|
Requires-Dist: distro
|
|
26
27
|
Requires-Dist: jinja2
|
|
27
|
-
Requires-Dist: boto3
|
|
28
|
+
Requires-Dist: boto3==1.23.10
|
|
29
|
+
Dynamic: author
|
|
30
|
+
Dynamic: description
|
|
31
|
+
Dynamic: description-content-type
|
|
32
|
+
Dynamic: home-page
|
|
28
33
|
|
|
29
34
|
.. image:: https://badge.fury.io/py/alibuild.svg
|
|
30
35
|
.. image:: https://github.com/alisw/alibuild/actions/workflows/pr-check.yml/badge.svg?branch=master&event=push
|
|
@@ -4,8 +4,8 @@ from alibuild_helpers import __version__
|
|
|
4
4
|
from alibuild_helpers.analytics import report_event
|
|
5
5
|
from alibuild_helpers.log import debug, info, banner, warning
|
|
6
6
|
from alibuild_helpers.log import dieOnError
|
|
7
|
-
from alibuild_helpers.cmd import execute, DockerRunner, BASH, install_wrapper_script
|
|
8
|
-
from alibuild_helpers.utilities import prunePaths, symlink, call_ignoring_oserrors, topological_sort
|
|
7
|
+
from alibuild_helpers.cmd import execute, DockerRunner, BASH, install_wrapper_script, getstatusoutput
|
|
8
|
+
from alibuild_helpers.utilities import prunePaths, symlink, call_ignoring_oserrors, topological_sort, detectArch
|
|
9
9
|
from alibuild_helpers.utilities import resolve_store_path
|
|
10
10
|
from alibuild_helpers.utilities import parseDefaults, readDefaults
|
|
11
11
|
from alibuild_helpers.utilities import getPackageList, asList
|
|
@@ -1112,6 +1112,29 @@ def doBuild(args, parser):
|
|
|
1112
1112
|
""")
|
|
1113
1113
|
buildErrMsg += "".join("\n ( cd %s && git pull --rebase )" % dp for dp in updatablePkgs)
|
|
1114
1114
|
|
|
1115
|
+
# Gather build info for the error message
|
|
1116
|
+
try:
|
|
1117
|
+
safe_args = {
|
|
1118
|
+
"pkgname", "defaults", "architecture", "forceUnknownArch",
|
|
1119
|
+
"develPrefix", "jobs", "noSystem", "noDevel", "forceTracked", "plugin",
|
|
1120
|
+
"disable", "annotate", "onlyDeps", "docker"
|
|
1121
|
+
}
|
|
1122
|
+
args_str = " ".join(f"--{k}={v}" for k, v in vars(args).items() if v and k in safe_args)
|
|
1123
|
+
detected_arch = detectArch()
|
|
1124
|
+
buildErrMsg += dedent(f"""
|
|
1125
|
+
Build info:
|
|
1126
|
+
OS: {detected_arch}
|
|
1127
|
+
Using aliBuild from alibuild@{__version__ or "unknown"} recipes in alidist@{os.environ["ALIBUILD_ALIDIST_HASH"][:10]}
|
|
1128
|
+
Build arguments: {args_str}
|
|
1129
|
+
""")
|
|
1130
|
+
|
|
1131
|
+
if detected_arch.startswith("osx"):
|
|
1132
|
+
buildErrMsg += f'XCode version: {getstatusoutput("xcodebuild -version")[1]}'
|
|
1133
|
+
|
|
1134
|
+
except Exception as exc:
|
|
1135
|
+
warning("Failed to gather build info", exc_info=exc)
|
|
1136
|
+
|
|
1137
|
+
|
|
1115
1138
|
dieOnError(err, buildErrMsg.strip())
|
|
1116
1139
|
|
|
1117
1140
|
# We need to create 2 sets of links, once with the full requires,
|
|
@@ -493,27 +493,28 @@ def getPackageList(packages, specs, configDir, preferSystem, noSystem,
|
|
|
493
493
|
if re.match(replacement_matcher, key):
|
|
494
494
|
replacement = spec["prefer_system_replacement_specs"][replacement_matcher]
|
|
495
495
|
break
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
496
|
+
if replacement:
|
|
497
|
+
# We must keep the package name the same, since it is used to
|
|
498
|
+
# specify dependencies.
|
|
499
|
+
replacement["package"] = spec["package"]
|
|
500
|
+
# The version is required for all specs. What we put there will
|
|
501
|
+
# influence the package's hash, so allow the user to override it.
|
|
502
|
+
replacement.setdefault("version", requested_version)
|
|
503
|
+
spec = replacement
|
|
504
|
+
# Allows generalising the version based on the actual key provided
|
|
505
|
+
spec["version"] = spec["version"].replace("%(key)s", key)
|
|
506
|
+
recipe = replacement.get("recipe", "")
|
|
507
|
+
# If there's an explicitly-specified recipe, we're still building
|
|
508
|
+
# the package. If not, aliBuild will still "build" it, but it's
|
|
509
|
+
# basically instantaneous, so report to the user that we're taking
|
|
510
|
+
# it from the system.
|
|
511
|
+
if recipe:
|
|
512
|
+
ownPackages.add(spec["package"])
|
|
513
|
+
else:
|
|
514
|
+
systemPackages.add(spec["package"])
|
|
515
515
|
else:
|
|
516
|
-
|
|
516
|
+
warning(f"Could not find named replacement spec for {spec['package']}: {key}, "
|
|
517
|
+
"falling back to building the package ourselves.")
|
|
517
518
|
|
|
518
519
|
dieOnError(("system_requirement" in spec) and recipe.strip("\n\t "),
|
|
519
520
|
"System requirements %s cannot have a recipe" % spec["package"])
|
|
@@ -318,7 +318,7 @@ Then, configure git to use SSH to authenticate with CERN GitLab using the follow
|
|
|
318
318
|
git config --global 'url.ssh://git@gitlab.cern.ch:7999/.insteadof' 'https://gitlab.cern.ch/'
|
|
319
319
|
```
|
|
320
320
|
|
|
321
|
-
[gitlab-ssh-key]: https://gitlab.cern.ch/-/
|
|
321
|
+
[gitlab-ssh-key]: https://gitlab.cern.ch/-/user_settings/ssh_keys
|
|
322
322
|
|
|
323
323
|
#### Caching passwords
|
|
324
324
|
|
|
@@ -24,6 +24,7 @@ classifiers = [
|
|
|
24
24
|
'Programming Language :: Python :: 3.10', # ubuntu2204
|
|
25
25
|
'Programming Language :: Python :: 3.11', # MacOS
|
|
26
26
|
'Programming Language :: Python :: 3.12', # MacOS
|
|
27
|
+
'Programming Language :: Python :: 3.13', # MacOS
|
|
27
28
|
]
|
|
28
29
|
|
|
29
30
|
dependencies = [
|
|
@@ -31,7 +32,7 @@ dependencies = [
|
|
|
31
32
|
'requests',
|
|
32
33
|
'distro',
|
|
33
34
|
'jinja2',
|
|
34
|
-
'boto3',
|
|
35
|
+
'boto3==1.23.10',
|
|
35
36
|
]
|
|
36
37
|
|
|
37
38
|
[project.urls]
|
|
@@ -19,7 +19,7 @@ install_requires = ['pyyaml', 'requests', 'distro', 'jinja2']
|
|
|
19
19
|
# Old setuptools versions (which pip2 uses) don't support range comparisons
|
|
20
20
|
# (like :python_version >= "3.6") in extras_require, so do this ourselves here.
|
|
21
21
|
if sys.version_info >= (3, 6):
|
|
22
|
-
install_requires.append('boto3')
|
|
22
|
+
install_requires.append('boto3==1.23.10')
|
|
23
23
|
|
|
24
24
|
setup(
|
|
25
25
|
name='alibuild',
|
|
@@ -8,6 +8,7 @@ from alibuild_helpers.args import doParseArgs, matchValidArch, finaliseArgs, DEF
|
|
|
8
8
|
import sys
|
|
9
9
|
import os
|
|
10
10
|
import os.path
|
|
11
|
+
import re
|
|
11
12
|
|
|
12
13
|
import unittest
|
|
13
14
|
import shlex
|
|
@@ -16,18 +17,18 @@ BUILD_MISSING_PKG_ERROR = "the following arguments are required: PACKAGE"
|
|
|
16
17
|
ANALYTICS_MISSING_STATE_ERROR = "the following arguments are required: state"
|
|
17
18
|
|
|
18
19
|
# A few errors we should handle, together with the expected result
|
|
19
|
-
ARCHITECTURE_ERROR =
|
|
20
|
+
ARCHITECTURE_ERROR = u"Unknown / unsupported architecture: foo.\n\n.*"
|
|
20
21
|
PARSER_ERRORS = {
|
|
21
|
-
"build --force-unknown-architecture":
|
|
22
|
-
"build --force-unknown-architecture zlib --foo":
|
|
23
|
-
"init --docker-image":
|
|
24
|
-
"builda --force-unknown-architecture zlib" :
|
|
25
|
-
"build --force-unknown-architecture zlib --no-system --always-prefer-system" :
|
|
22
|
+
"build --force-unknown-architecture": BUILD_MISSING_PKG_ERROR,
|
|
23
|
+
"build --force-unknown-architecture zlib --foo": 'unrecognized arguments: --foo',
|
|
24
|
+
"init --docker-image": 'unrecognized arguments: --docker-image',
|
|
25
|
+
"builda --force-unknown-architecture zlib" : "argument action: invalid choice: 'builda'.*",
|
|
26
|
+
"build --force-unknown-architecture zlib --no-system --always-prefer-system" : 'argument --always-prefer-system: not allowed with argument --no-system',
|
|
26
27
|
"build zlib --architecture foo": ARCHITECTURE_ERROR,
|
|
27
|
-
"build --force-unknown-architecture zlib --remote-store rsync://test1.local/::rw --write-store rsync://test2.local/::rw ":
|
|
28
|
-
"build zlib -a osx_x86-64 --docker-image foo":
|
|
29
|
-
"build zlib -a slc7_x86-64 --annotate foobar":
|
|
30
|
-
"analytics":
|
|
28
|
+
"build --force-unknown-architecture zlib --remote-store rsync://test1.local/::rw --write-store rsync://test2.local/::rw ": 'cannot specify ::rw and --write-store at the same time',
|
|
29
|
+
"build zlib -a osx_x86-64 --docker-image foo": 'cannot use `-a osx_x86-64` and --docker',
|
|
30
|
+
"build zlib -a slc7_x86-64 --annotate foobar": "--annotate takes arguments of the form PACKAGE=COMMENT",
|
|
31
|
+
"analytics": ANALYTICS_MISSING_STATE_ERROR
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
# A few valid archs
|
|
@@ -97,11 +98,17 @@ class ArgsTestCase(unittest.TestCase):
|
|
|
97
98
|
@mock.patch('alibuild_helpers.args.argparse.ArgumentParser.error')
|
|
98
99
|
def test_failingParsing(self, mock_print):
|
|
99
100
|
mock_print.side_effect = FakeExit("raised")
|
|
100
|
-
for (cmd,
|
|
101
|
+
for (cmd, pattern) in PARSER_ERRORS.items():
|
|
101
102
|
mock_print.mock_calls = []
|
|
102
103
|
with patch.object(sys, "argv", ["alibuild"] + shlex.split(cmd)):
|
|
103
104
|
self.assertRaises(FakeExit, doParseArgs)
|
|
104
|
-
|
|
105
|
+
for mock_call in mock_print.mock_calls:
|
|
106
|
+
args = mock_call[1]
|
|
107
|
+
print(args)
|
|
108
|
+
self.assertTrue(
|
|
109
|
+
re.match(pattern, args[0]),
|
|
110
|
+
f"Expected '{args[0]}' matching '{pattern}' but it's not the case."
|
|
111
|
+
)
|
|
105
112
|
|
|
106
113
|
def test_validArchitectures(self):
|
|
107
114
|
for arch in VALID_ARCHS:
|
|
@@ -25,7 +25,7 @@ TEST_DEFAULT_RELEASE_BUILD_HASH = "27ce49698e818e8efb56b6eff6dd785e503df341"
|
|
|
25
25
|
TEST_ZLIB_RECIPE = """\
|
|
26
26
|
package: zlib
|
|
27
27
|
version: v1.2.3
|
|
28
|
-
source: https://github.com/
|
|
28
|
+
source: https://github.com/madler/zlib
|
|
29
29
|
tag: master
|
|
30
30
|
---
|
|
31
31
|
./configure
|
|
@@ -92,12 +92,12 @@ baad\trefs/tags/v3"""
|
|
|
92
92
|
TEST_EXTRA_BUILD_HASH = ("5afae57bfc6a374e74c1c4427698ab5edebce0bc")
|
|
93
93
|
|
|
94
94
|
|
|
95
|
-
GIT_CLONE_REF_ZLIB_ARGS = ("clone", "--bare", "https://github.com/
|
|
95
|
+
GIT_CLONE_REF_ZLIB_ARGS = ("clone", "--bare", "https://github.com/madler/zlib",
|
|
96
96
|
"/sw/MIRROR/zlib", "--filter=blob:none"), ".", False
|
|
97
|
-
GIT_CLONE_SRC_ZLIB_ARGS = ("clone", "-n", "https://github.com/
|
|
97
|
+
GIT_CLONE_SRC_ZLIB_ARGS = ("clone", "-n", "https://github.com/madler/zlib",
|
|
98
98
|
"/sw/SOURCES/zlib/v1.2.3/8822efa61f",
|
|
99
99
|
"--dissociate", "--reference", "/sw/MIRROR/zlib", "--filter=blob:none"), ".", False
|
|
100
|
-
GIT_SET_URL_ZLIB_ARGS = ("remote", "set-url", "--push", "origin", "https://github.com/
|
|
100
|
+
GIT_SET_URL_ZLIB_ARGS = ("remote", "set-url", "--push", "origin", "https://github.com/madler/zlib"), \
|
|
101
101
|
"/sw/SOURCES/zlib/v1.2.3/8822efa61f", False
|
|
102
102
|
GIT_CHECKOUT_ZLIB_ARGS = ("checkout", "-f", "master"), \
|
|
103
103
|
"/sw/SOURCES/zlib/v1.2.3/8822efa61f", False
|
|
@@ -154,17 +154,20 @@ class ReplacementTestCase(unittest.TestCase):
|
|
|
154
154
|
self.assertNotIn("with-replacement-recipe", systemPkgs)
|
|
155
155
|
self.assertIn("with-replacement-recipe", ownPkgs)
|
|
156
156
|
|
|
157
|
-
@mock.patch("alibuild_helpers.utilities.
|
|
158
|
-
def test_missing_replacement_spec(self,
|
|
159
|
-
"""Check
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
157
|
+
@mock.patch("alibuild_helpers.utilities.warning")
|
|
158
|
+
def test_missing_replacement_spec(self, mock_warning):
|
|
159
|
+
"""Check a warning is displayed when the replacement spec is not found."""
|
|
160
|
+
warning_msg = "falling back to building the package ourselves"
|
|
161
|
+
warning_exists = False
|
|
162
|
+
def side_effect(msg, *args, **kwargs):
|
|
163
|
+
nonlocal warning_exists
|
|
164
|
+
if warning_msg in str(msg):
|
|
165
|
+
warning_exists = True
|
|
166
|
+
mock_warning.side_effect = side_effect
|
|
167
|
+
specs, systemPkgs, ownPkgs, failedReqs, validDefaults = \
|
|
168
|
+
getPackageListWithDefaults(["missing-spec"])
|
|
169
|
+
self.assertTrue(warning_exists)
|
|
170
|
+
|
|
168
171
|
|
|
169
172
|
|
|
170
173
|
@mock.patch("alibuild_helpers.utilities.getRecipeReader", new=MockReader)
|
|
@@ -74,7 +74,7 @@ commands =
|
|
|
74
74
|
|
|
75
75
|
coverage run --source={toxinidir} -a -m unittest discover {toxinidir}/tests
|
|
76
76
|
|
|
77
|
-
git clone -b
|
|
77
|
+
git clone -b alibuild_CI --depth 1 https://github.com/alisw/alidist
|
|
78
78
|
|
|
79
79
|
coverage run --source={toxinidir} -a {toxinidir}/aliBuild -a {env:ARCHITECTURE} -z test-init init zlib
|
|
80
80
|
# This command is expected to fail, but run it for the coverage anyway.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|