Improve handling of the tinybsd application wrt ports. Ports that
have dependencies or need to install a new user/group, are not problematic anymore. PR: 121367 Submitted by: Richard Arends < richard at unixguru dot nl > MFC after: 3 days
This commit is contained in:
parent
f36e3d2dcc
commit
562d4784be
@ -12,13 +12,12 @@ then
|
|||||||
else
|
else
|
||||||
cd $CURRENTDIR
|
cd $CURRENTDIR
|
||||||
fi
|
fi
|
||||||
|
|
||||||
WORKDIR=/usr/obj/tinybsdbuild
|
WORKDIR=/usr/obj/tinybsdbuild
|
||||||
KERNCONF=TINYBSD
|
KERNCONF=TINYBSD
|
||||||
BASEFILE="tinybsd.basefiles"
|
BASEFILE="tinybsd.basefiles"
|
||||||
PORTSFILE="tinybsd.ports"
|
PORTSFILE="tinybsd.ports"
|
||||||
PORTSDIR=/usr/ports
|
PORTSDIR=/usr/ports
|
||||||
PKGDIRS=/tmp/pkg.dirs
|
|
||||||
PKGFILES=/tmp/pkg.files
|
|
||||||
DEFINSTARGS="-o 0 -g 0 -m 555"
|
DEFINSTARGS="-o 0 -g 0 -m 555"
|
||||||
TS="=====>"
|
TS="=====>"
|
||||||
|
|
||||||
@ -276,7 +275,7 @@ create_tree() {
|
|||||||
copy_binaries() {
|
copy_binaries() {
|
||||||
cd ${CURRENTDIR}/conf/${CONF}
|
cd ${CURRENTDIR}/conf/${CONF}
|
||||||
|
|
||||||
for file in `cat ${BASEFILE} | grep -v "#" | \
|
for file in `cat ${CURRENTDIR}/conf/${CONF}/${BASEFILE} | grep -v "#" | \
|
||||||
cut -f1 -d":" | sort | uniq` ; do
|
cut -f1 -d":" | sort | uniq` ; do
|
||||||
echo "${TS} Copying "/${file}" to "${WORKDIR}/${file}
|
echo "${TS} Copying "/${file}" to "${WORKDIR}/${file}
|
||||||
cp -fp /${file} ${WORKDIR}/${file} ;
|
cp -fp /${file} ${WORKDIR}/${file} ;
|
||||||
@ -284,38 +283,41 @@ copy_binaries() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
install_ports() {
|
install_ports() {
|
||||||
for portname in `cat ${PORTSFILE} | grep -v '#'` ; do
|
for portname in `cat ${CURRENTDIR}/conf/${CONF}/${PORTSFILE} | grep -v '#'` ; do
|
||||||
|
if [ ! -d "${WORKDIR}/usr/ports" ]; then
|
||||||
|
mkdir -p "${WORKDIR}/usr/ports"
|
||||||
|
fi
|
||||||
|
|
||||||
|
PNAME=`/usr/bin/basename "${portname}"`
|
||||||
|
PORT_OPTION_FILE="/var/db/ports/${PNAME}/options"
|
||||||
|
|
||||||
|
if [ -f "${PORT_OPTION_FILE}" ]; then
|
||||||
|
mkdir -p "${WORKDIR}/var/db/ports/${PNAME}"
|
||||||
|
cp "${PORT_OPTION_FILE}" "${WORKDIR}/var/db/ports/${PNAME}/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mount_nullfs /lib "${WORKDIR}/lib"
|
||||||
|
mount_nullfs /usr/bin "${WORKDIR}/usr/bin"
|
||||||
|
mount_nullfs /usr/sbin "${WORKDIR}/usr/sbin"
|
||||||
|
mount_nullfs /usr/ports "${WORKDIR}/usr/ports"
|
||||||
|
mount_nullfs /usr/share "${WORKDIR}/usr/share"
|
||||||
|
mount_nullfs /usr/libexec "${WORKDIR}/usr/libexec"
|
||||||
|
mount_nullfs /usr/lib "${WORKDIR}/usr/lib"
|
||||||
|
mount_nullfs /usr/include "${WORKDIR}/usr/include"
|
||||||
|
|
||||||
cd ${PORTSDIR}/${portname}
|
cd ${PORTSDIR}/${portname}
|
||||||
pkgname=`make -V PKGNAME`
|
make fetch-recursive
|
||||||
pkg_info -VQ ${pkgname}
|
make DESTDIR_ENV_LIST=PATH DESTDIR="${WORKDIR}" install
|
||||||
install=`echo $?`
|
make clean
|
||||||
if [ ${install} -eq 0 ] ; then
|
|
||||||
echo "$portname is already installed..."
|
|
||||||
create_missingdir
|
|
||||||
copy_ports
|
|
||||||
else
|
|
||||||
make install clean
|
|
||||||
create_missingdir
|
|
||||||
copy_ports
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
create_missingdir() {
|
umount "${WORKDIR}/lib"
|
||||||
pkg_info -L ${pkgname} | egrep -v '(Information|Files|www|share|doc|man|include)' | sort | uniq >> ${PKGDIRS}
|
umount "${WORKDIR}/usr/ports"
|
||||||
for dir in `cat ${PKGDIRS}`; do
|
umount "${WORKDIR}/usr/bin"
|
||||||
if [ ! -d `dirname ${WORKDIR}/${dir}` ] ; then
|
umount "${WORKDIR}/usr/sbin"
|
||||||
mkdir -p `dirname ${WORKDIR}/${dir}`
|
umount "${WORKDIR}/usr/share"
|
||||||
fi
|
umount "${WORKDIR}/usr/libexec"
|
||||||
done
|
umount "${WORKDIR}/usr/lib"
|
||||||
rm ${PKGDIRS}
|
umount "${WORKDIR}/usr/include"
|
||||||
}
|
|
||||||
|
|
||||||
copy_ports() {
|
|
||||||
pkg_info -L ${pkgname} | egrep -v '(Information|Files|www|share|doc|man|include)' >> ${PKGFILES}
|
|
||||||
for port in `cat ${PKGFILES}` ; do
|
|
||||||
echo "${TS} Copying "${port}" to "${WORKDIR}${port}
|
|
||||||
cp -fp ${port} ${WORKDIR}${port} ;
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,13 +338,10 @@ copy_libraries() {
|
|||||||
TDEPFILE="`mktemp -t deps`"
|
TDEPFILE="`mktemp -t deps`"
|
||||||
TDEPFILES="`mktemp -t depsymlnk`"
|
TDEPFILES="`mktemp -t depsymlnk`"
|
||||||
|
|
||||||
cd ${CURRENTDIR}/conf/${CONF}
|
find "${WORKDIR}" -type f |while read file; do
|
||||||
for file in `cat ${BASEFILE} ${PKGFILES} | grep -v "#" | cut -f1 -d":"`; do
|
ldd -f "%p\n" ${file} >> ${TDEPFILE} ; # don't worry on progs been "not dynamic"
|
||||||
ldd -f "%p\n" /${file} >> ${TDEPFILE} ; # don't worry on progs been "not dynamic"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
rm ${PKGFILES}
|
|
||||||
|
|
||||||
for libdeplib in `cat ${TDEPFILE} | sort | uniq`; do
|
for libdeplib in `cat ${TDEPFILE} | sort | uniq`; do
|
||||||
ldd -f "%p\n" /${libdeplib} >> ${TDEPFILE} ;
|
ldd -f "%p\n" /${libdeplib} >> ${TDEPFILE} ;
|
||||||
done
|
done
|
||||||
@ -378,15 +377,6 @@ copy_libraries() {
|
|||||||
rm -fv ${TDEPFILE} ${TDEPFILES}
|
rm -fv ${TDEPFILE} ${TDEPFILES}
|
||||||
}
|
}
|
||||||
|
|
||||||
deinstall_ports() {
|
|
||||||
for portname in `cat ${PORTSFILE} | grep -v '#'` ; do
|
|
||||||
cd ${PORTSDIR}/${portname}
|
|
||||||
if [ $? -ne ${install} ] ; then
|
|
||||||
make deinstall
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
create_etc() {
|
create_etc() {
|
||||||
cd /usr/src/etc/sendmail/
|
cd /usr/src/etc/sendmail/
|
||||||
make freebsd.cf freebsd.submit.cf
|
make freebsd.cf freebsd.submit.cf
|
||||||
@ -416,7 +406,7 @@ personal_conf() {
|
|||||||
|
|
||||||
symlinks() {
|
symlinks() {
|
||||||
#set -xv
|
#set -xv
|
||||||
for i in `cat ${BASEFILE} ${PORTSFILE} | grep -v "#" | grep ":"`; do
|
for i in `cat ${CURRENTDIR}/conf/${CONF}/${BASEFILE}| grep -v "#" | grep ":"`; do
|
||||||
SOURCE_FILE=`echo $i | awk -F ":" {'print $1'}`
|
SOURCE_FILE=`echo $i | awk -F ":" {'print $1'}`
|
||||||
TARGET_FILE=`echo $i | awk -F ":" {'print $2'}`
|
TARGET_FILE=`echo $i | awk -F ":" {'print $2'}`
|
||||||
chroot ${WORKDIR} /bin/ln -vs /${SOURCE_FILE} ${TARGET_FILE}
|
chroot ${WORKDIR} /bin/ln -vs /${SOURCE_FILE} ${TARGET_FILE}
|
||||||
@ -489,7 +479,6 @@ create_image() {
|
|||||||
echo "${TS} You can see your build log in ${HOME}/tinybsd.log"
|
echo "${TS} You can see your build log in ${HOME}/tinybsd.log"
|
||||||
echo "${TS} Your final image is in ${CURRENTDIR}/${IMG}"
|
echo "${TS} Your final image is in ${CURRENTDIR}/${IMG}"
|
||||||
echo "${TS} Now use dd(1) to write it."
|
echo "${TS} Now use dd(1) to write it."
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
@ -514,12 +503,11 @@ rotate_buidlog
|
|||||||
check_alt_imgname
|
check_alt_imgname
|
||||||
create_tree
|
create_tree
|
||||||
copy_binaries
|
copy_binaries
|
||||||
|
create_etc
|
||||||
install_ports
|
install_ports
|
||||||
make_kernel
|
make_kernel
|
||||||
copy_libraries
|
copy_libraries
|
||||||
symlinks
|
symlinks
|
||||||
deinstall_ports
|
|
||||||
create_etc
|
|
||||||
create_ssh_keys
|
create_ssh_keys
|
||||||
personal_conf
|
personal_conf
|
||||||
create_image
|
create_image
|
||||||
|
Loading…
x
Reference in New Issue
Block a user