alibuild 1.17.21__tar.gz → 1.17.23__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 (91) hide show
  1. {alibuild-1.17.21 → alibuild-1.17.23}/.github/workflows/pr-check.yml +19 -0
  2. {alibuild-1.17.21/alibuild.egg-info → alibuild-1.17.23}/PKG-INFO +1 -1
  3. {alibuild-1.17.21 → alibuild-1.17.23/alibuild.egg-info}/PKG-INFO +1 -1
  4. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/_version.py +2 -2
  5. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/args.py +2 -0
  6. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/build.py +4 -1
  7. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/build_template.sh +2 -2
  8. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/deps.py +5 -1
  9. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/doctor.py +9 -2
  10. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/log.py +8 -1
  11. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/sync.py +8 -3
  12. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/utilities.py +2 -2
  13. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_build.py +1 -1
  14. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_deps.py +2 -1
  15. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_doctor.py +2 -1
  16. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_init.py +4 -2
  17. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_utilities.py +90 -0
  18. {alibuild-1.17.21 → alibuild-1.17.23}/tox.ini +8 -0
  19. {alibuild-1.17.21 → alibuild-1.17.23}/.flake8 +0 -0
  20. {alibuild-1.17.21 → alibuild-1.17.23}/.github/workflows/documentation.yml +0 -0
  21. {alibuild-1.17.21 → alibuild-1.17.23}/.github/workflows/release.yml +0 -0
  22. {alibuild-1.17.21 → alibuild-1.17.23}/.gitignore +0 -0
  23. {alibuild-1.17.21 → alibuild-1.17.23}/.pylintrc +0 -0
  24. {alibuild-1.17.21 → alibuild-1.17.23}/ANALYTICS.md +0 -0
  25. {alibuild-1.17.21 → alibuild-1.17.23}/DESIGN.md +0 -0
  26. {alibuild-1.17.21 → alibuild-1.17.23}/LICENSE.md +0 -0
  27. {alibuild-1.17.21 → alibuild-1.17.23}/PACKAGING.md +0 -0
  28. {alibuild-1.17.21 → alibuild-1.17.23}/README.rst +0 -0
  29. {alibuild-1.17.21 → alibuild-1.17.23}/alfaBuild +0 -0
  30. {alibuild-1.17.21 → alibuild-1.17.23}/aliBuild +0 -0
  31. {alibuild-1.17.21 → alibuild-1.17.23}/aliDeps +0 -0
  32. {alibuild-1.17.21 → alibuild-1.17.23}/aliDoctor +0 -0
  33. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild.egg-info/SOURCES.txt +0 -0
  34. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild.egg-info/dependency_links.txt +0 -0
  35. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild.egg-info/requires.txt +0 -0
  36. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild.egg-info/top_level.txt +0 -0
  37. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/__init__.py +0 -0
  38. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/analytics.py +0 -0
  39. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/clean.py +0 -0
  40. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/cmd.py +0 -0
  41. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/git.py +0 -0
  42. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/init.py +0 -0
  43. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/scm.py +0 -0
  44. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/sl.py +0 -0
  45. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/templating_plugin.py +0 -0
  46. {alibuild-1.17.21 → alibuild-1.17.23}/alibuild_helpers/workarea.py +0 -0
  47. {alibuild-1.17.21 → alibuild-1.17.23}/alienv +0 -0
  48. {alibuild-1.17.21 → alibuild-1.17.23}/codecov.yml +0 -0
  49. {alibuild-1.17.21 → alibuild-1.17.23}/debian/changelog +0 -0
  50. {alibuild-1.17.21 → alibuild-1.17.23}/debian/compat +0 -0
  51. {alibuild-1.17.21 → alibuild-1.17.23}/debian/control +0 -0
  52. {alibuild-1.17.21 → alibuild-1.17.23}/debian/copyright +0 -0
  53. {alibuild-1.17.21 → alibuild-1.17.23}/debian/files +0 -0
  54. {alibuild-1.17.21 → alibuild-1.17.23}/debian/rules +0 -0
  55. {alibuild-1.17.21 → alibuild-1.17.23}/docs/README.md +0 -0
  56. {alibuild-1.17.21 → alibuild-1.17.23}/docs/SUPPORT +0 -0
  57. {alibuild-1.17.21 → alibuild-1.17.23}/docs/docs/alice_logo.png +0 -0
  58. {alibuild-1.17.21 → alibuild-1.17.23}/docs/docs/deps.png +0 -0
  59. {alibuild-1.17.21 → alibuild-1.17.23}/docs/docs/index.md +0 -0
  60. {alibuild-1.17.21 → alibuild-1.17.23}/docs/docs/quick.md +0 -0
  61. {alibuild-1.17.21 → alibuild-1.17.23}/docs/docs/reference.md +0 -0
  62. {alibuild-1.17.21 → alibuild-1.17.23}/docs/docs/stylesheets/extra.css +0 -0
  63. {alibuild-1.17.21 → alibuild-1.17.23}/docs/docs/troubleshooting.md +0 -0
  64. {alibuild-1.17.21 → alibuild-1.17.23}/docs/docs/user.md +0 -0
  65. {alibuild-1.17.21 → alibuild-1.17.23}/docs/mkdocs.yml +0 -0
  66. {alibuild-1.17.21 → alibuild-1.17.23}/pb +0 -0
  67. {alibuild-1.17.21 → alibuild-1.17.23}/pyproject.toml +0 -0
  68. {alibuild-1.17.21 → alibuild-1.17.23}/setup.cfg +0 -0
  69. {alibuild-1.17.21 → alibuild-1.17.23}/templates/alibuild_to_please.jnj +0 -0
  70. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_analytics.py +0 -0
  71. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_args.py +0 -0
  72. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_clean.py +0 -0
  73. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_cmd.py +0 -0
  74. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_git.py +0 -0
  75. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_hashing.py +0 -0
  76. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_log.py +0 -0
  77. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_packagelist.py +0 -0
  78. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_parseRecipe.py +0 -0
  79. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_sync.py +0 -0
  80. {alibuild-1.17.21 → alibuild-1.17.23}/tests/test_workarea.py +0 -0
  81. {alibuild-1.17.21 → alibuild-1.17.23}/tests/testdist/broken1.sh +0 -0
  82. {alibuild-1.17.21 → alibuild-1.17.23}/tests/testdist/broken2.sh +0 -0
  83. {alibuild-1.17.21 → alibuild-1.17.23}/tests/testdist/broken3.sh +0 -0
  84. {alibuild-1.17.21 → alibuild-1.17.23}/tests/testdist/broken4.sh +0 -0
  85. {alibuild-1.17.21 → alibuild-1.17.23}/tests/testdist/broken5.sh +0 -0
  86. {alibuild-1.17.21 → alibuild-1.17.23}/tests/testdist/broken6.sh +0 -0
  87. {alibuild-1.17.21 → alibuild-1.17.23}/tests/testdist/broken7.sh +0 -0
  88. {alibuild-1.17.21 → alibuild-1.17.23}/tests/testdist/clobber-initdotsh.sh +0 -0
  89. {alibuild-1.17.21 → alibuild-1.17.23}/tests/testdist/defaults-o2.sh +0 -0
  90. {alibuild-1.17.21 → alibuild-1.17.23}/tests/testdist/delete-etc.sh +0 -0
  91. {alibuild-1.17.21 → alibuild-1.17.23}/tests/testdist/tracking-env.sh +0 -0
