alibuild 1.17.6__tar.gz → 1.17.8__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 (110) hide show
  1. alibuild-1.17.8/.github/workflows/documentation.yml +30 -0
  2. {alibuild-1.17.6 → alibuild-1.17.8}/.github/workflows/pr-check.yml +0 -15
  3. {alibuild-1.17.6/alibuild.egg-info → alibuild-1.17.8}/PKG-INFO +1 -1
  4. {alibuild-1.17.6 → alibuild-1.17.8/alibuild.egg-info}/PKG-INFO +1 -1
  5. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild.egg-info/SOURCES.txt +10 -22
  6. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/_version.py +2 -2
  7. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/args.py +4 -1
  8. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/build.py +12 -6
  9. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/build_template.sh +13 -3
  10. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/git.py +7 -2
  11. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/sync.py +70 -0
  12. alibuild-1.17.8/docs/README.md +1 -0
  13. alibuild-1.17.8/docs/docs/alice_logo.png +0 -0
  14. alibuild-1.17.6/docs/index.markdown → alibuild-1.17.8/docs/docs/index.md +15 -13
  15. alibuild-1.17.6/docs/quick.markdown → alibuild-1.17.8/docs/docs/quick.md +2 -4
  16. alibuild-1.17.6/docs/reference.markdown → alibuild-1.17.8/docs/docs/reference.md +0 -1
  17. alibuild-1.17.8/docs/docs/stylesheets/extra.css +7 -0
  18. alibuild-1.17.6/docs/troubleshooting.markdown → alibuild-1.17.8/docs/docs/troubleshooting.md +15 -2
  19. alibuild-1.17.6/docs/user.markdown → alibuild-1.17.8/docs/docs/user.md +2 -3
  20. alibuild-1.17.8/docs/mkdocs.yml +36 -0
  21. {alibuild-1.17.6 → alibuild-1.17.8}/setup.py +1 -1
  22. alibuild-1.17.6/docs/README.md +0 -1
  23. alibuild-1.17.6/docs/_config.yml +0 -27
  24. alibuild-1.17.6/docs/_includes/section_toc.html +0 -9
  25. alibuild-1.17.6/docs/_layouts/main.html +0 -57
  26. alibuild-1.17.6/docs/_layouts/redirect.html +0 -7
  27. alibuild-1.17.6/docs/css/bootstrap-theme.min.css +0 -14
  28. alibuild-1.17.6/docs/css/bootstrap.min.css +0 -14
  29. alibuild-1.17.6/docs/css/pure-min.css +0 -11
  30. alibuild-1.17.6/docs/js/highlight.pack.js +0 -1
  31. alibuild-1.17.6/docs/main.css +0 -2
  32. alibuild-1.17.6/docs/o2-dataflow-tutorial.markdown +0 -6
  33. alibuild-1.17.6/docs/o2-tutorial.markdown +0 -6
  34. alibuild-1.17.6/docs/side-menu.css +0 -254
  35. alibuild-1.17.6/docs/syntax.css +0 -118
  36. alibuild-1.17.6/docs/tutorial.markdown +0 -6
  37. alibuild-1.17.6/docs/ui.js +0 -35
  38. alibuild-1.17.6/script/custom_htmlproofer.rb +0 -9
  39. {alibuild-1.17.6 → alibuild-1.17.8}/.flake8 +0 -0
  40. {alibuild-1.17.6 → alibuild-1.17.8}/.github/workflows/release.yml +0 -0
  41. {alibuild-1.17.6 → alibuild-1.17.8}/.gitignore +0 -0
  42. {alibuild-1.17.6 → alibuild-1.17.8}/.pylintrc +0 -0
  43. {alibuild-1.17.6 → alibuild-1.17.8}/ANALYTICS.md +0 -0
  44. {alibuild-1.17.6 → alibuild-1.17.8}/DESIGN.md +0 -0
  45. {alibuild-1.17.6 → alibuild-1.17.8}/Jenkinsfile +0 -0
  46. {alibuild-1.17.6 → alibuild-1.17.8}/LICENSE.md +0 -0
  47. {alibuild-1.17.6 → alibuild-1.17.8}/MANIFEST.in +0 -0
  48. {alibuild-1.17.6 → alibuild-1.17.8}/PACKAGING.md +0 -0
  49. {alibuild-1.17.6 → alibuild-1.17.8}/README.rst +0 -0
  50. {alibuild-1.17.6 → alibuild-1.17.8}/alfaBuild +0 -0
  51. {alibuild-1.17.6 → alibuild-1.17.8}/aliBuild +0 -0
  52. {alibuild-1.17.6 → alibuild-1.17.8}/aliDeps +0 -0
  53. {alibuild-1.17.6 → alibuild-1.17.8}/aliDoctor +0 -0
  54. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild.egg-info/dependency_links.txt +0 -0
  55. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild.egg-info/requires.txt +0 -0
  56. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild.egg-info/top_level.txt +0 -0
  57. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/__init__.py +0 -0
  58. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/analytics.py +0 -0
  59. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/clean.py +0 -0
  60. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/cmd.py +0 -0
  61. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/deps.py +0 -0
  62. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/doctor.py +0 -0
  63. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/init.py +0 -0
  64. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/log.py +0 -0
  65. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/scm.py +0 -0
  66. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/sl.py +0 -0
  67. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/templating_plugin.py +0 -0
  68. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/utilities.py +0 -0
  69. {alibuild-1.17.6 → alibuild-1.17.8}/alibuild_helpers/workarea.py +0 -0
  70. {alibuild-1.17.6 → alibuild-1.17.8}/alienv +0 -0
  71. {alibuild-1.17.6 → alibuild-1.17.8}/codecov.yml +0 -0
  72. {alibuild-1.17.6 → alibuild-1.17.8}/debian/changelog +0 -0
  73. {alibuild-1.17.6 → alibuild-1.17.8}/debian/compat +0 -0
  74. {alibuild-1.17.6 → alibuild-1.17.8}/debian/control +0 -0
  75. {alibuild-1.17.6 → alibuild-1.17.8}/debian/copyright +0 -0
  76. {alibuild-1.17.6 → alibuild-1.17.8}/debian/files +0 -0
  77. {alibuild-1.17.6 → alibuild-1.17.8}/debian/rules +0 -0
  78. {alibuild-1.17.6 → alibuild-1.17.8}/docs/SUPPORT +0 -0
  79. {alibuild-1.17.6 → alibuild-1.17.8/docs}/docs/deps.png +0 -0
  80. {alibuild-1.17.6 → alibuild-1.17.8}/pb +0 -0
  81. {alibuild-1.17.6 → alibuild-1.17.8}/pyproject.toml +0 -0
  82. {alibuild-1.17.6 → alibuild-1.17.8}/requirements.txt +0 -0
  83. {alibuild-1.17.6 → alibuild-1.17.8}/setup.cfg +0 -0
  84. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_analytics.py +0 -0
  85. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_args.py +0 -0
  86. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_build.py +0 -0
  87. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_clean.py +0 -0
  88. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_cmd.py +0 -0
  89. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_deps.py +0 -0
  90. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_doctor.py +0 -0
  91. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_git.py +0 -0
  92. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_hashing.py +0 -0
  93. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_init.py +0 -0
  94. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_log.py +0 -0
  95. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_packagelist.py +0 -0
  96. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_parseRecipe.py +0 -0
  97. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_sync.py +0 -0
  98. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_utilities.py +0 -0
  99. {alibuild-1.17.6 → alibuild-1.17.8}/tests/test_workarea.py +0 -0
  100. {alibuild-1.17.6 → alibuild-1.17.8}/tests/testdist/broken1.sh +0 -0
  101. {alibuild-1.17.6 → alibuild-1.17.8}/tests/testdist/broken2.sh +0 -0
  102. {alibuild-1.17.6 → alibuild-1.17.8}/tests/testdist/broken3.sh +0 -0
  103. {alibuild-1.17.6 → alibuild-1.17.8}/tests/testdist/broken4.sh +0 -0
  104. {alibuild-1.17.6 → alibuild-1.17.8}/tests/testdist/broken5.sh +0 -0
  105. {alibuild-1.17.6 → alibuild-1.17.8}/tests/testdist/broken6.sh +0 -0
  106. {alibuild-1.17.6 → alibuild-1.17.8}/tests/testdist/broken7.sh +0 -0
  107. {alibuild-1.17.6 → alibuild-1.17.8}/tests/testdist/clobber-initdotsh.sh +0 -0
  108. {alibuild-1.17.6 → alibuild-1.17.8}/tests/testdist/defaults-o2.sh +0 -0
  109. {alibuild-1.17.6 → alibuild-1.17.8}/tests/testdist/delete-etc.sh +0 -0
  110. {alibuild-1.17.6 → alibuild-1.17.8}/tox.ini +0 -0
@@ -0,0 +1,30 @@
1
+ name: Documentation
2
+ on:
3
+ push:
4
+ branches:
5
+ - master
6
+ permissions:
7
+ contents: write
8
+ jobs:
9
+ deploy:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - name: Configure Git Credentials
14
+ run: |
15
+ git config user.name github-actions[bot]
16
+ git config user.email 41898282+github-actions[bot]@users.noreply.github.com
17
+ - uses: actions/setup-python@v5
18
+ with:
19
+ python-version: 3.x
20
+ - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
21
+ - uses: actions/cache@v4
22
+ with:
23
+ key: mkdocs-material-${{ env.cache_id }}
24
+ path: .cache
25
+ restore-keys: |
26
+ mkdocs-material-
27
+ - run: |
28
+ pip install mkdocs-material mkdocs-redirects
29
+ cd docs
30
+ mkdocs gh-deploy --force # Always keep in sync with master branch
@@ -123,18 +123,3 @@ jobs:
123
123
 
124
124
  - name: Run linters
125
125
  run: tox -e lint
126
-
127
- documentation:
128
- name: documentation
129
- runs-on: ubuntu-latest
130
- container:
131
- image: jekyll/jekyll
132
-
133
- steps:
134
- - uses: actions/checkout@v3
135
-
136
- - name: Test documentation
137
- run: |
138
- chmod -R a+rwX .
139
- jekyll build -s docs -d _site --baseurl .
140
- script/custom_htmlproofer.rb
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: alibuild
3
- Version: 1.17.6
3
+ Version: 1.17.8
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.1
2
2
  Name: alibuild
