163df1173Spetede#!/usr/bin/ksh93 27c478bd9Sstevel@tonic-gate# 37c478bd9Sstevel@tonic-gate# CDDL HEADER START 47c478bd9Sstevel@tonic-gate# 57c478bd9Sstevel@tonic-gate# The contents of this file are subject to the terms of the 6b84bdc30Smeem# Common Development and Distribution License (the "License"). 7b84bdc30Smeem# You may not use this file except in compliance with the License. 87c478bd9Sstevel@tonic-gate# 97c478bd9Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 107c478bd9Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing. 117c478bd9Sstevel@tonic-gate# See the License for the specific language governing permissions 127c478bd9Sstevel@tonic-gate# and limitations under the License. 137c478bd9Sstevel@tonic-gate# 147c478bd9Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each 157c478bd9Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 167c478bd9Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the 177c478bd9Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying 187c478bd9Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner] 197c478bd9Sstevel@tonic-gate# 207c478bd9Sstevel@tonic-gate# CDDL HEADER END 217c478bd9Sstevel@tonic-gate# 224e5b757fSkupfer 237c478bd9Sstevel@tonic-gate# 24b83ec4edSjmcp# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 25*d7693b08SRoland Mainz# Copyright 2011 Nexenta Systems, Inc. All rights reserved. 267c478bd9Sstevel@tonic-gate# 277c478bd9Sstevel@tonic-gate# Uses supplied "env" file, based on /opt/onbld/etc/env, to set shell variables 287c478bd9Sstevel@tonic-gate# before spawning a shell for doing a release-style builds interactively 297c478bd9Sstevel@tonic-gate# and incrementally. 307c478bd9Sstevel@tonic-gate# 317c478bd9Sstevel@tonic-gate 32*d7693b08SRoland Mainzfunction fatal_error 33*d7693b08SRoland Mainz{ 34*d7693b08SRoland Mainz print -u2 "${progname}: $*" 35*d7693b08SRoland Mainz exit 1 36*d7693b08SRoland Mainz} 37*d7693b08SRoland Mainz 3863df1173Spetedefunction usage 3963df1173Spetede{ 4063df1173Spetede OPTIND=0 4163df1173Spetede getopts -a "${progname}" "${USAGE}" OPT '-?' 4263df1173Spetede exit 2 4363df1173Spetede} 447c478bd9Sstevel@tonic-gate 4563df1173Spetedefunction is_source_build 4663df1173Spetede{ 4763df1173Spetede "${flags.s.e}" || "${flags.s.d}" || "${flags.s.h}" || "${flags.s.o}" 481fe69678Skupfer return $? 491fe69678Skupfer} 501fe69678Skupfer 511fe69678Skupfer# 521fe69678Skupfer# single function for setting -S flag and doing error checking. 531fe69678Skupfer# usage: set_S_flag <type> 541fe69678Skupfer# where <type> is the source build type ("E", "D", ...). 551fe69678Skupfer# 5663df1173Spetedefunction set_S_flag 5763df1173Spetede{ 581fe69678Skupfer if is_source_build; then 5963df1173Spetede print 'Can only build one source variant at a time.' 601fe69678Skupfer exit 1 611fe69678Skupfer fi 6263df1173Spetede 6363df1173Spetede case "$1" in 6463df1173Spetede "E") flags.s.e=true ;; 6563df1173Spetede "D") flags.s.d=true ;; 6663df1173Spetede "H") flags.s.h=true ;; 6763df1173Spetede "O") flags.s.o=true ;; 6863df1173Spetede *) usage ;; 6963df1173Spetede esac 701fe69678Skupfer} 717c478bd9Sstevel@tonic-gate 7263df1173Spetedetypeset -r USAGE=$'+ 7363df1173Spetede[-?\n@(#)\$Id: bldenv (OS/Net) 2008-04-06 \$\n] 7463df1173Spetede[-author?OS/Net community <tools-discuss@opensolaris.org>] 7563df1173Spetede[+NAME?bldenv - spawn shell for interactive incremental OS-Net 7663df1173Spetede consolidation builds] 7763df1173Spetede[+DESCRIPTION?bldenv is a useful companion to the nightly(1) script for 7863df1173Spetede doing interactive and incremental builds in a workspace 7963df1173Spetede already built with nightly(1). bldenv spawns a shell set up 8063df1173Spetede with the same environment variables taken from an env_file, 8163df1173Spetede as prepared for use with nightly(1).] 8263df1173Spetede[+?In addition to running a shell for interactive use, bldenv 8363df1173Spetede can optionally run a single command in the given environment, 8463df1173Spetede in the vein of sh -c or su -c. This is useful for 8563df1173Spetede scripting, when an interactive shell would not be. If the 8663df1173Spetede command is composed of multiple shell words or contains 8763df1173Spetede other shell metacharacters, it must be quoted appropriately.] 8863df1173Spetede[+?bldenv is particularly useful for testing Makefile targets 8963df1173Spetede like clobber, install and _msg, which otherwise require digging 9063df1173Spetede through large build logs to figure out what is being 9163df1173Spetede done.] 9263df1173Spetede[+?bldenv is also useful if you run into build issues with the 9363df1173Spetede source product or when generating OpenSolaris deliverables. 9463df1173Spetede If a source product build is flagged, the environment is set 9563df1173Spetede up for building the indicated source product tree, which is 9663df1173Spetede assumed to have already been created. If the OpenSolaris 9763df1173Spetede deliverables flag (-O) is set in NIGHTLY_OPTIONS, the 9863df1173Spetede environment is set up for building just the open source. 9963df1173Spetede This includes using an alternate proto area, as well as 10063df1173Spetede using the closed binaries in $CODEMGR_WS/closed.skel (which 10163df1173Spetede is assumed to already exist).] 10263df1173Spetede[+?By default, bldenv will invoke the shell specified in 10363df1173Spetede $SHELL. If $SHELL is not set or is invalid, csh will be 10463df1173Spetede used.] 10563df1173Spetede[c?force the use of csh, regardless of the value of $SHELL.] 10663df1173Spetede[f?invoke csh with the -f (fast-start) option. This option is valid 10763df1173Spetede only if $SHELL is unset or if it points to csh.] 10863df1173Spetede[d?set up environment for doing DEBUG builds (default is non-DEBUG)] 10963df1173Spetede[t?set up environment to use the tools in usr/src/tools (this is the 11063df1173Spetede default, use +t to use the tools from /opt/onbld)] 11163df1173Spetede[S]:[option?Build a variant of the source product. 11263df1173SpetedeThe value of \aoption\a must be one of the following:]{ 11363df1173Spetede [+E?build the exportable source variant of the source product.] 11463df1173Spetede [+D?build the domestic source (exportable + crypt) variant of 11563df1173Spetede the source product.] 11663df1173Spetede [+H?build hybrid source (binaries + deleted source).] 11763df1173Spetede [+O?simulate an OpenSolaris (open source only) build.] 11863df1173Spetede} 11963df1173Spetede 12063df1173Spetede<env_file> [command] 12163df1173Spetede 12263df1173Spetede[+EXAMPLES]{ 12363df1173Spetede [+?Example 1: Interactive use]{ 12463df1173Spetede [+?Use bldenv to spawn a shell to perform a DEBUG build and 12563df1173Spetede testing of the Makefile targets clobber and install for 12663df1173Spetede usr/src/cmd/true.] 12763df1173Spetede [+\n% rlogin wopr-2 -l gk 12863df1173Spetede{root::wopr-2::49} bldenv -d /export0/jg/on10-se.env 12963df1173SpetedeBuild type is DEBUG 13063df1173SpetedeRELEASE is 5.10 13163df1173SpetedeVERSION is wopr-2::on10-se::11/01/2001 13263df1173SpetedeRELEASE_DATE is May 2004 13363df1173SpetedeThe top-level `setup\' target is available to build headers 13463df1173Spetedeand tools. 13563df1173SpetedeUsing /usr/bin/tcsh as shell. 13663df1173Spetede{root::wopr-2::49} 13763df1173Spetede{root::wopr-2::49} cd $SRC/cmd/true 13863df1173Spetede{root::wopr-2::50} make 13963df1173Spetede{root::wopr-2::51} make clobber 14063df1173Spetede/usr/bin/rm -f true true.po 14163df1173Spetede{root::wopr-2::52} make 14263df1173Spetede/usr/bin/rm -f true 14363df1173Spetedecat true.sh > true 14463df1173Spetedechmod +x true 14563df1173Spetede{root::wopr-2::53} make install 14663df1173Spetedeinstall -s -m 0555 -u root -g bin -f /export0/jg/on10-se/proto/root_sparc/usr/bin true 14763df1173Spetede`install\' is up to date.] 14863df1173Spetede } 14963df1173Spetede [+?Example 2: Non-interactive use]{ 15063df1173Spetede [+?Invoke bldenv to create SUNWonbld with a single command:] 15163df1173Spetede [+\nexample% bldenv onnv_06 \'cd $SRC/tools && make pkg\'] 15263df1173Spetede } 15363df1173Spetede} 15463df1173Spetede[+SEE ALSO?\bnightly\b(1)] 15563df1173Spetede' 15663df1173Spetede 15763df1173Spetede# main 15863df1173Spetedebuiltin basename 15963df1173Spetede 16063df1173Spetede# boolean flags (true/false) 16163df1173Spetedetypeset flags=( 16263df1173Spetede typeset c=false 16363df1173Spetede typeset f=false 16463df1173Spetede typeset d=false 16563df1173Spetede typeset O=false 16663df1173Spetede typeset o=false 16763df1173Spetede typeset t=true 16863df1173Spetede typeset s=( 16963df1173Spetede typeset e=false 17063df1173Spetede typeset h=false 17163df1173Spetede typeset d=false 17263df1173Spetede typeset o=false 17363df1173Spetede ) 17463df1173Spetede) 17563df1173Spetede 176*d7693b08SRoland Mainztypeset progname="$(basename -- "${0}")" 17763df1173Spetede 1787c478bd9Sstevel@tonic-gateOPTIND=1 1797c478bd9Sstevel@tonic-gateSUFFIX="-nd" 18063df1173Spetede 18163df1173Spetedewhile getopts -a "${progname}" "${USAGE}" OPT ; do 18263df1173Spetede case ${OPT} in 18363df1173Spetede c) flags.c=true ;; 18463df1173Spetede +c) flags.c=false ;; 18563df1173Spetede f) flags.f=true ;; 18663df1173Spetede +f) flags.f=false ;; 18763df1173Spetede d) flags.d=true SUFFIX="" ;; 18863df1173Spetede +d) flags.d=false SUFFIX="-nd" ;; 18963df1173Spetede t) flags.t=true ;; 19063df1173Spetede +t) flags.t=false ;; 19163df1173Spetede S) set_S_flag "$OPTARG" ;; 19263df1173Spetede \?) usage ;; 1937c478bd9Sstevel@tonic-gate esac 1947c478bd9Sstevel@tonic-gatedone 19563df1173Spetedeshift $((OPTIND-1)) 1967c478bd9Sstevel@tonic-gate 1977c478bd9Sstevel@tonic-gate# test that the path to the environment-setting file was given 19863df1173Spetedeif (( $# < 1 )) ; then 19963df1173Spetede usage 2007c478bd9Sstevel@tonic-gatefi 2017c478bd9Sstevel@tonic-gate 2027c478bd9Sstevel@tonic-gate# force locale to C 20363df1173Spetedeexport \ 20463df1173Spetede LC_COLLATE=C \ 20563df1173Spetede LC_CTYPE=C \ 20663df1173Spetede LC_MESSAGES=C \ 20763df1173Spetede LC_MONETARY=C \ 20863df1173Spetede LC_NUMERIC=C \ 20963df1173Spetede LC_TIME=C 2107c478bd9Sstevel@tonic-gate 2117c478bd9Sstevel@tonic-gate# clear environment variables we know to be bad for the build 21263df1173Spetedeunset \ 21363df1173Spetede LD_OPTIONS \ 21463df1173Spetede LD_LIBRARY_PATH \ 21563df1173Spetede LD_AUDIT \ 21663df1173Spetede LD_BIND_NOW \ 21763df1173Spetede LD_BREADTH \ 21863df1173Spetede LD_CONFIG \ 21963df1173Spetede LD_DEBUG \ 22063df1173Spetede LD_FLAGS \ 22163df1173Spetede LD_LIBRARY_PATH_64 \ 22263df1173Spetede LD_NOVERSION \ 22363df1173Spetede LD_ORIGIN \ 22463df1173Spetede LD_LOADFLTR \ 22563df1173Spetede LD_NOAUXFLTR \ 22663df1173Spetede LD_NOCONFIG \ 22763df1173Spetede LD_NODIRCONFIG \ 22863df1173Spetede LD_NOOBJALTER \ 22963df1173Spetede LD_PRELOAD \ 23063df1173Spetede LD_PROFILE \ 23163df1173Spetede CONFIG \ 23263df1173Spetede GROUP \ 23363df1173Spetede OWNER \ 23463df1173Spetede REMOTE \ 23563df1173Spetede ENV \ 23663df1173Spetede ARCH \ 23763df1173Spetede CLASSPATH 2387c478bd9Sstevel@tonic-gate 2390756aa0bSGavin Maltby# 2400756aa0bSGavin Maltby# Setup environment variables 2410756aa0bSGavin Maltby# 2420756aa0bSGavin Maltbyif [[ -f /etc/nightly.conf ]]; then 2430756aa0bSGavin Maltby source /etc/nightly.conf 2440756aa0bSGavin Maltbyfi 2450756aa0bSGavin Maltby 24663df1173Spetedeif [[ -f "$1" ]]; then 24763df1173Spetede if [[ "$1" == */* ]]; then 24863df1173Spetede source "$1" 2497c478bd9Sstevel@tonic-gate else 25063df1173Spetede source "./$1" 2517c478bd9Sstevel@tonic-gate fi 2527c478bd9Sstevel@tonic-gateelse 25363df1173Spetede if [[ -f "/opt/onbld/env/$1" ]]; then 25463df1173Spetede source "/opt/onbld/env/$1" 2557c478bd9Sstevel@tonic-gate else 25663df1173Spetede printf \ 25763df1173Spetede 'Cannot find env file as either %s or /opt/onbld/env/%s\n' \ 25863df1173Spetede "$1" "$1" 2597c478bd9Sstevel@tonic-gate exit 1 2607c478bd9Sstevel@tonic-gate fi 2617c478bd9Sstevel@tonic-gatefi 2627c478bd9Sstevel@tonic-gateshift 2637c478bd9Sstevel@tonic-gate 2641fe69678Skupfer# contents of stdenv.sh inserted after next line: 2651fe69678Skupfer# STDENV_START 2661fe69678Skupfer# STDENV_END 2677c478bd9Sstevel@tonic-gate 268*d7693b08SRoland Mainz# Check if we have sufficient data to continue... 269*d7693b08SRoland Mainz[[ -v CODEMGR_WS ]] || fatal_error "Error: Variable CODEMGR_WS not set." 270*d7693b08SRoland Mainz[[ -d "${CODEMGR_WS}" ]] || fatal_error "Error: ${CODEMGR_WS} is not a directory." 271*d7693b08SRoland Mainz[[ -f "${CODEMGR_WS}/usr/src/Makefile" ]] || fatal_error "Error: ${CODEMGR_WS}/usr/src/Makefile not found." 272*d7693b08SRoland Mainz 27363df1173Spetede#MACH=$(uname -p) 274fb9f9b97Skupfer 2757c478bd9Sstevel@tonic-gate# must match the getopts in nightly.sh 2767c478bd9Sstevel@tonic-gateOPTIND=1 27763df1173SpetedeNIGHTLY_OPTIONS="-${NIGHTLY_OPTIONS#-}" 27811a78ea0SMark J. Nelsonwhile getopts '+0AaBCDdFfGIilMmNnOopRrS:tUuWwXxz' FLAG "$NIGHTLY_OPTIONS" 2797c478bd9Sstevel@tonic-gatedo 28063df1173Spetede case "$FLAG" in 28163df1173Spetede O) flags.O=true ;; 28263df1173Spetede +O) flags.O=false ;; 28363df1173Spetede o) flags.o=true ;; 28463df1173Spetede +o) flags.o=false ;; 28563df1173Spetede t) flags.t=true ;; 28663df1173Spetede +t) flags.t=false ;; 28763df1173Spetede S) set_S_flag "$OPTARG" ;; 2887c478bd9Sstevel@tonic-gate *) ;; 2897c478bd9Sstevel@tonic-gate esac 2907c478bd9Sstevel@tonic-gatedone 2917c478bd9Sstevel@tonic-gate 29248bc00d6SjmcpPOUND_SIGN="#" 29348bc00d6Sjmcp# have we set RELEASE_DATE in our env file? 29448bc00d6Sjmcpif [ -z "$RELEASE_DATE" ]; then 29548bc00d6Sjmcp RELEASE_DATE=$(LC_ALL=C date +"%B %Y") 29648bc00d6Sjmcpfi 29748bc00d6SjmcpBUILD_DATE=$(LC_ALL=C date +%Y-%b-%d) 298*d7693b08SRoland MainzBASEWSDIR=$(basename -- "${CODEMGR_WS}") 29948bc00d6SjmcpDEV_CM="\"@(#)SunOS Internal Development: $LOGNAME $BUILD_DATE [$BASEWSDIR]\"" 30048bc00d6Sjmcpexport DEV_CM RELEASE_DATE POUND_SIGN 30148bc00d6Sjmcp 30263df1173Spetedeexport INTERNAL_RELEASE_BUILD= 30363df1173Spetede 30463df1173Spetedeprint 'Build type is \c' 30563df1173Spetedeif ${flags.d} ; then 30663df1173Spetede print 'DEBUG' 3077c478bd9Sstevel@tonic-gate unset RELEASE_BUILD 3087c478bd9Sstevel@tonic-gate unset EXTRA_OPTIONS 3097c478bd9Sstevel@tonic-gate unset EXTRA_CFLAGS 3107c478bd9Sstevel@tonic-gateelse 3117c478bd9Sstevel@tonic-gate # default is a non-DEBUG build 31263df1173Spetede print 'non-DEBUG' 31363df1173Spetede export RELEASE_BUILD= 3147c478bd9Sstevel@tonic-gate unset EXTRA_OPTIONS 3157c478bd9Sstevel@tonic-gate unset EXTRA_CFLAGS 3167c478bd9Sstevel@tonic-gatefi 3177c478bd9Sstevel@tonic-gate 318b83ec4edSjmcp[[ "${flags.O}" ]] && export MULTI_PROTO="yes" 3194e5b757fSkupfer 3207c478bd9Sstevel@tonic-gate# update build-type variables 32163df1173SpetedePKGARCHIVE="${PKGARCHIVE}${SUFFIX}" 3227c478bd9Sstevel@tonic-gate 3237c478bd9Sstevel@tonic-gate# Append source version 32463df1173Spetedeif "${flags.s.e}" ; then 32563df1173Spetede VERSION+=":EXPORT" 32663df1173Spetede SRC="${EXPORT_SRC}/usr/src" 3277c478bd9Sstevel@tonic-gatefi 3287c478bd9Sstevel@tonic-gate 32963df1173Spetedeif "${flags.s.d}" ; then 33063df1173Spetede VERSION+=":DOMESTIC" 33163df1173Spetede SRC="${EXPORT_SRC}/usr/src" 3327c478bd9Sstevel@tonic-gatefi 3337c478bd9Sstevel@tonic-gate 33463df1173Spetedeif "${flags.s.h}" ; then 33563df1173Spetede VERSION+=":HYBRID" 33663df1173Spetede SRC="${EXPORT_SRC}/usr/src" 3377c478bd9Sstevel@tonic-gatefi 3387c478bd9Sstevel@tonic-gate 33963df1173Spetedeif "${flags.s.o}" ; then 34063df1173Spetede VERSION+=":OPEN_ONLY" 34163df1173Spetede SRC="${OPEN_SRCDIR}/usr/src" 3421fe69678Skupferfi 3431fe69678Skupfer 344cdf0c1d5Smjnelson# 345cdf0c1d5Smjnelson# Keep track of this now, before we manipulate $PATH 346cdf0c1d5Smjnelson# 347*d7693b08SRoland MainzWHICH_SCM="$(dirname -- "$(whence "$0")")/which_scm" 348cdf0c1d5Smjnelsonif [[ ! -x $WHICH_SCM ]]; then 349cdf0c1d5Smjnelson WHICH_SCM=which_scm 350cdf0c1d5Smjnelsonfi 351cdf0c1d5Smjnelson$WHICH_SCM | read SCM_TYPE junk 352cdf0c1d5Smjnelson 353cdf0c1d5Smjnelson 3547c478bd9Sstevel@tonic-gate# Set PATH for a build 355b84bdc30SmeemPATH="/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:." 35663df1173Spetedeif [[ "${SUNWSPRO}" != "" ]]; then 35763df1173Spetede export PATH="${SUNWSPRO}/bin:$PATH" 3587c478bd9Sstevel@tonic-gatefi 3597c478bd9Sstevel@tonic-gate 36063df1173Spetedeif [[ -z "$CLOSED_IS_PRESENT" ]]; then 36163df1173Spetede if [[ -d $SRC/../closed ]]; then 36263df1173Spetede export CLOSED_IS_PRESENT="yes" 3631fe69678Skupfer else 36463df1173Spetede export CLOSED_IS_PRESENT="no" 3651fe69678Skupfer fi 3661fe69678Skupferfi 3671fe69678Skupfer 36863df1173SpetedeTOOLS="${SRC}/tools" 369ead1f93eSLiane PrazaTOOLS_PROTO="${TOOLS}/proto/root_${MACH}-nd" ; export TOOLS_PROTO 3707c478bd9Sstevel@tonic-gate 37163df1173Spetedeif "${flags.t}" ; then 37263df1173Spetede export ONBLD_TOOLS="${ONBLD_TOOLS:=${TOOLS_PROTO}/opt/onbld}" 3737c478bd9Sstevel@tonic-gate 37463df1173Spetede export STABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/stabs" 37563df1173Spetede export CTFSTABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfstabs" 37663df1173Spetede export GENOFFSETS="${TOOLS_PROTO}/opt/onbld/bin/genoffsets" 3777c478bd9Sstevel@tonic-gate 37863df1173Spetede export CTFCONVERT="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfconvert" 37963df1173Spetede export CTFMERGE="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfmerge" 3807c478bd9Sstevel@tonic-gate 38163df1173Spetede export CTFCVTPTBL="${TOOLS_PROTO}/opt/onbld/bin/ctfcvtptbl" 38263df1173Spetede export CTFFINDMOD="${TOOLS_PROTO}/opt/onbld/bin/ctffindmod" 3837c478bd9Sstevel@tonic-gate 3847c478bd9Sstevel@tonic-gate PATH="${TOOLS_PROTO}/opt/onbld/bin/${MACH}:${PATH}" 3857c478bd9Sstevel@tonic-gate PATH="${TOOLS_PROTO}/opt/onbld/bin:${PATH}" 3867c478bd9Sstevel@tonic-gate export PATH 3877c478bd9Sstevel@tonic-gatefi 3887c478bd9Sstevel@tonic-gate 3890756aa0bSGavin Maltbyexport DMAKE_MODE=${DMAKE_MODE:-parallel} 39063df1173Spetede 39163df1173Spetedeif "${flags.o}" ; then 39263df1173Spetede export CH= 39363df1173Spetedeelse 3947c478bd9Sstevel@tonic-gate unset CH 3957c478bd9Sstevel@tonic-gatefi 3967c478bd9Sstevel@tonic-gateDEF_STRIPFLAG="-s" 3977c478bd9Sstevel@tonic-gate 3987c478bd9Sstevel@tonic-gateTMPDIR="/tmp" 3997c478bd9Sstevel@tonic-gate 40078add226Sjmcp# "o_FLAG" is used by "nightly.sh" (it may be useful to rename this 40178add226Sjmcp# variable using a more descriptive name later) 40263df1173Spetedeexport o_FLAG="$(${flags.o} && print 'y' || print 'n')" 40363df1173Spetede 40463df1173Spetedeexport \ 40563df1173Spetede PATH TMPDIR \ 40663df1173Spetede POUND_SIGN \ 40748bc00d6Sjmcp DEF_STRIPFLAG \ 40848bc00d6Sjmcp RELEASE_DATE 40963df1173Spetedeunset \ 41063df1173Spetede CFLAGS \ 41163df1173Spetede LD_LIBRARY_PATH 4127c478bd9Sstevel@tonic-gate 4137c478bd9Sstevel@tonic-gate# a la ws 4147c478bd9Sstevel@tonic-gateENVLDLIBS1= 4157c478bd9Sstevel@tonic-gateENVLDLIBS2= 4167c478bd9Sstevel@tonic-gateENVLDLIBS3= 4177c478bd9Sstevel@tonic-gateENVCPPFLAGS1= 4187c478bd9Sstevel@tonic-gateENVCPPFLAGS2= 4197c478bd9Sstevel@tonic-gateENVCPPFLAGS3= 4207c478bd9Sstevel@tonic-gateENVCPPFLAGS4= 4217c478bd9Sstevel@tonic-gatePARENT_ROOT= 422ead1f93eSLiane PrazaPARENT_TOOLS_ROOT= 4237c478bd9Sstevel@tonic-gate 42463df1173Spetedeif [[ "$MULTI_PROTO" != "yes" && "$MULTI_PROTO" != "no" ]]; then 42563df1173Spetede printf \ 42663df1173Spetede 'WARNING: invalid value for MULTI_PROTO (%s); setting to "no".\n' \ 42763df1173Spetede "$MULTI_PROTO" 42863df1173Spetede export MULTI_PROTO="no" 4294e5b757fSkupferfi 4304e5b757fSkupfer 43163df1173Spetede[[ "$MULTI_PROTO" == "yes" ]] && export ROOT="${ROOT}${SUFFIX}" 4324e5b757fSkupfer 433b83ec4edSjmcpexport TONICBUILD="#" 434b83ec4edSjmcp 435b83ec4edSjmcpif "${flags.O}" ; then 436b83ec4edSjmcp if [[ "$CLOSED_IS_PRESENT" != "yes" ]]; then 437b83ec4edSjmcp print "OpenSolaris closed binary generation requires " 438b83ec4edSjmcp print "closed tree" 439b83ec4edSjmcp exit 1 440b83ec4edSjmcp fi 441b83ec4edSjmcp print "Generating OpenSolaris deliverables" 442b83ec4edSjmcp # We only need CLOSEDROOT in the env for convenience. Makefile.master 443b83ec4edSjmcp # figures out what it needs when it matters. 444b83ec4edSjmcp export CLOSEDROOT="${ROOT}-closed" 445b83ec4edSjmcp export TONICBUILD="" 446b83ec4edSjmcpfi 447b83ec4edSjmcp 4487c478bd9Sstevel@tonic-gateENVLDLIBS1="-L$ROOT/lib -L$ROOT/usr/lib" 4497c478bd9Sstevel@tonic-gateENVCPPFLAGS1="-I$ROOT/usr/include" 4507c478bd9Sstevel@tonic-gateMAKEFLAGS=e 4517c478bd9Sstevel@tonic-gate 45263df1173Spetedeexport \ 45363df1173Spetede ENVLDLIBS1 \ 45463df1173Spetede ENVLDLIBS2 \ 45563df1173Spetede ENVLDLIBS3 \ 45663df1173Spetede ENVCPPFLAGS1 \ 45763df1173Spetede ENVCPPFLAGS2 \ 45863df1173Spetede ENVCPPFLAGS3 \ 45963df1173Spetede ENVCPPFLAGS4 \ 46063df1173Spetede MAKEFLAGS \ 461cdf0c1d5Smjnelson PARENT_ROOT \ 462ead1f93eSLiane Praza PARENT_TOOLS_ROOT \ 463cdf0c1d5Smjnelson SCM_TYPE 4647c478bd9Sstevel@tonic-gate 46563df1173Spetedeprintf 'RELEASE is %s\n' "$RELEASE" 46663df1173Spetedeprintf 'VERSION is %s\n' "$VERSION" 46763df1173Spetedeprintf 'RELEASE_DATE is %s\n\n' "$RELEASE_DATE" 4687c478bd9Sstevel@tonic-gate 46963df1173Spetedeif [[ -f "$SRC/Makefile" ]] && egrep -s '^setup:' "$SRC/Makefile" ; then 47063df1173Spetede print "The top-level 'setup' target is available \c" 47163df1173Spetede print "to build headers and tools." 47263df1173Spetede print "" 4737c478bd9Sstevel@tonic-gate 47463df1173Spetedeelif "${flags.t}" ; then 47563df1173Spetede printf \ 47663df1173Spetede 'The tools can be (re)built with the install target in %s.\n\n' \ 47763df1173Spetede "${TOOLS}" 4787c478bd9Sstevel@tonic-gatefi 4797c478bd9Sstevel@tonic-gate 4800756aa0bSGavin Maltby# 4810756aa0bSGavin Maltby# place ourselves in a new task, respecting BUILD_PROJECT if set. 4820756aa0bSGavin Maltby# 4830756aa0bSGavin Maltby/usr/bin/newtask -c $$ ${BUILD_PROJECT:+-p$BUILD_PROJECT} 4847c478bd9Sstevel@tonic-gate 48563df1173Spetedeif [[ "${flags.c}" == "false" && -x "$SHELL" && \ 486*d7693b08SRoland Mainz "$(basename -- "${SHELL}")" != "csh" ]]; then 4877c478bd9Sstevel@tonic-gate # $SHELL is set, and it's not csh. 4887c478bd9Sstevel@tonic-gate 48963df1173Spetede if "${flags.f}" ; then 49063df1173Spetede print 'WARNING: -f is ignored when $SHELL is not csh' 4917c478bd9Sstevel@tonic-gate fi 4927c478bd9Sstevel@tonic-gate 49363df1173Spetede printf 'Using %s as shell.\n' "$SHELL" 49463df1173Spetede exec "$SHELL" ${@:+-c "$@"} 4957c478bd9Sstevel@tonic-gate 49663df1173Spetedeelif "${flags.f}" ; then 49763df1173Spetede print 'Using csh -f as shell.' 4987c478bd9Sstevel@tonic-gate exec csh -f ${@:+-c "$@"} 4997c478bd9Sstevel@tonic-gate 5007c478bd9Sstevel@tonic-gateelse 50163df1173Spetede print 'Using csh as shell.' 5027c478bd9Sstevel@tonic-gate exec csh ${@:+-c "$@"} 5037c478bd9Sstevel@tonic-gatefi 50463df1173Spetede 50563df1173Spetede# not reached 506