Makefile revision 32731
177218Sphk# $Id: Makefile,v 1.335 1998/01/23 20:15:54 jkh Exp $ 277218Sphk# 377218Sphk# make release CHROOTDIR=/some/dir BUILDNAME=somename [ RELEASETAG=tag ] 477218Sphk# 577218Sphk# Where "/some/dir" is the pathname of a directory on a some 677218Sphk# filesystem with at least 600MB of free space, "somename" is what 777218Sphk# you want the release to call itself and, optionally, which CVS "tag" 877218Sphk# name should be used when checking out the sources to build the release 977218Sphk# (default is HEAD). 1077218Sphk# 1177218Sphk# Please note: the vn driver must also be compiled into your kernel, 1291454Sbrooks# otherwise the target 'release.8' and possibly others will fail. 1391454Sbrooks# 1477218Sphk# Set these, release builder! 1577218Sphk# 1677218Sphk# Fixed version: 1777218Sphk#BUILDNAME=2.2-RELEASE 1877218Sphk# 1977218Sphk# Automatic SNAP versioning: 2077218SphkDATE != date +%y%m%d 2177218SphkBASE = 3.0 2277218SphkBUILDNAME?=${BASE}-${DATE}-SNAP 2377218Sphk# 2477218Sphk#CHROOTDIR=/junk/release 2577218Sphk# If this is a RELEASE, then set 2677218Sphk#RELEASETAG=RELENG_2_2 2777218Sphk 2877218Sphk# Uncomment this to disable the doc.1 target. It is also an ERROR 2977218Sphk# to set NOPORTS and not set NODOC since docs depend on ports. 3077218Sphk#NODOC= YES 3177218SphkDOCPORTS= archivers/unzip lang/perl5 textproc/jade textproc/iso8879 \ 3277218Sphk textproc/linuxdoc textproc/docbook textproc/sgmlformat 3377218Sphk 3477218Sphk# Things which without too much trouble can be considered variables 3577218Sphk# BIN_DISTS are special in that they get full /etc installation sets. 3677218Sphk# 3777218SphkCOMPAT_DISTS?= compat1x compat20 compat21 3877218SphkOTHER_DISTS?= manpages catpages games proflibs dict info doc 3977218SphkCRYPTO_DISTS?= krb des 4077218SphkBIN_DISTS?= bin 4177218SphkDISTRIBUTIONS?= ${BIN_DISTS} ${OTHER_DISTS} ${COMPAT_DISTS} ${CRYPTO_DISTS} 4277218SphkKERNELS?= GENERIC 4377218Sphk 4477218Sphk# Extra source tarballs; each argument is a pair of source dir and 4577218Sphk# distribution name. The dist name should not exceed 7 characters 4677218Sphk# (another "s" for "source" will be prepended). 4777218SphkEXTRA_SRC+= usr.sbin/sendmail/cf smailcf 4877218Sphk 4977218SphkBOOT1= etc/protocols etc/rc.conf 5077218Sphk 5177218Sphk# mountpoint for filesystems. 5277218SphkMNT= /mnt 5377218Sphk 5477218Sphk# other floppy parameters. 5577218SphkFDSIZE= 1440 5677218SphkFDLABEL= fd1440 5777218Sphk 5877218SphkZIPNSPLIT= gzip --no-name -9 -c | split -b 240640 - 5977218Sphk 6077218Sphk# Upper size for the mfs in the boot.flp kernel. 6177218Sphk# These are adjusted down to the minimum needed by doFS.sh. 6277218SphkBOOTMFSSIZE= 1440 6377218SphkMFSINODE= 7000 6477218SphkFIXITINODE= 2000 6577218SphkBOOTINODE= 100000 6677218Sphk 6777218Sphk# Things which may get you into trouble if you change them 6877218SphkMTREEFILES= ${.CURDIR}/../etc/mtree 6977218SphkRD= /R/stage 7077218SphkFD= /R/ftp 7177218SphkCD= /R/cdrom 7277218SphkCD_DISC1= ${CD}/disc1 7377218SphkCD_DISC2= ${CD}/disc2 7477218Sphk 7577218Sphk# ${BOOTSTRAPDIR} is for those utilities that refer to the hosting 7677218Sphk# environment, rather than the target environment. This is specifically 77138593Ssam# intended for kernel-dependent utilities that are used during the build. 7877218Sphk# 79138593Ssam# ${BOOTSTRAPDIR} is actually being used by prepending it to the normal 80116957Ssam# ${PATH}. Thus, it's also available to outside utilities like doFS.sh. 81120178SsamBOOTSTRAPDIR= /bootstrap 82116957Ssam# 8377218Sphk# The mount subsystem has been changed between 2.2 and 3.0 by the 8477218Sphk# Lite2 import. 8577218SphkBOOTSTRAPUTILS= /sbin/mount /sbin/umount 8677218Sphk# 8777218Sphk# 3.0 cpio tries to reference lchown(2) which is not available in 2.2 88146873SjhbBOOTSTRAPUTILS+= /usr/bin/cpio 8977218Sphk 9077218Sphk.if !defined(CRUNCH_TARGETS) 9177218SphkCRUNCH_TARGETS= boot fixit 9277218Sphk.endif 9377218Sphk 9477218SphkEXTRAS= cdrom.1 ftp.1 9577218Sphk 9677218Sphk.if !defined(NODOC) 9777218SphkDOCREL= doc.1 9877218Sphk.endif 9977218Sphk 10077218SphkREDO?= sysinstall 101138593SsamREDOSED= sed -e 's/dirs/release.1/' -e 's/trees/release.2/' \ 102138593Ssam -e 's/kerns/release.3/' -e 's/sysinstall/release.4/' \ 103138593Ssam -e 's/fixup/release.5/' -e 's/tarbin/release.6/' \ 104138593Ssam -e 's/tarsrc/release.7/' -e 's/boot\.flp/release.8/' \ 105138593Ssam -e 's/fixit\.flp/release.9/' -e 's/ftp/ftp.1/' \ 106138593Ssam -e 's/cdrom/cdrom.1/' 107138593Ssam 108138593SsamREDOREDO!= echo ${REDO} | ${REDOSED} 10977218Sphk 11077218Sphkrerelease release: 11177218Sphk.if !defined(CHROOTDIR) || !defined(BUILDNAME) || !defined(CVSROOT) 11277218Sphk @echo "To make a release you must set CHROOTDIR, BUILDNAME and CVSROOT" && false 113151883Sbrooks.endif 11477218Sphk.if make(release) 11577218Sphk.if exists(${CHROOTDIR}) 116121827Sbrooks chflags -R noschg ${CHROOTDIR}/. 11788748Sambrisko -rm -rf ${CHROOTDIR} 11888748Sambrisko.endif 11988748Sambrisko -mkdir -p ${CHROOTDIR} 12088748Sambrisko cd ${.CURDIR}/../etc && ${MAKE} distrib-dirs DESTDIR=${CHROOTDIR} 12177218Sphk cd ${.CURDIR}/../etc && ${MAKE} distribution DESTDIR=${CHROOTDIR} 12277218Sphk cd ${.CURDIR}/.. && ${MAKE} install DESTDIR=${CHROOTDIR} NOMAN=1 12377218Sphk mkdir ${CHROOTDIR}/${BOOTSTRAPDIR} 124151883Sbrooks for i in ${BOOTSTRAPUTILS} ; do \ 125151883Sbrooks cp -p ${CHROOTDIR}$$i ${CHROOTDIR}/${BOOTSTRAPDIR} ; \ 12677218Sphk done 12777218Sphk.if !defined(RELEASETAG) 12877218Sphk cd ${CHROOTDIR}/usr && rm -rf src && \ 12977218Sphk cvs -d ${CVSROOT} co -P src 130138593Ssam.if defined(INTCVSROOT) 13177218Sphk cd ${CHROOTDIR}/usr && \ 13277218Sphk cvs -d ${INTCVSROOT} co -P src/secure src/crypto 13377218Sphk.endif 13477218Sphk.else 13577218Sphk cd ${CHROOTDIR}/usr && rm -rf src && \ 13677218Sphk cvs -d ${CVSROOT} co -P -r ${RELEASETAG} src 13777218Sphk.if defined(INTCVSROOT) 13877218Sphk cd ${CHROOTDIR}/usr && \ 13977218Sphk cvs -d ${INTCVSROOT} co -P -r ${RELEASETAG} src/secure src/crypto 14077218Sphk.endif 14177218Sphk.endif 14277218Sphk.if defined(LOCAL_PATCHES) && exists(${LOCAL_PATCHES}) 143138593Ssam cd ${CHROOTDIR}/usr/src && patch --silent < ${LOCAL_PATCHES} 144138593Ssam.endif 145138593Ssam.if !defined(NOPORTS) 146138593Ssam cd ${CHROOTDIR}/usr && rm -rf ports && cvs -d ${CVSROOT} co -P ports && cd ports && make readmes 147138593Ssam.endif 148138593Ssam.if !defined(NODOC) 149138593Ssam cd ${CHROOTDIR}/usr && rm -rf doc && cvs -d ${CVSROOT} co -P doc 150138593Ssam cd ${CHROOTDIR}/usr/ports && for i in ${DOCPORTS}; do \ 151138593Ssam (cd $$i; make fetch DISTDIR=${CHROOTDIR}/usr/ports/distfiles ); \ 152138593Ssam done 153138593Ssam.endif 154138593Ssam.endif 155138593Ssam.if make(rerelease) 156138593Ssam.if !defined(RELEASENOUPDATE) 157138593Ssam.if !defined(RELEASETAG) 158138593Ssam cd ${CHROOTDIR}/usr/src && cvs -q update -P -d 159138593Ssam.else 160138593Ssam cd ${CHROOTDIR}/usr/src && cvs -q update -P -d -r ${RELEASETAG} 161138593Ssam.endif 162138593Ssam.if !defined(NOPORTS) 163138593Ssam cd ${CHROOTDIR}/usr/ports && cvs -q update -P -d 164138593Ssam.endif 165138593Ssam.if !defined(NODOC) 166138593Ssam cd ${CHROOTDIR}/usr/doc && cvs -q update -P -d 167138593Ssam.endif 168138593Ssam.endif 169138593Ssam.endif 170138593Ssam # Add version information to those things that need it. 171138593Ssam ( cd ${CHROOTDIR}/usr/src/sys/conf && \ 172138593Ssam mv newvers.sh foo && \ 173138593Ssam sed "s/^RELEASE=.*/RELEASE=${BUILDNAME}/" foo > newvers.sh&& rm foo ) 17477218Sphk ( cd ${CHROOTDIR}/usr/src/release/sysinstall && \ 17577218Sphk sed "s/__RELEASE/${BUILDNAME}/" version.h > version.h.new && \ 176138593Ssam mv version.h.new version.h && \ 177138593Ssam echo XXXX ) 178138593Ssam -test -f install.cfg && cp install.cfg ${CHROOTDIR}/usr/src/release 179138593Ssam echo "#!/bin/sh" > ${CHROOTDIR}/mk 180138593Ssam echo "set -ex" >> ${CHROOTDIR}/mk 181138593Ssam echo "export CFLAGS='-O2 -pipe'" >> ${CHROOTDIR}/mk 182116957Ssam echo "export DISTRIBUTIONS=\"${DISTRIBUTIONS}\"" >> ${CHROOTDIR}/mk 18377218Sphk echo "export BUILDNAME=${BUILDNAME}" >> ${CHROOTDIR}/mk 18477218Sphk.if defined(RELEASETAG) 185138593Ssam echo "export RELEASETAG=${RELEASETAG}" >> ${CHROOTDIR}/mk 18677218Sphk.endif 18777218Sphk.if defined(NOPORTS) 18877218Sphk echo "export NOPORTS=${NOPORTS}" >> ${CHROOTDIR}/mk 18977218Sphk.endif 19091454Sbrooks.if defined(NODOC) 19177218Sphk echo "export NODOC=${NODOC}" >> ${CHROOTDIR}/mk 19291454Sbrooks.endif 19377218Sphk.if defined(NOSRC) 19491454Sbrooks echo "export NOSRC=${NOSRC}" >> ${CHROOTDIR}/mk 19577218Sphk.endif 196138593Ssam.if defined(NOSHARED) 197138593Ssam echo "export NOSHARED=${NOSHARED}" >> ${CHROOTDIR}/mk 198138593Ssam.endif 199138593Ssam.if defined(BOOT_CONFIG) 20077218Sphk echo "export BOOT_CONFIG=\"${BOOT_CONFIG}\"">> ${CHROOTDIR}/mk 201150708Sru.endif 20277218Sphk # Don't remove this, or the build will fall over! 20377218Sphk echo "export RELEASEDIR=/R" >> ${CHROOTDIR}/mk 20477218Sphk echo "export PATH=${BOOTSTRAPDIR}:$${PATH}" >> ${CHROOTDIR}/mk 20577218Sphk echo "cd /usr/src" >> ${CHROOTDIR}/mk 20677218Sphk.if make(release) 207138593Ssam # This eases bootstrapping from a more recent hosting environment: 20877218Sphk echo "mkdir -p /usr/lib/compat" >> ${CHROOTDIR}/mk 20977218Sphk echo "chflags noschg /usr/lib/lib*.so.*" >> ${CHROOTDIR}/mk 21077218Sphk echo "mv /usr/lib/lib*.so.* /usr/lib/compat" >> ${CHROOTDIR}/mk 21177218Sphk echo "ldconfig /usr/lib /usr/lib/compat" >> ${CHROOTDIR}/mk 21291454Sbrooks echo "(cd include; make all install)" >> ${CHROOTDIR}/mk 21377218Sphk echo "(cd etc; make distrib-dirs distribution)" >> ${CHROOTDIR}/mk 21491454Sbrooks echo "make world" >> ${CHROOTDIR}/mk 21577218Sphk echo "(cd etc; make distribution)" >> ${CHROOTDIR}/mk 21691454Sbrooks # Now we've got our own shared libs, remove the bootstrapping 21777218Sphk # libs again. 21891454Sbrooks echo "rm -f /usr/lib/compat/*" >> ${CHROOTDIR}/mk 21977218Sphk echo "ldconfig /usr/lib" >> ${CHROOTDIR}/mk 22091454Sbrooks.endif 22177218Sphk.if make(rerelease) 22277218Sphk echo "make all install" >> ${CHROOTDIR}/mk 223150708Sru.endif 22477218Sphk echo "cd /usr/src/release/sysinstall" >> ${CHROOTDIR}/mk 22577218Sphk echo "make obj" >> ${CHROOTDIR}/mk 22677218Sphk echo "cd /usr/src/release" >> ${CHROOTDIR}/mk 22777218Sphk echo "make objlink" >> ${CHROOTDIR}/mk 22877218Sphk echo "(cd obj; rm -f ${REDOREDO})" >> ${CHROOTDIR}/mk 229138593Ssam echo "make doRELEASE" >> ${CHROOTDIR}/mk 23077218Sphk echo "echo make ${.TARGET} Finished" >> ${CHROOTDIR}/mk 23177218Sphk chmod 755 ${CHROOTDIR}/mk 23277218Sphk chroot ${CHROOTDIR} /mk 23377218Sphk 23477218Sphkclean: 23577218Sphk rm -rf boot_crunch release.[0-9] 23677218Sphk 23777218Sphk# Clean out /R and make the directory structure. 23877218Sphkrelease.1: 23977218Sphk -mkdir /R 240138593Ssam chflags -R noschg /R/. 24177218Sphk rm -rf /R/* 24277218Sphk mkdir ${RD} 24377218Sphk mkdir ${RD}/floppies 24477218Sphk mkdir ${RD}/trees 24577218Sphk mkdir ${RD}/dists 246138593Ssam mkdir ${RD}/kernels 24777218Sphk for i in ${DISTRIBUTIONS} ; do \ 24877218Sphk mkdir ${RD}/trees/$$i && \ 24977218Sphk mkdir ${RD}/dists/$$i && \ 25077218Sphk mtree -deU -f ${MTREEFILES}/BSD.root.dist \ 25191454Sbrooks -p ${RD}/trees/$$i > /dev/null && \ 25277218Sphk mtree -deU -f ${MTREEFILES}/BSD.usr.dist \ 25391454Sbrooks -p ${RD}/trees/$$i/usr > /dev/null && \ 25477218Sphk mtree -deU -f ${MTREEFILES}/BSD.include.dist \ 25591454Sbrooks -p ${RD}/trees/$$i/usr/include > /dev/null && \ 25677218Sphk mtree -deU -f ${MTREEFILES}/BSD.var.dist \ 25777218Sphk -p ${RD}/trees/$$i/var > /dev/null ; \ 258150708Sru done 25977218Sphk touch release.1 26077218Sphk 26177218Sphk# Install the system into the various distributions. 26277218Sphkrelease.2: 26377218Sphk cd ${.CURDIR}/../etc && make distrib-dirs DESTDIR=${RD}/trees/bin 264138593Ssam cd ${.CURDIR}/.. && make distribute DISTDIR=${RD}/trees 26577218Sphk.if exists(${.CURDIR}/../kerberosIV) && !defined(NOKERBEROS) 26677218Sphk cd ${.CURDIR}/../kerberosIV && ( \ 26777218Sphk make bootstrap &&\ 26877218Sphk make obj all help-distribute DISTDIR=${RD}/trees &&\ 26977218Sphk make kprog \ 270139493Ssam ) 271139493Ssam.endif 272139493Ssam chflags -R noschg ${RD}/trees 273139493Ssam touch release.2 274139493Ssam 275139493Ssam# Make and install the generic kernel(s). 276138593Ssamrelease.3: 27777218Sphk.for kernel in ${KERNELS} 27877218Sphk rm -f ${RD}/kernels/${kernel} 279139493Ssam rm -rf ${.CURDIR}/../sys/compile/${kernel} 280139493Ssam cd ${.CURDIR} && ${MAKE} doKERNEL KERNEL=${kernel} 281139493Ssam rm -rf ${.CURDIR}/../sys/compile/${kernel} 282139493Ssam ln -f ${RD}/kernels/${kernel} ${RD}/trees/bin/kernel.${kernel} 28377218Sphk.endfor 28477218Sphk touch release.3 285138593Ssam 28677218Sphk# Make and install the three crunched binaries which live on the floppies. 28777218Sphk# You are not supposed to like this :-) 28877218Sphk# 28977218Sphk# NB: the "RELEASE_BUILD_FIXIT" magic prevents vi from including the 290120178Ssam# Tcl and Perl APIs. See also /usr/src/usr.bin/vi/Makefile. 29177218Sphkrelease.4: 29291454Sbrooks @mkdir -p /stand 29377218Sphk cd ${.CURDIR}/sysinstall && make obj depend all install 29477218Sphk rm -rf ${RD}/crunch 29577218Sphk mkdir -p ${RD}/crunch 29677218Sphk export RELEASE_BUILD_FIXIT=noway ; \ 29777218Sphk for j in ${CRUNCH_TARGETS} ; do \ 29877218Sphk rm -rf $${j}_crunch && \ 29977218Sphk mkdir $${j}_crunch && \ 30077218Sphk ( cd $${j}_crunch && \ 30177218Sphk crunchgen ${.CURDIR}/$${j}_crunch.conf && \ 30277218Sphk ${MAKE} -DRELEASE_CRUNCH -f $${j}_crunch.mk subclean all \ 30377218Sphk NOCRYPT=yes "CFLAGS=${CFLAGS} -DCRUNCHED_BINARY") && \ 30477218Sphk mv $${j}_crunch/$${j}_crunch ${RD}/crunch/$${j} && \ 305148686Sstefanf true || { rm -rf $${j}_crunch ; false ; } ; \ 306148686Sstefanf done 30777218Sphk touch release.4 30877218Sphk 309138593Ssam# 31077218Sphk# --==## Fix up the distributions. ##==-- 31177218Sphk# 31277218Sphkrelease.5: 31377218Sphk # Handle some grief caused by the munition braindeadness. 314120178Ssam for i in sbin/init bin/ed ; do \ 31577218Sphk ( cd ${.CURDIR}/../$$i; \ 31677218Sphk make -DNOCRYPT clean all distribute DISTDIR=${RD}/trees ) ; \ 31777218Sphk done 31891454Sbrooks 31977218Sphk # Create any "synthetic dists" now. 32077218Sphk @for i in ${DISTRIBUTIONS}; do \ 32177218Sphk if [ -f ${.CURDIR}/scripts/$${i}-make.sh ]; then \ 32291454Sbrooks echo -n "Running $$i dist creation script... "; \ 32377218Sphk env RD=${RD} sh ${.CURDIR}/scripts/$${i}-make.sh || echo "$$i distribution script returned bad status."; \ 32477218Sphk echo "Done."; \ 32577218Sphk fi \ 326151827Sbrooks done \ 327151827Sbrooks 32877218Sphk # Create symlinks for the MD5-based crypt lib, too. The 32977218Sphk # automatically created links still point to the DES stuff, 33077218Sphk # which went into its own distribution. 33177218Sphk for i in ${RD}/trees/bin/usr/lib/libscrypt* ; do \ 33277218Sphk c=`echo $$i | sed -e 's/libscrypt/libcrypt/'` ; \ 33377218Sphk rm -f $$c ; \ 33477218Sphk ln -s `basename $$i` $$c ; \ 33577218Sphk done 33677218Sphk 33777218Sphk # Remove all the directories we don't need. 33877218Sphk -cd ${RD}/trees && \ 33977218Sphk find ${OTHER_DISTS} ${COMPAT_DISTS} ${CRYPTO_DISTS} -depth -type d -print | xargs rmdir 34091454Sbrooks touch release.5 34177218Sphk 34277218Sphk# 34377218Sphk# --==## Package up the tarballs from assembled trees ##==-- 34477218Sphk# 34577218Sphkrelease.6: 34677218Sphk rm -rf ${RD}/dists 347138593Ssam mkdir -p ${RD}/dists 348127649Ssam @for i in ${DISTRIBUTIONS} ; \ 349127649Ssam do \ 350148416Ssam if [ -d ${RD}/trees/$${i} ] ; then \ 351148416Ssam cd ${.CURDIR} && $(MAKE) doTARBALL \ 352127649Ssam SD=${RD}/trees/$${i} \ 353127649Ssam TN=$$i TD=$$i ARG="." && \ 354138593Ssam echo "$${i} distribution is finished."; \ 355127649Ssam fi ; \ 356127649Ssam done 357127649Ssam # More munition braindeadness. 358127649Ssam ( cd ${RD}/dists && \ 359127649Ssam if [ -f krb/krb.aa ] ; then mv krb/* des && rmdir krb ; fi ) 360127649Ssam touch release.6 361127649Ssam 362127649Ssam 363127649Ssam# 364127649Ssam# --==## Make source dists ##==-- 365127649Ssam# 366150708Srurelease.7: 367127649Ssam.if !defined(NOSRC) 368127649Ssam @cd ${.CURDIR} && $(MAKE) doTARBALL SD=/usr/src \ 369127649Ssam TD=src TN=sbase ARG="[A-Z]*" 370127649Ssam @for i in `cd /usr/src && echo [a-z]*` ; do \ 371127649Ssam if [ -d /usr/src/$$i ] ; then \ 372138593Ssam cd ${.CURDIR} && $(MAKE) doTARBALL \ 373127649Ssam TN=`echo s$$i | tr -d '.' | sed 's/usr/u/'` \ 374127649Ssam SD=/usr/src TD=src ARG="$$i" ; \ 375127649Ssam fi ; \ 376127649Ssam done 377127649Ssam.if defined(EXTRA_SRC) 378138593Ssam @set ${EXTRA_SRC} && \ 379138593Ssam while [ $$# -ge 2 ] ; do \ 380138593Ssam if [ -d /usr/src/$$1 ] ; then \ 381138593Ssam cd ${.CURDIR} && $(MAKE) doTARBALL \ 382138593Ssam SD=/usr/src TN="s$$2" TD=src ARG="$$1" ; \ 383138593Ssam fi && shift && shift ; \ 38477218Sphk done 385138593Ssam.endif 38677218Sphk ( cd ${RD}/dists/src && \ 387138593Ssam if [ -f ssecure.aa ] ; then mv ssecure.* ../des ; fi && \ 388138593Ssam if [ -f scrypto.aa ] ; then mv scrypto.* ../des ; fi && \ 389138593Ssam if [ -f skerbero.aa ] ; then mv skerbero.* ../des ; fi ; ) 390138593Ssam @echo "src distribution is finished." 391138593Ssam.endif 392138593Ssam touch release.7 393138593Ssam 394150708Sru# Complete the bootfd 395138593Ssam# 396138593Ssam# Now, just to get this picture down once and for all: 397138593Ssam# 398138593Ssam# +------------------------------------------------------------------------+ 399138593Ssam# |boot.flp | 400138593Ssam# +-----+-----+------------------------------------------------------------+ 401138593Ssam# |boot1|boot2|floppy filesystem "bootfd" | 402138593Ssam# +-----+-----+-+--------------------------------------------------------+-+ 403138593Ssam# |kernel | 404138593Ssam# +------------+-----------------------------------------+-+ 405138593Ssam# |mfs filesystem "mfsfd" | 406138593Ssam# +-----------------------------------------+ 407138593Ssam# 408138593Ssam 409138593Ssamrelease.8: write_mfs_in_kernel dumpnlist 410138593Ssam rm -rf ${RD}/mfsfd 411138593Ssam mkdir ${RD}/mfsfd 412138593Ssam cd ${RD}/mfsfd && \ 413138593Ssam mkdir -p etc dev mnt stand/help 414138593Ssam @cp ${.CURDIR}/../sys/i386/boot/biosboot/boot.help ${RD}/mfsfd/stand 415138593Ssam @cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=boot \ 416138593Ssam DIR=${RD}/mfsfd/stand ZIP=false 417138593Ssam ( cd ${RD}/trees/bin/dev && \ 418138593Ssam ls console tty ttyv0 ttyv1 ttyv2 ttyv3 null zero \ 419138593Ssam *[swo]d* cuaa[01] cuaa[23] fd[01] rfd[01] \ 420138593Ssam cd0a mcd0a scd0a matcd0a wcd0c rst0 rft0 rwt0 | \ 421138593Ssam cpio -dump ${RD}/mfsfd/dev ) 422138593Ssam ( cd ${RD}/mfsfd/dev && rm -f *[swo]d*[bdefgh] ) 423138593Ssam cd ${RD}/trees/bin && ls ${BOOT1} | cpio -dump ${RD}/mfsfd/stand 424138593Ssam echo "nameserver 42/tcp name" > ${RD}/mfsfd/stand/etc/services 425138593Ssam echo "ftp 21/tcp" >> ${RD}/mfsfd/stand/etc/services 426138593Ssam echo "domain 53/tcp nameserver" >> ${RD}/mfsfd/stand/etc/services 427138593Ssam echo "domain 53/udp nameserver" >> ${RD}/mfsfd/stand/etc/services 428138593Ssam echo "cmd 514/tcp shell" >> ${RD}/mfsfd/stand/etc/services 429138593Ssam gzip -c ${.CURDIR}/../COPYRIGHT > ${RD}/mfsfd/stand/help/COPYRIGHT.hlp.gz 430138593Ssam -test -f ${.CURDIR}/install.cfg && cp ${.CURDIR}/install.cfg ${RD}/mfsfd 431138593Ssam @echo "Making the regular boot floppy." 432138593Ssam tar --exclude CVS -cf - -C ${.CURDIR}/sysinstall help | \ 433138593Ssam tar xvf - -C ${RD}/mfsfd/stand 434138593Ssam @echo "Compressing doc files..." 435138593Ssam @gzip -9 ${RD}/mfsfd/stand/help/*.hlp 436138593Ssam sh -e ${.CURDIR}/doFS.sh ${RD} ${MNT} ${BOOTMFSSIZE} ${RD}/mfsfd \ 437138593Ssam ${MFSINODE} minimum 438138593Ssam mv fs-image fs-image.std 439146873Sjhb mv fs-image.size fs-image.std.size 440138593Ssam cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=std 441138593Ssam mv ${RD}/floppies/bootstd.flp ${RD}/floppies/boot.flp 442138593Ssam @echo "Regular boot floppy made." 443138593Ssam touch release.8 444138593Ssam 445146873Sjhb# 446138593Ssam# --==## Create a fixit floppy ##==-- 447138593Ssam# 448146873Sjhbrelease.9: 449138593Ssam rm -rf ${RD}/fixitfd 450138593Ssam mkdir ${RD}/fixitfd 451138593Ssam cd ${RD}/fixitfd && \ 452138593Ssam mkdir -p dev stand bin sbin etc mnt mnt1 mnt2 mnt3 mnt4 tmp \ 453138593Ssam usr/share/misc usr/mdec 454138593Ssam @cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=fixit \ 455138593Ssam DIR=${RD}/fixitfd/stand ZIP=false 456138593Ssam ( cd ${RD}/fixitfd/dev && \ 457138593Ssam sed -e '/^PATH/s/^/#/' ${RD}/trees/bin/dev/MAKEDEV > MAKEDEV && \ 458138593Ssam chmod 755 MAKEDEV && \ 459138593Ssam sh MAKEDEV all ) 460138593Ssam cp ${RD}/trees/bin/etc/spwd.db ${RD}/trees/bin/etc/group \ 461138593Ssam ${RD}/trees/bin/etc/protocols ${RD}/fixitfd/etc 462138593Ssam cp ${RD}/trees/bin/usr/share/misc/scsi_modes \ 463138593Ssam ${RD}/fixitfd/usr/share/misc 464138593Ssam cp ${RD}/trees/bin/usr/mdec/boot[12] ${RD}/fixitfd/usr/mdec 465138593Ssam for type in fd od sd wd ; do \ 466138593Ssam ( cd ${RD}/fixitfd/usr/mdec && ln -s boot1 $${type}boot && \ 467138593Ssam ln -s boot2 boot$${type} ) ; \ 468138593Ssam done 469138593Ssam cp ${.CURDIR}/fixit.profile ${RD}/fixitfd/.profile 470138593Ssam cp ${.CURDIR}/fixit.services ${RD}/fixitfd/etc/services 471138593Ssam cp ${.CURDIR}/tar.sh ${RD}/fixitfd/stand/tar 472138593Ssam chmod 555 ${RD}/fixitfd/stand/tar 473138593Ssam sh -e ${.CURDIR}/doFS.sh ${RD} ${MNT} ${FDSIZE} ${RD}/fixitfd \ 474138593Ssam ${FIXITINODE} ${FDLABEL} 475138593Ssam mv fs-image ${RD}/floppies/fixit.flp 476138593Ssam# Do our last minute floppies directory setup in a convenient place. 477138593Ssam cp ${.CURDIR}/README.TXT ${RD}/floppies/README.TXT 478138593Ssam @(cd ${RD}/floppies; md5 * > CHECKSUM.MD5) 479138593Ssam touch release.9 480138593Ssam 481138593Ssam# 482138593Ssam# --==## Setup a suitable ftp-area ##==-- 483138593Ssam# 484138593Ssamftp.1: 485138593Ssam mkdir -p ${FD} 486138593Ssam cd ${RD} && find floppies -print | cpio -dumpl ${FD} 487138593Ssam cd ${RD}/dists && find . -print | cpio -dumpl ${FD} 488138593Ssam cp ${.CURDIR}/ABOUT.TXT ${FD}/ABOUT.TXT 489138593Ssam cp ${.CURDIR}/sysinstall/help/readme.hlp ${FD}/README.TXT 490138593Ssam cp ${.CURDIR}/sysinstall/help/hardware.hlp ${FD}/HARDWARE.TXT 491138593Ssam cp ${.CURDIR}/sysinstall/help/install.hlp ${FD}/INSTALL.TXT 492138593Ssam cp ${.CURDIR}/sysinstall/help/relnotes.hlp ${FD}/RELNOTES.TXT 493138593Ssam echo "CD_VERSION = ${BUILDNAME}" > ${FD}/cdrom.inf 494138593Ssam.if !defined(NOPORTS) 495138593Ssam tar -cBf - -C ${CD_DISC1} ports | tar -xBf - -C ${FD} 496138593Ssam.endif 497138593Ssam 498138593Ssam# 499138593Ssam# --==## Setup a suitable cdrom-area ##==-- 500138593Ssam# 501138593Ssamcdrom.1: 502138593Ssam mkdir -p ${CD_DISC1} ${CD_DISC2} 503138593Ssam cd ${RD} && find floppies -print | cpio -dumpl ${CD_DISC1} 504138593Ssam cd ${RD}/dists && find . -print | cpio -dumpl ${CD_DISC1} 505138593Ssam ln -f ${RD}/kernels/MFSKERNEL.std ${CD_DISC1}/kernel 506138593Ssam ln -f ${RD}/trees/bin/usr/mdec/fbsdboot.exe ${CD_DISC1} 507138593Ssam for i in ${DISTRIBUTIONS} ; \ 508138593Ssam do \ 509138593Ssam if [ -d ${RD}/trees/$${i} ] ; then \ 510138593Ssam chflags -R noschg ${RD}/trees/$${i} ; \ 511138593Ssam ( cd ${RD}/trees/$${i} && \ 512138593Ssam find . -depth -print | cpio -dumpl ${CD_DISC2} ) ; \ 513138593Ssam fi \ 514138593Ssam done 515138593Ssam rm -f ${CD_DISC2}/.profile 516138593Ssam cp ${.CURDIR}/fixit.profile ${CD_DISC2}/.profile 517138593Ssam echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC1}/cdrom.inf 518138593Ssam echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC2}/cdrom.inf 519138593Ssam cp ${.CURDIR}/ABOUT.TXT ${CD_DISC1}/ABOUT.TXT 520138593Ssam cp ${.CURDIR}/sysinstall/help/readme.hlp ${CD_DISC1}/README.TXT 521138593Ssam cp ${.CURDIR}/sysinstall/help/hardware.hlp ${CD_DISC1}/HARDWARE.TXT 522138593Ssam cp ${.CURDIR}/sysinstall/help/install.hlp ${CD_DISC1}/INSTALL.TXT 523138593Ssam cp ${.CURDIR}/sysinstall/help/relnotes.hlp ${CD_DISC1}/RELNOTES.TXT 524138593Ssam.if !defined(NOPORTS) 525138593Ssam tar -cBf - -C /usr ports | tar xBpf - -C ${CD_DISC2} && \ 526138593Ssam mkdir -p ${CD_DISC1}/ports && \ 527138593Ssam tar -czf ${CD_DISC1}/ports/ports.tgz -C /usr ports && \ 528138593Ssam cp ${.CURDIR}/scripts/ports-install.sh ${CD_DISC1}/ports/install.sh && \ 529138593Ssam (cd ${CD_DISC1}/ports; md5 * > CHECKSUM.MD5) 530138593Ssam ln -s ../ports ${CD_DISC2}/usr/ports 531138593Ssam.endif 532138593Ssam 533138593Ssamdoc.1: 534138593Ssam for i in ${DOCPORTS}; do \ 535138593Ssam (cd /usr/ports/$$i; make all install clean); \ 536138593Ssam done 537148621Ssam cd /usr/doc && make all distribute DISTDIR=${RD}/trees 538138593Ssam 539148621Ssam# Various "subroutine" and other supporting targets. 540138593Ssam 541148621SsamdoTARBALL: 542148621Ssam.if !defined(SD) 543148621Ssam @echo "SD undefined in doTARBALL" && exit 1 544148621Ssam.endif 545148621Ssam.if !defined(TD) 546138593Ssam @echo "TB undefined in doTARBALL" && exit 1 547138593Ssam.endif 548148621Ssam.if !defined(ARG) 549138593Ssam @echo "ARG undefined in doTARBALL" && exit 1 550148621Ssam.endif 551138593Ssam rm -rf ${RD}/dists/${TD}/${TN}* 552148621Ssam mkdir -p ${RD}/dists/${TD} 553148621Ssam ( cd ${SD} && \ 554148621Ssam tn=`echo ${TN} | tr '[A-Z]' '[a-z]' | cut -c1-8` && \ 555148621Ssam echo rolling ${TD}/$$tn tarball &&\ 556148621Ssam tar --exclude CVS --exclude obj --exclude BOOTMFS -cf - ${ARG} | \ 557138593Ssam ${ZIPNSPLIT} ${RD}/dists/${TD}/$$tn. && \ 558138593Ssam sh ${.CURDIR}/info.sh ${RD}/dists/${TD}/$$tn > \ 559138593Ssam ${RD}/dists/${TD}/$$tn.inf && \ 560138593Ssam if [ -f ${.CURDIR}/scripts/$${TD}-install.sh ]; then \ 561138593Ssam cp -p ${.CURDIR}/scripts/$${TD}-install.sh ${RD}/dists/${TD}/install.sh; \ 562138593Ssam fi && \ 563138593Ssam if [ "${SD}" != "/usr/src" ]; then \ 564138593Ssam mtree -c -i -p ${SD}/${ARG} \ 565138593Ssam -k gname,md5digest,mode,nlink,uname,size,link,type \ 566138593Ssam > ${RD}/dists/${TD}/$$tn.mtree ; \ 567138593Ssam else \ 568138593Ssam true; \ 569138593Ssam fi; \ 570138593Ssam (cd ${RD}/dists/${TD}; \ 571138593Ssam rm -f CHECKSUM.MD5; \ 572138593Ssam md5 * > CHECKSUM.MD5) \ 573138593Ssam ) 574138593Ssam 575138593SsamdoRELEASE: release.1 release.2 ${DOCREL} release.3 release.4 release.5 \ 576138593Ssam release.6 release.7 release.8 release.9 577138593Ssam cd ${.CURDIR} && ${MAKE} ${EXTRAS} 578138593Ssam @echo "Release done" 579138593Ssam 580138593Ssamfloppies: 581138593Ssam cd ${.CURDIR} && ${MAKE} boot.flp 582138593Ssam cd ${.CURDIR} && ${MAKE} fixit.flp 583138593Ssam cd ${RD} && find floppies -print | cpio -dumpl ${FD} 584138593Ssam 585138593Ssamboot.flp: 586138593Ssam rm -f release.4 release.8 587138593Ssam cd ${.CURDIR} && ${MAKE} release.4 release.8 CRUNCH_TARGETS=boot 588138593Ssam 589138593Ssamfixit.flp: 590138593Ssam rm -f release.4 release.9 591138593Ssam cd ${.CURDIR} && ${MAKE} release.4 release.9 CRUNCH_TARGETS=fixit 592138593Ssam 593138593Ssamwrite_mfs_in_kernel: ${.CURDIR}/write_mfs_in_kernel.c 594138593Ssam ${CC} ${CFLAGS} -o write_mfs_in_kernel ${.CURDIR}/write_mfs_in_kernel.c 595138593Ssam 596138593Ssamdumpnlist: ${.CURDIR}/dumpnlist.c 597138593Ssam ${CC} ${CFLAGS} -o dumpnlist ${.CURDIR}/dumpnlist.c 598138593Ssam 599138593SsaminstallCRUNCH: 600138593Ssam.if !defined(CRUNCH) 601138593Ssam @echo "CRUNCH undefined in installCRUNCH" && exit 1 602138593Ssam.endif 603138593Ssam.if !defined(DIR) 604138593Ssam @echo "DIR undefined in installCRUNCH" && exit 1 605138593Ssam.endif 606138593Ssam.if !defined(ZIP) 607138593Ssam @echo "ZIP undefined in installCRUNCH" && exit 1 608138593Ssam.endif 609138593Ssam if ${ZIP} ; then \ 610138593Ssam gzip -9 < ${RD}/crunch/${CRUNCH} > ${DIR}/${CRUNCH}_crunch ; \ 611138593Ssam else \ 612138593Ssam ln -f ${RD}/crunch/${CRUNCH} ${DIR}/${CRUNCH}_crunch ; \ 613138593Ssam fi 614138593Ssam chmod 555 ${DIR}/${CRUNCH}_crunch 615138593Ssam for i in `crunchgen -l ${.CURDIR}/${CRUNCH}_crunch.conf` ; do \ 616138593Ssam ln -f ${DIR}/${CRUNCH}_crunch ${DIR}/$$i ; \ 617138593Ssam done 618138593Ssam 619138593Ssam# 620138593Ssam# --==## Compile a kernel by name ${KERNEL} ##==-- 621138593Ssam# 622138593Ssam# We don't erase the sys/compile/${KERNEL} directory, since somebody 623138593Ssam# may want to reuse it (release.8 presently) 624138593Ssam# 625138593SsamdoKERNEL: 626138593Ssam rm -f ${RD}/kernels/${KERNEL} 627138593Ssam cd ${.CURDIR}/../sys/i386/conf && config -n ${KERNEL} 628138593Ssam cd ${.CURDIR}/../sys/compile/${KERNEL} && \ 629138593Ssam make depend && \ 630149029Ssam make kernel && \ 631149029Ssam cp kernel ${RD}/kernels/${KERNEL} 632149029Ssam 633149029Ssam# 634149029Ssam# --==## Put a filesystem into a BOOTMFS kernel ##==-- 635149029Ssam# 636149029SsamdoMFSKERN: 637149029Ssam @rm -f ${RD}/kernels/BOOTMFS.${FSIMAGE} 638149029Ssam @rm -f /sys/compile/BOOTMFS/mfs_vfsops.o 639149029Ssam @cd ${.CURDIR}/../sys/i386/conf && \ 640149029Ssam sed -e '/SYSV/d' \ 641149029Ssam -e '/pty/d' \ 642149029Ssam -e '/PROCFS/d' \ 643149029Ssam -e '/KTRACE/d' \ 644149029Ssam -e 's/GENERIC/BOOTMFS/g' \ 645149029Ssam -e '/maxusers/s/10/4/' < GENERIC > BOOTMFS && \ 646149029Ssam echo "options MFS" >> BOOTMFS && \ 647149029Ssam echo "options NFS_NOSERVER" >> BOOTMFS && \ 648149029Ssam echo 'options "MAXCONS=4"' >> BOOTMFS && \ 649149029Ssam echo "options USERCONFIG_BOOT" >> BOOTMFS 650149029Ssam @echo "options \"MFS_ROOT=`cat fs-image.${FSIMAGE}.size`\"" >> \ 651149029Ssam ${.CURDIR}/../sys/i386/conf/BOOTMFS 652149029Ssam cd ${.CURDIR} && ${MAKE} doKERNEL KERNEL=BOOTMFS 653149029Ssam @rm -rf ${RD}/boot.${FSIMAGE} 654138593Ssam @mkdir ${RD}/boot.${FSIMAGE} 655138593Ssam @mv ${RD}/kernels/BOOTMFS ${RD}/kernels/BOOTMFS.${FSIMAGE} 656138593Ssam @cp ${RD}/kernels/BOOTMFS.${FSIMAGE} ${RD}/boot.${FSIMAGE}/kernel 657138593Ssam.if defined(BOOT_CONFIG) 658138593Ssam @echo "${BOOT_CONFIG}" >${RD}/boot.${FSIMAGE}/boot.config 659147795Ssam.endif 660147795Ssam @vnconfig /dev/vn0 fs-image.${FSIMAGE} 661147795Ssam @mkdir -p /tmp/mnt_xx 662147795Ssam @mount /dev/vn0 /tmp/mnt_xx 663147795Ssam ./dumpnlist ${RD}/boot.${FSIMAGE}/kernel > /tmp/mnt_xx/stand/symbols 664147795Ssam @umount /tmp/mnt_xx 665148416Ssam @vnconfig -u /dev/vn0 666153354Ssam @rmdir /tmp/mnt_xx 667153354Ssam ./write_mfs_in_kernel ${RD}/boot.${FSIMAGE}/kernel \ 668153354Ssam fs-image.${FSIMAGE} 669153354Ssam kzip -v ${RD}/boot.${FSIMAGE}/kernel 670153354Ssam @mv ${RD}/boot.${FSIMAGE}/kernel ${RD}/kernels/MFSKERNEL.${FSIMAGE} 671153354Ssam @mv ${RD}/boot.${FSIMAGE}/kernel.kz ${RD}/boot.${FSIMAGE}/kernel 672148416Ssam @cp ${.CURDIR}/../sys/i386/boot/biosboot/boot.help ${RD}/boot.${FSIMAGE} 673148416Ssam @touch ${RD}/boot.${FSIMAGE}/boot.config 674148416Ssam @touch ${RD}/boot.${FSIMAGE}/kernel.config 675148416Ssam @rm -f ${RD}/floppies/boot${FSIMAGE}.flp 676148416Ssam sh -e ${.CURDIR}/doFS.sh ${RD} ${MNT} ${FDSIZE} ${RD}/boot.${FSIMAGE} \ 677148416Ssam ${BOOTINODE} ${FDLABEL} 678138593Ssam mv fs-image ${RD}/floppies/boot${FSIMAGE}.flp 679138593Ssam 680138593Ssam.include <bsd.prog.mk> 681138593Ssam