3
- Version: 1.17.6
3
+ Version: 1.17.8
4
4
  Summary: ALICE Build Tool
5
5
  Home-page: https://alisw.github.io/alibuild
6
6
  Author: Giulio Eulisse
@@ -19,6 +19,7 @@ pyproject.toml
19
19
  requirements.txt
20
20
  setup.py
21
21
  tox.ini
22
+ .github/workflows/documentation.yml
22
23
  .github/workflows/pr-check.yml
23
24
  .github/workflows/release.yml
24
25
  alibuild.egg-info/PKG-INFO
@@ -53,28 +54,15 @@ debian/files
53
54
  debian/rules
54
55
  docs/README.md
55
56
  docs/SUPPORT
56
- docs/_config.yml
57
- docs/deps.png
58
- docs/index.markdown
59
- docs/main.css
60
- docs/o2-dataflow-tutorial.markdown
61
- docs/o2-tutorial.markdown
62
- docs/quick.markdown
63
- docs/reference.markdown
64
- docs/side-menu.css
65
- docs/syntax.css
66
- docs/troubleshooting.markdown
67
- docs/tutorial.markdown
68
- docs/ui.js
69
- docs/user.markdown
70
- docs/_includes/section_toc.html
71
- docs/_layouts/main.html
72
- docs/_layouts/redirect.html
73
- docs/css/bootstrap-theme.min.css
74
- docs/css/bootstrap.min.css
75
- docs/css/pure-min.css
76
- docs/js/highlight.pack.js
77
- script/custom_htmlproofer.rb
57
+ docs/mkdocs.yml
58
+ docs/docs/alice_logo.png
59
+ docs/docs/deps.png
60
+ docs/docs/index.md
61
+ docs/docs/quick.md
62
+ docs/docs/reference.md
63
+ docs/docs/troubleshooting.md
64
+ docs/docs/user.md
65
+ docs/docs/stylesheets/extra.css
78
66
  tests/test_analytics.py
79
67
  tests/test_args.py
80
68
  tests/test_build.py
@@ -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.6'
16
- __version_tuple__ = version_tuple = (1, 17, 6)
15
+ __version__ = version = '1.17.8'
16
+ __version_tuple__ = version_tuple = (1, 17, 8)
@@ -380,6 +380,9 @@ On Linux, x86-64:
380
380
  Fedora 33 compatible: fedora33_x86-64
381
381
  Fedora 34 compatible: fedora34_x86-64
382
382
 
383
+ On Linux, ARM:
384
+ RHEL9 / ALMA9 compatible: slc9_aarch64
385
+
383
386
  On Linux, POWER8 / PPC64 (little endian):
384
387
  RHEL7 / CC7 compatible: slc7_ppc64
385
388
 
