alibuild 1.17.29__tar.gz → 1.17.31__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 (93) hide show
  1. {alibuild-1.17.29 → alibuild-1.17.31}/.github/workflows/pr-check.yml +2 -0
  2. {alibuild-1.17.29 → alibuild-1.17.31}/PKG-INFO +1 -1
  3. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild.egg-info/PKG-INFO +1 -1
  4. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/_version.py +3 -3
  5. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/build.py +1 -1
  6. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/init.py +2 -1
  7. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/sl.py +16 -3
  8. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/sync.py +37 -11
  9. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_build.py +41 -30
  10. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_sync.py +3 -3
  11. {alibuild-1.17.29 → alibuild-1.17.31}/tox.ini +3 -2
  12. {alibuild-1.17.29 → alibuild-1.17.31}/.flake8 +0 -0
  13. {alibuild-1.17.29 → alibuild-1.17.31}/.github/workflows/documentation.yml +0 -0
  14. {alibuild-1.17.29 → alibuild-1.17.31}/.github/workflows/release.yml +0 -0
  15. {alibuild-1.17.29 → alibuild-1.17.31}/.gitignore +0 -0
  16. {alibuild-1.17.29 → alibuild-1.17.31}/.pylintrc +0 -0
  17. {alibuild-1.17.29 → alibuild-1.17.31}/ANALYTICS.md +0 -0
  18. {alibuild-1.17.29 → alibuild-1.17.31}/DESIGN.md +0 -0
  19. {alibuild-1.17.29 → alibuild-1.17.31}/LICENSE.md +0 -0
  20. {alibuild-1.17.29 → alibuild-1.17.31}/PACKAGING.md +0 -0
  21. {alibuild-1.17.29 → alibuild-1.17.31}/README.rst +0 -0
  22. {alibuild-1.17.29 → alibuild-1.17.31}/alfaBuild +0 -0
  23. {alibuild-1.17.29 → alibuild-1.17.31}/aliBuild +0 -0
  24. {alibuild-1.17.29 → alibuild-1.17.31}/aliDeps +0 -0
  25. {alibuild-1.17.29 → alibuild-1.17.31}/aliDoctor +0 -0
  26. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild.egg-info/SOURCES.txt +0 -0
  27. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild.egg-info/dependency_links.txt +0 -0
  28. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild.egg-info/requires.txt +0 -0
  29. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild.egg-info/top_level.txt +0 -0
  30. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/__init__.py +0 -0
  31. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/analytics.py +0 -0
  32. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/args.py +0 -0
  33. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/build_template.sh +0 -0
  34. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/clean.py +0 -0
  35. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/cmd.py +0 -0
  36. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/deps.py +0 -0
  37. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/doctor.py +0 -0
  38. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/git.py +0 -0
  39. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/log.py +0 -0
  40. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/scm.py +0 -0
  41. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/templating_plugin.py +0 -0
  42. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/utilities.py +0 -0
  43. {alibuild-1.17.29 → alibuild-1.17.31}/alibuild_helpers/workarea.py +0 -0
  44. {alibuild-1.17.29 → alibuild-1.17.31}/alienv +0 -0
  45. {alibuild-1.17.29 → alibuild-1.17.31}/codecov.yml +0 -0
  46. {alibuild-1.17.29 → alibuild-1.17.31}/debian/changelog +0 -0
  47. {alibuild-1.17.29 → alibuild-1.17.31}/debian/compat +0 -0
  48. {alibuild-1.17.29 → alibuild-1.17.31}/debian/control +0 -0
  49. {alibuild-1.17.29 → alibuild-1.17.31}/debian/copyright +0 -0
  50. {alibuild-1.17.29 → alibuild-1.17.31}/debian/files +0 -0
  51. {alibuild-1.17.29 → alibuild-1.17.31}/debian/rules +0 -0
  52. {alibuild-1.17.29 → alibuild-1.17.31}/docs/README.md +0 -0
  53. {alibuild-1.17.29 → alibuild-1.17.31}/docs/SUPPORT +0 -0
  54. {alibuild-1.17.29 → alibuild-1.17.31}/docs/docs/alice_logo.png +0 -0
  55. {alibuild-1.17.29 → alibuild-1.17.31}/docs/docs/deps.png +0 -0
  56. {alibuild-1.17.29 → alibuild-1.17.31}/docs/docs/index.md +0 -0
  57. {alibuild-1.17.29 → alibuild-1.17.31}/docs/docs/quick.md +0 -0
  58. {alibuild-1.17.29 → alibuild-1.17.31}/docs/docs/reference.md +0 -0
  59. {alibuild-1.17.29 → alibuild-1.17.31}/docs/docs/stylesheets/extra.css +0 -0
  60. {alibuild-1.17.29 → alibuild-1.17.31}/docs/docs/troubleshooting.md +0 -0
  61. {alibuild-1.17.29 → alibuild-1.17.31}/docs/docs/user.md +0 -0
  62. {alibuild-1.17.29 → alibuild-1.17.31}/docs/mkdocs.yml +0 -0
  63. {alibuild-1.17.29 → alibuild-1.17.31}/pb +0 -0
  64. {alibuild-1.17.29 → alibuild-1.17.31}/pyproject.toml +0 -0
  65. {alibuild-1.17.29 → alibuild-1.17.31}/requirements.txt +0 -0
  66. {alibuild-1.17.29 → alibuild-1.17.31}/setup.cfg +0 -0
  67. {alibuild-1.17.29 → alibuild-1.17.31}/setup.py +0 -0
  68. {alibuild-1.17.29 → alibuild-1.17.31}/templates/alibuild_to_please.jnj +0 -0
  69. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_analytics.py +0 -0
  70. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_args.py +0 -0
  71. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_clean.py +0 -0
  72. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_cmd.py +0 -0
  73. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_deps.py +0 -0
  74. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_doctor.py +0 -0
  75. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_git.py +0 -0
  76. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_hashing.py +0 -0
  77. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_init.py +0 -0
  78. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_log.py +0 -0
  79. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_packagelist.py +0 -0
  80. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_parseRecipe.py +0 -0
  81. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_utilities.py +0 -0
  82. {alibuild-1.17.29 → alibuild-1.17.31}/tests/test_workarea.py +0 -0
  83. {alibuild-1.17.29 → alibuild-1.17.31}/tests/testdist/broken1.sh +0 -0
  84. {alibuild-1.17.29 → alibuild-1.17.31}/tests/testdist/broken2.sh +0 -0
  85. {alibuild-1.17.29 → alibuild-1.17.31}/tests/testdist/broken3.sh +0 -0
  86. {alibuild-1.17.29 → alibuild-1.17.31}/tests/testdist/broken4.sh +0 -0
  87. {alibuild-1.17.29 → alibuild-1.17.31}/tests/testdist/broken5.sh +0 -0
  88. {alibuild-1.17.29 → alibuild-1.17.31}/tests/testdist/broken6.sh +0 -0
  89. {alibuild-1.17.29 → alibuild-1.17.31}/tests/testdist/broken7.sh +0 -0
  90. {alibuild-1.17.29 → alibuild-1.17.31}/tests/testdist/clobber-initdotsh.sh +0 -0
  91. {alibuild-1.17.29 → alibuild-1.17.31}/tests/testdist/defaults-o2.sh +0 -0
  92. {alibuild-1.17.29 → alibuild-1.17.31}/tests/testdist/delete-etc.sh +0 -0
  93. {alibuild-1.17.29 → alibuild-1.17.31}/tests/testdist/tracking-env.sh +0 -0
