Makefile revision 75251
11558Srgrimes# $FreeBSD: head/release/Makefile 75251 2001-04-05 22:36:41Z obrien $ 21558Srgrimes# 31558Srgrimes# make release CHROOTDIR=/some/dir BUILDNAME=somename CVSROOT=/cvs/dir \ 41558Srgrimes# [ RELEASETAG=tag ] 51558Srgrimes# 61558Srgrimes# Where "/some/dir" is the pathname of a directory on a some filesystem with 71558Srgrimes# at least 1000MB of free space, "somename" is what you want the release to 81558Srgrimes# call itself, "/cvs/dir" is where our source repo resides and, optionally, 91558Srgrimes# which CVS "tag" name should be used when checking out the sources to build 101558Srgrimes# the release (default is HEAD). 111558Srgrimes# 121558Srgrimes# Please note: the vn driver must also be compiled into your kernel, 131558Srgrimes# otherwise the target 'release.8' and possibly others will fail. 141558Srgrimes# 151558Srgrimes# Set these, release builder! 161558Srgrimes# 171558Srgrimes# Fixed version: 181558Srgrimes#BUILDNAME=5.0-RELEASE 191558Srgrimes# 201558Srgrimes# Automatic SNAP versioning: 211558SrgrimesDATE != date +%Y%m%d 221558SrgrimesBASE = 5.0 231558SrgrimesBUILDNAME?=${BASE}-${DATE}-SNAP 241558Srgrimes# 251558Srgrimes#CHROOTDIR=/junk/release 261558Srgrimes# If this is a -stable snapshot, then set 271558Srgrimes#RELEASETAG=RELENG_4 2823678Speter# 2950476Speter# Non-zero if ${RELEASETAG} is in the form "RELENG_ver_RELEASE"; we 301558Srgrimes# are building an official release. Otherwise, we are building for 31277434Strasz# a branch. 321558Srgrimes.if defined(RELEASETAG) 3379530SruISRELEASE!= expr ${RELEASETAG} : '^RELENG_.*_RELEASE$$' || true 341558Srgrimes.if ${ISRELEASE} != 0 351558Srgrimes# Convert "RELENG_ver_RELEASE" to "RELEASE_ver" for ports and doc trees. 36102231StrhodesAUXRELEASETAG!= echo ${RELEASETAG} | sed -e 's/^RELENG_/RELEASE_/' -e 's/_RELEASE$$//' 371558SrgrimesDOCRELEASETAG?= ${AUXRELEASETAG} 3868960SruPORTSRELEASETAG?= ${AUXRELEASETAG} 39160303Sdes.endif 40125200Sguido.endif 41125197Sguido 42162395SruKERNCONF=GENERIC 4368960Sru 4417243Sjkh# If you want to pass flags to the world build such as -j X, use 451558Srgrimes# WORLD_FLAGS. Similarly, you can specify make flags for kernel 4668960Sru# builds via KERNEL_FLAGS. 4717243Sjkh#WORLD_FLAGS=-j4 481558Srgrimes#KERNEL_FLAGS=-j4 49162395Sru 501558Srgrimes# If you are using a local CVS repository with components stored in 511558Srgrimes# non-standard modules, override these on the make commandline or 521558Srgrimes# in the environment. 5328644SsteveRELEASESRCMODULE?= src 5499501ScharnierRELEASEDOCMODULE?= doc 55155992SrodrigcRELEASEPORTSMODULE?= ports 561558Srgrimes 57162395Sru# Unless set elsewhere, indicate the object format we'll be using. 58162395SruOBJFORMAT?= elf 591558Srgrimes 601558Srgrimes# Uncomment this to disable the doc.1 target. It is also an ERROR 611558Srgrimes# to set NOPORTS and not set NODOC since docs depend on ports. 621558Srgrimes#NODOC= YES 631558Srgrimes#NOPORTS= YES 641558Srgrimes# Set ALLLANG=no if you want the release documentation to be 651558Srgrimes# in English only. 661558SrgrimesALLLANG?= yes 671558SrgrimesDOCPORTS= textproc/docproj 68102231Strhodes# Set this to wherever the distfiles required by ${DOCPORTS} live. 691558SrgrimesDOCDISTFILES?= ${.CURDIR}/../../ports/distfiles 7068960Sru# Set this to 1 if you want -P to be used for automatic keyboard detection 711558Srgrimes# on the boot floppy. WARNING: Breaks on some Athlon (K7) motherboards. 721558SrgrimesAUTO_KEYBOARD_DETECT?= 0 731558Srgrimes 741558Srgrimes 7510291SdgDIST_DOCS= ABOUT.TXT ERRATA.TXT LAYOUT.TXT README.TXT HARDWARE.TXT \ 76102231Strhodes RELNOTES.TXT TROUBLE.TXT UPGRADE.TXT INSTALL.TXT 7723678Speter 7823678Speter# Things which without too much trouble can be considered variables 7969077Sru# BIN_DISTS are special in that they get full /etc installation sets. 80162395Sru# 81160303Sdes.if ${MACHINE_ARCH} == "i386" 82162395SruCOMPAT_DISTS?= compat1x compat20 compat21 compat22 compat3x compat4x 83160303Sdes.else 84160303SdesCOMPAT_DISTS?= compat4x 85160303Sdes.endif 86160303SdesOTHER_DISTS?= manpages catpages games proflibs dict info doc 8723678SpeterCRYPTO_DISTS?= crypto krb4 krb5 8828671SsteveBIN_DISTS?= bin 89102231StrhodesDISTRIBUTIONS?= ${BIN_DISTS} ${OTHER_DISTS} ${COMPAT_DISTS} ${CRYPTO_DISTS} 9028671SsteveKERNELS?= GENERIC 911558Srgrimes 921558SrgrimesBOOT1= etc/protocols etc/netconfig etc/defaults/rc.conf 931558Srgrimes 941558Srgrimes# mountpoint for filesystems. 951558SrgrimesMNT= /mnt 961558Srgrimes 9728644Ssteve# Various floppy image parameters. 981558Srgrimes# 99113220Smdodd 100113220Smdodd.if ${MACHINE_ARCH} == "i386" 101113220Smdodd.if ${MACHINE} == "pc98" 102113220SmdoddSMALLBOOTSIZE= 1200 1031558SrgrimesBOOTSIZE= 1440 1041558SrgrimesFIXITSIZE= 1440 105102231StrhodesMFSSIZE= 2880 10657668SsheldonhBOOTINODE= 80000 107102231StrhodesFIXITINODE= 4000 1088530SdgMFSINODE= 8000 109250235ScreesSMALLBOOTLABEL= fd1200 110250235ScreesBOOTLABEL= fd1440 111250235ScreesFIXITLABEL= fd1440 112250235ScreesMFSLABEL= minimum2 113250235Screes.else 114250235ScreesBOOTSIZE= 1440 115250235ScreesFIXITSIZE= 1440 116160303SdesMFSSIZE= 4320 117160303SdesBIGBOOTSIZE= 2880 118160303SdesBOOTINODE= 80000 119160303SdesFIXITINODE= 4000 120162395SruMFSINODE= 8000 121253372SrmhBOOTLABEL= fd1440 122253372SrmhFIXITLABEL= fd1440 123253372SrmhMFSLABEL= minimum3 1241558SrgrimesBIGBOOTLABEL= minimum2 1251558Srgrimes.endif 1261558Srgrimes.elif ${MACHINE_ARCH} == "alpha" 1271558SrgrimesBOOTSIZE= 1440 12846619SjkoshyFIXITSIZE= 2880 12946619SjkoshyMFSSIZE= 2880 1301558SrgrimesBIGBOOTSIZE= 2880 1311558SrgrimesBOOTINODE= 80000 132125638StrhodesFIXITINODE= 4000 133200796StraszMFSINODE= 8000 134125638StrhodesBOOTLABEL= fd1440 135125638StrhodesFIXITLABEL= minimum2 136125638StrhodesMFSLABEL= minimum2 137125638StrhodesBIGBOOTLABEL= minimum2 138200796Strasz.endif 139200796Strasz 140200796StraszZIPNSPLIT= gzip --no-name -9 -c | split -b 240640 - 14169077Sru 1421558Srgrimes 1431558SrgrimesVNDEVICE?= vn0 144102231Strhodes 1451558Srgrimes# Things which may get you into trouble if you change them 1461558SrgrimesMTREEFILES= ${.CURDIR}/../etc/mtree 147162154Sdanger_R= /R 148162154SdangerRD= ${_R}/stage 149162154SdangerFD= ${_R}/ftp 150162154SdangerCD= ${_R}/cdrom 151162154SdangerCD_DISC1= ${CD}/disc1 152162154SdangerCD_DISC2= ${CD}/disc2 153270895Strasz 154270895Strasz# Where the bootstrap ports (see DOCPORTS) get installed. 155270895StraszLOCALDIR= /usr/local/bin 156270895Strasz 157270895Strasz# ${BOOTSTRAPDIR} is for those utilities that refer to the hosting 15869077Sru# environment, rather than the target environment. This is specifically 15946619Sjkoshy# intended for kernel-dependent utilities that are used during the build. 16046619Sjkoshy# 16146619Sjkoshy# ${BOOTSTRAPDIR} is actually being used by prepending it to the normal 162102231Strhodes# ${PATH}. Thus, it's also available to outside utilities like doFS.sh. 16369077SruBOOTSTRAPDIR= /bootstrap 1641558Srgrimes# 1651558Srgrimes# The mount subsystem has been changed between 2.2 and 3.0 by the 1661558Srgrimes# Lite2 import. 167102231StrhodesBOOTSTRAPUTILS= /sbin/mount /sbin/umount 16857668Ssheldonh# 169102231Strhodes# 3.0 cpio tries to reference lchown(2) which is not available in 2.2 17069077SruBOOTSTRAPUTILS+= /usr/bin/cpio 17146619Sjkoshy 17246619Sjkoshy.if !defined(CRUNCH_TARGETS) 17346619SjkoshyCRUNCH_TARGETS= boot fixit 17446619Sjkoshy.endif 175102231Strhodes 176160303Sdes.if ${MACHINE} == "pc98" 177160303SdesEXTRAS= ftp.1 178162307Sdes.else 179162307SdesEXTRAS= cdrom.1 ftp.1 180160303Sdes.endif 181160303Sdes 182160303Sdes.if !defined(NODOC) 183160303SdesDOCREL= doc.1 184189397Srodrigc.endif 185189397Srodrigc 186189397Srodrigc.if !defined(NOPORTREADMES) 187189397SrodrigcMAKEREADMES= make readmes PORTSDIR=${CHROOTDIR}/usr/ports 188189397Srodrigc.else 189241581SeadlerMAKEREADMES= true 190241581Seadler.endif 191189397Srodrigc 192189397Srodrigcrerelease release: 193189397Srodrigc.if !defined(CHROOTDIR) || !defined(BUILDNAME) || !defined(CVSROOT) 194125638Strhodes @echo "To make a release you must set CHROOTDIR, BUILDNAME and CVSROOT" && false 195127435Srwatson.endif 196127435Srwatson.if defined(NOPORTS) && !defined(NODOC) 197127435Srwatson @echo "Ports are required for building the docs. Either set NODOC or" 198127435Srwatson @echo "unset NOPORTS!" 199139330Sjosef @exit 1 200129327Sru.endif 201129327Sru.if make(release) 202125638Strhodes.if exists(${CHROOTDIR}) 203125638Strhodes# The first command will fail on a handful of files that have their schg 204125638Strhodes# flags set. But it greatly speeds up the next two commands. 205125638Strhodes -rm -rf ${CHROOTDIR} 2>/dev/null 206127435Srwatson -chflags -R noschg ${CHROOTDIR}/. 207127435Srwatson -rm -rf ${CHROOTDIR} 208200796Strasz.endif 209200796Strasz mkdir -p ${CHROOTDIR} 210200796Strasz @echo ">>> make release started on `LC_ALL=C TZ=GMT date`" 211200796Strasz cd ${.CURDIR}/../etc && ${MAKE} distrib-dirs DESTDIR=${CHROOTDIR} 212200796Strasz cd ${.CURDIR}/../etc && ${MAKE} distribution DESTDIR=${CHROOTDIR} 213200796Strasz if [ -f /etc/resolv.conf ]; then \ 214200796Strasz cp -p /etc/resolv.conf ${CHROOTDIR}/etc; \ 215200796Strasz fi 216200796Strasz cd ${.CURDIR}/.. && ${MAKE} installworld DESTDIR=${CHROOTDIR} NOMAN=1 21769077Sru mkdir ${CHROOTDIR}/${BOOTSTRAPDIR} 21851763Sobrien for i in ${BOOTSTRAPUTILS} ; do \ 21969077Sru cp -p ${CHROOTDIR}$$i ${CHROOTDIR}/${BOOTSTRAPDIR} ; \ 22069077Sru done 22169077Sru.if !defined(RELEASETAG) 22257668Ssheldonh cd ${CHROOTDIR}/usr && rm -rf src && \ 22357668Ssheldonh cvs -R -d ${CVSROOT} co -P ${RELEASESRCMODULE} 224102231Strhodes.else 22518159Sdg cd ${CHROOTDIR}/usr && rm -rf src && \ 22669077Sru cvs -R -d ${CVSROOT} co -P -r ${RELEASETAG} ${RELEASESRCMODULE} 227219040Sdougb.endif 22869077Sru.if defined(LOCAL_PATCHES) && exists(${LOCAL_PATCHES}) 229102231Strhodes cd ${CHROOTDIR}/usr/src && patch ${PATCH_FLAGS} < ${LOCAL_PATCHES} 23069077Sru.endif 23169077Sru.if defined(LOCAL_SCRIPT) && exists(${LOCAL_SCRIPT}) 23223678Speter cd ${CHROOTDIR} && env CHROOTDIR=${CHROOTDIR} BUILDNAME=${BUILDNAME} RELEASETAG=${RELEASETAG} ${LOCAL_SCRIPT} 23323678Speter.endif 23469077Sru.if !defined(NOPORTS) 23529890Skato.if defined(PORTSRELEASETAG) 23669077Sru cd ${CHROOTDIR}/usr && rm -rf ports && cvs -R -d ${CVSROOT} co -P -r ${PORTSRELEASETAG} ${RELEASEPORTSMODULE} && cd ports && ${MAKEREADMES} 23729890Skato.else 23869077Sru cd ${CHROOTDIR}/usr && rm -rf ports && cvs -R -d ${CVSROOT} co -P ${RELEASEPORTSMODULE} && cd ports && ${MAKEREADMES} 239102231Strhodes.endif 240102231Strhodes.endif 2411558Srgrimes.if !defined(NODOC) 242144000Scperciva.if defined(DOCRELEASETAG) 243144000Scperciva cd ${CHROOTDIR}/usr && rm -rf doc && cvs -R -d ${CVSROOT} co -P -r ${DOCRELEASETAG} ${RELEASEDOCMODULE} 244144000Scperciva.else 245144000Scperciva cd ${CHROOTDIR}/usr && rm -rf doc && cvs -R -d ${CVSROOT} co -P ${RELEASEDOCMODULE} 246144000Scperciva.endif 24769077Sru if [ -d ${DOCDISTFILES}/ ]; then \ 2481558Srgrimes cp -rp ${DOCDISTFILES} ${CHROOTDIR}/usr/ports/distfiles; \ 24916924Swosch fi 25016924Swosch.endif 25128644Ssteve.endif 25216924Swosch.if make(rerelease) 253109186Sjoerg.if !defined(RELEASENOUPDATE) 25469077Sru.if !defined(RELEASETAG) 25535105Swosch cd ${CHROOTDIR}/usr/src && cvs -R -q update -P -d 256102231Strhodes.else 257121349Sseanc cd ${CHROOTDIR}/usr/src && cvs -R -q update -P -d -r ${RELEASETAG} 2581558Srgrimes.endif 2591558Srgrimes.if !defined(NOPORTS) 260102231Strhodes cd ${CHROOTDIR}/usr/ports && cvs -R -q update -P -d 26199817Strhodes.endif 262102231Strhodes.if !defined(NODOC) 26399817Strhodes cd ${CHROOTDIR}/usr/doc && cvs -R -q update -P -d 26499817Strhodes.endif 26599817Strhodes.endif 266102231Strhodes.endif 26799817Strhodes # Add version information to those things that need it. 268102231Strhodes ( cd ${CHROOTDIR}/usr/src/sys/conf && \ 26999817Strhodes mv newvers.sh foo && \ 27099817Strhodes sed "s/^RELEASE=.*/RELEASE=${BUILDNAME}/" foo > newvers.sh && rm foo ) 27199817Strhodes echo OBJFORMAT=${OBJFORMAT} > ${CHROOTDIR}/etc/objformat 272101795Sru -test -f install.cfg && cp install.cfg ${CHROOTDIR}/usr/src/release 27399817Strhodes echo "#!/bin/sh" > ${CHROOTDIR}/mk 27499817Strhodes echo "set -ex" >> ${CHROOTDIR}/mk 27599817Strhodes echo "_RELTARGET=\$${1:-doRELEASE}" >> ${CHROOTDIR}/mk 27699817Strhodes echo "export CFLAGS='-O -pipe'" >> ${CHROOTDIR}/mk 27799817Strhodes echo "export NO_X=YES" >> ${CHROOTDIR}/mk 27899817Strhodes echo "export DISTRIBUTIONS=\"${DISTRIBUTIONS}\"" >> ${CHROOTDIR}/mk 27999817Strhodes echo "export BUILDNAME=${BUILDNAME}" >> ${CHROOTDIR}/mk 28099817Strhodes echo "export VNDEVICE=${VNDEVICE}" >> ${CHROOTDIR}/mk 28199817Strhodes echo "export OBJFORMAT=${OBJFORMAT}" >> ${CHROOTDIR}/mk 28299817Strhodes.if defined(RELEASETAG) 283101795Sru echo "export RELEASETAG=${RELEASETAG}" >> ${CHROOTDIR}/mk 28499817Strhodes.endif 28599817Strhodes.if defined(NOPORTS) 28699817Strhodes echo "export NOPORTS=${NOPORTS}" >> ${CHROOTDIR}/mk 28799817Strhodes.endif 288101795Sru.if defined(NODOC) 289101795Sru echo "export NODOC=${NODOC}" >> ${CHROOTDIR}/mk 290101795Sru.endif 291102231Strhodes.if defined(ALLLANG) && ${ALLLANG} != "NO" && ${ALLLANG} != "no" 29299817Strhodes echo "export ALLLANG=${ALLLANG}" >> ${CHROOTDIR}/mk 29399817Strhodes.else 29499817Strhodes echo "export DOC_LANG=en_US.ISO_8859-1" >> ${CHROOTDIR}/mk 29599817Strhodes.endif 296101795Sru.if defined(NOSRC) 297101795Sru echo "export NOSRC=${NOSRC}" >> ${CHROOTDIR}/mk 298101795Sru.endif 299102231Strhodes.if defined(NOSHARED) 30099817Strhodes echo "export NOSHARED=${NOSHARED}" >> ${CHROOTDIR}/mk 30199817Strhodes.endif 30299817Strhodes.if defined(BOOT_CONFIG) 303102231Strhodes echo "export BOOT_CONFIG=\"${BOOT_CONFIG}\"">> ${CHROOTDIR}/mk 30499817Strhodes.endif 30599817Strhodes.if defined(KERNEL_FLAGS) 30699817Strhodes echo "export KERNEL_FLAGS=\"${KERNEL_FLAGS}\"" >> ${CHROOTDIR}/mk 30799817Strhodes.endif 30899817Strhodes # Don't remove this, or the build will fall over! 30999817Strhodes echo "export RELEASEDIR=${_R}" >> ${CHROOTDIR}/mk 31099817Strhodes echo "export PATH=${BOOTSTRAPDIR}:$${PATH}:${LOCALDIR}" >> ${CHROOTDIR}/mk 31199817Strhodes echo "if [ ! -f /tmp/.world_done ]; then" >> ${CHROOTDIR}/mk 31299817Strhodes echo " cd /usr/src" >> ${CHROOTDIR}/mk 313102231Strhodes.if make(release) 31499817Strhodes echo " (cd etc; make distrib-dirs distribution)" >> ${CHROOTDIR}/mk 31599817Strhodes echo " make ${WORLD_FLAGS} world && \\" >> ${CHROOTDIR}/mk 31699817Strhodes.endif 31799817Strhodes.if make(rerelease) 31899817Strhodes echo " make ${WORLD_FLAGS} all install && \\" >> ${CHROOTDIR}/mk 31999817Strhodes.endif 32099817Strhodes echo " touch /tmp/.world_done" >> ${CHROOTDIR}/mk 32199817Strhodes echo "fi" >> ${CHROOTDIR}/mk 32299817Strhodes echo "cd /usr/src/release" >> ${CHROOTDIR}/mk 32399817Strhodes echo "make \$${_RELTARGET}" >> ${CHROOTDIR}/mk 32499817Strhodes echo "echo \">>> make ${.TARGET} finished on \`LC_ALL=C TZ=GMT date\`\"" >> ${CHROOTDIR}/mk 32569077Sru chmod 755 ${CHROOTDIR}/mk 326102231Strhodes chroot ${CHROOTDIR} /mk 32731144Sjulian 32831144Sjulianclean: 32931144Sjulian rm -rf boot_crunch release.[0-9] 33031144Sjulian 33131144Sjulian# Clean out ${_R} and make the directory structure. 33231144Sjulianrelease.1: 33331144Sjulian mkdir -p ${_R} 33457668Ssheldonh -rm -rf ${_R}/* 2> /dev/null 33557668Ssheldonh -chflags -R noschg ${_R}/. 33631144Sjulian rm -rf ${_R}/* 33731144Sjulian mkdir ${RD} 33857668Ssheldonh mkdir ${RD}/floppies 339102231Strhodes mkdir ${RD}/trees 34031144Sjulian mkdir ${RD}/dists 34131144Sjulian mkdir ${RD}/kernels 34231144Sjulian for i in ${DISTRIBUTIONS} ; do \ 343173994Sjhb mkdir ${RD}/trees/$$i && \ 344173994Sjhb mkdir ${RD}/dists/$$i && \ 345173994Sjhb mtree -deU -f ${MTREEFILES}/BSD.root.dist \ 346173994Sjhb -p ${RD}/trees/$$i > /dev/null && \ 34769077Sru mtree -deU -f ${MTREEFILES}/BSD.usr.dist \ 3481558Srgrimes -p ${RD}/trees/$$i/usr > /dev/null && \ 3491558Srgrimes mtree -deU -f ${MTREEFILES}/BSD.include.dist \ 350102231Strhodes -p ${RD}/trees/$$i/usr/include > /dev/null && \ 35169077Sru mtree -deU -f ${MTREEFILES}/BSD.var.dist \ 3521558Srgrimes -p ${RD}/trees/$$i/var > /dev/null ; \ 353102231Strhodes done 354102231Strhodes touch release.1 3551558Srgrimes 3561558Srgrimes# Install the system into the various distributions. 357102231Strhodesrelease.2: 3581558Srgrimes cd ${.CURDIR}/../etc && make distrib-dirs DESTDIR=${RD}/trees/bin 3591558Srgrimes cd ${.CURDIR}/.. && make distribworld DISTDIR=${RD}/trees 360102231Strhodes.if exists(${.CURDIR}/../kerberosIV) && exists(${.CURDIR}/../crypto) && !defined(NOKERBEROS) 3611558Srgrimes cd ${.CURDIR}/../kerberosIV && ( \ 3621558Srgrimes make bootstrap &&\ 3631558Srgrimes make obj all help-distribute DISTDIR=${RD}/trees &&\ 3641558Srgrimes make kprog \ 3651558Srgrimes ) 3661558Srgrimes.endif 36728644Ssteve.if exists(${.CURDIR}/../kerberos5) && exists(${.CURDIR}/../crypto) && !defined(NOKERBEROS) 36828644Ssteve cd ${.CURDIR}/../kerberos5 && ( \ 36928644Ssteve make bootstrap &&\ 3701558Srgrimes make obj all help-distribute DISTDIR=${RD}/trees &&\ 371177076Stmclaugh make kprog \ 3721558Srgrimes ) 3731558Srgrimes.endif 3741558Srgrimes -chflags -R noschg ${RD}/trees 37528644Ssteve touch release.2 3761558Srgrimes 3771558Srgrimes# Make and install the generic kernel(s). 378177076Stmclaughrelease.3: 3791558Srgrimes.for kernel in ${KERNELS} 38065155Ssheldonh -chflags -R noschg ${RD}/kernels/${kernel} 381222754Sgavin rm -rf ${RD}/kernels/${kernel} 382222754Sgavin rm -rf ${.CURDIR}/../sys/compile/${kernel} 383222754Sgavin cd ${.CURDIR} && ${MAKE} doSTDKERNEL KERNEL=${kernel} KODIR=/${kernel} 384222754Sgavin rm -rf ${.CURDIR}/../sys/compile/${kernel} 385222754Sgavin -mkdir ${RD}/trees/bin/boot/${kernel} 386222754Sgavin cp -p ${RD}/kernels/${kernel}/kernel ${RD}/trees/bin/boot/${kernel} 387222754Sgavin.endfor 388222754Sgavin # Install a standard boot kernel+modules 389222754Sgavin mkdir -p ${RD}/trees/bin/boot/kernel 390222754Sgavin cp -Rp ${RD}/kernels/GENERIC/* ${RD}/trees/bin/boot/kernel 391102231Strhodes touch release.3 39265155Ssheldonh 39365155Ssheldonh# Make and install the three crunched binaries which live on the floppies. 39465155Ssheldonh# You are not supposed to like this :-) 39565155Ssheldonhrelease.4: 39665155Ssheldonh @mkdir -p /stand 39765155Ssheldonh rm -rf ${RD}/crunch 39865155Ssheldonh mkdir -p ${RD}/crunch 39917243Sjkh for j in ${CRUNCH_TARGETS} ; do \ 40069077Sru rm -rf $${j}_crunch && \ 40169077Sru mkdir $${j}_crunch && \ 40269077Sru ( cd $${j}_crunch && \ 40357668Ssheldonh ( ( [ -f ${.CURDIR}/${MACHINE}/$${j}_crunch.conf ] && \ 40417243Sjkh crunchgen ${.CURDIR}/${MACHINE}/$${j}_crunch.conf ) || \ 40517243Sjkh ( crunchgen ${.CURDIR}/$${j}_crunch.conf ) ) && \ 4061558Srgrimes ${MAKE} -f $${j}_crunch.mk subclean all ) && \ 407102231Strhodes mv $${j}_crunch/$${j}_crunch ${RD}/crunch/$${j} && \ 408102231Strhodes true || { rm -rf $${j}_crunch ; false ; } ; \ 4091558Srgrimes done 410121349Sseanc touch release.4 4111558Srgrimes 4121558Srgrimes# 4131558Srgrimes# --==## Fix up the distributions. ##==-- 414162395Sru# 4151558Srgrimesrelease.5: 4161558Srgrimes # Handle some grief caused by the munition braindeadness. 417102231Strhodes for i in bin/ed usr.sbin/ppp usr.sbin/pppd usr.sbin/sendmail usr.sbin/tcpdump/tcpdump ; do \ 4181558Srgrimes ( cd ${.CURDIR}/../$$i; \ 419162395Sru make -DNOCRYPT clean all distribute DISTDIR=${RD}/trees ) ; \ 4201558Srgrimes done 42169077Sru 4225786Swollman # Create any "synthetic dists" now. 4235786Swollman @for i in ${DISTRIBUTIONS}; do \ 4241558Srgrimes if [ -f ${.CURDIR}/scripts/$${i}-make.sh ]; then \ 425102231Strhodes echo -n "Running $$i dist creation script... "; \ 4261558Srgrimes env OBJFORMAT=${OBJFORMAT} RD=${RD} sh ${.CURDIR}/scripts/$${i}-make.sh || echo "$$i distribution script returned bad status."; \ 427102231Strhodes echo "Done."; \ 428162395Sru fi \ 429102231Strhodes done \ 4301558Srgrimes 4311558Srgrimes # Remove all the directories we don't need. 4321558Srgrimes -cd ${RD}/trees && \ 43328644Ssteve find ${OTHER_DISTS} ${COMPAT_DISTS} ${CRYPTO_DISTS} -depth -type d -print | xargs rmdir 4341558Srgrimes touch release.5 4351558Srgrimes 43677575Sru# 4371558Srgrimes# --==## Package up the tarballs from assembled trees ##==-- 4381558Srgrimes# 439102231Strhodesrelease.6: 4401558Srgrimes rm -rf ${RD}/dists 4411558Srgrimes mkdir -p ${RD}/dists 44277575Sru @for i in ${DISTRIBUTIONS} ; \ 4431558Srgrimes do \ 444155992Srodrigc if [ -d ${RD}/trees/$${i} ] ; then \ 44528644Ssteve cd ${.CURDIR} && $(MAKE) doTARBALL \ 446155992Srodrigc SD=${RD}/trees/$${i} \ 447155992Srodrigc TN=$$i TD=$$i ARG="." && \ 448155992Srodrigc echo "$${i} distribution is finished."; \ 449155992Srodrigc fi ; \ 450155992Srodrigc done 451155992Srodrigc # More munition braindeadness. 452155992Srodrigc ( cd ${RD}/dists && \ 453155992Srodrigc if [ -f krb4/krb4.aa ] ; then \ 454155992Srodrigc mv krb4/krb4.* crypto && \ 455162395Sru cat krb4/CHECKSUM.MD5 >> crypto/CHECKSUM.MD5 && \ 456162395Sru rm -r krb4; \ 457162395Sru fi ) 458162395Sru ( cd ${RD}/dists && \ 459162395Sru if [ -f krb5/krb5.aa ] ; then \ 460221194Srmacklem mv krb5/krb5.* crypto && \ 461252356Sdavide cat krb5/CHECKSUM.MD5 >> crypto/CHECKSUM.MD5 && \ 462162395Sru rm -r krb5; \ 463155992Srodrigc fi ) 464235873Swblock touch release.6 465155992Srodrigc 466155992Srodrigc 467155992Srodrigc# 468155992Srodrigc# --==## Make source dists ##==-- 46965155Ssheldonh# 4701558Srgrimesrelease.7: 47165155Ssheldonh.if !defined(NOSRC) 472155992Srodrigc @cd ${.CURDIR} && $(MAKE) doTARBALL SD=/usr/src \ 473102231Strhodes TD=src TN=sbase ARG="[A-Z]*" 4741558Srgrimes @for i in `cd /usr/src && echo [a-z]*` ; do \ 4755786Swollman if [ -d /usr/src/$$i ] ; then \ 476102231Strhodes cd ${.CURDIR} && $(MAKE) doTARBALL \ 477101683Smux TN=`echo s$$i | tr -d '.' | \ 4781558Srgrimes sed -e 's/usr/u/' \ 4791558Srgrimes -e 's/kerberosIV/krb4/' \ 4801558Srgrimes -e 's/kerberos5/krb5/'` \ 4811558Srgrimes SD=/usr/src TD=src ARG="$$i" ; \ 4821558Srgrimes fi ; \ 4831558Srgrimes done 4841558Srgrimes.if defined(EXTRA_SRC) 4851558Srgrimes @set ${EXTRA_SRC} && \ 4861558Srgrimes while [ $$# -ge 2 ] ; do \ 487102231Strhodes if [ -d /usr/src/$$1 ] ; then \ 4881558Srgrimes cd ${.CURDIR} && $(MAKE) doTARBALL \ 4891558Srgrimes SD=/usr/src TN="s$$2" TD=src ARG="$$1" ; \ 490102231Strhodes fi && shift && shift ; \ 4911558Srgrimes done 4921558Srgrimes.endif 49369077Sru if [ -d ${RD}/dists/crypto ] ; then ( cd ${RD}/dists/src && \ 49469077Sru if [ -f ssecure.aa ] ; then mv ssecure.* ../crypto ; fi && \ 49569077Sru if [ -f scrypto.aa ] ; then mv scrypto.* ../crypto ; fi && \ 4961558Srgrimes if [ -f skrb4.aa ] ; then mv skrb4.* ../crypto ; fi && \ 4971558Srgrimes if [ -f skrb5.aa ] ; then mv skrb5.* ../crypto ; fi ; ) ; fi 4981558Srgrimes @echo "src distribution is finished." 4991558Srgrimes.endif 5001558Srgrimes touch release.7 5011558Srgrimes 5021558Srgrimes# Complete the bootfd 503197200Spjd# 504197200Spjd# Now, just to get this picture down once and for all: 505197200Spjd# 506197200Spjd# +------------------------------------------------------------------------+ 507197200Spjd# |boot.flp | 508197200Spjd# +-----+-----+------------------------------------------------------------+ 5091558Srgrimes# |boot1|boot2|floppy filesystem "bootfd" | 510102231Strhodes# +-----+-----+-+--------------------------------------------------------+-+ 51170152Sru# |kernel | 512113220Smdodd# +------------+-----------------------------------------+-+ 513115116Sru# |mfs filesystem "mfsfd" | 514115116Sru# +-----------------------------------------+ 515113220Smdodd# 516115116Sru 517115116Srurelease.8: write_mfs_in_kernel 518115116Sru rm -rf ${RD}/mfsfd 519113224Smdodd mkdir ${RD}/mfsfd 520126569Sbrueffer cd ${RD}/mfsfd && \ 521113224Smdodd mkdir -p etc/defaults dev mnt stand/help 522113224Smdodd @cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=boot \ 523115116Sru DIR=${RD}/mfsfd/stand ZIP=false 524113224Smdodd ( cd ${RD}/trees/bin/dev && \ 525113220Smdodd ls console tty bpf0 ttyd0 ttyv0 ttyv1 ttyv2 ttyv3 null zero card0 card1 card2 card3 usb usb0 uhid0 ums0 ulpt0 ugen0 kbd0 kmem mem | \ 5261558Srgrimes cpio -dump ${RD}/mfsfd/dev ) 5271558Srgrimes ( cd ${RD}/mfsfd/dev && rm -f *[swo]d*[bdefgh] ) 5281558Srgrimes ( cd ${RD}/mfsfd && \ 529102231Strhodes for dir in bin sbin ; do \ 5301558Srgrimes ln -sf /stand $$dir; \ 531140415Sru done ) 532140415Sru cp /sbin/dhclient-script ${RD}/mfsfd/stand 533140415Sru cp ${.CURDIR}/../etc/defaults/pccard.conf ${RD}/mfsfd/etc/defaults/pccard.conf 534140415Sru cp ${.CURDIR}/../etc/usbd.conf ${RD}/mfsfd/etc/usbd.conf 535140415Sru cd ${RD}/trees/bin && ls ${BOOT1} | cpio -dump ${RD}/mfsfd/stand 536140415Sru grep -E '^(ftp|nameserver|domain|sunrpc|cmd|nfsd)[^-\w]' \ 537140415Sru ${.CURDIR}/../etc/services > ${RD}/mfsfd/stand/etc/services 538140415Sru ln ${RD}/mfsfd/stand/etc/services ${RD}/mfsfd/etc/services 539140415Sru ln ${RD}/mfsfd/stand/etc/netconfig ${RD}/mfsfd/etc/netconfig 540140415Sru gzip -9c ${.CURDIR}/../COPYRIGHT > ${RD}/mfsfd/stand/help/COPYRIGHT.hlp.gz 5411558Srgrimes @for i in README.TXT RELNOTES.TXT INSTALL.TXT UPGRADE.TXT HARDWARE.TXT; do \ 542125639Strhodes if [ -f ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} ]; then \ 543125639Strhodes gzip -9c ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} > ${RD}/mfsfd/stand/help/$${i}.gz; \ 544155992Srodrigc else \ 545125639Strhodes gzip -9c ${.CURDIR}/texts/$${i} > ${RD}/mfsfd/stand/help/$${i}.gz; \ 546125639Strhodes fi; \ 547208647Sjilles done 548162395Sru -test -f ${.CURDIR}/install.cfg && cp ${.CURDIR}/install.cfg ${RD}/mfsfd 5491558Srgrimes @mkdir -p ${RD}/mfsfd/boot 550162395Sru @cp /boot/boot* ${RD}/mfsfd/boot 551276501Strasz @cp /boot/loader.help ${RD}/mfsfd/boot 552277434Strasz @cd ${.CURDIR} && ${MAKE} createBOOTMFS 55345476Sghelmer.if exists(${.CURDIR}/${MACHINE_ARCH}/drivers.conf) 5541558Srgrimes @cd ${.CURDIR} && ${MAKE} doMODULES KERNEL=BOOTMFS KERNEL_KO=BOOTMFS KODIR="" 55577577Sru.endif 5561558Srgrimes @echo "Making the regular boot floppy." 55777042Sru @tar --exclude CVS -cf - -C /usr/src/usr.sbin/sysinstall help | \ 558252356Sdavide tar xf - -C ${RD}/mfsfd/stand 55996418Smux @echo "Compressing doc files..." 56077042Sru @gzip -9 ${RD}/mfsfd/stand/help/*.hlp 561273105Sskreuzer.if exists(${.CURDIR}/${MACHINE_ARCH}/drivers.conf) 562199182Strasz @mkdir -p ${RD}/mfsfd/stand/modules 563199182Strasz @perl ${.CURDIR}/scripts/driver-copy2.pl \ 564199182Strasz ${.CURDIR}/${MACHINE_ARCH}/drivers.conf \ 565208027Suqs ${RD}/kernels ${RD}/mfsfd/stand/modules 566208027Suqs.endif 567208027Suqs sh -e ${.CURDIR}/scripts/doFS.sh -s mfsroot ${RD} ${MNT} \ 568208027Suqs ${MFSSIZE} ${RD}/mfsfd ${MFSINODE} ${MFSLABEL} 569208027Suqs @gzip -9vc mfsroot > mfsroot.gz 57037526Sjkoshy.if ${MACHINE} == "pc98" 57169077Sru @sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/mfsroot.flp \ 57269077Sru ${RD} ${MNT} ${SMALLBOOTSIZE} mfsroot.gz \ 57369077Sru ${BOOTINODE} ${SMALLBOOTLABEL} 57469077Sru @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern-small FDSIZE=SMALL 575102231Strhodes @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern 57669077Sru.else 57769077Sru @sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/mfsroot.flp \ 57837526Sjkoshy ${RD} ${MNT} ${BOOTSIZE} mfsroot.gz ${BOOTINODE} ${BOOTLABEL} 579179513Skib @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern 580179513Skib @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=boot FDSIZE=BIG 581179513Skib.endif 582179513Skib @rm mfsroot mfsroot.gz mfsroot.size 583179514Sru @echo "Regular and MFS boot floppies made." 584179513Skib touch release.8 585179514Sru 586179514Sru# 587179514Sru# --==## Create a fixit floppy ##==-- 588179514Sru# 589179514Srurelease.9: 590179513Skib @echo "Making fixit floppy." 591179513Skib @rm -rf ${RD}/fixitfd 592140415Sru @mkdir ${RD}/fixitfd 593140415Sru @cd ${RD}/fixitfd && \ 594 mkdir -p dev stand bin sbin etc mnt mnt1 mnt2 mnt3 mnt4 tmp \ 595 usr/share/misc 596 @cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=fixit \ 597 DIR=${RD}/fixitfd/stand ZIP=false 598 @( cd ${RD}/fixitfd/dev && \ 599 cp ${RD}/trees/bin/dev/MAKEDEV MAKEDEV && \ 600 chmod 755 MAKEDEV && \ 601 sh MAKEDEV fixit ) 602 @cp ${RD}/trees/bin/etc/spwd.db ${RD}/trees/bin/etc/group \ 603 ${RD}/trees/bin/etc/protocols ${RD}/fixitfd/etc 604 @cp ${RD}/trees/bin/usr/share/misc/scsi_modes \ 605 ${RD}/fixitfd/usr/share/misc 606 @cp ${.CURDIR}/fixit.profile ${RD}/fixitfd/.profile 607 @cp ${.CURDIR}/fixit.services ${RD}/fixitfd/etc/services 608 @cp ${.CURDIR}/scripts/tar.sh ${RD}/fixitfd/stand/tar 609 @chmod 555 ${RD}/fixitfd/stand/tar 610 @sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/fixit.flp ${RD} \ 611 ${MNT} ${FIXITSIZE} ${RD}/fixitfd ${FIXITINODE} ${FIXITLABEL} 612# Do our last minute floppies directory setup in a convenient place. 613 @cp ${.CURDIR}/texts/FLOPPIES.TXT ${RD}/floppies/README.TXT 614 @(cd ${RD}/floppies; md5 README.TXT *.flp > CHECKSUM.MD5) 615 touch release.9 616 617# 618# --==## Setup a suitable ftp-area ##==-- 619# 620ftp.1: 621 @echo "Setting up FTP distribution area" 622 @mkdir -p ${FD} 623 -@ln -s . ${FD}/${BUILDNAME} 624 @cd ${RD} && find floppies -print | cpio -dumpl ${FD} 625 @cd ${RD}/dists && find . -print | cpio -dumpl ${FD} 626 @for i in ${DIST_DOCS}; do \ 627 if [ -f ${.CURDIR}/texts/$${i} ]; then \ 628 cp ${.CURDIR}/texts/$${i} ${FD}; \ 629 fi; \ 630 if [ -f ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} ]; then \ 631 echo "=== Platform specifics for ${MACHINE_ARCH}" >> ${FD}/$${i}; \ 632 cat ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} >> ${FD}/$${i}; \ 633 fi; \ 634 done 635 @echo "CD_VERSION = ${BUILDNAME}" > ${FD}/cdrom.inf 636.if !defined(NOPORTS) 637 @tar --exclude CVS -cBf - -C ${CD_DISC1} ports | tar -xBf - -C ${FD} 638.endif 639 touch ftp.1 640 641# 642# --==## Setup a suitable cdrom-area ##==-- 643# 644cdrom.1: 645 @echo "Setting up CDROM distribution area" 646 @mkdir -p ${CD_DISC1} ${CD_DISC2} 647 @cd ${RD} && find floppies -print | cpio -dumpl ${CD_DISC1} 648 @cd ${RD}/dists && find . -print | cpio -dumpl ${CD_DISC1} 649 @ln -f ${RD}/kernels/MFSKERNEL.boot ${CD_DISC1}/kernel 650 @for i in ${DISTRIBUTIONS} ; \ 651 do \ 652 if [ -d ${RD}/trees/$${i} ] ; then \ 653 chflags -R noschg ${RD}/trees/$${i} || true ; \ 654 ( cd ${RD}/trees/$${i} && \ 655 find . -depth -print | cpio -dumpl ${CD_DISC2} ) ; \ 656 fi \ 657 done 658 @rm -f ${CD_DISC2}/.profile 659 @cp ${.CURDIR}/fixit.profile ${CD_DISC2}/.profile 660 @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC1}/cdrom.inf 661 @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC2}/cdrom.inf 662 @for i in ${DIST_DOCS}; do \ 663 if [ -f ${.CURDIR}/texts/$${i} ]; then \ 664 cp ${.CURDIR}/texts/$${i} ${CD_DISC1}; \ 665 fi; \ 666 if [ -f ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} ]; then \ 667 echo "=== Platform specifics for ${MACHINE_ARCH}" >> ${CD_DISC1}/$${i}; \ 668 cat ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} >> ${CD_DISC1}/$${i}; \ 669 fi; \ 670 done 671.if ${MACHINE_ARCH} == "alpha" 672 @echo "Setting up Alpha CD disc1 for booting" 673 @cp -Rp ${RD}/image.boot/boot ${CD_DISC1} 674 @ln -f ${CD_DISC2}/boot/cdboot ${CD_DISC1}/boot 675 @ln -f ${CD_DISC1}/boot/loader.rc ${CD_DISC2}/boot 676 @ln -f ${CD_DISC1}/kernel ${CD_DISC2}/kernel 677.endif 678.if !defined(NOPORTS) 679 @-rm -rf /usr/ports/distfiles/* 680 @mkdir -p ${CD_DISC1}/ports && \ 681 tar --exclude CVS -czf ${CD_DISC1}/ports/ports.tgz -C /usr ports && \ 682 cp ${.CURDIR}/scripts/ports-install.sh ${CD_DISC1}/ports/install.sh \ 683 && (cd ${CD_DISC1}/ports; md5 * > CHECKSUM.MD5) 684.endif 685 touch cdrom.1 686 687doc.1: 688 @echo "Making docs..." 689 @for i in ${DOCPORTS}; do \ 690 cd /usr/ports/$$i && make all install clean JADETEX=no FORCE_PKG_REGISTER=yes; \ 691 done 692 @cd /usr/doc && make all install 'FORMATS=html html-split txt' INSTALL_COMPRESSED='' DOCDIR=${RD}/trees/bin/usr/share/doc 693 touch doc.1 694 695# Various "subroutine" and other supporting targets. 696 697# RD= 698# SD= 699# TD= 700# ARG= 701doTARBALL: 702.if !defined(SD) 703 @echo "SD undefined in doTARBALL" && exit 1 704.endif 705.if !defined(TD) 706 @echo "TB undefined in doTARBALL" && exit 1 707.endif 708.if !defined(ARG) 709 @echo "ARG undefined in doTARBALL" && exit 1 710.endif 711 @rm -rf ${RD}/dists/${TD}/${TN}* 712 @mkdir -p ${RD}/dists/${TD} 713 @( cd ${SD} && \ 714 tn=`echo ${TN} | tr '[A-Z]' '[a-z]' | cut -c1-8` && \ 715 echo rolling ${TD}/$$tn tarball &&\ 716 tar --exclude CVS --exclude obj --exclude BOOTMFS -cf - ${ARG} | \ 717 ${ZIPNSPLIT} ${RD}/dists/${TD}/$$tn. && \ 718 sh ${.CURDIR}/scripts/info.sh ${RD}/dists/${TD}/$$tn > \ 719 ${RD}/dists/${TD}/$$tn.inf && \ 720 if [ -f ${.CURDIR}/scripts/$${TD}-install.sh ]; then \ 721 cp -p ${.CURDIR}/scripts/$${TD}-install.sh ${RD}/dists/${TD}/install.sh; \ 722 fi && \ 723 if [ "${SD}" != "/usr/src" ]; then \ 724 mtree -c -i -p ${SD}/${ARG} \ 725 -k gname,md5digest,mode,nlink,uname,size,link,type \ 726 > ${RD}/dists/${TD}/$$tn.mtree ; \ 727 else \ 728 true; \ 729 fi; \ 730 (cd ${RD}/dists/${TD}; \ 731 rm -f CHECKSUM.MD5; \ 732 md5 * > CHECKSUM.MD5) \ 733 ) 734 735doRELEASE: release.1 release.2 ${DOCREL} release.3 release.4 release.5 \ 736 release.6 release.7 release.8 release.9 737 @cd ${.CURDIR} && ${MAKE} ${EXTRAS} 738 @echo "Release done" 739 740floppies: 741 @cd ${.CURDIR} && ${MAKE} boot.flp 742 @cd ${.CURDIR} && ${MAKE} fixit.flp 743 @cd ${RD} && find floppies -print | cpio -dumpl ${FD} 744 745boot.flp: 746 @rm -f release.4 release.8 747 @cd ${.CURDIR} && ${MAKE} release.4 release.8 CRUNCH_TARGETS=boot 748 749fixit.flp: 750 @rm -f release.4 release.9 751 @cd ${.CURDIR} && ${MAKE} release.4 release.9 CRUNCH_TARGETS=fixit 752 753write_mfs_in_kernel: ${.CURDIR}/write_mfs_in_kernel.c 754 ${CC} ${CFLAGS} -o write_mfs_in_kernel ${.CURDIR}/write_mfs_in_kernel.c 755 756installCRUNCH: 757.if !defined(CRUNCH) 758 @echo "CRUNCH undefined in installCRUNCH" && exit 1 759.endif 760.if !defined(DIR) 761 @echo "DIR undefined in installCRUNCH" && exit 1 762.endif 763.if !defined(ZIP) 764 @echo "ZIP undefined in installCRUNCH" && exit 1 765.endif 766 @if ${ZIP} ; then \ 767 gzip -9 < ${RD}/crunch/${CRUNCH} > ${DIR}/${CRUNCH}_crunch ; \ 768 else \ 769 ln -f ${RD}/crunch/${CRUNCH} ${DIR}/${CRUNCH}_crunch ; \ 770 fi 771 @chmod 555 ${DIR}/${CRUNCH}_crunch 772 @if [ -f ${.CURDIR}/${MACHINE}/${CRUNCH}_crunch.conf ] ; then \ 773 for i in `crunchgen -l ${.CURDIR}/${MACHINE}/${CRUNCH}_crunch.conf` ; do \ 774 ln -f ${DIR}/${CRUNCH}_crunch ${DIR}/$$i ; \ 775 done \ 776 else \ 777 for i in `crunchgen -l ${.CURDIR}/${CRUNCH}_crunch.conf` ; do \ 778 ln -f ${DIR}/${CRUNCH}_crunch ${DIR}/$$i ; \ 779 done \ 780 fi 781 782# 783# --==## BOOTMFS config file ##==-- 784# 785 786createBOOTMFS: 787 @cd ${.CURDIR}/../sys/${MACHINE}/conf && \ 788 sh ${.CURDIR}/scripts/dokern.sh ${FDSIZE} < ${KERNCONF} > BOOTMFS && \ 789 [ -r ${KERNCONF}.hints ] && cp ${KERNCONF}.hints BOOTMFS.hints 790.if ${MACHINE_ARCH} == "i386" 791 @echo "options INTRO_USERCONFIG" >> \ 792 ${.CURDIR}/../sys/${MACHINE}/conf/BOOTMFS 793.endif 794.if defined(FDSIZE) && ${FDSIZE} == "BIG" 795 @echo "options MD_ROOT_SIZE=`cat mfsroot.size`" >> \ 796 ${.CURDIR}/../sys/${MACHINE}/conf/BOOTMFS 797.endif 798.if exists(${.CURDIR}/${MACHINE_ARCH}/drivers.conf) 799 @perl ${.CURDIR}/scripts/driver-remove.pl \ 800 ${.CURDIR}/${MACHINE_ARCH}/drivers.conf \ 801 ${.CURDIR}/../sys/${MACHINE}/conf/BOOTMFS 802.endif 803 804# 805# --==## Compile a kernel by name ${KERNEL} ##==-- 806# 807# We don't erase the sys/compile/${KERNEL} directory, since somebody 808# may want to reuse it (release.8 presently) 809# 810doKERNEL: 811 @rm -f ${RD}/kernels/${KERNEL} 812 @cd ${.CURDIR}/../sys/${MACHINE}/conf && config ${KERNEL} 813 @cd ${.CURDIR}/../sys/compile/${KERNEL} && \ 814 make kernel-depend && \ 815 make ${KERNEL_FLAGS} ${KERNEL_KO} && \ 816 make kernel-reinstall DESTDIR=${RD}/kernels && \ 817 [ -r ${.CURDIR}/../sys/${MACHINE}/conf/${KERNEL}.hints ] && \ 818 cp ${.CURDIR}/../sys/${MACHINE}/conf/${KERNEL}.hints ${RD}/kernels 819 820doMODULES: 821 @rm -f ${RD}/kernels/*.ko 822 @cd ${.CURDIR}/../sys/${MACHINE}/conf && config ${KERNEL} 823 @cd ${.CURDIR}/../sys/compile/${KERNEL} && \ 824 make kernel-depend && \ 825 make ${KERNEL_FLAGS} modules && \ 826 make modules-reinstall DESTDIR=${RD}/kernels && \ 827 828doSTDKERNEL: 829 @rm -f ${RD}/kernels/${KERNEL} 830 @cd ${.CURDIR}/../sys/${MACHINE}/conf && config ${KERNEL} 831 @cd ${.CURDIR}/../sys/compile/${KERNEL} && \ 832 make depend && \ 833 make ${KERNEL_FLAGS} KERNEL=${kernel} && \ 834 make KERNEL=${kernel} DESTDIR=${RD}/kernels install && \ 835 [ -r ${.CURDIR}/../sys/${MACHINE}/conf/${KERNEL}.hints ] && \ 836 cp ${.CURDIR}/../sys/${MACHINE}/conf/${KERNEL}.hints ${RD}/kernels 837 838# 839# --==## Put a filesystem into a BOOTMFS kernel ##==-- 840# 841doMFSKERN: 842 @echo "Running doMFSKERN for ${FSIMAGE}" 843 @rm -f ${RD}/kernels/BOOTMFS.${FSIMAGE} 844 @cd ${.CURDIR} && ${MAKE} createBOOTMFS 845 @cd ${.CURDIR} && ${MAKE} doKERNEL KERNEL=BOOTMFS KERNEL_KO=BOOTMFS KODIR="" 846 @rm -rf ${RD}/image.${FSIMAGE} 847 @mkdir ${RD}/image.${FSIMAGE} 848 @cd ${RD}/kernels && \ 849 (chflags noschg BOOTMFS || true) && \ 850 strip BOOTMFS && \ 851 cp BOOTMFS BOOTMFS.${FSIMAGE} && \ 852 [ -r BOOTMFS.hints ] && mv BOOTMFS.hints BOOTMFS.${FSIMAGE}.hints 853 mv ${RD}/kernels/BOOTMFS ${RD}/image.${FSIMAGE}/kernel 854 @echo "Setting up /boot directory for ${FSIMAGE} floppy" 855 @mkdir -p ${RD}/image.${FSIMAGE}/boot 856 @cp /boot/loader ${RD}/image.${FSIMAGE}/boot 857 @[ -r ${RD}/kernels/BOOTMFS.${FSIMAGE}.hints ] && \ 858 sed -e '/^hint/s/^/set /' -e '/^#/d' \ 859 ${RD}/kernels/BOOTMFS.${FSIMAGE}.hints > \ 860 ${RD}/image.${FSIMAGE}/boot/device.hints && \ 861 echo "include /boot/device.hints" > ${RD}/image.${FSIMAGE}/boot/loader.rc 862 @echo "load /kernel" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 863.if !defined(FDSIZE) || ${FDSIZE} != "BIG" 864 @echo "echo \\007\\007" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 865 @echo "echo Please insert MFS root floppy and press enter:" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 866 @echo "read" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 867 @echo "load -t mfs_root /mfsroot" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 868.endif 869 @echo "echo \\007\\007" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 870 @echo "autoboot 10" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 871.if ${MACHINE_ARCH} == "i386" && ${AUTO_KEYBOARD_DETECT} 872 @echo "-P" >> ${RD}/image.${FSIMAGE}/boot.config 873.endif 874.if defined(FDSIZE) && ${FDSIZE} == "BIG" 875 @echo "Writing MFS image into kernel for ${FSIMAGE} floppy" 876 @./write_mfs_in_kernel ${RD}/image.${FSIMAGE}/kernel mfsroot 877 @cp ${RD}/image.${FSIMAGE}/kernel ${RD}/kernels/MFSKERNEL.${FSIMAGE} 878.endif 879 @gzip -9v ${RD}/image.${FSIMAGE}/kernel 880 @rm -f ${RD}/floppies/${FSIMAGE}.flp 881.if defined(FDSIZE) && ${FDSIZE} == "BIG" 882 sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/${FSIMAGE}.flp \ 883 ${RD} ${MNT} ${BIGBOOTSIZE} ${RD}/image.${FSIMAGE} \ 884 ${BOOTINODE} ${BIGBOOTLABEL} 885.elif defined(FDSIZE) && ${FDSIZE} == "SMALL" 886 sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/${FSIMAGE}.flp \ 887 ${RD} ${MNT} ${SMALLBOOTSIZE} ${RD}/image.${FSIMAGE} \ 888 ${BOOTINODE} ${SMALLBOOTLABEL} 889.else 890 sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/${FSIMAGE}.flp \ 891 ${RD} ${MNT} ${BOOTSIZE} ${RD}/image.${FSIMAGE} \ 892 ${BOOTINODE} ${BOOTLABEL} 893.endif 894 @echo "Created ${RD}/floppies/${FSIMAGE}.flp" 895 896.include <bsd.prog.mk> 897