@@ -389,7 +392,7 @@ On Mac, 1-2 latest supported OSX versions:
389
392
  """
390
393
 
391
394
  # When updating this variable, also update docs/user.markdown!
392
- S3_SUPPORTED_ARCHS = "slc7_x86-64", "slc8_x86-64", "ubuntu2004_x86-64", "ubuntu2204_x86-64", "slc9_x86-64"
395
+ S3_SUPPORTED_ARCHS = "slc7_x86-64", "slc8_x86-64", "ubuntu2004_x86-64", "ubuntu2204_x86-64", "slc9_x86-64", "slc9_aarch64"
393
396
 
394
397
  def finaliseArgs(args, parser):
395
398
 
@@ -899,12 +899,18 @@ def doBuild(args, parser):
899
899
 
900
900
  # Now that we have all the information about the package we want to build, let's
901
901
  # check if it wasn't built / unpacked already.
902
- hashFile = "%s/%s/%s/%s-%s/.build-hash" % (workDir,
903
- args.architecture,
904
- spec["package"],
905
- spec["version"],
906
- spec["revision"])
907
- fileHash = readHashFile(hashFile)
902
+ hashPath= "%s/%s/%s/%s-%s" % (workDir,
903
+ args.architecture,
904
+ spec["package"],
905
+ spec["version"],
906
+ spec["revision"])
907
+ hashFile = hashPath + "/.build-hash"
908
+ # If the folder is a symlink, we consider it to be to CVMFS and
909
+ # take the hash for good.
910
+ if os.path.islink(hashPath):
911
+ fileHash = spec["hash"]
912
+ else:
913
+ fileHash = readHashFile(hashFile)
908
914
  # Development packages have their own rebuild-detection logic above.
909
915
  # spec["hash"] is only useful here for regular packages.
910
916
  if fileHash == spec["hash"] and not spec["is_devel_pkg"]:
@@ -139,7 +139,9 @@ else
139
139
  rm -rf $INSTALLROOT
140
140
  mv $WORK_DIR/TMP/$PKGHASH/$ARCHITECTURE/$PKGNAME/$PKGVERSION-* $INSTALLROOT
141
141
  pushd $WORK_DIR/INSTALLROOT/$PKGHASH
142
- WORK_DIR=$WORK_DIR/INSTALLROOT/$PKGHASH bash -ex $INSTALLROOT/relocate-me.sh
142
+ if [ -w "$INSTALLROOT" ]; then
143
+ WORK_DIR=$WORK_DIR/INSTALLROOT/$PKGHASH bash -ex $INSTALLROOT/relocate-me.sh
144
+ fi
143
145
  popd
144
146
  find $INSTALLROOT -name "*.unrelocated" -delete
145
147
  rm -rf $WORK_DIR/TMP/$PKGHASH
@@ -148,6 +150,9 @@ fi
148
150
  # Regenerate init.sh, in case the package build clobbered it. This
149
151
  # particularly happens in the AliEn-Runtime package, since it copies other
150
152
  # packages into its installroot wholesale.
153
+ # Notice how we only do it if $INSTALLROOT is writeable. If it is
154
+ # not, we assume it points to a CVMFS store which should be left untouched.
155
+ if [ -w $INSTALLROOT ]; then
151
156
  mkdir -p "$INSTALLROOT/etc/profile.d"
152
157
  rm -f "$INSTALLROOT/etc/profile.d/init.sh"
153
158
  cat <<\EOF > "$INSTALLROOT/etc/profile.d/init.sh"
@@ -251,6 +256,7 @@ fi
251
256
 
252
257
  cat "$INSTALLROOT/relocate-me.sh"
253
258
  cat "$INSTALLROOT/.original-unrelocated" | xargs -n1 -I{} cp '{}' '{}'.unrelocated
259
+ fi
254
260
  cd "$WORK_DIR/INSTALLROOT/$PKGHASH"
255
261
 
256
262
  # Archive creation
@@ -283,7 +289,9 @@ wait "$rsync_pid"
283
289
 
284
290
  # We've copied files into their final place; now relocate.
285
291
  cd "$WORK_DIR"
286
- bash -ex "$ARCHITECTURE/$PKGNAME/$PKGVERSION-$PKGREVISION/relocate-me.sh"
292
+ if [ -w "$WORK_DIR/$ARCHITECTURE/$PKGNAME/$PKGVERSION-$PKGREVISION" ]; then
293
+ bash -ex "$ARCHITECTURE/$PKGNAME/$PKGVERSION-$PKGREVISION/relocate-me.sh"
294
+ fi
287
295
  # Last package built gets a "latest" mark.
288
296
  ln -snf $PKGVERSION-$PKGREVISION $ARCHITECTURE/$PKGNAME/latest
289
297
 
@@ -294,7 +302,9 @@ fi
294
302
 
295
303
  # When the package is definitely fully installed, install the file that marks
296
304
  # the package as successful.
297
- echo "$PKGHASH" > "$WORK_DIR/$PKGPATH/.build-hash"
305
+ if [ -w "$WORK_DIR/$PKGPATH" ]; then
306
+ echo "$PKGHASH" > "$WORK_DIR/$PKGPATH/.build-hash"
307
+ fi
298
308
  # Mark the build as successful with a placeholder. Allows running incremental
299
309
  # recipe in case the package is in development mode.
300
310
  echo "${DEVEL_HASH}${DEPS_HASH}" > "$BUILDDIR/.build_succeeded"
@@ -5,8 +5,13 @@ from alibuild_helpers.scm import SCM, SCMError
5
5
  import os
6
6
 
7
7
  GIT_COMMAND_TIMEOUT_SEC = 120
8
- """How many seconds to let any git command execute before being terminated."""
8
+ """Default value for how many seconds to let any git command execute before being terminated."""
9
9
 
10
+ GIT_CMD_TIMEOUTS = {
11
+ "clone": 600,
12
+ "checkout": 600
13
+ }
14
+ """Customised timeout for some commands."""
10
15
 
11
16
  def clone_speedup_options():
12
17
  """Return a list of options supported by the system git which speed up cloning."""
@@ -93,7 +98,7 @@ def git(args, directory=".", check=True, prompt=True):
93
98
  # GIT_TERMINAL_PROMPT is only supported in git 2.3+.
94
99
  prompt_var=f"GIT_TERMINAL_PROMPT=0" if not prompt else "",
95
100
  directory_safe_var=f"GIT_CONFIG_COUNT={lastGitOverride+2} GIT_CONFIG_KEY_{lastGitOverride}=safe.directory GIT_CONFIG_VALUE_{lastGitOverride}=$PWD GIT_CONFIG_KEY_{lastGitOverride+1}=gc.auto GIT_CONFIG_VALUE_{lastGitOverride+1}=0" if directory else "",
96
- ), timeout=GIT_COMMAND_TIMEOUT_SEC)
101
+ ), timeout=GIT_CMD_TIMEOUTS.get(args[0] if len(args) else "*", GIT_COMMAND_TIMEOUT_SEC))
97
102
  if check and err != 0:
98
103
  raise SCMError("Error {} from git {}: {}".format(err, " ".join(args), output))
99
104
  return output if check else (err, output)
@@ -22,6 +22,8 @@ def remote_from_url(read_url, write_url, architecture, work_dir, insecure=False)
22
22
  return S3RemoteSync(read_url, write_url, architecture, work_dir)
23
23
  if read_url.startswith("b3://"):
24
24
  return Boto3RemoteSync(read_url, write_url, architecture, work_dir)
25
+ if read_url.startswith("cvmfs://"):
26
+ return CVMFSRemoteSync(read_url, None, architecture, work_dir)
25
27
  if read_url:
26
28
  return RsyncRemoteSync(read_url, write_url, architecture, work_dir)
27
29
  return NoRemoteSync()
@@ -304,6 +306,74 @@ class RsyncRemoteSync:
304
306
  revision=spec["revision"],
305
307
  )), "Unable to upload tarball.")
306
308
 
309
+ class CVMFSRemoteSync:
310
+ """ Sync packages build directory from CVMFS or similar
311
+ FS based deployment. The tarball will be created on the fly with a single
312
+ symlink to the remote store in it, so that unpacking really
313
+ means unpacking the symlink to the wanted package.
314
+ """
315
+
316
+ def __init__(self, remoteStore, writeStore, architecture, workdir):
317
+ self.remoteStore = re.sub("^cvmfs://", "", remoteStore)
318
+ # We do not support uploading directly to CVMFS, for obvious
319
+ # reasons.
320
+ assert(writeStore == None)
321
+ self.writeStore = None
322
+ self.architecture = architecture
323
+ self.workdir = workdir
324
+
325
+ def fetch_tarball(self, spec):
326
+ info("Downloading tarball for %s@%s-%s, if available", spec["package"], spec["version"], spec["revision"])
327
+ # If we already have a tarball with any equivalent hash, don't check S3.
328
+ for pkg_hash in spec["remote_hashes"] + spec["local_hashes"]:
329
+ store_path = resolve_store_path(self.architecture, pkg_hash)
330
+ pattern = os.path.join(self.workdir, store_path, "%s-*.tar.gz" % spec["package"])
331
+ if glob.glob(pattern):
332
+ info("Reusing existing tarball for %s@%s", spec["package"], pkg_hash)
333
+ return
334
+ info("Could not find prebuilt tarball for %s@%s-%s, will be rebuilt",
335
+ spec["package"], spec["version"], spec["revision"])
336
+
337
+ def fetch_symlinks(self, spec):
338
+ # When using CVMFS, we create the symlinks grass by reading the .
339
+ info("Fetching available build hashes for %s, from %s", spec["package"], self.remoteStore)
340
+ links_path = resolve_links_path(self.architecture, spec["package"])
341
+ os.makedirs(os.path.join(self.workdir, links_path), exist_ok=True)
342
+
343
+ cvmfs_architecture = re.sub(r"slc(\d+)_x86-64", r"el\1-x86_64", self.architecture)
344
+ err = execute("""\
345
+ set -x
346
+ # Exit without error in case we do not have any package published
347
+ test -d "{remote_store}/{cvmfs_architecture}/Packages/{package}" || exit 0
348
+ mkdir -p "{workDir}/{links_path}"
349
+ for install_path in $(find "{remote_store}/{cvmfs_architecture}/Packages/{package}" -type d -mindepth 1 -maxdepth 1); do
350
+ full_version="${{install_path##*/}}"
351
+ tarball={package}-$full_version.{architecture}.tar.gz
352
+ pkg_hash=$(cat "${{install_path}}/.build-hash" || jq -r '.package.hash' <${{install_path}}/.meta.json)
353
+ if [ "X$pkg_hash" = X ]; then
354
+ continue
355
+ fi
356
+ ln -sf ../../{architecture}/store/${{pkg_hash:0:2}}/$pkg_hash/$tarball "{workDir}/{links_path}/$tarball"
357
+ # Create the dummy tarball, if it does not exists
358
+ test -f "{workDir}/{architecture}/store/${{pkg_hash:0:2}}/$pkg_hash/$tarball" && continue
359
+ mkdir -p "{workDir}/INSTALLROOT/$pkg_hash/{architecture}/{package}"
360
+ ln -sf "{remote_store}/{cvmfs_architecture}/Packages/{package}/$full_version" "{workDir}/INSTALLROOT/$pkg_hash/{architecture}/{package}"
361
+ mkdir -p "{workDir}/TARS/{architecture}/store/${{pkg_hash:0:2}}/$pkg_hash"
362
+ tar -C "{workDir}/INSTALLROOT/$pkg_hash" -czf "{workDir}/TARS/{architecture}/store/${{pkg_hash:0:2}}/$pkg_hash/$tarball" .
363
+ rm -rf "{workDir}/INSTALLROOT/$pkg_hash"
364
+ done
365
+ """.format(
366
+ workDir=self.workdir,
367
+ b=self.remoteStore,
368
+ architecture=self.architecture,
369
+ cvmfs_architecture=cvmfs_architecture,
370
+ package=spec["package"],
371
+ remote_store=self.remoteStore,
372
+ links_path=links_path,
373
+ ))
374
+
375
+ def upload_symlinks_and_tarball(self, spec):
376
+ dieOnError(self.writeStore, "CVMFS backend does not support uploading directly")
307
377
 
308
378
  class S3RemoteSync:
309
379
  """Sync package build directory from and to S3 using s3cmd.