@@ -30,6 +30,7 @@ jobs:
30
30
  - '3.11'
31
31
  - '3.12'
32
32
  - '3.13'
33
+ - '3.14'
33
34
 
34
35
  steps:
35
36
  - uses: actions/checkout@v4
@@ -75,6 +76,7 @@ jobs:
75
76
  - '3.11'
76
77
  - '3.12'
77
78
  - '3.13'
79
+ - '3.14'
78
80
 
79
81
  steps:
80
82
  - uses: actions/checkout@v4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alibuild
3
- Version: 1.17.29
3
+ Version: 1.17.31
4
4
  Summary: ALICE Build Tool
5
5
  Home-page: https://alisw.github.io/alibuild
6
6
  Author: Giulio Eulisse
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alibuild
3
- Version: 1.17.29
3
+ Version: 1.17.31
4
4
  Summary: ALICE Build Tool
5
5
  Home-page: https://alisw.github.io/alibuild
6
6
  Author: Giulio Eulisse
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '1.17.29'
32
- __version_tuple__ = version_tuple = (1, 17, 29)
31
+ __version__ = version = '1.17.31'
32
+ __version_tuple__ = version_tuple = (1, 17, 31)
33
33
 
34
- __commit_id__ = commit_id = 'g0c5711562'
34
+ __commit_id__ = commit_id = 'ga48e22c31'
@@ -58,7 +58,7 @@ def update_git_repos(args, specs, buildOrder):
58
58
  specs[package]["scm"] = Git()