@@ -129,3 +129,22 @@ jobs:
129
129
  #
130
130
  # - name: Run linters
131
131
  # run: tox -e lint
132
+
133
+ check-readme:
134
+ name: Check README
135
+ runs-on: ubuntu-latest
136
+
137
+ steps:
138
+ - uses: actions/checkout@v4
139
+
140
+ - name: Set up Python
141
+ uses: actions/setup-python@v5
142
+ with:
143
+ python-version: 3.x
144
+
145
+ - name: Install dependencies
146
+ run: python -m pip install --upgrade tox tox-gh-actions
147
+
148
+ - name: Run README check
149
+ run: tox -e check-readme
150
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alibuild
3
- Version: 1.17.21
3
+ Version: 1.17.23
4
4
  Summary: ALICE Build Tool
5
5
  Author-email: Giulio Eulisse <giulio.eulisse@cern.ch>, Timo Wilken <timo.wilken@cern.ch>, Sergio Garcia <sergio.garcia@cern.ch>
6
6
  Project-URL: homepage, https://alisw.github.io/alibuild
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alibuild
3
- Version: 1.17.21
3
+ Version: 1.17.23
4
4
  Summary: ALICE Build Tool
5
5
  Author-email: Giulio Eulisse <giulio.eulisse@cern.ch>, Timo Wilken <timo.wilken@cern.ch>, Sergio Garcia <sergio.garcia@cern.ch>