@@ -0,0 +1 @@
1
+ Read the documentation here: <http://alisw.github.io/alibuild/>
Binary file
@@ -1,5 +1,4 @@
1
1
  ---
2
- title: ALIBUILD
3
2
  subtile: About this tool
4
3
  layout: main
5
4
  ---
@@ -28,44 +27,47 @@ Then, build ALICE's software with:
28
27
  aliBuild build O2Physics
29
28
 
30
29
  For a more verbose documentation of what is happening have a look at
31
- the [quickstart guide](quick.html). See the [user guide](user.html)
30
+ the [quickstart guide](quick.md). See the [user guide](user.md)
32
31
  for more command line options or have a look at the [troubleshooting
33
- pages](troubleshooting.html) for hints on how to debug build errors.
34
- Have a look at the [reference guide](reference.html) if you want to
32
+ pages](troubleshooting.md) for hints on how to debug build errors.
33
+ Have a look at the [reference guide](reference.md) if you want to
35
34
  package your own software.
36
35
 
37
- <div class="pure-g">
38
- <div class="pure-u-1-3"><h3>Simple build recipes</h3>
36
+ <div style="display:grid;
37
+ grid-template-columns: repeat(3,1fr); /* 3 columns */
38
+ grid-template-rows: repeat(2,1fr); /* 2 rows */
39
+ grid-gap:50px 30px;
40
+
41
+ ">
42
+ <div><h2>Simple build recipes</h2>
39
43
  Build recipes are simple bash scripts with a YAML header. Whenever
