1# This setup hook adds every propagated lisp system to CL_SOURCE_REGISTRY
2
3buildAsdfPath () {
4 declare -A seen=()
5 for dep in $propagatedBuildInputs; do
6 _addToAsdfPath $dep
7 done
8}
9
10addFileToSearchPathWithCustomDelimiter() {
11 local delimiter="$1"
12 local varName="$2"
13 local file="$3"
14 if [[ -f "$file" && "${!varName:+${delimiter}${!varName}${delimiter}}" \
15 != *"${delimiter}${file}${delimiter}"* ]]; then
16 export "${varName}=${!varName:+${!varName}${delimiter}}${file}"
17 fi
18}
19
20addFileToSearchPath() {
21 addFileToSearchPathWithCustomDelimiter ":" "$@"
22}
23
24_addToAsdfPath () {
25 local dep="$1"
26 if [ -v seen[$dep] ]; then
27 return
28 else
29 seen[$dep]=1
30 local path="$dep"
31
32 # FIXME slow
33
34 while read file; do
35 case "${file##*.}" in
36 jar) addFileToSearchPath "CLASSPATH" "$file" ;;
37 class) addToSearchPath "CLASSPATH" "${file%/*}" ;;
38 so) addToSearchPath "LD_LIBRARY_PATH" "${file%/*}" ;;
39 dylib) addToSearchPath "DYLD_LIBRARY_PATH" "${file%/*}" ;;
40 asd) addToSearchPath "CL_SOURCE_REGISTRY" "$path//" ;;
41 esac
42 done < <(find "$path" -type f,l -name '*.asd' -o -name '*.jar' \
43 -o -name '*.class' -o -name '*.so' -o -name '*.dylib')
44
45 local prop="$dep/nix-support/propagated-build-inputs"
46
47 if [ -e "$prop" ]; then
48 local new_system
49 for new_system in $(cat $prop); do
50 _addToAsdfPath "$new_system"
51 done
52 fi
53 fi
54}
55
56# addEnvHooks "$targetOffset" buildAsdfPath