freebsd-skq/release/Makefile

384 lines
12 KiB
Makefile
Raw Normal View History

# $Id$
#
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...
1995-02-25 22:08:48 +00:00
# Things which without too much trouble can be considered variables
EXTRADISTRIBUTIONS= secure games manpages proflibs dict info
CPIO1= etc/services etc/protocols
CPIO2= scripts/miscfuncs.sh scripts/instdist.sh scripts/netinst.sh \
scripts/adduser.sh scripts/bininst.sh scripts/setup.sh
FAQS= README README-2.0 MIRROR.SITES
# define this to use a vn device instead of the floppy drive
VNDEVICE= vn0
# work dir for floppies
MNT= /mnt
# define FDFORMAT to format physical floppies
#FDFORMAT= yes
1995-02-25 22:08:48 +00:00
FDDEVICE= fd0
FDCYLS= 80
FDCYLSIZE= 15k
FDLABEL= fd1200
NEWFSARGS= -c 80 -b 4096 -f 512 -i 9000 -m 0 -t 0 -u 0 \
-o space -T ${FDLABEL}
1995-02-25 22:08:48 +00:00
ZIPNSPLIT= gzip --no-name -9 -c | split -b 240640 -
1995-02-25 22:08:48 +00:00
# Things which will get you into trouble if you change them
DISTRIBUTIONS= bin ${EXTRADISTRIBUTIONS}
MTREEFILES= ${.CURDIR}/../etc/mtree
RD= ${RELEASEDIR}/stage
FD= ${RELEASEDIR}/ftp
CD= ${RELEASEDIR}/cdrom
1995-02-25 22:08:48 +00:00
release:
.if !defined(CHROOTDIR)
1995-02-26 01:35:32 +00:00
@echo "To make a release you must set CHROOTDIR" && false
.endif
1995-02-25 22:08:48 +00:00
-mkdir ${CHROOTDIR}
chflags -R noschg ${CHROOTDIR}/.
rm -rf ${CHROOTDIR}/*
cd ${.CURDIR}/../etc ; ${MAKE} distrib-dirs DESTDIR=${CHROOTDIR}
cd ${.CURDIR}/../etc ; ${MAKE} distribution DESTDIR=${CHROOTDIR}
cd ${.CURDIR}/.. ; ${MAKE} -k install DESTDIR=${CHROOTDIR}
1995-02-25 22:08:48 +00:00
echo "#!/bin/sh" > ${CHROOTDIR}/mk
echo "set -ex" >> ${CHROOTDIR}/mk
echo "cd /usr/src" >> ${CHROOTDIR}/mk
echo "make world" >> ${CHROOTDIR}/mk
echo "cd sbin/sysinstall" >> ${CHROOTDIR}/mk
echo "make obj" >> ${CHROOTDIR}/mk
echo "cd ../../release" >> ${CHROOTDIR}/mk
echo "make obj" >> ${CHROOTDIR}/mk
1995-02-28 01:15:52 +00:00
echo "make doRELEASE" >> ${CHROOTDIR}/mk
echo "RELEASEDIR=/R" >> ${CHROOTDIR}/etc/make.conf
1995-02-25 22:08:48 +00:00
.if !defined(RELEASETAG)
1995-02-28 20:32:29 +00:00
cd ${CHROOTDIR}/usr ; cvs co -P src
1995-02-25 22:08:48 +00:00
.else
cd ${CHROOTDIR}/usr ; cvs export -r ${RELEASETAG} src
1995-02-25 22:08:48 +00:00
.endif
chmod 755 ${CHROOTDIR}/mk
chroot ${CHROOTDIR} /mk
1995-02-25 22:08:48 +00:00
clean:
1995-03-13 20:09:38 +00:00
rm -rf cpio_crunch 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
-mkdir ${RELEASEDIR}
chflags -R noschg ${RELEASEDIR}/.
rm -rf ${RELEASEDIR}/*
mkdir ${RD}
mkdir ${RD}/bootfd
mkdir ${RD}/bootfd/dev
mkdir ${RD}/bootfd/mnt
mkdir ${RD}/bootfd/stand
mkdir ${RD}/cpiofd
mkdir ${RD}/cpiofd/stand
mkdir ${RD}/cpiofd/stand/scripts
1995-03-13 20:09:38 +00:00
mkdir ${RD}/fixitfd
mkdir ${RD}/fixitfd/stand
mkdir ${RD}/fixitfd/bin
1995-03-13 20:09:38 +00:00
mkdir ${RD}/fixitfd/sbin
mkdir ${RD}/fixitfd/mnt
mkdir ${RD}/fixitfd/etc
1995-02-25 22:08:48 +00:00
mkdir ${RD}/floppies
mkdir ${RD}/trees
mkdir ${RD}/trees/bin
1995-02-25 22:08:48 +00:00
mkdir ${RD}/dists
mkdir ${RD}/dists/bin
cd ${.CURDIR}/../etc && make distrib-dirs DESTDIR=${RD}/trees/bin
for i in ${EXTRADISTRIBUTIONS} ; do \
mkdir ${RD}/trees/$$i ; \
1995-02-25 22:08:48 +00:00
mkdir ${RD}/dists/$$i ; \
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 ; \
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}/.. ; make distribute DISTDIR=${RD}/trees
1995-02-25 22:08:48 +00:00
touch release.2
# Make and install a couple of kernels we need.
release.3:
@cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR
cd ${.CURDIR}/../sys/i386/conf ; \
config GENERIC ; \
config BOOTFLP
cd ${.CURDIR}/../sys/compile/GENERIC ; \
make depend ; \
make kernel ; \
install -c kernel ${RD}/trees/bin/kernel.GENERIC
ln -f ${RD}/trees/bin/kernel.GENERIC ${RD}/cpiofd/kernel
1995-02-25 22:08:48 +00:00
cd ${.CURDIR}/../sys/compile/BOOTFLP ; \
make depend ; \
make kernel ; \
install -s -c kernel ${RD}/bootfd/kernel
1995-03-13 20:09:38 +00:00
ln -f ${RD}/bootfd/kernel ${RD}/fixitfd/kernel
1995-02-25 22:08:48 +00:00
touch release.3
# Make and install the two crunched binaries which live on the floppies.
# You are not supposed to like this :-)
release.4:
@cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR
1995-03-13 20:09:38 +00:00
for j in boot cpio fixit; do \
1995-02-25 22:08:48 +00:00
rm -rf $${j}_crunch ; \
mkdir $${j}_crunch ; \
( cd $${j}_crunch ; \
crunchgen ${.CURDIR}/$${j}_crunch.conf ; \
${MAKE} -f $${j}_crunch.mk objs exe NOCRYPT=yes ) ; \
if [ $$j = cpio ] ; then \
cat < $${j}_crunch/$${j}_crunch \
> ${RD}/$${j}fd/stand/$${j}_crunch ; \
else \
gzip -9 < $${j}_crunch/$${j}_crunch \
> ${RD}/$${j}fd/stand/$${j}_crunch ; \
fi ; \
1995-02-25 22:08:48 +00:00
rm -rf $${j}_crunch ; \
chmod 555 ${RD}/$${j}fd/stand/$${j}_crunch ; \
for i in `crunchgen -l ${.CURDIR}/$${j}_crunch.conf` ; do \
ln -f ${RD}/$${j}fd/stand/$${j}_crunch \
${RD}/$${j}fd/stand/$$i ; \
done ; \
done
touch release.4
# Fix up the distributions.
release.5:
@cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR
if [ -d ${RD}/trees/bin/usr/share/man ] ; then \
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 ;\
mv ${RD}/trees/bin/usr/games \
${RD}/trees/games/usr/games ;\
1995-02-25 22:08:48 +00:00
fi
if [ -d ${RD}/trees/bin/usr/share/games ] ; then \
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 ;\
mv ${RD}/trees/bin/var/games \
${RD}/trees/games/var/games ;\
1995-02-25 22:08:48 +00:00
fi
if [ -d ${RD}/trees/bin/usr/share/dict ] ; then \
rm -rf ${RD}/trees/dict/usr/share/dict ;\
mv ${RD}/trees/bin/usr/share/dict \
${RD}/trees/dict/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
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
-cd ${RD}/trees ; \
1995-02-25 22:08:48 +00:00
find ${EXTRADISTRIBUTIONS} -depth -type d -print | xargs rmdir
1995-02-25 22:08:48 +00:00
touch release.5
# Complete the bootfd
release.6:
@cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR
( cd ${RD}/trees/bin/dev ; \
ls console tty ttyv1 null zero \
sd[0123][a-h] wd[0123][a-h] fd[01] \
1995-02-25 22:08:48 +00:00
rsd[0123][a-h] rwd[0123][a-h] rfd[01] | \
cpio -dump ${RD}/bootfd/dev )
install -c ${.CURDIR}/../COPYRIGHT ${RD}/bootfd
cd ${RD}/trees/bin/usr/share/FAQ ; \
1995-02-25 22:08:48 +00:00
install -c diskspace.FAQ ${RD}/bootfd/DISKSPACE.FAQ ;\
install -c RELNOTES.FreeBSD ${RD}/bootfd ;\
install -c TROUBLESHOOTING ${RD}/bootfd ;\
install -c README-2.0 ${RD}/bootfd/README
touch ${RD}/bootfd/this_is_boot_flp
1995-03-13 20:09:38 +00:00
cd ${.CURDIR} ; ${MAKE} doFLOPPY FLOPPY=boot
1995-02-25 22:08:48 +00:00
touch release.6
# Complete the cpiofd directory
# XXX a lot of stuff is missing here...
release.7:
@cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR
cd ${RD}/trees/bin ; ls ${CPIO1} | cpio -dump ${RD}/cpiofd/stand
cd ${.CURDIR} ; ls ${CPIO2} | cpio -dumpv ${RD}/cpiofd/stand
chmod 755 ${RD}/cpiofd/stand/scripts/*
cp ${RD}/trees/bin/usr/sbin/tzsetup ${RD}/cpiofd/stand
1995-02-25 22:08:48 +00:00
( cd ${RD}/cpiofd ; \
( rm -f OK ; find . -print ; touch OK ; echo OK ) | \
cpio -H newc -oa | gzip -9 -c | dd conv=osync ) \
> ${RD}/floppies/cpio.flp
gzip -1 -c < ${RD}/floppies/cpio.flp > ${RD}/floppies/cpio.flp.gz
touch release.7
# Make binary dists
1995-02-25 22:08:48 +00:00
release.8:
@cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR
rm -rf ${RD}/dists
mkdir -p ${RD}/dists
@for i in ${DISTRIBUTIONS} ; \
1994-11-20 01:01:28 +00:00
do \
if [ -d ${RD}/trees/$${i} ] ; then \
1995-02-25 22:08:48 +00:00
cd ${.CURDIR} ; \
$(MAKE) doTARBALL SD=${RD}/trees/$${i} \
1995-02-25 22:08:48 +00:00
TD=$$i ARG="." ; \
( cd ${RD}/dists/$${i}; \
1995-02-25 22:08:48 +00:00
sh -e ${.CURDIR}/scripts/mkchecksums.sh ) ; \
cp ${.CURDIR}/scripts/extract_$${i}.sh \
${RD}/dists/$${i}/extract.sh;\
1995-02-25 22:08:48 +00:00
echo "$${i} distribution is finished."; \
fi ; \
done
touch release.8
# Make source dists
1995-02-25 22:08:48 +00:00
release.9:
@cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR
@cd ${.CURDIR} ; $(MAKE) doTARBALL SD=/usr/src TD=src/base ARG="[A-Z]*"
@for i in bin etc games gnu include lib libexec release sbin \
secure lkm eBones share sys usrbin usrsbin ; do \
if [ -d /usr/src/$$i ] ; then \
cd ${.CURDIR} ; \
$(MAKE) doTARBALL SD=/usr/src \
TD=src/$$i ARG="$$i" ; \
fi ; \
1994-11-20 01:01:28 +00:00
done
( cd ${RD}/dists/src; \
1995-02-25 22:08:48 +00:00
sh -e ${.CURDIR}/scripts/mkchecksums.sh ) ; \
cp ${.CURDIR}/scripts/extract_src.sh \
${RD}/dists/src/extract.sh;\
1995-02-25 22:08:48 +00:00
echo "src distribution is finished."; \
1995-02-28 01:15:52 +00:00
touch release.9
1995-02-25 22:08:48 +00:00
1995-03-13 20:09:38 +00:00
# Complete the fixitfd
release.10:
@cd ${.CURDIR} ; $(MAKE) ckRELEASEDIR
( cd ${RD}/trees/bin/dev ; \
1995-03-13 20:09:38 +00:00
ls console tty ttyv1 null zero \
sd[0123][a-h] wd[0123][a-h] fd[01] \
rsd[0123][a-h] rwd[0123][a-h] rfd[01] | \
cpio -dump ${RD}/fixitfd/dev )
ln -f ${RD}/fixitfd/stand/init ${RD}/fixitfd/sbin
ln -f ${RD}/fixitfd/stand/sh ${RD}/fixitfd/bin
cp ${RD}/trees/bin/usr/mdec/fdboot ${RD}/fixitfd/etc/boot1
cp ${RD}/trees/bin/usr/mdec/bootfd ${RD}/fixitfd/etc/boot2
cp ${.CURDIR}/fixit.profile ${RD}/fixitfd/.profile
echo 'echo /etc/rc' > ${RD}/fixitfd/etc/rc
echo 'exit 1' >> ${RD}/fixitfd/etc/rc
touch ${RD}/fixitfd/etc/spwd.db
1995-03-13 20:09:38 +00:00
cd ${.CURDIR} ; ${MAKE} doFLOPPY FLOPPY=fixit
touch release.10
ftp.1:
rm -rf ${FD}
mkdir ${FD}
cd ${RD} && find floppies dists -print | cpio -dumplv ${FD}
cd ${RD}/trees/bin/usr/share/FAQ && ln -f ${FAQS} ${FD}
1995-03-13 20:09:38 +00:00
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
.endif
.if !defined(TD)
@echo "TB undefined in doTARBALL" ; exit 1
.endif
.if !defined(ARG)
1995-03-13 20:09:38 +00:00
@echo "ARG undefined in doTARBALL" ; exit 1
1995-02-25 22:08:48 +00:00
.endif
rm -rf ${RD}/dists/${TD}
mkdir -p ${RD}/dists/${TD}
1995-02-25 22:08:48 +00:00
( cd ${SD} ; \
echo rolling ${TD} tarball ;\
tar --exclude CVS -cf - ${ARG} | \
${ZIPNSPLIT} ${RD}/dists/${TD}/`basename ${TD}`. )
1995-02-26 01:35:32 +00:00
doRELEASE: release.1 release.2 release.3 release.4 release.5 release.6 \
1995-03-13 20:09:38 +00:00
release.7 release.8 release.9 release.10
1995-02-26 01:35:32 +00:00
@echo "Release done"
ckRELEASEDIR:
.if !defined(RELEASEDIR)
@echo "To make a release RELEASEDIR must be defined" && false
.endif
1995-03-13 20:09:38 +00:00
doFLOPPY:
.if !defined(FLOPPY)
@echo "FLOPPY undefined in doFLOPPY" ; exit 1
.endif
rm -f ${RD}/floppies/${FLOPPY}.tmp ${RD}/floppies/${FLOPPY}.flp
.if defined(VNDEVICE)
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=${RD}/floppies/${FLOPPY}.tmp if=/dev/zero \
bs=${FDCYLSIZE} count=${FDCYLS} 2>/dev/null
sync && sleep 5
vnconfig -c /dev/r${VNDEVICE} ${RD}/floppies/${FLOPPY}.tmp
disklabel -w -r -B \
-b ${RD}/trees/bin/usr/mdec/fdboot \
-s ${RD}/trees/bin/usr/mdec/bootfd \
/dev/r${VNDEVICE} ${FDLABEL}
newfs ${NEWFSARGS} /dev/r${VNDEVICE}
mount /dev/${VNDEVICE} ${MNT}
cd ${RD}/${FLOPPY}fd ; find . -print | cpio -dump ${MNT}
umount ${MNT}
fsck /dev/r${VNDEVICE} < /dev/null
.else
1995-03-13 20:09:38 +00:00
-umount /dev/${FDDEVICE}
-umount ${MNT}
.if !defined(FDFORMAT)
1995-03-13 20:09:38 +00:00
echo y | fdformat /dev/r${FDDEVICE}
.endif
1995-03-13 20:09:38 +00:00
disklabel -w -r -B \
-b ${RD}/trees/bin/usr/mdec/fdboot \
-s ${RD}/trees/bin/usr/mdec/bootfd \
1995-03-13 20:09:38 +00:00
/dev/r${FDDEVICE} ${FDLABEL}
newfs ${NEWFSARGS} /dev/r${FDDEVICE}
mount /dev/${FDDEVICE} ${MNT}
cd ${RD}/${FLOPPY}fd ; find . -print | cpio -dump ${MNT}
1995-03-13 20:09:38 +00:00
umount ${MNT}
fsck -n /dev/r${FDDEVICE} < /dev/null
1995-03-13 20:09:38 +00:00
dd if=/dev/r${FDDEVICE} of=${RD}/floppies/${FLOPPY}.tmp \
bs=${FDCYLSIZE} count=${FDCYLS}
.endif
1995-03-13 20:09:38 +00:00
mv ${RD}/floppies/${FLOPPY}.tmp ${RD}/floppies/${FLOPPY}.flp
gzip -9 -c < ${RD}/floppies/${FLOPPY}.flp \
> ${RD}/floppies/${FLOPPY}.flp.gz
1995-02-28 01:15:52 +00:00
.include <bsd.prog.mk>