40
44
  a dependency or a package changes only what is affected by the
41
45
  change is rebuilt.
42
46
  <br/><a href="reference.html">Read more</a>
43
47
  </div>
44
- <div class="pure-u-1-3"><h3>Reuses system tools</h3>
48
+ <div><h2>Reuses system tools</h2>
45
49
  If desired, aliBuild will do its best to reuse what is available
46
50
  on the system, if compatible to what is found in the recipe.
47
51
  <br/><a href="user.html#controlling-which-system-packages-are-picked-up">Read more</a>
48
52
  </div>
49
- <div class="pure-u-1-3"><h3>Docker support</h3>
53
+ <div><h2>Docker support</h2>
50
54
  aliBuild allows builds to happen inside a docker container, so
51
55
  that you can develop on Mac and build on your production Linux
52
56
  platform.
53
57
  <br/><a href="user.html#running-in-docker">Read more</a>
54
58
  </div>
55
- </div>
56
- <div class="pure-g">
57
- <div class="pure-u-1-3"><h3>Binary packages</h3>
59
+ <div><h2>Binary packages</h2>
58
60
  aliBuild provides the ability to reuse binary packages which were
59
61
  previously centrally built, when they match the one that would be
60
62
  built locally.
61
63
  <br/><a href="user.html#using-precompiled-packages">Read more</a>
62
64
  </div>
63
- <div class="pure-u-1-3"><h3>Developer mode</h3>
65
+ <div><h2>Developer mode</h2>
64
66
  Besides building and packaging your dependencies, aliBuild
65
67
  provides you the ability to develop those via a simple git clone.
66
68
  <br/><a href="user.html#developing-packages-locally">Read more</a>
67
69
  </div>
68
- <div class="pure-u-1-3"><h3>Integrates with modules</h3>
70
+ <div><h2>Integrates with modules</h2>
69
71
  Easily setup your work environment using `alienv`, which is based on
70
72
  standard <a href="http://modules.sourceforge.net">modulefiles</a>.
71
73
  <br/><a href="quick.html#loading-the-package-environment">Read more</a>
@@ -1,5 +1,4 @@
1
1
  ---
