Makefile revision 75277
1177633Sdfr# $FreeBSD: head/release/Makefile 75277 2001-04-07 01:48:55Z obrien $ 2177633Sdfr# 3177633Sdfr# make release CHROOTDIR=/some/dir BUILDNAME=somename CVSROOT=/cvs/dir \ 4177633Sdfr# [ RELEASETAG=tag ] 5177633Sdfr# 6177633Sdfr# Where "/some/dir" is the pathname of a directory on a some filesystem with 7177633Sdfr# at least 1000MB of free space, "somename" is what you want the release to 8177633Sdfr# call itself, "/cvs/dir" is where our source repo resides and, optionally, 9177633Sdfr# which CVS "tag" name should be used when checking out the sources to build 10177633Sdfr# the release (default is HEAD). 11177633Sdfr# 12177633Sdfr# Please note: the vn driver must also be compiled into your kernel, 13177633Sdfr# otherwise the target 'release.8' and possibly others will fail. 14177633Sdfr# 15177633Sdfr# Set these, release builder! 16177633Sdfr# 17177633Sdfr# Fixed version: 18177633Sdfr#BUILDNAME=5.0-RELEASE 19177633Sdfr# 20177633Sdfr# Automatic SNAP versioning: 21177633SdfrDATE != date +%Y%m%d 22177633SdfrBASE = 5.0 23177633SdfrBUILDNAME?=${BASE}-${DATE}-SNAP 24177633Sdfr# 25177633Sdfr#CHROOTDIR=/junk/release 26177633Sdfr# If this is a -stable snapshot, then set 27177633Sdfr#RELEASETAG=RELENG_4 28177633Sdfr# 29177633Sdfr# Non-zero if ${RELEASETAG} is in the form "RELENG_ver_RELEASE"; we 30177633Sdfr# are building an official release. Otherwise, we are building for 31177633Sdfr# a branch. 32177633Sdfr.if defined(RELEASETAG) 33177633SdfrISRELEASE!= expr ${RELEASETAG} : '^RELENG_.*_RELEASE$$' || true 34177633Sdfr.if ${ISRELEASE} != 0 35177633Sdfr# Convert "RELENG_ver_RELEASE" to "RELEASE_ver" for ports and doc trees. 36177633SdfrAUXRELEASETAG!= echo ${RELEASETAG} | sed -e 's/^RELENG_/RELEASE_/' -e 's/_RELEASE$$//' 37177633SdfrDOCRELEASETAG?= ${AUXRELEASETAG} 38177633SdfrPORTSRELEASETAG?= ${AUXRELEASETAG} 39177633Sdfr.endif 40177633Sdfr.endif 41177633Sdfr 42177633SdfrKERNCONF=GENERIC 43177633Sdfr 44177633Sdfr# If you want to pass flags to the world build such as -j X, use 45177633Sdfr# WORLD_FLAGS. Similarly, you can specify make flags for kernel 46177633Sdfr# builds via KERNEL_FLAGS. 47177633Sdfr#WORLD_FLAGS=-j4 48177633Sdfr#KERNEL_FLAGS=-j4 49177633Sdfr 50177633Sdfr# If you are using a local CVS repository with components stored in 51177633Sdfr# non-standard modules, override these on the make commandline or 52177633Sdfr# in the environment. 53177633SdfrRELEASESRCMODULE?= src 54177633SdfrRELEASEDOCMODULE?= doc 55177633SdfrRELEASEPORTSMODULE?= ports 56177633Sdfr 57177633Sdfr# Unless set elsewhere, indicate the object format we'll be using. 58177633SdfrOBJFORMAT?= elf 59177633Sdfr 60177633Sdfr# Uncomment this to disable the doc.1 target. It is also an ERROR 61177633Sdfr# to set NOPORTS and not set NODOC since docs depend on ports. 62177633Sdfr#NODOC= YES 63177633Sdfr#NOPORTS= YES 64177633Sdfr# Set ALLLANG=no if you want the release documentation to be 65177633Sdfr# in English only. 66177633SdfrALLLANG?= yes 67184588SdfrDOCPORTS= textproc/docproj 68177633Sdfr# Set this to wherever the distfiles required by ${DOCPORTS} live. 69177633SdfrDOCDISTFILES?= ${.CURDIR}/../../ports/distfiles 70177633Sdfr# Set this to 1 if you want -P to be used for automatic keyboard detection 71177633Sdfr# on the boot floppy. WARNING: Breaks on some Athlon (K7) motherboards. 72177633SdfrAUTO_KEYBOARD_DETECT?= 0 73184588Sdfr 74177633Sdfr 75177633SdfrDIST_DOCS= ABOUT.TXT ERRATA.TXT LAYOUT.TXT README.TXT HARDWARE.TXT \ 76177685Sdfr RELNOTES.TXT TROUBLE.TXT UPGRADE.TXT INSTALL.TXT 77177633Sdfr 78177633Sdfr# Things which without too much trouble can be considered variables 79177633Sdfr# BIN_DISTS are special in that they get full /etc installation sets. 80177633Sdfr# 81177633Sdfr.if ${MACHINE_ARCH} == "i386" 82177633SdfrCOMPAT_DISTS?= compat1x compat20 compat21 compat22 compat3x compat4x 83177633Sdfr.else 84177633SdfrCOMPAT_DISTS?= compat4x 85180025Sdfr.endif 86184588SdfrOTHER_DISTS?= manpages catpages games proflibs dict info doc 87177633SdfrCRYPTO_DISTS?= crypto krb4 krb5 88177633SdfrBIN_DISTS?= bin 89177633SdfrDISTRIBUTIONS?= ${BIN_DISTS} ${OTHER_DISTS} ${COMPAT_DISTS} ${CRYPTO_DISTS} 90177633SdfrKERNELS?= GENERIC 91184588Sdfr 92177633SdfrBOOT1= etc/protocols etc/netconfig etc/defaults/rc.conf 93177633Sdfr 94193272Sjhb# mountpoint for filesystems. 95177633SdfrMNT= /mnt 96177633Sdfr 97177633Sdfr# Various floppy image parameters. 98177633Sdfr# 99177633Sdfr 100177633Sdfr.if ${MACHINE_ARCH} == "i386" 101184588Sdfr.if ${MACHINE} == "pc98" 102177633SdfrSMALLBOOTSIZE= 1200 103177633SdfrBOOTSIZE= 1440 104177633SdfrFIXITSIZE= 1440 105177633SdfrMFSSIZE= 2880 106177633SdfrBOOTINODE= 80000 107180025SdfrFIXITINODE= 4000 108180025SdfrMFSINODE= 8000 109180025SdfrSMALLBOOTLABEL= fd1200 110177633SdfrBOOTLABEL= fd1440 111177633SdfrFIXITLABEL= fd1440 112177633SdfrMFSLABEL= minimum2 113177633Sdfr.else 114177633SdfrBOOTSIZE= 1440 115177633SdfrFIXITSIZE= 1440 116184588SdfrMFSSIZE= 4320 117177633SdfrBIGBOOTSIZE= 2880 118177633SdfrBOOTINODE= 80000 119177633SdfrFIXITINODE= 4000 120177633SdfrMFSINODE= 8000 121177633SdfrBOOTLABEL= fd1440 122177633SdfrFIXITLABEL= fd1440 123180025SdfrMFSLABEL= minimum3 124184588SdfrBIGBOOTLABEL= minimum2 125184588Sdfr.endif 126177633Sdfr.elif ${MACHINE_ARCH} == "alpha" 127177633SdfrBOOTSIZE= 1440 128177633SdfrFIXITSIZE= 2880 129177633SdfrMFSSIZE= 2880 130177633SdfrBIGBOOTSIZE= 2880 131177633SdfrBOOTINODE= 80000 132177633SdfrFIXITINODE= 4000 133177633SdfrMFSINODE= 8000 134177633SdfrBOOTLABEL= fd1440 135177633SdfrFIXITLABEL= minimum2 136177633SdfrMFSLABEL= minimum2 137177633SdfrBIGBOOTLABEL= minimum2 138177633Sdfr.endif 139177633Sdfr 140193437SrmacklemZIPNSPLIT= gzip --no-name -9 -c | split -b 240640 - 141177633Sdfr 142177633Sdfr 143193437SrmacklemVNDEVICE?= vn0 144193437Srmacklem 145177633Sdfr# Things which may get you into trouble if you change them 146177633SdfrMTREEFILES= ${.CURDIR}/../etc/mtree 147177633Sdfr_R= /R 148177633SdfrRD= ${_R}/stage 149177633SdfrFD= ${_R}/ftp 150177633SdfrCD= ${_R}/cdrom 151177633SdfrCD_DISC1= ${CD}/disc1 152177633SdfrCD_DISC2= ${CD}/disc2 153177633Sdfr 154177633Sdfr# Where the bootstrap ports (see DOCPORTS) get installed. 155177633SdfrLOCALDIR= /usr/local/bin 156177633Sdfr 157177633Sdfr# ${BOOTSTRAPDIR} is for those utilities that refer to the hosting 158177633Sdfr# environment, rather than the target environment. This is specifically 159177633Sdfr# intended for kernel-dependent utilities that are used during the build. 160177633Sdfr# 161177633Sdfr# ${BOOTSTRAPDIR} is actually being used by prepending it to the normal 162177633Sdfr# ${PATH}. Thus, it's also available to outside utilities like doFS.sh. 163177633SdfrBOOTSTRAPDIR= /bootstrap 164177633Sdfr# 165177633Sdfr# The mount subsystem has been changed between 2.2 and 3.0 by the 166177633Sdfr# Lite2 import. 167177633SdfrBOOTSTRAPUTILS= /sbin/mount /sbin/umount 168177633Sdfr# 169177633Sdfr# 3.0 cpio tries to reference lchown(2) which is not available in 2.2 170177633SdfrBOOTSTRAPUTILS+= /usr/bin/cpio 171177633Sdfr 172177633Sdfr.if !defined(CRUNCH_TARGETS) 173177633SdfrCRUNCH_TARGETS= boot fixit 174177633Sdfr.endif 175177633Sdfr 176177633Sdfr.if ${MACHINE} == "pc98" 177184588SdfrEXTRAS= ftp.1 178184588Sdfr.else 179177633SdfrEXTRAS= cdrom.1 ftp.1 180177633Sdfr.endif 181177633Sdfr 182177633Sdfr.if !defined(NODOC) 183177633SdfrDOCREL= doc.1 184177633Sdfr.endif 185177633Sdfr 186177633Sdfr.if !defined(NOPORTREADMES) 187180025SdfrMAKEREADMES= make readmes PORTSDIR=${CHROOTDIR}/usr/ports 188180025Sdfr.else 189184588SdfrMAKEREADMES= true 190193437Srmacklem.endif 191177633Sdfr 192177633Sdfrrerelease release: 193177633Sdfr.if !defined(CHROOTDIR) || !defined(BUILDNAME) || !defined(CVSROOT) 194180025Sdfr @echo "To make a release you must set CHROOTDIR, BUILDNAME and CVSROOT" && false 195180025Sdfr.endif 196180025Sdfr.if defined(NOPORTS) && !defined(NODOC) 197180025Sdfr @echo "Ports are required for building the docs. Either set NODOC or" 198180025Sdfr @echo "unset NOPORTS!" 199180025Sdfr @exit 1 200180025Sdfr.endif 201180025Sdfr.if make(release) 202180025Sdfr.if exists(${CHROOTDIR}) 203180025Sdfr# The first command will fail on a handful of files that have their schg 204180025Sdfr# flags set. But it greatly speeds up the next two commands. 205180025Sdfr -rm -rf ${CHROOTDIR} 2>/dev/null 206180025Sdfr -chflags -R noschg ${CHROOTDIR}/. 207180025Sdfr -rm -rf ${CHROOTDIR} 208180025Sdfr.endif 209180025Sdfr mkdir -p ${CHROOTDIR} 210180025Sdfr @echo ">>> make release started on `LC_ALL=C TZ=GMT date`" 211177633Sdfr cd ${.CURDIR}/../etc && ${MAKE} distrib-dirs DESTDIR=${CHROOTDIR} 212180025Sdfr cd ${.CURDIR}/../etc && ${MAKE} distribution DESTDIR=${CHROOTDIR} 213180025Sdfr if [ -f /etc/resolv.conf ]; then \ 214177633Sdfr cp -p /etc/resolv.conf ${CHROOTDIR}/etc; \ 215177633Sdfr fi 216177633Sdfr cd ${.CURDIR}/.. && ${MAKE} installworld DESTDIR=${CHROOTDIR} NOMAN=1 217177633Sdfr mkdir ${CHROOTDIR}/${BOOTSTRAPDIR} 218177633Sdfr for i in ${BOOTSTRAPUTILS} ; do \ 219177633Sdfr cp -p ${CHROOTDIR}$$i ${CHROOTDIR}/${BOOTSTRAPDIR} ; \ 220177633Sdfr done 221177633Sdfr.if !defined(RELEASETAG) 222177633Sdfr cd ${CHROOTDIR}/usr && rm -rf src && \ 223184588Sdfr cvs -R -d ${CVSROOT} co -P ${RELEASESRCMODULE} 224184588Sdfr.else 225184588Sdfr cd ${CHROOTDIR}/usr && rm -rf src && \ 226184588Sdfr cvs -R -d ${CVSROOT} co -P -r ${RELEASETAG} ${RELEASESRCMODULE} 227184588Sdfr.endif 228184588Sdfr.if defined(LOCAL_PATCHES) && exists(${LOCAL_PATCHES}) 229184588Sdfr cd ${CHROOTDIR}/usr/src && patch ${PATCH_FLAGS} < ${LOCAL_PATCHES} 230184588Sdfr.endif 231184588Sdfr.if defined(LOCAL_SCRIPT) && exists(${LOCAL_SCRIPT}) 232184588Sdfr cd ${CHROOTDIR} && env CHROOTDIR=${CHROOTDIR} BUILDNAME=${BUILDNAME} RELEASETAG=${RELEASETAG} ${LOCAL_SCRIPT} 233184588Sdfr.endif 234184588Sdfr.if !defined(NOPORTS) 235184588Sdfr.if defined(PORTSRELEASETAG) 236184588Sdfr cd ${CHROOTDIR}/usr && rm -rf ports && cvs -R -d ${CVSROOT} co -P -r ${PORTSRELEASETAG} ${RELEASEPORTSMODULE} && cd ports && ${MAKEREADMES} 237184588Sdfr.else 238184588Sdfr cd ${CHROOTDIR}/usr && rm -rf ports && cvs -R -d ${CVSROOT} co -P ${RELEASEPORTSMODULE} && cd ports && ${MAKEREADMES} 239184588Sdfr.endif 240184588Sdfr.endif 241184588Sdfr.if !defined(NODOC) 242184588Sdfr.if defined(DOCRELEASETAG) 243177633Sdfr cd ${CHROOTDIR}/usr && rm -rf doc && cvs -R -d ${CVSROOT} co -P -r ${DOCRELEASETAG} ${RELEASEDOCMODULE} 244177633Sdfr.else 245177633Sdfr cd ${CHROOTDIR}/usr && rm -rf doc && cvs -R -d ${CVSROOT} co -P ${RELEASEDOCMODULE} 246177633Sdfr.endif 247177633Sdfr if [ -d ${DOCDISTFILES}/ ]; then \ 248177633Sdfr cp -rp ${DOCDISTFILES} ${CHROOTDIR}/usr/ports/distfiles; \ 249177633Sdfr fi 250177633Sdfr.endif 251177633Sdfr.endif 252177633Sdfr.if make(rerelease) 253177633Sdfr.if !defined(RELEASENOUPDATE) 254177633Sdfr.if !defined(RELEASETAG) 255177633Sdfr cd ${CHROOTDIR}/usr/src && cvs -R -q update -P -d 256177633Sdfr.else 257177633Sdfr cd ${CHROOTDIR}/usr/src && cvs -R -q update -P -d -r ${RELEASETAG} 258177633Sdfr.endif 259177633Sdfr.if !defined(NOPORTS) 260177633Sdfr cd ${CHROOTDIR}/usr/ports && cvs -R -q update -P -d 261177633Sdfr.endif 262177633Sdfr.if !defined(NODOC) 263177633Sdfr cd ${CHROOTDIR}/usr/doc && cvs -R -q update -P -d 264177633Sdfr.endif 265177633Sdfr.endif 266177633Sdfr.endif 267177633Sdfr # Add version information to those things that need it. 268177633Sdfr ( cd ${CHROOTDIR}/usr/src/sys/conf && \ 269177633Sdfr mv newvers.sh foo && \ 270177633Sdfr sed "s/^RELEASE=.*/RELEASE=${BUILDNAME}/" foo > newvers.sh && rm foo ) 271177633Sdfr echo OBJFORMAT=${OBJFORMAT} > ${CHROOTDIR}/etc/objformat 272177633Sdfr -test -f install.cfg && cp install.cfg ${CHROOTDIR}/usr/src/release 273177633Sdfr echo "#!/bin/sh" > ${CHROOTDIR}/mk 274177633Sdfr echo "set -ex" >> ${CHROOTDIR}/mk 275177633Sdfr echo "_RELTARGET=\$${1:-doRELEASE}" >> ${CHROOTDIR}/mk 276177633Sdfr echo "export CFLAGS='-O -pipe'" >> ${CHROOTDIR}/mk 277177633Sdfr echo "export NO_X=YES" >> ${CHROOTDIR}/mk 278177633Sdfr echo "export DISTRIBUTIONS=\"${DISTRIBUTIONS}\"" >> ${CHROOTDIR}/mk 279177633Sdfr echo "export BUILDNAME=${BUILDNAME}" >> ${CHROOTDIR}/mk 280177633Sdfr echo "export VNDEVICE=${VNDEVICE}" >> ${CHROOTDIR}/mk 281177633Sdfr echo "export OBJFORMAT=${OBJFORMAT}" >> ${CHROOTDIR}/mk 282177633Sdfr.if defined(RELEASETAG) 283177633Sdfr echo "export RELEASETAG=${RELEASETAG}" >> ${CHROOTDIR}/mk 284180025Sdfr.endif 285177633Sdfr.if defined(NOPORTS) 286177633Sdfr echo "export NOPORTS=${NOPORTS}" >> ${CHROOTDIR}/mk 287177633Sdfr.endif 288177633Sdfr.if defined(NODOC) 289177633Sdfr echo "export NODOC=${NODOC}" >> ${CHROOTDIR}/mk 290184588Sdfr.endif 291177633Sdfr.if defined(ALLLANG) && ${ALLLANG} != "NO" && ${ALLLANG} != "no" 292177633Sdfr echo "export ALLLANG=${ALLLANG}" >> ${CHROOTDIR}/mk 293193272Sjhb.else 294177633Sdfr echo "export DOC_LANG=en_US.ISO_8859-1" >> ${CHROOTDIR}/mk 295177633Sdfr.endif 296177633Sdfr.if defined(NOSRC) 297177633Sdfr echo "export NOSRC=${NOSRC}" >> ${CHROOTDIR}/mk 298177633Sdfr.endif 299177633Sdfr.if defined(NOSHARED) 300177633Sdfr echo "export NOSHARED=${NOSHARED}" >> ${CHROOTDIR}/mk 301177633Sdfr.endif 302177633Sdfr.if defined(BOOT_CONFIG) 303177633Sdfr echo "export BOOT_CONFIG=\"${BOOT_CONFIG}\"">> ${CHROOTDIR}/mk 304184877Sdfr.endif 305177633Sdfr.if defined(KERNEL_FLAGS) 306177633Sdfr echo "export KERNEL_FLAGS=\"${KERNEL_FLAGS}\"" >> ${CHROOTDIR}/mk 307177633Sdfr.endif 308177633Sdfr # Don't remove this, or the build will fall over! 309177633Sdfr echo "export RELEASEDIR=${_R}" >> ${CHROOTDIR}/mk 310177633Sdfr echo "export PATH=${BOOTSTRAPDIR}:$${PATH}:${LOCALDIR}" >> ${CHROOTDIR}/mk 311177633Sdfr echo "if [ ! -f /tmp/.world_done ]; then" >> ${CHROOTDIR}/mk 312177633Sdfr echo " cd /usr/src" >> ${CHROOTDIR}/mk 313177633Sdfr.if make(release) 314177633Sdfr echo " (cd etc; make distrib-dirs distribution)" >> ${CHROOTDIR}/mk 315184588Sdfr echo " make ${WORLD_FLAGS} world && \\" >> ${CHROOTDIR}/mk 316184588Sdfr.endif 317184588Sdfr.if make(rerelease) 318184588Sdfr echo " make ${WORLD_FLAGS} all install && \\" >> ${CHROOTDIR}/mk 319184588Sdfr.endif 320184588Sdfr echo " touch /tmp/.world_done" >> ${CHROOTDIR}/mk 321177633Sdfr echo "fi" >> ${CHROOTDIR}/mk 322177633Sdfr echo "cd /usr/src/release" >> ${CHROOTDIR}/mk 323180025Sdfr echo "make obj" >> ${CHROOTDIR}/mk 324184588Sdfr echo "make \$${_RELTARGET}" >> ${CHROOTDIR}/mk 325184588Sdfr echo "echo \">>> make ${.TARGET} finished on \`LC_ALL=C TZ=GMT date\`\"" >> ${CHROOTDIR}/mk 326177633Sdfr chmod 755 ${CHROOTDIR}/mk 327177633Sdfr chroot ${CHROOTDIR} /mk 328177633Sdfr 329177633Sdfrclean: 330177633Sdfr rm -rf boot_crunch release.[0-9] 331177633Sdfr 332184588Sdfr# Clean out ${_R} and make the directory structure. 333180025Sdfrrelease.1: 334177633Sdfr mkdir -p ${_R} 335177633Sdfr -rm -rf ${_R}/* 2> /dev/null 336180025Sdfr -chflags -R noschg ${_R}/. 337180025Sdfr rm -rf ${_R}/* 338177633Sdfr mkdir ${RD} 339177633Sdfr mkdir ${RD}/floppies 340184588Sdfr mkdir ${RD}/trees 341180025Sdfr mkdir ${RD}/dists 342180025Sdfr mkdir ${RD}/kernels 343180025Sdfr for i in ${DISTRIBUTIONS} ; do \ 344180025Sdfr mkdir ${RD}/trees/$$i && \ 345180025Sdfr mkdir ${RD}/dists/$$i && \ 346177633Sdfr mtree -deU -f ${MTREEFILES}/BSD.root.dist \ 347184588Sdfr -p ${RD}/trees/$$i > /dev/null && \ 348180025Sdfr mtree -deU -f ${MTREEFILES}/BSD.usr.dist \ 349184588Sdfr -p ${RD}/trees/$$i/usr > /dev/null && \ 350184588Sdfr mtree -deU -f ${MTREEFILES}/BSD.include.dist \ 351180025Sdfr -p ${RD}/trees/$$i/usr/include > /dev/null && \ 352184588Sdfr mtree -deU -f ${MTREEFILES}/BSD.var.dist \ 353184588Sdfr -p ${RD}/trees/$$i/var > /dev/null ; \ 354180025Sdfr done 355180025Sdfr touch release.1 356180025Sdfr 357180025Sdfr# Install the system into the various distributions. 358177633Sdfrrelease.2: 359177633Sdfr cd ${.CURDIR}/../etc && make distrib-dirs DESTDIR=${RD}/trees/bin 360177633Sdfr cd ${.CURDIR}/.. && make distribworld DISTDIR=${RD}/trees 361177633Sdfr.if exists(${.CURDIR}/../kerberosIV) && exists(${.CURDIR}/../crypto) && !defined(NOKERBEROS) 362177633Sdfr cd ${.CURDIR}/../kerberosIV && ( \ 363177633Sdfr make bootstrap &&\ 364177633Sdfr make obj all help-distribute DISTDIR=${RD}/trees &&\ 365177633Sdfr make kprog \ 366177633Sdfr ) 367177633Sdfr.endif 368177633Sdfr.if exists(${.CURDIR}/../kerberos5) && exists(${.CURDIR}/../crypto) && !defined(NOKERBEROS) 369177633Sdfr cd ${.CURDIR}/../kerberos5 && ( \ 370177633Sdfr make bootstrap &&\ 371177633Sdfr make obj all help-distribute DISTDIR=${RD}/trees &&\ 372177633Sdfr make kprog \ 373177633Sdfr ) 374177633Sdfr.endif 375177633Sdfr -chflags -R noschg ${RD}/trees 376177633Sdfr touch release.2 377184588Sdfr 378184588Sdfr# Make and install the generic kernel(s). 379184588Sdfrrelease.3: 380184588Sdfr.for kernel in ${KERNELS} 381177633Sdfr -chflags -R noschg ${RD}/kernels/${kernel} 382177633Sdfr rm -rf ${RD}/kernels/${kernel} 383177633Sdfr rm -rf ${.CURDIR}/../sys/compile/${kernel} 384177633Sdfr cd ${.CURDIR} && ${MAKE} doSTDKERNEL KERNEL=${kernel} KODIR=/${kernel} 385177633Sdfr rm -rf ${.CURDIR}/../sys/compile/${kernel} 386177633Sdfr -mkdir ${RD}/trees/bin/boot/${kernel} 387177633Sdfr cp -p ${RD}/kernels/${kernel}/kernel ${RD}/trees/bin/boot/${kernel} 388177633Sdfr.endfor 389184588Sdfr # Install a standard boot kernel+modules 390177633Sdfr mkdir -p ${RD}/trees/bin/boot/kernel 391177633Sdfr cp -Rp ${RD}/kernels/GENERIC/* ${RD}/trees/bin/boot/kernel 392184588Sdfr touch release.3 393184588Sdfr 394184588Sdfr# Make and install the three crunched binaries which live on the floppies. 395180025Sdfr# You are not supposed to like this :-) 396180025Sdfrrelease.4: 397177633Sdfr @mkdir -p /stand 398184588Sdfr rm -rf ${RD}/crunch 399177633Sdfr mkdir -p ${RD}/crunch 400177633Sdfr for j in ${CRUNCH_TARGETS} ; do \ 401177633Sdfr rm -rf $${j}_crunch && \ 402177633Sdfr mkdir $${j}_crunch && \ 403177633Sdfr ( cd $${j}_crunch && \ 404177633Sdfr ( ( [ -f ${.CURDIR}/${MACHINE}/$${j}_crunch.conf ] && \ 405177633Sdfr crunchgen ${.CURDIR}/${MACHINE}/$${j}_crunch.conf ) || \ 406177633Sdfr ( crunchgen ${.CURDIR}/$${j}_crunch.conf ) ) && \ 407180025Sdfr ${MAKE} -f $${j}_crunch.mk subclean all ) && \ 408177633Sdfr mv $${j}_crunch/$${j}_crunch ${RD}/crunch/$${j} && \ 409180025Sdfr true || { rm -rf $${j}_crunch ; false ; } ; \ 410177633Sdfr done 411177633Sdfr touch release.4 412177633Sdfr 413177633Sdfr# 414177633Sdfr# --==## Fix up the distributions. ##==-- 415177633Sdfr# 416177633Sdfrrelease.5: 417184588Sdfr # Handle some grief caused by the munition braindeadness. 418184588Sdfr for i in bin/ed usr.sbin/ppp usr.sbin/pppd usr.sbin/sendmail usr.sbin/tcpdump/tcpdump ; do \ 419184588Sdfr ( cd ${.CURDIR}/../$$i; \ 420184588Sdfr make -DNOCRYPT clean all distribute DISTDIR=${RD}/trees ) ; \ 421184588Sdfr done 422184588Sdfr 423184588Sdfr # Create any "synthetic dists" now. 424184588Sdfr @for i in ${DISTRIBUTIONS}; do \ 425184588Sdfr if [ -f ${.CURDIR}/scripts/$${i}-make.sh ]; then \ 426177633Sdfr echo -n "Running $$i dist creation script... "; \ 427184588Sdfr env OBJFORMAT=${OBJFORMAT} RD=${RD} sh ${.CURDIR}/scripts/$${i}-make.sh || echo "$$i distribution script returned bad status."; \ 428184588Sdfr echo "Done."; \ 429184588Sdfr fi \ 430184588Sdfr done \ 431184588Sdfr 432177633Sdfr # Remove all the directories we don't need. 433177633Sdfr -cd ${RD}/trees && \ 434177633Sdfr find ${OTHER_DISTS} ${COMPAT_DISTS} ${CRYPTO_DISTS} -depth -type d -print | xargs rmdir 435180025Sdfr touch release.5 436184588Sdfr 437184588Sdfr# 438177633Sdfr# --==## Package up the tarballs from assembled trees ##==-- 439177633Sdfr# 440177633Sdfrrelease.6: 441177633Sdfr rm -rf ${RD}/dists 442177633Sdfr mkdir -p ${RD}/dists 443177633Sdfr @for i in ${DISTRIBUTIONS} ; \ 444177633Sdfr do \ 445177633Sdfr if [ -d ${RD}/trees/$${i} ] ; then \ 446180025Sdfr cd ${.CURDIR} && $(MAKE) doTARBALL \ 447180025Sdfr SD=${RD}/trees/$${i} \ 448184588Sdfr TN=$$i TD=$$i ARG="." && \ 449184588Sdfr echo "$${i} distribution is finished."; \ 450177633Sdfr fi ; \ 451177633Sdfr done 452180025Sdfr # More munition braindeadness. 453180025Sdfr ( cd ${RD}/dists && \ 454177633Sdfr if [ -f krb4/krb4.aa ] ; then \ 455177633Sdfr mv krb4/krb4.* crypto && \ 456177633Sdfr cat krb4/CHECKSUM.MD5 >> crypto/CHECKSUM.MD5 && \ 457177633Sdfr rm -r krb4; \ 458177633Sdfr fi ) 459177633Sdfr ( cd ${RD}/dists && \ 460177633Sdfr if [ -f krb5/krb5.aa ] ; then \ 461180025Sdfr mv krb5/krb5.* crypto && \ 462184588Sdfr cat krb5/CHECKSUM.MD5 >> crypto/CHECKSUM.MD5 && \ 463177633Sdfr rm -r krb5; \ 464177633Sdfr fi ) 465177633Sdfr touch release.6 466180025Sdfr 467177633Sdfr 468177633Sdfr# 469180025Sdfr# --==## Make source dists ##==-- 470180025Sdfr# 471177633Sdfrrelease.7: 472177633Sdfr.if !defined(NOSRC) 473177633Sdfr @cd ${.CURDIR} && $(MAKE) doTARBALL SD=/usr/src \ 474177633Sdfr TD=src TN=sbase ARG="[A-Z]*" 475177633Sdfr @for i in `cd /usr/src && echo [a-z]*` ; do \ 476177633Sdfr if [ -d /usr/src/$$i ] ; then \ 477184588Sdfr cd ${.CURDIR} && $(MAKE) doTARBALL \ 478177633Sdfr TN=`echo s$$i | tr -d '.' | \ 479177633Sdfr sed -e 's/usr/u/' \ 480184588Sdfr -e 's/kerberosIV/krb4/' \ 481177633Sdfr -e 's/kerberos5/krb5/'` \ 482177633Sdfr SD=/usr/src TD=src ARG="$$i" ; \ 483184588Sdfr fi ; \ 484177633Sdfr done 485177633Sdfr.if defined(EXTRA_SRC) 486184588Sdfr @set ${EXTRA_SRC} && \ 487177633Sdfr while [ $$# -ge 2 ] ; do \ 488184588Sdfr if [ -d /usr/src/$$1 ] ; then \ 489177633Sdfr cd ${.CURDIR} && $(MAKE) doTARBALL \ 490177633Sdfr SD=/usr/src TN="s$$2" TD=src ARG="$$1" ; \ 491177633Sdfr fi && shift && shift ; \ 492177633Sdfr done 493177633Sdfr.endif 494177633Sdfr if [ -d ${RD}/dists/crypto ] ; then ( cd ${RD}/dists/src && \ 495177633Sdfr if [ -f ssecure.aa ] ; then mv ssecure.* ../crypto ; fi && \ 496180025Sdfr if [ -f scrypto.aa ] ; then mv scrypto.* ../crypto ; fi && \ 497184588Sdfr if [ -f skrb4.aa ] ; then mv skrb4.* ../crypto ; fi && \ 498184588Sdfr if [ -f skrb5.aa ] ; then mv skrb5.* ../crypto ; fi ; ) ; fi 499177633Sdfr @echo "src distribution is finished." 500177633Sdfr.endif 501177633Sdfr touch release.7 502177633Sdfr 503177633Sdfr# Complete the bootfd 504177633Sdfr# 505177633Sdfr# Now, just to get this picture down once and for all: 506177633Sdfr# 507177633Sdfr# +------------------------------------------------------------------------+ 508177633Sdfr# |boot.flp | 509177633Sdfr# +-----+-----+------------------------------------------------------------+ 510184588Sdfr# |boot1|boot2|floppy filesystem "bootfd" | 511184588Sdfr# +-----+-----+-+--------------------------------------------------------+-+ 512184588Sdfr# |kernel | 513180025Sdfr# +------------+-----------------------------------------+-+ 514177633Sdfr# |mfs filesystem "mfsfd" | 515180025Sdfr# +-----------------------------------------+ 516177633Sdfr# 517177633Sdfr 518177633Sdfrrelease.8: write_mfs_in_kernel 519184588Sdfr rm -rf ${RD}/mfsfd 520184588Sdfr mkdir ${RD}/mfsfd 521177633Sdfr cd ${RD}/mfsfd && \ 522184588Sdfr mkdir -p etc/defaults dev mnt stand/help 523177633Sdfr @cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=boot \ 524184588Sdfr DIR=${RD}/mfsfd/stand ZIP=false 525184588Sdfr ( cd ${RD}/trees/bin/dev && \ 526184588Sdfr ls console tty bpf0 ttyd0 ttyv0 ttyv1 ttyv2 ttyv3 null zero card0 card1 card2 card3 usb usb0 uhid0 ums0 ulpt0 ugen0 kbd0 kmem mem | \ 527184588Sdfr cpio -dump ${RD}/mfsfd/dev ) 528184588Sdfr ( cd ${RD}/mfsfd/dev && rm -f *[swo]d*[bdefgh] ) 529184588Sdfr ( cd ${RD}/mfsfd && \ 530184588Sdfr for dir in bin sbin ; do \ 531184588Sdfr ln -sf /stand $$dir; \ 532184588Sdfr done ) 533184588Sdfr cp /sbin/dhclient-script ${RD}/mfsfd/stand 534184588Sdfr cp ${.CURDIR}/../etc/defaults/pccard.conf ${RD}/mfsfd/etc/defaults/pccard.conf 535177633Sdfr cp ${.CURDIR}/../etc/usbd.conf ${RD}/mfsfd/etc/usbd.conf 536177633Sdfr cd ${RD}/trees/bin && ls ${BOOT1} | cpio -dump ${RD}/mfsfd/stand 537177633Sdfr grep -E '^(ftp|nameserver|domain|sunrpc|cmd|nfsd)[^-\w]' \ 538177633Sdfr ${.CURDIR}/../etc/services > ${RD}/mfsfd/stand/etc/services 539177633Sdfr ln ${RD}/mfsfd/stand/etc/services ${RD}/mfsfd/etc/services 540177633Sdfr ln ${RD}/mfsfd/stand/etc/netconfig ${RD}/mfsfd/etc/netconfig 541184588Sdfr gzip -9c ${.CURDIR}/../COPYRIGHT > ${RD}/mfsfd/stand/help/COPYRIGHT.hlp.gz 542177633Sdfr @for i in README.TXT RELNOTES.TXT INSTALL.TXT UPGRADE.TXT HARDWARE.TXT; do \ 543177633Sdfr if [ -f ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} ]; then \ 544184588Sdfr gzip -9c ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} > ${RD}/mfsfd/stand/help/$${i}.gz; \ 545177633Sdfr else \ 546184588Sdfr gzip -9c ${.CURDIR}/texts/$${i} > ${RD}/mfsfd/stand/help/$${i}.gz; \ 547184588Sdfr fi; \ 548177633Sdfr done 549177633Sdfr -test -f ${.CURDIR}/install.cfg && cp ${.CURDIR}/install.cfg ${RD}/mfsfd 550177633Sdfr @mkdir -p ${RD}/mfsfd/boot 551177633Sdfr @cp /boot/boot* ${RD}/mfsfd/boot 552177633Sdfr @cp /boot/loader.help ${RD}/mfsfd/boot 553184588Sdfr @cd ${.CURDIR} && ${MAKE} createBOOTMFS 554177633Sdfr.if exists(${.CURDIR}/${MACHINE_ARCH}/drivers.conf) 555184588Sdfr @cd ${.CURDIR} && ${MAKE} doMODULES KERNEL=BOOTMFS KERNEL_KO=BOOTMFS KODIR="" 556184588Sdfr.endif 557177633Sdfr @echo "Making the regular boot floppy." 558177633Sdfr @tar --exclude CVS -cf - -C /usr/src/usr.sbin/sysinstall help | \ 559177633Sdfr tar xf - -C ${RD}/mfsfd/stand 560184588Sdfr @echo "Compressing doc files..." 561184588Sdfr @gzip -9 ${RD}/mfsfd/stand/help/*.hlp 562184588Sdfr.if ${MACHINE_ARCH} == "alpha" 563177633Sdfr rm -rf ${RD}/mfsfd/stand/help/* 564177633Sdfr.endif 565180025Sdfr.if exists(${.CURDIR}/${MACHINE_ARCH}/drivers.conf) 566180025Sdfr @mkdir -p ${RD}/mfsfd/stand/modules 567177633Sdfr @perl ${.CURDIR}/scripts/driver-copy2.pl \ 568180025Sdfr ${.CURDIR}/${MACHINE_ARCH}/drivers.conf \ 569180025Sdfr ${RD}/kernels ${RD}/mfsfd/stand/modules 570180025Sdfr.endif 571180025Sdfr sh -e ${.CURDIR}/scripts/doFS.sh -s mfsroot ${RD} ${MNT} \ 572177633Sdfr ${MFSSIZE} ${RD}/mfsfd ${MFSINODE} ${MFSLABEL} 573180025Sdfr @gzip -9vc mfsroot > mfsroot.gz 574184588Sdfr.if ${MACHINE} == "pc98" 575184588Sdfr @sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/mfsroot.flp \ 576184588Sdfr ${RD} ${MNT} ${SMALLBOOTSIZE} mfsroot.gz \ 577180025Sdfr ${BOOTINODE} ${SMALLBOOTLABEL} 578180025Sdfr @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern-small FDSIZE=SMALL 579184588Sdfr @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern 580177633Sdfr.else 581177633Sdfr @sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/mfsroot.flp \ 582177633Sdfr ${RD} ${MNT} ${BOOTSIZE} mfsroot.gz ${BOOTINODE} ${BOOTLABEL} 583177633Sdfr @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=kern 584177633Sdfr @cd ${.CURDIR} && ${MAKE} doMFSKERN FSIMAGE=boot FDSIZE=BIG 585177633Sdfr.endif 586177633Sdfr @rm mfsroot mfsroot.gz mfsroot.size 587177633Sdfr @echo "Regular and MFS boot floppies made." 588177633Sdfr touch release.8 589177633Sdfr 590177633Sdfr# 591177633Sdfr# --==## Create a fixit floppy ##==-- 592177633Sdfr# 593177633Sdfrrelease.9: 594177633Sdfr @echo "Making fixit floppy." 595177633Sdfr @rm -rf ${RD}/fixitfd 596177633Sdfr @mkdir ${RD}/fixitfd 597177633Sdfr @cd ${RD}/fixitfd && \ 598177633Sdfr mkdir -p dev stand bin sbin etc mnt mnt1 mnt2 mnt3 mnt4 tmp \ 599177633Sdfr usr/share/misc 600177633Sdfr @cd ${.CURDIR} && $(MAKE) installCRUNCH CRUNCH=fixit \ 601177633Sdfr DIR=${RD}/fixitfd/stand ZIP=false 602177633Sdfr @( cd ${RD}/fixitfd/dev && \ 603177633Sdfr cp ${RD}/trees/bin/dev/MAKEDEV MAKEDEV && \ 604177633Sdfr chmod 755 MAKEDEV && \ 605177633Sdfr sh MAKEDEV fixit ) 606177633Sdfr @cp ${RD}/trees/bin/etc/spwd.db ${RD}/trees/bin/etc/group \ 607177633Sdfr ${RD}/trees/bin/etc/protocols ${RD}/fixitfd/etc 608177633Sdfr @cp ${RD}/trees/bin/usr/share/misc/scsi_modes \ 609177633Sdfr ${RD}/fixitfd/usr/share/misc 610177633Sdfr @cp ${.CURDIR}/fixit.profile ${RD}/fixitfd/.profile 611177633Sdfr @cp ${.CURDIR}/fixit.services ${RD}/fixitfd/etc/services 612177633Sdfr @cp ${.CURDIR}/scripts/tar.sh ${RD}/fixitfd/stand/tar 613177633Sdfr @chmod 555 ${RD}/fixitfd/stand/tar 614177633Sdfr @sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/fixit.flp ${RD} \ 615177633Sdfr ${MNT} ${FIXITSIZE} ${RD}/fixitfd ${FIXITINODE} ${FIXITLABEL} 616177633Sdfr# Do our last minute floppies directory setup in a convenient place. 617177633Sdfr @cp ${.CURDIR}/texts/FLOPPIES.TXT ${RD}/floppies/README.TXT 618177633Sdfr @(cd ${RD}/floppies; md5 README.TXT *.flp > CHECKSUM.MD5) 619177633Sdfr touch release.9 620177633Sdfr 621177633Sdfr# 622177633Sdfr# --==## Setup a suitable ftp-area ##==-- 623177633Sdfr# 624177633Sdfrftp.1: 625177633Sdfr @echo "Setting up FTP distribution area" 626177633Sdfr @mkdir -p ${FD} 627177633Sdfr -@ln -s . ${FD}/${BUILDNAME} 628177633Sdfr @cd ${RD} && find floppies -print | cpio -dumpl ${FD} 629177633Sdfr @cd ${RD}/dists && find . -print | cpio -dumpl ${FD} 630177633Sdfr @for i in ${DIST_DOCS}; do \ 631177633Sdfr if [ -f ${.CURDIR}/texts/$${i} ]; then \ 632177633Sdfr cp ${.CURDIR}/texts/$${i} ${FD}; \ 633177633Sdfr fi; \ 634177633Sdfr if [ -f ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} ]; then \ 635177633Sdfr echo "=== Platform specifics for ${MACHINE_ARCH}" >> ${FD}/$${i}; \ 636177633Sdfr cat ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} >> ${FD}/$${i}; \ 637177633Sdfr fi; \ 638177633Sdfr done 639177633Sdfr @echo "CD_VERSION = ${BUILDNAME}" > ${FD}/cdrom.inf 640177633Sdfr.if !defined(NOPORTS) 641177633Sdfr @tar --exclude CVS -cBf - -C ${CD_DISC1} ports | tar -xBf - -C ${FD} 642177633Sdfr.endif 643177633Sdfr touch ftp.1 644177633Sdfr 645177633Sdfr# 646177633Sdfr# --==## Setup a suitable cdrom-area ##==-- 647177633Sdfr# 648177633Sdfrcdrom.1: 649177633Sdfr @echo "Setting up CDROM distribution area" 650177633Sdfr @mkdir -p ${CD_DISC1} ${CD_DISC2} 651177633Sdfr @cd ${RD} && find floppies -print | cpio -dumpl ${CD_DISC1} 652177633Sdfr @cd ${RD}/dists && find . -print | cpio -dumpl ${CD_DISC1} 653177633Sdfr @ln -f ${RD}/kernels/MFSKERNEL.boot ${CD_DISC1}/kernel 654177633Sdfr @for i in ${DISTRIBUTIONS} ; \ 655177633Sdfr do \ 656177633Sdfr if [ -d ${RD}/trees/$${i} ] ; then \ 657177633Sdfr chflags -R noschg ${RD}/trees/$${i} || true ; \ 658177633Sdfr ( cd ${RD}/trees/$${i} && \ 659177633Sdfr find . -depth -print | cpio -dumpl ${CD_DISC2} ) ; \ 660177633Sdfr fi \ 661177633Sdfr done 662177633Sdfr @rm -f ${CD_DISC2}/.profile 663177633Sdfr @cp ${.CURDIR}/fixit.profile ${CD_DISC2}/.profile 664177633Sdfr @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC1}/cdrom.inf 665177633Sdfr @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC2}/cdrom.inf 666177633Sdfr @for i in ${DIST_DOCS}; do \ 667177633Sdfr if [ -f ${.CURDIR}/texts/$${i} ]; then \ 668177633Sdfr cp ${.CURDIR}/texts/$${i} ${CD_DISC1}; \ 669177633Sdfr fi; \ 670177633Sdfr if [ -f ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} ]; then \ 671177633Sdfr echo "=== Platform specifics for ${MACHINE_ARCH}" >> ${CD_DISC1}/$${i}; \ 672177633Sdfr cat ${.CURDIR}/texts/${MACHINE_ARCH}/$${i} >> ${CD_DISC1}/$${i}; \ 673177633Sdfr fi; \ 674177633Sdfr done 675177633Sdfr.if ${MACHINE_ARCH} == "alpha" 676177633Sdfr @echo "Setting up Alpha CD disc1 for booting" 677177633Sdfr @cp -Rp ${RD}/image.boot/boot ${CD_DISC1} 678177633Sdfr @ln -f ${CD_DISC2}/boot/cdboot ${CD_DISC1}/boot 679177633Sdfr @ln -f ${CD_DISC1}/boot/loader.rc ${CD_DISC2}/boot 680177633Sdfr @ln -f ${CD_DISC1}/kernel ${CD_DISC2}/kernel 681177633Sdfr.endif 682177633Sdfr.if !defined(NOPORTS) 683177633Sdfr @-rm -rf /usr/ports/distfiles/* 684177633Sdfr @mkdir -p ${CD_DISC1}/ports && \ 685177633Sdfr tar --exclude CVS -czf ${CD_DISC1}/ports/ports.tgz -C /usr ports && \ 686177633Sdfr cp ${.CURDIR}/scripts/ports-install.sh ${CD_DISC1}/ports/install.sh \ 687177633Sdfr && (cd ${CD_DISC1}/ports; md5 * > CHECKSUM.MD5) 688177633Sdfr.endif 689177633Sdfr touch cdrom.1 690177633Sdfr 691177633Sdfrdoc.1: 692177633Sdfr @echo "Making docs..." 693177633Sdfr @for i in ${DOCPORTS}; do \ 694177633Sdfr cd /usr/ports/$$i && make all install clean JADETEX=no FORCE_PKG_REGISTER=yes; \ 695177633Sdfr done 696177633Sdfr @cd /usr/doc && make all install 'FORMATS=html html-split txt' INSTALL_COMPRESSED='' DOCDIR=${RD}/trees/bin/usr/share/doc 697177633Sdfr touch doc.1 698177633Sdfr 699177633Sdfr# Various "subroutine" and other supporting targets. 700177633Sdfr 701177633Sdfr# RD= 702177633Sdfr# SD= 703184588Sdfr# TD= 704177633Sdfr# ARG= 705177633SdfrdoTARBALL: 706177633Sdfr.if !defined(SD) 707177633Sdfr @echo "SD undefined in doTARBALL" && exit 1 708177633Sdfr.endif 709177633Sdfr.if !defined(TD) 710177633Sdfr @echo "TB undefined in doTARBALL" && exit 1 711177633Sdfr.endif 712177633Sdfr.if !defined(ARG) 713177633Sdfr @echo "ARG undefined in doTARBALL" && exit 1 714177633Sdfr.endif 715177633Sdfr @rm -rf ${RD}/dists/${TD}/${TN}* 716177633Sdfr @mkdir -p ${RD}/dists/${TD} 717177633Sdfr @( cd ${SD} && \ 718177633Sdfr tn=`echo ${TN} | tr '[A-Z]' '[a-z]' | cut -c1-8` && \ 719177633Sdfr echo rolling ${TD}/$$tn tarball &&\ 720177633Sdfr tar --exclude CVS --exclude obj --exclude BOOTMFS -cf - ${ARG} | \ 721177633Sdfr ${ZIPNSPLIT} ${RD}/dists/${TD}/$$tn. && \ 722177633Sdfr sh ${.CURDIR}/scripts/info.sh ${RD}/dists/${TD}/$$tn > \ 723177633Sdfr ${RD}/dists/${TD}/$$tn.inf && \ 724177633Sdfr if [ -f ${.CURDIR}/scripts/$${TD}-install.sh ]; then \ 725177633Sdfr cp -p ${.CURDIR}/scripts/$${TD}-install.sh ${RD}/dists/${TD}/install.sh; \ 726177633Sdfr fi && \ 727177633Sdfr if [ "${SD}" != "/usr/src" ]; then \ 728177633Sdfr mtree -c -i -p ${SD}/${ARG} \ 729177633Sdfr -k gname,md5digest,mode,nlink,uname,size,link,type \ 730177633Sdfr > ${RD}/dists/${TD}/$$tn.mtree ; \ 731177633Sdfr else \ 732177633Sdfr true; \ 733177633Sdfr fi; \ 734184588Sdfr (cd ${RD}/dists/${TD}; \ 735177633Sdfr rm -f CHECKSUM.MD5; \ 736177633Sdfr md5 * > CHECKSUM.MD5) \ 737180025Sdfr ) 738177633Sdfr 739177633SdfrdoRELEASE: release.1 release.2 ${DOCREL} release.3 release.4 release.5 \ 740177633Sdfr release.6 release.7 release.8 release.9 741184588Sdfr @cd ${.CURDIR} && ${MAKE} ${EXTRAS} 742184588Sdfr @echo "Release done" 743184588Sdfr 744184588Sdfrfloppies: 745184588Sdfr @cd ${.CURDIR} && ${MAKE} boot.flp 746184588Sdfr @cd ${.CURDIR} && ${MAKE} fixit.flp 747184588Sdfr @cd ${RD} && find floppies -print | cpio -dumpl ${FD} 748184588Sdfr 749184588Sdfrboot.flp: 750184588Sdfr @rm -f release.4 release.8 751184588Sdfr @cd ${.CURDIR} && ${MAKE} release.4 release.8 CRUNCH_TARGETS=boot 752184588Sdfr 753184588Sdfrfixit.flp: 754177633Sdfr @rm -f release.4 release.9 755193272Sjhb @cd ${.CURDIR} && ${MAKE} release.4 release.9 CRUNCH_TARGETS=fixit 756193272Sjhb 757193272Sjhbwrite_mfs_in_kernel: ${.CURDIR}/write_mfs_in_kernel.c 758177633Sdfr ${CC} ${CFLAGS} -o write_mfs_in_kernel ${.CURDIR}/write_mfs_in_kernel.c 759193272Sjhb 760193437SrmackleminstallCRUNCH: 761177633Sdfr.if !defined(CRUNCH) 762177633Sdfr @echo "CRUNCH undefined in installCRUNCH" && exit 1 763180025Sdfr.endif 764180025Sdfr.if !defined(DIR) 765180025Sdfr @echo "DIR undefined in installCRUNCH" && exit 1 766180025Sdfr.endif 767193272Sjhb.if !defined(ZIP) 768180025Sdfr @echo "ZIP undefined in installCRUNCH" && exit 1 769180025Sdfr.endif 770180025Sdfr @if ${ZIP} ; then \ 771180025Sdfr gzip -9 < ${RD}/crunch/${CRUNCH} > ${DIR}/${CRUNCH}_crunch ; \ 772180025Sdfr else \ 773177633Sdfr ln -f ${RD}/crunch/${CRUNCH} ${DIR}/${CRUNCH}_crunch ; \ 774180025Sdfr fi 775180025Sdfr @chmod 555 ${DIR}/${CRUNCH}_crunch 776184588Sdfr @if [ -f ${.CURDIR}/${MACHINE}/${CRUNCH}_crunch.conf ] ; then \ 777180025Sdfr for i in `crunchgen -l ${.CURDIR}/${MACHINE}/${CRUNCH}_crunch.conf` ; do \ 778184588Sdfr ln -f ${DIR}/${CRUNCH}_crunch ${DIR}/$$i ; \ 779184588Sdfr done \ 780184588Sdfr else \ 781184588Sdfr for i in `crunchgen -l ${.CURDIR}/${CRUNCH}_crunch.conf` ; do \ 782184588Sdfr ln -f ${DIR}/${CRUNCH}_crunch ${DIR}/$$i ; \ 783184588Sdfr done \ 784184588Sdfr fi 785184588Sdfr 786184588Sdfr# 787184588Sdfr# --==## BOOTMFS config file ##==-- 788184588Sdfr# 789184588Sdfr 790184588SdfrcreateBOOTMFS: 791184588Sdfr @cd ${.CURDIR}/../sys/${MACHINE}/conf && \ 792184588Sdfr sh ${.CURDIR}/scripts/dokern.sh ${FDSIZE} < ${KERNCONF} > BOOTMFS && \ 793184588Sdfr [ -r ${KERNCONF}.hints ] && cp ${KERNCONF}.hints BOOTMFS.hints 794184588Sdfr.if ${MACHINE_ARCH} == "i386" 795177633Sdfr @echo "options INTRO_USERCONFIG" >> \ 796177633Sdfr ${.CURDIR}/../sys/${MACHINE}/conf/BOOTMFS 797177633Sdfr.endif 798177633Sdfr.if defined(FDSIZE) && ${FDSIZE} == "BIG" 799177633Sdfr @echo "options MD_ROOT_SIZE=`cat mfsroot.size`" >> \ 800177633Sdfr ${.CURDIR}/../sys/${MACHINE}/conf/BOOTMFS 801177633Sdfr.endif 802177633Sdfr.if exists(${.CURDIR}/${MACHINE_ARCH}/drivers.conf) 803177633Sdfr @perl ${.CURDIR}/scripts/driver-remove.pl \ 804177633Sdfr ${.CURDIR}/${MACHINE_ARCH}/drivers.conf \ 805177633Sdfr ${.CURDIR}/../sys/${MACHINE}/conf/BOOTMFS 806177633Sdfr.endif 807177633Sdfr 808177633Sdfr# 809177633Sdfr# --==## Compile a kernel by name ${KERNEL} ##==-- 810177633Sdfr# 811177633Sdfr# We don't erase the sys/compile/${KERNEL} directory, since somebody 812177633Sdfr# may want to reuse it (release.8 presently) 813177633Sdfr# 814177633SdfrdoKERNEL: 815177633Sdfr @rm -f ${RD}/kernels/${KERNEL} 816177633Sdfr @cd ${.CURDIR}/../sys/${MACHINE}/conf && config ${KERNEL} 817177633Sdfr @cd ${.CURDIR}/../sys/compile/${KERNEL} && \ 818177633Sdfr make kernel-depend && \ 819177633Sdfr make ${KERNEL_FLAGS} ${KERNEL_KO} && \ 820177633Sdfr make kernel-reinstall DESTDIR=${RD}/kernels && \ 821177633Sdfr [ -r ${.CURDIR}/../sys/${MACHINE}/conf/${KERNEL}.hints ] && \ 822193272Sjhb cp ${.CURDIR}/../sys/${MACHINE}/conf/${KERNEL}.hints ${RD}/kernels 823177633Sdfr 824177633SdfrdoMODULES: 825177633Sdfr @rm -f ${RD}/kernels/*.ko 826177633Sdfr @cd ${.CURDIR}/../sys/${MACHINE}/conf && config ${KERNEL} 827177633Sdfr @cd ${.CURDIR}/../sys/compile/${KERNEL} && \ 828177633Sdfr make kernel-depend && \ 829177633Sdfr make ${KERNEL_FLAGS} modules && \ 830177633Sdfr make modules-reinstall DESTDIR=${RD}/kernels && \ 831184588Sdfr 832177633SdfrdoSTDKERNEL: 833193437Srmacklem @rm -f ${RD}/kernels/${KERNEL} 834177633Sdfr @cd ${.CURDIR}/../sys/${MACHINE}/conf && config ${KERNEL} 835177633Sdfr @cd ${.CURDIR}/../sys/compile/${KERNEL} && \ 836177633Sdfr make depend && \ 837177633Sdfr make ${KERNEL_FLAGS} KERNEL=${kernel} && \ 838177633Sdfr make KERNEL=${kernel} DESTDIR=${RD}/kernels install && \ 839177633Sdfr [ -r ${.CURDIR}/../sys/${MACHINE}/conf/${KERNEL}.hints ] && \ 840177633Sdfr cp ${.CURDIR}/../sys/${MACHINE}/conf/${KERNEL}.hints ${RD}/kernels 841177633Sdfr 842177633Sdfr# 843177633Sdfr# --==## Put a filesystem into a BOOTMFS kernel ##==-- 844177633Sdfr# 845177633SdfrdoMFSKERN: 846177633Sdfr @echo "Running doMFSKERN for ${FSIMAGE}" 847177633Sdfr @rm -f ${RD}/kernels/BOOTMFS.${FSIMAGE} 848177633Sdfr @cd ${.CURDIR} && ${MAKE} createBOOTMFS 849177633Sdfr @cd ${.CURDIR} && ${MAKE} doKERNEL KERNEL=BOOTMFS KERNEL_KO=BOOTMFS KODIR="" 850177633Sdfr @rm -rf ${RD}/image.${FSIMAGE} 851177633Sdfr @mkdir ${RD}/image.${FSIMAGE} 852177633Sdfr @cd ${RD}/kernels && \ 853177633Sdfr (chflags noschg BOOTMFS || true) && \ 854193437Srmacklem strip BOOTMFS && \ 855177633Sdfr cp BOOTMFS BOOTMFS.${FSIMAGE} && \ 856193272Sjhb [ -r BOOTMFS.hints ] && mv BOOTMFS.hints BOOTMFS.${FSIMAGE}.hints 857177633Sdfr mv ${RD}/kernels/BOOTMFS ${RD}/image.${FSIMAGE}/kernel 858177633Sdfr @echo "Setting up /boot directory for ${FSIMAGE} floppy" 859177633Sdfr @mkdir -p ${RD}/image.${FSIMAGE}/boot 860177633Sdfr @cp /boot/loader ${RD}/image.${FSIMAGE}/boot 861193272Sjhb @[ -r ${RD}/kernels/BOOTMFS.${FSIMAGE}.hints ] && \ 862177633Sdfr sed -e '/^hint/s/^/set /' -e '/^#/d' \ 863177633Sdfr ${RD}/kernels/BOOTMFS.${FSIMAGE}.hints > \ 864177633Sdfr ${RD}/image.${FSIMAGE}/boot/device.hints && \ 865177633Sdfr echo "include /boot/device.hints" > ${RD}/image.${FSIMAGE}/boot/loader.rc 866177633Sdfr @echo "load /kernel" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 867177633Sdfr.if !defined(FDSIZE) || ${FDSIZE} != "BIG" 868177633Sdfr @echo "echo \\007\\007" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 869177633Sdfr @echo "echo Please insert MFS root floppy and press enter:" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 870177633Sdfr @echo "read" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 871177633Sdfr @echo "load -t mfs_root /mfsroot" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 872177633Sdfr.endif 873177633Sdfr @echo "echo \\007\\007" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 874177633Sdfr @echo "autoboot 10" >> ${RD}/image.${FSIMAGE}/boot/loader.rc 875177633Sdfr.if ${MACHINE_ARCH} == "i386" && ${AUTO_KEYBOARD_DETECT} 876177633Sdfr @echo "-P" >> ${RD}/image.${FSIMAGE}/boot.config 877177633Sdfr.endif 878177633Sdfr.if defined(FDSIZE) && ${FDSIZE} == "BIG" 879177633Sdfr @echo "Writing MFS image into kernel for ${FSIMAGE} floppy" 880177633Sdfr @./write_mfs_in_kernel ${RD}/image.${FSIMAGE}/kernel mfsroot 881177633Sdfr @cp ${RD}/image.${FSIMAGE}/kernel ${RD}/kernels/MFSKERNEL.${FSIMAGE} 882177633Sdfr.endif 883177633Sdfr @gzip -9v ${RD}/image.${FSIMAGE}/kernel 884177633Sdfr @rm -f ${RD}/floppies/${FSIMAGE}.flp 885177633Sdfr.if defined(FDSIZE) && ${FDSIZE} == "BIG" 886177633Sdfr sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/${FSIMAGE}.flp \ 887177633Sdfr ${RD} ${MNT} ${BIGBOOTSIZE} ${RD}/image.${FSIMAGE} \ 888177633Sdfr ${BOOTINODE} ${BIGBOOTLABEL} 889184588Sdfr.elif defined(FDSIZE) && ${FDSIZE} == "SMALL" 890177633Sdfr sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/${FSIMAGE}.flp \ 891177633Sdfr ${RD} ${MNT} ${SMALLBOOTSIZE} ${RD}/image.${FSIMAGE} \ 892177633Sdfr ${BOOTINODE} ${SMALLBOOTLABEL} 893177633Sdfr.else 894177633Sdfr sh -e ${.CURDIR}/scripts/doFS.sh ${RD}/floppies/${FSIMAGE}.flp \ 895177633Sdfr ${RD} ${MNT} ${BOOTSIZE} ${RD}/image.${FSIMAGE} \ 896177633Sdfr ${BOOTINODE} ${BOOTLABEL} 897184588Sdfr.endif 898184588Sdfr @echo "Created ${RD}/floppies/${FSIMAGE}.flp" 899184588Sdfr 900184588Sdfr.include <bsd.prog.mk> 901184588Sdfr