6
6
  Project-URL: homepage, https://alisw.github.io/alibuild
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '1.17.21'
21
- __version_tuple__ = version_tuple = (1, 17, 21)
20
+ __version__ = version = '1.17.23'
21
+ __version_tuple__ = version_tuple = (1, 17, 23)
@@ -254,6 +254,8 @@ def doParseArgs():
254
254
  help=("Assume we're not building %(metavar)s and all its (unique) dependencies. "
255
255
  "You can specify this option multiple times or separate multiple arguments "
256
256
  "with commas."))
257
+ doctor_parser.add_argument("-e", dest="environment", action="append", default=[],
258
+ help="KEY=VALUE binding to add to the build environment. May be specified multiple times.")
257
259
 
258
260
  doctor_system = doctor_parser.add_mutually_exclusive_group()
259
261
  doctor_system.add_argument("--always-prefer-system", dest="preferSystem", action="store_true",
@@ -501,7 +501,10 @@ def doBuild(args, parser):
501
501
 
502
502
  install_wrapper_script("git", workDir)
503
503
 
504
- with DockerRunner(args.dockerImage, args.docker_extra_args, extra_env={"ALIBUILD_CONFIG_DIR": "/alidist" if args.docker else os.path.abspath(args.configDir)}, extra_volumes=[f"{os.path.abspath(args.configDir)}:/alidist:ro"] if args.docker else []) as getstatusoutput_docker:
504
+ extra_env = {"ALIBUILD_CONFIG_DIR": "/alidist" if args.docker else os.path.abspath(args.configDir)}
505
+ extra_env.update(dict([e.partition('=')[::2] for e in args.environment]))
506
+
507
+ with DockerRunner(args.dockerImage, args.docker_extra_args, extra_env=extra_env, extra_volumes=[f"{os.path.abspath(args.configDir)}:/alidist:ro"] if args.docker else []) as getstatusoutput_docker:
505
508
  def performPreferCheckWithTempDir(pkg, cmd):
506
509
  with tempfile.TemporaryDirectory(prefix=f"alibuild_prefer_check_{pkg['package']}_") as temp_dir:
507
510
  return getstatusoutput_docker(cmd, cwd=temp_dir)
@@ -103,9 +103,9 @@ unset DYLD_LIBRARY_PATH
103
103
  EOF
104
104
 
105
105
  cd "$BUILDROOT"
106
- ln -snf $PKGHASH "${BUILDROOT}-latest"
106
+ ln -snf "$PKGHASH" "$ALIBUILD_BUILD_WORK_DIR/BUILD/$PKGNAME-latest"
107
107
  if [[ $DEVEL_PREFIX ]]; then
108
- ln -snf $PKGHASH "${BUILDROOT}-latest-$DEVEL_PREFIX"
108
+ ln -snf "$PKGHASH" "$ALIBUILD_BUILD_WORK_DIR/BUILD/$PKGNAME-latest-$DEVEL_PREFIX"
109
109
  fi
110
110
 
111
111
  cd "$BUILDDIR"
@@ -16,7 +16,11 @@ def doDeps(args, parser):
16
16
  specs = {}
17
17
  defaultsReader = lambda: readDefaults(args.configDir, args.defaults, parser.error, args.architecture)
18
18
  (err, overrides, taps) = parseDefaults(args.disable, defaultsReader, debug)
19
- with DockerRunner(args.dockerImage, args.docker_extra_args, extra_env={"ALIBUILD_CONFIG_DIR": "/alidist" if args.docker else path.abspath(args.configDir)}, extra_volumes=[f"{path.abspath(args.configDir)}:/alidist:ro"] if args.docker else []) as getstatusoutput_docker:
19
+
20
+ extra_env = {"ALIBUILD_CONFIG_DIR": "/alidist" if args.docker else path.abspath(args.configDir)}
21
+ extra_env.update(dict([e.partition('=')[::2] for e in args.environment]))
22
+
23
+ with DockerRunner(args.dockerImage, args.docker_extra_args, extra_env=extra_env, extra_volumes=[f"{path.abspath(args.configDir)}:/alidist:ro"] if args.docker else []) as getstatusoutput_docker:
20
24
  def performCheck(pkg, cmd):
21
25
  return getstatusoutput_docker(cmd)
22
26
 
@@ -83,7 +83,11 @@ def doDoctor(args, parser):
83
83
  # Decide if we can use homebrew. If not, we replace it with "true" so
84
84
  # that we do not get spurious messages on linux
85
85
  homebrew_replacement = ""
86
- with DockerRunner(args.dockerImage, args.docker_extra_args, extra_env={"ALIBUILD_CONFIG_DIR": "/alidist" if args.docker else os.path.abspath(args.configDir)}, extra_volumes=[f"{os.path.abspath(args.configDir)}:/alidist:ro"] if args.docker else []) as getstatusoutput_docker:
86
+
87
+ extra_env = {"ALIBUILD_CONFIG_DIR": "/alidist" if args.docker else os.path.abspath(args.configDir)}
88
+ extra_env.update(dict([e.partition('=')[::2] for e in args.environment]))
89
+
90
+ with DockerRunner(args.dockerImage, args.docker_extra_args, extra_env=extra_env, extra_volumes=[f"{os.path.abspath(args.configDir)}:/alidist:ro"] if args.docker else []) as getstatusoutput_docker:
87
91
  err, output = getstatusoutput_docker("type c++")
88
92
  if err:
89
93
  warning("Unable to find system compiler.\n"
@@ -140,7 +144,10 @@ def doDoctor(args, parser):
140
144
  error("%s", msg)
141
145
  return (ok,msg,valid)
142
146
 
143
- with DockerRunner(args.dockerImage, args.docker_extra_args, extra_env={"ALIBUILD_CONFIG_DIR": "/alidist" if args.docker else os.path.abspath(args.configDir)}, extra_volumes=[f"{os.path.abspath(args.configDir)}:/alidist:ro"] if args.docker else []) as getstatusoutput_docker:
147
+ extra_env = {"ALIBUILD_CONFIG_DIR": "/alidist" if args.docker else os.path.abspath(args.configDir)}
148
+ extra_env.update(dict([e.partition('=')[::2] for e in args.environment]))
149
+
150
+ with DockerRunner(args.dockerImage, args.docker_extra_args, extra_env=extra_env, extra_volumes=[f"{os.path.abspath(args.configDir)}:/alidist:ro"] if args.docker else []) as getstatusoutput_docker:
144
151
  def performPreferCheckWithTempDir(pkg, cmd):
145
152
  with tempfile.TemporaryDirectory(prefix=f"alibuild_prefer_check_{pkg['package']}_") as temp_dir:
146
153
  return getstatusoutput_docker(cmd, cwd=temp_dir)
@@ -53,14 +53,21 @@ def log_current_package(package, main_package, specs, devel_prefix) -> None:
53
53
 
54
54
 
55
55
  class ProgressPrint:
56
- def __init__(self, begin_msg="") -> None:
56
+ def __init__(self, begin_msg="", min_interval=0.) -> None:
57
57
  self.count = -1
58
58
  self.lasttime = 0
59
59
  self.STAGES = ".", "..", "...", "....", ".....", "....", "...", ".."
60
60
  self.begin_msg = begin_msg
61
61
  self.percent = -1
62
+ self.min_interval = min_interval
63
+ self.last_update = 0
62
64
 
63
65
  def __call__(self, txt, *args) -> None:
66
+ now = time.time()
67
+ if (now - self.last_update) < self.min_interval:
68
+ return
69
+ self.last_update = now
70
+
64
71
  if logger.level <= logging.DEBUG or not sys.stdout.isatty():
65
72
  debug(txt, *args)
66
73
  return
@@ -178,7 +178,7 @@ class HttpRemoteSync:
178
178
  destPath = os.path.join(self.workdir, store_path, use_tarball)
179
179
  if not os.path.isfile(destPath): # do not download twice
180
180
  progress = ProgressPrint("Downloading tarball for %s@%s" %
181
- (spec["package"], spec["version"]))
181
+ (spec["package"], spec["version"]), min_interval=5.0)
182
182
  progress("[0%%] Starting download of %s", use_tarball) # initialise progress bar
183
183
  self.getRetry("/".join((self.remoteStore, store_path, use_tarball)),
184
184
  destPath, session=session, progress=progress)
@@ -357,7 +357,7 @@ class CVMFSRemoteSync:
357
357
  # Create the dummy tarball, if it does not exists
358
358
  test -f "{workDir}/{architecture}/store/${{pkg_hash:0:2}}/$pkg_hash/$tarball" && continue
359
359
  mkdir -p "{workDir}/INSTALLROOT/$pkg_hash/{architecture}/{package}"
360
- find "{remote_store}/{cvmfs_architecture}/Packages/{package}/$full_version" ! -name etc -maxdepth 1 -mindepth 1 -exec ln -sf {} "{workDir}/INSTALLROOT/$pkg_hash/{architecture}/{package}/" \;
360
+ find "{remote_store}/{cvmfs_architecture}/Packages/{package}/$full_version" ! -name etc -maxdepth 1 -mindepth 1 -exec ln -sf {} "{workDir}/INSTALLROOT/$pkg_hash/{architecture}/{package}/" \\;
361
361
  cp -fr "{remote_store}/{cvmfs_architecture}/Packages/{package}/$full_version/etc" "{workDir}/INSTALLROOT/$pkg_hash/{architecture}/{package}/etc"
362
362
  mkdir -p "{workDir}/TARS/{architecture}/store/${{pkg_hash:0:2}}/$pkg_hash"
363
363
  tar -C "{workDir}/INSTALLROOT/$pkg_hash" -czf "{workDir}/TARS/{architecture}/store/${{pkg_hash:0:2}}/$pkg_hash/$tarball" .
@@ -551,7 +551,7 @@ class Boto3RemoteSync:
551
551
  for tarball in self._s3_listdir(store_path):
552
552
  debug("Fetching tarball %s", tarball)
553
553
  progress = ProgressPrint("Downloading tarball for %s@%s" %
554
- (spec["package"], spec["version"]))
554
+ (spec["package"], spec["version"]), min_interval=5.0)
555
555
  progress("[0%%] Starting download of %s", tarball) # initialise progress bar
