alibuild 1.17.19__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.
Files changed (74) hide show
  1. alibuild-1.17.19.data/scripts/aliBuild +137 -0
  2. alibuild-1.17.19.data/scripts/aliDeps +7 -0
  3. alibuild-1.17.19.data/scripts/aliDoctor +7 -0
  4. alibuild-1.17.19.data/scripts/alienv +344 -0
  5. alibuild-1.17.19.data/scripts/pb +7 -0
  6. alibuild-1.17.19.dist-info/METADATA +78 -0
  7. alibuild-1.17.19.dist-info/RECORD +74 -0
  8. alibuild-1.17.19.dist-info/WHEEL +5 -0
  9. alibuild-1.17.19.dist-info/licenses/LICENSE.md +674 -0
  10. alibuild-1.17.19.dist-info/top_level.txt +5 -0
  11. alibuild_helpers/__init__.py +21 -0
  12. alibuild_helpers/_version.py +21 -0
  13. alibuild_helpers/analytics.py +120 -0
  14. alibuild_helpers/args.py +493 -0
  15. alibuild_helpers/build.py +1209 -0
  16. alibuild_helpers/build_template.sh +314 -0
  17. alibuild_helpers/clean.py +83 -0
  18. alibuild_helpers/cmd.py +154 -0
  19. alibuild_helpers/deps.py +116 -0
  20. alibuild_helpers/doctor.py +195 -0
  21. alibuild_helpers/git.py +104 -0
  22. alibuild_helpers/init.py +103 -0
  23. alibuild_helpers/log.py +132 -0
  24. alibuild_helpers/scm.py +31 -0
  25. alibuild_helpers/sl.py +62 -0
  26. alibuild_helpers/sync.py +693 -0
  27. alibuild_helpers/templating_plugin.py +18 -0
  28. alibuild_helpers/utilities.py +662 -0
  29. alibuild_helpers/workarea.py +179 -0
  30. debian/changelog +11 -0
  31. debian/compat +1 -0
  32. debian/control +14 -0
  33. debian/copyright +10 -0
  34. debian/files +1 -0
  35. debian/rules +7 -0
  36. docs/README.md +1 -0
  37. docs/SUPPORT +3 -0
  38. docs/docs/alice_logo.png +0 -0
  39. docs/docs/deps.png +0 -0
  40. docs/docs/index.md +75 -0
  41. docs/docs/quick.md +89 -0
  42. docs/docs/reference.md +430 -0
  43. docs/docs/stylesheets/extra.css +9 -0
  44. docs/docs/troubleshooting.md +346 -0
  45. docs/docs/user.md +413 -0
  46. docs/mkdocs.yml +37 -0
  47. templates/alibuild_to_please.jnj +63 -0
  48. tests/test_analytics.py +42 -0
  49. tests/test_args.py +119 -0
  50. tests/test_build.py +426 -0
  51. tests/test_clean.py +154 -0
  52. tests/test_cmd.py +73 -0
  53. tests/test_deps.py +79 -0
  54. tests/test_doctor.py +128 -0
  55. tests/test_git.py +48 -0
  56. tests/test_hashing.py +67 -0
  57. tests/test_init.py +103 -0
  58. tests/test_log.py +50 -0
  59. tests/test_packagelist.py +235 -0
  60. tests/test_parseRecipe.py +132 -0
  61. tests/test_sync.py +332 -0
  62. tests/test_utilities.py +383 -0
  63. tests/test_workarea.py +101 -0
  64. tests/testdist/broken1.sh +1 -0
  65. tests/testdist/broken2.sh +1 -0
  66. tests/testdist/broken3.sh +3 -0
  67. tests/testdist/broken4.sh +2 -0
  68. tests/testdist/broken5.sh +2 -0
  69. tests/testdist/broken6.sh +2 -0
  70. tests/testdist/broken7.sh +5 -0
  71. tests/testdist/clobber-initdotsh.sh +4 -0
  72. tests/testdist/defaults-o2.sh +10 -0
  73. tests/testdist/delete-etc.sh +4 -0
  74. tests/testdist/tracking-env.sh +6 -0
