1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-02 12:20:51 +00:00

add a function to help copying shared binaries from the output

of a buildworld.
This commit is contained in:
Luigi Rizzo 2009-03-24 17:47:50 +00:00
parent d53978e3c0
commit d9ef0edbad
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=190383

View File

@ -548,6 +548,52 @@ do_copyfiles() { # rootdir varname
done
}
# find_progs is a helper function to locate the named programs
# or libraries in ${o_objdir} and return the full pathnames.
# Sets ${u_progs} to the list of programs, and ${u_libs}
# to the list of shared libraries used.
# If the first argument is - does not set u_libs
#
# You can use it e.g. in a local configuration file by writing
#
# do_copyfiles_user() {
# local dst=$1
# find_progs nvi sed less grep
# cp -p ${u_progs} ${dst}/bin
# cp -p ${u_libs} ${dst}/lib
# mkdir -p ${dst}/libexec
# find_progs ld-elf.so.1
# cp -p ${u_progs} ${dst}/libexec
# }
find_progs() { # programs
local i
u_progs="`find_progs_helper $*`"
[ -z "${u_progs}" ] && return 1 # not found, error
i="`ldd ${u_progs} | grep -v '^/' | awk '{print $1}' | sort | uniq`"
u_libs="`find_progs_helper $i`"
return 0
}
find_progs_helper() { # programs
local progs="$*"
local i o places names
local subdirs="bin sbin usr.bin usr.sbin libexec lib \
gnu/usr.bin gnu/lib \
secure/usr.bin secure/usr.sbin secure/libexec secure/lib"
names="" # files to search
o=""
for i in $progs ; do
names="${names} ${o} -name $i"
o="-o"
done
places="" # places to search
for i in $subdirs ; do
places="${places} ${o_objdir}/${i}"
done
find ${places} -type f \( ${names} \)
}
# Populate the memory filesystem with binaries and non-variable
# configuration files.
# First do an mtree pass, then create directory links and device entries,
@ -863,7 +909,6 @@ fill_floppy_image() {
# needs to be done once).
set_build_parameters() {
log "set_build_parameters() SRC is ${SRC}"
if [ "${SRC}" = "/usr/src" ] ; then
l_usrtree=${USR:-/usr}
else
@ -890,6 +935,19 @@ set_build_parameters() {
CONFIG=${l_usrtree}/sbin/config
export CONFIG
fi
# if we have o_objdir, find where bin/ is
if [ ! -z "${o_objdir}" ] ; then
if [ -d ${o_objdir}/bin ] ; then
# fine
elif [ -d "${o_objdir}${SRC}/bin" ] ; then
o_objdir="${o_objdir}${SRC}"
log "Changing objdir to ${o_objdir}"
else
log "Cannot find objdir in ${o_objdir}, sorry"
o_objdir=""
fi
fi
}
#-------------------------------------------------------------------
@ -898,9 +956,10 @@ set_build_parameters() {
set_defaults
while [ true ]; do
log "Parsing $1"
case $1 in
--src) # set the source path instead of /usr/src
SRC=`(cd $2; pwd)`
SRC=`realpath $2`
shift
;;
--init)
@ -952,6 +1011,12 @@ while [ true ]; do
shift
;;
--objdir) # Place with results of a previous buildworld
# useful if you want to copy shared binaries and libs
o_objdir=`realpath $2`
shift
;;
*)
break
;;