Print this page
4265 remove INTERNAL_RELEASE_BUILD
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/tools/scripts/bldenv.sh
+++ new/usr/src/tools/scripts/bldenv.sh
1 1 #!/usr/bin/ksh93
2 2 #
3 3 # CDDL HEADER START
4 4 #
5 5 # The contents of this file are subject to the terms of the
6 6 # Common Development and Distribution License (the "License").
7 7 # You may not use this file except in compliance with the License.
8 8 #
9 9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 10 # or http://www.opensolaris.org/os/licensing.
11 11 # See the License for the specific language governing permissions
12 12 # and limitations under the License.
13 13 #
14 14 # When distributing Covered Code, include this CDDL HEADER in each
15 15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 16 # If applicable, add the following below this CDDL HEADER, with the
17 17 # fields enclosed by brackets "[]" replaced with your own identifying
18 18 # information: Portions Copyright [yyyy] [name of copyright owner]
19 19 #
20 20 # CDDL HEADER END
21 21 #
22 22
23 23 #
24 24 # Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
25 25 # Copyright 2011 Nexenta Systems, Inc. All rights reserved.
26 26 #
27 27 # Uses supplied "env" file, based on /opt/onbld/etc/env, to set shell variables
28 28 # before spawning a shell for doing a release-style builds interactively
29 29 # and incrementally.
30 30 #
31 31
32 32 function fatal_error
33 33 {
34 34 print -u2 "${progname}: $*"
35 35 exit 1
36 36 }
37 37
38 38 function usage
39 39 {
40 40 OPTIND=0
41 41 getopts -a "${progname}" "${USAGE}" OPT '-?'
42 42 exit 2
43 43 }
44 44
45 45 typeset -r USAGE=$'+
46 46 [-?\n@(#)\$Id: bldenv (OS/Net) 2008-04-06 \$\n]
47 47 [-author?OS/Net community <tools-discuss@opensolaris.org>]
48 48 [+NAME?bldenv - spawn shell for interactive incremental OS-Net
49 49 consolidation builds]
50 50 [+DESCRIPTION?bldenv is a useful companion to the nightly(1) script for
51 51 doing interactive and incremental builds in a workspace
52 52 already built with nightly(1). bldenv spawns a shell set up
53 53 with the same environment variables taken from an env_file,
54 54 as prepared for use with nightly(1).]
55 55 [+?In addition to running a shell for interactive use, bldenv
56 56 can optionally run a single command in the given environment,
57 57 in the vein of sh -c or su -c. This is useful for
58 58 scripting, when an interactive shell would not be. If the
59 59 command is composed of multiple shell words or contains
60 60 other shell metacharacters, it must be quoted appropriately.]
61 61 [+?bldenv is particularly useful for testing Makefile targets
62 62 like clobber, install and _msg, which otherwise require digging
63 63 through large build logs to figure out what is being
64 64 done.]
65 65 [+?By default, bldenv will invoke the shell specified in
66 66 $SHELL. If $SHELL is not set or is invalid, csh will be
67 67 used.]
68 68 [c?force the use of csh, regardless of the value of $SHELL.]
69 69 [f?invoke csh with the -f (fast-start) option. This option is valid
70 70 only if $SHELL is unset or if it points to csh.]
71 71 [d?set up environment for doing DEBUG builds (default is non-DEBUG)]
72 72 [t?set up environment to use the tools in usr/src/tools (this is the
73 73 default, use +t to use the tools from /opt/onbld)]
74 74
75 75 <env_file> [command]
76 76
77 77 [+EXAMPLES]{
78 78 [+?Example 1: Interactive use]{
79 79 [+?Use bldenv to spawn a shell to perform a DEBUG build and
80 80 testing of the Makefile targets clobber and install for
81 81 usr/src/cmd/true.]
82 82 [+\n% rlogin wopr-2 -l gk
83 83 {root::wopr-2::49} bldenv -d /export0/jg/on10-se.env
84 84 Build type is DEBUG
85 85 RELEASE is 5.10
86 86 VERSION is wopr-2::on10-se::11/01/2001
87 87 RELEASE_DATE is May 2004
88 88 The top-level `setup\' target is available to build headers
89 89 and tools.
90 90 Using /usr/bin/tcsh as shell.
91 91 {root::wopr-2::49}
92 92 {root::wopr-2::49} cd $SRC/cmd/true
93 93 {root::wopr-2::50} make
94 94 {root::wopr-2::51} make clobber
95 95 /usr/bin/rm -f true true.po
96 96 {root::wopr-2::52} make
97 97 /usr/bin/rm -f true
98 98 cat true.sh > true
99 99 chmod +x true
100 100 {root::wopr-2::53} make install
101 101 install -s -m 0555 -u root -g bin -f /export0/jg/on10-se/proto/root_sparc/usr/bin true
102 102 `install\' is up to date.]
103 103 }
104 104 [+?Example 2: Non-interactive use]{
105 105 [+?Invoke bldenv to create SUNWonbld with a single command:]
106 106 [+\nexample% bldenv onnv_06 \'cd $SRC/tools && make pkg\']
107 107 }
108 108 }
109 109 [+SEE ALSO?\bnightly\b(1)]
110 110 '
111 111
112 112 # main
113 113 builtin basename
114 114
115 115 # boolean flags (true/false)
116 116 typeset flags=(
117 117 typeset c=false
118 118 typeset f=false
119 119 typeset d=false
120 120 typeset O=false
121 121 typeset o=false
122 122 typeset t=true
123 123 typeset s=(
124 124 typeset e=false
125 125 typeset h=false
126 126 typeset d=false
127 127 typeset o=false
128 128 )
129 129 )
130 130
131 131 typeset progname="$(basename -- "${0}")"
132 132
133 133 OPTIND=1
134 134 SUFFIX="-nd"
135 135
136 136 while getopts -a "${progname}" "${USAGE}" OPT ; do
137 137 case ${OPT} in
138 138 c) flags.c=true ;;
139 139 +c) flags.c=false ;;
140 140 f) flags.f=true ;;
141 141 +f) flags.f=false ;;
142 142 d) flags.d=true SUFFIX="" ;;
143 143 +d) flags.d=false SUFFIX="-nd" ;;
144 144 t) flags.t=true ;;
145 145 +t) flags.t=false ;;
146 146 \?) usage ;;
147 147 esac
148 148 done
149 149 shift $((OPTIND-1))
150 150
151 151 # test that the path to the environment-setting file was given
152 152 if (( $# < 1 )) ; then
153 153 usage
154 154 fi
155 155
156 156 # force locale to C
157 157 export \
158 158 LC_COLLATE=C \
159 159 LC_CTYPE=C \
160 160 LC_MESSAGES=C \
161 161 LC_MONETARY=C \
162 162 LC_NUMERIC=C \
163 163 LC_TIME=C
164 164
165 165 # clear environment variables we know to be bad for the build
166 166 unset \
167 167 LD_OPTIONS \
168 168 LD_LIBRARY_PATH \
169 169 LD_AUDIT \
170 170 LD_BIND_NOW \
171 171 LD_BREADTH \
172 172 LD_CONFIG \
173 173 LD_DEBUG \
174 174 LD_FLAGS \
175 175 LD_LIBRARY_PATH_64 \
176 176 LD_NOVERSION \
177 177 LD_ORIGIN \
178 178 LD_LOADFLTR \
179 179 LD_NOAUXFLTR \
180 180 LD_NOCONFIG \
181 181 LD_NODIRCONFIG \
182 182 LD_NOOBJALTER \
183 183 LD_PRELOAD \
184 184 LD_PROFILE \
185 185 CONFIG \
186 186 GROUP \
187 187 OWNER \
188 188 REMOTE \
189 189 ENV \
190 190 ARCH \
191 191 CLASSPATH
192 192
193 193 #
194 194 # Setup environment variables
195 195 #
196 196 if [[ -f /etc/nightly.conf ]]; then
197 197 source /etc/nightly.conf
198 198 fi
199 199
200 200 if [[ -f "$1" ]]; then
201 201 if [[ "$1" == */* ]]; then
202 202 source "$1"
203 203 else
204 204 source "./$1"
205 205 fi
206 206 else
207 207 if [[ -f "/opt/onbld/env/$1" ]]; then
208 208 source "/opt/onbld/env/$1"
209 209 else
210 210 printf \
211 211 'Cannot find env file as either %s or /opt/onbld/env/%s\n' \
212 212 "$1" "$1"
213 213 exit 1
214 214 fi
215 215 fi
216 216 shift
217 217
218 218 # contents of stdenv.sh inserted after next line:
219 219 # STDENV_START
220 220 # STDENV_END
221 221
222 222 # Check if we have sufficient data to continue...
223 223 [[ -v CODEMGR_WS ]] || fatal_error "Error: Variable CODEMGR_WS not set."
224 224 [[ -d "${CODEMGR_WS}" ]] || fatal_error "Error: ${CODEMGR_WS} is not a directory."
225 225 [[ -f "${CODEMGR_WS}/usr/src/Makefile" ]] || fatal_error "Error: ${CODEMGR_WS}/usr/src/Makefile not found."
226 226
227 227 # must match the getopts in nightly.sh
228 228 OPTIND=1
229 229 NIGHTLY_OPTIONS="-${NIGHTLY_OPTIONS#-}"
230 230 while getopts '+0AaBCDdFfGIilMmNnopRrtUuWwXxz' FLAG "$NIGHTLY_OPTIONS"
231 231 do
232 232 case "$FLAG" in
233 233 o) flags.o=true ;;
234 234 +o) flags.o=false ;;
235 235 t) flags.t=true ;;
236 236 +t) flags.t=false ;;
237 237 *) ;;
238 238 esac
239 239 done
240 240
↓ open down ↓ |
240 lines elided |
↑ open up ↑ |
241 241 POUND_SIGN="#"
242 242 # have we set RELEASE_DATE in our env file?
243 243 if [ -z "$RELEASE_DATE" ]; then
244 244 RELEASE_DATE=$(LC_ALL=C date +"%B %Y")
245 245 fi
246 246 BUILD_DATE=$(LC_ALL=C date +%Y-%b-%d)
247 247 BASEWSDIR=$(basename -- "${CODEMGR_WS}")
248 248 DEV_CM="\"@(#)SunOS Internal Development: $LOGNAME $BUILD_DATE [$BASEWSDIR]\""
249 249 export DEV_CM RELEASE_DATE POUND_SIGN
250 250
251 -export INTERNAL_RELEASE_BUILD=
252 -
253 251 print 'Build type is \c'
254 252 if ${flags.d} ; then
255 253 print 'DEBUG'
256 254 unset RELEASE_BUILD
257 255 unset EXTRA_OPTIONS
258 256 unset EXTRA_CFLAGS
259 257 else
260 258 # default is a non-DEBUG build
261 259 print 'non-DEBUG'
262 260 export RELEASE_BUILD=
263 261 unset EXTRA_OPTIONS
264 262 unset EXTRA_CFLAGS
265 263 fi
266 264
267 265 # update build-type variables
268 266 PKGARCHIVE="${PKGARCHIVE}${SUFFIX}"
269 267
270 268 # Set PATH for a build
271 269 PATH="/opt/onbld/bin:/opt/onbld/bin/${MACH}:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/bin:/usr/sbin:/usr/ucb:/usr/etc:/usr/openwin/bin:/usr/sfw/bin:/opt/sfw/bin:."
272 270 if [[ "${SUNWSPRO}" != "" ]]; then
273 271 export PATH="${SUNWSPRO}/bin:$PATH"
274 272 fi
275 273
276 274 if [[ -n "${MAKE}" ]]; then
277 275 if [[ -x "${MAKE}" ]]; then
278 276 export PATH="$(dirname -- "${MAKE}"):$PATH"
279 277 else
280 278 print "\$MAKE (${MAKE}) is not a valid executible"
281 279 exit 1
282 280 fi
283 281 fi
284 282
285 283 TOOLS="${SRC}/tools"
286 284 TOOLS_PROTO="${TOOLS}/proto/root_${MACH}-nd" ; export TOOLS_PROTO
287 285
288 286 if "${flags.t}" ; then
289 287 export ONBLD_TOOLS="${ONBLD_TOOLS:=${TOOLS_PROTO}/opt/onbld}"
290 288
291 289 export STABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/stabs"
292 290 export CTFSTABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfstabs"
293 291 export GENOFFSETS="${TOOLS_PROTO}/opt/onbld/bin/genoffsets"
294 292
295 293 export CTFCONVERT="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfconvert"
296 294 export CTFMERGE="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfmerge"
297 295
298 296 export CTFCVTPTBL="${TOOLS_PROTO}/opt/onbld/bin/ctfcvtptbl"
299 297 export CTFFINDMOD="${TOOLS_PROTO}/opt/onbld/bin/ctffindmod"
300 298
301 299 PATH="${TOOLS_PROTO}/opt/onbld/bin/${MACH}:${PATH}"
302 300 PATH="${TOOLS_PROTO}/opt/onbld/bin:${PATH}"
303 301 export PATH
304 302 fi
305 303
306 304 export DMAKE_MODE=${DMAKE_MODE:-parallel}
307 305
308 306 if "${flags.o}" ; then
309 307 export CH=
310 308 else
311 309 unset CH
312 310 fi
313 311 DEF_STRIPFLAG="-s"
314 312
315 313 TMPDIR="/tmp"
316 314
317 315 # "o_FLAG" is used by "nightly.sh" (it may be useful to rename this
318 316 # variable using a more descriptive name later)
319 317 export o_FLAG="$(${flags.o} && print 'y' || print 'n')"
320 318
321 319 export \
322 320 PATH TMPDIR \
323 321 POUND_SIGN \
324 322 DEF_STRIPFLAG \
325 323 RELEASE_DATE
326 324 unset \
327 325 CFLAGS \
328 326 LD_LIBRARY_PATH
329 327
330 328 # a la ws
331 329 ENVLDLIBS1=
332 330 ENVLDLIBS2=
333 331 ENVLDLIBS3=
334 332 ENVCPPFLAGS1=
335 333 ENVCPPFLAGS2=
336 334 ENVCPPFLAGS3=
337 335 ENVCPPFLAGS4=
338 336 PARENT_ROOT=
339 337 PARENT_TOOLS_ROOT=
340 338
341 339 if [[ "$MULTI_PROTO" != "yes" && "$MULTI_PROTO" != "no" ]]; then
342 340 printf \
343 341 'WARNING: invalid value for MULTI_PROTO (%s); setting to "no".\n' \
344 342 "$MULTI_PROTO"
345 343 export MULTI_PROTO="no"
346 344 fi
347 345
348 346 [[ "$MULTI_PROTO" == "yes" ]] && export ROOT="${ROOT}${SUFFIX}"
349 347
350 348 ENVLDLIBS1="-L$ROOT/lib -L$ROOT/usr/lib"
351 349 ENVCPPFLAGS1="-I$ROOT/usr/include"
352 350 MAKEFLAGS=e
353 351
354 352 export \
355 353 ENVLDLIBS1 \
356 354 ENVLDLIBS2 \
357 355 ENVLDLIBS3 \
358 356 ENVCPPFLAGS1 \
359 357 ENVCPPFLAGS2 \
360 358 ENVCPPFLAGS3 \
361 359 ENVCPPFLAGS4 \
362 360 MAKEFLAGS \
363 361 PARENT_ROOT \
364 362 PARENT_TOOLS_ROOT
365 363
366 364 printf 'RELEASE is %s\n' "$RELEASE"
367 365 printf 'VERSION is %s\n' "$VERSION"
368 366 printf 'RELEASE_DATE is %s\n\n' "$RELEASE_DATE"
369 367
370 368 if [[ -f "$SRC/Makefile" ]] && egrep -s '^setup:' "$SRC/Makefile" ; then
371 369 print "The top-level 'setup' target is available \c"
372 370 print "to build headers and tools."
373 371 print ""
374 372
375 373 elif "${flags.t}" ; then
376 374 printf \
377 375 'The tools can be (re)built with the install target in %s.\n\n' \
378 376 "${TOOLS}"
379 377 fi
380 378
381 379 #
382 380 # place ourselves in a new task, respecting BUILD_PROJECT if set.
383 381 #
384 382 /usr/bin/newtask -c $$ ${BUILD_PROJECT:+-p$BUILD_PROJECT}
385 383
386 384 if [[ "${flags.c}" == "false" && -x "$SHELL" && \
387 385 "$(basename -- "${SHELL}")" != "csh" ]]; then
388 386 # $SHELL is set, and it's not csh.
389 387
390 388 if "${flags.f}" ; then
391 389 print 'WARNING: -f is ignored when $SHELL is not csh'
392 390 fi
393 391
394 392 printf 'Using %s as shell.\n' "$SHELL"
395 393 exec "$SHELL" ${@:+-c "$@"}
396 394
397 395 elif "${flags.f}" ; then
398 396 print 'Using csh -f as shell.'
399 397 exec csh -f ${@:+-c "$@"}
400 398
401 399 else
402 400 print 'Using csh as shell.'
403 401 exec csh ${@:+-c "$@"}
404 402 fi
405 403
406 404 # not reached
↓ open down ↓ |
144 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX