Annotation of 43BSD/contrib/spms/man/catn/spmsintro.n, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.