mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-01 08:27:59 +00:00
bsdinstall: Fix installation script splitting
This allows writing setup scripts that contain lines starting with "#!", e.g., a shebang when creating a shell script using cat: #!/bin/sh echo "Populate rc.local" cat >/etc/rc.local<<EOF #!/bin/sh echo booted | logger -s -t 'example' EOF Prevent accidentally running a setup script left behind by a previous invocation of bsdinstall. Reviewed by: imp, jrtc27 Differential Revision: https://reviews.freebsd.org/D43350
This commit is contained in:
parent
c2356a440d
commit
731704f5ea
@ -61,11 +61,16 @@ export BSDINSTALL_CHROOT=$1
|
||||
rm -rf $BSDINSTALL_TMPETC
|
||||
mkdir $BSDINSTALL_TMPETC
|
||||
mkdir -p $1 || error "mkdir failed for $1"
|
||||
rm -f $TMPDIR/bsdinstall-installscript-setup
|
||||
|
||||
if [ -n "$SCRIPT" ]
|
||||
then
|
||||
split -a 2 -p '^#!.*' "$SCRIPT" $TMPDIR/bsdinstall-installscript-
|
||||
. $TMPDIR/bsdinstall-installscript-aa
|
||||
if [ -n "$SCRIPT" ]; then
|
||||
# split script into preamble and setup script at first shebang
|
||||
awk 'BEGIN {pathb=ARGV[2]; ARGV[2]=""} /^#!/{b=1} {
|
||||
if (b) print >pathb; else print}' \
|
||||
"$SCRIPT" $TMPDIR/bsdinstall-installscript-setup \
|
||||
>$TMPDIR/bsdinstall-installscript-preamble
|
||||
|
||||
. $TMPDIR/bsdinstall-installscript-preamble
|
||||
fi
|
||||
|
||||
test ! -d $BSDINSTALL_DISTDIR && mkdir -p $BSDINSTALL_DISTDIR
|
||||
@ -146,8 +151,9 @@ cp /etc/localtime $1/etc
|
||||
cp /var/db/zoneinfo $1/var/db
|
||||
|
||||
# Run post-install script
|
||||
if [ -f $TMPDIR/bsdinstall-installscript-ab ]; then
|
||||
cp $TMPDIR/bsdinstall-installscript-ab $BSDINSTALL_CHROOT/tmp/installscript
|
||||
if [ -f $TMPDIR/bsdinstall-installscript-setup ]; then
|
||||
cp $TMPDIR/bsdinstall-installscript-setup \
|
||||
$BSDINSTALL_CHROOT/tmp/installscript
|
||||
chmod a+x $BSDINSTALL_CHROOT/tmp/installscript
|
||||
mount -t devfs devfs "$BSDINSTALL_CHROOT/dev"
|
||||
chroot $BSDINSTALL_CHROOT /tmp/installscript $@ 2>&1
|
||||
|
@ -88,10 +88,15 @@ shift
|
||||
f_dprintf "Began Installation at %s" "$( date )"
|
||||
rm -rf $BSDINSTALL_TMPETC
|
||||
mkdir $BSDINSTALL_TMPETC
|
||||
rm -f $TMPDIR/bsdinstall-installscript-setup
|
||||
|
||||
split -a 2 -p '^#!.*' "$SCRIPT" $TMPDIR/bsdinstall-installscript-
|
||||
# split script into preamble and setup script at first shebang
|
||||
awk 'BEGIN {pathb=ARGV[2]; ARGV[2]=""} /^#!/{b=1} {
|
||||
if (b) print >pathb; else print}' \
|
||||
"$SCRIPT" $TMPDIR/bsdinstall-installscript-setup \
|
||||
>$TMPDIR/bsdinstall-installscript-preamble
|
||||
|
||||
. $TMPDIR/bsdinstall-installscript-aa
|
||||
. $TMPDIR/bsdinstall-installscript-preamble
|
||||
: ${DISTRIBUTIONS="kernel.txz base.txz"}; export DISTRIBUTIONS
|
||||
export BSDINSTALL_DISTDIR
|
||||
|
||||
@ -158,8 +163,9 @@ if [ ! -f $BSDINSTALL_CHROOT/etc/resolv.conf -a -f /etc/resolv.conf ]; then
|
||||
fi
|
||||
|
||||
# Run post-install script
|
||||
if [ -f $TMPDIR/bsdinstall-installscript-ab ]; then
|
||||
cp $TMPDIR/bsdinstall-installscript-ab $BSDINSTALL_CHROOT/tmp/installscript
|
||||
if [ -f $TMPDIR/bsdinstall-installscript-setup ]; then
|
||||
cp $TMPDIR/bsdinstall-installscript-setup \
|
||||
$BSDINSTALL_CHROOT/tmp/installscript
|
||||
chmod a+x $BSDINSTALL_CHROOT/tmp/installscript
|
||||
chroot $BSDINSTALL_CHROOT /tmp/installscript $@ 2>&1
|
||||
rm $BSDINSTALL_CHROOT/tmp/installscript
|
||||
|
Loading…
Reference in New Issue
Block a user