17c478bd9Sstevel@tonic-gate# 27c478bd9Sstevel@tonic-gate# CDDL HEADER START 37c478bd9Sstevel@tonic-gate# 47c478bd9Sstevel@tonic-gate# The contents of this file are subject to the terms of the 534c98957Smeem# Common Development and Distribution License (the "License"). 634c98957Smeem# You may not use this file except in compliance with the License. 77c478bd9Sstevel@tonic-gate# 87c478bd9Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97c478bd9Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing. 107c478bd9Sstevel@tonic-gate# See the License for the specific language governing permissions 117c478bd9Sstevel@tonic-gate# and limitations under the License. 127c478bd9Sstevel@tonic-gate# 137c478bd9Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each 147c478bd9Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157c478bd9Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the 167c478bd9Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying 177c478bd9Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner] 187c478bd9Sstevel@tonic-gate# 197c478bd9Sstevel@tonic-gate# CDDL HEADER END 207c478bd9Sstevel@tonic-gate# 217c478bd9Sstevel@tonic-gate# 2234c98957Smeem# Copyright 2006 Sun Microsystems, Inc. All rights reserved. 237c478bd9Sstevel@tonic-gate# Use is subject to license terms. 247c478bd9Sstevel@tonic-gate# 257c478bd9Sstevel@tonic-gate#ident "%Z%%M% %I% %E% SMI" 267c478bd9Sstevel@tonic-gate 277c478bd9Sstevel@tonic-gateThis directory contains the tools used to do a full build of the 287c478bd9Sstevel@tonic-gateOS/Net workspace. They usually live in the /opt/onbld directory on build 297c478bd9Sstevel@tonic-gatemachines. From here, 'make install' will build and install the tools 307c478bd9Sstevel@tonic-gatein $ROOT/opt/onbld. If you like, 'make pkg' will build the SUNWonbld 317c478bd9Sstevel@tonic-gatepackage in $(PKGARCHIVE). Installing that package will populate the 327c478bd9Sstevel@tonic-gate/opt/onbld directory, and create a root account for building called 'gk', 337c478bd9Sstevel@tonic-gatewhich uses csh and has a home directory of /opt/onbld/gk. You can 347c478bd9Sstevel@tonic-gateuse this account to do full builds with 'nightly'. You don't have to, 35b84bdc30Smeembut the 'gk' account has the path setup properly, has a .make.machines 36b84bdc30Smeemfile for dmake, and has a .login that sets up for dmake. 377c478bd9Sstevel@tonic-gate 387c478bd9Sstevel@tonic-gateLayout of /opt/onbld 397c478bd9Sstevel@tonic-gate-------------------- 407c478bd9Sstevel@tonic-gate 417c478bd9Sstevel@tonic-gate/opt/onbld/etc/abi 427c478bd9Sstevel@tonic-gate contains Solaris ABI database (ABI_*.db) and exceptions 437c478bd9Sstevel@tonic-gate for ABI Auditing tool (intf_check). 447c478bd9Sstevel@tonic-gate 457c478bd9Sstevel@tonic-gate/opt/onbld/gk 467c478bd9Sstevel@tonic-gate gk account's home directory. 477c478bd9Sstevel@tonic-gate 487c478bd9Sstevel@tonic-gate/opt/onbld/bin 497c478bd9Sstevel@tonic-gate basic bin directory - contains scripts. 507c478bd9Sstevel@tonic-gate 517c478bd9Sstevel@tonic-gate/opt/onbld/bin/${MACH} 527c478bd9Sstevel@tonic-gate architecture-specific bin directory for binaries. 537c478bd9Sstevel@tonic-gate 547c478bd9Sstevel@tonic-gate/opt/onbld/env 557c478bd9Sstevel@tonic-gate build environment files. 567c478bd9Sstevel@tonic-gate 577c478bd9Sstevel@tonic-gate/opt/onbld/man 587c478bd9Sstevel@tonic-gate rudimentary man pages for some of the tools. 597c478bd9Sstevel@tonic-gate 607c478bd9Sstevel@tonic-gate 617c478bd9Sstevel@tonic-gateTool Summary 627c478bd9Sstevel@tonic-gate------------ 637c478bd9Sstevel@tonic-gate 647c478bd9Sstevel@tonic-gatebfu 657c478bd9Sstevel@tonic-gate bonwick/faulkner upgrade. Loads a set of cpio archives created 667c478bd9Sstevel@tonic-gate by 'mkbfu' onto a machine, either live or on alternate root 677c478bd9Sstevel@tonic-gate and /usr filesystems. Attempts to preserve important files, 687c478bd9Sstevel@tonic-gate but may require manual intervention before reboot to resolve 697c478bd9Sstevel@tonic-gate changes to preserved files. 707c478bd9Sstevel@tonic-gate 717c478bd9Sstevel@tonic-gatebfuld 727c478bd9Sstevel@tonic-gate Used by bfu to survive getting a new runtime linker when extracting 737c478bd9Sstevel@tonic-gate new cpio archives onto a live system. Patches binaries to use 747c478bd9Sstevel@tonic-gate a saved runtime linker in /tmp during the bfu process. 757c478bd9Sstevel@tonic-gate Not run by anything but bfu. 767c478bd9Sstevel@tonic-gate 777c478bd9Sstevel@tonic-gatebldenv 787c478bd9Sstevel@tonic-gate companion to 'nightly.' Takes the same environment file you 797c478bd9Sstevel@tonic-gate used with 'nightly,' and starts a shell with the environment 807c478bd9Sstevel@tonic-gate set up the same way as 'nightly' set it up. This is useful 817c478bd9Sstevel@tonic-gate if you're trying to quickly rebuild portions of a workspace 827c478bd9Sstevel@tonic-gate built by 'nightly'. 'ws' should not be used for this since it 837c478bd9Sstevel@tonic-gate sets the environment up differently and may cause everything 847c478bd9Sstevel@tonic-gate to rebuild (because of different -I or -L paths). 857c478bd9Sstevel@tonic-gate 867c478bd9Sstevel@tonic-gatebuild_cscope 877c478bd9Sstevel@tonic-gate 887c478bd9Sstevel@tonic-gate builds cscope databases in the uts, the platform subdirectories 897c478bd9Sstevel@tonic-gate of uts, and in usr/src. Uses cscope-fast. 907c478bd9Sstevel@tonic-gate 917c478bd9Sstevel@tonic-gatecheck_rtime 927c478bd9Sstevel@tonic-gate 937c478bd9Sstevel@tonic-gate checks ELF attributes used by ELF dynamic objects in the proto area. 947c478bd9Sstevel@tonic-gate Used by 'nightly's -r option, to check a number of ELF runtime 957c478bd9Sstevel@tonic-gate attributes for consistency with common build rules. nightly uses 967c478bd9Sstevel@tonic-gate the -o option to simplify the output for diffing with previous 977c478bd9Sstevel@tonic-gate build results. It also uses the -i option to obtain NEEDED and RUNPATH 987c478bd9Sstevel@tonic-gate entries, which help detect changes in software dependencies and makes 997c478bd9Sstevel@tonic-gate sure objects don't have any strange runpaths like /opt/SUNWspro/lib. 1007c478bd9Sstevel@tonic-gate 1017c478bd9Sstevel@tonic-gatecheckproto 1027c478bd9Sstevel@tonic-gate 1037c478bd9Sstevel@tonic-gate Runs protocmp and protolist on a workspace (or uses the environment 1047c478bd9Sstevel@tonic-gate variable CODEMGR_WS to determine the workspace). Checks the proto area 1057c478bd9Sstevel@tonic-gate against the packages. 1067c478bd9Sstevel@tonic-gate 1077c478bd9Sstevel@tonic-gatecodereview 1087c478bd9Sstevel@tonic-gate 1097c478bd9Sstevel@tonic-gate Given two filenames, creates a postscript file with the file 1107c478bd9Sstevel@tonic-gate differences highlighted. 1117c478bd9Sstevel@tonic-gate 1127c478bd9Sstevel@tonic-gatecscope-fast 1137c478bd9Sstevel@tonic-gate The fast version of cscope that we use internally. Seems to work, 1147c478bd9Sstevel@tonic-gate but may need more testing before it's placed in the gate. The source 1157c478bd9Sstevel@tonic-gate just really needs to be here. 1167c478bd9Sstevel@tonic-gate 1177c478bd9Sstevel@tonic-gatecstyle 1187c478bd9Sstevel@tonic-gate checks C source for compliance with OS/Net guidelines. 1197c478bd9Sstevel@tonic-gate 1207c478bd9Sstevel@tonic-gatectfconvert 1217c478bd9Sstevel@tonic-gate Convert symbolic debugging information in an object file to the Compact 1227c478bd9Sstevel@tonic-gate ANSI-C Type Format (CTF). 1237c478bd9Sstevel@tonic-gate 1247c478bd9Sstevel@tonic-gatectfdump 1257c478bd9Sstevel@tonic-gate Decode and display CTF data stored in a raw file or in an ELF file. 1267c478bd9Sstevel@tonic-gate 1277c478bd9Sstevel@tonic-gatectfmerge 1287c478bd9Sstevel@tonic-gate Merge the CTF data from one or more object files. 1297c478bd9Sstevel@tonic-gate 1307c478bd9Sstevel@tonic-gatedepcheck 1317c478bd9Sstevel@tonic-gate A tool to try an assess the dependencies of executables. This tool 1327c478bd9Sstevel@tonic-gate is not a definitive dependency check, but it does use "strings" and 1337c478bd9Sstevel@tonic-gate "ldd" to gather as much information as it can. The dependency check 1347c478bd9Sstevel@tonic-gate tool can handle filenames and pkgnames. Before using the dependency 1357c478bd9Sstevel@tonic-gate checker you must build a database which reflects the properties and 1367c478bd9Sstevel@tonic-gate files in your system. 1377c478bd9Sstevel@tonic-gate 1387c478bd9Sstevel@tonic-gateelfcmp 1397c478bd9Sstevel@tonic-gate Compares two ELF modules (e.g. .o files, executables) section by 1407c478bd9Sstevel@tonic-gate section. Useful for determining whether "trivial" changes - 1417c478bd9Sstevel@tonic-gate cstyle, lint, etc - actually changed the code. The -S option 1427c478bd9Sstevel@tonic-gate is used to test whether two binaries are the same except for 1437c478bd9Sstevel@tonic-gate the elfsign signature. 1447c478bd9Sstevel@tonic-gate 1457c478bd9Sstevel@tonic-gateelfsign 1467c478bd9Sstevel@tonic-gate Built from the same sources as the shipped elfsign(1), this 1477c478bd9Sstevel@tonic-gate version is used in nightly -t builds to assure that the signing 1487c478bd9Sstevel@tonic-gate process and format is the same as will be used on the target 1497c478bd9Sstevel@tonic-gate system. 1507c478bd9Sstevel@tonic-gate 1517c478bd9Sstevel@tonic-gateelfsigncmp 1527c478bd9Sstevel@tonic-gate This script can be used in lieu of elfsign during a build. 1537c478bd9Sstevel@tonic-gate It uses elfsign to sign a copy of the object and elfcmp -S to 1547c478bd9Sstevel@tonic-gate verify that the signing caused no damage before updating 1557c478bd9Sstevel@tonic-gate the object to be signed. 1567c478bd9Sstevel@tonic-gate 1577c478bd9Sstevel@tonic-gatefindunref 1587c478bd9Sstevel@tonic-gate Finds all files in a source tree that have access times older than a 1597c478bd9Sstevel@tonic-gate certain time and are not in a specified list of exceptions. Since 1607c478bd9Sstevel@tonic-gate 'nightly' timestamps the start of the build, and findunref uses its 1617c478bd9Sstevel@tonic-gate timestamp (by default), this can be used to find all files that were 1627c478bd9Sstevel@tonic-gate unreferenced during a nightly build). Since some files are only used 1637c478bd9Sstevel@tonic-gate during a SPARC or Intel build, 'findunref' needs to be run on 1647c478bd9Sstevel@tonic-gate workspaces from both architectures and the results need to be merged. 1657c478bd9Sstevel@tonic-gate For instance, if $INTELSRC and $SPARCSRC are set to the usr/src 1667c478bd9Sstevel@tonic-gate directories of your Intel and SPARC nightly workspaces, then you 1677c478bd9Sstevel@tonic-gate can merge the results like so: 1687c478bd9Sstevel@tonic-gate 1697c478bd9Sstevel@tonic-gate $ findunref $INTELSRC $INTELSRC/tools/findunref/exception_list | \ 1707c478bd9Sstevel@tonic-gate sort > ~/unref-i386.out 1717c478bd9Sstevel@tonic-gate $ findunref $SPARCSRC $SPARCSRC/tools/findunref/exception_list | \ 1727c478bd9Sstevel@tonic-gate sort > ~/unref-sparc.out 1737c478bd9Sstevel@tonic-gate $ comm -12 ~/unref-i386.out ~/unref-sparc.out > ~/unref.out 1747c478bd9Sstevel@tonic-gate 1757c478bd9Sstevel@tonic-gatehdrchk 1767c478bd9Sstevel@tonic-gate checks headers for compliance with OS/Net standards (form, includes, 1777c478bd9Sstevel@tonic-gate C++ guards). 1787c478bd9Sstevel@tonic-gate 1797c478bd9Sstevel@tonic-gateinstall.bin 1807c478bd9Sstevel@tonic-gate binary version of /usr/sbin/install. Used to be vastly faster 1817c478bd9Sstevel@tonic-gate (since /usr/sbin/install is a shell script), but may only be a bit 1827c478bd9Sstevel@tonic-gate faster now. One speedup includes avoiding the name service for the 1837c478bd9Sstevel@tonic-gate well-known, never-changing password entries like 'root' and 'sys.' 1847c478bd9Sstevel@tonic-gate 1857c478bd9Sstevel@tonic-gateintf_check 1867c478bd9Sstevel@tonic-gate detects and reports ABI versioning and stability problems. 1877c478bd9Sstevel@tonic-gate 18834c98957Smeemlintdump 18934c98957Smeem dumps the contents of one or more lint libraries; see lintdump(1) 19034c98957Smeem 1917c478bd9Sstevel@tonic-gatekeywords 1927c478bd9Sstevel@tonic-gate checks files for proper SCCS keywords. 1937c478bd9Sstevel@tonic-gate 1947c478bd9Sstevel@tonic-gatemakebfu 1957c478bd9Sstevel@tonic-gate simple wrapper around 'mkbfu' for use outside nightly (when in a build 1967c478bd9Sstevel@tonic-gate shell from 'ws' or 'bldenv'). 1977c478bd9Sstevel@tonic-gate 1987c478bd9Sstevel@tonic-gatemkbfu 1997c478bd9Sstevel@tonic-gate makes cpio archives out of the proto area suitable for bfu'ing. 2007c478bd9Sstevel@tonic-gate Used by 'nightly' and 'makebfu'. 2017c478bd9Sstevel@tonic-gate 2027c478bd9Sstevel@tonic-gatenightly 2037c478bd9Sstevel@tonic-gate nightly build script. Takes an environment (or 'env') file describing 2047c478bd9Sstevel@tonic-gate such things as the workspace, the parent, and what to build. See 2057c478bd9Sstevel@tonic-gate env/developer and env/gatekeeper for sample, hopefully well-commented 2067c478bd9Sstevel@tonic-gate env files. 2077c478bd9Sstevel@tonic-gate 2087c478bd9Sstevel@tonic-gatepmodes 2097c478bd9Sstevel@tonic-gate enforces proper file ownership and permissions in pkgmap and package 2107c478bd9Sstevel@tonic-gate prototype* files. converts files if necessary 2117c478bd9Sstevel@tonic-gate 2127c478bd9Sstevel@tonic-gateprotocmp 2137c478bd9Sstevel@tonic-gate compares proto lists and the package definitions. Used by nightly 2147c478bd9Sstevel@tonic-gate to determine if the proto area matches the packages, and to detect 2157c478bd9Sstevel@tonic-gate differences between a childs proto area and a parents. 2167c478bd9Sstevel@tonic-gate 2177c478bd9Sstevel@tonic-gateprotocmp.terse 2187c478bd9Sstevel@tonic-gate transforms the output of protocmp into something a bit more friendly 2197c478bd9Sstevel@tonic-gate 2207c478bd9Sstevel@tonic-gateprotolist 2217c478bd9Sstevel@tonic-gate create a list of what's in the proto area, to feed to protocmp. 2227c478bd9Sstevel@tonic-gate 2237c478bd9Sstevel@tonic-gatesccscp 2247c478bd9Sstevel@tonic-gate copy a file under SCCS control to another location in a workspace. 2257c478bd9Sstevel@tonic-gate also updates teamware's nametable. 2267c478bd9Sstevel@tonic-gate 2277c478bd9Sstevel@tonic-gatesccshist 2287c478bd9Sstevel@tonic-gate Display the history, comments and diffs, of a file under SCCS 2297c478bd9Sstevel@tonic-gate control. 2307c478bd9Sstevel@tonic-gate 2317c478bd9Sstevel@tonic-gatesccsmv 2327c478bd9Sstevel@tonic-gate rename a file under SCCS control to another location in a workspace. 2337c478bd9Sstevel@tonic-gate also updates teamware's nametable. 2347c478bd9Sstevel@tonic-gate 2357c478bd9Sstevel@tonic-gatesccsrm 2367c478bd9Sstevel@tonic-gate delete a file under SCCS control workspace. also updates teamware's 2377c478bd9Sstevel@tonic-gate nametable. Actually renames it to .del-<file>-`date` so that others 2387c478bd9Sstevel@tonic-gate will see it move when it is brought over (in case they were working 2397c478bd9Sstevel@tonic-gate on it). 2407c478bd9Sstevel@tonic-gate 2417c478bd9Sstevel@tonic-gatews 2427c478bd9Sstevel@tonic-gate creates a shell with the environment set up to build in the given 2437c478bd9Sstevel@tonic-gate workspace. Used mostly for non-full-build workspaces, so it sets up 2447c478bd9Sstevel@tonic-gate to pull headers and libraries from the proto area of the parent if 2457c478bd9Sstevel@tonic-gate they aren't in the childs proto area. 2467c478bd9Sstevel@tonic-gate 2477c478bd9Sstevel@tonic-gatewx 2487c478bd9Sstevel@tonic-gate A great workspace tool by bonwick. See wx.README for information 2497c478bd9Sstevel@tonic-gate and warnings. 2507c478bd9Sstevel@tonic-gate 2517c478bd9Sstevel@tonic-gatetokenize 2527c478bd9Sstevel@tonic-gate Used to build the sun4u boot block. 2537c478bd9Sstevel@tonic-gate 2547c478bd9Sstevel@tonic-gatewebrev 2557c478bd9Sstevel@tonic-gate Generates a set of HTML pages that show side-by-side diffs of 2567c478bd9Sstevel@tonic-gate changes in your workspace, for easy communication of code 2577c478bd9Sstevel@tonic-gate review materials. Can automagically find edited files or use a 2587c478bd9Sstevel@tonic-gate manually-generated list; knows how to use wx's active file for 2597c478bd9Sstevel@tonic-gate lists of checked-out files and proposed SCCS comments. 2607c478bd9Sstevel@tonic-gate 261*96ccc8cbSesaxewsdiff 262*96ccc8cbSesaxe Detect object differences between two ON proto areas. Used by 263*96ccc8cbSesaxe nightly(1) to determine what changed between two builds. Handy 264*96ccc8cbSesaxe for identifying the set of built objects impacted by a given 265*96ccc8cbSesaxe source change. This information is needed for patch construction. 266*96ccc8cbSesaxe 267*96ccc8cbSesaxe 2687c478bd9Sstevel@tonic-gateHow to do a full build 2697c478bd9Sstevel@tonic-gate---------------------- 2707c478bd9Sstevel@tonic-gate 2717c478bd9Sstevel@tonic-gate1. Find an environment file that might do what you want to do. If you're just 2727c478bd9Sstevel@tonic-gate a developer wanting to do a full build in a child of the gate, copy the 2737c478bd9Sstevel@tonic-gate 'developer' environment file to a new name (private to you and/or the 2747c478bd9Sstevel@tonic-gate work being done in this workspace, to avoid collisions with others). Then 2757c478bd9Sstevel@tonic-gate edit the file and tailor it to your workspace. Remember that this file 2767c478bd9Sstevel@tonic-gate is a shell script, so it can do more than set environment variables. 2777c478bd9Sstevel@tonic-gate 278b84bdc30Smeem2. Login as 'gk' (or root, but your PATH and .make.machines for dmake will 2797c478bd9Sstevel@tonic-gate not be right). Run 'nightly' and give it your environment file as an 2807c478bd9Sstevel@tonic-gate option. 'nightly' will first look for your environment file in 2817c478bd9Sstevel@tonic-gate /opt/onbld/env, and if it's not there then it will look for it as an 2827c478bd9Sstevel@tonic-gate absolute or relative path. Some people put their environment files in 2837c478bd9Sstevel@tonic-gate their workspace to keep them close. 2847c478bd9Sstevel@tonic-gate 2857c478bd9Sstevel@tonic-gate3. When 'nightly' is complete, it will send a summary of what happened to 2867c478bd9Sstevel@tonic-gate $MAILTO. Usually, the less info in the mail the better. If you have failures, 2877c478bd9Sstevel@tonic-gate you can go look at the full log of what happened, generally in 2887c478bd9Sstevel@tonic-gate $CODEMGR_WS/log/log.<date>/nightly.log (the mail_msg it sent and the proto 2897c478bd9Sstevel@tonic-gate list are there too). You can also find the individual build logs, like 2907c478bd9Sstevel@tonic-gate 'make clobber' and 'make install' output in $SRC, under names like 2917c478bd9Sstevel@tonic-gate clobber-${MACH}.out and install-${MACH}.out (for a DEBUG build). These 2927c478bd9Sstevel@tonic-gate will be smaller than nightly.log, and maybe more searchable. 2937c478bd9Sstevel@tonic-gate 2947c478bd9Sstevel@tonic-gateFiles you have to update to add a tool 2957c478bd9Sstevel@tonic-gate-------------------------------------- 2967c478bd9Sstevel@tonic-gate 2977c478bd9Sstevel@tonic-gate1. Add the tool in its appropriate place. 2987c478bd9Sstevel@tonic-gate2. Update the Makefile as required. 2997c478bd9Sstevel@tonic-gate3. Update usr/src/tools/SUNWonbld/prototype_*. 30034c98957Smeem4. Update usr/src/tools/README.tools (this file). 30134c98957Smeem5. Repeat 1-4 for any man pages. 302