556
556
  # Create containing directory locally. (exist_ok= is python3-specific.)
557
557
  os.makedirs(os.path.join(self.workdir, store_path), exist_ok=True)
@@ -679,6 +679,7 @@ class Boto3RemoteSync:
679
679
 
680
680
  # Second, upload dist symlinks. These should be in place before the main
681
681
  # tarball, to avoid races in the publisher.
682
+ start_time = time.time()
682
683
  for link_dir, symlinks in dist_symlinks.items():
683
684
  for link_key, hash_path in symlinks:
684
685
  self.s3.put_object(Bucket=self.writeStore,
@@ -688,6 +689,10 @@ class Boto3RemoteSync:
688
689
  WebsiteRedirectLocation=hash_path)
689
690
  debug("Uploaded %d dist symlinks to S3 from %s",
690
691
  len(symlinks), link_dir)
692
+ end_time = time.time()
693
+ debug("Uploaded %d dist symlinks in %.2f seconds",
694
+ sum(len(symlinks) for _, symlinks in dist_symlinks.items()),
695
+ end_time - start_time)
691
696
 
692
697
  self.s3.upload_file(Bucket=self.writeStore, Key=tar_path,
693
698
  Filename=os.path.join(self.workdir, tar_path))
@@ -216,7 +216,7 @@ def doDetectArch(hasOsRelease, osReleaseLines, platformTuple, platformSystem, pl
216
216
  distribution = distribution.lower()
217
217
  # If platform.dist does not return something sensible,
218
218
  # let's try with /etc/os-release
219
- if distribution not in ["ubuntu", "red hat enterprise linux", "redhat", "centos", "almalinux", "rockylinux"] and hasOsRelease:
219
+ if distribution not in ["ubuntu", "red hat enterprise linux", "redhat", "centos", "almalinux", "rocky linux"] and hasOsRelease:
220
220
  for x in osReleaseLines:
221
221
  key, is_prop, val = x.partition("=")
222
222
  if not is_prop:
@@ -236,7 +236,7 @@ def doDetectArch(hasOsRelease, osReleaseLines, platformTuple, platformSystem, pl
236
236
  if version in debian_ubuntu:
237
237
  distribution = "ubuntu"
238
238
  version = debian_ubuntu[version]
239
- elif distribution in ["redhat", "red hat enterprise linux", "centos", "almalinux", "rockylinux"]:
239
+ elif distribution in ["redhat", "red hat enterprise linux", "centos", "almalinux", "rocky linux"]:
240
240
  distribution = "slc"
241
241
 
242
242
  processor = platformProcessor
@@ -271,7 +271,7 @@ class BuildTestCase(unittest.TestCase):
271
271
  debug=True,
272
272
  dryRun=False,
273
273
  aggressiveCleanup=False,
274
- environment={},
274
+ environment=[],
275
275
  autoCleanup=False,
276
276
  noDevel=[],
277
277
  onlyDeps=False,
@@ -64,7 +64,8 @@ class DepsTestCase(unittest.TestCase):
64
64
  outdot="/tmp/out.dot",
65
65
  outgraph="/tmp/outgraph.pdf",
66
66
  package="AliRoot",
67
- defaults="release")
67
+ defaults="release",
68
+ environment=[])
68
69
  def fake_exists(n):
