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.
Files changed (94) hide show
  1. {alibuild-1.17.12 → alibuild-1.17.14}/.github/workflows/pr-check.yml +11 -7
  2. {alibuild-1.17.12 → alibuild-1.17.14}/PKG-INFO +8 -3
  3. {alibuild-1.17.12 → alibuild-1.17.14}/alfaBuild +1 -1
  4. {alibuild-1.17.12 → alibuild-1.17.14}/aliBuild +1 -1
  5. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild.egg-info/PKG-INFO +8 -3
  6. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild.egg-info/requires.txt +1 -1
  7. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/_version.py +2 -2
  8. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/build.py +25 -2
  9. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/utilities.py +21 -20
  10. {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/reference.md +1 -1
  11. {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/troubleshooting.md +1 -1
  12. {alibuild-1.17.12 → alibuild-1.17.14}/pyproject.toml +2 -1
  13. alibuild-1.17.14/requirements.txt +7 -0
  14. {alibuild-1.17.12 → alibuild-1.17.14}/setup.py +1 -1
  15. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_args.py +19 -12
  16. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_build.py +4 -4
  17. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_packagelist.py +14 -11
  18. {alibuild-1.17.12 → alibuild-1.17.14}/tox.ini +1 -1
  19. alibuild-1.17.12/requirements.txt +0 -9
  20. {alibuild-1.17.12 → alibuild-1.17.14}/.flake8 +0 -0
  21. {alibuild-1.17.12 → alibuild-1.17.14}/.github/workflows/documentation.yml +0 -0
  22. {alibuild-1.17.12 → alibuild-1.17.14}/.github/workflows/release.yml +0 -0
  23. {alibuild-1.17.12 → alibuild-1.17.14}/.gitignore +0 -0
  24. {alibuild-1.17.12 → alibuild-1.17.14}/.pylintrc +0 -0
  25. {alibuild-1.17.12 → alibuild-1.17.14}/ANALYTICS.md +0 -0
  26. {alibuild-1.17.12 → alibuild-1.17.14}/DESIGN.md +0 -0
  27. {alibuild-1.17.12 → alibuild-1.17.14}/LICENSE.md +0 -0
  28. {alibuild-1.17.12 → alibuild-1.17.14}/MANIFEST.in +0 -0
  29. {alibuild-1.17.12 → alibuild-1.17.14}/PACKAGING.md +0 -0
  30. {alibuild-1.17.12 → alibuild-1.17.14}/README.rst +0 -0
  31. {alibuild-1.17.12 → alibuild-1.17.14}/aliDeps +0 -0
  32. {alibuild-1.17.12 → alibuild-1.17.14}/aliDoctor +0 -0
  33. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild.egg-info/SOURCES.txt +0 -0
  34. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild.egg-info/dependency_links.txt +0 -0
  35. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild.egg-info/top_level.txt +0 -0
  36. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/__init__.py +0 -0
  37. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/analytics.py +0 -0
  38. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/args.py +0 -0
  39. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/build_template.sh +0 -0
  40. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/clean.py +0 -0
  41. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/cmd.py +0 -0
  42. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/deps.py +0 -0
  43. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/doctor.py +0 -0
  44. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/git.py +0 -0
  45. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/init.py +0 -0
  46. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/log.py +0 -0
  47. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/scm.py +0 -0
  48. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/sl.py +0 -0
  49. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/sync.py +0 -0
  50. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/templating_plugin.py +0 -0
  51. {alibuild-1.17.12 → alibuild-1.17.14}/alibuild_helpers/workarea.py +0 -0
  52. {alibuild-1.17.12 → alibuild-1.17.14}/alienv +0 -0
  53. {alibuild-1.17.12 → alibuild-1.17.14}/codecov.yml +0 -0
  54. {alibuild-1.17.12 → alibuild-1.17.14}/debian/changelog +0 -0
  55. {alibuild-1.17.12 → alibuild-1.17.14}/debian/compat +0 -0
  56. {alibuild-1.17.12 → alibuild-1.17.14}/debian/control +0 -0
  57. {alibuild-1.17.12 → alibuild-1.17.14}/debian/copyright +0 -0
  58. {alibuild-1.17.12 → alibuild-1.17.14}/debian/files +0 -0
  59. {alibuild-1.17.12 → alibuild-1.17.14}/debian/rules +0 -0
  60. {alibuild-1.17.12 → alibuild-1.17.14}/docs/README.md +0 -0
  61. {alibuild-1.17.12 → alibuild-1.17.14}/docs/SUPPORT +0 -0
  62. {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/alice_logo.png +0 -0
  63. {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/deps.png +0 -0
  64. {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/index.md +0 -0
  65. {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/quick.md +0 -0
  66. {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/stylesheets/extra.css +0 -0
  67. {alibuild-1.17.12 → alibuild-1.17.14}/docs/docs/user.md +0 -0
  68. {alibuild-1.17.12 → alibuild-1.17.14}/docs/mkdocs.yml +0 -0
  69. {alibuild-1.17.12 → alibuild-1.17.14}/pb +0 -0
  70. {alibuild-1.17.12 → alibuild-1.17.14}/setup.cfg +0 -0
  71. {alibuild-1.17.12 → alibuild-1.17.14}/templates/alibuild_to_please.jnj +0 -0
  72. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_analytics.py +0 -0
  73. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_clean.py +0 -0
  74. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_cmd.py +0 -0
  75. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_deps.py +0 -0
  76. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_doctor.py +0 -0
  77. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_git.py +0 -0
  78. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_hashing.py +0 -0
  79. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_init.py +0 -0
  80. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_log.py +0 -0
  81. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_parseRecipe.py +0 -0
  82. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_sync.py +0 -0
  83. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_utilities.py +0 -0
  84. {alibuild-1.17.12 → alibuild-1.17.14}/tests/test_workarea.py +0 -0
  85. {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken1.sh +0 -0
  86. {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken2.sh +0 -0
  87. {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken3.sh +0 -0
  88. {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken4.sh +0 -0
  89. {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken5.sh +0 -0
  90. {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken6.sh +0 -0
  91. {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/broken7.sh +0 -0
  92. {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/clobber-initdotsh.sh +0 -0
  93. {alibuild-1.17.12 → alibuild-1.17.14}/tests/testdist/defaults-o2.sh +0 -0
  94. {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@v3
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-latest
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@v3
79
+ - uses: actions/checkout@v4
79
80
 
80
81
  - name: Set up Python ${{ matrix.python-version }}
81
- uses: actions/setup-python@v4
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@v3
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@v3
118
+ - uses: actions/checkout@v4
115
119
 
116
120
  - name: Set up Python
117
- uses: actions/setup-python@v4
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
1
+ Metadata-Version: 2.2
2
2
  Name: alibuild
3
- Version: 1.17.12
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
1
+ Metadata-Version: 2.2
2
2
  Name: alibuild
3
- Version: 1.17.12
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
@@ -2,4 +2,4 @@ pyyaml
2
2
  requests
3
3
  distro
4
4
  jinja2
5
- boto3
5
+ boto3==1.23.10
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.17.12'
16
- __version_tuple__ = version_tuple = (1, 17, 12)
15
+ __version__ = version = '1.17.14'
16
+ __version_tuple__ = version_tuple = (1, 17, 14)
@@ -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
- dieOnError(replacement is None, "Could not find named replacement spec for "
497
- "%s: %s" % (spec["package"], key))
498
- assert(replacement)
499
- # We must keep the package name the same, since it is used to
500
- # specify dependencies.
501
- replacement["package"] = spec["package"]
502
- # The version is required for all specs. What we put there will
503
- # influence the package's hash, so allow the user to override it.
504
- replacement.setdefault("version", requested_version)
505
- spec = replacement
506
- # Allows generalising the version based on the actual key provided
507
- spec["version"] = spec["version"].replace("%(key)s", key)
508
- recipe = replacement.get("recipe", "")
509
- # If there's an explicitly-specified recipe, we're still building
510
- # the package. If not, aliBuild will still "build" it, but it's
511
- # basically instantaneous, so report to the user that we're taking
512
- # it from the system.
513
- if recipe:
514
- ownPackages.add(spec["package"])
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
- systemPackages.add(spec["package"])
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"])
@@ -33,7 +33,7 @@ An example recipe for `zlib` is the following:
33
33
  ```yaml
34
34
  package: zlib
35
35
  version: v1.2.8
36
- source: https://github.com/star-externals/zlib
36
+ source: https://github.com/madler/zlib
37
37
  tag: v1.2.8
38
38
  ---
39
39
  #!/bin/bash -ex
@@ -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/-/profile/keys
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]
@@ -0,0 +1,7 @@
1
+ requests
2
+ pyyaml
3
+ distro
4
+ jinja2
5
+ # https://github.com/boto/boto3/issues/4398
6
+ # This version is the last compatible with python 3.6.8
7
+ boto3==1.23.10; python_version >= '3.6'
@@ -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 = [call(u"Unknown / unsupported architecture: foo.\n\n{table}Alternatively, you can use the `--force-unknown-architecture' option.".format(table=ARCHITECTURE_TABLE))]
20
+ ARCHITECTURE_ERROR = u"Unknown / unsupported architecture: foo.\n\n.*"
20
21
  PARSER_ERRORS = {
21
- "build --force-unknown-architecture": [call(BUILD_MISSING_PKG_ERROR)],
22
- "build --force-unknown-architecture zlib --foo": [call('unrecognized arguments: --foo')],
23
- "init --docker-image": [call('unrecognized arguments: --docker-image')],
24
- "builda --force-unknown-architecture zlib" : [call("argument action: invalid choice: 'builda' (choose from 'analytics', 'architecture', 'build', 'clean', 'deps', 'doctor', 'init', 'version')")],
25
- "build --force-unknown-architecture zlib --no-system --always-prefer-system" : [call('argument --always-prefer-system: not allowed with argument --no-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 ": [call('cannot specify ::rw and --write-store at the same time')],
28
- "build zlib -a osx_x86-64 --docker-image foo": [call('cannot use `-a osx_x86-64` and --docker')],
29
- "build zlib -a slc7_x86-64 --annotate foobar": [call("--annotate takes arguments of the form PACKAGE=COMMENT")],
30
- "analytics": [call(ANALYTICS_MISSING_STATE_ERROR)]
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, calls) in PARSER_ERRORS.items():
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
- self.assertEqual(mock_print.mock_calls, calls)
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/star-externals/zlib
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/star-externals/zlib",
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/star-externals/zlib",
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/star-externals/zlib"), \
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.dieOnError")
158
- def test_missing_replacement_spec(self, mock_dieOnError):
159
- """Check an error is thrown when the replacement spec is not found."""
160
- assert_msg = "Could not find named replacement spec for missing-spec: missing_tag"
161
- # Change the behaviour from sys.exit to a regular exception. Without it
162
- # we don't stop execution properly and other asserts might trigger
163
- mock_dieOnError.side_effect = lambda cond, _: (_ for _ in ()).throw(Exception("dieOnError called")) if cond else None
164
- with self.assertRaises(Exception, msg=assert_msg) as context:
165
- specs, systemPkgs, ownPkgs, failedReqs, validDefaults = \
166
- getPackageListWithDefaults(["missing-spec"])
167
- self.assertEqual(str(context.exception), "dieOnError called", msg=assert_msg)
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 O2-v1.3.0 --depth 1 https://github.com/alisw/alidist
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.
@@ -1,9 +0,0 @@
1
- requests
2
- pyyaml
3
- distro
4
- jinja2
5
- boto3; python_version >= '3.6'
6
- futures; python_version == '2.7'
7
- futures; python_version == '2.6'
8
- argparse; python_version == '2.6'
9
- ordereddict; python_version == '2.6'
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