59
59
  if specs[package]["is_devel_pkg"]:
60
60
  specs[package]["source"] = os.path.join(os.getcwd(), specs[package]["package"])
61
- if exists(os.path.join(specs[package]["source"], ".sl")):
61
+ if exists(os.path.join(specs[package]["source"], ".sl")) or exists(os.path.join(specs[package]["source"], ".git/sl")):
62
62
  specs[package]["scm"] = Sapling()
63
63
  updateReferenceRepoSpec(args.referenceSources, package, specs[package],
64
64
  fetch=args.fetchRepos, allowGitPrompt=git_prompt)
@@ -3,6 +3,7 @@ from alibuild_helpers.utilities import getPackageList, parseDefaults, readDefaul
3
3
  from alibuild_helpers.log import debug, error, warning, banner, info
4
4
  from alibuild_helpers.log import dieOnError
5
5
  from alibuild_helpers.workarea import updateReferenceRepoSpec
6
+ from alibuild_helpers.cmd import getstatusoutput
6
7
 
7
8
  from os.path import join
8
9
  import os.path as path
@@ -54,7 +55,7 @@ def doInit(args):
54
55
  architecture="",
55
56
  disable=[],
56
57
  defaults=args.defaults,
57
- performPreferCheck=lambda *x, **y: (1, ""),
58
+ performPreferCheck=lambda pkg, cmd: getstatusoutput(["bash", "-c", cmd]),
58
59
  performRequirementCheck=lambda *x, **y: (0, ""),
59
60
  performValidateDefaults=lambda spec : validateDefaults(spec, args.defaults),
60
61
  overrides=overrides,
@@ -20,9 +20,22 @@ class Sapling(SCM):
20
20
  return sapling(("whereami", ), directory)
21
21
 
22
22
  def branchOrRef(self, directory):
23
- # Format is <hash>[+] <branch>
24
- identity = sapling(("identify", ), directory)
25
- return identity.split(" ")[-1]
23
+ # Format is * branch ref or nothing
24
+ err, output = getstatusoutput("""\
25
+ set -e +x
26
+ sl -R {directory} bookmark -r . 2>/dev/null | grep -- "*"
27
+ """.format(
28
+ directory=quote(directory),
29
+ ), timeout=SL_COMMAND_TIMEOUT_SEC)
30
+ if err > 1:
31
+ raise SCMError("Error {} from sl bookmark -r . : {}".format(err, output))
32
+ # We use "none" to indicate there are no bookmarks. This means
33
+ # that a devel package will act as a single branch, regardless of where we are.
34
+ if not output.strip():
35
+ return "none"
36
+ # If a bookmark is there, we use it to determine that we should rebuild
37
+ # when we move to it
38
+ return output.split(" ")[2]
26
39
 
27
40
  def exec(self, *args, **kwargs):
28
41
  return sapling(*args, **kwargs)
@@ -7,6 +7,7 @@ import re
7
7
  import sys
8
8
  import time
9
9
  import requests
10
+ from concurrent.futures import ThreadPoolExecutor, as_completed
10
11
  from requests.exceptions import RequestException
11
12
  from urllib.parse import quote
12
13
 
@@ -682,19 +683,44 @@ class Boto3RemoteSync:
682
683
  # Second, upload dist symlinks. These should be in place before the main
