93 lines
2.8 KiB
Bash
93 lines
2.8 KiB
Bash
#!/bin/bash
|
|
|
|
# Get the conda environment path
|
|
env_path="${CONDA_DEFAULT_ENV}/lib"
|
|
|
|
# List of broken symlinks
|
|
declare -A symlinks=(
|
|
["libcufile.so"]="libcufile.so"
|
|
["libcufile_rdma.so"]="libcufile_rdma.so"
|
|
["libcudart.so"]="libcudart.so"
|
|
["libnvjpeg.so"]="libnvjpeg.so"
|
|
["libcurand.so"]="libcurand.so"
|
|
["libnvJitLink.so"]="libnvJitLink.so"
|
|
["libnvrtc-builtins.so"]="libnvrtc-builtins.so"
|
|
["libnvrtc.so"]="libnvrtc.so"
|
|
)
|
|
|
|
# Function to test for broken symlinks
|
|
test_broken_symlinks() {
|
|
echo "Testing for broken symlinks..."
|
|
broken_found=false
|
|
for link in "${!symlinks[@]}"; do
|
|
if [ -L "$env_path/$link" ] && [ ! -e "$env_path/$link" ]; then
|
|
echo "Broken symlink found: $env_path/$link"
|
|
broken_found=true
|
|
fi
|
|
done
|
|
if [ "$broken_found" = false ]; then
|
|
echo "No broken symlinks found."
|
|
fi
|
|
}
|
|
|
|
# Function to fix broken symlinks
|
|
fix_broken_symlinks() {
|
|
echo "Fixing broken symlinks..."
|
|
for link in "${!symlinks[@]}"; do
|
|
if [ -L "$env_path/$link" ] && [ ! -e "$env_path/$link" ]; then
|
|
echo "Removing broken link: $env_path/$link"
|
|
rm "$env_path/$link"
|
|
|
|
# Find all possible target files
|
|
target_files=($(find "$env_path" -name "${symlinks[$link]}*"))
|
|
|
|
if [ ${#target_files[@]} -gt 0 ]; then
|
|
echo "Select a target file for $link:"
|
|
for i in "${!target_files[@]}"; do
|
|
echo "$((i+1)). ${target_files[$i]}"
|
|
done
|
|
|
|
read -p "Enter the number of the target file to use: " choice
|
|
choice=$((choice-1))
|
|
|
|
if [[ $choice -ge 0 && $choice -lt ${#target_files[@]} ]]; then
|
|
target="${target_files[$choice]}"
|
|
echo "Creating new symlink: $env_path/$link -> $target"
|
|
ln -s "$target" "$env_path/$link"
|
|
else
|
|
echo "Invalid choice, skipping $link."
|
|
fi
|
|
else
|
|
echo "No target files found for $link."
|
|
fi
|
|
fi
|
|
done
|
|
echo "Verification of symbolic links:"
|
|
ls -l $env_path | grep -E "libcufile.so|libcudart.so|libcufile_rdma.so|libnvjpeg.so|libcurand.so|libnvJitLink.so|libnvrtc-builtins.so|libnvrtc.so"
|
|
}
|
|
|
|
# Menu
|
|
while true; do
|
|
echo "Select an option:"
|
|
echo "1. Test for broken symlinks"
|
|
echo "2. Fix broken symlinks"
|
|
echo "3. Exit"
|
|
read -p "Enter your choice [1-3]: " choice
|
|
case $choice in
|
|
1)
|
|
test_broken_symlinks
|
|
;;
|
|
2)
|
|
fix_broken_symlinks
|
|
;;
|
|
3)
|
|
echo "Exiting."
|
|
break
|
|
;;
|
|
*)
|
|
echo "Invalid choice. Please select 1, 2, or 3."
|
|
;;
|
|
esac
|
|
done
|
|
|