From 288fe4dbdfe797b2d45208e75fe7137a35a4bff0 Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Mon, 8 Jan 1996 22:13:50 +0000 Subject: [PATCH] Moved doFS into shell-script so we can be more smart about it. make two boot floppies, one without help files for 4MB systems. Mine's loading one now. :-) -O2 may be needed. --- release/Makefile | 350 +++++++++++++++++++--------------------- release/doFS.sh | 82 ++++++++++ release/scripts/doFS.sh | 82 ++++++++++ 3 files changed, 330 insertions(+), 184 deletions(-) create mode 100644 release/doFS.sh create mode 100644 release/scripts/doFS.sh diff --git a/release/Makefile b/release/Makefile index 0a824c18cc22..826ae0e1b072 100644 --- a/release/Makefile +++ b/release/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.198 1996/01/03 23:40:59 joerg Exp $ +# $Id: Makefile,v 1.199 1996/01/06 20:13:48 joerg Exp $ # # How to roll a release: # @@ -12,7 +12,7 @@ # # SET THIS !!! BUILDNAME=2.2-current -#CHROOTDIR=/a/release +# CHROOTDIR=/a/release # If this is a RELEASE, then set #RELEASETAG=RELENG_2_1_0 @@ -48,10 +48,10 @@ NEWFSARGS= -c 80 -b 4096 -f 512 -i 4000 -m 0 -t 0 -u 0 \ ZIPNSPLIT= gzip --no-name -9 -c | split -b 240640 - -# Size of the mfs to put in the kernel we boot. -# You want to keep this as small as possible, it costs dearly in RAM. -BOOTMFSSIZE= 1000 -MFSINODE= 70000 +# Upper size for the mfs in the boot.flp kernel. +# These are adjusted down to the minimum needed but doFS.sh. +BOOTMFSSIZE= 1200 +MFSINODE= 50000 # Things which will get you into trouble if you change them DISTRIBUTIONS= bin ${EXTRA_DISTS} @@ -64,57 +64,51 @@ CD= ${RELEASEDIR}/cdrom WHICH_CRUNCH= boot root fixit .endif -release: +rerelease release: .if !defined(CHROOTDIR) || !defined(BUILDNAME) @echo "To make a release you must set CHROOTDIR and BUILDNAME" && false .endif +.if make(release) .if exists(${CHROOTDIR}) chflags -R noschg ${CHROOTDIR}/. -rm -rf ${CHROOTDIR} .endif -mkdir -p ${CHROOTDIR} - cd ${.CURDIR}/../etc ; ${MAKE} distrib-dirs DESTDIR=${CHROOTDIR} - cd ${.CURDIR}/../etc ; ${MAKE} distribution DESTDIR=${CHROOTDIR} - cd ${.CURDIR}/.. ; ${MAKE} install DESTDIR=${CHROOTDIR} - echo "#!/bin/sh" > ${CHROOTDIR}/mk - echo "set -ex" >> ${CHROOTDIR}/mk - echo "CFLAGS='-O -pipe'" >> ${CHROOTDIR}/mk - echo "export CFLAGS" >> ${CHROOTDIR}/mk - echo "RELEASEDIR=/R" >> ${CHROOTDIR}/mk - echo "export RELEASEDIR" >> ${CHROOTDIR}/mk - echo "cd /usr/src" >> ${CHROOTDIR}/mk - echo "make world" >> ${CHROOTDIR}/mk - echo "cd /usr/src/release" >> ${CHROOTDIR}/mk - echo "make obj" >> ${CHROOTDIR}/mk - echo "make doRELEASE" >> ${CHROOTDIR}/mk - echo "echo Release Finished" >> ${CHROOTDIR}/mk + cd ${.CURDIR}/../etc && ${MAKE} distrib-dirs DESTDIR=${CHROOTDIR} + cd ${.CURDIR}/../etc && ${MAKE} distribution DESTDIR=${CHROOTDIR} + cd ${.CURDIR}/.. && ${MAKE} install DESTDIR=${CHROOTDIR} .if !defined(RELEASETAG) - cd ${CHROOTDIR}/usr ; cvs co -P src + cd ${CHROOTDIR}/usr && cvs co -P src .else - cd ${CHROOTDIR}/usr ; cvs co -P -r ${RELEASETAG} src + cd ${CHROOTDIR}/usr && cvs co -P -r ${RELEASETAG} src +.endif +.endif +.if make(rerelease) +.if !defined(RELEASENOUPDATE) +.if !defined(RELEASETAG) + cd ${CHROOTDIR}/usr && cvs -q update -P -d src +.else + cd ${CHROOTDIR}/usr && cvs -q update -P -d -r ${RELEASETAG} src +.endif +.endif .endif ( cd ${CHROOTDIR}/usr/src/sys/conf && \ - cp newvers.sh foo && \ - sed "s/^RELEASE=.*/RELEASE=${BUILDNAME}/" foo > newvers.sh; rm foo ) + mv newvers.sh foo && \ + sed "s/^RELEASE=.*/RELEASE=${BUILDNAME}/" foo > newvers.sh&& rm foo ) ( cd ${CHROOTDIR}/usr/src/release/sysinstall && \ - sed "s/__RELEASE/${BUILDNAME}/" version.h > version.h.new && mv version.h.new version.h ) - chmod 755 ${CHROOTDIR}/mk - chroot ${CHROOTDIR} /mk - -# Same as above but for re-rolling the release after simply changing a few -# things. -rerelease: -.if !defined(CHROOTDIR) || !defined(BUILDNAME) - @echo "To make a re-release you must set CHROOTDIR and BUILDNAME" && false -.endif - @if [ ! -d ${CHROOTDIR} ]; then echo "No ${CHROOTDIR} directory to re-release in!"; exit 1; fi + sed "s/__RELEASE/${BUILDNAME}/" version.h > version.h.new && \ + mv version.h.new version.h ) echo "#!/bin/sh" > ${CHROOTDIR}/mk echo "set -ex" >> ${CHROOTDIR}/mk - echo "CFLAGS='-O -pipe'" >> ${CHROOTDIR}/mk + echo "CFLAGS='-O2 -pipe'" >> ${CHROOTDIR}/mk echo "export CFLAGS" >> ${CHROOTDIR}/mk echo "RELEASEDIR=/R" >> ${CHROOTDIR}/mk echo "export RELEASEDIR" >> ${CHROOTDIR}/mk echo "cd /usr/src" >> ${CHROOTDIR}/mk +.if make(release) + echo "make world" >> ${CHROOTDIR}/mk +.endif +.if make(rerelease) echo "make all install" >> ${CHROOTDIR}/mk echo "cd /usr/src/release/libdisk" >> ${CHROOTDIR}/mk echo "make obj" >> ${CHROOTDIR}/mk @@ -122,22 +116,12 @@ rerelease: echo "cd /usr/src/release/sysinstall" >> ${CHROOTDIR}/mk echo "make obj" >> ${CHROOTDIR}/mk echo "make all" >> ${CHROOTDIR}/mk +.endif echo "cd /usr/src/release" >> ${CHROOTDIR}/mk echo "make obj" >> ${CHROOTDIR}/mk echo "make doRELEASE" >> ${CHROOTDIR}/mk - echo "echo Re-Release Finished" >> ${CHROOTDIR}/mk -.if !defined(RELEASENOUPDATE) -.if !defined(RELEASETAG) - cd ${CHROOTDIR}/usr ; cvs update -P -d -q src -.else - cd ${CHROOTDIR}/usr ; cvs update -P -d -q -r ${RELEASETAG} src -.endif -.endif - ( cd ${CHROOTDIR}/usr/src/sys/conf && \ - mv newvers.sh foo && \ - sed "s/^RELEASE=.*/RELEASE=${BUILDNAME}/" foo > newvers.sh; rm foo ) - ( cd ${CHROOTDIR}/usr/src/release/sysinstall && \ - sed "s/__RELEASE/${BUILDNAME}/" version.h > version.h.new && mv version.h.new version.h ) + echo "echo make ${.TARGET} Finished" >> ${CHROOTDIR}/mk + cp ${.CURDIR}/Makefile ${CHROOTDIR}/usr/src/release chmod 755 ${CHROOTDIR}/mk chroot ${CHROOTDIR} /mk @@ -150,7 +134,7 @@ clean: # Clean out ${RELEASEDIR} and make the directory structure. release.1: - @cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR + @cd ${.CURDIR} && $(MAKE) ckRELEASEDIR -mkdir ${RELEASEDIR} chflags -R noschg ${RELEASEDIR}/. rm -rf ${RELEASEDIR}/* @@ -159,14 +143,14 @@ release.1: mkdir ${RD}/trees mkdir ${RD}/dists for i in ${ALL_DISTS} ; do \ - mkdir ${RD}/trees/$$i ; \ - mkdir ${RD}/dists/$$i ; \ + mkdir ${RD}/trees/$$i && \ + mkdir ${RD}/dists/$$i && \ mtree -deU -f ${MTREEFILES}/BSD.root.dist \ - -p ${RD}/trees/$$i > /dev/null ; \ + -p ${RD}/trees/$$i > /dev/null && \ mtree -deU -f ${MTREEFILES}/BSD.usr.dist \ - -p ${RD}/trees/$$i/usr > /dev/null ; \ + -p ${RD}/trees/$$i/usr > /dev/null && \ mtree -deU -f ${MTREEFILES}/BSD.include.dist \ - -p ${RD}/trees/$$i/usr/include > /dev/null ; \ + -p ${RD}/trees/$$i/usr/include > /dev/null && \ mtree -deU -f ${MTREEFILES}/BSD.var.dist \ -p ${RD}/trees/$$i/var > /dev/null ; \ done @@ -174,51 +158,38 @@ release.1: # Install the system into the various distributions. release.2: - @cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR + @cd ${.CURDIR} && $(MAKE) ckRELEASEDIR cd ${.CURDIR}/../etc && make distrib-dirs DESTDIR=${RD}/trees/bin - cd ${.CURDIR}/.. ; make distribute DISTDIR=${RD}/trees + cd ${.CURDIR}/.. && make distribute DISTDIR=${RD}/trees +.if exists(${.CURDIR}/../eBones) cd ${.CURDIR}/../eBones && ( \ - make bootstrap ;\ - make obj all help-distribute DISTDIR=${RD}/trees ;\ + make bootstrap &&\ + make obj all help-distribute DISTDIR=${RD}/trees &&\ make kprog \ ) +.endif chflags -R noschg ${RD}/trees + # We don't really want to make a compat20 distribution for just + # one file. uudecode ${.CURDIR}/compat20/libgcc.so.261.0.uu install -m 444 -o bin -g bin libgcc.so.261.0 ${RD}/trees/bin/usr/lib touch release.2 -# Make and install a couple of kernels we need. To keep BOOTMFS smaller, -# we cull out certain options (see fgrep -v) before building it. +# Make and install the generic kernel. release.3: - rm -rf ${RD}/kernels - mkdir -p ${RD}/kernels @cd ${.CURDIR} && $(MAKE) ckRELEASEDIR - cd ${.CURDIR}/../sys/i386/conf && \ - fgrep -v SYSV GENERIC | \ - fgrep -v pty | \ - fgrep -v PROCFS | \ - sed 's/GENERIC/BOOTMFS/g' > BOOTMFS && \ - echo "options \"MFS_ROOT=${BOOTMFSSIZE}\"" >> BOOTMFS && \ - echo "options MFS" >> BOOTMFS - - for i in BOOTMFS GENERIC ; do \ - cd ${.CURDIR}/../sys/i386/conf && \ - config $$i && \ - cd ${.CURDIR}/../sys/compile/$$i && \ - make depend && \ - make kernel && \ - cp kernel ${RD}/kernels/$$i ; \ - rm -rf ${.CURDIR}/../sys/compile/$$i ; \ - done - rm -f ${.CURDIR}/../sys/i386/conf/BOOTCDROM + rm -f ${RD}/kernels/GENERIC + rm -rf ${.CURDIR}/../sys/compile/GENERIC + cd ${.CURDIR} && ${MAKE} doKERNEL KERNEL=GENERIC + rm -rf ${.CURDIR}/../sys/compile/GENERIC touch release.3 # Make and install the three crunched binaries which live on the floppies. # You are not supposed to like this :-) release.4: + @cd ${.CURDIR} && $(MAKE) ckRELEASEDIR cd ${.CURDIR}/libdisk && make obj && make depend && make all cd ${.CURDIR}/sysinstall && make obj && make depend && make all - @cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR rm -rf ${RD}/crunch mkdir -p ${RD}/crunch for j in ${WHICH_CRUNCH} ; do \ @@ -226,39 +197,39 @@ release.4: mkdir $${j}_crunch && \ ( cd $${j}_crunch && \ crunchgen ${.CURDIR}/$${j}_crunch.conf && \ - ${MAKE} -f $${j}_crunch.mk objs exe NOCRYPT=yes \ + ${MAKE} -f $${j}_crunch.mk all NOCRYPT=yes \ "CFLAGS=${CFLAGS} -DCRUNCHED_BINARY") && \ mv $${j}_crunch/$${j}_crunch ${RD}/crunch/$${j} && \ - rm -rf $${j}_crunch ; \ + true || rm -rf $${j}_crunch ; \ done touch release.4 # Fix up the distributions. release.5: - @cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR + @cd ${.CURDIR} && $(MAKE) ckRELEASEDIR ln -f ${RD}/kernels/GENERIC ${RD}/trees/bin/kernel.GENERIC if [ -d ${RD}/trees/bin/usr/share/man ] ; then \ - rm -rf ${RD}/trees/manpages/usr/share/man ;\ + rm -rf ${RD}/trees/manpages/usr/share/man &&\ mv ${RD}/trees/bin/usr/share/man \ ${RD}/trees/manpages/usr/share/man ;\ fi if [ -d ${RD}/trees/bin/usr/games ] ; then \ - rm -rf ${RD}/trees/games/usr/games ;\ + rm -rf ${RD}/trees/games/usr/games &&\ mv ${RD}/trees/bin/usr/games \ ${RD}/trees/games/usr/games ;\ fi if [ -d ${RD}/trees/bin/usr/share/games ] ; then \ - rm -rf ${RD}/trees/games/usr/share/games ;\ + rm -rf ${RD}/trees/games/usr/share/games &&\ mv ${RD}/trees/bin/usr/share/games \ ${RD}/trees/games/usr/share/games ;\ fi if [ -d ${RD}/trees/bin/var/games ] ; then \ - rm -rf ${RD}/trees/games/var/games ;\ + rm -rf ${RD}/trees/games/var/games &&\ mv ${RD}/trees/bin/var/games \ ${RD}/trees/games/var/games ;\ fi if [ -d ${RD}/trees/bin/usr/share/dict ] ; then \ - rm -rf ${RD}/trees/dict/usr/share/dict ;\ + rm -rf ${RD}/trees/dict/usr/share/dict &&\ mv ${RD}/trees/bin/usr/share/dict \ ${RD}/trees/dict/usr/share/dict ;\ fi @@ -283,16 +254,16 @@ release.5: # Make binary dists, notice that DES dist isn't finished yet. release.6: - @cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR + @cd ${.CURDIR} && $(MAKE) ckRELEASEDIR rm -rf ${RD}/dists mkdir -p ${RD}/dists mkdir -p ${RD}/info @for i in ${DISTRIBUTIONS} ; \ do \ if [ -d ${RD}/trees/$${i} ] ; then \ - cd ${.CURDIR} ; \ + cd ${.CURDIR} && \ $(MAKE) doTARBALL SD=${RD}/trees/$${i} \ - TN=$$i TD=$$i ARG="." ; \ + TN=$$i TD=$$i ARG="." && \ echo "$${i} distribution is finished."; \ fi ; \ done @@ -301,35 +272,35 @@ release.6: # Make source dists, and finish off DES too release.7: - @cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR - @cd ${.CURDIR} ; $(MAKE) doTARBALL SD=/usr/src \ + @cd ${.CURDIR} && $(MAKE) ckRELEASEDIR + @cd ${.CURDIR} && $(MAKE) doTARBALL SD=/usr/src \ TD=src TN=sbase ARG="[A-Z]*" - @for i in `cd /usr/src ; echo [a-z]*` ; do \ + @for i in `cd /usr/src && echo [a-z]*` ; do \ if [ -d /usr/src/$$i -a "$$i" != "CVS" ] ; then \ - cd ${.CURDIR} ; \ + cd ${.CURDIR} && \ $(MAKE) doTARBALL SD=/usr/src \ TN=`echo s$$i | tr -d '.' | sed 's/usr/u/'` \ TD=src ARG="$$i" ; \ fi ; \ done .if defined(EXTRA_SRC) - @set ${EXTRA_SRC} ; \ + @set ${EXTRA_SRC} && \ while [ $$# -ge 2 ] ; do \ if [ -d /usr/src/$$1 -a "$$1" != "CVS" ] ; then \ - cd ${.CURDIR} ; \ + cd ${.CURDIR} && \ $(MAKE) doTARBALL SD=/usr/src \ TN="s$$2" \ TD=src ARG="$$1" ; \ - fi ; \ - shift ; shift ; \ + fi && \ + shift && shift ; \ done .endif ( cd ${RD}/dists/src && \ if [ -f ssecure.aa ] ; then mv ssecure.* ../des ; fi && \ if [ -f sebones.aa ] ; then mv sebones.* ../des ; fi ) + ( cd ${RD}/dists && \ + if [ -f krb/krb.aa ] ; then mv krb/* des && rmdir krb ; fi ) @echo "src distribution is finished." - mv ${RD}/dists/krb/* ${RD}/dists/des - rmdir ${RD}/dists/krb touch release.7 # Complete the bootfd @@ -358,7 +329,7 @@ release.8: write_mfs_in_kernel ( cd ${RD}/trees/bin/dev && \ ls console tty ttyv0 ttyv1 ttyv2 ttyv3 null zero \ *[sw]d* cuaa[01] cuaa[23] fd[01] rfd[01] \ - cd0a mcd0a scd0a matcd0a wcd0c rst0 rft0 rwt0 | \ + cd0a mcd0a scd0a matcd0a rst0 rft0 rwt0 | \ cpio -dump ${RD}/mfsfd/dev ) ( cd ${RD}/mfsfd/dev && rm -f *[sw]d*[bdefgh] ) cd ${RD}/trees/bin && ls ${BOOT1} | cpio -dump ${RD}/mfsfd/stand @@ -366,32 +337,24 @@ release.8: write_mfs_in_kernel echo "ftp 21/tcp" >> ${RD}/mfsfd/stand/etc/services echo "domain 53/tcp nameserver" >> ${RD}/mfsfd/stand/etc/services echo "domain 53/udp nameserver" >> ${RD}/mfsfd/stand/etc/services + install -c ${.CURDIR}/../COPYRIGHT ${RD}/mfsfd/stand/help/COPYRIGHT.hlp + # make the small bootfd + sh ${.CURDIR}/doFS.sh ${RD} ${MNT} ${BOOTMFSSIZE} ${RD}/mfsfd \ + ${MFSINODE} minimum + mv fs-image fs-image.4 + mv fs-image.size fs-image.4.size + # add more stuff for the complete bootfd tar --exclude CVS -cf - -C ${.CURDIR}/sysinstall help | \ tar xvf - -C ${RD}/mfsfd/stand - install -c ${.CURDIR}/../COPYRIGHT ${RD}/mfsfd/stand/help/COPYRIGHT.hlp - ( \ - a=`expr ${BOOTMFSSIZE} \* 2` && \ - echo && \ - echo "mfs${BOOTMFSSIZE}:ty=mfs:se#512:nt#1:rm#300:\\" && \ - echo " :ns#$$a:nc#1:\\" && \ - echo " :pa#$$a:oa#0:ba#4096:fa#512:\\" && \ - echo " :pc#$$a:oc#0:bc#4096:fc#512:" && \ - echo \ - ) >> /etc/disktab + sh ${.CURDIR}/doFS.sh ${RD} ${MNT} ${BOOTMFSSIZE} ${RD}/mfsfd \ + ${MFSINODE} minimum + mv fs-image fs-image.std + mv fs-image.size fs-image.std.size - # first the standard boot floppy, with GENERIC kernel - cd ${.CURDIR} && ${MAKE} doFS FSSIZE=${BOOTMFSSIZE} \ - FSPROTO=${RD}/mfsfd FSLABEL=mfs${BOOTMFSSIZE} \ - FSINODE=${MFSINODE} - rm -rf ${RD}/bootfd - mkdir ${RD}/bootfd - cp ${RD}/kernels/BOOTMFS ${RD}/bootfd/kernel - ./write_mfs_in_kernel ${RD}/bootfd/kernel fs-image - kzip ${RD}/bootfd/kernel - mv ${RD}/bootfd/kernel ${RD}/kernels/MFSKERNEL - mv ${RD}/bootfd/kernel.kz ${RD}/bootfd/kernel - ls -l ${RD}/bootfd/kernel - cd ${.CURDIR} && ${MAKE} doFLOPPY FLOPPY=boot + # rm -rf ${.CURDIR}/../sys/compile/BOOTMFS + cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=4 + cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=std + # rm -rf ${.CURDIR}/../sys/compile/BOOTMFS touch release.8 # Complete the rootfd directory @@ -404,14 +367,27 @@ release.9: @cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=root \ DIR=${RD}/rootfd/stand ZIP=false tar --exclude CVS -cf - -C ${RD} info | tar xvf - -C ${RD}/rootfd/stand - mv ${RD}/rootfd/stand/info/krb/* ${RD}/rootfd/stand/info/des - rmdir ${RD}/rootfd/stand/info/krb - mv ${RD}/rootfd/stand/info/src/ssecure.inf ${RD}/rootfd/stand/info/des - mv ${RD}/rootfd/stand/info/src/sebones.inf ${RD}/rootfd/stand/info/des - tar -cf - -C ${RD}/trees/bin/dev MAKEDEV | tar xvf - -C ${RD}/rootfd/stand + ( cd ${RD}/rootfd/stand/info && \ + if [ -d krb ] ; then \ + mv krb/* des && \ + rmdir krb ; \ + fi ) + if [ -f ${RD}/rootfd/stand/info/src/ssecure.inf ] ; then \ + mv ${RD}/rootfd/stand/info/src/ssecure.inf \ + ${RD}/rootfd/stand/info/des ; \ + fi + if [ -f ${RD}/rootfd/stand/info/src/sebones.inf ] ; then \ + mv ${RD}/rootfd/stand/info/src/sebones.inf \ + ${RD}/rootfd/stand/info/des ; \ + fi + tar -cf - -C ${RD}/trees/bin/dev MAKEDEV | \ + tar xvf - -C ${RD}/rootfd/stand cp ${.CURDIR}/sysinstall/power.uu ${RD}/rootfd/stand && \ cd ${RD}/rootfd/stand && uudecode power.uu && rm power.uu - cd ${RD}/rootfd && ( rm -f OK && find . -print && touch OK && echo OK ) | cpio -H newc -oa | gzip -9 -c | dd conv=osync > ${RD}/floppies/root.tmp + cd ${RD}/rootfd && \ + ( rm -f OK && find . -print && touch OK && echo OK ) | \ + cpio -H newc -oa | gzip -9 -c | \ + dd conv=osync > ${RD}/floppies/root.tmp mv ${RD}/floppies/root.tmp ${RD}/floppies/root.flp touch release.9 @@ -430,7 +406,10 @@ release.10: cpio -dump ${RD}/fixitfd/dev ) cp ${RD}/trees/bin/etc/spwd.db ${RD}/fixitfd/etc cp ${.CURDIR}/fixit.profile ${RD}/fixitfd/.profile - cd ${.CURDIR} && ${MAKE} doFLOPPY FLOPPY=fixit FDINODE=1024 + rm -f ${RD}/floppies/fixit.flp + sh ${.CURDIR}/doFS.sh ${RD} ${MNT} ${FDSIZE} ${RD}/fixitfd \ + 1024 ${FDLABEL} + mv fs-image ${RD}/floppies/fixit.flp touch release.10 ftp.1: @@ -464,13 +443,13 @@ cdrom.1: doTARBALL: .if !defined(SD) - @echo "SD undefined in doTARBALL" ; exit 1 + @echo "SD undefined in doTARBALL" && exit 1 .endif .if !defined(TD) - @echo "TB undefined in doTARBALL" ; exit 1 + @echo "TB undefined in doTARBALL" && exit 1 .endif .if !defined(ARG) - @echo "ARG undefined in doTARBALL" ; exit 1 + @echo "ARG undefined in doTARBALL" && exit 1 .endif rm -rf ${RD}/dists/${TD}/${TN}* mkdir -p ${RD}/dists/${TD} @@ -515,57 +494,15 @@ ckRELEASEDIR: @echo "To make a release RELEASEDIR must be defined" && false .endif -doFLOPPY: -.if !defined(FLOPPY) - @echo "FLOPPY undefined in doFLOPPY" ; exit 1 -.endif - rm -f ${RD}/floppies/${FLOPPY}.flp - cd ${.CURDIR} && ${MAKE} doFS FSSIZE=${FDSIZE} \ - FSPROTO=${RD}/${FLOPPY}fd \ - FSLABEL=${FDLABEL} FSINODE=${FDINODE} - mv fs-image ${RD}/floppies/${FLOPPY}.flp - -doFS: -.if !defined(FSSIZE) - @echo "FSSIZE undefined in doFS" ; exit 1 -.endif -.if !defined(FSPROTO) - @echo "FSPROTO undefined in doFS" ; exit 1 -.endif -.if !defined(FSINODE) - @echo "FSINODE undefined in doFS" ; exit 1 -.endif - rm -f fs-image - if [ ! -b /dev/${VNDEVICE} -o ! -c /dev/r${VNDEVICE} ] ; then \ - cd /dev && sh MAKEDEV ${VNDEVICE} ; fi - @umount /dev/${VNDEVICE} 2>/dev/null || true - @umount ${MNT} 2>/dev/null || true - @vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true - dd of=fs-image if=/dev/zero count=${FSSIZE} bs=1k 2>/dev/null - vnconfig -s labels -c /dev/r${VNDEVICE} fs-image -.if defined(FSLABEL) - disklabel -w -r -B \ - -b ${RD}/trees/bin/usr/mdec/fdboot \ - -s ${RD}/trees/bin/usr/mdec/bootfd \ - /dev/r${VNDEVICE} ${FSLABEL} -.endif - newfs -u 0 -t 0 -i ${FSINODE} -m 0 -T ${FSLABEL} /dev/r${VNDEVICE}a - mount /dev/${VNDEVICE}a ${MNT} - cd ${FSPROTO} && find . -print | cpio -dump ${MNT} - df -i /mnt - umount ${MNT} - fsck /dev/r${VNDEVICE}a < /dev/null - @vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true - installCRUNCH: .if !defined(CRUNCH) - @echo "CRUNCH undefined in installCRUNCH" ; exit 1 + @echo "CRUNCH undefined in installCRUNCH" && exit 1 .endif .if !defined(DIR) - @echo "DIR undefined in installCRUNCH" ; exit 1 + @echo "DIR undefined in installCRUNCH" && exit 1 .endif .if !defined(ZIP) - @echo "ZIP undefined in installCRUNCH" ; exit 1 + @echo "ZIP undefined in installCRUNCH" && exit 1 .endif if ${ZIP} ; then \ gzip -9 < ${RD}/crunch/${CRUNCH} > ${DIR}/${CRUNCH}_crunch ; \ @@ -576,4 +513,49 @@ installCRUNCH: for i in `crunchgen -l ${.CURDIR}/${CRUNCH}_crunch.conf` ; do \ ln -f ${DIR}/${CRUNCH}_crunch ${DIR}/$$i ; \ done + +# +# --==## Compile a kernel by name ${KERNEL} ##==-- +# +# We don't erase the sys/compile/${KERNEL} directory, since somebody +# may want to reuse it (release.8 presently) +# +doKERNEL: + @cd ${.CURDIR} && $(MAKE) ckRELEASEDIR + rm -f ${RD}/kernels/${KERNEL} + cd ${.CURDIR}/../sys/i386/conf && config -n ${KERNEL} + cd ${.CURDIR}/../sys/compile/${KERNEL} && \ + make depend && \ + make kernel && \ + cp kernel ${RD}/kernels/${KERNEL} + +# +# --==## Put a filesystem into a BOOTMFS kernel ##==-- +# +doMFSKERN: + @cd ${.CURDIR} && $(MAKE) ckRELEASEDIR + rm -f ${RD}/kernels/BOOTMFS.${FSIMAGE} + cd ${.CURDIR}/../sys/i386/conf && \ + fgrep -v SYSV GENERIC | \ + fgrep -v pty | \ + fgrep -v PROCFS | \ + sed 's/GENERIC/BOOTMFS/g' > BOOTMFS && \ + echo "options MFS" >> BOOTMFS + echo "options \"MFS_ROOT=`cat fs-image.${FSIMAGE}.size`\"" >> \ + ${.CURDIR}/../sys/i386/conf/BOOTMFS + cd ${.CURDIR} && ${MAKE} doKERNEL KERNEL=BOOTMFS + rm -rf ${RD}/boot.${FSIMAGE} + mkdir ${RD}/boot.${FSIMAGE} + mv ${RD}/kernels/BOOTMFS ${RD}/boot.${FSIMAGE}/kernel + ./write_mfs_in_kernel ${RD}/boot.${FSIMAGE}/kernel \ + fs-image.${FSIMAGE} + kzip -v ${RD}/boot.${FSIMAGE}/kernel + mv ${RD}/boot.${FSIMAGE}/kernel ${RD}/kernels/MFSKERNEL.${FSIMAGE} + mv ${RD}/boot.${FSIMAGE}/kernel.kz ${RD}/boot.${FSIMAGE}/kernel + ls -l ${RD}/boot.${FSIMAGE}/kernel + rm -f ${RD}/floppies/boot${FSIMAGE}.flp + sh ${.CURDIR}/doFS.sh ${RD} ${MNT} ${FDSIZE} ${RD}/boot.${FSIMAGE} \ + ${FDINODE} ${FDLABEL} + mv fs-image ${RD}/floppies/boot${FSIMAGE}.flp + .include diff --git a/release/doFS.sh b/release/doFS.sh new file mode 100644 index 000000000000..4548bd589c28 --- /dev/null +++ b/release/doFS.sh @@ -0,0 +1,82 @@ +: +set -e + +VNDEVICE=vn0 + +RD=$1 ; shift +MNT=$1 ; shift +FSSIZE=$1 ; shift +FSPROTO=$1 ; shift +FSINODE=$1 ; shift +FSLABEL=$1 ; shift + +while true +do + rm -f fs-image + + if [ ! -b /dev/${VNDEVICE} -o ! -c /dev/r${VNDEVICE} ] ; then + cd /dev && sh MAKEDEV ${VNDEVICE} + fi + + umount /dev/${VNDEVICE} 2>/dev/null || true + + umount ${MNT} 2>/dev/null || true + + vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true + + dd of=fs-image if=/dev/zero count=${FSSIZE} bs=1k 2>/dev/null + + vnconfig -s labels -c /dev/r${VNDEVICE} fs-image + + if [ "$FSLABEL" = "minimum" ] ; then + sed '/^minimum:/,$d' /etc/disktab > /etc/disktab.tmp + cat /etc/disktab.tmp > /etc/disktab + rm -f /etc/disktab.tmp + ( + a=`expr ${FSSIZE} \* 2` + echo + echo "minimum:ty=mfs:se#512:nt#1:rm#300:\\" + echo " :ns#$a:nc#1:\\" + echo " :pa#$a:oa#0:ba#4096:fa#512:\\" + echo " :pc#$a:oc#0:bc#4096:fc#512:" + echo + ) >> /etc/disktab + fi + + disklabel -w -r -B \ + -b ${RD}/trees/bin/usr/mdec/fdboot \ + -s ${RD}/trees/bin/usr/mdec/bootfd \ + /dev/r${VNDEVICE} ${FSLABEL} + + newfs -u 0 -t 0 -i ${FSINODE} -m 0 -T ${FSLABEL} /dev/r${VNDEVICE}a + + mount /dev/${VNDEVICE}a ${MNT} + + ( cd ${FSPROTO} && find . -print | cpio -dump ${MNT} ) + + set `df -i /mnt | tail -1` + + umount ${MNT} + + fsck -p /dev/r${VNDEVICE}a < /dev/null + + vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true + + if [ $FSLABEL != "minimum" ] ; then + echo ${FSSIZE} > fs-image.size + break + fi + + echo ">>> Filesystem is ${FSSIZE} K, $4 left" + echo ">>> ${FSINODE} bytes/inode, $7 left" + if [ $4 -gt 8 ] ; then + FSSIZE=`expr ${FSSIZE} - $4 + 7` + continue + fi + if [ $7 -gt 32 ] ; then + FSINODE=`expr ${FSINODE} + 8192` + continue + fi + echo ${FSSIZE} > fs-image.size + break; +done diff --git a/release/scripts/doFS.sh b/release/scripts/doFS.sh new file mode 100644 index 000000000000..4548bd589c28 --- /dev/null +++ b/release/scripts/doFS.sh @@ -0,0 +1,82 @@ +: +set -e + +VNDEVICE=vn0 + +RD=$1 ; shift +MNT=$1 ; shift +FSSIZE=$1 ; shift +FSPROTO=$1 ; shift +FSINODE=$1 ; shift +FSLABEL=$1 ; shift + +while true +do + rm -f fs-image + + if [ ! -b /dev/${VNDEVICE} -o ! -c /dev/r${VNDEVICE} ] ; then + cd /dev && sh MAKEDEV ${VNDEVICE} + fi + + umount /dev/${VNDEVICE} 2>/dev/null || true + + umount ${MNT} 2>/dev/null || true + + vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true + + dd of=fs-image if=/dev/zero count=${FSSIZE} bs=1k 2>/dev/null + + vnconfig -s labels -c /dev/r${VNDEVICE} fs-image + + if [ "$FSLABEL" = "minimum" ] ; then + sed '/^minimum:/,$d' /etc/disktab > /etc/disktab.tmp + cat /etc/disktab.tmp > /etc/disktab + rm -f /etc/disktab.tmp + ( + a=`expr ${FSSIZE} \* 2` + echo + echo "minimum:ty=mfs:se#512:nt#1:rm#300:\\" + echo " :ns#$a:nc#1:\\" + echo " :pa#$a:oa#0:ba#4096:fa#512:\\" + echo " :pc#$a:oc#0:bc#4096:fc#512:" + echo + ) >> /etc/disktab + fi + + disklabel -w -r -B \ + -b ${RD}/trees/bin/usr/mdec/fdboot \ + -s ${RD}/trees/bin/usr/mdec/bootfd \ + /dev/r${VNDEVICE} ${FSLABEL} + + newfs -u 0 -t 0 -i ${FSINODE} -m 0 -T ${FSLABEL} /dev/r${VNDEVICE}a + + mount /dev/${VNDEVICE}a ${MNT} + + ( cd ${FSPROTO} && find . -print | cpio -dump ${MNT} ) + + set `df -i /mnt | tail -1` + + umount ${MNT} + + fsck -p /dev/r${VNDEVICE}a < /dev/null + + vnconfig -u /dev/r${VNDEVICE} 2>/dev/null || true + + if [ $FSLABEL != "minimum" ] ; then + echo ${FSSIZE} > fs-image.size + break + fi + + echo ">>> Filesystem is ${FSSIZE} K, $4 left" + echo ">>> ${FSINODE} bytes/inode, $7 left" + if [ $4 -gt 8 ] ; then + FSSIZE=`expr ${FSSIZE} - $4 + 7` + continue + fi + if [ $7 -gt 32 ] ; then + FSINODE=`expr ${FSINODE} + 8192` + continue + fi + echo ${FSSIZE} > fs-image.size + break; +done