683
684
  # tarball, to avoid races in the publisher.
684
685
  start_time = time.time()
685
- for link_dir, symlinks in dist_symlinks.items():
686
- for link_key, hash_path in symlinks:
687
- self.s3.put_object(Bucket=self.writeStore,
688
- Key=link_key,
689
- Body=os.fsencode(hash_path),
690
- ACL="public-read",
691
- WebsiteRedirectLocation=hash_path)
692
- debug("Uploaded %d dist symlinks to S3 from %s",
693
- len(symlinks), link_dir)
686
+ total_symlinks = 0
687
+
688
+ # Limit concurrency to avoid overwhelming S3 with too many simultaneous requests
689
+ max_workers = min(32, (len(dist_symlinks) * 10) or 1)
690
+
691
+ def _upload_single_symlink(link_key, hash_path):
692
+ self.s3.put_object(Bucket=self.writeStore,
693
+ Key=link_key,
694
+ Body=os.fsencode(hash_path),
695
+ ACL="public-read",
696
+ WebsiteRedirectLocation=hash_path)
697
+ return link_key
698
+
699
+ with ThreadPoolExecutor(max_workers=max_workers) as executor:
700
+ future_to_info = {}
701
+ for link_dir, symlinks in dist_symlinks.items():
702
+ for link_key, hash_path in symlinks:
703
+ future = executor.submit(_upload_single_symlink, link_key, hash_path)
704
+ future_to_info[future] = (link_dir, link_key)
705
+ total_symlinks += 1
706
+
707
+ dir_counts = {link_dir: 0 for link_dir in dist_symlinks.keys()}
708
+ for future in as_completed(future_to_info):
709
+ link_dir, link_key = future_to_info[future]
710
+ try:
711
+ future.result()
712
+ dir_counts[link_dir] += 1
713
+ except Exception as e:
714
+ error("Failed to upload symlink %s: %s", link_key, e)
715
+ raise
716
+
717
+ for link_dir, count in dir_counts.items():
718
+ if count > 0:
719
+ debug("Uploaded %d dist symlinks to S3 from %s", count, link_dir)
720
+
694
721
  end_time = time.time()
695
722
  debug("Uploaded %d dist symlinks in %.2f seconds",
696
- sum(len(symlinks) for _, symlinks in dist_symlinks.items()),
697
- end_time - start_time)
723
+ total_symlinks, end_time - start_time)
698
724
 
699
725
  self.s3.upload_file(Bucket=self.writeStore, Key=tar_path,
700
726
  Filename=os.path.join(self.workdir, tar_path))
@@ -1,6 +1,7 @@
1
1
  from argparse import Namespace
2
2
  import os
3
3
  import os.path
4
+ import platform
4
5
  import re
5
6
  import sys
6
7
  import unittest
@@ -12,6 +13,19 @@ from collections import OrderedDict
12
13
  from alibuild_helpers.utilities import parseRecipe, resolve_tag
13
14
  from alibuild_helpers.build import doBuild, storeHashes, generate_initdotsh
14
15
 
16
+ # Determine architecture based on platform
17
+ def get_test_architecture():
18
+ if sys.platform == 'darwin':
19
+ machine = platform.machine()
20
+ if machine == 'arm64':
21
+ return 'osx_arm64'
22
+ else:
23
+ return 'osx_x86-64'
24
+ else:
25
+ return 'slc7_x86-64'
26
+
27
+ TEST_ARCHITECTURE = os.environ.get('ARCHITECTURE', get_test_architecture())
28
+
15
29
 
16
30
  TEST_DEFAULT_RELEASE = """\
17
31
  package: defaults-release
@@ -23,7 +37,7 @@ TEST_DEFAULT_RELEASE_BUILD_HASH = "27ce49698e818e8efb56b6eff6dd785e503df341"
23
37
 
24
38
  TEST_ZLIB_RECIPE = """\
25
39
  package: zlib
26
- version: v1.2.3
40
+ version: v1.3.1
27
41
  source: https://github.com/madler/zlib
28
42
  tag: master
29
43
  ---
@@ -32,7 +46,7 @@ make
32
46
  make install
