1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-20 11:11:24 +00:00
freebsd/release/Makefile

598 lines
20 KiB
Makefile
Raw Normal View History

# $Id: Makefile,v 1.245 1996/10/10 09:22:16 jkh Exp $
#
1995-02-25 22:08:48 +00:00
# How to roll a release:
#
# make release CHROOTDIR=<lots of disk> [ RELEASETAG=something ]
#
# As far as I know, this will roll everything nicely into the "stage"
# directory. I still need to write the two rules to move that into
# the "cdrom" and "ftp" directories.
# I also need to "make ports" and install those, but I'm not going to do
# that on a 14.4 line just yet...
#
# SET THIS !!!
#BUILDNAME=2.2-960501-SNAP
#CHROOTDIR=/junk/release
# If this is a RELEASE, then set
#RELEASETAG=RELENG_2_1_0
1995-02-25 22:08:48 +00:00
# Things which without too much trouble can be considered variables
1995-03-17 04:54:13 +00:00
EXPORT_DISTS= games manpages proflibs dict info doc
1995-06-11 19:33:05 +00:00
EXTRA_DISTS= krb des ${EXPORT_DISTS}
ALL_DISTS= bin ${EXTRA_DISTS}
KERNELS?= GENERIC
1995-03-17 04:54:13 +00:00
# Extra source tarballs; each argument is a pair of source dir and
# distribution name. The dist name should not exceed 7 characters
# (another "s" for "source" will be prepended).
EXTRA_SRC+= usr.sbin/sendmail/cf smailcf
1995-06-11 19:33:05 +00:00
BOOT1= etc/protocols etc/sysconfig
# mountpoint for filesystems.
MNT= /mnt
# other floppy parameters.
FDSIZE= 1200
1995-02-25 22:08:48 +00:00
FDLABEL= fd1200
1995-02-25 22:08:48 +00:00
ZIPNSPLIT= gzip --no-name -9 -c | split -b 240640 -
# Upper size for the mfs in the boot.flp kernel.
# These are adjusted down to the minimum needed by doFS.sh.
BOOTMFSSIZE= 1200
MFSINODE= 42000
1995-02-25 22:08:48 +00:00
# Things which will get you into trouble if you change them
1995-05-30 08:29:07 +00:00
DISTRIBUTIONS= bin ${EXTRA_DISTS}
1995-02-25 22:08:48 +00:00
MTREEFILES= ${.CURDIR}/../etc/mtree
RD= ${RELEASEDIR}/stage
FD= ${RELEASEDIR}/ftp
CD= ${RELEASEDIR}/cdrom
.if !defined(WHICH_CRUNCH)
WHICH_CRUNCH= boot fixit
.endif
REDO?= sysinstall
REDOSED= sed -e 's/dirs/release.1/' -e 's/trees/release.2/' \
-e 's/kerns/release.3/' -e 's/sysinstall/release.4/' \
-e 's/fixup/release.5/' -e 's/tarbin/release.6/' \
-e 's/tarsrc/release.7/' -e 's/boot\.flp/release.8/' \
-e 's/fixit\.flp/release.9/' -e 's/ftp/ftp.1/' \
-e 's/cdrom/cdrom.1/'
REDOREDO!= echo ${REDO} | ${REDOSED}
rerelease release:
.if !defined(CHROOTDIR) || !defined(BUILDNAME)
@echo "To make a release you must set CHROOTDIR and BUILDNAME" && false
1995-02-26 01:35:32 +00:00
.endif
.if make(release)
.if exists(${CHROOTDIR})
1995-02-25 22:08:48 +00:00
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}
1995-02-25 22:08:48 +00:00
.if !defined(RELEASETAG)
cd ${CHROOTDIR}/usr && rm -rf src && \
cvs -d ${CVSROOT} co -P src
.if defined(INTCVSROOT)
cd ${CHROOTDIR}/usr && \
cvs -d ${INTCVSROOT} co -P src/secure src/eBones
.endif
1995-02-25 22:08:48 +00:00
.else
cd ${CHROOTDIR}/usr && rm -rf src && \
cvs co -d ${CVSROOT} -P -r ${RELEASETAG} src
.if defined(INTCVSROOT)
cd ${CHROOTDIR}/usr && \
cvs -d ${INTCVSROOT} co -P -r ${RELEASETAG} src/secure src/eBones
.endif
.endif
.if defined(LOCAL_PATCHES) && exists(${LOCAL_PATCHES})
cd ${CHROOTDIR}/usr/src && patch --silent < ${LOCAL_PATCHES}
.endif
.endif
.if make(rerelease)
.if !defined(RELEASENOUPDATE)
.if !defined(RELEASETAG)
cd ${CHROOTDIR}/usr/src && cvs -q update -P -d
.else
cd ${CHROOTDIR}/usr/src && cvs -q update -P -d -r ${RELEASETAG}
.endif
.endif
1995-02-25 22:08:48 +00:00
.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 XXXX )
-test -f install.cfg && cp install.cfg ${CHROOTDIR}/usr/src/release
echo "#!/bin/sh" > ${CHROOTDIR}/mk
echo "set -ex" >> ${CHROOTDIR}/mk
echo "CFLAGS='-O2 -pipe'" >> ${CHROOTDIR}/mk
1995-06-11 19:33:05 +00:00
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
.endif
1995-05-09 02:24:39 +00:00
echo "cd /usr/src/release" >> ${CHROOTDIR}/mk
1996-06-26 19:06:11 +00:00
echo "make obj OBJLINK=yes" >> ${CHROOTDIR}/mk
echo "cd obj" >> ${CHROOTDIR}/mk
echo "rm -f ${REDOREDO}" >> ${CHROOTDIR}/mk
echo "cd /usr/src/release" >> ${CHROOTDIR}/mk
echo "make doRELEASE" >> ${CHROOTDIR}/mk
echo "echo make ${.TARGET} Finished" >> ${CHROOTDIR}/mk
chmod 755 ${CHROOTDIR}/mk
chroot ${CHROOTDIR} /mk
whap:
( cd ${CHROOTDIR}/usr/src/release/sysinstall && \
sed "s/__RELEASE/${BUILDNAME}/" version.h > version.h.new && mv version.h.new version.h )
1995-02-25 22:08:48 +00:00
clean:
rm -rf boot_crunch release.[0-9] release.1[0]
1995-02-25 22:08:48 +00:00
# Clean out ${RELEASEDIR} and make the directory structure.
release.1:
@cd ${.CURDIR} && $(MAKE) ckRELEASEDIR
1995-02-25 22:08:48 +00:00
-mkdir ${RELEASEDIR}
chflags -R noschg ${RELEASEDIR}/.
rm -rf ${RELEASEDIR}/*
mkdir ${RD}
mkdir ${RD}/floppies
mkdir ${RD}/trees
1995-02-25 22:08:48 +00:00
mkdir ${RD}/dists
1996-01-10 08:51:08 +00:00
mkdir ${RD}/kernels
for i in ${ALL_DISTS} ; do \
mkdir ${RD}/trees/$$i && \
mkdir ${RD}/dists/$$i && \
1995-02-25 22:08:48 +00:00
mtree -deU -f ${MTREEFILES}/BSD.root.dist \
-p ${RD}/trees/$$i > /dev/null && \
1995-02-25 22:08:48 +00:00
mtree -deU -f ${MTREEFILES}/BSD.usr.dist \
-p ${RD}/trees/$$i/usr > /dev/null && \
mtree -deU -f ${MTREEFILES}/BSD.include.dist \
-p ${RD}/trees/$$i/usr/include > /dev/null && \
1995-02-25 22:08:48 +00:00
mtree -deU -f ${MTREEFILES}/BSD.var.dist \
-p ${RD}/trees/$$i/var > /dev/null ; \
done
1995-02-25 22:08:48 +00:00
touch release.1
# Install the system into the various distributions.
release.2:
@cd ${.CURDIR} && $(MAKE) ckRELEASEDIR
cd ${.CURDIR}/../etc && make distrib-dirs DESTDIR=${RD}/trees/bin
cd ${.CURDIR}/.. && make distribute DISTDIR=${RD}/trees
.if exists(${.CURDIR}/../eBones)
1995-06-11 19:33:05 +00:00
cd ${.CURDIR}/../eBones && ( \
make bootstrap &&\
make obj all help-distribute DISTDIR=${RD}/trees &&\
make kprog \
1995-06-11 19:33:05 +00:00
)
.endif
chflags -R noschg ${RD}/trees
1995-02-25 22:08:48 +00:00
touch release.2
# Make and install the generic kernel(s).
1995-02-25 22:08:48 +00:00
release.3:
@cd ${.CURDIR} && $(MAKE) ckRELEASEDIR
.for kernel in ${KERNELS}
rm -f ${RD}/kernels/${kernel}
rm -rf ${.CURDIR}/../sys/compile/${kernel}
cd ${.CURDIR} && ${MAKE} doKERNEL KERNEL=${kernel}
rm -rf ${.CURDIR}/../sys/compile/${kernel}
ln -f ${RD}/kernels/${kernel} ${RD}/trees/bin/kernel.${kernel}
.endfor
1995-02-25 22:08:48 +00:00
touch release.3
# Make and install the three crunched binaries which live on the floppies.
1995-02-25 22:08:48 +00:00
# You are not supposed to like this :-)
release.4:
@cd ${.CURDIR} && $(MAKE) ckRELEASEDIR
Multiple changes stacked as one commit since they all depend on one another. First, change sysinstall and the Makefile rules to not build the kernel nlist directly into sysinstall now. Instead, spit it out as an ascii file in /stand and parse it from sysinstall later. This solves the chicken-n- egg problem of building sysinstall into the fsimage before BOOTMFS is built and can have its symbols extracted. Now we generate the symbol file in release.8. Second, add Poul-Henning's USERCONFIG_BOOT changes. These have two effects: 1. Userconfig is always entered, rather than only after a -c (don't scream yet, it's not as bad as it sounds). 2. Userconfig reads a message string which can optionally be written just past the boot blocks. This string "preloads" the userconfig input buffer and is parsed as user input. If the first command is not "USERCONFIG", userconfig will treat this as an implied "quit" (which is why you don't need to scream - you never even know you went through userconfig and back out again if you don't specifically ask for it), otherwise it will read and execute the following commands until a "quit" is seen or the end is reached, in which case the normal userconfig command prompt will then be presented. How to create your own startup sequences, using any boot.flp image from the next snap forward (not yet, but soon): % dd of=/dev/rfd0 seek=1 bs=512 count=1 conv=sync <<WAKKA_WAKKA_DOO USERCONFIG irq ed0 10 iomem ed0 0xcc000 disable ed1 quit WAKKA_WAKKA_DOO Third, add an intro screen to UserConfig so that users aren't just thrown into this strange screen if userconfig is auto-launched. The default boot.flp startup sequence is now, in fact, this: USERCONFIG intro visual (Since visual never returns, we don't need a following "quit"). Submitted-By: phk & jkh
1996-10-05 10:44:07 +00:00
cd ${.CURDIR}/sysinstall && make depend all
rm -rf ${RD}/crunch
mkdir -p ${RD}/crunch
for j in ${WHICH_CRUNCH} ; do \
rm -rf $${j}_crunch && \
mkdir $${j}_crunch && \
( cd $${j}_crunch && \
crunchgen ${.CURDIR}/$${j}_crunch.conf && \
${MAKE} -f $${j}_crunch.mk all NOCRYPT=yes \
"CFLAGS=${CFLAGS} -DCRUNCHED_BINARY") && \
mv $${j}_crunch/$${j}_crunch ${RD}/crunch/$${j} && \
true || rm -rf $${j}_crunch ; \
1995-02-25 22:08:48 +00:00
done
touch release.4
1996-01-11 20:28:40 +00:00
#
# --==## Fix up the distributions. ##==--
#
1995-02-25 22:08:48 +00:00
release.5:
@cd ${.CURDIR} && $(MAKE) ckRELEASEDIR
# Handle some grief caused by the munition braindeadness.
for i in sbin/init bin/ed ; do \
( cd ${.CURDIR}/../$$i; \
make -DNOCRYPT clean all distribute DISTDIR=${RD}/trees ) ; \
done
1996-01-11 20:28:40 +00:00
# Move all the manpages out to their own dist
if [ -d ${RD}/trees/bin/usr/share/man ] ; then \
tar -cf - -C ${RD}/trees/bin/usr/share/man . | \
tar xf - -C ${RD}/trees/manpages/usr/share/man && \
rm -rf ${RD}/trees/bin/usr/share/man; \
fi
1996-01-11 20:28:40 +00:00
# Move all the games out to their own dist
if [ -d ${RD}/trees/bin/usr/games ] ; then \
tar -cf - -C ${RD}/trees/bin/usr/games . | \
tar -xf - -C ${RD}/trees/games/usr/games && \
rm -rf ${RD}/trees/bin/usr/games; \
1995-02-25 22:08:48 +00:00
fi
if [ -d ${RD}/trees/bin/usr/share/games ] ; then \
tar -cf - -C ${RD}/trees/bin/usr/share/games . | \
tar -xf - -C ${RD}/trees/games/usr/share/games && \
rm -rf ${RD}/trees/bin/usr/share/games; \
fi
if [ -d ${RD}/trees/bin/var/games ] ; then \
tar -cf - -C ${RD}/trees/bin/var/games . | \
tar -xf - -C ${RD}/trees/games/var/games && \
rm -rf ${RD}/trees/bin/var/games; \
1995-02-25 22:08:48 +00:00
fi
1996-01-11 20:28:40 +00:00
# Move the dict out to their own dist
if [ -d ${RD}/trees/bin/usr/share/dict ] ; then \
tar -cf - -C ${RD}/trees/bin/usr/share/dict . | \
tar -xf - -C ${RD}/trees/dict/usr/share/dict && \
rm -rf ${RD}/trees/bin/usr/share/dict; \
1995-02-25 22:08:48 +00:00
fi
for i in airport birthtoken flowers na.phone zipcodes ; do \
if [ -f ${RD}/trees/bin/usr/share/misc/$$i ] ; then \
mv ${RD}/trees/bin/usr/share/misc/$$i \
${RD}/trees/dict/usr/share/misc; \
1995-02-25 22:08:48 +00:00
fi ; \
done
1996-01-11 20:28:40 +00:00
# Move the info files out to their own dist
if [ -d ${RD}/trees/bin/usr/share/info ] ; then \
tar -cf - -C ${RD}/trees/bin/usr/share/info . | \
tar -xf - -C ${RD}/trees/info/usr/share/info && \
rm -rf ${RD}/trees/bin/usr/share/info; \
1996-01-11 20:28:40 +00:00
fi
# Move the profiled libraries out to their own dist
for i in ${RD}/trees/bin/usr/lib/*_p.a ; do \
1995-02-25 22:08:48 +00:00
if [ -f $$i ] ; then \
mv $$i \
${RD}/trees/proflibs/usr/lib ; \
1995-02-25 22:08:48 +00:00
fi ; \
done
# Create symlinks for the MD5-based crypt lib, too. The
# automatically created links still point to the DES stuff,
# which went into its own distribution.
for i in ${RD}/trees/bin/usr/lib/libscrypt* ; do \
c=`echo $$i | sed -e 's/libscrypt/libcrypt/'` ; \
rm -f $$c ; \
ln -s `basename $$i` $$c ; \
done
1996-01-11 20:28:40 +00:00
# Remove some files we can faster regen after installing.
cd ${RD}/trees/bin/usr/share/misc && rm -f termcap.db vgrindefs.db
1996-01-11 20:28:40 +00:00
# Remove all the directories we don't need.
-cd ${RD}/trees && \
find ${EXTRA_DISTS} -depth -type d -print | xargs rmdir
1995-02-25 22:08:48 +00:00
touch release.5
1996-01-11 20:28:40 +00:00
#
# --==## Make binary dists ##==--
#
1995-02-25 22:08:48 +00:00
release.6:
@cd ${.CURDIR} && $(MAKE) ckRELEASEDIR
rm -rf ${RD}/dists
mkdir -p ${RD}/dists
@for i in ${DISTRIBUTIONS} ; \
do \
if [ -d ${RD}/trees/$${i} ] ; then \
1996-01-11 20:28:40 +00:00
cd ${.CURDIR} && $(MAKE) doTARBALL \
SD=${RD}/trees/$${i} \
TN=$$i TD=$$i ARG="." && \
echo "$${i} distribution is finished."; \
fi ; \
1995-05-30 08:29:07 +00:00
done
1996-01-11 20:28:40 +00:00
( cd ${RD}/dists && \
if [ -f krb/krb.aa ] ; then mv krb/* des && rmdir krb ; fi )
touch release.6
1996-01-11 20:28:40 +00:00
#
# --==## Make source dists ##==--
#
release.7:
@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 \
1996-01-11 20:28:40 +00:00
if [ -d /usr/src/$$i ] ; then \
cd ${.CURDIR} && $(MAKE) doTARBALL \
TN=`echo s$$i | tr -d '.' | sed 's/usr/u/'` \
1996-01-11 20:28:40 +00:00
SD=/usr/src TD=src ARG="$$i" ; \
fi ; \
done
.if defined(EXTRA_SRC)
@set ${EXTRA_SRC} && \
while [ $$# -ge 2 ] ; do \
1996-01-11 20:28:40 +00:00
if [ -d /usr/src/$$1 ] ; then \
cd ${.CURDIR} && $(MAKE) doTARBALL \
SD=/usr/src TN="s$$2" TD=src ARG="$$1" ; \
fi && shift && shift ; \
done
.endif
( cd ${RD}/dists/src && \
1996-01-11 20:28:40 +00:00
if [ -f ssecure.aa ] ; then mv ssecure.* ../des ; fi && \
if [ -f sebones.aa ] ; then mv sebones.* ../des ; fi && \
1996-01-11 20:28:40 +00:00
if [ -f ssecure.inf ] ; then mv ssecure.inf ../des ; fi && \
if [ -f sebones.inf ] ; then mv sebones.inf ../des ; fi ; )
@echo "src distribution is finished."
touch release.7
1995-05-30 08:29:07 +00:00
# Complete the bootfd
#
# Now, just to get this picture down once and for all:
#
# +------------------------------------------------------------------------+
# |boot.flp |
# +-----+-----+------------------------------------------------------------+
# |boot1|boot2|floppy filesystem "bootfd" |
# +-----+-----+-+--------------------------------------------------------+-+
# |kernel |
# +------------+-----------------------------------------+-+
# |mfs filesystem "mfsfd" |
# +-----------------------------------------+
#
Multiple changes stacked as one commit since they all depend on one another. First, change sysinstall and the Makefile rules to not build the kernel nlist directly into sysinstall now. Instead, spit it out as an ascii file in /stand and parse it from sysinstall later. This solves the chicken-n- egg problem of building sysinstall into the fsimage before BOOTMFS is built and can have its symbols extracted. Now we generate the symbol file in release.8. Second, add Poul-Henning's USERCONFIG_BOOT changes. These have two effects: 1. Userconfig is always entered, rather than only after a -c (don't scream yet, it's not as bad as it sounds). 2. Userconfig reads a message string which can optionally be written just past the boot blocks. This string "preloads" the userconfig input buffer and is parsed as user input. If the first command is not "USERCONFIG", userconfig will treat this as an implied "quit" (which is why you don't need to scream - you never even know you went through userconfig and back out again if you don't specifically ask for it), otherwise it will read and execute the following commands until a "quit" is seen or the end is reached, in which case the normal userconfig command prompt will then be presented. How to create your own startup sequences, using any boot.flp image from the next snap forward (not yet, but soon): % dd of=/dev/rfd0 seek=1 bs=512 count=1 conv=sync <<WAKKA_WAKKA_DOO USERCONFIG irq ed0 10 iomem ed0 0xcc000 disable ed1 quit WAKKA_WAKKA_DOO Third, add an intro screen to UserConfig so that users aren't just thrown into this strange screen if userconfig is auto-launched. The default boot.flp startup sequence is now, in fact, this: USERCONFIG intro visual (Since visual never returns, we don't need a following "quit"). Submitted-By: phk & jkh
1996-10-05 10:44:07 +00:00
release.8: write_mfs_in_kernel dumpnlist
@cd ${.CURDIR} && $(MAKE) ckRELEASEDIR
rm -rf ${RD}/mfsfd
mkdir ${RD}/mfsfd
cd ${RD}/mfsfd && \
mkdir -p dev mnt stand/help
@cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=boot \
DIR=${RD}/mfsfd/stand ZIP=false
( 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 | \
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
1995-06-11 19:33:05 +00:00
echo "nameserver 42/tcp name" > ${RD}/mfsfd/stand/etc/services
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
1996-07-05 08:53:54 +00:00
gzip -c ${.CURDIR}/../COPYRIGHT > ${RD}/mfsfd/stand/help/COPYRIGHT.hlp.gz
-test -f ${.CURDIR}/install.cfg && cp ${.CURDIR}/install.cfg ${RD}/mfsfd
# make the small bootfd
@echo "Making the small 4MB boot floppy."
sh -e ${.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
1996-07-05 08:53:54 +00:00
@echo "Making the regular boot floppy."
tar --exclude CVS -cf - -C ${.CURDIR}/sysinstall help | \
tar xvf - -C ${RD}/mfsfd/stand
1996-07-05 08:53:54 +00:00
@echo "Compressing doc files..."
@gzip -9 ${RD}/mfsfd/stand/help/*.hlp
1996-01-14 19:10:16 +00:00
sh -e ${.CURDIR}/doFS.sh ${RD} ${MNT} ${BOOTMFSSIZE} ${RD}/mfsfd \
${MFSINODE} minimum
mv fs-image fs-image.std
mv fs-image.size fs-image.std.size
cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=4
cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=std
1996-01-11 20:28:40 +00:00
mv ${RD}/floppies/bootstd.flp ${RD}/floppies/boot.flp
1996-07-05 08:53:54 +00:00
@echo "Regular boot floppy made."
touch release.8
1995-02-25 22:08:48 +00:00
1996-01-11 20:28:40 +00:00
#
# --==## Create a fixit floppy ##==--
#
release.9:
@cd ${.CURDIR} && $(MAKE) ckRELEASEDIR
rm -rf ${RD}/fixitfd
mkdir ${RD}/fixitfd
cd ${RD}/fixitfd && \
1996-01-11 20:28:40 +00:00
mkdir dev stand bin sbin etc mnt mnt1 mnt2 mnt3 mnt4 tmp
@cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=fixit \
DIR=${RD}/fixitfd/stand ZIP=true
1996-01-11 20:28:40 +00:00
( cd ${RD}/fixitfd/dev && \
cp ${RD}/trees/bin/dev/MAKEDEV . && \
sh MAKEDEV all )
cp ${RD}/trees/bin/etc/spwd.db ${RD}/fixitfd/etc
cp ${.CURDIR}/fixit.profile ${RD}/fixitfd/.profile
1996-01-14 19:10:16 +00:00
sh -e ${.CURDIR}/doFS.sh ${RD} ${MNT} ${FDSIZE} ${RD}/fixitfd \
10000 ${FDLABEL}
mv fs-image ${RD}/floppies/fixit.flp
touch release.9
1995-03-13 20:09:38 +00:00
1996-01-11 20:28:40 +00:00
#
# --==## Setup a suitable ftp-area ##==--
#
ftp.1:
mkdir -p ${FD}
cd ${RD} && find floppies -print | cpio -dumpl ${FD}
cd ${RD}/dists && find . -print | cpio -dumpl ${FD}
cp ${.CURDIR}/sysinstall/help/readme.hlp ${FD}/README.TXT
cp ${.CURDIR}/sysinstall/help/hardware.hlp ${FD}/HARDWARE.TXT
cp ${.CURDIR}/sysinstall/help/install.hlp ${FD}/INSTALL.TXT
cp ${.CURDIR}/sysinstall/help/relnotes.hlp ${FD}/RELNOTES.TXT
1995-03-13 20:09:38 +00:00
1996-01-11 20:28:40 +00:00
#
# --==## Setup a suitable cdrom-area ##==--
#
cdrom.1:
mkdir -p ${CD}/filesys
cd ${RD} && find floppies -print | cpio -dumpl ${CD}
cd ${RD}/dists && find . -print | cpio -dumpl ${CD}
1996-01-11 20:28:40 +00:00
ln -f ${RD}/kernels/MFSKERNEL.std ${CD}/kernel
ln -f ${RD}/trees/bin/usr/mdec/fbsdboot.exe ${CD}
for i in ${DISTRIBUTIONS} ; \
do \
if [ -d ${RD}/trees/$${i} ] ; then \
( cd ${RD}/trees/$${i} && \
find . -depth -print | cpio -dumpl ${CD}/filesys ) ; \
fi \
done
echo "CD_VERSION = ${BUILDNAME}" > ${CD}/cdrom.inf
cp ${.CURDIR}/sysinstall/help/readme.hlp ${CD}/README.TXT
cp ${.CURDIR}/sysinstall/help/hardware.hlp ${CD}/HARDWARE.TXT
cp ${.CURDIR}/sysinstall/help/install.hlp ${CD}/INSTALL.TXT
cp ${.CURDIR}/sysinstall/help/relnotes.hlp ${CD}/RELNOTES.TXT
1995-02-26 01:35:32 +00:00
# Various "subroutine" and other supporting targets.
1995-02-25 22:08:48 +00:00
doTARBALL:
.if !defined(SD)
@echo "SD undefined in doTARBALL" && exit 1
1995-05-30 08:29:07 +00:00
.endif
1995-02-25 22:08:48 +00:00
.if !defined(TD)
@echo "TB undefined in doTARBALL" && exit 1
1995-05-30 08:29:07 +00:00
.endif
1995-02-25 22:08:48 +00:00
.if !defined(ARG)
@echo "ARG undefined in doTARBALL" && exit 1
1995-05-30 08:29:07 +00:00
.endif
rm -rf ${RD}/dists/${TD}/${TN}*
mkdir -p ${RD}/dists/${TD}
( cd ${SD} && \
tn=`echo ${TN} | tr '[A-Z]' '[a-z]' | cut -c1-8` && \
echo rolling ${TD}/$$tn tarball &&\
tar --exclude CVS --exclude obj -cf - ${ARG} | \
${ZIPNSPLIT} ${RD}/dists/${TD}/$$tn. && \
mkdir -p ${TD} && sh ${.CURDIR}/info.sh \
${RD}/dists/${TD}/$$tn > ${RD}/dists/${TD}/$$tn.inf && \
if [ -f ${.CURDIR}/scripts/$${TD}-install.sh ]; then \
cp -p ${.CURDIR}/scripts/$${TD}-install.sh ${RD}/dists/${TD}/install.sh; \
fi && \
if [ "${SD}" != "/usr/src" ]; then \
mtree -c -i -p ${SD}/${ARG} \
-k gname,md5digest,mode,nlink,uname,size,link,type \
> ${RD}/dists/${TD}/$$tn.mtree ; else true; fi )
1995-02-26 01:35:32 +00:00
doRELEASE: release.1 release.2 release.3 release.4 release.5 release.6 \
release.7 release.8 release.9
cd ${.CURDIR} && ${MAKE} cdrom.1 ftp.1
1995-02-26 01:35:32 +00:00
@echo "Release done"
floppies:
cd ${.CURDIR} && ${MAKE} boot.flp
cd ${.CURDIR} && ${MAKE} fixit.flp
cd ${RD} && find floppies -print | cpio -dumpl ${FD}
boot.flp:
rm -f release.4 release.8
cd ${.CURDIR} && ${MAKE} release.4 release.8 WHICH_CRUNCH=boot
fixit.flp:
rm -f release.4 release.9
cd ${.CURDIR} && ${MAKE} release.4 release.9 WHICH_CRUNCH=fixit
write_mfs_in_kernel: ${.CURDIR}/write_mfs_in_kernel.c
${CC} ${CFLAGS} -o write_mfs_in_kernel ${.CURDIR}/write_mfs_in_kernel.c
Multiple changes stacked as one commit since they all depend on one another. First, change sysinstall and the Makefile rules to not build the kernel nlist directly into sysinstall now. Instead, spit it out as an ascii file in /stand and parse it from sysinstall later. This solves the chicken-n- egg problem of building sysinstall into the fsimage before BOOTMFS is built and can have its symbols extracted. Now we generate the symbol file in release.8. Second, add Poul-Henning's USERCONFIG_BOOT changes. These have two effects: 1. Userconfig is always entered, rather than only after a -c (don't scream yet, it's not as bad as it sounds). 2. Userconfig reads a message string which can optionally be written just past the boot blocks. This string "preloads" the userconfig input buffer and is parsed as user input. If the first command is not "USERCONFIG", userconfig will treat this as an implied "quit" (which is why you don't need to scream - you never even know you went through userconfig and back out again if you don't specifically ask for it), otherwise it will read and execute the following commands until a "quit" is seen or the end is reached, in which case the normal userconfig command prompt will then be presented. How to create your own startup sequences, using any boot.flp image from the next snap forward (not yet, but soon): % dd of=/dev/rfd0 seek=1 bs=512 count=1 conv=sync <<WAKKA_WAKKA_DOO USERCONFIG irq ed0 10 iomem ed0 0xcc000 disable ed1 quit WAKKA_WAKKA_DOO Third, add an intro screen to UserConfig so that users aren't just thrown into this strange screen if userconfig is auto-launched. The default boot.flp startup sequence is now, in fact, this: USERCONFIG intro visual (Since visual never returns, we don't need a following "quit"). Submitted-By: phk & jkh
1996-10-05 10:44:07 +00:00
dumpnlist: ${.CURDIR}/dumpnlist.c
${CC} ${CFLAGS} -o dumpnlist ${.CURDIR}/dumpnlist.c
1995-02-26 01:35:32 +00:00
ckRELEASEDIR:
.if !defined(RELEASEDIR)
@echo "To make a release RELEASEDIR must be defined" && false
1995-05-30 08:29:07 +00:00
.endif
1995-02-26 01:35:32 +00:00
installCRUNCH:
.if !defined(CRUNCH)
@echo "CRUNCH undefined in installCRUNCH" && exit 1
.endif
.if !defined(DIR)
@echo "DIR undefined in installCRUNCH" && exit 1
.endif
.if !defined(ZIP)
@echo "ZIP undefined in installCRUNCH" && exit 1
.endif
if ${ZIP} ; then \
gzip -9 < ${RD}/crunch/${CRUNCH} > ${DIR}/${CRUNCH}_crunch ; \
else \
ln -f ${RD}/crunch/${CRUNCH} ${DIR}/${CRUNCH}_crunch ; \
fi
chmod 555 ${DIR}/${CRUNCH}_crunch
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
Multiple changes stacked as one commit since they all depend on one another. First, change sysinstall and the Makefile rules to not build the kernel nlist directly into sysinstall now. Instead, spit it out as an ascii file in /stand and parse it from sysinstall later. This solves the chicken-n- egg problem of building sysinstall into the fsimage before BOOTMFS is built and can have its symbols extracted. Now we generate the symbol file in release.8. Second, add Poul-Henning's USERCONFIG_BOOT changes. These have two effects: 1. Userconfig is always entered, rather than only after a -c (don't scream yet, it's not as bad as it sounds). 2. Userconfig reads a message string which can optionally be written just past the boot blocks. This string "preloads" the userconfig input buffer and is parsed as user input. If the first command is not "USERCONFIG", userconfig will treat this as an implied "quit" (which is why you don't need to scream - you never even know you went through userconfig and back out again if you don't specifically ask for it), otherwise it will read and execute the following commands until a "quit" is seen or the end is reached, in which case the normal userconfig command prompt will then be presented. How to create your own startup sequences, using any boot.flp image from the next snap forward (not yet, but soon): % dd of=/dev/rfd0 seek=1 bs=512 count=1 conv=sync <<WAKKA_WAKKA_DOO USERCONFIG irq ed0 10 iomem ed0 0xcc000 disable ed1 quit WAKKA_WAKKA_DOO Third, add an intro screen to UserConfig so that users aren't just thrown into this strange screen if userconfig is auto-launched. The default boot.flp startup sequence is now, in fact, this: USERCONFIG intro visual (Since visual never returns, we don't need a following "quit"). Submitted-By: phk & jkh
1996-10-05 10:44:07 +00:00
@rm -f ${RD}/kernels/BOOTMFS.${FSIMAGE}
@rm -f /sys/compile/BOOTMFS/mfs_vfsops.o
@cd ${.CURDIR}/../sys/i386/conf && \
sed -e '/SYSV/d' \
-e '/pty/d' \
-e '/PROCFS/d' \
1996-09-09 21:25:40 +00:00
-e '/KTRACE/d' \
-e 's/GENERIC/BOOTMFS/g' \
-e '/maxusers/s/10/4/' < GENERIC > BOOTMFS && \
echo "options MFS" >> BOOTMFS && \
echo "options NFS_NOSERVER" >> BOOTMFS && \
Multiple changes stacked as one commit since they all depend on one another. First, change sysinstall and the Makefile rules to not build the kernel nlist directly into sysinstall now. Instead, spit it out as an ascii file in /stand and parse it from sysinstall later. This solves the chicken-n- egg problem of building sysinstall into the fsimage before BOOTMFS is built and can have its symbols extracted. Now we generate the symbol file in release.8. Second, add Poul-Henning's USERCONFIG_BOOT changes. These have two effects: 1. Userconfig is always entered, rather than only after a -c (don't scream yet, it's not as bad as it sounds). 2. Userconfig reads a message string which can optionally be written just past the boot blocks. This string "preloads" the userconfig input buffer and is parsed as user input. If the first command is not "USERCONFIG", userconfig will treat this as an implied "quit" (which is why you don't need to scream - you never even know you went through userconfig and back out again if you don't specifically ask for it), otherwise it will read and execute the following commands until a "quit" is seen or the end is reached, in which case the normal userconfig command prompt will then be presented. How to create your own startup sequences, using any boot.flp image from the next snap forward (not yet, but soon): % dd of=/dev/rfd0 seek=1 bs=512 count=1 conv=sync <<WAKKA_WAKKA_DOO USERCONFIG irq ed0 10 iomem ed0 0xcc000 disable ed1 quit WAKKA_WAKKA_DOO Third, add an intro screen to UserConfig so that users aren't just thrown into this strange screen if userconfig is auto-launched. The default boot.flp startup sequence is now, in fact, this: USERCONFIG intro visual (Since visual never returns, we don't need a following "quit"). Submitted-By: phk & jkh
1996-10-05 10:44:07 +00:00
echo 'options "MAXCONS=4"' >> BOOTMFS && \
echo "options USERCONFIG_BOOT" >> BOOTMFS
@echo "options \"MFS_ROOT=`cat fs-image.${FSIMAGE}.size`\"" >> \
${.CURDIR}/../sys/i386/conf/BOOTMFS
cd ${.CURDIR} && ${MAKE} doKERNEL KERNEL=BOOTMFS
Multiple changes stacked as one commit since they all depend on one another. First, change sysinstall and the Makefile rules to not build the kernel nlist directly into sysinstall now. Instead, spit it out as an ascii file in /stand and parse it from sysinstall later. This solves the chicken-n- egg problem of building sysinstall into the fsimage before BOOTMFS is built and can have its symbols extracted. Now we generate the symbol file in release.8. Second, add Poul-Henning's USERCONFIG_BOOT changes. These have two effects: 1. Userconfig is always entered, rather than only after a -c (don't scream yet, it's not as bad as it sounds). 2. Userconfig reads a message string which can optionally be written just past the boot blocks. This string "preloads" the userconfig input buffer and is parsed as user input. If the first command is not "USERCONFIG", userconfig will treat this as an implied "quit" (which is why you don't need to scream - you never even know you went through userconfig and back out again if you don't specifically ask for it), otherwise it will read and execute the following commands until a "quit" is seen or the end is reached, in which case the normal userconfig command prompt will then be presented. How to create your own startup sequences, using any boot.flp image from the next snap forward (not yet, but soon): % dd of=/dev/rfd0 seek=1 bs=512 count=1 conv=sync <<WAKKA_WAKKA_DOO USERCONFIG irq ed0 10 iomem ed0 0xcc000 disable ed1 quit WAKKA_WAKKA_DOO Third, add an intro screen to UserConfig so that users aren't just thrown into this strange screen if userconfig is auto-launched. The default boot.flp startup sequence is now, in fact, this: USERCONFIG intro visual (Since visual never returns, we don't need a following "quit"). Submitted-By: phk & jkh
1996-10-05 10:44:07 +00:00
@rm -rf ${RD}/boot.${FSIMAGE}
@mkdir ${RD}/boot.${FSIMAGE}
@mv ${RD}/kernels/BOOTMFS ${RD}/kernels/BOOTMFS.${FSIMAGE}
@cp ${RD}/kernels/BOOTMFS.${FSIMAGE} ${RD}/boot.${FSIMAGE}/kernel
@vnconfig /dev/vn0 fs-image.${FSIMAGE}
@mkdir -p /tmp/mnt_xx
@mount /dev/vn0 /tmp/mnt_xx
./dumpnlist ${RD}/boot.${FSIMAGE}/kernel > /tmp/mnt_xx/stand/symbols
@umount /tmp/mnt_xx
@vnconfig -u /dev/vn0
@rmdir /tmp/mnt_xx
./write_mfs_in_kernel ${RD}/boot.${FSIMAGE}/kernel \
fs-image.${FSIMAGE}
kzip -v ${RD}/boot.${FSIMAGE}/kernel
Multiple changes stacked as one commit since they all depend on one another. First, change sysinstall and the Makefile rules to not build the kernel nlist directly into sysinstall now. Instead, spit it out as an ascii file in /stand and parse it from sysinstall later. This solves the chicken-n- egg problem of building sysinstall into the fsimage before BOOTMFS is built and can have its symbols extracted. Now we generate the symbol file in release.8. Second, add Poul-Henning's USERCONFIG_BOOT changes. These have two effects: 1. Userconfig is always entered, rather than only after a -c (don't scream yet, it's not as bad as it sounds). 2. Userconfig reads a message string which can optionally be written just past the boot blocks. This string "preloads" the userconfig input buffer and is parsed as user input. If the first command is not "USERCONFIG", userconfig will treat this as an implied "quit" (which is why you don't need to scream - you never even know you went through userconfig and back out again if you don't specifically ask for it), otherwise it will read and execute the following commands until a "quit" is seen or the end is reached, in which case the normal userconfig command prompt will then be presented. How to create your own startup sequences, using any boot.flp image from the next snap forward (not yet, but soon): % dd of=/dev/rfd0 seek=1 bs=512 count=1 conv=sync <<WAKKA_WAKKA_DOO USERCONFIG irq ed0 10 iomem ed0 0xcc000 disable ed1 quit WAKKA_WAKKA_DOO Third, add an intro screen to UserConfig so that users aren't just thrown into this strange screen if userconfig is auto-launched. The default boot.flp startup sequence is now, in fact, this: USERCONFIG intro visual (Since visual never returns, we don't need a following "quit"). Submitted-By: phk & jkh
1996-10-05 10:44:07 +00:00
@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
1996-09-25 00:43:23 +00:00
cat /usr/mdec/rawboot ${RD}/boot.${FSIMAGE}/kernel | \
1996-09-19 08:35:41 +00:00
dd conv=sync of=${RD}/floppies/boot${FSIMAGE}.flp
Multiple changes stacked as one commit since they all depend on one another. First, change sysinstall and the Makefile rules to not build the kernel nlist directly into sysinstall now. Instead, spit it out as an ascii file in /stand and parse it from sysinstall later. This solves the chicken-n- egg problem of building sysinstall into the fsimage before BOOTMFS is built and can have its symbols extracted. Now we generate the symbol file in release.8. Second, add Poul-Henning's USERCONFIG_BOOT changes. These have two effects: 1. Userconfig is always entered, rather than only after a -c (don't scream yet, it's not as bad as it sounds). 2. Userconfig reads a message string which can optionally be written just past the boot blocks. This string "preloads" the userconfig input buffer and is parsed as user input. If the first command is not "USERCONFIG", userconfig will treat this as an implied "quit" (which is why you don't need to scream - you never even know you went through userconfig and back out again if you don't specifically ask for it), otherwise it will read and execute the following commands until a "quit" is seen or the end is reached, in which case the normal userconfig command prompt will then be presented. How to create your own startup sequences, using any boot.flp image from the next snap forward (not yet, but soon): % dd of=/dev/rfd0 seek=1 bs=512 count=1 conv=sync <<WAKKA_WAKKA_DOO USERCONFIG irq ed0 10 iomem ed0 0xcc000 disable ed1 quit WAKKA_WAKKA_DOO Third, add an intro screen to UserConfig so that users aren't just thrown into this strange screen if userconfig is auto-launched. The default boot.flp startup sequence is now, in fact, this: USERCONFIG intro visual (Since visual never returns, we don't need a following "quit"). Submitted-By: phk & jkh
1996-10-05 10:44:07 +00:00
@echo 'USERCONFIG' > startup_foo
@echo 'intro' >> startup_foo
dd if=startup_foo of=${RD}/floppies/boot${FSIMAGE}.flp \
seek=1 bs=512 count=1 conv=sync
@rm -f startup_foo
1995-02-28 01:15:52 +00:00
.include <bsd.prog.mk>