69
70
  return {"/alidist/aliroot.sh": True}
70
71
  with patch.object(os.path, "exists", fake_exists):
@@ -82,7 +82,8 @@ class DoctorTestCase(unittest.TestCase):
82
82
  noSystem="*",
83
83
  architecture="osx_x86-64",
84
84
  disable=[],
85
- defaults="release")
85
+ defaults="release",
86
+ environment=[])
86
87
 
87
88
  def fake_exists(n):
88
89
  return {"/alidist/aliroot.sh": True}
@@ -48,7 +48,8 @@ class InitTestCase(unittest.TestCase):
48
48
  defaults = "release",
49
49
  dryRun = True,
50
50
  fetchRepos = False,
51
- architecture = "slc7_x86-64"
51
+ architecture = "slc7_x86-64",
52
+ environment = {},
52
53
  )
53
54
  self.assertRaises(SystemExit, doInit, args)
54
55
  self.assertEqual(mock_info.mock_calls, [call('This will initialise local checkouts for %s\n--dry-run / -n specified. Doing nothing.', 'zlib,AliRoot')])
@@ -81,7 +82,8 @@ class InitTestCase(unittest.TestCase):
81
82
  defaults = "release",
82
83
  dryRun = False,
83
84
  fetchRepos = False,
84
- architecture = "slc7_x86-64"
85
+ architecture = "slc7_x86-64",
86
+ environment = {},
85
87
  )
