Date: 9 Jun 2000 22:08:07 -0000 From: patrick@mindstep.com To: freefall-gnats@mindstep.com Subject: kern/19156: Enable the doFS.sh to run in arbitrary locations Message-ID: <20000609220807.70887.qmail@nitro.local.mindstep.com>
next in thread | raw e-mail | index | archive | help
>Number: 19156
>Category: kern
>Synopsis: Enable the doFS.sh to run in arbitrary locations
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Fri Jun 09 15:10:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: Patrick Bihan-Faou
>Release: FreeBSD 4.0-STABLE i386
>Organization:
MindStep Corporation
>Environment:
Source code for RELENG_4 as of June 5, 2000
>Description:
The doFS.sh script in /usr/src/release/scripts can only work in a chrooted
environment because it references /dev directly to access the vnode device
being built.
This makes it difficult to use the script outside the scope of a make
from the /usr/src/release directory (which runs it in a chroot'd dir).
Also the mount point has to be specified as an absolute path.
>How-To-Repeat:
n/a
>Fix:
The following patch transform the path for the mount point to a absolute path
and gets the location of the device directory to use from the command line
(following the mount path argument). The device path is also canonicalized to
an absolute path.
If needed the script will also create the devices and mount directories. If the
directories were created by doFS.sh, they will be removed after the script is
done.
The /usr/src/release/Makefile is updated to provide the location of the devices
directory to the doFS.sh script.
--- Makefile.orig Fri Jun 9 16:48:26 2000
+++ Makefile Fri Jun 9 16:49:15 2000
@@ -510,11 +510,11 @@
tar xf - -C ${RD}/mfsfd/stand
@echo "Compressing doc files..."
@gzip -9 ${RD}/mfsfd/stand/help/*.hlp
- sh -e ${.CURDIR}/scripts/doFS.sh -s mfsroot ${RD} ${MNT} \
+ sh -e ${.CURDIR}/scripts/doFS.sh -s mfsroot ${RD} ${MNT} /dev \
${MFSSIZE} ${RD}/mfsfd ${MFSINODE} ${MFSLABEL}
@gzip -9vc mfsroot > mfsroot.gz
@sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/mfsroot.flp \
- ${RD} ${MNT} ${BOOTSIZE} mfsroot.gz ${BOOTINODE} ${BOOTLABEL}
+ ${RD} ${MNT} /dev ${BOOTSIZE} mfsroot.gz ${BOOTINODE} ${BOOTLABEL}
@cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern
@cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=boot BIGBOOT=YES
@rm mfsroot mfsroot.gz mfsroot.size
@@ -546,7 +546,7 @@
@cp ${.CURDIR}/scripts/tar.sh ${RD}/fixitfd/stand/tar
@chmod 555 ${RD}/fixitfd/stand/tar
@sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/fixit.flp ${RD} \
- ${MNT} ${FIXITSIZE} ${RD}/fixitfd ${FIXITINODE} ${FIXITLABEL}
+ ${MNT} /dev ${FIXITSIZE} ${RD}/fixitfd ${FIXITINODE} ${FIXITLABEL}
# Do our last minute floppies directory setup in a convenient place.
@cp ${.CURDIR}/texts/FLOPPIES.TXT ${RD}/floppies/README.TXT
@(cd ${RD}/floppies; md5 README.TXT *.flp > CHECKSUM.MD5)
@@ -777,11 +777,11 @@
@rm -f ${RD}/floppies/${FSIMAGE}.flp
.if defined(BIGBOOT)
sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/${FSIMAGE}.flp \
- ${RD} ${MNT} ${BIGBOOTSIZE} ${RD}/image.${FSIMAGE} \
+ ${RD} ${MNT} /dev ${BIGBOOTSIZE} ${RD}/image.${FSIMAGE} \
${BOOTINODE} ${BIGBOOTLABEL}
.else
sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/${FSIMAGE}.flp \
- ${RD} ${MNT} ${BOOTSIZE} ${RD}/image.${FSIMAGE} \
+ ${RD} ${MNT} /dev ${BOOTSIZE} ${RD}/image.${FSIMAGE} \
${BOOTINODE} ${BOOTLABEL}
.endif
@echo "Created ${RD}/floppies/${FSIMAGE}.flp"
--- scripts/doFS.sh.orig Thu Jun 8 22:23:34 2000
+++ scripts/doFS.sh Fri Jun 9 16:46:56 2000
@@ -15,41 +15,63 @@
FSIMG=$1; shift
RD=$1 ; shift
MNT=$1 ; shift
+DEV=$1 ; shift
FSSIZE=$1 ; shift
FSPROTO=$1 ; shift
FSINODE=$1 ; shift
FSLABEL=$1 ; shift
deadlock=20
+created_mnt=0
+created_dev=0
+
+[ -d ${MNT} ] ||
+{
+ mkdir -p ${MNT} || { echo "unable to create ${MNT} directory"; exit 1; }
+ created_mnt=1
+}
+CUR=`pwd`
+cd ${MNT}
+MNT=`pwd`
+cd ${CUR}
+
+[ -d ${DEV} ] ||
+{
+ mkdir -p ${DEV} || { echo "unable to create ${DEV} directory"; exit 1; }
+ created_dev=1
+}
+cd ${DEV}
+DEV=`pwd`
+cd ${CUR}
u=`expr $VNDEVICE : 'vn\([0-9]*\)' || true`
-rm -f /dev/*vnn*
-mknod /dev/vnn${u} b 15 `expr 65538 + $u '*' 8`
-mknod /dev/rvnn${u} c 43 `expr 65538 + $u '*' 8`
-mknod /dev/vnn${u}c b 15 `expr 2 + $u '*' 8`
-mknod /dev/rvnn${u}c c 43 `expr 2 + $u '*' 8`
+rm -f ${DEV}/*vnn*
+mknod ${DEV}/vnn${u} b 15 `expr 65538 + $u '*' 8`
+mknod ${DEV}/rvnn${u} c 43 `expr 65538 + $u '*' 8`
+mknod ${DEV}/vnn${u}c b 15 `expr 2 + $u '*' 8`
+mknod ${DEV}/rvnn${u}c c 43 `expr 2 + $u '*' 8`
VNDEVICE=vnn$u
while true
do
rm -f ${FSIMG}
- umount /dev/${VNDEVICE} 2>/dev/null || true
+ umount ${DEV}/${VNDEVICE} 2>/dev/null || true
umount ${MNT} 2>/dev/null || true
- vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true
+ vnconfig -u ${DEV}/r${VNDEVICE} 2>/dev/null || true
dd of=${FSIMG} if=/dev/zero count=${FSSIZE} bs=1k 2>/dev/null
# this suppresses the `invalid primary partition table: no magic'
awk 'BEGIN {printf "%c%c", 85, 170}' |\
dd of=${FSIMG} obs=1 seek=510 conv=notrunc 2>/dev/null
- vnconfig -s labels -c /dev/r${VNDEVICE} ${FSIMG}
- disklabel -Brw /dev/r${VNDEVICE} ${FSLABEL}
- newfs -i ${FSINODE} -T ${FSLABEL} -o space /dev/r${VNDEVICE}c
+ vnconfig -s labels -c ${DEV}/r${VNDEVICE} ${FSIMG}
+ disklabel -Brw ${DEV}/r${VNDEVICE} ${FSLABEL}
+ newfs -i ${FSINODE} -T ${FSLABEL} -o space ${DEV}/r${VNDEVICE}c
- mount /dev/${VNDEVICE}c ${MNT}
+ mount ${DEV}/${VNDEVICE}c ${MNT}
if [ -d ${FSPROTO} ]; then
(set -e && cd ${FSPROTO} && find . -print | cpio -dump ${MNT})
@@ -62,7 +84,7 @@
set `df -ki ${MNT} | tail -1`
umount ${MNT}
- vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true
+ vnconfig -u ${DEV}/r${VNDEVICE} 2>/dev/null || true
echo ">>> Filesystem is ${FSSIZE} K, $4 left"
echo ">>> ${FSINODE} bytes/inode, $7 left"
@@ -71,4 +93,8 @@
fi
break;
done
-rm -f /dev/*vnn*
+rm -f ${DEV}/*vnn*
+
+[ ${created_mnt} -eq 0 ] || { rmdir ${MNT}; }
+[ ${created_dev} -eq 0 ] || { rmdir ${DEV}; }
+
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000609220807.70887.qmail>