2
- title: ALIBUILD
3
2
  subtitle: Quick Start
4
3
  layout: main
5
4
  ---
@@ -7,7 +6,7 @@ layout: main
7
6
  aliBuild is a tool to simplify building and installing ALICE / ALFA
8
7
  software. This is a quickstart Guide which will show you how to build
9
8
  and use a package, for extended documentation please have a look at the
10
- [user guide](user.html).
9
+ [user guide](user.md).
11
10
 
12
11
  ## Setting up
13
12
 
@@ -71,7 +70,6 @@ For example, on Centos7:
71
70
  sw/slc7_x86-64/AliRoot/v6-16-01-1
72
71
 
73
72
  ## Using the built package
74
- {: #loading-the-package-environment}
75
73
 
76
74
  Environment for packages built using aliBuild is managed by [Environment
77
75
  Modules](http://modules.sourceforge.net) and a wrapper script called alienv.
@@ -88,4 +86,4 @@ to list the available packages, and:
88
86
  alienv enter VO_ALICE@PackageA::VersionA[,VO_ALICE@PackageB::VersionB...]
89
87
 
90
88
  to enter a shell with the appropriate environment set. To learn more about alienv you
91
- can also look at the [user guide](user.html#using-the-packages-you-have-built).
89
+ can also look at the [user guide](user.md#using-the-packages-you-have-built).
@@ -1,5 +1,4 @@
1
1
  ---
2
- title: ALIBUILD
3
2
  subtitle: Recipe reference manual
4
3
  layout: main
5
4
  ---
@@ -0,0 +1,7 @@
1
+ .md-header__button.md-logo img, .md-header__button.md-logo svg {
2
+ height: 1.5rem;
3
+ }
4
+
5
+ .md-header {
6
+ background-color: #111;
7
+ }
@@ -1,5 +1,4 @@
1
1
  ---
2
- title: ALIBUILD
3
2
  subtitle: Troubleshooting
4
3
  layout: main
5
4
  ---
@@ -223,7 +222,7 @@ or as a matter of fact any packages you have two options:
223
222
  and add the options there.
224
223
 
225
224
  Finally, for certain common options, e.g. debug flags, we provide a
226
- precooked configuration using so called [defaults](user.html#defaults).
225
+ precooked configuration using so called [defaults](user.md#defaults).
227
226
  Simply add `--defaults debug` to your aliBuild flags and it will add
228
227
  debug flags to all your packages.
229
228
 
@@ -331,3 +330,17 @@ git config --global credential.helper 'cache --timeout 3600'
331
330
  ```
332
331
 
333
332
  You can adjust the timeout (3600 seconds, above) to your liking, if you would prefer git to remember your passwords for longer.
333
+
334
+ #### I get an HTTP/2 related error
335
+
336
+ Some network provider do not support HTTP/2 apparently. If you get:
337
+
338
+ ```bash
339
+ error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8)
340
+ ```
341
+
342
+ or similar message, try to disable HTTP/2 with something like:
343
+
344
+ ```
345
+ git config --global http.version HTTP/1.1
346
+ ```
@@ -1,12 +1,11 @@
1
1
  ---
2
- title: ALIBUILD
3
2
  subtitle: User command line reference manual
4
3
  layout: main
5
4
  ---
6
5
 
7
6
  ## SYNOPSIS
8
7
 
9
- For a quick start introduction, please look [here](./quick.html).
8
+ For a quick start introduction, please look [here](quick.md).
10
9
 
11
10
  ```
12
11
  aliBuild build [-h] [--defaults DEFAULT]
@@ -243,7 +242,7 @@ validated for datataking and the choice will not change until the end of
243
242
  RUN2 of LHC. In order to change that and use, for example, a more recent
244
243
  version of ROOT you can use the `--default root6` option which will
245
244
  enable ROOT6 based builds. For a more complete description of how defaults
246
- works please look at [the reference manual](reference.html#defaults).
245
+ works please look at [the reference manual](reference.md#defaults).
247
246
 
248
247
  ## Disabling packages
249
248
 
@@ -0,0 +1,36 @@
1
+ site_name: "aliBuild: ALICE software builder"
2
+ repo_name: View source code
3
+ repo_url: https://github.com/alisw/alibuild
4
+
5
+ theme:
6
+ name: material
7
+ logo: alice_logo.png
8
+
9
+ extra_css: [stylesheets/extra.css]
10
+
11
+ use_directory_urls: false
12
+
13
+ nav:
14
+ - Home: index.md
15
+ - Quickstart: quick.md
16
+ - User manual: user.md
17
+ - Reference: reference.md
18
+ - Troubleshooting: troubleshooting.md
19
+ - ALICE/O2 tutorial: "https://alice-doc.github.io/alice-analysis-tutorial/building/"
20
+
21
+ markdown_extensions:
22
+ - pymdownx.highlight:
23
+ anchor_linenums: true
24
+ line_spans: __span
25
+ pygments_lang_class: true
26
+ - pymdownx.inlinehilite
27
+ - pymdownx.snippets
28
+ - pymdownx.superfences
29
+ - toc:
30
+ permalink: "#"
31
+
32
+ plugins:
33
+ - redirects:
34
+ redirect_maps:
35
+ 'o2-tutorial.html': 'https://alice-doc.github.io/alice-analysis-tutorial/building/'
36
+ 'tutorial.html': 'https://alice-doc.github.io/alice-analysis-tutorial/building/'
@@ -58,7 +58,7 @@ setup(
58
58
  'Programming Language :: Python :: 3.10', # ubuntu2204
59
59
  'Programming Language :: Python :: 3.11', # MacOS
60
60
  'Programming Language :: Python :: 3.12', # MacOS
61
- ],
61
+ ] + ['packaging<=23'] if sys.version_info <(3, 7) else [],
62
62
 
63
63
  # What does your project relate to?
64
64
  keywords='HEP ALICE',
@@ -1 +0,0 @@
1
- Documentation migrated to <http://alisw.github.io/alibuild/>
@@ -1,27 +0,0 @@
1
- highlighter: rouge
2
- baseurl: /alibuild
3
- menu_header: ALIBUILD
4
- menu:
5
- -
6
- name: quick.html
7
- label: QUICKSTART
8
- -
9
- name: user.html
10
- label: USER MANUAL
11
- -
12
- name: reference.html
13
- label: REFERENCE
14
- -
15
- name: troubleshooting.html
16
- label: TROUBLESHOOTING
17
- -
18
- name: https://alice-doc.github.io/alice-analysis-tutorial/building/
19
- label: ALICE TUTORIAL
20
- defaults:
21
- -
22
- scope:
23
- path: "basic/"
24
- type: "posts"
25
- values:
26
- category: "basic"
27
- layout: "main"
@@ -1,9 +0,0 @@
1
- [Exercise material for this section](https://github.com/infn-esc/esc15/exercises/{{ page.section }}).
2
-
3
- {% for toplevel in site.menu %}
4
- {% if toplevel.name == page.section %}
5
- {% for item in toplevel.items %}
6
- - <a href="{{site.baseurl}}/{{page.section}}/{{item.name}}.html">{{ item.label }}</a>
7
- {% endfor %}
8
- {% endif %}
9
- {% endfor %}
@@ -1,57 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
-
7
- <link rel="stylesheet" href="{{site.baseurl}}/css/bootstrap.min.css">
8
- <link rel="stylesheet" href="{{site.baseurl}}/css/bootstrap-theme.min.css">
9
- <link rel="stylesheet" href="{{site.baseurl}}/css/pure-min.css">
10
- <link rel="stylesheet" href="{{site.baseurl}}/side-menu.css">
11
- <link rel="stylesheet" href="{{site.baseurl}}/syntax.css">
12
- <link rel="stylesheet" href="{{site.baseurl}}/main.css">
13
- <script src="{{site.baseurl}}/js/highlight.pack.js"></script>
14
- <script>hljs.initHighlightingOnLoad();</script>
15
-
16
- </head>
17
- <body>
18
- <div id="layout">
19
- <a href="#menu" id="menuLink" class="menu-link">
20
- <!-- Hamburger icon -->
21
- <span></span>
22
- </a>
23
- <div id="menu">
24
- <div class="pure-menu custom-restricted-width custom-restricted-height">
25
- <a class="pure-menu-heading pure-menu-link" href="{{site.baseurl}}/">{{site.menu_header}}</a>
26
- <ul class="pure-menu-list">
27
- {% for cat in site.menu %}
28
- <li class="pure-menu-item menu-item-section menu-item-devided">
29
- {% assign proto = cat.name|slice: 0,4 %}
30
- {% if proto == "http" %}
31
- <a href="{{cat.name}}" class="pure-menu-link">{{ cat.label }}</a>
32
- {% else %}
33
- <a href="{{site.baseurl}}/{{cat.name}}" class="pure-menu-link">{{ cat.label }}</a>
34
- {% endif %}
35
- </li>
36
- {% for sub in cat.items %}
37
- <li>
38
- <a href="{{site.baseurl}}/{{cat.name}}/{{sub.name}}.html" class="pure-menu-link">{{ sub.label }}</a>
39
- </li>
40
- {% endfor %}
41
- {% endfor %}
42
- </ul>
43
- </div>
44
- </div>
45
- <div id="main">
46
- <div class="header">
47
- <h1>{{page.title}}</h1>
48
- <h2>{{page.subtitle}}</h2>
49
- </div>
50
- <div class="content">
51
- {{content}}
52
- </div>
53
- </div>
54
- </div>
55
- <script src="{{site.baseurl}}/ui.js"></script>
56
- </body>
57
- </html>
@@ -1,7 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5
- <meta http-equiv="refresh" content="0;url={{ page.dest_url }}" />
6
- </head>
7
- </html>