summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr/src/tools/SUNWonbld/prototype_com1
-rw-r--r--usr/src/tools/env/developer.sh10
-rw-r--r--usr/src/tools/env/gatekeeper.sh10
-rw-r--r--usr/src/tools/env/opensolaris.sh10
-rw-r--r--usr/src/tools/scripts/Makefile11
-rw-r--r--usr/src/tools/scripts/bldenv.122
-rw-r--r--usr/src/tools/scripts/bldenv.sh115
-rw-r--r--usr/src/tools/scripts/mkclosed.sh87
-rw-r--r--usr/src/tools/scripts/nightly.153
-rw-r--r--usr/src/tools/scripts/nightly.sh236
-rw-r--r--usr/src/tools/scripts/stdenv.sh56
11 files changed, 393 insertions, 218 deletions
diff --git a/usr/src/tools/SUNWonbld/prototype_com b/usr/src/tools/SUNWonbld/prototype_com
index 715825ca77..a69867c22e 100644
--- a/usr/src/tools/SUNWonbld/prototype_com
+++ b/usr/src/tools/SUNWonbld/prototype_com
@@ -79,6 +79,7 @@ f none opt/onbld/bin/makebfu 555 root bin
f none opt/onbld/bin/make_pkg_db 555 root bin
f none opt/onbld/bin/mkacr 555 root bin
f none opt/onbld/bin/mkbfu 555 root bin
+f none opt/onbld/bin/mkclosed 555 root bin
f none opt/onbld/bin/nightly 555 root bin
f none opt/onbld/bin/protocmp.terse 555 root bin
f none opt/onbld/bin/sccscheck 555 root bin
diff --git a/usr/src/tools/env/developer.sh b/usr/src/tools/env/developer.sh
index 908fef98f0..eaa3d59b73 100644
--- a/usr/src/tools/env/developer.sh
+++ b/usr/src/tools/env/developer.sh
@@ -103,16 +103,6 @@ ROOT="$CODEMGR_WS/proto/root_${MACH}"; export ROOT
SRC="$CODEMGR_WS/usr/src"; export SRC
VERSION="$GATE"; export VERSION
-# the source product has no SCCS history, and is modified to remove source
-# that cannot be shipped. EXPORT_SRC is where the clear files are copied, then
-# modified with 'make EXPORT_SRC'.
-EXPORT_SRC="$CODEMGR_WS/export_src"; export EXPORT_SRC
-
-# CRYPT_SRC is similar to EXPORT_SRC, but after 'make CRYPT_SRC' the files in
-# xmod/cry_files are saved. They are dropped on the exportable source to create
-# the domestic build.
-CRYPT_SRC="$CODEMGR_WS/crypt_src"; export CRYPT_SRC
-
#
# the RELEASE and RELEASE_DATE variables are set in Makefile.master;
# there might be special reasons to override them here, but that
diff --git a/usr/src/tools/env/gatekeeper.sh b/usr/src/tools/env/gatekeeper.sh
index 6b52e87dc3..49c315156d 100644
--- a/usr/src/tools/env/gatekeeper.sh
+++ b/usr/src/tools/env/gatekeeper.sh
@@ -113,16 +113,6 @@ ROOT="$CODEMGR_WS/proto/root_${MACH}"; export ROOT
SRC="$CODEMGR_WS/usr/src"; export SRC
VERSION="$GATE"; export VERSION
-# the source product has no SCCS history, and is modified to remove source
-# that cannot be shipped. EXPORT_SRC is where the clear files are copied, then
-# modified with 'make EXPORT_SRC'.
-EXPORT_SRC="$CODEMGR_WS/export_src"; export EXPORT_SRC
-
-# CRYPT_SRC is similar to EXPORT_SRC, but after 'make CRYPT_SRC' the files in
-# xmod/cry_files are saved. They are dropped on the exportable source to create
-# the domestic build.
-CRYPT_SRC="$CODEMGR_WS/crypt_src"; export CRYPT_SRC
-
#
# the RELEASE and RELEASE_DATE variables are set in Makefile.master;
# there might be special reasons to override them here, but that
diff --git a/usr/src/tools/env/opensolaris.sh b/usr/src/tools/env/opensolaris.sh
index ecfc44d79b..528bb40417 100644
--- a/usr/src/tools/env/opensolaris.sh
+++ b/usr/src/tools/env/opensolaris.sh
@@ -123,16 +123,6 @@ ROOT="$CODEMGR_WS/proto/root_${MACH}"; export ROOT
SRC="$CODEMGR_WS/usr/src"; export SRC
VERSION="$GATE"; export VERSION
-# the source product has no SCCS history, and is modified to remove source
-# that cannot be shipped. EXPORT_SRC is where the clear files are copied, then
-# modified with 'make EXPORT_SRC'.
-EXPORT_SRC="$CODEMGR_WS/export_src"; export EXPORT_SRC
-
-# CRYPT_SRC is similar to EXPORT_SRC, but after 'make CRYPT_SRC' the files in
-# xmod/cry_files are saved. They are dropped on the exportable source to create
-# the domestic build.
-CRYPT_SRC="$CODEMGR_WS/crypt_src"; export CRYPT_SRC
-
#
# the RELEASE and RELEASE_DATE variables are set in Makefile.master;
# there might be special reasons to override them here, but that
diff --git a/usr/src/tools/scripts/Makefile b/usr/src/tools/scripts/Makefile
index e9870ceb5a..2942b19696 100644
--- a/usr/src/tools/scripts/Makefile
+++ b/usr/src/tools/scripts/Makefile
@@ -44,6 +44,7 @@ SHFILES= \
makebfu \
mkacr \
mkbfu \
+ mkclosed \
nightly \
protocmp.terse \
sccscheck \
@@ -113,6 +114,16 @@ install: all .WAIT $(ROOTONBLDSHFILES) $(ROOTONBLDPERLFILES) \
clean:
$(RM) $(CLEANFILES)
+bldenv: bldenv.sh stdenv.sh
+ $(RM) $@
+ sed -e '/# STDENV_START/ r stdenv.sh' bldenv.sh > bldenv
+ $(CHMOD) +x $@
+
+nightly: nightly.sh stdenv.sh
+ $(RM) $@
+ sed -e '/# STDENV_START/ r stdenv.sh' nightly.sh > nightly
+ $(CHMOD) +x $@
+
cddlchk.1: cddlchk.pl
/usr/perl5/bin/pod2man --center='User Commands' --name=cddlchk \
--section=1 --release='SunOS $(RELEASE)' $? > $@
diff --git a/usr/src/tools/scripts/bldenv.1 b/usr/src/tools/scripts/bldenv.1
index e72e2da77f..3fe6c277ea 100644
--- a/usr/src/tools/scripts/bldenv.1
+++ b/usr/src/tools/scripts/bldenv.1
@@ -1,10 +1,9 @@
.\" ident "%Z%%M% %I% %E% SMI"
.\" " CDDL HEADER START
.\" "
-.\" " The contents of this file are subject to the terms of the
-.\" " Common Development and Distribution License, Version 1.0 only
-.\" " (the "License"). You may not use this file except in compliance
-.\" " with the License.
+.\" The contents of this file are subject to the terms of the
+.\" Common Development and Distribution License (the "License").
+.\" You may not use this file except in compliance with the License.
.\" "
.\" " You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
.\" " or http://www.opensolaris.org/os/licensing.
@@ -19,15 +18,15 @@
.\" "
.\" " CDDL HEADER END
.\" "
-.\" "Copyright 2005 Sun Microsystems, Inc."
+.\" "Copyright 2006 Sun Microsystems, Inc."
.\" "All rights reserved"
.\" "Use is subject to license terms."
-.TH bldenv 1 "04 Jan 2005"
+.TH bldenv 1 "19 Sep 2006"
.SH NAME
.I bldenv
\- spawn shell for interactive incremental OS-Net consolidation builds
.SH SYNOPSIS
-\fBbldenv [-fdt] [-S E|C|D] <env_file> [command]\fP
+\fBbldenv [-fdt] [-S E|H|D|O] <env_file> [command]\fP
.LP
.SH DESCRIPTION
.IX "OS-Net build tools" "bldenv" "" "\fBbldenv\fP"
@@ -73,11 +72,14 @@ set up environment to use the tools in usr/src/tools
.B \-S E
build the exportable source variant of the source product
.TP
-.B \-S C
-build the crypt source variant of the source product
-.TP
.B \-S D
build the domestic source (exportable + crypt) variant of the source product
+.TP
+.B \-S H
+build hybrid source (binaries + deleted source)
+.TP
+.B \-S O
+simulate an OpenSolaris (open source only) build
.LP
.SH EXAMPLES
.LP
diff --git a/usr/src/tools/scripts/bldenv.sh b/usr/src/tools/scripts/bldenv.sh
index 728b79dd56..20f8a19354 100644
--- a/usr/src/tools/scripts/bldenv.sh
+++ b/usr/src/tools/scripts/bldenv.sh
@@ -29,7 +29,7 @@
# before spawning a shell for doing a release-style builds interactively
# and incrementally.
#
-USAGE='Usage: bldenv [-fdt] [ -S E|D|H ] <env_file> [ command ]
+USAGE='Usage: bldenv [-fdt] [ -S E|D|H|O ] <env_file> [ command ]
Where:
-c Force the use of csh - ignore $SHELL
@@ -40,6 +40,7 @@ Where:
E - build exportable source
D - build domestic source (exportable + crypt)
H - build hybrid source (binaries + deleted source)
+ O - simulate OpenSolaris build
'
c_FLAG=n
@@ -50,6 +51,37 @@ t_FLAG=n
SE_FLAG=n
SH_FLAG=n
SD_FLAG=n
+SO_FLAG=n
+
+is_source_build() {
+ [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" -o \
+ "$SH_FLAG" = "y" -o "$SO_FLAG" = "y" ]
+ return $?
+}
+
+#
+# single function for setting -S flag and doing error checking.
+# usage: set_S_flag <type>
+# where <type> is the source build type ("E", "D", ...).
+#
+set_S_flag() {
+ if is_source_build; then
+ echo "Can only build one source variant at a time."
+ exit 1
+ fi
+ if [ "$1" = "E" ]; then
+ SE_FLAG=y
+ elif [ "$1" = "D" ]; then
+ SD_FLAG=y
+ elif [ "$1" = "H" ]; then
+ SH_FLAG=y
+ elif [ "$1" = "O" ]; then
+ SO_FLAG=y
+ else
+ echo "$USAGE"
+ exit 1
+ fi
+}
OPTIND=1
SUFFIX="-nd"
@@ -66,20 +98,7 @@ do
t ) t_FLAG=y
;;
S )
- if [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" -o "$SH_FLAG" = "y" ]; then
- echo "Can only build one source variant at a time."
- exit 1
- fi
- if [ "${OPTARG}" = "E" ]; then
- SE_FLAG=y
- elif [ "${OPTARG}" = "D" ]; then
- SD_FLAG=y
- elif [ "${OPTARG}" = "H" ]; then
- SH_FLAG=y
- else
- echo "$USAGE"
- exit 1
- fi
+ set_S_flag $OPTARG
;;
\?) echo "$USAGE"
exit 1
@@ -135,16 +154,11 @@ else
fi
shift
-#MACH=`uname -p`
+# contents of stdenv.sh inserted after next line:
+# STDENV_START
+# STDENV_END
-if [ -z "$CLOSED_IS_PRESENT" ]; then
- if [ -d $SRC/../closed ]; then
- CLOSED_IS_PRESENT="yes"
- else
- CLOSED_IS_PRESENT="no"
- fi
- export CLOSED_IS_PRESENT
-fi
+#MACH=`uname -p`
# must match the getopts in nightly.sh
OPTIND=1
@@ -155,20 +169,7 @@ do
t ) t_FLAG=y
;;
S )
- if [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" -o "$SH_FLAG" = "y" ]; then
- echo "Can only build one source variant at a time."
- exit 1
- fi
- if [ "${OPTARG}" = "E" ]; then
- SE_FLAG=y
- elif [ "${OPTARG}" = "D" ]; then
- SD_FLAG=y
- elif [ "${OPTARG}" = "H" ]; then
- SH_FLAG=y
- else
- echo "$USAGE"
- exit 1
- fi
+ set_S_flag $OPTARG
;;
o) o_FLAG=y
;;
@@ -196,24 +197,6 @@ fi
CPIODIR=${CPIODIR}${SUFFIX}
PKGARCHIVE=${PKGARCHIVE}${SUFFIX}
-if [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" ]; then
- if [ -z "${EXPORT_SRC}" ]; then
- echo "EXPORT_SRC must be set for a source build."
- exit 1
- fi
- if [ -z "${CRYPT_SRC}" ]; then
- echo "CRYPT_SRC must be set for a source build."
- exit 1
- fi
-fi
-
-if [ "$SH_FLAG" = "y" ]; then
- if [ -z "${EXPORT_SRC}" ]; then
- echo "EXPORT_SRC must be set for a source build."
- exit 1
- fi
-fi
-
# Append source version
if [ "$SE_FLAG" = "y" ]; then
VERSION="${VERSION}:EXPORT"
@@ -230,6 +213,11 @@ if [ "$SH_FLAG" = "y" ]; then
SRC=${EXPORT_SRC}/usr/src
fi
+if [ "$SO_FLAG" = "y" ]; then
+ VERSION="${VERSION}:OPEN_ONLY"
+ SRC=${OPEN_SRCDIR}/usr/src
+fi
+
# Set PATH for a build
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:."
if [ "${SUNWSPRO}" != "" ]; then
@@ -237,6 +225,21 @@ if [ "${SUNWSPRO}" != "" ]; then
export PATH
fi
+if [[ "$SO_FLAG" = "y" && "$CLOSED_IS_PRESENT" = "yes" ]]; then
+ echo "CLOSED_IS_PRESENT is 'no' (because of '-S O')"
+ CLOSED_IS_PRESENT=no
+ export CLOSED_IS_PRESENT
+fi
+
+if [ -z "$CLOSED_IS_PRESENT" ]; then
+ if [ -d $SRC/../closed ]; then
+ CLOSED_IS_PRESENT="yes"
+ else
+ CLOSED_IS_PRESENT="no"
+ fi
+ export CLOSED_IS_PRESENT
+fi
+
TOOLS=${SRC}/tools
TOOLS_PROTO=${TOOLS}/proto
diff --git a/usr/src/tools/scripts/mkclosed.sh b/usr/src/tools/scripts/mkclosed.sh
new file mode 100644
index 0000000000..a30c511a94
--- /dev/null
+++ b/usr/src/tools/scripts/mkclosed.sh
@@ -0,0 +1,87 @@
+#! /usr/bin/ksh
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+
+#
+# Generate a minimal set of closed binaries from a proto area. Useful
+# when building just the open tree.
+#
+
+usage="mkclosed isa proto closed"
+
+if [ $# -ne 3 ]; then
+ print -u2 "usage: $usage"
+ exit 1
+fi
+
+isa=$1
+case "$isa" in
+i386) plat64=amd64;;
+sparc) plat64=sparcv9;;
+*) print -u2 "unknown isa: $isa"
+ exit 1
+ ;;
+esac
+
+protoroot=$2/root_$isa
+closedroot=$3/root_$isa
+
+#
+# Make closedroot an absolute path if it isn't already. This is
+# needed for the cpio invocation below.
+#
+[[ $closedroot = /* ]] || closedroot=`pwd`/$closedroot
+
+# Check arguments before modifying filesystem.
+cd $protoroot || exit 1
+
+mkdir -p $closedroot || exit 1
+
+#
+# Copy files from the proto area to the new closed tree. We use cpio
+# rather than a tar pipeline to make it easier to detect errors.
+#
+# We need /lib/libc_i18n.a & /lib/{sparcv9,amd64}/libc_i18n.a
+# libdisasm is open on x86, but closed on sparc - how confusing...
+#
+
+(
+ echo lib/libc_i18n.a
+ [ -n "$plat64" ] && echo lib/$plat64/libc_i18n.a
+ if [ "$isa" = "sparc" ]; then
+ echo usr/lib/libdisasm.so.1
+ echo usr/lib/libdisasm.so
+ echo usr/lib/$plat64/libdisasm.so.1
+ echo usr/lib/$plat64/libdisasm.so
+ echo usr/lib/$plat64/libstanddisasm.so
+ echo usr/lib/$plat64/llib-ldisasm.ln
+ echo usr/lib/llib-ldisasm
+ echo usr/lib/mdb/disasm
+ echo usr/lib/llib-ldisasm.ln
+ fi
+) | cpio -dpu $closedroot
diff --git a/usr/src/tools/scripts/nightly.1 b/usr/src/tools/scripts/nightly.1
index 07000173cf..7e3a3d7f50 100644
--- a/usr/src/tools/scripts/nightly.1
+++ b/usr/src/tools/scripts/nightly.1
@@ -20,7 +20,7 @@
.\" "
.\" "Copyright 2006 Sun Microsystems, Inc. All rights reserved."
.\" "Use is subject to license terms."
-.TH nightly 1 "23 June 2006"
+.TH nightly 1 "12 Oct 2006"
.SH NAME
.I nightly
\- build an OS-Net consolidation overnight
@@ -53,34 +53,49 @@ all these things are desired:
.LP
.RS
.TP
+\(bu
perform a "make clobber" to clean up old binaries
.TP
+\(bu
bringover from the identified parent gate/clone
.TP
+\(bu
perform non-DEBUG and DEBUG builds
.TP
+\(bu
list proto area files and compare with previous list
.TP
+\(bu
copy updated proto area to parent
.TP
+\(bu
list shared lib interface and compare with previous list
.TP
+\(bu
perform a "make lint" of the kernel and report errors
.TP
+\(bu
perform a "make check" to report hdrchk/cstyle errors
.TP
+\(bu
report the presence of any core files
.TP
+\(bu
check the ELF runtime attributes of all dynamic objects
.TP
+\(bu
check for unreferenced files
.TP
+\(bu
report on which proto area objects have changed (since the last build)
.TP
+\(bu
report the total build time
.TP
+\(bu
save a detailed log file for reference
.TP
+\(bu
mail the user a summary of the completed build
.RE
.LP
@@ -202,6 +217,22 @@ Integration engineer default group of options (-ampu)
Default group of options for building a release (-mp)
.LP
+.B Source Build options
+.TP 10
+.B \-S E | D | H
+Build the Export, Domestic, or Hybrid source product. Only Export and
+Domestic are truly buildable at this time.
+.TP 10
+.B \-S O
+Simulate an OpenSolaris build on a full tree. This can be used by
+internal developers to ensure that they haven't broken the build for
+external developers.
+.LP
+Source build options only make sense for a full internal tree (open
+and closed source). Only one source build option can be specified at
+a time.
+
+.LP
.B Miscellaneous options
.TP 10
.B \-V VERS
@@ -214,10 +245,6 @@ nightly proto and package areas. This is only available on i386. See
and
.B BUILDING THE IHV WORKSPACE
below.
-.TP
-.B \-S E | D | H
-Build the Export, Domestic, or Hybrid source product. Only Export and
-Domestic are truly buildable at this time.
.LP
.SH ENVIRONMENT VARIABLES
@@ -438,6 +465,22 @@ xmod/cry_files are saved. They are dropped on the exportable source to create
the domestic build
.RE
.LP
+.B OPEN_SRCDIR
+.RS 5
+The open source tree is copied to this directory when simulating an
+OpenSolaris build (\fB\-S O\fR). It defaults to $CODEMGR_WS/open_src.
+.RE
+.LP
+.B ON_CLOSED_BINS
+.RS 5
+OpenSolaris builds do not contain the closed source tree. Instead,
+the developer downloads a closed binaries tree and unpacks it.
+.B ON_CLOSED_BINS
+tells nightly
+where to find these closed binaries, so that it can add them into the
+build.
+.RE
+.LP
.B CHECK_PATHS
.RS 5
Normally, nightly runs the 'checkpaths' script to check for
diff --git a/usr/src/tools/scripts/nightly.sh b/usr/src/tools/scripts/nightly.sh
index 11eff80e61..45bb619dcf 100644
--- a/usr/src/tools/scripts/nightly.sh
+++ b/usr/src/tools/scripts/nightly.sh
@@ -108,11 +108,10 @@ normal_build() {
# DEBUG build ends
}
+#
+# usage: filelist DESTDIR PATTERN
+#
filelist() {
- if [ $# -ne 2 ]; then
- echo "usage: filelist DESTDIR PATTERN"
- exit 1;
- fi
DEST=$1
PATTERN=$2
cd ${DEST}
@@ -121,7 +120,7 @@ filelist() {
if [ ! -f ${OBJFILES} ]; then
return;
fi
- for i in `grep -v '^#' ${ORIG_SRC}/xmod/obj_files | \
+ for i in `grep -v '^#' ${OBJFILES} | \
grep ${PATTERN} | cut -d: -f2 | tr -d ' \t'`
do
# wildcard expansion
@@ -152,12 +151,8 @@ save_binaries() {
}
# delete files
+# usage: hybridize_files DESTDIR MAKE_TARGET
hybridize_files() {
- if [ $# -ne 2 ]; then
- echo "usage: hybridize_files DESTDIR MAKE_TARGET"
- exit 1;
- fi
-
DEST=$1
MAKETARG=$2
@@ -179,12 +174,8 @@ hybridize_files() {
}
# restore binaries into the proper source tree.
+# usage: restore_binaries DESTDIR MAKE_TARGET
restore_binaries() {
- if [ $# -ne 2 ]; then
- echo "usage: restore_binaries DESTDIR MAKE_TARGET"
- exit 1;
- fi
-
DEST=$1
MAKETARG=$2
@@ -196,12 +187,8 @@ restore_binaries() {
}
# rename files we save binaries of
+# usage: rename_files DESTDIR MAKE_TARGET
rename_files() {
- if [ $# -ne 2 ]; then
- echo "usage: rename_files DESTDIR MAKE_TARGET"
- exit 1;
- fi
-
DEST=$1
MAKETARG=$2
echo "\n==== Renaming source files in ${MAKETARG} at `date` ====\n" | \
@@ -214,20 +201,17 @@ rename_files() {
done
}
-# function to create the export/crypt source tree
-# usage: clone_source CODEMGR_WS DESTDIR MAKE_TARGET
-
-clone_source() {
-
- if [ $# -ne 3 ]; then
- echo "usage: clone_source CODEMGR_WS DESTDIR MAKE_TARGET"
- exit 1;
- fi
+#
+# Copy some or all of the source tree.
+# usage: copy_source CODEMGR_WS DESTDIR LABEL SRCROOT
+#
+copy_source() {
WS=$1
DEST=$2
- MAKETARG=$3
+ label=$3
+ srcroot=$4
- echo "\n==== Creating ${DEST} source from ${WS} (${MAKETARG}) ====\n" | \
+ echo "\n==== Creating ${DEST} source from ${WS} ($label) ====\n" | \
tee -a $mail_msg_file >> $LOGFILE
echo "cleaning out ${DEST}." >> $LOGFILE
@@ -237,11 +221,24 @@ clone_source() {
cd ${WS}
echo "creating ${DEST}." >> $LOGFILE
- find usr -name 's\.*' -a -type f -print | \
+ find $srcroot -name 's\.*' -a -type f -print | \
sed -e 's,SCCS\/s.,,' | \
grep -v '/\.del-*' | \
cpio -pd ${DEST} >>$LOGFILE 2>&1
+}
+#
+# function to create (but not build) the export/crypt source tree.
+# usage: set_up_source_build CODEMGR_WS DESTDIR MAKE_TARGET
+# Sets SRC to the modified source tree, for use by the caller when it
+# builds the tree.
+#
+set_up_source_build() {
+ WS=$1
+ DEST=$2
+ MAKETARG=$3
+
+ copy_source $WS $DEST $MAKETARG usr
SRC=${DEST}/usr/src
cd $SRC
@@ -312,12 +309,6 @@ clone_source() {
# usage: build LABEL SUFFIX
build() {
-
- if [ $# -ne 2 ]; then
- echo "usage: build LABEL SUFFIX"
- exit 1;
- fi
-
LABEL=$1
SUFFIX=$2
INSTALLOG=install${SUFFIX}-${MACH}
@@ -518,25 +509,16 @@ build() {
fi
}
+# Usage: dolint /dir y|n
+# Arg. 2 is a flag to turn on/off the lint diff output
dolint() {
-
- #
- # Arg. 2 is a flag to turn on/off the lint diff output
- #
- dl_usage="Usage: dolint /dir y|n"
-
- if [ $# -ne 2 ]; then
- echo $dl_usage
- exit 1
- fi
-
if [ ! -d "$1" ]; then
- echo $dl_usage
+ echo "dolint error: $1 is not a directory"
exit 1
fi
if [ "$2" != "y" -a "$2" != "n" ]; then
- echo $dl_usage
+ echo "dolint internal error: $2 should be 'y' or 'n'"
exit 1
fi
@@ -631,14 +613,8 @@ copy_ihv_proto() {
}
# Install IHV packages in PKGARCHIVE
-
+# usage: copy_ihv_pkgs LABEL SUFFIX
copy_ihv_pkgs() {
-
- if [ $# -ne 2 ]; then
- echo "usage: copy_ihv_pkgs LABEL SUFFIX"
- exit 1;
- fi
-
LABEL=$1
SUFFIX=$2
# always use non-DEBUG IHV packages
@@ -666,13 +642,8 @@ copy_ihv_pkgs() {
fi
}
+# usage: build_tools DESTROOT
build_tools() {
-
- if [ $# -ne 1 ]; then
- echo "usage: build_tools DESTROOT"
- exit 1;
- fi
-
DESTROOT=$1
INSTALLOG=install-${MACH}
@@ -789,7 +760,7 @@ if [ "$TEAMWARE" = "" ]; then
export TEAMWARE
fi
-USAGE='Usage: nightly [-in] [-V VERS ] [ -S E|D|H ] <env_file>
+USAGE='Usage: nightly [-in] [-V VERS ] [ -S E|D|H|O ] <env_file>
Where:
-i Fast incremental options (no clobber, lint, check)
@@ -799,6 +770,7 @@ Where:
E - build exportable source
D - build domestic source (exportable + crypt)
H - build hybrid source (binaries + deleted source)
+ O - build (only) open source
<env_file> file in Bourne shell syntax that sets and exports
variables that configure the operation of this script and many of
@@ -839,6 +811,7 @@ NIGHTLY_OPTIONS variable in the <env_file> as follows:
E - build exportable source
D - build domestic source (exportable + crypt)
H - build hybrid source (binaries + deleted source)
+ O - build (only) open source
'
#
# -x less public handling of xmod source for the source product
@@ -876,15 +849,47 @@ W_FLAG=n
SE_FLAG=n
SD_FLAG=n
SH_FLAG=n
+SO_FLAG=n
X_FLAG=n
#
XMOD_OPT=
#
build_ok=y
+
+is_source_build() {
+ [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" -o \
+ "$SH_FLAG" = "y" -o "$SO_FLAG" = "y" ]
+ return $?
+}
+
#
# examine arguments
#
+#
+# single function for setting -S flag and doing error checking.
+# usage: set_S_flag <type>
+# where <type> is the source build type ("E", "D", ...).
+#
+set_S_flag() {
+ if is_source_build; then
+ echo "Can only build one source variant at a time."
+ exit 1
+ fi
+ if [ "$1" = "E" ]; then
+ SE_FLAG=y
+ elif [ "$1" = "D" ]; then
+ SD_FLAG=y
+ elif [ "$1" = "H" ]; then
+ SH_FLAG=y
+ elif [ "$1" = "O" ]; then
+ SO_FLAG=y
+ else
+ echo "$USAGE"
+ exit 1
+ fi
+}
+
OPTIND=1
while getopts inV:S:t FLAG
do
@@ -897,20 +902,7 @@ do
V_ARG="$OPTARG"
;;
S )
- if [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" -o "$SH_FLAG" = "y" ]; then
- echo "Can only build one source variant at a time."
- exit 1
- fi
- if [ "${OPTARG}" = "E" ]; then
- SE_FLAG=y
- elif [ "${OPTARG}" = "D" ]; then
- SD_FLAG=y
- elif [ "${OPTARG}" = "H" ]; then
- SH_FLAG=y
- else
- echo "$USAGE"
- exit 1
- fi
+ set_S_flag $OPTARG
;;
t ) t_FLAG=y
;;
@@ -994,6 +986,10 @@ else
fi
fi
+# contents of stdenv.sh inserted after next line:
+# STDENV_START
+# STDENV_END
+
#
# place ourselves in a new task, respecting BUILD_PROJECT if set.
#
@@ -1114,20 +1110,7 @@ do
W ) W_FLAG=y
;;
S )
- if [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" -o "$SH_FLAG" = "y" ]; then
- echo "Can only build one source variant at a time."
- exit 1
- fi
- if [ "${OPTARG}" = "E" ]; then
- SE_FLAG=y
- elif [ "${OPTARG}" = "D" ]; then
- SD_FLAG=y
- elif [ "${OPTARG}" = "H" ]; then
- SH_FLAG=y
- else
- echo "$USAGE"
- exit 1
- fi
+ set_S_flag $OPTARG
;;
X ) # now that we no longer need realmode builds, just
# copy IHV packages. only meaningful on x86.
@@ -1254,24 +1237,6 @@ if [ -z "${ROOT}" ]; then
exit 1
fi
-if [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" ]; then
- if [ -z "${EXPORT_SRC}" ]; then
- echo "EXPORT_SRC must be set for a source build."
- exit 1
- fi
- if [ -z "${CRYPT_SRC}" ]; then
- echo "CRYPT_SRC must be set for a source build."
- exit 1
- fi
-fi
-
-if [ "$SH_FLAG" = "y" ]; then
- if [ -z "${EXPORT_SRC}" ]; then
- echo "EXPORT_SRC must be set for a source build."
- exit 1
- fi
-fi
-
#
# if -V flag was given, reset VERSION to V_ARG
#
@@ -1314,6 +1279,10 @@ if [ "$SH_FLAG" = "y" ]; then
VERSION="${VERSION}:MODIFIED_SOURCE_PRODUCT"
fi
+if [ "$SO_FLAG" = "y" ]; then
+ VERSION="${VERSION}:OPEN_ONLY"
+fi
+
TMPDIR="/tmp/nightly.tmpdir.$$"
export TMPDIR
rm -rf ${TMPDIR}
@@ -1595,7 +1564,7 @@ if [ "$T_FLAG" = "y" ]; then
obsolete_build TRACE | tee -a $mail_msg_file >> $LOGFILE
fi
-if [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" -o "$SH_FLAG" = "y" ]; then
+if is_source_build; then
if [ "$i_FLAG" = "y" -o "$i_CMD_LINE_FLAG" = "y" ]; then
echo "WARNING: the -S flags do not support incremental" \
"builds; forcing clobber\n" | tee -a $mail_msg_file >> $LOGFILE
@@ -1898,6 +1867,10 @@ fi
ORIG_SRC=$SRC
BINARCHIVE=${CODEMGR_WS}/bin-${MACH}.cpio.Z
+#
+# For the "open" build, we don't mung any source files, so skip this
+# step.
+#
if [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" -o "$SH_FLAG" = "y" ]; then
save_binaries
@@ -1917,13 +1890,13 @@ EOF
fi
if [ "$SD_FLAG" = "y" ]; then
- clone_source ${CODEMGR_WS} ${CRYPT_SRC} CRYPT_SRC
+ set_up_source_build ${CODEMGR_WS} ${CRYPT_SRC} CRYPT_SRC
fi
# EXPORT_SRC comes after CRYPT_SRC since a domestic build will need
# $SRC pointing to the export_source usr/src.
if [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" -o "$SH_FLAG" = "y" ]; then
- clone_source ${CODEMGR_WS} ${EXPORT_SRC} EXPORT_SRC
+ set_up_source_build ${CODEMGR_WS} ${EXPORT_SRC} EXPORT_SRC
fi
if [ "$SD_FLAG" = "y" ]; then
@@ -1943,7 +1916,28 @@ if [ "$SD_FLAG" = "y" ]; then
fi
-if [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" -o "$SH_FLAG" = "y" ]; then
+if [ "$SO_FLAG" = "y" ]; then
+ #
+ # Copy the open sources into their own tree, set up the closed
+ # binaries, and set up the environment.
+ #
+ copy_source $CODEMGR_WS $OPEN_SRCDIR OPEN_SOURCE usr/src
+ SRC=$OPEN_SRCDIR/usr/src
+
+ # Try not to clobber any user-provided closed binaries.
+ export ON_CLOSED_BINS=$CODEMGR_WS/closed$$
+ echo "\n==== Copying skeleton closed binaries to $ON_CLOSED_BINS ====\n" | \
+ tee -a $mail_msg_file >> $LOGFILE
+ mkclosed $MACH $CODEMGR_WS/proto $ON_CLOSED_BINS >>$LOGFILE 2>&1
+ if [ $? -ne 0 ]; then
+ build_ok=n
+ echo "Aborting (couldn't create closed binaries)." |
+ tee -a $mail_msg_file >> $LOGFILE
+ fi
+ CLOSED_IS_PRESENT=no
+fi
+
+if is_source_build && [ $build_ok = y ] ; then
# remove proto area here, since we don't clobber
rm -rf "$ROOT"
if [ "$t_FLAG" = "y" ]; then
@@ -1952,8 +1946,12 @@ if [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" -o "$SH_FLAG" = "y" ]; then
unset EXTRA_OPTIONS
unset EXTRA_CFLAGS
ORIG_TOOLS=$TOOLS
- TOOLS=${EXPORT_SRC}/usr/src/tools
- build_tools ${EXPORT_SRC}/usr/src/tools/proto
+ #
+ # SRC was set earlier to point to the source build
+ # source tree (e.g., $EXPORT_SRC).
+ #
+ TOOLS=${SRC}/tools
+ build_tools ${SRC}/tools/proto
TOOLS=$ORIG_TOOLS
fi
@@ -1961,6 +1959,10 @@ if [ "$SE_FLAG" = "y" -o "$SD_FLAG" = "y" -o "$SH_FLAG" = "y" ]; then
normal_build
fi
+if [[ "$SO_FLAG" = "y" && "$build_ok" = "y" ]]; then
+ rm -rf $ON_CLOSED_BINS
+fi
+
if [ "$build_ok" = "y" ]; then
echo "\n==== Creating protolist system file at `date` ====" \
>> $LOGFILE
diff --git a/usr/src/tools/scripts/stdenv.sh b/usr/src/tools/scripts/stdenv.sh
new file mode 100644
index 0000000000..bf5b5d13f8
--- /dev/null
+++ b/usr/src/tools/scripts/stdenv.sh
@@ -0,0 +1,56 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+# ident "%Z%%M% %I% %E% SMI"
+#
+
+#
+# Shell script fragment to set standard build environment variables,
+# for use by bldenv(1) and nightly(1). Can be overridden by the
+# user's environment file. Because bldenv and nightly are both ksh
+# scripts, we can use ksh syntax here.
+#
+
+#
+# the source product has no SCCS history, and is modified to remove source
+# that cannot be shipped. EXPORT_SRC is where the clear files are copied, then
+# modified with 'make EXPORT_SRC'.
+#
+[ -n "$EXPORT_SRC" ] || export EXPORT_SRC="$CODEMGR_WS/export_src"
+
+#
+# CRYPT_SRC is similar to EXPORT_SRC, but after 'make CRYPT_SRC' the files in
+# xmod/cry_files are saved. They are dropped on the exportable source to create
+# the domestic build.
+#
+[ -n "$CRYPT_SRC" ] || export CRYPT_SRC="$CODEMGR_WS/crypt_src"
+
+#
+# OPEN_SRCDIR is where we copy the open tree to so that we can be sure
+# we don't have a hidden dependency on closed code. The name ends in
+# "DIR" to avoid confusion with the flags related to open source
+# builds.
+#
+[ -n "$OPEN_SRCDIR" ] || export OPEN_SRCDIR="$CODEMGR_WS/open_src"