alibuild 1.17.29__py3-none-any.whl → 1.17.31__py3-none-any.whl
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.29.dist-info → alibuild-1.17.31.dist-info}/METADATA +1 -1
- {alibuild-1.17.29.dist-info → alibuild-1.17.31.dist-info}/RECORD +17 -17
- alibuild_helpers/_version.py +2 -2
- alibuild_helpers/build.py +1 -1
- alibuild_helpers/init.py +2 -1
- alibuild_helpers/sl.py +16 -3
- alibuild_helpers/sync.py +37 -11
- tests/test_build.py +41 -30
- tests/test_sync.py +3 -3
- {alibuild-1.17.29.data → alibuild-1.17.31.data}/scripts/aliBuild +0 -0
- {alibuild-1.17.29.data → alibuild-1.17.31.data}/scripts/aliDeps +0 -0
- {alibuild-1.17.29.data → alibuild-1.17.31.data}/scripts/aliDoctor +0 -0
- {alibuild-1.17.29.data → alibuild-1.17.31.data}/scripts/alienv +0 -0
- {alibuild-1.17.29.data → alibuild-1.17.31.data}/scripts/pb +0 -0
- {alibuild-1.17.29.dist-info → alibuild-1.17.31.dist-info}/WHEEL +0 -0
- {alibuild-1.17.29.dist-info → alibuild-1.17.31.dist-info}/licenses/LICENSE.md +0 -0
- {alibuild-1.17.29.dist-info → alibuild-1.17.31.dist-info}/top_level.txt +0 -0
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
alibuild-1.17.
|
|
2
|
-
alibuild-1.17.
|
|
3
|
-
alibuild-1.17.
|
|
4
|
-
alibuild-1.17.
|
|
5
|
-
alibuild-1.17.
|
|
6
|
-
alibuild-1.17.
|
|
1
|
+
alibuild-1.17.31.data/scripts/aliBuild,sha256=5g-apCjhc9cvtFvKSP0yr6IJtChNvtTAP-BtPL-91M8,4307
|
|
2
|
+
alibuild-1.17.31.data/scripts/aliDeps,sha256=fhfPB2NpuLj8bZZPUjJW2e4VxA8ZkHlp5q76xAOzufI,219
|
|
3
|
+
alibuild-1.17.31.data/scripts/aliDoctor,sha256=gQwLcNGAm7_QF7FFCtmtFXEoroKsRonNMA7UP4DS1y4,221
|
|
4
|
+
alibuild-1.17.31.data/scripts/alienv,sha256=8QihJOzKue4oeuIM31MsoX8Fw7FNZ4zY7wyK6UYtgTE,12568
|
|
5
|
+
alibuild-1.17.31.data/scripts/pb,sha256=LfkIUyX3xXxmaGSdtAbA-dS1Y1eEShEHpmto1tIEga0,211
|
|
6
|
+
alibuild-1.17.31.dist-info/licenses/LICENSE.md,sha256=WJ7YI-moTFb-uVrFjnzzhGJrnL9P2iqQe8NuED3hutI,35141
|
|
7
7
|
alibuild_helpers/__init__.py,sha256=ZAhyhRxOkiTA1fMzwEKACY8Eo8MdWp1MawVicFlvQWk,736
|
|
8
|
-
alibuild_helpers/_version.py,sha256=
|
|
8
|
+
alibuild_helpers/_version.py,sha256=TrTIouZBUnhS2cZ2YpeAFitQiBMrqfCdnZqquPAw5SU,708
|
|
9
9
|
alibuild_helpers/analytics.py,sha256=fuiOagDngFnodGo7upMWeY-RjTTncDRz5Kwz8zxUr9o,4579
|
|
10
10
|
alibuild_helpers/args.py,sha256=T0nOOMCpJZdJkEPZENz7nOsaYIfeZ7qHfAR1Vx4-T2Y,31694
|
|
11
|
-
alibuild_helpers/build.py,sha256=
|
|
11
|
+
alibuild_helpers/build.py,sha256=VJj0KwRkbPs5gCj-Ey2MWhl2NTLZWql6DGwp8AO3tTA,57055
|
|
12
12
|
alibuild_helpers/build_template.sh,sha256=e7nh8ZhNH-z0LPkuETYVYlgM75EfhoCo__hn1QCIDak,13566
|
|
13
13
|
alibuild_helpers/clean.py,sha256=-LeQUYDwxihzGJi4rCiuALu051T44-0cV8S6-l_lCaQ,3250
|
|
14
14
|
alibuild_helpers/cmd.py,sha256=5tdxtyrHDzmdSVIA0pzxBoici1GZDS0fUStbX85r6ao,5906
|
|
15
15
|
alibuild_helpers/deps.py,sha256=nHLyNqVuTUfW5bqfzCDxAaVVsklv5wHMl4FMMfTQF-8,4909
|
|
16
16
|
alibuild_helpers/doctor.py,sha256=CSvfwmD28NRmvSnmZRTHWaf11pAoSIlMxJ1yW00Xh9c,9685
|
|
17
17
|
alibuild_helpers/git.py,sha256=20JDRZX0wbJdsK__AI_nnS2rQmgElrMMD-OT6TDHCUU,4015
|
|
18
|
-
alibuild_helpers/init.py,sha256=
|
|
18
|
+
alibuild_helpers/init.py,sha256=x7OAErHzn34ceNqg-0GuHudYigh18Mk-P3RhN2P5mEI,5088
|
|
19
19
|
alibuild_helpers/log.py,sha256=OEflXNcGNgvVYLZbvVwd2Inyt12tnEw5RgkrsiAT2c0,4700
|
|
20
20
|
alibuild_helpers/scm.py,sha256=pZfEnTgr_ILmtRT3BXeoYVJGq9rjigLXOLAGJMsnDko,1019
|
|
21
|
-
alibuild_helpers/sl.py,sha256=
|
|
22
|
-
alibuild_helpers/sync.py,sha256=
|
|
21
|
+
alibuild_helpers/sl.py,sha256=Aw3-Lvq3bQ2s_KTw6PXgqcjSoY-s8_0A55GRPKks4x0,2915
|
|
22
|
+
alibuild_helpers/sync.py,sha256=vfny1ZF_YahzlSSEtYOq1KFvQLj_ce7MZlV2KDk1-xg,32296
|
|
23
23
|
alibuild_helpers/templating_plugin.py,sha256=TWHdMQtDfX6Vqp5w9Huyh4ZEgLv5vYxAtPtX68xTOlk,662
|
|
24
24
|
alibuild_helpers/utilities.py,sha256=nb0UC0qn2_rIJ-5GDnx-GoRAbF8tn1ELjZS-prUz9eo,26131
|
|
25
25
|
alibuild_helpers/workarea.py,sha256=dYGZ7OOCg87W-njZMqX7Yu72800KZjx9v5Hg-T43juY,7442
|
|
@@ -43,7 +43,7 @@ docs/docs/stylesheets/extra.css,sha256=NAFcBZQe8gh2CTpJFwyv93FvblnF5RaEjtsHxtlFD
|
|
|
43
43
|
templates/alibuild_to_please.jnj,sha256=48SfIwq55zlb5_5lu6WAHSznXE0EfUNcHmFrmzMUSns,1723
|
|
44
44
|
tests/test_analytics.py,sha256=IlxATGj-MU0sTVqpi2-EKrIhyV9C48K5IZ39kWFz-Os,1942
|
|
45
45
|
tests/test_args.py,sha256=8d8BybESxbIDvEOOSHmmd2rCTgNxI_vF-sgbDojI-Fg,8867
|
|
46
|
-
tests/test_build.py,sha256=
|
|
46
|
+
tests/test_build.py,sha256=5WtCmrvcG7U2i5jwBdPhMJzINsYQ6WaySEFu-TNnZHc,19017
|
|
47
47
|
tests/test_clean.py,sha256=Zm3gjtO8Pgl27xUzQIHeGqpe05YMVXZp6Sua59prvcE,7492
|
|
48
48
|
tests/test_cmd.py,sha256=SsWWasMrhbIu9Lqyr_wpuvDjg72ACJ1H_zDlTnybBuE,5049
|
|
49
49
|
tests/test_deps.py,sha256=bLDFuqLRJiCW4U71dzXYM0Niv-skQXSsKGb6LXGVsZ0,2113
|
|
@@ -54,7 +54,7 @@ tests/test_init.py,sha256=y1n16H5JoYAyIihqQglVmPrIsz7VVqyjRz_XdDs4XZM,4281
|
|
|
54
54
|
tests/test_log.py,sha256=5eA0lfFHyX4KOMkfQSsbNw9wAbh7t-KuOfvaFMaM0qg,1884
|
|
55
55
|
tests/test_packagelist.py,sha256=MlVParqXn7zQXX3OTjHhY7sFvfgAoH-jWBMJlmsB5ls,8755
|
|
56
56
|
tests/test_parseRecipe.py,sha256=Ar1SWWd-NLC6ZAs180RcHC3UPyWc1ItzIP9S57ADNM4,4982
|
|
57
|
-
tests/test_sync.py,sha256=
|
|
57
|
+
tests/test_sync.py,sha256=ispdYLvTIvoG_EnsNZWb-gI-hzt7cgjxns3ghpraepE,14014
|
|
58
58
|
tests/test_utilities.py,sha256=VfAu0oEWkO6YmOG4nZxA4YC3KViLGJZ79EJiapk88Rg,20497
|
|
59
59
|
tests/test_workarea.py,sha256=RIbo9b4hckkf9jmsS2NwfdcRU20QRUF_Kjjc-IlK2GU,4897
|
|
60
60
|
tests/testdist/broken1.sh,sha256=zdbBCVA9ThnK14Lu9Nm6Firw2EcnRF7budMA3xrcYEg,7
|
|
@@ -68,7 +68,7 @@ tests/testdist/clobber-initdotsh.sh,sha256=K4L8hiEgNg0hI2WAiEA65rWU5sp-fwOYkubpV
|
|
|
68
68
|
tests/testdist/defaults-o2.sh,sha256=IJWVMYjQYz876twos1bj-5VnPv7WTdM0X-fd09j4xxM,325
|
|
69
69
|
tests/testdist/delete-etc.sh,sha256=NFMApyWMLQu3HJMsx0x8ZEveCaXbosO6XzJk8KDRJdg,63
|
|
70
70
|
tests/testdist/tracking-env.sh,sha256=3cJszuzJ5dxNYvHO4ydUOWIXwmMS7wfeb-JBCDK21O4,119
|
|
71
|
-
alibuild-1.17.
|
|
72
|
-
alibuild-1.17.
|
|
73
|
-
alibuild-1.17.
|
|
74
|
-
alibuild-1.17.
|
|
71
|
+
alibuild-1.17.31.dist-info/METADATA,sha256=7-XtaJpu2T0OFXaBUde9PEVc5-_1miUl3ottGQAp-9Y,2231
|
|
72
|
+
alibuild-1.17.31.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
73
|
+
alibuild-1.17.31.dist-info/top_level.txt,sha256=WjKmc89Vn0WlbEp9a9VmhwqRkeKxjUX_6NT3T8K3Hv0,45
|
|
74
|
+
alibuild-1.17.31.dist-info/RECORD,,
|
alibuild_helpers/_version.py
CHANGED
|
@@ -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.
|
|
32
|
-
__version_tuple__ = version_tuple = (1, 17,
|
|
31
|
+
__version__ = version = '1.17.31'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 17, 31)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
alibuild_helpers/build.py
CHANGED
|
@@ -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)
|
alibuild_helpers/init.py
CHANGED
|
@@ -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
|
|
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,
|
alibuild_helpers/sl.py
CHANGED
|
@@ -20,9 +20,22 @@ class Sapling(SCM):
|
|
|
20
20
|
return sapling(("whereami", ), directory)
|
|
21
21
|
|
|
22
22
|
def branchOrRef(self, directory):
|
|
23
|
-
# Format is
|
|
24
|
-
|
|
25
|
-
|
|
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)
|
alibuild_helpers/sync.py
CHANGED
|
@@ -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
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
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
|
-
|
|
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))
|
tests/test_build.py
CHANGED
|
@@ -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.
|
|
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 = "
|
|
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 = ("
|
|
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 = ("
|
|
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.
|
|
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.
|
|
114
|
+
"/sw/SOURCES/zlib/v1.3.1/8822efa61f", False
|
|
101
115
|
GIT_CHECKOUT_ZLIB_ARGS = ("checkout", "-f", "master"), \
|
|
102
|
-
"/sw/SOURCES/zlib/v1.
|
|
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/
|
|
147
|
-
"/sw/
|
|
148
|
-
"/sw/
|
|
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/
|
|
167
|
-
'/bin/bash -e -x /sw/SPECS/
|
|
168
|
-
'/bin/bash -e -x /sw/SPECS/
|
|
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/
|
|
175
|
-
"../../
|
|
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/
|
|
228
|
-
|
|
229
|
-
"/sw/TARS/
|
|
230
|
-
"/sw/TARS/
|
|
231
|
-
"/
|
|
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/
|
|
247
|
-
"/sw/TARS/
|
|
248
|
-
"/sw/TARS/
|
|
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=
|
|
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/
|
|
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.
|
|
410
|
-
self.assertIn('. "$WORK_DIR/$ALIBUILD_ARCH_PREFIX"/zlib/v1.
|
|
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)
|
tests/test_sync.py
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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],
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|