Makefile revision 124493
1193323Sed# $FreeBSD: head/release/Makefile 124493 2004-01-13 18:46:09Z obrien $ 2193323Sed# 3193323Sed# make release [BUILDNAME=somename] CHROOTDIR=/some/dir CVSROOT=/cvs/dir \ 4193323Sed# [RELEASETAG=tag] 5193323Sed# 6193323Sed# Where "/some/dir" is the pathname of a directory on a some filesystem with 7193323Sed# at least 1000MB of free space, "somename" is what you want the release to 8193323Sed# call itself, "/cvs/dir" is where our source repo resides and, optionally, 9193323Sed# which CVS "tag" name should be used when checking out the sources to build 10193323Sed# the release (default is HEAD). 11193323Sed# 12193323Sed# Please note: the md(4) driver must be present in the kernel 13193323Sed# (either by being compiled in or available as a kld(4) module), 14193323Sed# otherwise the target 'release.9' and possibly others will fail. 15193323Sed# 16193323Sed# Note: If you add options to this file, please keep release(7) updated! 17193323Sed# 18204792Srdivacky# Set these, release builder! 19198090Srdivacky# 20226633Sdim# Fixed version: 21193323Sed#BUILDNAME=5.1-RELEASE 22234353Sdim# 23194178Sed# Automatic SNAP versioning: 24224145SdimDATE != date +%Y%m%d 25193323SedBASE = 5.1 26193323SedBUILDNAME?=${BASE}-${DATE}-SNAP 27210299Sed# 28210299Sed#CHROOTDIR=/junk/release 29210299Sed# If this is a -stable snapshot, then set 30210299Sed#RELEASETAG=RELENG_4 31226633Sdim# 32210299Sed# To test a release with a source tree containing patches and 33210299Sed# other work. This tree will get copied instead of getting the 34234353Sdim# src/ tree from a CVS checkout. For "rerelease", this will NOT 35234353Sdim# be copied; cvs update will be used instead. 36234353Sdim#EXTSRCDIR=/usr/src 37234353Sdim# 38234353Sdim# To add other options to the CVS subcommands (co,up), set 39234353Sdim#CVSCMDARGS="-D '01/01/2002 00:00:00 UTC'" 40239462Sdim# 41234353Sdim# To add other options to the CVS command, set 42234353Sdim#CVSARGS="-lfq" 43234353Sdim# 44234353Sdim# To prefix the cvs command 45234353Sdim#CVSPREFIX="/usr/bin/time" 46234353Sdim# 47210299Sed# Where the CVS repository is 48210299Sed#CVSROOT="/home/ncvs" 49210299Sed# 50210299Sed# Non-zero if ${RELEASETAG} is in the form "RELENG_ver_RELEASE"; we 51210299Sed# are building an official release. Otherwise, we are building for 52210299Sed# a branch. 53210299Sed.if defined(RELEASETAG) 54234353SdimISRELEASE!= expr "${RELEASETAG}" : '^RELENG_.*_RELEASE$$' || true 55234353Sdim.if ${ISRELEASE} != 0 56234353Sdim# Convert "RELENG_ver_RELEASE" to "RELEASE_ver" for ports and doc trees. 57234353SdimAUXRELEASETAG!= echo ${RELEASETAG} | sed -e 's/^RELENG_/RELEASE_/' -e 's/_RELEASE$$//' 58210299SedDOCRELEASETAG?= ${AUXRELEASETAG} 59210299SedPORTSRELEASETAG?= ${AUXRELEASETAG} 60210299Sed.endif 61234353Sdim.endif 62234353Sdim 63234353Sdim# If you want to pass flags to the world build such as -j X, use 64210299Sed# WORLD_FLAGS. Similarly, you can specify make flags for kernel 65234353Sdim# builds via KERNEL_FLAGS. 66210299Sed# Similarly, you can specify make flags for make readmes via PORTREADMES_FLAGS. 67234353Sdim#WORLD_FLAGS=-j4 68234353Sdim#KERNEL_FLAGS=-j4 69210299Sed#PORTREADMES_FLAGS=-j4 70210299Sed 71210299SedTARGET_ARCH?= ${MACHINE_ARCH} 72210299Sed.if ${TARGET_ARCH} == ${MACHINE_ARCH} 73234353SdimTARGET?= ${MACHINE} 74234353Sdim.else 75234353SdimTARGET?= ${TARGET_ARCH} 76234353Sdim.endif 77234353SdimCROSSENV= TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET} 78234353SdimCROSSMAKE= ${MAKE} ${CROSSENV} 79234353SdimNATIVEMAKE= ${MAKE} TARGET_ARCH=${MACHINE_ARCH} TARGET=${MACHINE} 80234353Sdim 81234353Sdim# If you are using a local CVS repository with components stored in 82234353Sdim# non-standard modules, override these on the make commandline or 83210299Sed# in the environment. 84210299SedRELEASESRCMODULE?= src 85195340SedRELEASEDOCMODULE?= doc 86195340SedRELEASEPORTSMODULE?= ports 87195340Sed 88226633Sdim# Uncomment this to disable the doc.1 target. Docs normally require 89195340Sed# the ports tree, so NOPORTS can be set together with NODOC in order 90195340Sed# to have neither ports or docs. If only NOPORTS is set to YES, but 91195340Sed# docs are still desired, the DOMINIMALDOCPORTS logic below will only 92195340Sed# install the ports that are minimally required for the docs. This is 93195340Sed# intended as a compromise, less disk space is required than for using 94195340Sed# the entire ports collection (and much less time due to the huge number 95195340Sed# of directories it would create), but still quite a bit as well as some 96195340Sed# CPU cycles (some of the programs are C++, and things like ghostscript 97193323Sed# belong to the required ports nevertheless). 98234353Sdim# 99234353Sdim# Setting this also disables building of release note documentation 100234353Sdim# (RELNOTESng). 101234353Sdim#NODOC= YES 102234353Sdim#NOPORTS= YES 103234353Sdim 104234353Sdim# Modify this definition if you want the release notes 105234353Sdim# and other release documentation in a language other than English. 106193323SedRELNOTES_LANG?= en_US.ISO8859-1 107195340Sed 108193323Sed# As an alternative to installing the entire ports collection (which 109193323Sed# can take a huge amount of time, in particular on slower disks), 110193323Sed# setting ${MINIMALDOCPORTS} allows to install and build just those 111193323Sed# ports that are really required for getting the docs up & running. 112193323Sed.if defined(NOPORTS) && !defined(NODOC) 113193323SedDOMINIMALDOCPORTS= YES 114193323Sed.include "Makefile.inc.docports" 115193323SedRELEASEPORTSMODULE= ${MINIMALDOCPORTS} 116193323Sed.endif 117193323Sed 118193323Sed# Helper variable 119193323Sed.if defined(NOPORTS) 120193323Sed.if !defined(DOMINIMALDOCPORTS) || ${DOMINIMALDOCPORTS} != "YES" 121193323SedNOPORTSATALL= YES 122193323Sed.endif 123210299Sed.endif 124193323Sed 125195340Sed# By default, documentation (Handbook, FAQ, etc.) is built for all 126198090Srdivacky# the languages. To speed up building, set the DOC_LANG to just 127210299Sed# the languages you need. (The language for the release notes is 128210299Sed# controlled by the RELNOTES_LANG variable above.) 129193323Sed#DOC_LANG= en_US.ISO8859-1 130210299SedDOCPORTS= textproc/docproj 131210299Sed# Set this to wherever the distfiles required by release procedures. 132210299Sed.if defined(DOCDISTFILES) 133210299Sed# Respect DOCDISTFILES which is used before. 134226633SdimRELEASEDISTFILES?= ${DOCDISTFILES} 135226633Sdim.else 136210299SedRELEASEDISTFILES?= ${.CURDIR}/../../ports/distfiles 137210299Sed.endif 138193323Sed# Set this to 1 if you want -P to be used for automatic keyboard detection 139193323Sed# on the boot floppy. WARNING: Breaks on some Athlon (K7) motherboards. 140210299SedAUTO_KEYBOARD_DETECT?= 0 141193323Sed 142193323Sed.if !defined(NODOC) 143193323SedDIST_DOCS_ARCH_INDEP= readme errata early-adopter 144193323SedDIST_DOCS_ARCH_DEP= installation relnotes hardware 145234353Sdim.endif 146226633Sdim 147210299Sed# Things which without too much trouble can be considered variables 148193323Sed# BASE_DISTS are special in that they get full /etc installation sets. 149193323Sed# 150193323Sed.if ${TARGET_ARCH} == "i386" 151193323SedCOMPAT_DISTS?= compat1x compat20 compat21 compat22 compat3x compat4x 152195340Sed.elif ${TARGET_ARCH} != "ia64" 153195340SedCOMPAT_DISTS?= compat4x 154193323Sed.endif 155193323SedOTHER_DISTS?= catpages manpages games proflibs dict info doc 156193323SedCRYPTO_DISTS?= crypto 157193323SedBASE_DISTS?= base 158193323SedDISTRIBUTIONS?= ${BASE_DISTS} ${OTHER_DISTS} ${COMPAT_DISTS} ${CRYPTO_DISTS} 159193323Sed 160193323Sed# mountpoint for filesystems. 161195340SedMNT= /mnt 162195340Sed 163195340Sed# Various floppy image parameters. 164195340Sed# 165193323Sed 166193323Sed.if ${TARGET_ARCH} == "i386" 167204792Srdivacky.if ${TARGET} == "pc98" 168204792SrdivackySMALLBOOTSIZE= 1200 169204792SrdivackyBOOTSIZE= 1440 170204792SrdivackySMALLFIXITSIZE= 1200 171193323SedFIXITSIZE= 1440 172193323SedMFSSIZE= 4320 173193323SedBOOTINODE= 80000 174193323SedFIXITINODE= 40000 175193323SedMFSINODE= 8000 176193323SedSMALLBOOTLABEL= fd1200 177195340SedBOOTLABEL= fd1440 178204642SrdivackySMALLFIXITLABEL= fd1200 179204642SrdivackyFIXITLABEL= fd1440 180204642SrdivackyMFSLABEL= minimum3 181204642Srdivacky.else 182204642SrdivackyDRIVERSIZE= 1440 183204642SrdivackyBOOTSIZE= 1440 184204642SrdivackyFIXITSIZE= 1440 185204642SrdivackyMFSSIZE= 4320 186204642SrdivackyBIGBOOTSIZE= 2880 187204642SrdivackyDRIVERINODE= 40000 188204642SrdivackyBOOTINODE= 80000 189204642SrdivackyFIXITINODE= 40000 190204642SrdivackyMFSINODE= 8000 191204642SrdivackyDRIVERLABEL= fd1440 192193323SedBOOTLABEL= fd1440 193226633SdimFIXITLABEL= fd1440 194224145SdimMFSLABEL= minimum3 195202878SrdivackyBIGBOOTLABEL= minimum2 196204642Srdivacky.endif 197204642Srdivacky.elif ${TARGET_ARCH} == "alpha" 198204642SrdivackyMFSSIZE= 4320 199204642SrdivackyMFSINODE= 8000 200204642SrdivackyMFSLABEL= auto 201193323SedNO_FLOPPIES= 202193323Sed.elif ${TARGET_ARCH} == "sparc64" 203193323SedDISKLABEL= sunlabel 204193323SedMFSSIZE= 4096 205193323SedMFSINODE= 8192 206204642SrdivackyMFSLABEL= auto 207193323SedMINIROOT= 208193323SedNO_FLOPPIES= 209193323Sed.elif ${TARGET_ARCH} == "ia64" 210193323SedMFSINODE= 8192 211198090SrdivackyMFSLABEL= auto 212198090SrdivackyMFSSIZE= 8192 213198090SrdivackyNO_FLOPPIES= 214198090Srdivacky.elif ${TARGET_ARCH} == "amd64" 215198090SrdivackyMFSSIZE= 4096 216193323SedMFSINODE= 8192 217198090SrdivackyMFSLABEL= auto 218193323SedNO_FLOPPIES= 219193323Sed.endif 220198090Srdivacky 221198090Srdivacky.if exists(/sbin/bsdlabel) 222207618SrdivackyDISKLABEL?= bsdlabel 223198090Srdivacky.else 224198090SrdivackyDISKLABEL?= disklabel 225198090Srdivacky.endif 226193323Sed 227193323SedZIPNSPLIT= gzip --no-name -9 -c | split -b 1423k - 228198090Srdivacky 229198090Srdivacky# Things that need to be compiled without crypto support in releases 230193323Sed.if !defined(FIXCRYPTO) && !make(release) && !make(rerelease) 231198090SrdivackyFIXCRYPTO!= cd ${.CURDIR}/../kerberos5; ${MAKE} -V KPROGS; \ 232198090Srdivacky cd ${.CURDIR}/../secure; ${MAKE} -V SPROGS 233198090Srdivacky.endif 234198090Srdivacky 235198090Srdivacky# Things which may get you into trouble if you change them 236198090SrdivackyMTREEFILES= ${.CURDIR}/../etc/mtree 237198090Srdivacky_R?= /R 238198090SrdivackyRD= ${_R}/stage 239198090SrdivackyRND= ${RD}/release.doc 240198090SrdivackyFD= ${_R}/ftp 241198090SrdivackyCD= ${_R}/cdrom 242198090Srdivacky.if ${TARGET} != "pc98" 243198090SrdivackyCD_BOOT= ${CD}/bootonly 244198090Srdivacky.endif 245198090SrdivackyCD_DISC1= ${CD}/disc1 246198090SrdivackyCD_DISC2= ${CD}/disc2 247198090Srdivacky_MK?= ${CHROOTDIR}/mk 248198090Srdivacky 249193323Sed# Where the bootstrap ports (see DOCPORTS) get installed. 250193323SedLOCALDIR= /usr/local/bin 251193323Sed 252193323Sed.if ${TARGET} != ${MACHINE} && ${DISKLABEL} == "bsdlabel" 253193323SedDOFS_SH= ${.CURDIR}/scripts/doFS.sh ${DISKLABEL} ${TARGET} 254198090Srdivacky.else 255198090SrdivackyDOFS_SH= ${.CURDIR}/scripts/doFS.sh ${DISKLABEL} "" 256198090Srdivacky.endif 257198090Srdivacky 258198090SrdivackyCRUNCH_TARGETS= boot 259198090Srdivacky.if ${TARGET_ARCH} == "i386" 260198090SrdivackyCRUNCH_TARGETS+=fixit 261198090Srdivacky.if ${TARGET} == "pc98" 262205407SrdivackyCRUNCH_TARGETS+=fixit-small 263198090Srdivacky.endif 264198090Srdivacky.endif 265198090Srdivacky 266198090SrdivackyEXTRAS= ftp.1 267198090Srdivacky.if !defined(NOCDROM) 268198090SrdivackyEXTRAS+= cdrom.1 269198090Srdivacky.if defined(MAKE_ISOS) 270198090SrdivackyEXTRAS+= iso.1 271198090Srdivacky.endif 272198090Srdivacky.if ${TARGET} == "i386" && defined(EMUL_BOOT) 273198090SrdivackyBOOTABLE="-eb" 274207618Srdivacky.elif ${TARGET} == "pc98" 275198090SrdivackyBOOTABLE= 276198090Srdivacky.else 277205407SrdivackyBOOTABLE="-b" 278198090Srdivacky.endif 279198090Srdivacky.endif 280198090Srdivacky 281198090Srdivacky.if !defined(NODOC) 282193323SedDOCREL= doc.1 doc.2 283198090Srdivacky.endif 284198090Srdivacky 285193323Sed.if !make(release) && !make(rerelease) 286193323SedBINMAKE!= cd ${.CURDIR}/..; ${MAKE} -V BINMAKE 287193323SedWMAKEENV!= cd ${.CURDIR}/..; \ 288198090Srdivacky ${BINMAKE} ${CROSSENV} -f Makefile.inc1 -V WMAKEENV 289207618SrdivackyWMAKE= ${WMAKEENV} ${BINMAKE} 290198090Srdivacky.endif 291193323Sed 292193323SedCVS_SRCARGS= -P 293193323Sed.if defined(RELEASETAG) 294198090SrdivackyCVS_SRCARGS+= -r ${RELEASETAG} 295198090Srdivacky.endif 296193323Sed 297221345SdimCVS_DOCARGS= -P 298221345Sdim.if defined(DOCRELEASETAG) 299193323SedCVS_DOCARGS+= -r ${DOCRELEASETAG} 300193323Sed.endif 301193323Sed 302193323SedCVS_PORTSARGS= -P 303193323Sed.if defined(PORTSRELEASETAG) 304193323SedCVS_PORTSARGS+= -r ${PORTSRELEASETAG} 305198090Srdivacky.endif 306198090Srdivacky 307198090SrdivackyWORLDDIR?= ${.CURDIR}/.. 308193323Sed 309198090Srdivackyrelease rerelease: 310226633Sdim.if !defined(CHROOTDIR) || !defined(BUILDNAME) || !defined(CVSROOT) 311198090Srdivacky @echo "To make a release you must set CHROOTDIR, BUILDNAME and CVSROOT" && false 312198090Srdivacky.endif 313198090Srdivacky.if defined(NOPORTSATALL) && !defined(NODOC) 314198090Srdivacky @echo "Ports are required for building the docs. Either set NODOC or" 315198090Srdivacky @echo "unset NOPORTS, or set at least DOMINIMALDOCPORTS to YES!" 316198090Srdivacky @exit 1 317198090Srdivacky.endif 318198090Srdivacky.if make(release) 319198090Srdivacky.if exists(${CHROOTDIR}) 320207618Srdivacky# The first command will fail on a handful of files that have their schg 321198090Srdivacky# flags set. But it greatly speeds up the next two commands. 322198090Srdivacky # NB: clear any vestigal devfs mount, just in case 323198090Srdivacky -umount ${CHROOTDIR}/dev > /dev/null 2>&1 324205407Srdivacky -rm -rf ${CHROOTDIR} 2>/dev/null 325198090Srdivacky -chflags -R noschg ${CHROOTDIR}/. 326210299Sed -rm -rf ${CHROOTDIR} 327205407Srdivacky.endif 328205407Srdivacky mkdir -p ${CHROOTDIR} 329198090Srdivacky @echo ">>> make release for ${TARGET} started on `LC_ALL=C TZ=GMT date`" 330210299Sed cd ${WORLDDIR} && ${NATIVEMAKE} -DNOGAMES -DNOHTML -DNOINFO -DNOMAN \ 331198090Srdivacky -DNOPROFILE installworld DESTDIR=${CHROOTDIR} 332198090Srdivacky cd ${WORLDDIR}/etc && ${NATIVEMAKE} distribution DESTDIR=${CHROOTDIR} 333198090Srdivacky if [ -f /etc/resolv.conf ]; then \ 334198090Srdivacky cp -p /etc/resolv.conf ${CHROOTDIR}/etc; \ 335198090Srdivacky fi 336198090Srdivacky.if defined(EXTLOCALDIR) 337198090Srdivacky rm -rf ${CHROOTDIR}/usr/local 338198090Srdivacky cd ${CHROOTDIR}/usr && cp -R -H ${EXTLOCALDIR} local 339226633Sdim.endif 340198090Srdivacky rm -rf ${CHROOTDIR}/usr/src 341198090Srdivacky.if defined(EXTSRCDIR) 342198090Srdivacky cd ${CHROOTDIR}/usr && \ 343198090Srdivacky cp -R -H ${EXTSRCDIR} src 344198090Srdivacky.else 345198090Srdivacky cd ${CHROOTDIR}/usr && \ 346198090Srdivacky ${CVSPREFIX} cvs -R ${CVSARGS} -d ${CVSROOT} \ 347207618Srdivacky co ${CVSCMDARGS} ${CVS_SRCARGS} ${RELEASESRCMODULE} 348198090Srdivacky.endif 349198090Srdivacky.if defined(LOCAL_PATCHES) && !empty(LOCAL_PATCHES) 350221345Sdim.for p in ${LOCAL_PATCHES} 351221345Sdim.if exists(${p}) 352221345Sdim patch -d ${CHROOTDIR}/usr/${RELEASESRCMODULE} ${PATCH_FLAGS} < ${p} 353198090Srdivacky.endif 354198090Srdivacky.endfor 355210299Sed.endif 356198090Srdivacky.if defined(LOCAL_SCRIPT) && exists(${LOCAL_SCRIPT}) 357198090Srdivacky cd ${CHROOTDIR} && env CHROOTDIR=${CHROOTDIR} BUILDNAME=${BUILDNAME} \ 358198090Srdivacky RELEASETAG=${RELEASETAG} ${LOCAL_SCRIPT} 359198090Srdivacky.endif 360198090Srdivacky rm -rf ${CHROOTDIR}/usr/ports 361198090Srdivacky.if !defined(NOPORTSATALL) 362198090Srdivacky cd ${CHROOTDIR}/usr && ${CVSPREFIX} cvs -R ${CVSARGS} -d ${CVSROOT} \ 363210299Sed co ${CVSCMDARGS} ${CVS_PORTSARGS} ${RELEASEPORTSMODULE} 364198090Srdivacky.endif 365198090Srdivacky.if !defined(NODOC) 366198090Srdivacky rm -rf ${CHROOTDIR}/usr/doc 367198090Srdivacky.if defined(EXTDOCDIR) 368198090Srdivacky cd ${CHROOTDIR}/usr && cp -R -H ${EXTDOCDIR} doc 369198090Srdivacky.else 370198090Srdivacky cd ${CHROOTDIR}/usr && ${CVSPREFIX} cvs -R ${CVSARGS} -d ${CVSROOT} \ 371198090Srdivacky co ${CVSCMDARGS} ${CVS_DOCARGS} ${RELEASEDOCMODULE} 372198090Srdivacky.endif 373198090Srdivacky if [ -d ${RELEASEDISTFILES}/ ]; then \ 374198090Srdivacky cp -rp ${RELEASEDISTFILES} ${CHROOTDIR}/usr/ports/distfiles; \ 375198090Srdivacky else \ 376202878Srdivacky mkdir -p ${CHROOTDIR}/usr/ports/distfiles; \ 377198090Srdivacky fi 378198090Srdivacky.if !defined(NO_PREFETCHDISTFILES) 379198090Srdivacky @cd ${.CURDIR} && ${MAKE} fetch-distfiles 380198090Srdivacky.endif 381193323Sed.endif 382193323Sed.endif 383193323Sed.if make(rerelease) 384193323Sed.if !defined(RELEASENOUPDATE) 385193323Sed.if !defined(RELEASETAG) 386193323Sed cd ${CHROOTDIR}/usr/src && ${CVSPREFIX} cvs -R ${CVSARGS} -q \ 387193323Sed update ${CVSCMDARGS} -P -d -A 388193323Sed.else 389193323Sed cd ${CHROOTDIR}/usr/src && ${CVSPREFIX} cvs -R ${CVSARGS} -q \ 390193323Sed update ${CVSCMDARGS} -P -d -r ${RELEASETAG} 391193323Sed.endif 392193323Sed rm -f ${CHROOTDIR}/tmp/.world_done 393193323Sed.if !defined(NOPORTS) 394193323Sed cd ${CHROOTDIR}/usr/ports && ${CVSPREFIX} cvs -R ${CVSARGS} -q \ 395193323Sed update ${CVSCMDARGS} -P -d 396198090Srdivacky.endif 397198090Srdivacky.if defined(DOMINIMALDOCPORTS) && ${DOMINIMALDOCPORTS} == "YES" 398226633Sdim for i in ${MINIMALDOCPORTS}; do \ 399226633Sdim ( cd ${CHROOTDIR}/usr/$$i && ${CVSPREFIX} cvs -R ${CVSARGS} -q \ 400193323Sed update ${CVSCMDARGS} -P -d ) ; \ 401226633Sdim done 402193323Sed.endif 403198090Srdivacky.if !defined(NODOC) 404193323Sed cd ${CHROOTDIR}/usr/doc && ${CVSPREFIX} cvs -R ${CVSARGS} -q \ 405193323Sed update ${CVSCMDARGS} -P -d 406198090Srdivacky.endif 407198090Srdivacky.endif 408198090Srdivacky.endif 409198090Srdivacky # Add version information to those things that need it. 410200581Srdivacky if [ ! -f ${CHROOTDIR}/tmp/.world_done ]; then \ 411193323Sed cd ${CHROOTDIR}/usr/src/sys/conf && \ 412193323Sed mv newvers.sh foo && \ 413193323Sed sed "s/^RELEASE=.*/RELEASE=${BUILDNAME}/" foo > newvers.sh && \ 414193323Sed rm foo; \ 415193323Sed fi 416198090Srdivacky -test -f install.cfg && cp install.cfg ${CHROOTDIR}/usr/src/release 417198090Srdivacky echo "#!/bin/sh" > ${_MK} 418198090Srdivacky echo "set -ex" >> ${_MK} 419203954Srdivacky echo "trap 'umount /dev || true' 0" >> ${_MK} 420203954Srdivacky echo "_RELTARGET=\$${1:-doRELEASE}" >> ${_MK} 421203954Srdivacky.for var in \ 422203954Srdivacky AUTO_KEYBOARD_DETECT \ 423203954Srdivacky BOOT_CONFIG \ 424203954Srdivacky BUILDNAME \ 425207618Srdivacky CD_EXTRA_BITS \ 426203954Srdivacky DISTRIBUTIONS \ 427203954Srdivacky DOC_LANG \ 428203954Srdivacky DOMINIMALDOCPORTS \ 429203954Srdivacky EXTRA_SRC \ 430203954Srdivacky FIXCRYPTO \ 431203954Srdivacky FTP_PASSIVE_MODE \ 432203954Srdivacky FTP_PROXY \ 433203954Srdivacky HTTP_PROXY \ 434203954Srdivacky KERNELS \ 435203954Srdivacky KERNEL_FLAGS \ 436203954Srdivacky MAKE_ISOS \ 437193323Sed NOCDROM \ 438203954Srdivacky NODOC \ 439203954Srdivacky NOPORTS \ 440203954Srdivacky NOSHARED \ 441203954Srdivacky NOSRC \ 442203954Srdivacky NO_CPU_CFLAGS \ 443193323Sed NO_CPU_COPTFLAGS \ 444193323Sed NO_FLOPPIES \ 445198090Srdivacky NO_SENDMAIL \ 446198090Srdivacky RELEASETAG \ 447198090Srdivacky RELNOTES_LANG \ 448198090Srdivacky TARGET \ 449198090Srdivacky TARGET_ARCH \ 450193323Sed WORLD_FLAGS 451193323Sed.if defined(${var}) 452193323Sed echo "export ${var}=\"${${var}}\"" >> ${_MK} 453193323Sed.endif 454193323Sed.endfor 455193323Sed # Don't remove this, or the build will fall over! 456226633Sdim echo "export RELEASEDIR=${_R}" >> ${_MK} 457198090Srdivacky echo "export PATH=/bin:/usr/bin:/sbin:/usr/sbin:${LOCALDIR}" >> ${_MK} 458198090Srdivacky echo "export MANBUILDCAT=YES" >> ${_MK} 459198090Srdivacky # NB: these may fail if the host is running w/o devfs 460198090Srdivacky echo "umount /dev >/dev/null 2>&1 || true" >> ${_MK} 461198090Srdivacky echo "mount -t devfs devfs /dev >/dev/null 2>&1 || true" >> ${_MK} 462198090Srdivacky echo "/etc/rc.d/ldconfig start" >> ${_MK} 463198090Srdivacky echo "if [ ! -f /tmp/.world_done ]; then" >> ${_MK} 464193323Sed echo " cd /usr/src" >> ${_MK} 465193323Sed echo " ${CROSSMAKE} ${WORLD_FLAGS} -DNOCLEAN buildworld && \\" >> ${_MK} 466193323Sed echo " touch /tmp/.world_done" >> ${_MK} 467193323Sed echo "fi" >> ${_MK} 468193323Sed echo "if [ ! -f /tmp/.skip_ports ]; then" >> ${_MK} 469193323Sed echo " echo \">>> make readmes started on \`LC_ALL=C TZ=GMT date\`\"" >> ${_MK} 470198090Srdivacky echo " cd /usr/ports" >> ${_MK} 471198090Srdivacky echo " make ${PORTREADMES_FLAGS} readmes" >> ${_MK} 472193323Sed echo " touch /tmp/.skip_ports" >> ${_MK} 473193323Sed echo " echo \">>> make readmes finished on \`LC_ALL=C TZ=GMT date\`\"" >> ${_MK} 474194612Sed echo "fi" >> ${_MK} 475193323Sed echo "cd /usr/src/release" >> ${_MK} 476198090Srdivacky echo "make obj" >> ${_MK} 477193323Sed echo "make \$${_RELTARGET}" >> ${_MK} 478193323Sed echo "echo \">>> make ${.TARGET} for ${TARGET} finished on \`LC_ALL=C TZ=GMT date\`\"" >> ${_MK} 479198090Srdivacky chmod 755 ${_MK} 480203954Srdivacky.if defined(NOPORTS) || defined(NOPORTREADMES) 481198090Srdivacky touch ${CHROOTDIR}/tmp/.skip_ports 482198090Srdivacky.endif 483203954Srdivacky # Ensure md.ko is loaded if md(4) is not statically compiled into 484226633Sdim # the kernel 485203954Srdivacky -mdconfig 2>/dev/null 486203954Srdivacky env -i /usr/sbin/chroot `dirname ${_MK}` /`basename ${_MK}` 487203954Srdivacky 488203954Srdivackyclean: 489203954Srdivacky rm -rf ${CRUNCH_TARGETS:S/$/_crunch/} release.[0-9] release.10 \ 490198090Srdivacky ${EXTRAS} 491198090Srdivacky 492198090Srdivackyfetch-distfiles: 493198090Srdivacky @for i in ${DOCPORTS}; do \ 494198090Srdivacky cd ${CHROOTDIR}/usr/ports/$$i && \ 495203954Srdivacky make PORTSDIR=${CHROOTDIR}/usr/ports BATCH=yes \ 496193323Sed WITHOUT_X11=yes JADETEX=no WITHOUT_PYTHON=yes \ 497198090Srdivacky checksum-recursive ; \ 498198090Srdivacky done 499198090Srdivacky 500198090Srdivacky# Clean out ${_R} and make the directory structure. 501198090Srdivackyrelease.1: 502198090Srdivacky mkdir -p ${_R} 503198090Srdivacky -rm -rf ${_R}/* 2> /dev/null 504198090Srdivacky -chflags -R noschg ${_R}/. 505198090Srdivacky rm -rf ${_R}/* 506193323Sed mkdir ${RD} 507226633Sdim.if !defined(NO_FLOPPIES) 508193323Sed mkdir ${RD}/floppies 509198090Srdivacky.endif 510198090Srdivacky mkdir ${RD}/trees 511193323Sed mkdir ${RD}/kernels 512193323Sed for i in ${DISTRIBUTIONS} special; do \ 513204642Srdivacky mkdir ${RD}/trees/$$i && \ 514193323Sed mtree -deU -f ${MTREEFILES}/BSD.root.dist \ 515193323Sed -p ${RD}/trees/$$i > /dev/null && \ 516193323Sed mtree -deU -f ${MTREEFILES}/BSD.usr.dist \ 517198090Srdivacky -p ${RD}/trees/$$i/usr > /dev/null && \ 518193323Sed mtree -deU -f ${MTREEFILES}/BSD.include.dist \ 519198090Srdivacky -p ${RD}/trees/$$i/usr/include > /dev/null && \ 520198090Srdivacky mtree -deU -f ${MTREEFILES}/BSD.var.dist \ 521234353Sdim -p ${RD}/trees/$$i/var > /dev/null ; \ 522234353Sdim done 523234353Sdim touch ${.TARGET} 524198090Srdivacky 525194178Sed# Install the system into the various distributions. 526193323Sedrelease.2: 527193323Sed cd ${.CURDIR}/../etc && make distrib-dirs DESTDIR=${RD}/trees/base 528193323Sed cd ${.CURDIR}/.. && ${CROSSMAKE} distributeworld DISTDIR=${RD}/trees 529193323Sed touch ${.TARGET} 530226633Sdim 531193323Sed# Build and install non-crypto versions of some tools. 532193323Sedrelease.3: 533193323Sed # Handle some grief caused by the munition braindeadness. 534195340Sed cd ${.CURDIR}/..; \ 535195340Sed ${CROSSMAKE} ${WORLD_FLAGS} -DNO_MAKEDB_RUN -DNOCRYPT \ 536195340Sed SUBDIR_OVERRIDE="${FIXCRYPTO}" \ 537195340Sed buildworld distributeworld DISTDIR=${RD}/trees 538193323Sed -chflags -R noschg ${RD}/trees 539193323Sed touch ${.TARGET} 540204792Srdivacky 541204792Srdivacky# Make and install the generic kernel(s). 542204792Srdivackyrelease.4: 543204792Srdivacky.for kernel in ${KERNELS} 544193323Sed cd ${.CURDIR}/..; \ 545193323Sed ${CROSSMAKE} ${KERNEL_FLAGS} -DNO_MODULES \ 546193323Sed KERNCONF=${kernel} INSTKERNNAME=${kernel} kernel \ 547193323Sed DESTDIR=${RD}/trees/base 548193323Sed.endfor 549193323Sed # Install a standard boot kernel+modules. 550193323Sed cd ${.CURDIR}/..; \ 551204642Srdivacky ${CROSSMAKE} ${KERNEL_FLAGS} \ 552204642Srdivacky kernel \ 553204642Srdivacky DESTDIR=${RD}/trees/base; \ 554204642Srdivacky cd ${.CURDIR}/..; \ 555204642Srdivacky ${CROSSMAKE} ${KERNEL_FLAGS} -DNO_MODULES \ 556204642Srdivacky reinstallkernel -DINSTALL_DEBUG \ 557204642Srdivacky DESTDIR=${RD}/trees/base 558204642Srdivacky touch ${.TARGET} 559204642Srdivacky 560204642Srdivacky# Make and install the three crunched binaries which live on the floppies. 561204642Srdivacky# You are not supposed to like this :-) 562204642Srdivackyrelease.5: 563204642Srdivacky rm -rf ${RD}/crunch 564204642Srdivacky mkdir -p ${RD}/crunch 565198090Srdivacky.for j in ${CRUNCH_TARGETS} 566198090Srdivacky.if exists(${.CURDIR}/${TARGET}/${j}_crunch.conf) 567202878Srdivacky rm -rf ${j}_crunch 568204642Srdivacky mkdir ${j}_crunch 569204642Srdivacky cd ${j}_crunch; ${WMAKEENV} crunchgen -o \ 570204642Srdivacky ${.CURDIR}/${TARGET}/${j}_crunch.conf 571204642Srdivacky cd ${j}_crunch; ${WMAKE} -f ${j}_crunch.mk subclean 572204642Srdivacky cd ${.CURDIR}/..; ${BINMAKE} -f Makefile.inc1 _build-tools 573193323Sed cd ${j}_crunch; ${WMAKE} -f ${j}_crunch.mk \ 574193323Sed CFLAGS="-Os -pipe" -DNO_CPU_CFLAGS all 575193323Sed ${WMAKEENV} strip -R .comment ${j}_crunch/${j}_crunch 576204642Srdivacky mv ${j}_crunch/${j}_crunch ${RD}/crunch/${j} 577204642Srdivacky.endif 578204642Srdivacky.endfor 579204642Srdivacky touch ${.TARGET} 580204642Srdivacky 581204642Srdivacky# 582204642Srdivacky# --==## Fix up the distributions. ##==-- 583204642Srdivacky# 584204642Srdivackyrelease.6: 585204642Srdivacky # Create any "synthetic dists" now. 586204642Srdivacky @for i in ${DISTRIBUTIONS}; do \ 587204642Srdivacky if [ -f ${.CURDIR}/scripts/$${i}-make.sh ]; then \ 588204642Srdivacky echo -n "Running $$i dist creation script... "; \ 589204642Srdivacky env RD=${RD} sh ${.CURDIR}/scripts/$${i}-make.sh || echo "$$i distribution script returned bad status."; \ 590204642Srdivacky echo "Done."; \ 591204642Srdivacky fi \ 592204642Srdivacky done \ 593204642Srdivacky 594204642Srdivacky # Remove all the directories we don't need. 595204642Srdivacky -cd ${RD}/trees && \ 596204642Srdivacky find ${OTHER_DISTS} ${COMPAT_DISTS} ${CRYPTO_DISTS} -depth -type d -print | xargs rmdir 597204642Srdivacky touch ${.TARGET} 598204642Srdivacky 599204642Srdivacky# 600204642Srdivacky# --==## Package up the tarballs from assembled trees ##==-- 601198090Srdivacky# 602198090Srdivackyrelease.7: 603198090Srdivacky rm -rf ${RD}/dists 604202878Srdivacky mkdir -p ${RD}/dists 605202878Srdivacky @for i in ${DISTRIBUTIONS} ; \ 606202878Srdivacky do \ 607202878Srdivacky if [ -d ${RD}/trees/$${i} ] ; then \ 608226633Sdim cd ${.CURDIR} && $(MAKE) doTARBALL \ 609195340Sed SD=${RD}/trees/$${i} \ 610193323Sed TN=$$i TD=$$i ARG="." && \ 611202878Srdivacky echo "$${i} distribution is finished."; \ 612204642Srdivacky fi ; \ 613204642Srdivacky done 614204642Srdivacky.if !defined(NOPORTS) 615204642Srdivacky # XXX: Inline stripped version of doTARBALL 616204642Srdivacky @rm -rf ${RD}/dists/ports/ports* 617193323Sed @mkdir -p ${RD}/dists/ports 618193323Sed @echo rolling ports/ports tarball 619193323Sed @tar --exclude CVS --exclude 'ports/distfiles/*' -czf \ 620204642Srdivacky ${RD}/dists/ports/ports.tgz -C /usr ports 621204642Srdivacky @cp ${.CURDIR}/scripts/ports-install.sh ${RD}/dists/ports/install.sh 622204642Srdivacky @(cd ${RD}/dists/ports; \ 623204642Srdivacky rm -f CHECKSUM.MD5; \ 624204642Srdivacky md5 * > CHECKSUM.MD5) 625204642Srdivacky @echo "ports distribution is finished." 626204642Srdivacky.endif 627204642Srdivacky touch ${.TARGET} 628204642Srdivacky 629204642Srdivacky 630204642Srdivacky# 631204642Srdivacky# --==## Make source dists ##==-- 632204642Srdivacky# 633193323Sedrelease.8: 634218893Sdim.if !defined(NOSRC) 635204642Srdivacky @cd ${.CURDIR} && $(MAKE) doTARBALL SD=/usr/src \ 636218893Sdim TD=src TN=sbase ARG="[A-Z]*" 637218893Sdim @for i in `cd /usr/src && echo [a-z]*` ; do \ 638218893Sdim if [ -d /usr/src/$$i ] ; then \ 639218893Sdim cd ${.CURDIR} && $(MAKE) doTARBALL \ 640218893Sdim TN=`echo s$$i | tr -d '.' | \ 641218893Sdim sed -e 's/usr/u/' \ 642218893Sdim -e 's/kerberos5/krb5/'` \ 643204642Srdivacky SD=/usr/src TD=src ARG="$$i" ; \ 644218893Sdim fi ; \ 645204642Srdivacky done 646204642Srdivacky.if defined(EXTRA_SRC) 647204642Srdivacky @set ${EXTRA_SRC} && \ 648218893Sdim while [ $$# -ge 2 ] ; do \ 649218893Sdim if [ -d /usr/src/$$1 ] ; then \ 650204642Srdivacky cd ${.CURDIR} && $(MAKE) doTARBALL \ 651204642Srdivacky SD=/usr/src TN="s$$2" TD=src ARG="$$1" ; \ 652204642Srdivacky fi && shift && shift ; \ 653204642Srdivacky done 654204642Srdivacky.endif 655204642Srdivacky if [ -d ${RD}/dists/crypto ] ; then ( cd ${RD}/dists/src && \ 656204642Srdivacky if [ -f ssecure.aa ] ; then mv ssecure.* ../crypto ; fi && \ 657204642Srdivacky if [ -f scrypto.aa ] ; then mv scrypto.* ../crypto ; fi && \ 658218893Sdim if [ -f skrb5.aa ] ; then mv skrb5.* ../crypto ; fi ; \ 659218893Sdim cd ${RD}/dists/crypto; rm -f CHECKSUM.MD5; \ 660204642Srdivacky md5 * > CHECKSUM.MD5 ) ; fi 661218893Sdim (cd ${RD}/dists/src; rm -f CHECKSUM.MD5; md5 * > CHECKSUM.MD5) 662218893Sdim @echo "src distribution is finished." 663218893Sdim.endif 664218893Sdim touch ${.TARGET} 665218893Sdim 666218893Sdim# Complete the bootfd 667218893Sdim# 668218893Sdim# Now, just to get this picture down once and for all: 669218893Sdim# 670218893Sdim# +------------------------------------------------------------------------+ 671218893Sdim# |boot.flp | 672204642Srdivacky# +-----+-----+------------------------------------------------------------+ 673204642Srdivacky# |boot1|boot2|floppy filesystem "bootfd" | 674198090Srdivacky# +-----+-----+-+----------------------+---------------------------------+-+ 675207618Srdivacky# |kernel.gz |mfsroot.gz | 676207618Srdivacky# +----------------------+---------------------------------+ 677204642Srdivacky# 678204642Srdivacky 679204642Srdivackyrelease.9: 680204642Srdivacky.if exists(${.CURDIR}/../sys/boot/${TARGET}/loader) 681204642Srdivacky cd ${.CURDIR}/../sys/boot/${TARGET}/loader; \ 682198090Srdivacky ${WMAKE} clean cleandepend; \ 683204642Srdivacky ${WMAKE} -DNOMAN -DNOFORTH all; \ 684204642Srdivacky ${WMAKE} -DNOMAN -DNOFORTH install DESTDIR=${RD}/trees/special 685212904Sdim.endif 686212904Sdim cp ${RD}/trees/base/etc/disktab /etc 687212904Sdim rm -rf ${RD}/mfsfd 688212904Sdim mkdir ${RD}/mfsfd 689212904Sdim cd ${RD}/mfsfd && \ 690204642Srdivacky mkdir -p etc/defaults dev mnt stand/etc/defaults stand/help 691204642Srdivacky @cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=boot \ 692204642Srdivacky DIR=${RD}/mfsfd/stand ZIP=false 693204642Srdivacky ( cd ${RD}/mfsfd && \ 694204642Srdivacky for dir in bin sbin ; do \ 695204642Srdivacky ln -sf /stand $$dir; \ 696204642Srdivacky done ) 697234353Sdim cp ${RD}/trees/base/sbin/dhclient-script ${RD}/mfsfd/stand 698234353Sdim.if ${TARGET} == "pc98" 699204642Srdivacky cp ${.CURDIR}/../etc/defaults/pccard.conf \ 700234353Sdim ${RD}/mfsfd/etc/defaults/pccard.conf 701204642Srdivacky.endif 702204642Srdivacky cp ${.CURDIR}/../etc/usbd.conf ${RD}/mfsfd/etc/usbd.conf 703204642Srdivacky ( for F in defaults/rc.conf netconfig protocols ; do \ 704204642Srdivacky sed -e '/^#.*$$/d' -e 's/[:space:]*#.*$$//g' \ 705198090Srdivacky ${RD}/trees/base/etc/$$F > ${RD}/mfsfd/stand/etc/$$F ; \ 706204642Srdivacky done ) 707193323Sed grep -E '^(ftp|nameserver|domain|sunrpc|cmd|nfsd)[^-\w]' \ 708207618Srdivacky ${RD}/trees/base/etc/services | \ 709207618Srdivacky sed -e '/^#.*$$/d' -e 's/[:space:]*#.*$$//g' \ 710204642Srdivacky > ${RD}/mfsfd/stand/etc/services 711226633Sdim grep 'operator' ${RD}/trees/base/etc/group \ 712193323Sed > ${RD}/mfsfd/stand/etc/group 713204642Srdivacky ln ${RD}/mfsfd/stand/etc/services ${RD}/mfsfd/etc/services 714204642Srdivacky ln ${RD}/mfsfd/stand/etc/group ${RD}/mfsfd/etc/group 715204642Srdivacky ln ${RD}/mfsfd/stand/etc/netconfig ${RD}/mfsfd/etc/netconfig 716204642Srdivacky cp ${RD}/trees/base/COPYRIGHT ${RD}/mfsfd/stand/help/COPYRIGHT.hlp 717204642Srdivacky.if !defined(NODOC) 718204642Srdivacky @for i in ${DIST_DOCS_ARCH_INDEP}; do \ 719204642Srdivacky cp ${RND}/${RELNOTES_LANG}/$$i/article.txt \ 720218893Sdim ${RD}/mfsfd/stand/help/`echo $${i} | tr 'a-z' 'A-Z'`.TXT; \ 721204642Srdivacky done 722204642Srdivacky @for i in ${DIST_DOCS_ARCH_DEP}; do \ 723204642Srdivacky cp ${RND}/${RELNOTES_LANG}/$$i/${TARGET}/article.txt \ 724204642Srdivacky ${RD}/mfsfd/stand/help/`echo $${i} | tr 'a-z' 'A-Z'`.TXT; \ 725204642Srdivacky done 726204642Srdivacky @mv ${RD}/mfsfd/stand/help/INSTALLATION.TXT \ 727204642Srdivacky ${RD}/mfsfd/stand/help/INSTALL.TXT 728204642Srdivacky @mv ${RD}/mfsfd/stand/help/EARLY-ADOPTER.TXT \ 729204642Srdivacky ${RD}/mfsfd/stand/help/EARLY.TXT 730204642Srdivacky.endif 731204642Srdivacky -test -f ${.CURDIR}/install.cfg \ 732204642Srdivacky && cp ${.CURDIR}/install.cfg ${RD}/mfsfd 733204642Srdivacky @mkdir -p ${RD}/mfsfd/boot 734204642Srdivacky.if ${TARGET_ARCH} != "ia64" 735204642Srdivacky @cp ${RD}/trees/base/boot/boot* ${RD}/mfsfd/boot 736204642Srdivacky.endif 737226633Sdim.if ${TARGET} == "i386" || ${TARGET_ARCH} == "amd64" 738204642Srdivacky @cp ${RD}/trees/base/boot/mbr ${RD}/mfsfd/boot 739204642Srdivacky.endif 740204642Srdivacky @tar --exclude CVS -cf - -C ${.CURDIR}/../usr.sbin/sysinstall help | \ 741212904Sdim tar xf - -C ${RD}/mfsfd/stand 742212904Sdim.if defined(SMALLBOOTSIZE) 743212904Sdim @mkdir -p ${RD}/mfsroot-small 744212904Sdim.if exists(${.CURDIR}/${TARGET}/drivers-small.conf) 745212904Sdim @mkdir -p ${RD}/mfsfd/modules 746212904Sdim @awk -f ${.CURDIR}/scripts/driver-copy2.awk 2 \ 747212904Sdim ${.CURDIR}/${TARGET}/drivers-small.conf \ 748212904Sdim ${RD}/trees/base/boot/kernel ${RD}/mfsfd/modules 749212904Sdim.endif 750204642Srdivacky sh -e ${DOFS_SH} ${RD}/mfsroot-small/mfsroot ${RD} ${MNT} \ 751226633Sdim ${MFSSIZE} ${RD}/mfsfd ${MFSINODE} ${MFSLABEL} 752204642Srdivacky @gzip -9nv ${RD}/mfsroot-small/mfsroot 753207618Srdivacky @rm -rf ${RD}/mfsfd/modules 754207618Srdivacky.endif 755204642Srdivacky.if exists(${.CURDIR}/${TARGET}/drivers.conf) 756207618Srdivacky @mkdir -p ${RD}/mfsfd/modules 757207618Srdivacky @awk -f ${.CURDIR}/scripts/driver-copy2.awk 2 \ 758204642Srdivacky ${.CURDIR}/${TARGET}/drivers.conf \ 759204642Srdivacky ${RD}/trees/base/boot/kernel ${RD}/mfsfd/modules 760204642Srdivacky.endif 761234353Sdim @mkdir -p ${RD}/mfsroot 762204642Srdivacky sh -e ${DOFS_SH} ${RD}/mfsroot/mfsroot ${RD} ${MNT} \ 763202878Srdivacky ${MFSSIZE} ${RD}/mfsfd ${MFSINODE} ${MFSLABEL} 764204642Srdivacky @gzip -9nv ${RD}/mfsroot/mfsroot 765204642Srdivacky touch ${.TARGET} 766204642Srdivacky 767202878Srdivackyrelease.10: 768204642Srdivacky.if !defined(NO_FLOPPIES) 769202878Srdivacky.if exists(${.CURDIR}/${TARGET}/drivers.conf) 770204642Srdivacky @echo "Making the drivers floppy." 771204642Srdivacky @rm -rf ${RD}/driversfd 772204642Srdivacky @mkdir ${RD}/driversfd 773204642Srdivacky @awk -f ${.CURDIR}/scripts/driver-copy2.awk 3 \ 774204642Srdivacky ${.CURDIR}/${TARGET}/drivers.conf \ 775202878Srdivacky ${RD}/trees/base/boot/kernel ${RD}/driversfd 776193323Sed -@rmdir ${RD}/driversfd 777204642Srdivacky if [ -d ${RD}/driversfd ]; then \ 778204642Srdivacky sh -e ${DOFS_SH} ${RD}/floppies/drivers.flp ${RD} ${MNT} \ 779193323Sed ${DRIVERSIZE} ${RD}/driversfd ${DRIVERINODE} ${DRIVERLABEL}; \ 780193323Sed cd ${RD}/driversfd && awk -f ${.CURDIR}/scripts/driver-desc.awk \ 781193323Sed *.dsc >> ${RD}/floppies/DRIVERS.TXT; \ 782226633Sdim fi 783193323Sed.endif 784204642Srdivacky.if defined(BOOTSIZE) 785204642Srdivacky @echo "Making the regular boot floppy." 786204642Srdivacky @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern 787204642Srdivacky.endif 788204642Srdivacky.if defined(SMALLBOOTSIZE) 789218893Sdim @echo "Making the small boot floppy." 790193323Sed @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern-small FDSIZE=SMALL 791204642Srdivacky.endif 792204642Srdivacky.if defined(BIGBOOTSIZE) 793204642Srdivacky @echo "Making the big boot floppy." 794204642Srdivacky @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=boot FDSIZE=BIG 795204642Srdivacky.endif 796204642Srdivacky.if defined(FIXITSIZE) || defined(SMALLFIXITSIZE) 797204642Srdivacky @echo "Making fixit floppy." 798204642Srdivacky @rm -rf ${RD}/fixitfd 799204642Srdivacky @mkdir ${RD}/fixitfd 800204642Srdivacky @cd ${RD}/fixitfd && \ 801204642Srdivacky mkdir -p dev stand bin sbin etc mnt mnt1 mnt2 mnt3 mnt4 tmp \ 802204642Srdivacky usr/share/misc 803204642Srdivacky @cp ${RD}/trees/base/etc/spwd.db ${RD}/trees/base/etc/group \ 804204642Srdivacky ${RD}/fixitfd/etc 805204642Srdivacky @sed -e 's/#.*//' ${RD}/trees/base/etc/protocols \ 806204642Srdivacky > ${RD}/fixitfd/etc/protocols 807204642Srdivacky @sed -e 's/#.*//' ${RD}/trees/base/usr/share/misc/scsi_modes \ 808204642Srdivacky > ${RD}/fixitfd/usr/share/misc/scsi_modes 809204642Srdivacky @cp ${.CURDIR}/fixit.profile ${RD}/fixitfd/.profile 810204642Srdivacky @cp ${.CURDIR}/fixit.services ${RD}/fixitfd/etc/services 811204642Srdivacky @cp ${.CURDIR}/scripts/tar.sh ${RD}/fixitfd/stand/tar 812204642Srdivacky @chmod 555 ${RD}/fixitfd/stand/tar 813204642Srdivacky.if defined(SMALLFIXITSIZE) 814204642Srdivacky @cd ${.CURDIR} && ${MAKE} installCRUNCH CRUNCH=fixit-small \ 815204642Srdivacky DIR=${RD}/fixitfd/stand ZIP=false 816204642Srdivacky @sh -e ${DOFS_SH} ${RD}/floppies/fixit-small.flp ${RD} ${MNT} \ 817204642Srdivacky ${SMALLFIXITSIZE} ${RD}/fixitfd ${FIXITINODE} ${SMALLFIXITLABEL} 818193323Sed @rm -rf ${RD}/fixitfd/stand 819193323Sed @mkdir ${RD}/fixitfd/stand 820204642Srdivacky.endif 821193323Sed.if defined(FIXITSIZE) 822193323Sed @cd ${.CURDIR} && ${MAKE} installCRUNCH CRUNCH=fixit \ 823193323Sed DIR=${RD}/fixitfd/stand ZIP=false 824226633Sdim @sh -e ${DOFS_SH} ${RD}/floppies/fixit.flp ${RD} ${MNT} \ 825193323Sed ${FIXITSIZE} ${RD}/fixitfd ${FIXITINODE} ${FIXITLABEL} 826194178Sed.endif 827193323Sed.endif 828193323Sed# Do our last minute floppies directory setup in a convenient place. 829193323Sed.if !defined(NODOC) 830193323Sed @cp ${RND}/${RELNOTES_LANG}/installation/${TARGET}/article.txt \ 831195340Sed ${RD}/floppies/README.TXT 832193323Sed @(cd ${RD}/floppies; md5 README.TXT *.flp > CHECKSUM.MD5) 833193323Sed.else 834194178Sed @(cd ${RD}/floppies; md5 *.flp > CHECKSUM.MD5) 835195340Sed.endif 836193323Sed.endif 837193323Sed touch ${.TARGET} 838193323Sed 839193323Sed# 840193323Sed# --==## Setup a suitable ftp-area ##==-- 841198090Srdivacky# 842193323Sedftp.1: 843193323Sed @echo "Setting up FTP distribution area" 844193323Sed @mkdir -p ${FD} 845193323Sed -@ln -s . ${FD}/${BUILDNAME} 846207618Srdivacky.if !defined(NO_FLOPPIES) 847193323Sed @cd ${RD} && find floppies -print | cpio -dumpl ${FD} 848221345Sdim.endif 849221345Sdim @cd ${RD}/dists && find . -print | cpio -dumpl ${FD} 850221345Sdim.if !defined(NODOC) 851193323Sed @for i in ${DIST_DOCS_ARCH_INDEP}; do \ 852193323Sed cp ${RND}/${RELNOTES_LANG}/$$i/article.txt \ 853193323Sed ${FD}/`echo $${i} | tr 'a-z' 'A-Z'`.TXT; \ 854198090Srdivacky cp ${RND}/${RELNOTES_LANG}/$$i/article.html \ 855193323Sed ${FD}/`echo $${i} | tr 'a-z' 'A-Z'`.HTM; \ 856193323Sed done 857193323Sed @for i in ${DIST_DOCS_ARCH_DEP}; do \ 858193323Sed cp ${RND}/${RELNOTES_LANG}/$$i/${TARGET}/article.txt \ 859193323Sed ${FD}/`echo $${i} | tr 'a-z' 'A-Z'`.TXT; \ 860193323Sed cp ${RND}/${RELNOTES_LANG}/$$i/${TARGET}/article.html \ 861226633Sdim ${FD}/`echo $${i} | tr 'a-z' 'A-Z'`.HTM; \ 862226633Sdim done 863226633Sdim @cp ${RND}/${RELNOTES_LANG}/readme/docbook.css ${FD} 864226633Sdim @mv ${FD}/INSTALLATION.TXT ${FD}/INSTALL.TXT 865226633Sdim @mv ${FD}/INSTALLATION.HTM ${FD}/INSTALL.HTM 866226633Sdim @mv ${FD}/EARLY-ADOPTER.TXT ${FD}/EARLY.TXT 867226633Sdim @mv ${FD}/EARLY-ADOPTER.HTM ${FD}/EARLY.HTM 868226633Sdim.endif 869226633Sdim @echo "CD_VERSION = ${BUILDNAME}" > ${FD}/cdrom.inf 870226633Sdim touch ${.TARGET} 871226633Sdim 872226633Sdim# 873226633Sdim# --==## Setup a suitable cdrom-area ##==-- 874226633Sdim# 875226633Sdimcdrom.1: 876226633Sdim @echo "Setting up CDROM distribution area" 877226633Sdim @mkdir -p ${CD_BOOT} ${CD_DISC1} ${CD_DISC2} 878226633Sdim -@ln -s . ${CD_DISC1}/${BUILDNAME} 879226633Sdim.if !defined(NO_FLOPPIES) 880226633Sdim @cd ${RD} && find floppies -print | cpio -dumpl ${CD_DISC1} 881226633Sdim.endif 882226633Sdim @cd ${RD}/dists && find . -print | cpio -dumpl ${CD_DISC1} 883226633Sdim @for i in ${DISTRIBUTIONS} ; \ 884226633Sdim do \ 885226633Sdim if [ -d ${RD}/trees/$${i} ] ; then \ 886226633Sdim chflags -R noschg ${RD}/trees/$${i} || true ; \ 887226633Sdim ( cd ${RD}/trees/$${i} && \ 888226633Sdim find . -depth -print | cpio -dumpl ${CD_DISC2} ) ; \ 889226633Sdim fi \ 890226633Sdim done 891226633Sdim @rm -f ${CD_DISC2}/.profile 892234353Sdim @cp ${.CURDIR}/fixit.profile ${CD_DISC2}/.profile 893234353Sdim @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC1}/cdrom.inf 894234353Sdim @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC2}/cdrom.inf 895234353Sdim.if !defined(NODOC) 896234353Sdim @for i in ${DIST_DOCS_ARCH_INDEP}; do \ 897234353Sdim cp ${RND}/${RELNOTES_LANG}/$$i/article.txt \ 898234353Sdim ${CD_DISC1}/`echo $${i} | tr 'a-z' 'A-Z'`.TXT; \ 899234353Sdim cp ${RND}/${RELNOTES_LANG}/$$i/article.html \ 900234353Sdim ${CD_DISC1}/`echo $${i} | tr 'a-z' 'A-Z'`.HTM; \ 901234353Sdim done 902234353Sdim @for i in ${DIST_DOCS_ARCH_DEP}; do \ 903234353Sdim cp ${RND}/${RELNOTES_LANG}/$$i/${TARGET}/article.txt \ 904234353Sdim ${CD_DISC1}/`echo $${i} | tr 'a-z' 'A-Z'`.TXT; \ 905234353Sdim cp ${RND}/${RELNOTES_LANG}/$$i/${TARGET}/article.html \ 906234353Sdim ${CD_DISC1}/`echo $${i} | tr 'a-z' 'A-Z'`.HTM; \ 907226633Sdim done 908234353Sdim @cp ${RND}/${RELNOTES_LANG}/readme/docbook.css ${CD_DISC1} 909234353Sdim @mv ${CD_DISC1}/INSTALLATION.TXT ${CD_DISC1}/INSTALL.TXT 910226633Sdim @mv ${CD_DISC1}/INSTALLATION.HTM ${CD_DISC1}/INSTALL.HTM 911226633Sdim @mv ${CD_DISC1}/EARLY-ADOPTER.TXT ${CD_DISC1}/EARLY.TXT 912234353Sdim @mv ${CD_DISC1}/EARLY-ADOPTER.HTM ${CD_DISC1}/EARLY.HTM 913234353Sdim.endif 914234353Sdim.if ${TARGET} != "pc98" 915234353Sdim @echo "Setting up boot area" 916234353Sdim @rm -f ${CD_DISC2}/boot/loader.conf 917234353Sdim @cp ${RD}/mfsroot/mfsroot.gz ${CD_DISC2}/boot/mfsroot.gz 918226633Sdim @echo 'mfsroot_load="YES"' > ${CD_DISC2}/boot/loader.conf 919234353Sdim @echo 'mfsroot_type="mfs_root"' >> ${CD_DISC2}/boot/loader.conf 920234353Sdim @echo 'mfsroot_name="/boot/mfsroot"' >> ${CD_DISC2}/boot/loader.conf 921226633Sdim.if defined(CD_BOOT) 922226633Sdim @cp -Rp ${CD_DISC2}/boot ${CD_BOOT} 923226633Sdim.if defined(MINIROOT) 924226633Sdim @mkdir -p ${FD}/miniroot 925234353Sdim @sh -e ${DOFS_SH} ${FD}/miniroot/miniroot.ufs \ 926234353Sdim ${RD} ${MNT} 0 ${CD_BOOT} 8192 auto 927234353Sdim @gzip -9v ${FD}/miniroot/miniroot.ufs 928234353Sdim.endif 929234353Sdim.endif 930234353Sdim @cp -Rp ${CD_DISC2}/boot ${CD_DISC1} 931234353Sdim.if ${TARGET} == "i386" && defined(EMUL_BOOT) && !defined(NO_FLOPPIES) 932234353Sdim # In case bootable ISO with floppy emulation is desired. 933234353Sdim.if defined(CD_BOOT) 934234353Sdim @mkdir -p ${CD_BOOT}/floppies 935234353Sdim @cp ${CD_DISC1}/floppies/boot.flp ${CD_BOOT}/floppies 936234353Sdim.endif 937226633Sdim @mkdir -p ${CD_DISC2}/floppies 938234353Sdim @cp ${CD_DISC1}/floppies/boot.flp ${CD_DISC2}/floppies 939226633Sdim.endif 940226633Sdim.endif 941226633Sdim touch ${.TARGET} 942234353Sdim 943226633Sdimiso.1: 944226633Sdim.if exists(${.CURDIR}/${TARGET_ARCH}/mkisoimages.sh) 945234353Sdim @echo "Creating ISO images..." 946226633Sdim.if defined(CD_BOOT) 947234353Sdim @sh ${.CURDIR}/${TARGET_ARCH}/mkisoimages.sh ${BOOTABLE} \ 948234353Sdim fbsd_bootonly \ 949234353Sdim ${CD}/${BUILDNAME}-${TARGET}-bootonly.iso ${CD_BOOT} 950234353Sdim.endif 951234353Sdim @sh ${.CURDIR}/${TARGET_ARCH}/mkisoimages.sh ${BOOTABLE} \ 952234353Sdim fbsd_miniinst \ 953234353Sdim ${CD}/${BUILDNAME}-${TARGET}-miniinst.iso ${CD_DISC1} 954234353Sdim @sh ${.CURDIR}/${TARGET_ARCH}/mkisoimages.sh ${BOOTABLE} \ 955234353Sdim fbsd_livefs \ 956234353Sdim ${CD}/${BUILDNAME}-${TARGET}-disc2.iso ${CD_DISC2} 957234353Sdim.if defined(CD_EXTRA_BITS) 958239462Sdim @sh ${.CURDIR}/${TARGET_ARCH}/mkisoimages.sh ${BOOTABLE} \ 959239462Sdim fbsd_boot \ 960226633Sdim ${CD}/${BUILDNAME}-${TARGET}-disc1.iso ${CD_DISC1} \ 961234353Sdim ${CD_EXTRA_BITS} \ 962234353Sdim && false 963234353Sdim.endif 964234353Sdim @(cd ${CD} && md5 *.iso > ${BUILDNAME}-${TARGET}-iso.CHECKSUM.MD5) 965234353Sdim touch ${.TARGET} 966234353Sdim.else 967234353Sdim @echo "Do not know how to create an ISO for ${TARGET_ARCH}." 968234353Sdim.endif 969234353Sdim 970234353Sdim# 971234353Sdim# --==## Documentation Project files such as the Handbook and FAQ ##==-- 972234353Sdim# 973226633Sdimdoc.1: 974234353Sdim @echo "Making docs..." 975234353Sdim @for i in ${DOCPORTS}; do \ 976234353Sdim cd /usr/ports/$$i && \ 977234353Sdim env -i FTP_PASSIVE_MODE=$${FTP_PASSIVE_MODE:-no} PATH=$${PATH} \ 978234353Sdim make all install clean BATCH=yes WITHOUT_X11=yes JADETEX=no \ 979226633Sdim WITHOUT_PYTHON=yes FORCE_PKG_REGISTER=yes; \ 980226633Sdim done 981234353Sdim @cd /usr/doc && make all install 'FORMATS=html html-split txt' \ 982234353Sdim INSTALL_COMPRESSED='' DOCDIR=${RD}/trees/base/usr/share/doc 983234353Sdim touch ${.TARGET} 984234353Sdim 985234353Sdim# 986234353Sdim# --==## RELNOTESng: Next-generation replacements for *.TXT files ##==-- 987234353Sdim# 988234353Sdimdoc.2: 989234353Sdim @echo "Making release documentation..." 990234353Sdim @cd ${.CURDIR}/doc && make all install clean 'FORMATS=html txt' 991234353Sdim INSTALL_COMPRESSED='' DOCDIR=${RND} 992234353Sdim touch ${.TARGET} 993234353Sdim 994234353Sdim# Various "subroutine" and other supporting targets. 995234353Sdim 996234353Sdim# RD= 997234353Sdim# SD= 998234353Sdim# TD= 999234353Sdim# ARG= 1000234353SdimdoTARBALL: 1001234353Sdim.if !defined(SD) 1002234353Sdim @echo "SD undefined in doTARBALL" && exit 1 1003234353Sdim.endif 1004234353Sdim.if !defined(TD) 1005234353Sdim @echo "TD undefined in doTARBALL" && exit 1 1006234353Sdim.endif 1007234353Sdim.if !defined(ARG) 1008234353Sdim @echo "ARG undefined in doTARBALL" && exit 1 1009234353Sdim.endif 1010234353Sdim @rm -rf ${RD}/dists/${TD}/${TN}* 1011234353Sdim @mkdir -p ${RD}/dists/${TD} 1012234353Sdim @( cd ${SD} && \ 1013234353Sdim tn=`echo ${TN} | tr 'A-Z' 'a-z' | cut -c1-8` && \ 1014234353Sdim echo rolling ${TD}/$$tn tarball &&\ 1015234353Sdim tar --exclude CVS --exclude obj --exclude BOOTMFS -cf - ${ARG} | \ 1016234353Sdim ${ZIPNSPLIT} ${RD}/dists/${TD}/$$tn. && \ 1017234353Sdim sh ${.CURDIR}/scripts/info.sh ${RD}/dists/${TD}/$$tn \ 1018234353Sdim > ${RD}/dists/${TD}/$$tn.inf && \ 1019234353Sdim if [ -f ${.CURDIR}/scripts/$${TD}-install.sh ]; then \ 1020234353Sdim cp -p ${.CURDIR}/scripts/$${TD}-install.sh \ 1021234353Sdim ${RD}/dists/${TD}/install.sh; \ 1022234353Sdim fi && \ 1023234353Sdim if [ "${SD}" != "/usr/src" ]; then \ 1024234353Sdim mtree -c -i -p ${SD}/${ARG} \ 1025234353Sdim -k gname,md5digest,mode,nlink,uname,size,link,type \ 1026234353Sdim > ${RD}/dists/${TD}/$$tn.mtree ; \ 1027202878Srdivacky else \ 1028202878Srdivacky true; \ 1029202878Srdivacky fi; \ 1030202878Srdivacky ( cd ${RD}/dists/${TD}; \ 1031202878Srdivacky rm -f CHECKSUM.MD5; \ 1032202878Srdivacky md5 * > CHECKSUM.MD5 ) \ 1033226633Sdim ) 1034226633Sdim 1035224145SdimdoRELEASE: release.1 release.2 release.3 ${DOCREL} release.4 release.5 \ 1036224145Sdim release.6 release.7 release.8 release.9 release.10 ${EXTRAS} 1037202878Srdivacky @echo "Release done" 1038226633Sdim 1039226633Sdimfloppies: 1040226633Sdim @rm -f release.5 release.9 release.10 1041226633Sdim @cd ${.CURDIR} && ${MAKE} release.5 release.9 release.10 1042226633Sdim @cd ${RD} && find floppies -print | cpio -dumpl ${FD} 1043226633Sdim 1044226633SdiminstallCRUNCH: 1045226633Sdim.if !defined(CRUNCH) 1046226633Sdim @echo "CRUNCH undefined in installCRUNCH" && exit 1 1047202878Srdivacky.endif 1048226633Sdim.if !defined(DIR) 1049226633Sdim @echo "DIR undefined in installCRUNCH" && exit 1 1050226633Sdim.endif 1051226633Sdim.if !defined(ZIP) 1052226633Sdim @echo "ZIP undefined in installCRUNCH" && exit 1 1053226633Sdim.endif 1054234353Sdim @if ${ZIP} ; then \ 1055234353Sdim gzip -9 < ${RD}/crunch/${CRUNCH} > ${DIR}/${CRUNCH}_crunch ; \ 1056226633Sdim else \ 1057226633Sdim ln -f ${RD}/crunch/${CRUNCH} ${DIR}/${CRUNCH}_crunch ; \ 1058226633Sdim fi 1059226633Sdim @chmod 555 ${DIR}/${CRUNCH}_crunch 1060234353Sdim @if [ -f ${.CURDIR}/${TARGET}/${CRUNCH}_crunch.conf ] ; then \ 1061234353Sdim for i in `crunchgen -l ${.CURDIR}/${TARGET}/${CRUNCH}_crunch.conf` ; do \ 1062234353Sdim ln -f ${DIR}/${CRUNCH}_crunch ${DIR}/$$i ; \ 1063234353Sdim done \ 1064234353Sdim else \ 1065234353Sdim for i in `crunchgen -l ${.CURDIR}/${CRUNCH}_crunch.conf` ; do \ 1066234353Sdim ln -f ${DIR}/${CRUNCH}_crunch ${DIR}/$$i ; \ 1067234353Sdim done \ 1068234353Sdim fi 1069234353Sdim 1070226633Sdim# 1071226633Sdim# --==## Put a filesystem into a BOOTMFS kernel ##==-- 1072226633Sdim# 1073226633SdimdoMFSKERN: 1074226633Sdim @echo "Running ${.TARGET} for ${FSIMAGE}" 1075226633Sdim @rm -f ${RD}/kernels/BOOTMFS ${RD}/kernels/BOOTMFS.${FSIMAGE} 1076226633Sdim @cd ${.CURDIR}/../sys/${TARGET}/conf; \ 1077226633Sdim if [ -r ${.CURDIR}/${TARGET}/dokern.sh ]; then \ 1078226633Sdim sh ${.CURDIR}/${TARGET}/dokern.sh ${FDSIZE}; \ 1079203954Srdivacky else \ 1080202878Srdivacky sed -e 's/ident.*GENERIC/ident BOOTMFS/g'; \ 1081202878Srdivacky fi < GENERIC > BOOTMFS; \ 1082202878Srdivacky [ -r GENERIC.hints ] && cp GENERIC.hints BOOTMFS.hints 1083202878Srdivacky.if defined(FDSIZE) && ${FDSIZE} == "SMALL" && \ 1084234353Sdim exists(${.CURDIR}/${TARGET}/drivers-small.conf) 1085234353Sdim @awk -f ${.CURDIR}/scripts/driver-remove.awk \ 1086234353Sdim ${.CURDIR}/${TARGET}/drivers-small.conf \ 1087234353Sdim ${.CURDIR}/../sys/${TARGET}/conf/BOOTMFS 1088234353Sdim.elif exists(${.CURDIR}/${TARGET}/drivers.conf) 1089234353Sdim @awk -f ${.CURDIR}/scripts/driver-remove.awk \ 1090234353Sdim ${.CURDIR}/${TARGET}/drivers.conf \ 1091234353Sdim ${.CURDIR}/../sys/${TARGET}/conf/BOOTMFS 1092234353Sdim.endif 1093234353Sdim cd ${.CURDIR}/..; \ 1094202878Srdivacky KERNEL_KO=BOOTMFS KODIR= \ 1095202878Srdivacky ${CROSSMAKE} ${KERNEL_FLAGS} -DNO_MODULES -DNO_KERNELCLEAN \ 1096202878Srdivacky KERNCONF=BOOTMFS COPTFLAGS="-Os -pipe" -DNO_CPU_COPTFLAGS \ 1097202878Srdivacky buildkernel reinstallkernel \ 1098224145Sdim DESTDIR=${RD}/kernels 1099224145Sdim [ -r ${.CURDIR}/../sys/${TARGET}/conf/BOOTMFS.hints ] && \ 1100224145Sdim cp ${.CURDIR}/../sys/${TARGET}/conf/BOOTMFS.hints ${RD}/kernels 1101224145Sdim @rm -rf ${RD}/image.${FSIMAGE} 1102224145Sdim @mkdir ${RD}/image.${FSIMAGE} 1103234353Sdim @cd ${RD}/kernels && \ 1104234353Sdim (chflags noschg BOOTMFS || true) && \ 1105202878Srdivacky ${WMAKEENV} strip -R .comment BOOTMFS && \ 1106234353Sdim cp BOOTMFS BOOTMFS.${FSIMAGE} && \ 1107234353Sdim [ -r BOOTMFS.hints ] && mv BOOTMFS.hints BOOTMFS.${FSIMAGE}.hints 1108234353Sdim mv ${RD}/kernels/BOOTMFS ${RD}/image.${FSIMAGE}/kernel 1109234353Sdim @echo "Setting up /boot directory for ${FSIMAGE} floppy" 1110234353Sdim @mkdir -p ${RD}/image.${FSIMAGE}/boot 1111202878Srdivacky.if ${TARGET} == "i386" 1112234353Sdim @${WMAKEENV} kgzip -v -l ${RD}/trees/base/usr/lib/kgzldr.o -o \ 1113202878Srdivacky ${RD}/image.${FSIMAGE}/boot/loader ${RD}/trees/special/boot/loader 1114202878Srdivacky.else 1115202878Srdivacky @cp ${RD}/trees/special/boot/loader ${RD}/image.${FSIMAGE}/boot 1116221345Sdim.endif 1117221345Sdim @[ -r ${RD}/kernels/BOOTMFS.${FSIMAGE}.hints ] && \ 1118221345Sdim sed -e '/^hint/s/^/set /' -e '/^#/d' \ 1119224145Sdim ${RD}/kernels/BOOTMFS.${FSIMAGE}.hints > \ 1120224145Sdim ${RD}/image.${FSIMAGE}/boot/device.hints && \ 1121202878Srdivacky echo "include /boot/device.hints" \ 1122202878Srdivacky > ${RD}/image.${FSIMAGE}/boot/loader.rc 1123202878Srdivacky @echo "load /kernel" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 1124221345Sdim.if !defined(FDSIZE) || ${FDSIZE} != "BIG" 1125202878Srdivacky @echo "echo \\007\\007" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 1126202878Srdivacky @echo "echo Please insert MFS root floppy and press enter:" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 1127202878Srdivacky @echo "read" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 1128202878Srdivacky.endif 1129202878Srdivacky @echo "load -t mfs_root /mfsroot" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 1130202878Srdivacky @echo "set hint.acpi.0.disabled=1" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 1131202878Srdivacky @if [ -r ${RD}/floppies/drivers.flp ]; then \ 1132202878Srdivacky echo "set driver_floppy=YES" >> ${RD}/image.${FSIMAGE}/boot/loader.rc; \ 1133234353Sdim fi 1134234353Sdim @echo "set module_path=\"/modules;/dist\"" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 1135234353Sdim @echo "echo \\007\\007" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 1136202878Srdivacky @echo "autoboot 10" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 1137202878Srdivacky.if ${TARGET_ARCH} == "i386" && ${AUTO_KEYBOARD_DETECT} 1138224145Sdim @echo "-P" >> ${RD}/image.${FSIMAGE}/boot.config 1139234353Sdim.endif 1140234353Sdim @gzip -9v ${RD}/image.${FSIMAGE}/kernel 1141202878Srdivacky @rm -f ${RD}/floppies/${FSIMAGE}.flp 1142202878Srdivacky.if defined(FDSIZE) && ${FDSIZE} == "BIG" 1143202878Srdivacky @cp ${RD}/mfsroot/mfsroot.gz ${RD}/image.${FSIMAGE} 1144202878Srdivacky sh -e ${DOFS_SH} ${RD}/floppies/${FSIMAGE}.flp ${RD} ${MNT} \ 1145202878Srdivacky ${BIGBOOTSIZE} ${RD}/image.${FSIMAGE} ${BOOTINODE} ${BIGBOOTLABEL} 1146203954Srdivacky.elif defined(FDSIZE) && ${FDSIZE} == "SMALL" 1147202878Srdivacky sh -e ${DOFS_SH} ${RD}/floppies/mfsroot-small.flp ${RD} ${MNT} \ 1148234353Sdim ${SMALLBOOTSIZE} ${RD}/mfsroot-small/mfsroot.gz ${BOOTINODE} \ 1149234353Sdim ${SMALLBOOTLABEL} 1150234353Sdim sh -e ${DOFS_SH} ${RD}/floppies/${FSIMAGE}.flp ${RD} ${MNT} \ 1151234353Sdim ${SMALLBOOTSIZE} ${RD}/image.${FSIMAGE} ${BOOTINODE} \ 1152202878Srdivacky ${SMALLBOOTLABEL} 1153202878Srdivacky.else 1154202878Srdivacky sh -e ${DOFS_SH} ${RD}/floppies/mfsroot.flp ${RD} ${MNT} \ 1155202878Srdivacky ${BOOTSIZE} ${RD}/mfsroot/mfsroot.gz ${BOOTINODE} ${BOOTLABEL} 1156202878Srdivacky sh -e ${DOFS_SH} ${RD}/floppies/${FSIMAGE}.flp ${RD} ${MNT} \ 1157202878Srdivacky ${BOOTSIZE} ${RD}/image.${FSIMAGE} ${BOOTINODE} ${BOOTLABEL} 1158202878Srdivacky.endif 1159226633Sdim @echo "Created ${RD}/floppies/${FSIMAGE}.flp" 1160226633Sdim 1161202878Srdivacky.include <bsd.obj.mk> 1162202878Srdivacky