33
47
  """
34
48
  TEST_ZLIB_GIT_REFS = "8822efa61f2a385e0bc83ca5819d608111b2168a\trefs/heads/master"
35
- TEST_ZLIB_BUILD_HASH = "8cd1f56c450f05ffbba3276bad08eae30f814999"
49
+ TEST_ZLIB_BUILD_HASH = "4d6a75f214dc7931a2a7d5ba82ea0568e652cd84"
36
50
 
37
51
  TEST_ROOT_RECIPE = """\
38
52
  package: ROOT
@@ -71,7 +85,7 @@ TEST_ROOT_GIT_REFS = """\
71
85
  87b87c4322d2a3fad315c919cb2e2dd73f2154dc\trefs/heads/master
72
86
  f7b336611753f1f4aaa94222b0d620748ae230c0\trefs/heads/v6-08-00-patches
73
87
  f7b336611753f1f4aaa94222b0d620748ae230c0\trefs/tags/test-tag"""
74
- TEST_ROOT_BUILD_HASH = ("8ec3f41b6b585ef86a02e9c595eed67f34d63f08")
88
+ TEST_ROOT_BUILD_HASH = ("1f3c771080f71b6c0d2e3d7a285698a20035da12")
75
89
 
76
90
 
77
91
  TEST_EXTRA_RECIPE = """\
@@ -88,18 +102,18 @@ f000\trefs/heads/master
88
102
  ba22\trefs/tags/v1
89
103
  ba22\trefs/tags/v2
90
104
  baad\trefs/tags/v3"""
91
- TEST_EXTRA_BUILD_HASH = ("5afae57bfc6a374e74c1c4427698ab5edebce0bc")
105
+ TEST_EXTRA_BUILD_HASH = ("6e7bc4976abf77b558cf7faf575ec51670f8d0e5")
92
106
 
93
107
 
94
108
  GIT_CLONE_REF_ZLIB_ARGS = ("clone", "--bare", "https://github.com/madler/zlib",
95
109
  "/sw/MIRROR/zlib", "--filter=blob:none"), ".", False
96
110
  GIT_CLONE_SRC_ZLIB_ARGS = ("clone", "-n", "https://github.com/madler/zlib",
97
- "/sw/SOURCES/zlib/v1.2.3/8822efa61f",
111
+ "/sw/SOURCES/zlib/v1.3.1/8822efa61f",
98
112
  "--dissociate", "--reference", "/sw/MIRROR/zlib", "--filter=blob:none"), ".", False
99
113
  GIT_SET_URL_ZLIB_ARGS = ("remote", "set-url", "--push", "origin", "https://github.com/madler/zlib"), \
100
- "/sw/SOURCES/zlib/v1.2.3/8822efa61f", False
114
+ "/sw/SOURCES/zlib/v1.3.1/8822efa61f", False
101
115
  GIT_CHECKOUT_ZLIB_ARGS = ("checkout", "-f", "master"), \
102
- "/sw/SOURCES/zlib/v1.2.3/8822efa61f", False
116
+ "/sw/SOURCES/zlib/v1.3.1/8822efa61f", False
103
117
 
104
118
  GIT_FETCH_REF_ROOT_ARGS = ("fetch", "-f", "--prune", "--filter=blob:none", "https://github.com/root-mirror/root", "+refs/tags/*:refs/tags/*",
105
119
  "+refs/heads/*:refs/heads/*"), "/sw/MIRROR/root", False
@@ -143,9 +157,9 @@ def dummy_open(x, mode="r", encoding=None, errors=None):
143
157
  "/sw/BUILD/%s/defaults-release/.build_succeeded" % TEST_DEFAULT_RELEASE_BUILD_HASH: (0, StringIO("0")),
144
158
  "/sw/BUILD/%s/zlib/.build_succeeded" % TEST_ZLIB_BUILD_HASH: (0, StringIO("0")),
145
159
  "/sw/BUILD/%s/ROOT/.build_succeeded" % TEST_ROOT_BUILD_HASH: (0, StringIO("0")),