@@ -0,0 +1,137 @@
1
+ #!python
2
+ import os
3
+ import sys
4
+ import atexit
5
+ import logging
6
+ import traceback
7
+
8
+ from os.path import exists, expanduser
9
+ from alibuild_helpers import __version__
10
+ from alibuild_helpers.analytics import decideAnalytics, askForAnalytics, report_screenview, report_exception, report_event
11
+ from alibuild_helpers.analytics import enable_analytics, disable_analytics
12
+ from alibuild_helpers.args import doParseArgs
13
+ from alibuild_helpers.init import doInit
14
+ from alibuild_helpers.clean import doClean
15
+ from alibuild_helpers.doctor import doDoctor
16
+ from alibuild_helpers.deps import doDeps
17
+ from alibuild_helpers.log import info, debug, logger, error
18
+ from alibuild_helpers.utilities import detectArch
19
+ from alibuild_helpers.build import doBuild
20
+
21
+
22
+ def doMain(args, parser):
23
+ # We need to unset BASH_ENV because in certain environments (e.g.
24
+ # NERSC) this is used to source a (non -e safe) bashrc, effectively
25
+ # breaking aliBuild.
26
+ # We set all the locale related environment to C to make sure
27
+ # do not get fooled when parsing localized messages.
28
+ # We set ALIBUILD_ARCHITECTURE so that it's picked up by the external
29
+ # command which does the reporting.
30
+ if not "architecture" in args:
31
+ args.architecture = detectArch()
32
+ ENVIRONMENT_OVERRIDES = {
33
+ "LANG": "C",
34
+ "LANGUAGE": "C",
35
+ "LC_ALL": "C",
36
+ "LC_COLLATE": "C",
37
+ "LC_CTYPE": "C",
38
+ "LC_MESSAGES": "C",
39
+ "LC_MONETARY": "C",
40
+ "LC_NUMERIC": "C",
41
+ "LC_TIME": "C",
42
+ "GREP_OPTIONS": "",
43
+ "BASH_ENV": "",
44
+ "ALIBUILD_ARCHITECTURE": args.architecture
45
+ }
46
+ os.environ.update(ENVIRONMENT_OVERRIDES)
47
+ report_screenview(args.action)
48
+
49
+ # Move to the specified working directory before doing anything else
50
+ if "chdir" in args:
51
+ try:
52
+ os.chdir(os.path.expanduser(args.chdir))
53
+ debug("Current working directory is %s" % os.getcwd())
54
+ except Exception as e:
55
+ error("Cannot change to directory \"%s\"." % args.chdir)
56
+ error(e.message)
57
+ exit(1)
58
+
59
+ if args.action == "version" or args.action is None:
60
+ print("aliBuild version: {version} ({arch})".format(
61
+ version=__version__ or "unknown", arch=args.architecture or "unknown"))
62
+ sys.exit(0)
63
+
64
+ if args.action == "doctor":
65
+ doDoctor(args, parser)
66
+
67
+ logger.setLevel(logging.DEBUG if args.debug else logging.INFO)
68
+
69
+ if args.action == "deps":
70
+ sys.exit(0 if doDeps(args, parser) else 1)
71
+
72
+ if args.action == "clean":
73
+ doClean(workDir=args.workDir, architecture=args.architecture, aggressiveCleanup=args.aggressiveCleanup, dryRun=args.dryRun)
74
+ exit(0)
75
+
76
+ # Setup build environment.
77
+ if args.action == "init":
78
+ doInit(args)
79
+ exit(0)
80
+
81
+ if args.action == "build":
82
+ doBuild(args, parser)
83
+ sys.exit(0)
84
+
85
+
86
+ if __name__ == "__main__":
87
+ args, parser = doParseArgs()
88
+
89
+ # This is valid for everything
90
+ logger.setLevel(logging.DEBUG if args.debug else logging.INFO)
91
+
92
+ os.environ["ALIBUILD_ANALYTICS_ID"] = "UA-77346950-1"
93
+ os.environ["ALIBUILD_VERSION"] = __version__ or ""
94
+ if args.action == "analytics":
95
+ if args.state == "off":
96
+ disable_analytics()
97
+ else:
98
+ enable_analytics()
99
+ exit(0)
100
+ elif args.action == "architecture":
101
+ arch = detectArch()
102
+ print(arch if arch else "<unknown>")
103
+ exit(0)
104
+
105
+ if not decideAnalytics(exists(expanduser("~/.config/alibuild/disable-analytics")),
106
+ exists(expanduser("~/.config/alibuild/analytics-uuid")),
107
+ sys.stdin.isatty(),
108
+ askForAnalytics):
109
+ os.environ["ALIBUILD_NO_ANALYTICS"] = "1"
110
+ else:
111
+ os.environ["ALIBUILD_ANALYTICS_USER_UUID"] = open(expanduser("~/.config/alibuild/analytics-uuid")).read().strip()
112
+ try:
113
+ useProfiler = "--profile" in sys.argv
114
+ if useProfiler:
115
+ print("profiler started")
116
+ import cProfile, pstats
117
+ from io import StringIO
118
+ pr = cProfile.Profile()
119
+ pr.enable()
120
+ def profiler():
121
+ pr.disable()
122
+ print("profiler stopped")
123
+ s = StringIO()
124
+ sortby = 'time'
125
+ ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
126
+ ps.print_stats()
127
+ print(s.getvalue())
128
+ atexit.register(profiler)
129
+ doMain(args, parser)
130
+ except KeyboardInterrupt as e:
131
+ info(str(e))
132
+ report_event("user", "ctrlc")
133
+ exit(1)
134
+ except Exception as e:
135
+ traceback.print_exc()
136
+ report_exception(e)
137
+ exit(1)
@@ -0,0 +1,7 @@
1
+ #!python
2
+ import sys
3
+ import os
4
+ from os.path import dirname, join, abspath
5
+ if __name__ == "__main__":
6
+ aliBuild = join(dirname(abspath(sys.argv[0])), "aliBuild")
7
+ os.execv(aliBuild, [ aliBuild, "deps" ] + sys.argv[1:])
@@ -0,0 +1,7 @@
1
+ #!python
2
+ import sys
3
+ import os
4
+ from os.path import dirname, join, abspath
5
+ if __name__ == "__main__":
6
+ aliBuild = join(dirname(abspath(sys.argv[0])), "aliBuild")
7
+ os.execv(aliBuild, [ aliBuild, "doctor" ] + sys.argv[1:])
@@ -0,0 +1,344 @@
1
+ #!/bin/bash -e
2
+
3
+ # Load and test Modulefiles created by recipes.
4
+ PROG=$(basename "$0")
5
+
6
+ # If we are on a TTY, enable colors
7
+ if test -t 1; then
8
+ EM=`printf '\033[35m'` # magenta
9
+ ET=`printf '\033[36m'` # cyan
10
+ ER=`printf '\033[31m'` # red
11
+ EY=`printf '\033[33m'` # yellow
12
+ EZ=`printf '\033[m'` # reset
13
+ else
14
+ EM=
15
+ ET=
16
+ ER=
17
+ EY=
18
+ EZ=
19
+ fi
20
+
21
+ # My operating system
22
+ UNAME=$(uname)
23
+
24
+ function printHelp() {
25
+ cat >&2 <<EoF
26
+ $PROG -- load environment for aliBuild packages through modulefiles
27
+
28
+ Usage: $0 \\
29
+ [--architecture|-a ${ET}ARCHITECTURE${EZ}] \\
30
+ [--work-dir|-w ${ET}WORKDIR${EZ}] \\
31
+ [--no-refresh] \\
32
+ ${ET}COMMAND...${EZ}
33
+
34
+ ${EM}--no-refresh${EZ} skips refreshing the modules directory.
35
+
36
+ ${ET}WORKDIR${EZ} defaults to sw.
37
+ ${ET}ARCHITECTURE${EZ} is automatically detected in most cases.
38
+
39
+ ${ET}COMMAND...${EZ} might be:
40
+
41
+ ${EM}help${EZ}
42
+ This help screen.
43
+
44
+ ${EM}enter${EZ} [${ET}--shellrc${EZ}] [${ET}--dev${EZ}] MODULE1[,MODULE2...]
45
+ Enters a new shell with the given modules loaded.
46
+ Return to the clean environment by exiting the shell with ${ET}exit${EZ}.
47
+ Inside the environment you can use the native ${ET}modulecmd${EZ}.
48
+ By default you enter the same shell type you are in. Override with environment variable ${ET}MODULES_SHELL${EZ}.
49
+ The new shell will not load your shell startup file by default (e.g. ~/.bashrc) to avoid environment conflicts.
50
+ If you want to retain your shell startup files use ${ET}--shellrc${EZ}.
51
+ If you want to add environment variables for development use ${ET}--dev${EZ}
52
+ Alternatively you can use the ${EM}load${EZ} command in the current shell.
53
+
54
+ ${EM}setenv${EZ} MODULE1[,MODULE2...] ${ET}-c${EZ} cmdInEnvironment [PARAM1 [PARAM2...]]
55
+ Executes the given command with environment defined by the given modules.
56
+ Everything after ${ET}-c${EZ} is executed as-is.
57
+ Exit code is preserved.
58
+ Example: $ET$0 setenv AliRoot/v5-08-02-1 -c aliroot -b$EZ
59
+
60
+ ${EM}printenv${EZ} or ${EM}load${EZ} [${ET}-q${EZ}] MODULE1[,MODULE2...]
61
+ Prints the environment in the current shell for the given modules (${ET}-q${EZ} for quiet).
62
+ This command does not set any environment and it must be executed through ${ET}eval${EZ} to be effective.
63
+ Override shell with the environment variable ${ET}MODULES_SHELL${EZ}.
64
+ Example: ${ET}eval \`$0 load AliRoot/latest\`$EZ (those are backquotes!)
65
+
66
+ ${EM}unload${EZ} [${ET}-q${EZ}] MODULE1[,MODULE2...]
67
+ Prints the environment in the current shell for unloading the given modules (${ET}-q${EZ} for quiet).
68
+ This command does not set any environment and it must be executed through ${ET}eval${EZ} to be effective.
69
+ Override shell with the environment variable ${ET}MODULES_SHELL${EZ}.
70
+ Example: ${ET}eval \`$0 unload AliRoot\`$EZ (version can be omitted)
71
+
72
+ ${EM}q${EZ} or ${EM}query${EZ} [REGEXP]
73
+ List all available modules, or the ones matching ${ET}REGEXP${EZ} if provided.
74
+
75
+ ${EM}list${EZ}
76
+ List loaded modules.
77
+
78
+ ${EM}modulecmd${EZ} [PARAM1 [PARAM2...]]]
79
+ Pass all arguments as-is to the ${ET}modulecmd${EZ} command.
80
+ Example: print AliRoot env for zsh: $ET$0 modulecmd zsh load AliRoot/v5-08-02-1$EZ
81
+ Consult ${ET}man modulecmd${EZ} for more information.
82
+
83
+ ${EM}shell-helper${EZ}
84
+ Returns a script to be ${ET}eval${EZ}d in your shell rc file to allow easier loading/unloading.
85
+ In your shell rc put:
86
+ ${ET}ALIBUILD_WORK_DIR=<path_to_alibuild_sw_dir>${EZ}
87
+ ${ET}eval "\`alienv shell-helper\`"${EZ}
88
+
89
+ EoF
90
+ [[ -z "$1" ]] || printf "${ER}ERROR: $*${EZ}\n" >&2
91
+ }
92
+
93
+ function installHint() {
94
+ if [[ $UNAME == Darwin ]]; then
95
+ CMD='brew install modules'
96
+ elif command -v apt-get > /dev/null 2>&1; then
97
+ CMD='apt-get install environment-modules'
98
+ elif command -v yum > /dev/null 2>&1; then
99
+ CMD='yum install environment-modules'
100
+ fi
101
+ printf "${ER}ERROR: Environment Modules was not found on your system.\n" >&2
102
+ if [[ -z "$CMD" ]]; then
103
+ printf " The package is usually called ${EM}environment-modules${ER}.\n" >&2
104
+ else
105
+ printf " Get it with: ${EM}${CMD}\n" >&2
106
+ fi
107
+ printf "${EZ}"
108
+ }
109
+
110
+ function detectShell() {
111
+ # Detect parent shell (fall back to bash)
112
+ [[ -z "$MODULES_SHELL" ]] && MODULES_SHELL=$(ps -e -o pid,command | grep -E "^\s*$PPID\s+" | awk '{print $2}' | sed -e 's/^-\{0,1\}\(.*\)$/\1/')
113
+ case "$MODULES_SHELL" in
114
+ sh) ;;
115
+ csh|tcsh) SHELL_NORC_PARAM=-f ;;
116
+ ksh) SHELL_NORC_ENV="ENV=/dev/null" ;;
117
+ zsh) SHELL_NORC_PARAM=--no-rcs ;;
118
+ *) MODULES_SHELL=bash
119
+ SHELL_NORC_PARAM=--norc ;;
120
+ esac
121
+ }
122
+
123
+ function collectModules() {
124
+ if [[ -z "$NO_REFRESH" ]]; then
125
+ # Collect all modulefiles in one place
126
+ rm -rf $WORK_DIR/MODULES/$ARCHITECTURE
127
+ mkdir -p $WORK_DIR/MODULES/$ARCHITECTURE/BASE
128
+ cat > $WORK_DIR/MODULES/$ARCHITECTURE/BASE/1.0 <<EOF
129
+ #%Module1.0
130
+ set base_path $WORK_DIR/$ARCHITECTURE
131
+ setenv BASEDIR \$base_path
132
+ set osname [uname sysname]
133
+ set osarchitecture [uname machine]
134
+ EOF
135
+ while read PKG; do
136
+ PKGVER=${PKG##*/}
137
+ PKGNAME=${PKG%/*}
138
+ PKGNAME=${PKGNAME##*/}
139
+ [[ ! -e "$PKG/etc/modulefiles/$PKGNAME" ]] && continue
140
+ mkdir -p "$WORK_DIR/MODULES/$ARCHITECTURE/$PKGNAME"
141
+ cp "$PKG/etc/modulefiles/$PKGNAME" "$WORK_DIR/MODULES/$ARCHITECTURE/$PKGNAME/$PKGVER"
142
+ done < <(find $WORK_DIR/$ARCHITECTURE -maxdepth 2 -mindepth 2 2> /dev/null)
143
+ else
144
+ printf "${EY}WARNING: not updating modulefiles${EZ}\n" >&2
145
+ fi
146
+ }
147
+
148
+ function normModules() {
149
+ echo "$@" | sed -e 's/,/ /g; s/VO_ALICE@//g; s!::!/!g'
150
+ }
151
+
152
+ function existModules() {
153
+ local MODULE
154
+ for MODULE in "$@"; do
155
+ $MODULECMD bash -t avail 2>&1 | grep -qFx "$MODULE" || \
156
+ { printf "${ER}ERROR: $MODULE was not found${EZ}\n" >&2; return 1; }
157
+ done
158
+ }
159
+
160
+ function stripDyld() {
161
+ TO_STRIP=$( (typeset | grep ^DYLD | cut -d= -f1 | grep '_modshare$' | xargs echo ) 2> /dev/null )
162
+ [ ! "X$TO_STRIP" = X ] && echo unset $TO_STRIP && echo ';'
163
+ }
164
+
165
+ ARCHITECTURE=
166
+ WORK_DIR=
167
+ NO_REFRESH=
168
+ DEFAULT_WORK_DIRS=("$ALIBUILD_WORK_DIR" "$ALICE_WORK_DIR" ${ALIBUILD_CHDIR:+"$ALIBUILD_CHDIR/sw"} sw ../sw)
169
+ ARGS=()
170
+ COMMAND_IN_ENV=()
171
+ CLEAN_ENV=1
172
+ DEVOPT=0
173
+ VERBOSE=1
174
+
175
+ while [[ $# -gt 0 ]]; do
176
+ case "$1" in
177
+ --architecture|-a) ARCHITECTURE="$2"; shift 2 ;;
178
+ --work-dir|-w) WORK_DIR="$2"; shift 2 ;;
179
+ --no-refresh) NO_REFRESH=1; shift ;;
180
+ -q) unset VERBOSE; shift ;;
181
+ --shellrc) unset CLEAN_ENV; shift ;;
182
+ --dev) DEVOPT=1; shift ;;
183
+ --help|help) printHelp; exit 0 ;;
184
+ -c) shift; COMMAND_IN_ENV=("$@"); break ;;
185
+ *) ARGS+=("$1"); shift ;;
186
+ esac
187
+ done
188
+
189
+ ACTION="${ARGS[0]}"
190
+ ARGS=("${ARGS[@]:1}")
191
+ export ALIENVLVL=$((ALIENVLVL+1))
192
+
193
+ if [[ "$ACTION" == "shell-helper" ]]; then
194
+ cat <<\EOF
195
+ # Source this file from your .bashrc, .zshrc or .kshrc.
196
+ ALIBUILD_ALIENV__="$ALIBUILD_ALIENV"
197
+ if test -z "$ALIBUILD_ALIENV__"; then
198
+ ALIBUILD_ALIENV__=`unset alienv; export LC_ALL=C; export LANG=C; type -p alienv | sed -e 's/^alienv is //g' 2> /dev/null`
199
+ fi
200
+ alienv() {
201
+ if test -z "$ALIBUILD_ALIENV__"; then
202
+ echo "alienv not found"
203
+ return 1
204
+ fi
205
+ for A in "$@"; do
206
+ if ! test `echo "$A" | cut -b1` = -; then
207
+ if test "$A" = load || test "$A" = unload; then
208
+ unset A
209
+ eval `"$ALIBUILD_ALIENV__" "$@"`
210
+ return $?
211
+ else
212
+ break
213
+ fi
214
+ elif test "$A" = -c; then
215
+ break
216
+ fi
217
+ done
218
+ unset A
219
+ "$ALIBUILD_ALIENV__" "$@"
220
+ }
221
+ EOF
222
+ exit 0
223
+ fi
224
+
225
+ if [[ -z "$WORK_DIR" ]]; then
226
+ for WORK_DIR in "${DEFAULT_WORK_DIRS[@]}"; do
227
+ [[ -d "$WORK_DIR" ]] && break || WORK_DIR=
228
+ done
229
+ [[ -z "$WORK_DIR" ]] && { printHelp "No default work dir can be accessed:" \
230
+ "export \$ALIBUILD_WORK_DIR or run alienv from a directory" \
231
+ "containing the \"sw\" dir"; false; }
232
+ fi
233
+ [[ ! -d "$WORK_DIR" ]] && { printHelp "Work dir $WORK_DIR cannot be accessed"; false; }
234
+ WORK_DIR=$(cd "$WORK_DIR"; pwd)
235
+ [[ -z "$ARCHITECTURE" ]] && ARCHITECTURE="$("aliBuild" architecture 2> /dev/null || true)"
236
+ [[ -z "$ARCHITECTURE" ]] && ARCHITECTURE="$("$(dirname "$0")/aliBuild" architecture 2> /dev/null || true)"
237
+ [[ -z "$ARCHITECTURE" || "$ARCHITECTURE" == "<unknown>" ]] && ARCHITECTURE=$(ls -1t $WORK_DIR | grep -vE '^[A-Z]+$' | head -n1)
238
+ [[ -z "$ARCHITECTURE" ]] && { printHelp "Cannot autodetect architecture"; false; }
239
+
240
+ # Look for modulecmd (v3) or modulecmd-compat (>= v4)
241
+ MODULECMD=$(command -v modulecmd 2> /dev/null || true)
242
+ [[ -x "$MODULECMD" ]] || MODULECMD="$(dirname $(command -v envml 2> /dev/null || true) 2> /dev/null || true)/../libexec/modulecmd-compat"
243
+ [[ -x "$MODULECMD" ]] || MODULECMD="$(brew --prefix modules 2> /dev/null || true)/libexec/modulecmd-compat"
244
+ [[ -x "$MODULECMD" ]] || { installHint; false; }
245
+
246
+ if [[ -d $WORK_DIR/MODULES/$ARCHITECTURE ]]; then
247
+ touch $WORK_DIR/MODULES/$ARCHITECTURE/.testwrite 2> /dev/null || NO_REFRESH=1
248
+ rm -f $WORK_DIR/MODULES/$ARCHITECTURE/.testwrite 2> /dev/null || true
249
+ fi
250
+
251
+ export MODULEPATH="$WORK_DIR/MODULES/$ARCHITECTURE${MODULEPATH:+":$MODULEPATH"}"
252
+ MODULEPATH=$(echo "$MODULEPATH" | sed -e 's/::*/:/g; s/^://; s/:$//')
253
+ IGNORE_ERR="Unable to locate a modulefile for 'Toolchain/"
254
+ case "$ACTION" in
255
+ enter)
256
+ [[ $ALIENVLVL == 1 ]] || \
257
+ { printf "${ER}ERROR: already in an alienv environment${EZ}\n" >&2; exit 1; }
258
+ MODULES=$(normModules "${ARGS[@]}")
259
+ collectModules
260
+ existModules $MODULES
261
+ PS1DEV=
262
+ if [[ $DEVOPT == 1 ]];then
263
+ PS1DEV=" (dev)"
264
+ for MODULE in $MODULES; do
265
+ . "$WORK_DIR/$ARCHITECTURE/$MODULE/etc/profile.d/init.sh"
266
+ done
267
+ else
268
+ eval $($MODULECMD bash add $MODULES 2> >(grep -v "$IGNORE_ERR" >&2))
269
+ fi
270
+ [[ $UNAME == Darwin ]] && eval $(stripDyld)
271
+ detectShell
272
+ if [[ ! -z "$CLEAN_ENV" ]]; then
273
+ case $MODULES_SHELL in
274
+ sh|bash) export PS1="[$MODULES]$PS1DEV"' \w $> ' ;;
275
+ ksh) export PS1="[$MODULES]$PS1DEV"' $PWD $> ' ;;
276
+ zsh) export PS1="[$MODULES]$PS1DEV"' %~ %#> ' ;;
277
+ esac
278
+ fi
279
+ $MODULECMD bash list
280
+ if [[ $DEVOPT == 1 ]];then
281
+ echo "*** Development env loaded for '$MODULES' ***" >&2
282
+ else
283
+ printf "${ET}Use ${EM}alienv list${ET} to list loaded modules. " >&2
284
+ fi
285
+ printf "Use ${EM}exit${ET} to exit this environment.${EZ}\n" >&2
286
+ exec ${CLEAN_ENV:+env $SHELL_NORC_ENV} $MODULES_SHELL ${CLEAN_ENV:+$SHELL_NORC_PARAM} -i
287
+ ;;
288
+ printenv|load|unload)
289
+ [[ $ACTION == printenv ]] && ACTION=load
290
+ MODULES=$(normModules "${ARGS[@]}")
291
+ [[ $ACTION == load ]] && { collectModules; existModules $MODULES; }
292
+ [[ $VERBOSE == 1 ]] && printf "${ET}Use ${EM}alienv list${ET} to list loaded modules.${EZ}\n" >&2
293
+ if [[ $DEVOPT == 1 ]];then
294
+ echo "Warning: Development mode for '$ACTION' is not supported via alienv. Please remove '--dev' or run manually shown below" >&2
295
+ echo "*** Please run following commands manually to load dev environment for '$MODULES' ***" >&2
296
+ echo "" >&2
297
+ echo "export WORK_DIR=$WORK_DIR" >&2
298
+ for MODULE in $MODULES; do
299
+ echo ". $WORK_DIR/$ARCHITECTURE/$MODULE/etc/profile.d/init.sh" >&2
300
+ done
301
+ echo "" >&2
302
+ exit 0
303
+ fi
304
+ detectShell
305
+ $MODULECMD $MODULES_SHELL $ACTION $MODULES 2> >(grep -v "$IGNORE_ERR" >&2)
306
+ [[ $UNAME == Darwin ]] && ( eval $($MODULECMD $MODULES_SHELL $ACTION $MODULES 2> /dev/null) &> /dev/null; stripDyld )
307
+ exit 0
308
+ ;;
309
+ setenv)
310
+ [[ $DEVOPT == 1 ]] && echo "Warning: Development mode for '$ACTION' is not supported. Please remove '--dev'" >&2
311
+ [[ -z "${COMMAND_IN_ENV[*]}" ]] && { printHelp "No command specified with -c"; false; }
312
+ MODULES=$(normModules "${ARGS[@]}")
313
+ collectModules
314
+ existModules $MODULES
315
+ eval $($MODULECMD bash add $MODULES 2> >(grep -v "$IGNORE_ERR" >&2))
316
+ [[ $UNAME == Darwin ]] && eval $(stripDyld)
317
+ exec "${COMMAND_IN_ENV[@]}"
318
+ ;;
319
+ q|query)
320
+ [[ -z "${ARGS[0]}" ]] && SEARCH_CMD=cat || SEARCH_CMD=( grep -iE "${ARGS[0]}" )
321
+ collectModules
322
+ $MODULECMD bash -t avail 2>&1 | grep -E '^[^/]+/[^/]+$' | grep -vE ':$' | \
323
+ "${SEARCH_CMD[@]}" | sed -e 's!^\([^/]*\)/\(.*\)$!VO_ALICE@\1::\2!'
324
+ exit ${PIPESTATUS[3]} # grep
325
+ ;;
326
+ avail)
327
+ collectModules
328
+ exec $MODULECMD bash avail
329
+ ;;
330
+ list)
331
+ exec $MODULECMD bash list
332
+ ;;
333
+ modulecmd)
334
+ collectModules
335
+ exec $MODULECMD "${ARGS[@]}"
336
+ ;;
337
+ '')
338
+ printHelp "What do you want to do?"
339
+ ;;
340
+ *)
341
+ printHelp "Unknown command: $1"
342
+ ;;
343
+ esac
344
+ false
@@ -0,0 +1,7 @@
1
+ #!python
2
+ import sys
3
+ import os
4
+ from os.path import dirname, join, abspath
5
+ if __name__ == "__main__":
6
+ aliBuild = join(dirname(abspath(sys.argv[0])), "aliBuild")
7
+ os.execv(aliBuild, [ aliBuild ] + sys.argv[1:])
@@ -0,0 +1,78 @@
1
+ Metadata-Version: 2.4
2
+ Name: alibuild
3
+ Version: 1.17.19
4
+ Summary: ALICE Build Tool
5
+ Author-email: Giulio Eulisse <giulio.eulisse@cern.ch>, Timo Wilken <timo.wilken@cern.ch>, Sergio Garcia <sergio.garcia@cern.ch>
6
+ Project-URL: homepage, https://alisw.github.io/alibuild
7
+ Keywords: HEP,ALICE
8
+ Classifier: Development Status :: 5 - Production/Stable
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Topic :: Software Development :: Build Tools
11
+ Requires-Python: >=3.6
12
+ Description-Content-Type: text/x-rst
13
+ License-File: LICENSE.md
14
+ Requires-Dist: pyyaml
15
+ Requires-Dist: requests
16
+ Requires-Dist: distro
17
+ Requires-Dist: jinja2
18
+ Requires-Dist: boto3<1.36.0
19
+ Provides-Extra: test
20
+ Requires-Dist: tox; extra == "test"
21
+ Provides-Extra: docs
22
+ Requires-Dist: mkdocs; extra == "docs"
23
+ Requires-Dist: mkdocs-material; extra == "docs"
24
+ Requires-Dist: mkdocs-redirects; extra == "docs"
25
+ Dynamic: license-file
26
+
27
+ .. image:: https://badge.fury.io/py/alibuild.svg
28
+ .. image:: https://github.com/alisw/alibuild/actions/workflows/pr-check.yml/badge.svg?branch=master&event=push
29
+
30
+ aliBuild
31
+ ========
32
+
33
+ A simple build tool for ALICE experiment software and its externals. Recipes
34
+ for the externals and ALICE software are stored in
35
+ `alidist <https://github.com/alisw/alidist>`_.
36
+
37
+ Instant gratification with::
38
+
39
+ pip install alibuild
40
+ aliBuild init
41
+ aliBuild build AliRoot
42
+ alienv enter AliRoot/latest
43
+ aliroot -b
44
+
45
+ Full documentation at:
46
+
47
+ https://alisw.github.io/alibuild
48
+
49
+ Pre-requisites
50
+ ==============
51
+
52
+ If you are using aliBuild directly from git clone, you should make sure
53
+ you have the dependencies installed. The easiest way to do this is to run::
54
+
55
+ pip install -e .
56
+
57
+
58
+ For developers
59
+ ==============
60
+
61
+ If you want to contribute to aliBuild, you can run the tests with::
62
+
63
+ pip install -e .[test] # Only needed once
64
+ tox
65
+
66
+ The test suite only runs fully on a Linux system, but there is a reduced suite for macOS, runnable with::
67
+
68
+ tox -e darwin
69
+
70
+ You can also run only the unit tests (it's a lot faster than the full suite) with::
71
+
72
+ pytest
73
+
74
+ To run the documentation locally, you can use::
75
+
76
+ pip install -e .[docs]
77
+ cd docs
78
+ mkdocs serve
@@ -0,0 +1,74 @@
1
+ alibuild-1.17.19.data/scripts/aliBuild,sha256=5g-apCjhc9cvtFvKSP0yr6IJtChNvtTAP-BtPL-91M8,4307
2
+ alibuild-1.17.19.data/scripts/aliDeps,sha256=fhfPB2NpuLj8bZZPUjJW2e4VxA8ZkHlp5q76xAOzufI,219
3
+ alibuild-1.17.19.data/scripts/aliDoctor,sha256=gQwLcNGAm7_QF7FFCtmtFXEoroKsRonNMA7UP4DS1y4,221
4
+ alibuild-1.17.19.data/scripts/alienv,sha256=8QihJOzKue4oeuIM31MsoX8Fw7FNZ4zY7wyK6UYtgTE,12568
5
+ alibuild-1.17.19.data/scripts/pb,sha256=LfkIUyX3xXxmaGSdtAbA-dS1Y1eEShEHpmto1tIEga0,211
6
+ alibuild-1.17.19.dist-info/licenses/LICENSE.md,sha256=WJ7YI-moTFb-uVrFjnzzhGJrnL9P2iqQe8NuED3hutI,35141
7
+ alibuild_helpers/__init__.py,sha256=ZAhyhRxOkiTA1fMzwEKACY8Eo8MdWp1MawVicFlvQWk,736
8
+ alibuild_helpers/_version.py,sha256=DlzvboYmrZFVgEwyvqyRPPIN-bpatfcSZy5avk6c45Q,515
9
+ alibuild_helpers/analytics.py,sha256=fuiOagDngFnodGo7upMWeY-RjTTncDRz5Kwz8zxUr9o,4579
10
+ alibuild_helpers/args.py,sha256=LrZ85hH6dhOt-UCK41BVpjDfcOnD-4PWC1oCFJfzRh8,31490
11
+ alibuild_helpers/build.py,sha256=1Ue4iWOhPFWFkj6ARVqR3mY8XwJJYmBRkMXOTfaf1mw,56893
12
+ alibuild_helpers/build_template.sh,sha256=irbJFYEFn5KKy5wMK0WaUQOPfTzA6MJnbWxRj3cpIXQ,13508
13
+ alibuild_helpers/clean.py,sha256=-LeQUYDwxihzGJi4rCiuALu051T44-0cV8S6-l_lCaQ,3250
14
+ alibuild_helpers/cmd.py,sha256=cK33xiBI2ENAWSueW_yqj3Y9aOhTOdKkzsLdNUx9KdU,5899
15
+ alibuild_helpers/deps.py,sha256=L1NrXSmuZE2fpVvUn_t19SrFLPu6rvJd5GG3MPiiJ0w,4805
16
+ alibuild_helpers/doctor.py,sha256=s3IHGilf5iRSs3GOQgvZdws7SoXtLYp_ynCnCnTSbPI,9327
17
+ alibuild_helpers/git.py,sha256=_GjLIxprHnCfUdQ908xfza1rwhqag1_df7_gcC_8sgw,4004
18
+ alibuild_helpers/init.py,sha256=GmVLXqMS-aXqPnCk5dgAONMQFe7MqjlEtXtcQ1a-0qY,5009
19
+ alibuild_helpers/log.py,sha256=C6nneUPrPrqxIqzqsHMWkqZ_Tks2e4RIMn5sZaQwSE0,4505
20
+ alibuild_helpers/scm.py,sha256=pZfEnTgr_ILmtRT3BXeoYVJGq9rjigLXOLAGJMsnDko,1019
21
+ alibuild_helpers/sl.py,sha256=EdHs5Se6xpR9rhmhSJd_6f3Rfkxc8jl-97ZT1lG2T28,2356
22
+ alibuild_helpers/sync.py,sha256=g93S_eXmD1Zb9HptX3lICo5hWYH0cl0YQ-yr7wyliGQ,31060
23
+ alibuild_helpers/templating_plugin.py,sha256=TWHdMQtDfX6Vqp5w9Huyh4ZEgLv5vYxAtPtX68xTOlk,662
24
+ alibuild_helpers/utilities.py,sha256=NFNoaed0i7VIC6r2s7So6UhMJG5kUbVWolML9AyD26s,26129
25
+ alibuild_helpers/workarea.py,sha256=dYGZ7OOCg87W-njZMqX7Yu72800KZjx9v5Hg-T43juY,7442
26
+ debian/changelog,sha256=N-9FA5VD4VmD_tAwFfgqPqG7KUw1Jktyz14zP6aLxZs,300
27
+ debian/compat,sha256=kX3zMg13jduqXFx3QrxARr-APDbtKwUPMIRO0gZ4NGk,3
28
+ debian/control,sha256=UL8ZCLiCnNH75oVtldYPfrBO8DH7VxvjXPIdTCvXgPc,476
29
+ debian/copyright,sha256=wOLKnTq7-L1OZZoXu-FOojSdqt2nb9aEwVqVZGAxanE,470
30
+ debian/files,sha256=u9Y63SK26643_rgHm6lvcr4OtZKlCM-FcW4wwiJ4FMY,55
31
+ debian/rules,sha256=V4agtbpfdaM9h7oNrgNzEShthUASwMfhgTmFvZKLNMI,131
32
+ docs/README.md,sha256=-2EVG9RlHchf-TYJIxwZf8zSHc49ujCdTzZmWrxj4aQ,64
33
+ docs/SUPPORT,sha256=j8Ikz-9B8OkoZwtd7WU5fc_qRQ_MWy2qjWcgsXY3XyQ,150
34
+ docs/mkdocs.yml,sha256=FQWSVZC75WnuCs6icnSRauBgIJ4hrVut5Rt9X4zxy-w,931
35
+ docs/docs/alice_logo.png,sha256=w8Jpk9mHdGF5sN0pO0i6PuVyI-ntDNsvbx7DChVIZQQ,65824
36
+ docs/docs/deps.png,sha256=VY_WJOzWOm_JqAwuzFBd6C7NhrzTDDireNh739NwAow,261802
37
+ docs/docs/index.md,sha256=pU3PRsZvV5M_W1-GEZ169ECAD4C5eQc0l2V_kN_j7yU,3571
38
+ docs/docs/quick.md,sha256=PTKHAmt6vrEc3QbaRAS7rZICZ-LcvdqLxgaNcXo63Sw,2967
39
+ docs/docs/reference.md,sha256=g516_jCRnFOFy1kgw4d7Bin7OH1UBT4V34JVeDf_kBA,18033
40
+ docs/docs/troubleshooting.md,sha256=SvNT68iCVXFu3RMKjLQZrMwxBxaOSJ-QeSJe8Q3N4Oc,15440
41
+ docs/docs/user.md,sha256=3Ys1cwNuDTBQl7zZZisChZ4mt9KrLduH1bLUHXK5Jws,18704
42
+ docs/docs/stylesheets/extra.css,sha256=NAFcBZQe8gh2CTpJFwyv93FvblnF5RaEjtsHxtlFD-w,215
43
+ templates/alibuild_to_please.jnj,sha256=48SfIwq55zlb5_5lu6WAHSznXE0EfUNcHmFrmzMUSns,1723
44
+ tests/test_analytics.py,sha256=IlxATGj-MU0sTVqpi2-EKrIhyV9C48K5IZ39kWFz-Os,1942
45
+ tests/test_args.py,sha256=8d8BybESxbIDvEOOSHmmd2rCTgNxI_vF-sgbDojI-Fg,8867
46
+ tests/test_build.py,sha256=m8PXSRpejJYTeabTOgvu6C77_jqGWq11Ko4uO74ybJw,18503
47
+ tests/test_clean.py,sha256=Zm3gjtO8Pgl27xUzQIHeGqpe05YMVXZp6Sua59prvcE,7492
48
+ tests/test_cmd.py,sha256=iMpfLKqvi-qaSP6EM7PoJnGSZ9Qf4sj5669o2kcD8_I,3820
49
+ tests/test_deps.py,sha256=Ae7YPZ6jrWTeXeLaIj0C7J1Lt5fwdsRzMsiHv6GF1fE,2072
50
+ tests/test_doctor.py,sha256=LnNijwCtTN2ltX-FMSYRuLEgbCMfG0VpkqSJe3Wh1X4,4233
51
+ tests/test_git.py,sha256=fh3sBkW7FwFQQZ3x6Rp3C4wBqM7I9CcX75e6u2oaSKg,1963
52
+ tests/test_hashing.py,sha256=oAggZlZp-rZz5MRj4RBD5UZUxV0uNQOtVw47y-LHwt4,2941
53
+ tests/test_init.py,sha256=Mpj_IB9UNYQgekjLS4c0yBHQe5M3J7-YOHlwMHxSu_8,4227
54
+ tests/test_log.py,sha256=5eA0lfFHyX4KOMkfQSsbNw9wAbh7t-KuOfvaFMaM0qg,1884
55
+ tests/test_packagelist.py,sha256=MlVParqXn7zQXX3OTjHhY7sFvfgAoH-jWBMJlmsB5ls,8755
56
+ tests/test_parseRecipe.py,sha256=Ar1SWWd-NLC6ZAs180RcHC3UPyWc1ItzIP9S57ADNM4,4982
57
+ tests/test_sync.py,sha256=2CyZcC4gKCFo85pfJYn4r196eet0TG5bolL8EofGqFQ,14014
58
+ tests/test_utilities.py,sha256=mg0AlBT-hr74jVJwDAGzBscBvoYULyXTA0mgD7tSors,17688
59
+ tests/test_workarea.py,sha256=iFA1vv6Kdyd4BPk_nrNk11YUZOrAyYYYA-L0f5-As3o,4886
60
+ tests/testdist/broken1.sh,sha256=zdbBCVA9ThnK14Lu9Nm6Firw2EcnRF7budMA3xrcYEg,7
61
+ tests/testdist/broken2.sh,sha256=9S1xEQPVCkN4MMb7zQT7S6tJoPgvbSbRx5HG6EiN0JA,4
62
+ tests/testdist/broken3.sh,sha256=1Zs7ajCIndFPYCQdSjg913x5gNBYakUehTUXLpMQSEU,18
63
+ tests/testdist/broken4.sh,sha256=C-3SDwxPiaRCt2Swo3qO0n_Z60KKhUTcnS0F0EukfZc,11
64
+ tests/testdist/broken5.sh,sha256=LiYKTmohy3CzB7b8hk157OcDSs_QzD8YskbDQUYym7M,13
65
+ tests/testdist/broken6.sh,sha256=6beB4yV4Wv4sFmDaGjIHiPOmXXFbyRNWz1UA3ve9oUA,14
66
+ tests/testdist/broken7.sh,sha256=_2To-XB1XmUUtNwJ0FEwJTm9Jj9yrl5dOymToqOa3S0,54
67
+ tests/testdist/clobber-initdotsh.sh,sha256=K4L8hiEgNg0hI2WAiEA65rWU5sp-fwOYkubpVhtwyVM,95
68
+ tests/testdist/defaults-o2.sh,sha256=IJWVMYjQYz876twos1bj-5VnPv7WTdM0X-fd09j4xxM,325
69
+ tests/testdist/delete-etc.sh,sha256=NFMApyWMLQu3HJMsx0x8ZEveCaXbosO6XzJk8KDRJdg,63
70
+ tests/testdist/tracking-env.sh,sha256=3cJszuzJ5dxNYvHO4ydUOWIXwmMS7wfeb-JBCDK21O4,119
71
+ alibuild-1.17.19.dist-info/METADATA,sha256=ogbnT-bNVLWBSCytmXY7KLfI70wdBM3DlxoqT7WlM2o,2129
72
+ alibuild-1.17.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
73
+ alibuild-1.17.19.dist-info/top_level.txt,sha256=WjKmc89Vn0WlbEp9a9VmhwqRkeKxjUX_6NT3T8K3Hv0,45
74
+ alibuild-1.17.19.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+