| @@ -1,642 +1,642 @@ | | | @@ -1,642 +1,642 @@ |
1 | # $NetBSD: Makefile,v 1.368 2009/07/21 00:28:35 mrg Exp $ | | 1 | # $NetBSD: Makefile,v 1.369 2009/07/21 00:48:29 mrg Exp $ |
2 | # from: @(#)Makefile 8.7 (Berkeley) 5/25/95 | | 2 | # from: @(#)Makefile 8.7 (Berkeley) 5/25/95 |
3 | | | 3 | |
4 | # Environment variables without default values: | | 4 | # Environment variables without default values: |
5 | # DESTDIR must be set before anything in this file will work. | | 5 | # DESTDIR must be set before anything in this file will work. |
6 | # RELEASEDIR is where the tarred up stuff for a snapshot or | | 6 | # RELEASEDIR is where the tarred up stuff for a snapshot or |
7 | # release will be placed. | | 7 | # release will be placed. |
8 | # | | 8 | # |
9 | # Environment variables with default values: | | 9 | # Environment variables with default values: |
10 | # LOCALTIME will set the default local time for the system you | | 10 | # LOCALTIME will set the default local time for the system you |
11 | # build; it determines what /etc/localtime is symlink'd to. | | 11 | # build; it determines what /etc/localtime is symlink'd to. |
12 | # KERNSRCDIR points to kernel source; it is set by default to ../sys, | | 12 | # KERNSRCDIR points to kernel source; it is set by default to ../sys, |
13 | # but can be overridden. | | 13 | # but can be overridden. |
14 | # KERNOBJDIR is the kernel build directory, it defaults to | | 14 | # KERNOBJDIR is the kernel build directory, it defaults to |
15 | # ${KERNSRCDIR}/arch/${MACHINE}/compile, but can be overridden. | | 15 | # ${KERNSRCDIR}/arch/${MACHINE}/compile, but can be overridden. |
16 | # KERNCONFDIR is where the configuration files for kernels are found; | | 16 | # KERNCONFDIR is where the configuration files for kernels are found; |
17 | # default is ${KERNSRCDIR}/arch/${MACHINE}/conf but can be overridden. | | 17 | # default is ${KERNSRCDIR}/arch/${MACHINE}/conf but can be overridden. |
18 | # MKCRYPTO; if not `no', install crypto-related configuration | | 18 | # MKCRYPTO; if not `no', install crypto-related configuration |
19 | # MKPOSTFIX; if not `no', install postfix configuration | | 19 | # MKPOSTFIX; if not `no', install postfix configuration |
20 | # MKUNPRIVED; if not `no', allow non-root installs. | | 20 | # MKUNPRIVED; if not `no', allow non-root installs. |
21 | # MKUPDATE; if not `no', don't do a 'make clean' before kernel compile | | 21 | # MKUPDATE; if not `no', don't do a 'make clean' before kernel compile |
22 | # | | 22 | # |
23 | # Targets: | | 23 | # Targets: |
24 | # distribution: makes a full NetBSD distribution in DESTDIR. If | | 24 | # distribution: makes a full NetBSD distribution in DESTDIR. If |
25 | # INSTALL_DONE is set, it will not do a `make install.' | | 25 | # INSTALL_DONE is set, it will not do a `make install.' |
26 | # if DISTRIBUTION_DONE is set, it will not do anything. | | 26 | # if DISTRIBUTION_DONE is set, it will not do anything. |
27 | # distrib-dirs: creates an empty NetBSD directory tree in DESTDIR. | | 27 | # distrib-dirs: creates an empty NetBSD directory tree in DESTDIR. |
28 | # Called by distribution. | | 28 | # Called by distribution. |
29 | # snapshot: calls distribution, above, and then tars up the files | | 29 | # snapshot: calls distribution, above, and then tars up the files |
30 | # into a release(7) format in RELEASEDIR/${RELEASEMACHINEDIR}. | | 30 | # into a release(7) format in RELEASEDIR/${RELEASEMACHINEDIR}. |
31 | # Any port-dependent stuff for this target is found in | | 31 | # Any port-dependent stuff for this target is found in |
32 | # etc.${MACHINE}/Makefile.inc. | | 32 | # etc.${MACHINE}/Makefile.inc. |
33 | # release: a synonym for `snapshot' | | 33 | # release: a synonym for `snapshot' |
34 | # | | 34 | # |
35 | | | 35 | |
36 | # For MK* vars | | 36 | # For MK* vars |
37 | .include <bsd.own.mk> | | 37 | .include <bsd.own.mk> |
38 | | | 38 | |
39 | .include <bsd.sys.mk> # for HOST_SH, TOOL_AWK, ... | | 39 | .include <bsd.sys.mk> # for HOST_SH, TOOL_AWK, ... |
40 | .include <bsd.kernobj.mk> # For KERNSRCDIR, KERNOBJDIR, ... | | 40 | .include <bsd.kernobj.mk> # For KERNSRCDIR, KERNOBJDIR, ... |
41 | .include <bsd.endian.mk> # For TARGET_ENDIANNESS | | 41 | .include <bsd.endian.mk> # For TARGET_ENDIANNESS |
42 | | | 42 | |
43 | .MAKEOVERRIDES+= USETOOLS | | 43 | .MAKEOVERRIDES+= USETOOLS |
44 | | | 44 | |
45 | TZDIR= /usr/share/zoneinfo | | 45 | TZDIR= /usr/share/zoneinfo |
46 | LOCALTIME?= UTC | | 46 | LOCALTIME?= UTC |
47 | CKSUM?= ${TOOL_CKSUM} | | 47 | CKSUM?= ${TOOL_CKSUM} |
48 | MAKESUMS= MAKE=${MAKE:Q} CKSUM=${CKSUM:Q} ${HOST_SH} ${NETBSDSRCDIR}/distrib/sets/makesums | | 48 | MAKESUMS= MAKE=${MAKE:Q} CKSUM=${CKSUM:Q} ${HOST_SH} ${NETBSDSRCDIR}/distrib/sets/makesums |
49 | DISTRIBVER!= ${HOST_SH} ${NETBSDSRCDIR}/sys/conf/osrelease.sh | | 49 | DISTRIBVER!= ${HOST_SH} ${NETBSDSRCDIR}/sys/conf/osrelease.sh |
50 | | | 50 | |
51 | # Flags for creating ISO CDROM image | | 51 | # Flags for creating ISO CDROM image |
52 | # mkisofs is expected to be in $PATH, install via pkgsrc/sysutils/cdrtools | | 52 | # mkisofs is expected to be in $PATH, install via pkgsrc/sysutils/cdrtools |
53 | # Note: At least mkisofs 2.0 should be used. | | 53 | # Note: At least mkisofs 2.0 should be used. |
54 | # | | 54 | # |
55 | .if !defined(MKISOFS) | | 55 | .if !defined(MKISOFS) |
56 | MKISOFS!= (which mkisofs || echo true) | | 56 | MKISOFS!= (which mkisofs || echo true) |
57 | .endif | | 57 | .endif |
58 | DISTRIBREV!= ${HOST_SH} ${KERNSRCDIR}/conf/osrelease.sh -s | | 58 | DISTRIBREV!= ${HOST_SH} ${KERNSRCDIR}/conf/osrelease.sh -s |
59 | # ISO 9660 volume ID. Note that this can only contain [A-Z0-9_]. | | 59 | # ISO 9660 volume ID. Note that this can only contain [A-Z0-9_]. |
60 | ISO_VOLID!= echo NETBSD_${DISTRIBREV} | tr a-z A-Z | | 60 | ISO_VOLID!= echo NETBSD_${DISTRIBREV} | tr a-z A-Z |
61 | MKISOFS_FLAGS+= -J -l -hide-joliet-trans-tbl -r -T \ | | 61 | MKISOFS_FLAGS+= -J -l -hide-joliet-trans-tbl -r -T \ |
62 | -V ${ISO_VOLID} \ | | 62 | -V ${ISO_VOLID} \ |
63 | -publisher "The NetBSD Project" \ | | 63 | -publisher "The NetBSD Project" \ |
64 | -m "${RELEASEDIR}/${RELEASEMACHINEDIR}/installation/cdrom" | | 64 | -m "${RELEASEDIR}/${RELEASEMACHINEDIR}/installation/cdrom" |
65 | .if ${MKISOFS_FLAGS:N-v} | | 65 | .if ${MKISOFS_FLAGS:N-v} |
66 | MKISOFS_FLAGS+= -quiet | | 66 | MKISOFS_FLAGS+= -quiet |
67 | .endif | | 67 | .endif |
68 | | | 68 | |
69 | | | 69 | |
70 | # MD Makefile.inc may append MD targets to BIN[123]. Make sure all | | 70 | # MD Makefile.inc may append MD targets to BIN[123]. Make sure all |
71 | # are empty, to preserve the old semantics of setting them below with "+=". | | 71 | # are empty, to preserve the old semantics of setting them below with "+=". |
72 | # | | 72 | # |
73 | BIN1= | | 73 | BIN1= |
74 | BIN2= | | 74 | BIN2= |
75 | BIN3= | | 75 | BIN3= |
76 | | | 76 | |
77 | # Directories to build in ${RELEASEDIR}/${RELEASEMACHINEDIR}. | | 77 | # Directories to build in ${RELEASEDIR}/${RELEASEMACHINEDIR}. |
78 | # MD Makefile.inc files can add to this. | | 78 | # MD Makefile.inc files can add to this. |
79 | # NOTE: Parent directories must be listed before subdirectories. | | 79 | # NOTE: Parent directories must be listed before subdirectories. |
80 | # | | 80 | # |
81 | INSTALLATION_DIRS= binary binary/sets binary/kernel installation | | 81 | INSTALLATION_DIRS= binary binary/sets binary/kernel installation |
82 | | | 82 | |
83 | .if exists(etc.${RELEASEMACHINE}/Makefile.inc) | | 83 | .if exists(etc.${RELEASEMACHINE}/Makefile.inc) |
84 | .include "etc.${RELEASEMACHINE}/Makefile.inc" | | 84 | .include "etc.${RELEASEMACHINE}/Makefile.inc" |
85 | .endif | | 85 | .endif |
86 | | | 86 | |
87 | # -rw-r--r-- | | 87 | # -rw-r--r-- |
88 | BINOWN= root | | 88 | BINOWN= root |
89 | BINGRP= wheel | | 89 | BINGRP= wheel |
90 | UTMPGRP= utmp | | 90 | UTMPGRP= utmp |
91 | BIN1+= bootptab changelist csh.cshrc csh.login \ | | 91 | BIN1+= bootptab changelist csh.cshrc csh.login \ |
92 | csh.logout daily daily.conf dm.conf envsys.conf floppytab ftpchroot \ | | 92 | csh.logout daily daily.conf dm.conf envsys.conf floppytab ftpchroot \ |
93 | ftpusers gettytab group hosts hosts.lpd inetd.conf \ | | 93 | ftpusers gettytab group hosts hosts.lpd inetd.conf \ |
94 | locate.conf login.conf mailer.conf man.conf monthly monthly.conf \ | | 94 | locate.conf login.conf mailer.conf man.conf monthly monthly.conf \ |
95 | mrouted.conf named.conf netconfig networks newsyslog.conf \ | | 95 | mrouted.conf named.conf netconfig networks newsyslog.conf \ |
96 | nsswitch.conf ntp.conf passwd.conf phones printcap profile protocols \ | | 96 | nsswitch.conf ntp.conf passwd.conf phones printcap profile protocols \ |
97 | rbootd.conf rc rc.conf rc.local rc.subr rc.shutdown remote rpc \ | | 97 | rbootd.conf rc rc.conf rc.local rc.subr rc.shutdown remote rpc \ |
98 | security security.conf services shells shrc sysctl.conf syslog.conf \ | | 98 | security security.conf services shells shrc sysctl.conf syslog.conf \ |
99 | weekly weekly.conf wscons.conf | | 99 | weekly weekly.conf wscons.conf |
100 | | | 100 | |
101 | # Use machine-specific disktab if it exists, or the MI one otherwise | | 101 | # Use machine-specific disktab if it exists, or the MI one otherwise |
102 | .if exists(etc.${MACHINE}/disktab) | | 102 | .if exists(etc.${MACHINE}/disktab) |
103 | BIN1+= etc.${MACHINE}/disktab | | 103 | BIN1+= etc.${MACHINE}/disktab |
104 | .else | | 104 | .else |
105 | BIN1+= disktab | | 105 | BIN1+= disktab |
106 | .endif | | 106 | .endif |
107 | | | 107 | |
108 | .if exists(etc.${MACHINE}/ld.so.conf) | | 108 | .if exists(etc.${MACHINE}/ld.so.conf) |
109 | BIN1+= etc.${MACHINE}/ld.so.conf | | 109 | BIN1+= etc.${MACHINE}/ld.so.conf |
110 | .endif | | 110 | .endif |
111 | | | 111 | |
112 | .if exists(etc.${MACHINE}/ttyaction) | | 112 | .if exists(etc.${MACHINE}/ttyaction) |
113 | BIN1+= etc.${MACHINE}/ttyaction | | 113 | BIN1+= etc.${MACHINE}/ttyaction |
114 | .endif | | 114 | .endif |
115 | | | 115 | |
116 | # -rw-rw-r-- | | 116 | # -rw-rw-r-- |
117 | .if !empty(DISTRIBVER:M*.99.*) | | 117 | .if !empty(DISTRIBVER:M*.99.*) |
118 | BIN2+= motd.current | | 118 | BIN2+= motd.current |
119 | FILESNAME_motd.current= motd | | 119 | FILESNAME_motd.current= motd |
120 | .elif !empty(DISTRIBVER:M*BETA*) | | 120 | .elif !empty(DISTRIBVER:M*BETA*) |
121 | BIN2+= motd.beta | | 121 | BIN2+= motd.beta |
122 | FILESNAME_motd.beta= motd | | 122 | FILESNAME_motd.beta= motd |
123 | .elif !empty(DISTRIBVER:M*RC*) | | 123 | .elif !empty(DISTRIBVER:M*RC*) |
124 | BIN2+= motd.rc | | 124 | BIN2+= motd.rc |
125 | FILESNAME_motd.rc= motd | | 125 | FILESNAME_motd.rc= motd |
126 | .elif !empty(DISTRIBVER:M*STABLE*) | | 126 | .elif !empty(DISTRIBVER:M*STABLE*) |
127 | BIN2+= motd.stable | | 127 | BIN2+= motd.stable |
128 | FILESNAME_motd.stable= motd | | 128 | FILESNAME_motd.stable= motd |
129 | .else | | 129 | .else |
130 | BIN2+= motd | | 130 | BIN2+= motd |
131 | .endif | | 131 | .endif |
132 | | | 132 | |
133 | # -rw------- | | 133 | # -rw------- |
134 | BIN3+= hosts.equiv | | 134 | BIN3+= hosts.equiv |
135 | | | 135 | |
136 | SYSPKG= etc | | 136 | SYSPKG= etc |
137 | ETC_PKG=-T etc_pkg | | 137 | ETC_PKG=-T etc_pkg |
138 | BASE_PKG=-T base_pkg | | 138 | BASE_PKG=-T base_pkg |
139 | ETC_INSTALL_FILE=cd ${.CURDIR} && ${INSTALL_FILE} ${ETC_PKG} | | 139 | ETC_INSTALL_FILE=cd ${.CURDIR} && ${INSTALL_FILE} ${ETC_PKG} |
140 | ETC_INSTALL_OBJ_FILE=cd ${.OBJDIR} && ${INSTALL_FILE} ${ETC_PKG} | | 140 | ETC_INSTALL_OBJ_FILE=cd ${.OBJDIR} && ${INSTALL_FILE} ${ETC_PKG} |
141 | | | 141 | |
142 | .if ${TARGET_ENDIANNESS} == "1234" | | 142 | .if ${TARGET_ENDIANNESS} == "1234" |
143 | PWD_MKDB_ENDIAN= -L | | 143 | PWD_MKDB_ENDIAN= -L |
144 | .elif ${TARGET_ENDIANNESS} == "4321" | | 144 | .elif ${TARGET_ENDIANNESS} == "4321" |
145 | PWD_MKDB_ENDIAN= -B | | 145 | PWD_MKDB_ENDIAN= -B |
146 | .else | | 146 | .else |
147 | PWD_MKDB_ENDIAN= | | 147 | PWD_MKDB_ENDIAN= |
148 | .endif | | 148 | .endif |
149 | | | 149 | |
150 | | | 150 | |
151 | # distribution -- | | 151 | # distribution -- |
152 | # Build a distribution | | 152 | # Build a distribution |
153 | # | | 153 | # |
154 | distribution: .PHONY .MAKE check_DESTDIR distrib-dirs | | 154 | distribution: .PHONY .MAKE check_DESTDIR distrib-dirs |
155 | .if !defined(DISTRIBUTION_DONE) | | 155 | .if !defined(DISTRIBUTION_DONE) |
156 | .if !defined(INSTALL_DONE) | | 156 | .if !defined(INSTALL_DONE) |
157 | ${MAKEDIRTARGET} ${NETBSDSRCDIR} include _DISTRIB= | | 157 | ${MAKEDIRTARGET} ${NETBSDSRCDIR} include _DISTRIB= |
158 | ${MAKEDIRTARGET} ${NETBSDSRCDIR} install _DISTRIB= | | 158 | ${MAKEDIRTARGET} ${NETBSDSRCDIR} install _DISTRIB= |
159 | .endif # !INSTALL_DONE | | 159 | .endif # !INSTALL_DONE |
160 | ${MAKEDIRTARGET} . install-etc-files | | 160 | ${MAKEDIRTARGET} . install-etc-files |
161 | . if ${MKX11} != "no" | | 161 | . if ${MKX11} != "no" |
162 | . if ${X11FLAVOUR} == "Xorg" | | 162 | . if ${X11FLAVOUR} == "Xorg" |
163 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/external/mit/xorg distribution | | 163 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/external/mit/xorg distribution |
164 | . else | | 164 | . else |
165 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/x11 distribution | | 165 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/x11 distribution |
166 | . endif | | 166 | . endif |
167 | . endif | | 167 | . endif |
168 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/distrib/sets makesetfiles | | 168 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/distrib/sets makesetfiles |
169 | .endif # !DISTRIBUTION_DONE | | 169 | .endif # !DISTRIBUTION_DONE |
170 | | | 170 | |
171 | | | 171 | |
172 | CLEANFILES+= MAKEDEV | | 172 | CLEANFILES+= MAKEDEV |
173 | MAKEDEV: .EXEC | | 173 | MAKEDEV: .EXEC |
174 | ${_MKTARGET_CREATE} | | 174 | ${_MKTARGET_CREATE} |
175 | MACHINE=${MACHINE:Q} MACHINE_ARCH=${MACHINE_ARCH:Q} \ | | 175 | MACHINE=${MACHINE:Q} MACHINE_ARCH=${MACHINE_ARCH:Q} \ |
176 | NETBSDSRCDIR=${NETBSDSRCDIR:Q} \ | | 176 | NETBSDSRCDIR=${NETBSDSRCDIR:Q} \ |
177 | ${TOOL_AWK} -f ${.CURDIR}/MAKEDEV.awk ${.CURDIR}/MAKEDEV.tmpl \ | | 177 | ${TOOL_AWK} -f ${.CURDIR}/MAKEDEV.awk ${.CURDIR}/MAKEDEV.tmpl \ |
178 | > ${.TARGET} | | 178 | > ${.TARGET} |
179 | | | 179 | |
180 | RELEASEVARS= BSDOBJDIR BSDSRCDIR BUILDID \ | | 180 | RELEASEVARS= BSDOBJDIR BSDSRCDIR BUILDID \ |
181 | DESTDIR EXTERNAL_TOOLCHAIN HAVE_GCC HAVE_GDB \ | | 181 | DESTDIR EXTERNAL_TOOLCHAIN HAVE_GCC HAVE_GDB \ |
182 | INSTALLWORLDDIR \ | | 182 | INSTALLWORLDDIR \ |
183 | KERNARCHDIR KERNCONFDIR KERNOBJDIR KERNSRCDIR \ | | 183 | KERNARCHDIR KERNCONFDIR KERNOBJDIR KERNSRCDIR \ |
184 | MACHINE MACHINE_ARCH MAKE MAKECONF MAKEFLAGS \ | | 184 | MACHINE MACHINE_ARCH MAKE MAKECONF MAKEFLAGS \ |
185 | MAKEOBJDIR MAKEOBJDIRPREFIX MAKEVERBOSE \ | | 185 | MAKEOBJDIR MAKEOBJDIRPREFIX MAKEVERBOSE \ |
186 | MKBFD MKCATPAGES \ | | 186 | MKBFD MKCATPAGES \ |
187 | MKCRYPTO MKCRYPTO_IDEA MKCRYPTO_MDC2 MKCRYPTO_RC5 MKCVS \ | | 187 | MKCRYPTO MKCRYPTO_IDEA MKCRYPTO_MDC2 MKCRYPTO_RC5 MKCVS \ |
188 | MKDEBUG MKDEBUGLIB MKDOC MKDYNAMICROOT \ | | 188 | MKDEBUG MKDEBUGLIB MKDOC MKDYNAMICROOT \ |
189 | MKGCC MKGCCCMDS MKGDB \ | | 189 | MKGCC MKGCCCMDS MKGDB \ |
190 | MKHESIOD MKHOSTOBJ MKHTML MKIEEEFP MKINET6 MKINFO MKIPFILTER \ | | 190 | MKHESIOD MKHOSTOBJ MKHTML MKIEEEFP MKINET6 MKINFO MKIPFILTER \ |
191 | MKKERBEROS MKLDAP MKLINKLIB MKLINT \ | | 191 | MKKERBEROS MKLDAP MKLINKLIB MKLINT \ |
192 | MKMAN MKMANZ MKNLS MKNVI MKOBJ MKOBJDIRS \ | | 192 | MKMAN MKMANZ MKNLS MKNVI MKOBJ MKOBJDIRS \ |
193 | MKPAM MKPF MKPIC MKPICINSTALL MKPICLIB MKPOSTFIX MKPROFILE \ | | 193 | MKPAM MKPF MKPIC MKPICINSTALL MKPICLIB MKPOSTFIX MKPROFILE \ |
194 | MKSHARE MKSKEY MKSOFTFLOAT MKSTATICLIB \ | | 194 | MKSHARE MKSKEY MKSOFTFLOAT MKSTATICLIB \ |
195 | MKUNPRIVED MKUPDATE MKX11 MKYP \ | | 195 | MKUNPRIVED MKUPDATE MKX11 MKYP \ |
196 | NBUILDJOBS NETBSDSRCDIR \ | | 196 | NBUILDJOBS NETBSDSRCDIR \ |
197 | NOCLEANDIR NODISTRIBDIRS NOINCLUDES \ | | 197 | NOCLEANDIR NODISTRIBDIRS NOINCLUDES \ |
198 | OBJMACHINE \ | | 198 | OBJMACHINE \ |
199 | RELEASEDIR RELEASEMACHINEDIR TOOLCHAIN_MISSING TOOLDIR \ | | 199 | RELEASEDIR RELEASEMACHINEDIR TOOLCHAIN_MISSING TOOLDIR \ |
200 | USE_HESIOD USE_INET6 USE_JEMALLOC USE_KERBEROS USE_LDAP \ | | 200 | USE_HESIOD USE_INET6 USE_JEMALLOC USE_KERBEROS USE_LDAP \ |
201 | USE_PAM USE_SKEY USE_YP \ | | 201 | USE_PAM USE_SKEY USE_YP \ |
202 | USETOOLS USR_OBJMACHINE \ | | 202 | USETOOLS USR_OBJMACHINE \ |
203 | X11SRCDIR X11FLAVOUR | | 203 | X11SRCDIR X11FLAVOUR |
204 | | | 204 | |
205 | params: .PHONY | | 205 | params: .PHONY |
206 | .for var in ${RELEASEVARS} | | 206 | .for var in ${RELEASEVARS} |
207 | .if defined(${var}) | | 207 | .if defined(${var}) |
208 | @printf "%20s = '%-s'\n" ${var} ${${var}:Q} | | 208 | @printf "%20s = '%-s'\n" ${var} ${${var}:Q} |
209 | .else | | 209 | .else |
210 | @printf "%20s = (undefined)\n" ${var} | | 210 | @printf "%20s = (undefined)\n" ${var} |
211 | .endif | | 211 | .endif |
212 | .endfor | | 212 | .endfor |
213 | | | 213 | |
214 | CLEANFILES+= etc-release | | 214 | CLEANFILES+= etc-release |
215 | etc-release: .EXEC .MAKE | | 215 | etc-release: .EXEC .MAKE |
216 | ${_MKTARGET_CREATE} | | 216 | ${_MKTARGET_CREATE} |
217 | @( echo "NetBSD ${DISTRIBVER}/${MACHINE}"; \ | | 217 | @( echo "NetBSD ${DISTRIBVER}/${MACHINE}"; \ |
218 | echo ; \ | | 218 | echo ; \ |
219 | cat ${NETBSDSRCDIR}/sys/conf/copyright; \ | | 219 | cat ${NETBSDSRCDIR}/sys/conf/copyright; \ |
220 | echo ; \ | | 220 | echo ; \ |
221 | echo "Build settings:"; \ | | 221 | echo "Build settings:"; \ |
222 | printf "%20s %s\n" "Build date" "$$(date -u)"; \ | | 222 | printf "%20s %s\n" "Build date" "$$(date -u)"; \ |
223 | printf "%20s %s\n" "Built by" "$${USER-root}@$$(hostname)"; \ | | 223 | printf "%20s %s\n" "Built by" "$${USER-root}@$$(hostname)"; \ |
224 | echo ; \ | | 224 | echo ; \ |
225 | (cd ${.CURDIR}; ${MAKE} ${MFLAGS} -j1 params); \ | | 225 | (cd ${.CURDIR}; ${MAKE} ${MFLAGS} -j1 params); \ |
226 | ) >${.OBJDIR}/${.TARGET} | | 226 | ) >${.OBJDIR}/${.TARGET} |
227 | | | 227 | |
228 | install-etc-release: .PHONY etc-release | | 228 | install-etc-release: .PHONY etc-release |
229 | ${_MKMSG_INSTALL} etc/release | | 229 | ${_MKMSG_INSTALL} etc/release |
230 | ${ETC_INSTALL_OBJ_FILE} -o ${BINOWN} -g ${BINGRP} -m 444 \ | | 230 | ${ETC_INSTALL_OBJ_FILE} -o ${BINOWN} -g ${BINGRP} -m 444 \ |
231 | etc-release ${DESTDIR}/etc/release | | 231 | etc-release ${DESTDIR}/etc/release |
232 | | | 232 | |
233 | | | 233 | |
234 | FILESDIR= /etc | | 234 | FILESDIR= /etc |
235 | CONFIGFILES= | | 235 | CONFIGFILES= |
236 | CONFIGSYMLINKS= | | 236 | CONFIGSYMLINKS= |
237 | | | 237 | |
238 | .for file in ${BIN1} | | 238 | .for file in ${BIN1} |
239 | CONFIGFILES+= ${file} | | 239 | CONFIGFILES+= ${file} |
240 | FILESMODE_${file:T}= 644 | | 240 | FILESMODE_${file:T}= 644 |
241 | .endfor | | 241 | .endfor |
242 | | | 242 | |
243 | .for file in ${BIN2} | | 243 | .for file in ${BIN2} |
244 | CONFIGFILES+= ${file} | | 244 | CONFIGFILES+= ${file} |
245 | FILESMODE_${file:T}= 664 | | 245 | FILESMODE_${file:T}= 664 |
246 | .endfor | | 246 | .endfor |
247 | | | 247 | |
248 | .for file in ${BIN3} | | 248 | .for file in ${BIN3} |
249 | CONFIGFILES+= ${file} | | 249 | CONFIGFILES+= ${file} |
250 | FILESMODE_${file:T}= 600 | | 250 | FILESMODE_${file:T}= 600 |
251 | .endfor | | 251 | .endfor |
252 | | | 252 | |
253 | .if (${MKPOSTFIX} != "no") | | 253 | .if (${MKPOSTFIX} != "no") |
254 | CONFIGFILES+= aliases | | 254 | CONFIGFILES+= aliases |
255 | FILESDIR_aliases= /etc/mail | | 255 | FILESDIR_aliases= /etc/mail |
256 | FILESMODE_aliases= 644 | | 256 | FILESMODE_aliases= 644 |
257 | .endif | | 257 | .endif |
258 | | | 258 | |
259 | CONFIGFILES+= MAKEDEV.local | | 259 | CONFIGFILES+= MAKEDEV.local |
260 | FILESDIR_MAKEDEV.local= /dev | | 260 | FILESDIR_MAKEDEV.local= /dev |
261 | FILESMODE_MAKEDEV.local=${BINMODE} | | 261 | FILESMODE_MAKEDEV.local=${BINMODE} |
262 | | | 262 | |
263 | CONFIGFILES+= crontab | | 263 | CONFIGFILES+= crontab |
264 | FILESDIR_crontab= /var/cron/tabs | | 264 | FILESDIR_crontab= /var/cron/tabs |
265 | FILESNAME_crontab= root | | 265 | FILESNAME_crontab= root |
266 | FILESMODE_crontab= 600 | | 266 | FILESMODE_crontab= 600 |
267 | | | 267 | |
268 | CONFIGFILES+= minfree | | 268 | CONFIGFILES+= minfree |
269 | FILESDIR_minfree= /var/crash | | 269 | FILESDIR_minfree= /var/crash |
270 | FILESMODE_minfree= 600 | | 270 | FILESMODE_minfree= 600 |
271 | | | 271 | |
272 | CONFIGSYMLINKS+= ${TZDIR}/${LOCALTIME} /etc/localtime \ | | 272 | CONFIGSYMLINKS+= ${TZDIR}/${LOCALTIME} /etc/localtime \ |
273 | /usr/sbin/rmt /etc/rmt | | 273 | /usr/sbin/rmt /etc/rmt |
274 | | | 274 | |
275 | | | 275 | |
276 | # install-etc-files -- | | 276 | # install-etc-files -- |
277 | # Install etc (config) files; not performed by "make build" | | 277 | # Install etc (config) files; not performed by "make build" |
278 | # | | 278 | # |
279 | install-etc-files: .PHONY .MAKE check_DESTDIR MAKEDEV | | 279 | install-etc-files: .PHONY .MAKE check_DESTDIR MAKEDEV |
280 | ${_MKMSG_INSTALL} ${DESTDIR}/etc/master.passwd | | 280 | ${_MKMSG_INSTALL} ${DESTDIR}/etc/master.passwd |
281 | ${ETC_INSTALL_FILE} -o root -g wheel -m 600 \ | | 281 | ${ETC_INSTALL_FILE} -o root -g wheel -m 600 \ |
282 | master.passwd ${DESTDIR}/etc | | 282 | master.passwd ${DESTDIR}/etc |
283 | ${TOOL_PWD_MKDB} -p ${PWD_MKDB_ENDIAN} -d ${DESTDIR}/ \ | | 283 | ${TOOL_PWD_MKDB} -p ${PWD_MKDB_ENDIAN} -d ${DESTDIR}/ \ |
284 | ${DESTDIR}/etc/master.passwd | | 284 | ${DESTDIR}/etc/master.passwd |
285 | .if ${MKUNPRIVED} != "no" | | 285 | .if ${MKUNPRIVED} != "no" |
286 | ( \ | | 286 | ( \ |
287 | for metaent in passwd pwd.db spwd.db; do \ | | 287 | for metaent in passwd pwd.db spwd.db; do \ |
288 | echo "./etc/$${metaent} type=file mode=0644 uname=root gname=wheel tags=etc_pkg"; \ | | 288 | echo "./etc/$${metaent} type=file mode=0644 uname=root gname=wheel tags=etc_pkg"; \ |
289 | done; \ | | 289 | done; \ |
290 | ) | ${METALOG.add} | | 290 | ) | ${METALOG.add} |
291 | .endif # MKUNPRIVED != no | | 291 | .endif # MKUNPRIVED != no |
292 | ${_MKMSG_INSTALL} ${DESTDIR}/etc/ttys | | 292 | ${_MKMSG_INSTALL} ${DESTDIR}/etc/ttys |
293 | ${ETC_INSTALL_OBJ_FILE} -o ${BINOWN} -g ${BINGRP} -m 644 \ | | 293 | ${ETC_INSTALL_OBJ_FILE} -o ${BINOWN} -g ${BINGRP} -m 644 \ |
294 | ${.CURDIR}/etc.${MACHINE}/ttys ${DESTDIR}/etc | | 294 | ${.CURDIR}/etc.${MACHINE}/ttys ${DESTDIR}/etc |
295 | .if exists(etc.${MACHINE}/boot.cfg) | | 295 | .if exists(etc.${MACHINE}/boot.cfg) |
296 | ${_MKMSG_INSTALL} ${DESTDIR}/boot.cfg | | 296 | ${_MKMSG_INSTALL} ${DESTDIR}/boot.cfg |
297 | ${ETC_INSTALL_OBJ_FILE} -o ${BINOWN} -g ${BINGRP} -m 644 \ | | 297 | ${ETC_INSTALL_OBJ_FILE} -o ${BINOWN} -g ${BINGRP} -m 644 \ |
298 | ${.CURDIR}/etc.${MACHINE}/boot.cfg ${DESTDIR}/ | | 298 | ${.CURDIR}/etc.${MACHINE}/boot.cfg ${DESTDIR}/ |
299 | .endif | | 299 | .endif |
300 | ${_MKMSG_INSTALL} ${DESTDIR}/dev/MAKEDEV | | 300 | ${_MKMSG_INSTALL} ${DESTDIR}/dev/MAKEDEV |
301 | ${ETC_INSTALL_OBJ_FILE} -o ${BINOWN} -g ${BINGRP} -m 555 \ | | 301 | ${ETC_INSTALL_OBJ_FILE} -o ${BINOWN} -g ${BINGRP} -m 555 \ |
302 | MAKEDEV ${DESTDIR}/dev | | 302 | MAKEDEV ${DESTDIR}/dev |
303 | .for owner group mode file in \ | | 303 | .for owner group mode file in \ |
304 | ${BINOWN} operator 664 /etc/dumpdates \ | | 304 | ${BINOWN} operator 664 /etc/dumpdates \ |
305 | ${BINOWN} operator 600 /etc/skeykeys \ | | 305 | ${BINOWN} operator 600 /etc/skeykeys \ |
306 | root wheel 600 /var/at/at.deny \ | | 306 | root wheel 600 /var/at/at.deny \ |
307 | nobody ${BINGRP} 664 /var/db/locate.database \ | | 307 | nobody ${BINGRP} 664 /var/db/locate.database \ |
308 | ${BINOWN} ${BINGRP} 600 /var/log/authlog \ | | 308 | ${BINOWN} ${BINGRP} 600 /var/log/authlog \ |
309 | root wheel 600 /var/log/cron \ | | 309 | root wheel 600 /var/log/cron \ |
310 | ${BINOWN} ${UTMPGRP} 664 /var/log/lastlog \ | | 310 | ${BINOWN} ${UTMPGRP} 664 /var/log/lastlog \ |
311 | ${BINOWN} ${UTMPGRP} 664 /var/log/lastlogx \ | | 311 | ${BINOWN} ${UTMPGRP} 664 /var/log/lastlogx \ |
312 | ${BINOWN} ${BINGRP} 640 /var/log/lpd-errs \ | | 312 | ${BINOWN} ${BINGRP} 640 /var/log/lpd-errs \ |
313 | ${BINOWN} ${BINGRP} 600 /var/log/maillog \ | | 313 | ${BINOWN} ${BINGRP} 600 /var/log/maillog \ |
314 | ${BINOWN} ${BINGRP} 644 /var/log/messages \ | | 314 | ${BINOWN} ${BINGRP} 644 /var/log/messages \ |
315 | ${BINOWN} ${BINGRP} 600 /var/log/secure \ | | 315 | ${BINOWN} ${BINGRP} 600 /var/log/secure \ |
316 | ${BINOWN} ${UTMPGRP} 664 /var/log/wtmp \ | | 316 | ${BINOWN} ${UTMPGRP} 664 /var/log/wtmp \ |
317 | ${BINOWN} ${UTMPGRP} 664 /var/log/wtmpx \ | | 317 | ${BINOWN} ${UTMPGRP} 664 /var/log/wtmpx \ |
318 | ${BINOWN} ${BINGRP} 600 /var/log/xferlog \ | | 318 | ${BINOWN} ${BINGRP} 600 /var/log/xferlog \ |
319 | daemon staff 664 /var/msgs/bounds \ | | 319 | daemon staff 664 /var/msgs/bounds \ |
320 | ${BINOWN} ${UTMPGRP} 664 /var/run/utmp \ | | 320 | ${BINOWN} ${UTMPGRP} 664 /var/run/utmp \ |
321 | ${BINOWN} ${UTMPGRP} 664 /var/run/utmpx \ | | 321 | ${BINOWN} ${UTMPGRP} 664 /var/run/utmpx \ |
322 | games games 664 /var/games/atc_score \ | | 322 | games games 664 /var/games/atc_score \ |
323 | games games 664 /var/games/battlestar.log \ | | 323 | games games 664 /var/games/battlestar.log \ |
324 | games games 664 /var/games/cfscores \ | | 324 | games games 664 /var/games/cfscores \ |
325 | games games 664 /var/games/criblog \ | | 325 | games games 664 /var/games/criblog \ |
326 | games games 660 /var/games/hackdir/perm \ | | 326 | games games 660 /var/games/hackdir/perm \ |
327 | games games 660 /var/games/hackdir/record \ | | 327 | games games 660 /var/games/hackdir/record \ |
328 | games games 664 /var/games/larn/llog12.0 \ | | 328 | games games 664 /var/games/larn/llog12.0 \ |
329 | games games 664 /var/games/larn/lscore12.0 \ | | 329 | games games 664 /var/games/larn/lscore12.0 \ |
330 | games games 664 /var/games/larn/playerids \ | | 330 | games games 664 /var/games/larn/playerids \ |
331 | games games 664 /var/games/robots_roll \ | | 331 | games games 664 /var/games/robots_roll \ |
332 | games games 664 /var/games/rogue.scores \ | | 332 | games games 664 /var/games/rogue.scores \ |
333 | games games 664 /var/games/saillog \ | | 333 | games games 664 /var/games/saillog \ |
334 | games games 664 /var/games/snakerawscores \ | | 334 | games games 664 /var/games/snakerawscores \ |
335 | games games 664 /var/games/snake.log \ | | 335 | games games 664 /var/games/snake.log \ |
336 | games games 664 /var/games/tetris.scores | | 336 | games games 664 /var/games/tetris.scores |
337 | ${_MKMSG_INSTALL} ${DESTDIR}${file} | | 337 | ${_MKMSG_INSTALL} ${DESTDIR}${file} |
338 | ${ETC_INSTALL_FILE} -o ${owner} -g ${group} -m ${mode} \ | | 338 | ${ETC_INSTALL_FILE} -o ${owner} -g ${group} -m ${mode} \ |
339 | /dev/null ${DESTDIR}${file} | | 339 | /dev/null ${DESTDIR}${file} |
340 | .endfor | | 340 | .endfor |
341 | .for subdir in . defaults bluetooth iscsi mtree namedb pam.d powerd rc.d root skel ssh | | 341 | .for subdir in . defaults bluetooth iscsi mtree namedb pam.d powerd rc.d root skel ssh |
342 | ${MAKEDIRTARGET} ${subdir} configinstall | | 342 | ${MAKEDIRTARGET} ${subdir} configinstall |
343 | .endfor | | 343 | .endfor |
344 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/external/bsd/dhcpcd/sbin/dhcpcd configinstall | | 344 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/external/bsd/dhcpcd/sbin/dhcpcd configinstall |
345 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/usr.bin/mail configinstall | | 345 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/usr.bin/mail configinstall |
346 | .if (${MKPF} != "no") | | 346 | .if (${MKPF} != "no") |
347 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/usr.sbin/pf configinstall | | 347 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/usr.sbin/pf configinstall |
348 | .endif | | 348 | .endif |
349 | .if (${MKCRYPTO} != "no") | | 349 | .if (${MKCRYPTO} != "no") |
350 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/crypto/external/bsd/openssh/bin/ssh configinstall | | 350 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/crypto/external/bsd/openssh/bin configinstall |
351 | .endif | | 351 | .endif |
352 | .if (${MKPOSTFIX} != "no") | | 352 | .if (${MKPOSTFIX} != "no") |
353 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/external/ibm-public/postfix configinstall | | 353 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/external/ibm-public/postfix configinstall |
354 | .endif | | 354 | .endif |
355 | .if (${MKATF} != "no") | | 355 | .if (${MKATF} != "no") |
356 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/external/bsd/atf/etc/atf configinstall | | 356 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/external/bsd/atf/etc/atf configinstall |
357 | .endif | | 357 | .endif |
358 | | | 358 | |
359 | | | 359 | |
360 | # install-obsolete-lists -- | | 360 | # install-obsolete-lists -- |
361 | # Install var/db/obsolete set lists; this is performed by "make build" | | 361 | # Install var/db/obsolete set lists; this is performed by "make build" |
362 | # | | 362 | # |
363 | OBSOLETE.dir= ${.OBJDIR}/obsolete.dir | | 363 | OBSOLETE.dir= ${.OBJDIR}/obsolete.dir |
364 | OBSOLETE.files= base comp etc games man misc tests text | | 364 | OBSOLETE.files= base comp etc games man misc tests text |
365 | .if ${MKX11} != "no" | | 365 | .if ${MKX11} != "no" |
366 | OBSOLETE.files+= xbase xcomp xetc xfont xserver | | 366 | OBSOLETE.files+= xbase xcomp xetc xfont xserver |
367 | .endif | | 367 | .endif |
368 | | | 368 | |
369 | install-obsolete-lists: .PHONY .MAKE | | 369 | install-obsolete-lists: .PHONY .MAKE |
370 | mkdir -p ${OBSOLETE.dir} | | 370 | mkdir -p ${OBSOLETE.dir} |
371 | .if ${MKX11} != "no" | | 371 | .if ${MKX11} != "no" |
372 | (cd ${NETBSDSRCDIR}/distrib/sets && \ | | 372 | (cd ${NETBSDSRCDIR}/distrib/sets && \ |
373 | AWK=${TOOL_AWK:Q} MAKE=${MAKE:Q} ${HOST_SH} ./makeobsolete -b -t ${OBSOLETE.dir}) | | 373 | AWK=${TOOL_AWK:Q} MAKE=${MAKE:Q} ${HOST_SH} ./makeobsolete -b -t ${OBSOLETE.dir}) |
374 | .else | | 374 | .else |
375 | (cd ${NETBSDSRCDIR}/distrib/sets && \ | | 375 | (cd ${NETBSDSRCDIR}/distrib/sets && \ |
376 | AWK=${TOOL_AWK:Q} MAKE=${MAKE:Q} ${HOST_SH} ./makeobsolete -t ${OBSOLETE.dir}) | | 376 | AWK=${TOOL_AWK:Q} MAKE=${MAKE:Q} ${HOST_SH} ./makeobsolete -t ${OBSOLETE.dir}) |
377 | .endif | | 377 | .endif |
378 | .for file in ${OBSOLETE.files} | | 378 | .for file in ${OBSOLETE.files} |
379 | ${_MKMSG_INSTALL} ${DESTDIR}/var/db/obsolete/${file} | | 379 | ${_MKMSG_INSTALL} ${DESTDIR}/var/db/obsolete/${file} |
380 | ${ETC_INSTALL_FILE} -o ${BINOWN} -g ${BINGRP} -m 644 \ | | 380 | ${ETC_INSTALL_FILE} -o ${BINOWN} -g ${BINGRP} -m 644 \ |
381 | ${OBSOLETE.dir}/${file} ${DESTDIR}/var/db/obsolete | | 381 | ${OBSOLETE.dir}/${file} ${DESTDIR}/var/db/obsolete |
382 | .endfor | | 382 | .endfor |
383 | | | 383 | |
384 | | | 384 | |
385 | # distrib-dirs -- | | 385 | # distrib-dirs -- |
386 | # Populate $DESTDIR with directories needed by NetBSD | | 386 | # Populate $DESTDIR with directories needed by NetBSD |
387 | # | | 387 | # |
388 | .if ${MKUNPRIVED} == "no" | | 388 | .if ${MKUNPRIVED} == "no" |
389 | TOOL_MTREE.unpriv= | | 389 | TOOL_MTREE.unpriv= |
390 | .else | | 390 | .else |
391 | TOOL_MTREE.unpriv= -W | | 391 | TOOL_MTREE.unpriv= -W |
392 | .endif | | 392 | .endif |
393 | | | 393 | |
394 | distrib-dirs: .PHONY check_DESTDIR | | 394 | distrib-dirs: .PHONY check_DESTDIR |
395 | .if !defined(DISTRIBUTION_DONE) # { | | 395 | .if !defined(DISTRIBUTION_DONE) # { |
396 | # Create DESTDIR using HOST_INSTALL_DIR, not INSTALL_DIR, because | | 396 | # Create DESTDIR using HOST_INSTALL_DIR, not INSTALL_DIR, because |
397 | # INSTALL_DIR would want to write to the metalog, and it can't do that | | 397 | # INSTALL_DIR would want to write to the metalog, and it can't do that |
398 | # if the metalog is inside DESTDIR but DESTDIR doesn't yet exist. | | 398 | # if the metalog is inside DESTDIR but DESTDIR doesn't yet exist. |
399 | ${HOST_INSTALL_DIR} -m 755 ${DESTDIR} | | 399 | ${HOST_INSTALL_DIR} -m 755 ${DESTDIR} |
400 | # Inkoke mtree to create the directories listed in NetBSD.dist; | | 400 | # Inkoke mtree to create the directories listed in NetBSD.dist; |
401 | # then invoke mtree again to register those directories in the metalog. | | 401 | # then invoke mtree again to register those directories in the metalog. |
402 | ${TOOL_MTREE} -def ${.CURDIR}/mtree/NetBSD.dist -N ${.CURDIR} \ | | 402 | ${TOOL_MTREE} -def ${.CURDIR}/mtree/NetBSD.dist -N ${.CURDIR} \ |
403 | -p ${DESTDIR}/ -U ${TOOL_MTREE.unpriv} | | 403 | -p ${DESTDIR}/ -U ${TOOL_MTREE.unpriv} |
404 | .if ${MKUNPRIVED} != "no" # { | | 404 | .if ${MKUNPRIVED} != "no" # { |
405 | ${TOOL_MTREE} -def ${.CURDIR}/mtree/NetBSD.dist -N ${.CURDIR} \ | | 405 | ${TOOL_MTREE} -def ${.CURDIR}/mtree/NetBSD.dist -N ${.CURDIR} \ |
406 | -p ${DESTDIR}/ -C -k all | \ | | 406 | -p ${DESTDIR}/ -C -k all | \ |
407 | ${TOOL_AWK} '/ optional/ {next} // {print}' | ${METALOG.add} | | 407 | ${TOOL_AWK} '/ optional/ {next} // {print}' | ${METALOG.add} |
408 | .endif # MKUNPRIVED # } | | 408 | .endif # MKUNPRIVED # } |
409 | .endif # DISTRIBUTION_DONE # } | | 409 | .endif # DISTRIBUTION_DONE # } |
410 | | | 410 | |
411 | # release, snapshot -- | | 411 | # release, snapshot -- |
412 | # Build a full distribution including kernels & install media. | | 412 | # Build a full distribution including kernels & install media. |
413 | # | | 413 | # |
414 | release snapshot: .PHONY .MAKE check_DESTDIR check_RELEASEDIR snap_md_post | | 414 | release snapshot: .PHONY .MAKE check_DESTDIR check_RELEASEDIR snap_md_post |
415 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/distrib/sets sets | | 415 | ${MAKEDIRTARGET} ${NETBSDSRCDIR}/distrib/sets sets |
416 | ${MAKESUMS} -A -t ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets \ | | 416 | ${MAKESUMS} -A -t ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets \ |
417 | ${KERNEL_SETS:@.SETS.@kern-${.SETS.}.tgz@} | | 417 | ${KERNEL_SETS:@.SETS.@kern-${.SETS.}.tgz@} |
418 | ${MAKESUMS} -t ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/kernel '*.gz' | | 418 | ${MAKESUMS} -t ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/kernel '*.gz' |
419 | | | 419 | |
420 | | | 420 | |
421 | # iso-image -- | | 421 | # iso-image -- |
422 | # Standalone target to create a CDROM image after the release | | 422 | # Standalone target to create a CDROM image after the release |
423 | # was composed. Should be run after "make release" in src and xsrc. | | 423 | # was composed. Should be run after "make release" in src and xsrc. |
424 | # The do-iso-image is to be called from etc.$MACHINE/Makefile.inc | | 424 | # The do-iso-image is to be called from etc.$MACHINE/Makefile.inc |
425 | # | | 425 | # |
426 | # Note: At least mkisofs 2.0 should be used. | | 426 | # Note: At least mkisofs 2.0 should be used. |
427 | # | | 427 | # |
428 | CDROM_NAME_ADD?= | | 428 | CDROM_NAME_ADD?= |
429 | CDROM.image?=${RELEASEDIR}/iso/${MACHINE}cd.iso | | 429 | CDROM.image?=${RELEASEDIR}/iso/${MACHINE}cd.iso |
430 | CDROM.dir= ${.OBJDIR}/cdrom.dir | | 430 | CDROM.dir= ${.OBJDIR}/cdrom.dir |
431 | CDROM.pathlist= ${.OBJDIR}/cdrom.pathlist | | 431 | CDROM.pathlist= ${.OBJDIR}/cdrom.pathlist |
432 | | | 432 | |
433 | iso-image: | | 433 | iso-image: |
434 | | | 434 | |
435 | .if ${MKISOFS} != true | | 435 | .if ${MKISOFS} != true |
436 | do-iso-image: .PHONY check_DESTDIR check_RELEASEDIR iso-image-md-post | | 436 | do-iso-image: .PHONY check_DESTDIR check_RELEASEDIR iso-image-md-post |
437 | ${MAKESUMS} -t ${RELEASEDIR}/iso/ '*.iso' | | 437 | ${MAKESUMS} -t ${RELEASEDIR}/iso/ '*.iso' |
438 | @echo "iso-image created as: ${CDROM.image}" | | 438 | @echo "iso-image created as: ${CDROM.image}" |
439 | .else | | 439 | .else |
440 | do-iso-image: | | 440 | do-iso-image: |
441 | @echo iso-image: mkisofs not found | | 441 | @echo iso-image: mkisofs not found |
442 | .endif | | 442 | .endif |
443 | | | 443 | |
444 | iso-image-setup: .PHONY check_RELEASEDIR | | 444 | iso-image-setup: .PHONY check_RELEASEDIR |
445 | rm -f ${CDROM.pathlist} | | 445 | rm -f ${CDROM.pathlist} |
446 | .for extra in README SOURCE_DATE source | | 446 | .for extra in README SOURCE_DATE source |
447 | .if exists(${RELEASEDIR}/${extra}) | | 447 | .if exists(${RELEASEDIR}/${extra}) |
448 | echo "${extra}=${RELEASEDIR}/${extra}" >> ${CDROM.pathlist} | | 448 | echo "${extra}=${RELEASEDIR}/${extra}" >> ${CDROM.pathlist} |
449 | .endif | | 449 | .endif |
450 | .endfor | | 450 | .endfor |
451 | echo "${MACHINE}/=${RELEASEDIR}/${RELEASEMACHINEDIR}/" >> ${CDROM.pathlist} | | 451 | echo "${MACHINE}/=${RELEASEDIR}/${RELEASEMACHINEDIR}/" >> ${CDROM.pathlist} |
452 | mkdir -p ${CDROM.dir} | | 452 | mkdir -p ${CDROM.dir} |
453 | mkdir -p ${RELEASEDIR}/${RELEASEMACHINEDIR}/installation/cdrom | | 453 | mkdir -p ${RELEASEDIR}/${RELEASEMACHINEDIR}/installation/cdrom |
454 | | | 454 | |
455 | # iso-image-mi -- | | 455 | # iso-image-mi -- |
456 | # Create the image after the MD operations have completed. | | 456 | # Create the image after the MD operations have completed. |
457 | # | | 457 | # |
458 | iso-image-mi: .PHONY check_DESTDIR check_RELEASEDIR iso-image-md-pre | | 458 | iso-image-mi: .PHONY check_DESTDIR check_RELEASEDIR iso-image-md-pre |
459 | @if ! ${MKISOFS} --version; then \ | | 459 | @if ! ${MKISOFS} --version; then \ |
460 | echo "install pkgsrc/sysutils/cdrtools and run 'make iso-image'." ; \ | | 460 | echo "install pkgsrc/sysutils/cdrtools and run 'make iso-image'." ; \ |
461 | false; \ | | 461 | false; \ |
462 | fi | | 462 | fi |
463 | ${MKISOFS} ${MKISOFS_FLAGS} -graft-points -path-list ${CDROM.pathlist} \ | | 463 | ${MKISOFS} ${MKISOFS_FLAGS} -graft-points -path-list ${CDROM.pathlist} \ |
464 | -o ${CDROM.image} ${CDROM.dir} | | 464 | -o ${CDROM.image} ${CDROM.dir} |
465 | | | 465 | |
466 | # iso-image-md-pre -- | | 466 | # iso-image-md-pre -- |
467 | # Setup ${CDROM.dir} to produce a bootable CD image. | | 467 | # Setup ${CDROM.dir} to produce a bootable CD image. |
468 | # Overridden by etc.$MACHINE/Makefile.inc | | 468 | # Overridden by etc.$MACHINE/Makefile.inc |
469 | # | | 469 | # |
470 | iso-image-md-pre: .PHONY check_DESTDIR check_RELEASEDIR iso-image-setup | | 470 | iso-image-md-pre: .PHONY check_DESTDIR check_RELEASEDIR iso-image-setup |
471 | # (empty -- look in the machine-dependent Makefile.inc) | | 471 | # (empty -- look in the machine-dependent Makefile.inc) |
472 | | | 472 | |
473 | # iso-image-md-post -- | | 473 | # iso-image-md-post -- |
474 | # Fixup the CD-image to be bootable. | | 474 | # Fixup the CD-image to be bootable. |
475 | # Overridden by etc.$MACHINE/Makefile.inc | | 475 | # Overridden by etc.$MACHINE/Makefile.inc |
476 | # | | 476 | # |
477 | iso-image-md-post: .PHONY check_DESTDIR check_RELEASEDIR iso-image-mi | | 477 | iso-image-md-post: .PHONY check_DESTDIR check_RELEASEDIR iso-image-mi |
478 | # (empty -- look in the machine-dependent Makefile.inc) | | 478 | # (empty -- look in the machine-dependent Makefile.inc) |
479 | | | 479 | |
480 | | | 480 | |
481 | # snap_pre -- | | 481 | # snap_pre -- |
482 | # Create ${RELEASEDIR} and necessary subdirectories. | | 482 | # Create ${RELEASEDIR} and necessary subdirectories. |
483 | # | | 483 | # |
484 | snap_pre: .PHONY check_DESTDIR check_RELEASEDIR distribution | | 484 | snap_pre: .PHONY check_DESTDIR check_RELEASEDIR distribution |
485 | ${INSTALL} -d -m 755 ${RELEASEDIR} | | 485 | ${INSTALL} -d -m 755 ${RELEASEDIR} |
486 | .if ${MKUPDATE} == "no" | | 486 | .if ${MKUPDATE} == "no" |
487 | # Could be a mount point, ignore the errors | | 487 | # Could be a mount point, ignore the errors |
488 | -/bin/rm -rf ${RELEASEDIR}/${RELEASEMACHINEDIR} | | 488 | -/bin/rm -rf ${RELEASEDIR}/${RELEASEMACHINEDIR} |
489 | .endif | | 489 | .endif |
490 | ${INSTALL} -d -m 755 ${RELEASEDIR}/${RELEASEMACHINEDIR} | | 490 | ${INSTALL} -d -m 755 ${RELEASEDIR}/${RELEASEMACHINEDIR} |
491 | .for dir in ${INSTALLATION_DIRS} | | 491 | .for dir in ${INSTALLATION_DIRS} |
492 | ${INSTALL} -d -m 755 ${RELEASEDIR}/${RELEASEMACHINEDIR}/${dir} | | 492 | ${INSTALL} -d -m 755 ${RELEASEDIR}/${RELEASEMACHINEDIR}/${dir} |
493 | .endfor | | 493 | .endfor |
494 | | | 494 | |
495 | # snap_post -- | | 495 | # snap_post -- |
496 | # Build the install media and notes from distrib | | 496 | # Build the install media and notes from distrib |
497 | # | | 497 | # |
498 | snap_post: .PHONY .MAKE build_kernelsets build_releasekernels | | 498 | snap_post: .PHONY .MAKE build_kernelsets build_releasekernels |
499 | .if ${MKUPDATE} == "no" | | 499 | .if ${MKUPDATE} == "no" |
500 | cd ${NETBSDSRCDIR}/distrib && ${MAKE} cleandir | | 500 | cd ${NETBSDSRCDIR}/distrib && ${MAKE} cleandir |
501 | .endif | | 501 | .endif |
502 | cd ${NETBSDSRCDIR}/distrib && ${MAKE} depend && ${MAKE} && \ | | 502 | cd ${NETBSDSRCDIR}/distrib && ${MAKE} depend && ${MAKE} && \ |
503 | ${MAKE} release | | 503 | ${MAKE} release |
504 | | | 504 | |
505 | # build kernels -- | | 505 | # build kernels -- |
506 | # This target builds the kernels specified by each port. | | 506 | # This target builds the kernels specified by each port. |
507 | # A port may specify the following kernels: | | 507 | # A port may specify the following kernels: |
508 | # | | 508 | # |
509 | # KERNEL_SETS The list of kernels that will be | | 509 | # KERNEL_SETS The list of kernels that will be |
510 | # packaged into sets, named | | 510 | # packaged into sets, named |
511 | # kern-${kernel}.tgz. These kernels | | 511 | # kern-${kernel}.tgz. These kernels |
512 | # are also placed in the binary/kernel | | 512 | # are also placed in the binary/kernel |
513 | # area of the release package as | | 513 | # area of the release package as |
514 | # netbsd-${kernel}.gz. | | 514 | # netbsd-${kernel}.gz. |
515 | # | | 515 | # |
516 | # EXTRA_KERNELS Additional kernels to place in the | | 516 | # EXTRA_KERNELS Additional kernels to place in the |
517 | # binary/kernel area of the release | | 517 | # binary/kernel area of the release |
518 | # package as netbsd-${kernel}.gz, but | | 518 | # package as netbsd-${kernel}.gz, but |
519 | # which are not placed into sets. This | | 519 | # which are not placed into sets. This |
520 | # allows a port to provide e.g. a netbootable | | 520 | # allows a port to provide e.g. a netbootable |
521 | # installation kernel containing a ramdisk. | | 521 | # installation kernel containing a ramdisk. |
522 | # | | 522 | # |
523 | # BUILD_KERNELS Additional kernels to build which are | | 523 | # BUILD_KERNELS Additional kernels to build which are |
524 | # not placed into sets nor into the | | 524 | # not placed into sets nor into the |
525 | # binary/kernel area of the release | | 525 | # binary/kernel area of the release |
526 | # package. These are typically kernels | | 526 | # package. These are typically kernels |
527 | # that are built for inclusion only in | | 527 | # that are built for inclusion only in |
528 | # installation disk/CD-ROM/tape images. | | 528 | # installation disk/CD-ROM/tape images. |
529 | # | | 529 | # |
530 | # A port may also specify KERNEL_SUFFIXES, which is an optional list | | 530 | # A port may also specify KERNEL_SUFFIXES, which is an optional list |
531 | # of filename suffixes for kernels to include in the kernel sets and | | 531 | # of filename suffixes for kernels to include in the kernel sets and |
532 | # in the binary/kernel area of the release package (e.g. "netbsd" vs. | | 532 | # in the binary/kernel area of the release package (e.g. "netbsd" vs. |
533 | # "netbsd.ecoff" and "netbsd.srec"). It is not an error if kernels | | 533 | # "netbsd.ecoff" and "netbsd.srec"). It is not an error if kernels |
534 | # with these suffixes do not exist in the kernel build directory. | | 534 | # with these suffixes do not exist in the kernel build directory. |
535 | # | | 535 | # |
536 | # | | 536 | # |
537 | # A list of all the kernels to build, which can be overridden from | | 537 | # A list of all the kernels to build, which can be overridden from |
538 | # external sources (such as make(1)'s environment or command line) | | 538 | # external sources (such as make(1)'s environment or command line) |
539 | # | | 539 | # |
540 | ALL_KERNELS?= ${KERNEL_SETS} ${EXTRA_KERNELS} ${BUILD_KERNELS} | | 540 | ALL_KERNELS?= ${KERNEL_SETS} ${EXTRA_KERNELS} ${BUILD_KERNELS} |
541 | | | 541 | |
542 | GETKERNELAWK= ${TOOL_AWK} '/^config/ {print $$2; found=1} \ | | 542 | GETKERNELAWK= ${TOOL_AWK} '/^config/ {print $$2; found=1} \ |
543 | END{ if (found == 0) print "netbsd"; }' | | 543 | END{ if (found == 0) print "netbsd"; }' |
544 | | | 544 | |
545 | build_kernels: .PHONY | | 545 | build_kernels: .PHONY |
546 | # Configure & compile kernels listed in ${ALL_KERNELS} | | 546 | # Configure & compile kernels listed in ${ALL_KERNELS} |
547 | # | | 547 | # |
548 | # The 'sync' is so that all writes during the build are pushed back | | 548 | # The 'sync' is so that all writes during the build are pushed back |
549 | # to the disk. Not having it causes problems on some host systems | | 549 | # to the disk. Not having it causes problems on some host systems |
550 | # (e.g. Linux) when building on NFS. | | 550 | # (e.g. Linux) when building on NFS. |
551 | # | | 551 | # |
552 | .if !defined(KERNELS_DONE) # { | | 552 | .if !defined(KERNELS_DONE) # { |
553 | .for configfile in ${ALL_KERNELS} # { | | 553 | .for configfile in ${ALL_KERNELS} # { |
554 | build_kernels: kern-${configfile} | | 554 | build_kernels: kern-${configfile} |
555 | kern-${configfile}: .PHONY .MAKE | | 555 | kern-${configfile}: .PHONY .MAKE |
556 | cd ${KERNCONFDIR} && ${TOOL_CONFIG} -s ${KERNSRCDIR} \ | | 556 | cd ${KERNCONFDIR} && ${TOOL_CONFIG} -s ${KERNSRCDIR} \ |
557 | -b ${KERNOBJDIR}/${configfile:C/.*\///} ${configfile} | | 557 | -b ${KERNOBJDIR}/${configfile:C/.*\///} ${configfile} |
558 | .if ${MKUPDATE} == "no" | | 558 | .if ${MKUPDATE} == "no" |
559 | cd ${KERNOBJDIR}/${configfile:C/.*\///} && ${MAKE} distclean | | 559 | cd ${KERNOBJDIR}/${configfile:C/.*\///} && ${MAKE} distclean |
560 | .endif | | 560 | .endif |
561 | cd ${KERNOBJDIR}/${configfile:C/.*\///} && ${MAKE} depend && ${MAKE} | | 561 | cd ${KERNOBJDIR}/${configfile:C/.*\///} && ${MAKE} depend && ${MAKE} |
562 | sync | | 562 | sync |
563 | .endfor # ALL_KERNELS # } | | 563 | .endfor # ALL_KERNELS # } |
564 | .endif # KERNELS_DONE # } | | 564 | .endif # KERNELS_DONE # } |
565 | | | 565 | |
566 | build_kernelsets: .PHONY | | 566 | build_kernelsets: .PHONY |
567 | # Create kernel sets from ${KERNEL_SETS} into | | 567 | # Create kernel sets from ${KERNEL_SETS} into |
568 | # ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets | | 568 | # ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets |
569 | # | | 569 | # |
570 | .for configfile in ${KERNEL_SETS} # { | | 570 | .for configfile in ${KERNEL_SETS} # { |
571 | build_kernelsets: kernset-${configfile} | | 571 | build_kernelsets: kernset-${configfile} |
572 | kernset-${configfile}: .PHONY build_kernels snap_pre | | 572 | kernset-${configfile}: .PHONY build_kernels snap_pre |
573 | @ kernlist=`${GETKERNELAWK} ${KERNCONFDIR}/${configfile}`; \ | | 573 | @ kernlist=`${GETKERNELAWK} ${KERNCONFDIR}/${configfile}`; \ |
574 | kerndir=${KERNOBJDIR}/${configfile:C/.*\///}; \ | | 574 | kerndir=${KERNOBJDIR}/${configfile:C/.*\///}; \ |
575 | kernsuffixes="${KERNEL_SUFFIXES:S/^/./}"; \ | | 575 | kernsuffixes="${KERNEL_SUFFIXES:S/^/./}"; \ |
576 | kern_tgz=${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets/kern-${configfile}.tgz; \ | | 576 | kern_tgz=${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets/kern-${configfile}.tgz; \ |
577 | pax_cmd="GZIP=-9 ${TOOL_PAX} -O -zw -M -N ${NETBSDSRCDIR}/etc -f $${kern_tgz}"; \ | | 577 | pax_cmd="GZIP=-9 ${TOOL_PAX} -O -zw -M -N ${NETBSDSRCDIR}/etc -f $${kern_tgz}"; \ |
578 | cd $${kerndir} && { \ | | 578 | cd $${kerndir} && { \ |
579 | kernels=; newest=; \ | | 579 | kernels=; newest=; \ |
580 | for kernel in $${kernlist}; do \ | | 580 | for kernel in $${kernlist}; do \ |
581 | for s in "" $${kernsuffixes}; do \ | | 581 | for s in "" $${kernsuffixes}; do \ |
582 | ks="$${kernel}$${s}"; \ | | 582 | ks="$${kernel}$${s}"; \ |
583 | [ -f $${ks} ] || continue; \ | | 583 | [ -f $${ks} ] || continue; \ |
584 | kernels="$${kernels} $${ks}"; \ | | 584 | kernels="$${kernels} $${ks}"; \ |
585 | [ -z "$${newest}" -o $${ks} -nt "$${newest}" ] && \ | | 585 | [ -z "$${newest}" -o $${ks} -nt "$${newest}" ] && \ |
586 | newest=$${ks}; \ | | 586 | newest=$${ks}; \ |
587 | done; \ | | 587 | done; \ |
588 | done; \ | | 588 | done; \ |
589 | [ $${kern_tgz} -nt "$${newest}" ] || { \ | | 589 | [ $${kern_tgz} -nt "$${newest}" ] || { \ |
590 | echo "echo $${kernels} | $${pax_cmd}"; \ | | 590 | echo "echo $${kernels} | $${pax_cmd}"; \ |
591 | ( echo "/set uname=${BINOWN} gname=${BINGRP}"; \ | | 591 | ( echo "/set uname=${BINOWN} gname=${BINGRP}"; \ |
592 | echo ". type=dir optional"; \ | | 592 | echo ". type=dir optional"; \ |
593 | for kernel in $${kernels}; do \ | | 593 | for kernel in $${kernels}; do \ |
594 | echo "./$${kernel} type=file"; \ | | 594 | echo "./$${kernel} type=file"; \ |
595 | done ) | eval $${pax_cmd}; \ | | 595 | done ) | eval $${pax_cmd}; \ |
596 | } \ | | 596 | } \ |
597 | } | | 597 | } |
598 | .endfor # KERNEL_SETS # } | | 598 | .endfor # KERNEL_SETS # } |
599 | | | 599 | |
600 | build_releasekernels: .PHONY | | 600 | build_releasekernels: .PHONY |
601 | # Build kernel.gz from ${KERNEL_SETS} ${EXTRA_KERNELS} into | | 601 | # Build kernel.gz from ${KERNEL_SETS} ${EXTRA_KERNELS} into |
602 | # ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/kernel | | 602 | # ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/kernel |
603 | # | | 603 | # |
604 | .for configfile in ${KERNEL_SETS} ${EXTRA_KERNELS} # { | | 604 | .for configfile in ${KERNEL_SETS} ${EXTRA_KERNELS} # { |
605 | build_releasekernels: releasekern-${configfile} | | 605 | build_releasekernels: releasekern-${configfile} |
606 | releasekern-${configfile}: .PHONY build_kernels snap_pre | | 606 | releasekern-${configfile}: .PHONY build_kernels snap_pre |
607 | @ kernlist=`${GETKERNELAWK} ${KERNCONFDIR}/${configfile:C/.*\///}`; \ | | 607 | @ kernlist=`${GETKERNELAWK} ${KERNCONFDIR}/${configfile:C/.*\///}`; \ |
608 | kerndir=${KERNOBJDIR}/${configfile:C/.*\///}; \ | | 608 | kerndir=${KERNOBJDIR}/${configfile:C/.*\///}; \ |
609 | kernsuffixes="${KERNEL_SUFFIXES:S/^/./}"; \ | | 609 | kernsuffixes="${KERNEL_SUFFIXES:S/^/./}"; \ |
610 | cd $${kerndir} && { \ | | 610 | cd $${kerndir} && { \ |
611 | for kernel in $${kernlist}; do \ | | 611 | for kernel in $${kernlist}; do \ |
612 | for s in "" $${kernsuffixes}; do \ | | 612 | for s in "" $${kernsuffixes}; do \ |
613 | ks="$${kernel}$${s}"; \ | | 613 | ks="$${kernel}$${s}"; \ |
614 | [ ! -f $${ks} ] && continue; \ | | 614 | [ ! -f $${ks} ] && continue; \ |
615 | knl_gz="${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/kernel/$${ks}-${configfile:C/.*\///}.gz"; \ | | 615 | knl_gz="${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/kernel/$${ks}-${configfile:C/.*\///}.gz"; \ |
616 | [ $${knl_gz} -nt $${ks} ] && continue; \ | | 616 | [ $${knl_gz} -nt $${ks} ] && continue; \ |
617 | rm -f $${knl_gz}; \ | | 617 | rm -f $${knl_gz}; \ |
618 | echo "gzip -c -9 < $${kerndir}/$${ks} > $${knl_gz}"; \ | | 618 | echo "gzip -c -9 < $${kerndir}/$${ks} > $${knl_gz}"; \ |
619 | gzip -c -9 < $${ks} > $${knl_gz}; \ | | 619 | gzip -c -9 < $${ks} > $${knl_gz}; \ |
620 | done; \ | | 620 | done; \ |
621 | done; \ | | 621 | done; \ |
622 | } | | 622 | } |
623 | .endfor # KERNEL_SETS EXTRA_KERNELS # } | | 623 | .endfor # KERNEL_SETS EXTRA_KERNELS # } |
624 | | | 624 | |
625 | # snap_md_post -- | | 625 | # snap_md_post -- |
626 | # Machine dependent distribution media operations. | | 626 | # Machine dependent distribution media operations. |
627 | # Overridden by etc.$MACHINE/Makefile.inc | | 627 | # Overridden by etc.$MACHINE/Makefile.inc |
628 | # | | 628 | # |
629 | snap_md_post: .PHONY check_DESTDIR check_RELEASEDIR snap_post | | 629 | snap_md_post: .PHONY check_DESTDIR check_RELEASEDIR snap_post |
630 | # (empty -- look in the machine-dependent Makefile.inc) | | 630 | # (empty -- look in the machine-dependent Makefile.inc) |
631 | | | 631 | |
632 | | | 632 | |
633 | clean: | | 633 | clean: |
634 | -rm -rf ${CDROM.dir} ${CDROM.pathlist} ${OBSOLETE.dir} | | 634 | -rm -rf ${CDROM.dir} ${CDROM.pathlist} ${OBSOLETE.dir} |
635 | | | 635 | |
636 | SUBDIR= rc.d | | 636 | SUBDIR= rc.d |
637 | | | 637 | |
638 | .include <bsd.prog.mk> | | 638 | .include <bsd.prog.mk> |
639 | .include <bsd.subdir.mk> | | 639 | .include <bsd.subdir.mk> |
640 | | | 640 | |
641 | test: | | 641 | test: |
642 | @echo ${OBSOLETE.files} | | 642 | @echo ${OBSOLETE.files} |