146
- "/sw/osx_x86-64/defaults-release/v1-1/.build-hash": (1, StringIO(TEST_DEFAULT_RELEASE_BUILD_HASH)),
147
- "/sw/osx_x86-64/zlib/v1.2.3-local1/.build-hash": (1, StringIO(TEST_ZLIB_BUILD_HASH)),
148
- "/sw/osx_x86-64/ROOT/v6-08-30-local1/.build-hash": (1, StringIO(TEST_ROOT_BUILD_HASH))
160
+ f"/sw/{TEST_ARCHITECTURE}/defaults-release/v1-1/.build-hash": (1, StringIO(TEST_DEFAULT_RELEASE_BUILD_HASH)),
161
+ f"/sw/{TEST_ARCHITECTURE}/zlib/v1.3.1-local1/.build-hash": (1, StringIO(TEST_ZLIB_BUILD_HASH)),
162
+ f"/sw/{TEST_ARCHITECTURE}/ROOT/v6-08-30-local1/.build-hash": (1, StringIO(TEST_ROOT_BUILD_HASH))
149
163
  }[x]
150
164
  except KeyError:
151
165
  return DEFAULT
@@ -163,17 +177,16 @@ def dummy_execute(x, **kwds):
163
177
  if re.match(".*ln -sfn.*TARS", s):
164
178
  return 0
165
179
  return {
166
- "/bin/bash -e -x /sw/SPECS/osx_x86-64/defaults-release/v1-1/build.sh 2>&1": 0,
167
- '/bin/bash -e -x /sw/SPECS/osx_x86-64/zlib/v1.2.3-local1/build.sh 2>&1': 0,
168
- '/bin/bash -e -x /sw/SPECS/osx_x86-64/ROOT/v6-08-30-local1/build.sh 2>&1': 0,
180
+ f"/bin/bash -e -x /sw/SPECS/{TEST_ARCHITECTURE}/defaults-release/v1-1/build.sh 2>&1": 0,
181
+ f'/bin/bash -e -x /sw/SPECS/{TEST_ARCHITECTURE}/zlib/v1.3.1-local1/build.sh 2>&1': 0,
182
+ f'/bin/bash -e -x /sw/SPECS/{TEST_ARCHITECTURE}/ROOT/v6-08-30-local1/build.sh 2>&1': 0,
169
183
  }[s]
170
184
 
171
185
 
172
186
  def dummy_readlink(x):
173
187
  return {
174
- "/sw/TARS/osx_x86-64/defaults-release/defaults-release-v1-1.osx_x86-64.tar.gz":
175
- "../../osx_x86-64/store/%s/%s/defaults-release-v1-1.osx_x86-64.tar.gz" %
176
- (TEST_DEFAULT_RELEASE_BUILD_HASH[:2], TEST_DEFAULT_RELEASE_BUILD_HASH)
188
+ f"/sw/TARS/{TEST_ARCHITECTURE}/defaults-release/defaults-release-v1-1.{TEST_ARCHITECTURE}.tar.gz":
189
+ f"../../{TEST_ARCHITECTURE}/store/{TEST_DEFAULT_RELEASE_BUILD_HASH[:2]}/{TEST_DEFAULT_RELEASE_BUILD_HASH}/defaults-release-v1-1.{TEST_ARCHITECTURE}.tar.gz"
177
190
  }[x]
178
191
 
179
192
 
@@ -224,13 +237,11 @@ class BuildTestCase(unittest.TestCase):
224
237
  @patch("os.listdir")
