|
|
1.1 ! root 1: ! 2: ! 3: ! 4: SPMSINTRO(1P) UNIX Programmer's Manual SPMSINTRO(1P) ! 5: ! 6: ! 7: ! 8: NAME ! 9: spmsintro - introduction to SPMS commands ! 10: ! 11: INTRODUCTION ! 12: The Software Project Management System (SPMS) is a system ! 13: for the management of medium- to large-scale software sys- ! 14: tems. SPMS provides, within the UNIX environment, a number ! 15: of commands which can greatly simplify many tasks associated ! 16: with program development and maintenance. SPMS does not ! 17: attempt to duplicate existing UNIX program development tools ! 18: such as _m_a_k_e or _S_C_C_S, but instead provides a way of coordi- ! 19: nating these tools. ! 20: ! 21: Each software package managed by SPMS is organized as a pro- ! 22: ject. A project is a collection of directories, each of ! 23: which supports a specific activity such as program develop- ! 24: ment, testing, or documentation. There is no restriction on ! 25: the number of directories belonging to a project. The direc- ! 26: tory layout is arbitrary, and can be altered to reflect the ! 27: changing needs of the package. Projects can be nested to any ! 28: level and a mechanism is provided for executing commands ! 29: globally over an entire project hierarchy. ! 30: ! 31: SPMS can be fitted to existing software systems. It retains ! 32: the full capabilities of the UNIX environment with unres- ! 33: tricted access to UNIX tools. As a result, software packages ! 34: developed using SPMS do not depend on the system for their ! 35: survival and can be ported to versions of UNIX that do not ! 36: support SPMS. ! 37: ! 38: DESCRIPTION ! 39: Getting Started ! 40: ! 41: Before using SPMS for the first time you must do the follow- ! 42: ing - ! 43: ! 44: If you are a C shell, _c_s_h, user: ! 45: ! 46: 1. Include the directory `/usr/new' in the command search ! 47: path. This is done by altering the PATH variable in one ! 48: of the startup files, `.cshrc' or `.login', in the ! 49: home directory. ! 50: ! 51: 2. Add the following aliases to the `.cshrc' file ! 52: alias chproject 'eval `"chproject" \!*`' ! 53: alias pd 'eval `"pd" \!*`' ! 54: ! 55: 3. Add the following command to the `.login' file ! 56: chproject ^ ! 57: ! 58: 4. Convert the home directory to a project root directory ! 59: by typing ! 60: ! 61: ! 62: ! 63: Printed 6/22/83 5/20/83 1 ! 64: ! 65: ! 66: ! 67: ! 68: ! 69: ! 70: SPMSINTRO(1P) UNIX Programmer's Manual SPMSINTRO(1P) ! 71: ! 72: ! 73: ! 74: /usr/new/mkproject -d ^ ! 75: ! 76: 5. Execute the `.cshrc' and `.login' files by typing ! 77: source .cshrc ! 78: source .login ! 79: ! 80: If you are a Bourne shell, _s_h, user: ! 81: ! 82: 1. Include the directory `/usr/new' in the command search ! 83: path. This is done by altering the PATH variable in the ! 84: startup file, `.profile', in the home directory. ! 85: ! 86: 2. Add the following command to the `.profile' file: ! 87: eval `chproject \^` ! 88: ! 89: 3. Convert the home directory to a project root directory ! 90: by typing ! 91: /usr/new/mkproject -d \^ ! 92: ! 93: 4. Execute the `.profile' file by typing ! 94: . .profile ! 95: ! 96: Global Operations ! 97: ! 98: The mechanism for executing a command over an entire ! 99: software package is provided by the _p_e_x_e_c command. By label- ! 100: ing each project directory according to the type of activity ! 101: that it supports, global operations can be restricted to ! 102: specific directories. These labels are known as _t_y_p_e _l_a_b_e_l_s. ! 103: In some instances, the directories affected by a global com- ! 104: mand must be processed in a particular order. This ordering ! 105: is achieved by appending priorities to type labels. For ! 106: example, if the project directories `include', `cmd1', ! 107: `cmd2', `lib1', and `lib2' have the following labels, ! 108: ! 109: include print.0, src, update.100, include ! 110: cmd1 print.1, src, update.300, cmdsrc ! 111: cmd2 print.1, src, update.300, cmdsrc ! 112: lib1 print.2, src, update.200, libsrc ! 113: lib2 print.2, src, update.200, libsrc ! 114: ! 115: the entire software package can be updated by the command ! 116: ! 117: pexec -Tupdate make update ! 118: ! 119: in the order `include', `lib1', `lib2', `cmd1', `cmd2'. ! 120: ! 121: Global commands can be made even more precise by using ! 122: boolean expressions on type labels to select project direc- ! 123: tories. The formal definition of a boolean type label ! 124: expression is ! 125: ! 126: ! 127: ! 128: ! 129: Printed 6/22/83 5/20/83 2 ! 130: ! 131: ! 132: ! 133: ! 134: ! 135: ! 136: SPMSINTRO(1P) UNIX Programmer's Manual SPMSINTRO(1P) ! 137: ! 138: ! 139: ! 140: _E -> _E or _E | _E and _E | not _E | ( E ) | id ! 141: ! 142: where _E is a boolean expression; and, or, and not are ! 143: boolean operators; and id is a type label. Or and and are ! 144: left-associative. Or has the lowest precedence, then and, ! 145: then not. In terms of entering the boolean expression on the ! 146: command line, or is represented by the character `|', and by ! 147: the character `&', and not by `!'. Since these characters, ! 148: together with `(' and `)', are meaningful to the command ! 149: shell, it is good idea to enclose the whole expression in ! 150: quotes. Even if this is done, the `!' character must still ! 151: be escaped by a backslash `\' if it precedes a type label to ! 152: prevent it from being interpreted by the _c_s_h history mechan- ! 153: ism. The command ! 154: ! 155: pexec "-Tprint&(libsrc|cmdsrc)" 'pr *.h *.c' | lpr ! 156: ! 157: prints the source code in the command and library direc- ! 158: tories, but not the directory containing header files. ! 159: Alternatively, ! 160: ! 161: pexec "-Tprint&\!include" 'pr *.h *.c' | lpr ! 162: ! 163: achieves the same result. ! 164: ! 165: Project Pathnames ! 166: ! 167: _P_r_o_j_e_c_t _p_a_t_h_n_a_m_e_s provide a convenient way for accessing a ! 168: particular directory or file within a project hierarchy. A ! 169: project pathname is formed by a succession of project names ! 170: separated by `^' characters, followed by the name of the ! 171: directory or file. For instance, to describe a file `main.c' ! 172: in the project directory `work' in the project `spms', the ! 173: project pathname is ! 174: ! 175: ^spms^work/main.c ! 176: ! 177: The project at the top of each user's project hierarchy is ! 178: called the _r_o_o_t _p_r_o_j_e_c_t and is given the special name `^'. ! 179: If a project pathname begins with the character `^', it is ! 180: interpreted relative to the root project and is called an ! 181: _a_b_s_o_l_u_t_e _p_r_o_j_e_c_t _p_a_t_h_n_a_m_e. However, a project pathname not ! 182: beginning with `^' is interpreted with respect to the ! 183: current working project and is therefore called a _r_e_l_a_t_i_v_e ! 184: _p_r_o_j_e_c_t _p_a_t_h_n_a_m_e. The parent of the working project is ! 185: called `....' and the alternative name for the current pro- ! 186: ject is `...'. ! 187: ! 188: Project pathnames may have a prepended ~_u_s_e_r_n_a_m_e, and an ! 189: appended regular pathname. For example, the pathname ! 190: ! 191: ! 192: ! 193: ! 194: ! 195: Printed 6/22/83 5/20/83 3 ! 196: ! 197: ! 198: ! 199: ! 200: ! 201: ! 202: SPMSINTRO(1P) UNIX Programmer's Manual SPMSINTRO(1P) ! 203: ! 204: ! 205: ! 206: ~pjn^spms^work/old/main.c ! 207: ! 208: represents the path to `main.c' located in the directory ! 209: `old' in the project `spms' owned by `pjn'. ! 210: ! 211: OPTIONS ! 212: ENVIRONMENT VARIABLES ! 213: PROJECT Absolute pathname of the current working ! 214: project root directory. This variable is ! 215: set by _c_h_p_r_o_j_e_c_t. ! 216: ! 217: ROOTPROJECT Absolute pathname of the root project direc- ! 218: tory. The default is the user's home direc- ! 219: tory. ! 220: ! 221: FILES ! 222: ... Project link directory. ! 223: ! 224: SEE ALSO ! 225: chproject(1P), mkmf(1P), mkproject(1P), pcp(1P), pd(1P), ! 226: pdiff(1P), pexec(1P), pfind(1P), pgrep(1P), phelp(1P), ! 227: plog(1P), pman(1P), pmkdir(1P), pmv(1P), ppd(1P), ! 228: prmdir(1P), ptest(1P), pwp(1P), rmproject(1P) ! 229: Peter J. Nicklin _T_h_e _S_P_M_S _S_o_f_t_w_a_r_e _P_r_o_j_e_c_t _M_a_n_a_g_e_m_e_n_t _S_y_s_- ! 230: _t_e_m ! 231: ! 232: AUTHOR ! 233: Peter J. Nicklin ! 234: ! 235: BUGS ! 236: At present, project pathnames are only recognized by SPMS ! 237: commands. ! 238: ! 239: Since the Bourne shell, _s_h, recognizes the `^' character as ! 240: an alternative pipe symbol, Bourne shell users must type ! 241: `\^' instead. ! 242: ! 243: ! 244: ! 245: ! 246: ! 247: ! 248: ! 249: ! 250: ! 251: ! 252: ! 253: ! 254: ! 255: ! 256: ! 257: ! 258: ! 259: ! 260: ! 261: Printed 6/22/83 5/20/83 4 ! 262: ! 263: ! 264:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.