75feba5476
Utility to add or remove paths from musl dynamic linker config file
73 lines
1.8 KiB
Bash
73 lines
1.8 KiB
Bash
#!/bin/sh
|
|
|
|
testdir=$(mktemp -d)
|
|
ld_musl_file="${testdir}/ld-musl-test.path"
|
|
|
|
lib_path="/usr/lib/foo"
|
|
lib_path2="/usr/lib/bar"
|
|
|
|
# Create ldso config file and add a path to it.
|
|
sh ldpath.sh -f "$ld_musl_file" add "$lib_path"
|
|
|
|
if ! grep -q "$lib_path" "$ld_musl_file"; then
|
|
echo "ERROR: Did not find $lib_path in newly created config file."
|
|
exit 1
|
|
fi
|
|
|
|
# Add another path to config file.
|
|
sh ldpath.sh -f "$ld_musl_file" add "$lib_path2"
|
|
if ! grep -q "$lib_path2" "$ld_musl_file"; then
|
|
echo "ERROR: Did not find $lib_path2 in config file."
|
|
exit 1
|
|
fi
|
|
|
|
# Check that first path is still present
|
|
if ! grep -q "$lib_path" "$ld_musl_file"; then
|
|
echo "ERROR: Did not find $lib_path in config file."
|
|
exit 1
|
|
fi
|
|
|
|
# Remove the first path
|
|
sh ldpath.sh -f "$ld_musl_file" remove "$lib_path"
|
|
if grep -q "$lib_path" "$ld_musl_file"; then
|
|
echo "ERROR: $lib_path was not removed from config file."
|
|
exit 1
|
|
fi
|
|
|
|
# Check that second path is still present
|
|
if ! grep -q "$lib_path2" "$ld_musl_file"; then
|
|
echo "ERROR: $lib_path2 should not have been removed."
|
|
exit 1
|
|
fi
|
|
|
|
# Remove the second path
|
|
sh ldpath.sh -f "$ld_musl_file" remove "$lib_path2"
|
|
if grep -q "$lib_path2" "$ld_musl_file"; then
|
|
echo "ERROR: $lib_path2 was not removed from config file."
|
|
exit 1
|
|
fi
|
|
|
|
# Don't allow removal of default paths
|
|
_default_paths="/lib /usr/local/lib /usr/lib"
|
|
for _path in $_default_paths
|
|
do
|
|
sh ldpath.sh -f "$ld_musl_file" remove "$_path"
|
|
if ! grep -q "$_path" "$ld_musl_file"; then
|
|
echo "ERROR: Default path $_path should not have been removed."
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# Don't allow duplicates
|
|
sh ldpath.sh -f "$ld_musl_file" add "$lib_path"
|
|
sh ldpath.sh -f "$ld_musl_file" add "$lib_path"
|
|
_count=$(grep -o "$lib_path" "$ld_musl_file" | wc -l)
|
|
if [ "$_count" -ne 1 ]; then
|
|
echo "ERROR: Multiple entries of $lib_path."
|
|
exit 1
|
|
fi
|
|
|
|
# Cleanup
|
|
rm -r "$testdir"
|
|
|
|
exit 0
|