225
238
  @patch("alibuild_helpers.build.glob", new=lambda pattern: {
226
239
  "*": ["zlib"],
227
- "/sw/TARS/osx_x86-64/store/%s/%s/*gz" % (TEST_DEFAULT_RELEASE_BUILD_HASH[:2],
228
- TEST_DEFAULT_RELEASE_BUILD_HASH): [],
229
- "/sw/TARS/osx_x86-64/store/%s/%s/*gz" % (TEST_ZLIB_BUILD_HASH[:2], TEST_ZLIB_BUILD_HASH): [],
230
- "/sw/TARS/osx_x86-64/store/%s/%s/*gz" % (TEST_ROOT_BUILD_HASH[:2], TEST_ROOT_BUILD_HASH): [],
231
- "/sw/TARS/osx_x86-64/defaults-release/defaults-release-v1-1.osx_x86-64.tar.gz":
232
- ["../../osx_x86-64/store/%s/%s/defaults-release-v1-1.osx_x86-64.tar.gz" %
233
- (TEST_DEFAULT_RELEASE_BUILD_HASH[:2], TEST_DEFAULT_RELEASE_BUILD_HASH)],
240
+ f"/sw/TARS/{TEST_ARCHITECTURE}/store/{TEST_DEFAULT_RELEASE_BUILD_HASH[:2]}/{TEST_DEFAULT_RELEASE_BUILD_HASH}/*gz": [],
241
+ f"/sw/TARS/{TEST_ARCHITECTURE}/store/{TEST_ZLIB_BUILD_HASH[:2]}/{TEST_ZLIB_BUILD_HASH}/*gz": [],
242
+ f"/sw/TARS/{TEST_ARCHITECTURE}/store/{TEST_ROOT_BUILD_HASH[:2]}/{TEST_ROOT_BUILD_HASH}/*gz": [],
243
+ f"/sw/TARS/{TEST_ARCHITECTURE}/defaults-release/defaults-release-v1-1.{TEST_ARCHITECTURE}.tar.gz":
244
+ [f"../../{TEST_ARCHITECTURE}/store/{TEST_DEFAULT_RELEASE_BUILD_HASH[:2]}/{TEST_DEFAULT_RELEASE_BUILD_HASH}/defaults-release-v1-1.{TEST_ARCHITECTURE}.tar.gz"],
234
245
  }[pattern])
235
246
  @patch("alibuild_helpers.build.readlink", new=dummy_readlink)
236
247
  @patch("alibuild_helpers.build.banner", new=MagicMock(return_value=None))
@@ -243,9 +254,9 @@ class BuildTestCase(unittest.TestCase):
243
254
  mock_debug.side_effect = lambda *args: None
244
255
  mock_warning.side_effect = lambda *args: None
245
256
  mock_listdir.side_effect = lambda directory: {
246
- "/sw/TARS/osx_x86-64/defaults-release": ["defaults-release-v1-1.osx_x86-64.tar.gz"],
247
- "/sw/TARS/osx_x86-64/zlib": [],
248
- "/sw/TARS/osx_x86-64/ROOT": [],
257
+ f"/sw/TARS/{TEST_ARCHITECTURE}/defaults-release": [f"defaults-release-v1-1.{TEST_ARCHITECTURE}.tar.gz"],
258
+ f"/sw/TARS/{TEST_ARCHITECTURE}/zlib": [],
259
+ f"/sw/TARS/{TEST_ARCHITECTURE}/ROOT": [],
249
260
  }.get(directory, DEFAULT)
250
261
  os.environ["ALIBUILD_NO_ANALYTICS"] = "1"
251
262
 
@@ -257,7 +268,7 @@ class BuildTestCase(unittest.TestCase):
257
268
  docker=False,
258
269
  dockerImage=None,
259
270
  docker_extra_args=["--network=host"],
260
- architecture="osx_x86-64",
271
+ architecture=TEST_ARCHITECTURE,
261
272
  workDir="/sw",
262
273
  pkgname=["root"],
263
274
  configDir="/alidist",
@@ -319,7 +330,7 @@ class BuildTestCase(unittest.TestCase):
319
330
  doBuild(args, mock_parser)
320
331
  mock_warning.assert_called_with("%s.sh contains a recipe, which will be ignored", "defaults-release")
321
332
  mock_debug.assert_called_with("Everything done")
322
- mock_listdir.assert_called_with("/sw/TARS/osx_x86-64/ROOT")
333
+ mock_listdir.assert_called_with(f"/sw/TARS/{TEST_ARCHITECTURE}/ROOT")
323
334
  # We can't compare directly against the list of calls here as they
324
335
  # might happen in any order.