86
88
  def fake_exists(n):
87
89
  return {"/alidist/aliroot.sh": True}
@@ -113,12 +113,102 @@ SUPPORT_URL="http://forum.sabayon.org/"
113
113
  BUG_REPORT_URL="https://bugs.sabayon.org/"
114
114
  """
115
115
 
116
+ ALMA_8_OS_RELEASE = """
117
+ NAME="AlmaLinux"
118
+ VERSION="8.10 (Cerulean Leopard)"
119
+ ID="almalinux"
120
+ ID_LIKE="rhel centos fedora"
121
+ VERSION_ID="8.10"
122
+ PLATFORM_ID="platform:el8"
123
+ PRETTY_NAME="AlmaLinux 8.10 (Cerulean Leopard)"
124
+ ANSI_COLOR="0;34"
125
+ LOGO="fedora-logo-icon"
126
+ CPE_NAME="cpe:/o:almalinux:almalinux:8::baseos"
127
+ HOME_URL="https://almalinux.org/"
128
+ DOCUMENTATION_URL="https://wiki.almalinux.org/"
129
+ BUG_REPORT_URL="https://bugs.almalinux.org/"
130
+
131
+ ALMALINUX_MANTISBT_PROJECT="AlmaLinux-8"
132
+ ALMALINUX_MANTISBT_PROJECT_VERSION="8.10"
133
+ REDHAT_SUPPORT_PRODUCT="AlmaLinux"
134
+ REDHAT_SUPPORT_PRODUCT_VERSION="8.10"
135
+ SUPPORT_END=2029-06-01
136
+ """
137
+
138
+ ALMA_9_OS_RELEASE = """
139
+ NAME="AlmaLinux"
140
+ VERSION="9.6 (Sage Margay)"
141
+ ID="almalinux"
142
+ ID_LIKE="rhel centos fedora"
143
+ VERSION_ID="9.6"
144
+ PLATFORM_ID="platform:el9"
145
+ PRETTY_NAME="AlmaLinux 9.6 (Sage Margay)"
146
+ ANSI_COLOR="0;34"
147
+ LOGO="fedora-logo-icon"
148
+ CPE_NAME="cpe:/o:almalinux:almalinux:9::baseos"
149
+ HOME_URL="https://almalinux.org/"
150
+ DOCUMENTATION_URL="https://wiki.almalinux.org/"
151
+ BUG_REPORT_URL="https://bugs.almalinux.org/"
152
+
153
+ ALMALINUX_MANTISBT_PROJECT="AlmaLinux-9"
154
+ ALMALINUX_MANTISBT_PROJECT_VERSION="9.6"
155
+ REDHAT_SUPPORT_PRODUCT="AlmaLinux"
156
+ REDHAT_SUPPORT_PRODUCT_VERSION="9.6"
157
+ SUPPORT_END=2032-06-01
158
+ """
159
+
160
+ ROCKY_8_OS_RELEASE = """
161
+ NAME="Rocky Linux"
162
+ VERSION="8.10 (Green Obsidian)"
163
+ ID="rocky"
164
+ ID_LIKE="rhel centos fedora"
165
+ VERSION_ID="8.10"
166
+ PLATFORM_ID="platform:el8"
167
+ PRETTY_NAME="Rocky Linux 8.10 (Green Obsidian)"
168
+ ANSI_COLOR="0;32"
169
+ LOGO="fedora-logo-icon"
170
+ CPE_NAME="cpe:/o:rocky:rocky:8:GA"
171
+ HOME_URL="https://rockylinux.org/"
172
+ BUG_REPORT_URL="https://bugs.rockylinux.org/"
173
+ SUPPORT_END="2029-05-31"
174
+ ROCKY_SUPPORT_PRODUCT="Rocky-Linux-8"
175
+ ROCKY_SUPPORT_PRODUCT_VERSION="8.10"
176
+ REDHAT_SUPPORT_PRODUCT="Rocky Linux"
177
+ REDHAT_SUPPORT_PRODUCT_VERSION="8.10"
178
+ """
179
+
180
+ ROCKY_9_OS_RELEASE = """
181
+ NAME="Rocky Linux"
182
+ VERSION="9.6 (Blue Onyx)"
183
+ ID="rocky"
184
+ ID_LIKE="rhel centos fedora"
185
+ VERSION_ID="9.6"
186
+ PLATFORM_ID="platform:el9"
187
+ PRETTY_NAME="Rocky Linux 9.6 (Blue Onyx)"
188
+ ANSI_COLOR="0;32"
189
+ LOGO="fedora-logo-icon"
190
+ CPE_NAME="cpe:/o:rocky:rocky:9::baseos"
191
+ HOME_URL="https://rockylinux.org/"
192
+ VENDOR_NAME="RESF"
193
+ VENDOR_URL="https://resf.org/"
194
+ BUG_REPORT_URL="https://bugs.rockylinux.org/"
195
+ SUPPORT_END="2032-05-31"
196
+ ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9"
197
+ ROCKY_SUPPORT_PRODUCT_VERSION="9.6"
198
+ REDHAT_SUPPORT_PRODUCT="Rocky Linux"
199
+ REDHAT_SUPPORT_PRODUCT_VERSION="9.6"
200
+ """
201
+
116
202
  architecturePayloads = [
117
203
  ['osx_x86-64', False, [], ('','',''), 'Darwin', 'x86-64'],
118
204
  ['osx_arm64', False, [], ('','',''), 'Darwin', 'arm64'],
119
205
  ['slc5_x86-64', False, [], ('redhat', '5.XX', 'Boron'), 'Linux', 'x86-64'],
120
206
  ['slc6_x86-64', False, [], ('centos', '6.X', 'Carbon'), 'Linux', 'x86-64'],
121
207
  ['slc7_x86-64', False, [], ('centos', '7.X', 'Ptor'), 'Linux', 'x86-64'],
208
+ ['slc8_x86-64', True, ALMA_8_OS_RELEASE.split("\n"), ('AlmaLinux', '8.10', 'Cerulean Leopard'), 'Linux', 'x86_64'],
209
+ ['slc8_x86-64', True, ROCKY_8_OS_RELEASE.split("\n"), ('Rocky Linux', '8.10', 'Green Obsidian'), 'Linux', 'x86_64'],
210
+ ['slc9_x86-64', True, ALMA_9_OS_RELEASE.split("\n"), ('AlmaLinux', '9.6', 'Sage Margay'), 'Linux', 'x86_64'],
211
+ ['slc9_x86-64', True, ROCKY_9_OS_RELEASE.split("\n"), ('Rocky Linux', '9.6', 'Blue Onyx'), 'Linux', 'x86_64'],
122
212
  ['ubuntu1804_x86-64', True, UBUNTU_1804_OS_RELEASE.split("\n"), ('Ubuntu', '18.04', 'bionic'), 'Linux', 'x86-64'],
123
213
  ['ubuntu1604_x86-64', True, UBUNTU_1604_OS_RELEASE.split("\n"), ('Ubuntu', '16.04', 'xenial'), 'Linux', 'x86-64'],
124
214
  ['ubuntu1510_x86-64', False, [], ('Ubuntu', '15.10', 'wily'), 'Linux', 'x86-64'],
@@ -139,3 +139,11 @@ exclude_lines =
139
139
  raise NotImplementedError
140
140
  # Don't complain if non-runnable code isn't run:
141
141
  if __name__ == .__main__.:
142
+
143
+ [testenv:check-readme]
144
+ # Check the README.rst file for common issues.
145
+ # The pypa publishing job fails if this fails.
146
+ deps =
147
+ rstcheck
148
+ commands =
149
+ rstcheck {toxinidir}/README.rst
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