4540590873
ldconfig is already required by mountcritremote indirectly, as noted by rcorder: > rcorder: Circular dependency on provision `mountcritremote' in file `ldconfig'. Having mountcritremote REQUIRE ldconfig breaks dependency ordering. Making the ldconfig hints be conditionally regenerated from mountcritremote when remote filesystems are mounted is done after this change, similar to cleanvar being conditionally called after the change. Differential Revision: https://reviews.freebsd.org/D6621 PR: 202726 Reviewed by: jilles Sponsored by: EMC / Isilon Storage Division
107 lines
2.3 KiB
Bash
Executable File
107 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
# PROVIDE: ldconfig
|
|
# REQUIRE: FILESYSTEMS
|
|
# BEFORE: DAEMON
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="ldconfig"
|
|
desc="Configure the shared library cache"
|
|
ldconfig_command="/sbin/ldconfig"
|
|
start_cmd="ldconfig_start"
|
|
stop_cmd=":"
|
|
|
|
ldconfig_start()
|
|
{
|
|
local _files _ins
|
|
|
|
_ins=
|
|
ldconfig=${ldconfig_command}
|
|
checkyesno ldconfig_insecure && _ins="-i"
|
|
if [ -x "${ldconfig_command}" ]; then
|
|
_LDC="/lib /usr/lib"
|
|
for i in ${ldconfig_local_dirs}; do
|
|
if [ -d "${i}" ]; then
|
|
_files=`find ${i} -type f`
|
|
if [ -n "${_files}" ]; then
|
|
ldconfig_paths="${ldconfig_paths} `cat ${_files} | sort -u`"
|
|
fi
|
|
fi
|
|
done
|
|
for i in ${ldconfig_paths} /etc/ld-elf.so.conf; do
|
|
if [ -r "${i}" ]; then
|
|
_LDC="${_LDC} ${i}"
|
|
fi
|
|
done
|
|
check_startmsgs && echo 'ELF ldconfig path:' ${_LDC}
|
|
${ldconfig} -elf ${_ins} ${_LDC}
|
|
|
|
case `sysctl -n hw.machine_arch` in
|
|
amd64)
|
|
for i in ${ldconfig_local32_dirs}; do
|
|
if [ -d "${i}" ]; then
|
|
_files=`find ${i} -type f`
|
|
if [ -n "${_files}" ]; then
|
|
ldconfig32_paths="${ldconfig32_paths} `cat ${_files} | sort -u`"
|
|
fi
|
|
fi
|
|
done
|
|
_LDC=""
|
|
for i in ${ldconfig32_paths}; do
|
|
if [ -r "${i}" ]; then
|
|
_LDC="${_LDC} ${i}"
|
|
fi
|
|
done
|
|
check_startmsgs &&
|
|
echo '32-bit compatibility ldconfig path:' ${_LDC}
|
|
${ldconfig} -32 -m ${_ins} ${_LDC}
|
|
;;
|
|
esac
|
|
|
|
case `sysctl -n hw.machine_arch` in
|
|
armv6)
|
|
for i in ${ldconfig_localsoft_dirs}; do
|
|
if [ -d "${i}" ]; then
|
|
_files=`find ${i} -type f`
|
|
if [ -n "${_files}" ]; then
|
|
ldconfigsoft_paths="${ldconfigsoft_paths} `cat ${_files} | sort -u`"
|
|
fi
|
|
fi
|
|
done
|
|
_LDC=""
|
|
for i in ${ldconfigsoft_paths}; do
|
|
if [ -r "${i}" ]; then
|
|
_LDC="${_LDC} ${i}"
|
|
fi
|
|
done
|
|
check_startmsgs &&
|
|
echo 'Soft Float compatibility ldconfig path:' ${_LDC}
|
|
${ldconfig} -soft -m ${_ins} ${_LDC}
|
|
;;
|
|
esac
|
|
|
|
# Legacy aout support for i386 only
|
|
case `sysctl -n hw.machine_arch` in
|
|
i386)
|
|
# Default the a.out ldconfig path.
|
|
: ${ldconfig_paths_aout=${ldconfig_paths}}
|
|
_LDC=""
|
|
for i in /usr/lib/aout ${ldconfig_paths_aout} /etc/ld.so.conf; do
|
|
if [ -r "${i}" ]; then
|
|
_LDC="${_LDC} ${i}"
|
|
fi
|
|
done
|
|
check_startmsgs && echo 'a.out ldconfig path:' ${_LDC}
|
|
${ldconfig} -aout ${_ins} ${_LDC}
|
|
;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|