325
336
  mock_git_git.assert_has_calls(common_calls + [
@@ -406,8 +417,8 @@ class BuildTestCase(unittest.TestCase):
406
417
  self.assertNotIn("Extra", complete_initdotsh)
407
418
 
408
419
  # Dependencies must be loaded both for this build and for subsequent ones.
409
- self.assertIn('. "$WORK_DIR/$ALIBUILD_ARCH_PREFIX"/zlib/v1.2.3-1/etc/profile.d/init.sh', setup_initdotsh)
410
- self.assertIn('. "$WORK_DIR/$ALIBUILD_ARCH_PREFIX"/zlib/v1.2.3-1/etc/profile.d/init.sh', complete_initdotsh)
420
+ self.assertIn('. "$WORK_DIR/$ALIBUILD_ARCH_PREFIX"/zlib/v1.3.1-1/etc/profile.d/init.sh', setup_initdotsh)
421
+ self.assertIn('. "$WORK_DIR/$ALIBUILD_ARCH_PREFIX"/zlib/v1.3.1-1/etc/profile.d/init.sh', complete_initdotsh)
411
422
 
412
423
  # ROOT-specific variables must not be set during ROOT's build yet...
413
424
  self.assertNotIn("export ROOT_VERSION=", setup_initdotsh)
@@ -16,19 +16,19 @@ GOOD_HASH = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef"
16
16
  BAD_HASH = "baadf00dbaadf00dbaadf00dbaadf00dbaadf00d"
17
17
  NONEXISTENT_HASH = "TRIGGERS_A_404"
18
18
  GOOD_SPEC = { # fully present on the remote store
19
- "package": PACKAGE, "version": "v1.2.3", "revision": "1",
19
+ "package": PACKAGE, "version": "v1.3.1", "revision": "1",
20
20
  "hash": GOOD_HASH,
21
21
  "remote_revision_hash": GOOD_HASH,
22
22
  "remote_hashes": [GOOD_HASH],
23
23
  }
24
24
  BAD_SPEC = { # partially present on the remote store
25
- "package": PACKAGE, "version": "v1.2.3", "revision": "2",
25
+ "package": PACKAGE, "version": "v1.3.1", "revision": "2",
26
26
  "hash": BAD_HASH,
27
27
  "remote_revision_hash": BAD_HASH,
28
28
  "remote_hashes": [BAD_HASH],
29
29
  }
30
30
  MISSING_SPEC = { # completely absent from the remote store
31
- "package": PACKAGE, "version": "v1.2.3", "revision": "3",
31
+ "package": PACKAGE, "version": "v1.3.1", "revision": "3",
32
32
  "hash": NONEXISTENT_HASH,
33
33
  "remote_revision_hash": NONEXISTENT_HASH,
34
34
  "remote_hashes": [NONEXISTENT_HASH],
@@ -1,6 +1,6 @@
1
1
  [tox]
2
2
  minversion = 3.20
3
- envlist = lint, py{37, 38, 39, 310, 311, 312, 313}, darwin
3
+ envlist = lint, py{37, 38, 39, 310, 311, 312, 313, 314}, darwin
4
4
 
5
5
  [gh-actions]
6
6
  # The "lint" job is run separately.
@@ -12,6 +12,7 @@ python =
12
12
  3.11: py311
13
13
  3.12: py312
14
14
  3.13: py313
15
+ 3.14: py314
15
16
 
16
17
  ; [testenv:lint]
17
18
  ; # Warning: This environment inherits settings from the main [testenv] section.
@@ -121,7 +122,7 @@ commands =
121
122
  darwin: sl clone https://github.com/alisw/alidist alidist-sapling
122
123
  darwin: coverage run --source={toxinidir} -a {toxinidir}/aliBuild -a {env:ARCHITECTURE} -c alidist-sapling --no-system --disable GCC-Toolchain build zlib
123
124
  darwin: rm -fr zlib
124
- darwin: sl clone https://github.com/alisw/zlib
125
+ darwin: sl clone https://github.com/madler/zlib
125
126
  darwin: coverage run --source={toxinidir} -a {toxinidir}/aliBuild -a {env:ARCHITECTURE} --no-system --disable GCC-Toolchain build zlib
126
127
  touch zlib/foo
127
128
  darwin: coverage run --source={toxinidir} -a {toxinidir}/aliBuild -a {env:ARCHITECTURE} --no-system --disable GCC-Toolchain build zlib
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