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