1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337
|
This is README for shapeTools-1.4pl6.
It contains general information on ShapeTools (we also refer to it as
"shape toolkit") and an overview of its parts. The file "INSTALL"
helps you installing the toolkit on your machine. It also gives hints
for solving portability problems and describes the procedure for
porting the toolkit to a new operating system platform. If you used
ShapeTools-1.3 (or earlier versions) before, you should read
"CHANGES-1.4" to check, what has changed since 1.3.
*** The file CHANGES-1.4 contains important information ***
*** on migrating from ShapeTools-1.3 to ShapeTools-1.4. ***
Before installing and using the shape toolkit on your computer, you
should also read the file "LICENSE". In the file "SUPPORT", you find
important information on how the ShapeTools development will be
carried out in the future. You can also find the address of a company
offering commercial support for ShapeTools there.
If you have any questions, hints or bug reports, you may contact us
via:
Tech. Univ. Berlin Tel: +49-30-314-73230
"ShapeTools" Fax: +49-30-314-73488
Secr. FR 5-6 E-mail: shape@cs.tu-berlin.de
Franklinstr. 28/29
10587 Berlin, Germany
We set up a mailing list for announcing new releases and patches and
for discussion of ShapeTools specific topics. If you want to be kept
informed about the evolution of the toolkit, you should subscribe to
the mailing list. The list is managed automatically. You can subscribe
by sending a mail to
"listserv@tubvm.cs.tu-berlin.de"
with the contents
"sub shape-l <your full name>".
Submissions to the mailing list are to be sent to
"shape-l@tubvm.cs.tu-berlin.de".
General information:
====================
ShapeTools is a collection of programs to support software
configuration management in an UNIX environment. It consists of a set
of version and attribute control commands, and a configuration
interpreter and build tool ("shape"). The toolkit is integrated on top
of AtFS (Attributed File System), a storage system supporting multiple
versions of files and associating an arbitrary number of application
defined attributes of the form "name=value" with each version. AtFS
comes as a function library that is meant as an extension to the UNIX
file system. It does this without the need for kernel modifications
and without imposing any restrictions to existing file system
applications. ShapeTools is designed to live meaningfully together
with any other UNIX tool operating on regular files. This distribution
also contains a prototype for a comprehensive change control and
release management system designed to manage the evolution of system
releases in multi programmer software development efforts.
The ShapeTools version and attribute control system ("shape_VC")
----------------------------------------------------------------
The ShapeTools version and attribute control control system is a set
of UNIX(1) commands. Shape_VC offers version control functionality
and direct access to user definable attributes associated with each
version. In detail, shape_VC comprises
- storage and retrieval of multiple revisions of files.
- a built in status model for revisions.
(States: busy, saved, proposed, published, accessed, frozen)
- documentation of change histories.
- synchronization of concurrent updates to a history.
- symbolic names as version number aliases.
- a flexible version selection (version binding) mechanism driven by
general version binding rules.
- a basic network user concept.
- full (read and write) access to user definable attributes.
The last point in the list, the attribute control, deserves some more
attention. As the underlying storage system (AtFS) supports
associating any number of attributes with each version, shape_VC uses
this mechanism to allow the user to attach his/her own management
information in form of attributes to stored revisions. The attribute
mechanism supports
- genuine attributes (<name>=<value>)
where the attribute value is given statically.
- execution attributes (<name>=!<executable_program>)
where the attribute value is determined dynamically by executing
a given program or shell script and catching its output.
- file reference attributes (<name>=^<filename>)
where the contents of a file is taken as attribute value. The
file contents is read on every attribute access.
- version reference attributes (<name>=*<network_pathname>)
where the attribute value points to another version.
The toolkit character of the system allows to use it directly by
calling the commands from the shell, or to build a customized
environment on top of it. As an example, we wrote some code to provide
direct access to the system from within GNU-Emacs. The corresponding
emacs lisp code is contained in the distribution.
The Attributed File System (AtFS)
---------------------------------
AtFS is the base abstraction of the whole toolkit. It provides uniform
access to immutable revisions of files stored in special archive files
(in a directory named "AtFS"), and mutable regular UNIX files.
Consequently, the AtFS based toolkit lives peacefully (and
meaningfully!) together with standard file system applications
(editors, compilers, formatters etc.). Cooperative work within
projects is supported by a build-in status model, controlling
visibility of version objects, and locking, a primitive form of "long
transactions" for synchronizing concurrent updates. The general
concept of application defined attributes provides a basis for storing
management information with versions and passing this information
between individual tools. This mechanism is useful for building
integrated environments from a set of unrelated tools. AtFS also
supports derived object management, i.e. it maintains a cache of
multiple versions of compiled object-files (e.g. compiled c-files with
different compile switches).
People with sophisticated requirements may also add their own
applications on basis of AtFS to the toolkit. There is a fully
documented C-language interface to AtFS, on top of which all the
toolkit programs are built. Additionally to the AtFS C interface,
there is the AtFS toolkit library interface (also in C), providing
higher level functions such as the version binding mechanism.
The configuration management and build program ("shape_CM")
-----------------------------------------------------------
The shape_CM component consists of the program "shape", performing
- identification of system components,
- component version selection,
- variant control,
- driving transformations (eg. compilations) and
- recording configurations (for later rebuild)
for the software system to be built.
Shape_CM uses, similar to make, a description file named "Shapefile".
In fact shape_CM is upward compatible to Make in that it can properly
handle conventional Makefiles. The Shapefile however, uses
Makefile-style dependencies as (versionless) abstract system model and
employs version selection rules to dynamically bind particular versions
to the names listed in the system model. The version selection
mechanism exploits AtFS' ability to maintain any number of arbitrary
attributes for objects in the object base. On special request, shape
records an identified configuration in a configuration identification
document (bound configuration thread - BCT) which has the form of a
completely bound Shapefile (all object-instances are explicit).
One of the most useful features of shape is its support of various
variant administration techniques. Shape makes no assumptions about
the semantics of the variant notion other than having alternative
(conceptually equivalent) instances of the same concept ("module").
Despite the particular semantics of a certain variant-concept, there
is a small number of techniques to physically handle variants. These
techniques are what shape supports. Most commonly used techniques are:
- equally named files in different directories
- one source file representing multiple variants that are
extracted by a preprocessor using different preprocessor switches
(e.g. conditional compilation)
- one source file processed by different tools or different
tool versions/variants (e.g. cross compilation, different coders)
- combinations of the above.
Shape includes a variant definition facility that allows very flexible
and convenient handling of all of the above variant administration
techniques.
The ShapeTools release management system (shape_RMS)
----------------------------------------------------
Enclosed in the distribution is a prototype for a configuration
management environment to be used for constructing system releases in
complex (multi programmer) software development projects. Using this
environment does not require any experience in writing Shapefiles
(resp. Makefiles). The environment consists of templates for a
Shapefile and a Makefiles and of a library of Shapefile fragments for
project wide use.
The shape_RMS supports:
- a fully automatic global release building mechanism with automatic
release number generation.
- automatic generation of prereleases as systematic preparation of
releases.
- construction of subsystem releases and prereleases
- system building and installation by shape *and* make
- standard version selection rules
- a project wide unified variant raster
- built in standard functions for cleaning up, generating tar or shar
files, determine file dependencies etc.
Each directory where a part of the managed system is developed, has to
be equipped with a Shapefile and a Makefile derived from the given
templates. In the normal case, the derivation just requires setting a
few macros. Shape- and Makefile are kept redundancy free, the Makefile
is inserted in the Shapefile via an "include" mechanism. The
management of a Shapefile *and* a Makefile (although the Shapefile
alone should be enough) implies, that certain system building
functions can also be performed by "make". This is especially
important for producing self contained releases (buildable and
installable on shape-less computer systems by use of make) from the
projects development area (managed by shape).
Further reading
---------------
You can find additional information on the shape toolkit in the manual
pages and the tutorial enclosed in the distribution. The tutorial
shall help you to learn to use the toolkit in your development work.
If you want to read more about the concepts of shape and its object
base, we refer to:
Axel Mahler, Andreas Lampen
"An Integrated Toolset for Engineering Software Configurations"
Proceedings of the ACM SOFSOFT/SIGPLAN Software Engineering
Symposium on Practical Software Engineering Environments
Boston MA, 28-30 November 1988
pp. 191-200 SIGSOFT SE Notes V13-No5, SIGPLAN NOTICES V24-No2,
Andreas Lampen, Axel Mahler
"An Object Base for Attributed Software Objects"
Proceedings of the EUUG Autumn '88 Conference
Cascais (Portugal) 3-7 October 1988
pp. 95-105, European UNIX User Group, London 1988
Ulrich Pralle
"Driving the Software Release Process with Shape"
Proceedings of the EUUG Autumn '90 Conference
Nice (France) October 1990
pp. 27-38, European UNIX User Group, London 1988
This distribution contains the following parts:
===============================================
+PATCHLEVEL -- The current patchlevel.
CHANGES-1.4 -- Release notes for ShapeTools-1.4
Dependencies -- An automatically generated file containing
Makefile dependencies. There are no
dependencies on this level.
in the ShapeTools root directory.
SUPPORT -- Some words about the status of ShapeTools
and a company offering support for
ShapeTools users.
INSTALL -- Information how to build and install the
toolkit on your machine.
LICENSE -- Important information about copying
permissions and warranty issues.
This file should *not* be deleted.
Makefile -- The top level Makefile for the toolkit.
Questionnaire-- A questionnaire asking about your opinion
about ShapeTools. Please fill this out after
you have used ShapeTools a while.
README -- The file you are currently reading.
Release -- The current Release Id.
Shapefile -- The top level Shapefile.
shape_conf.sh-- A configuration script invoked
automatically when calling "make" the
first time and by "make config".
bin/
include/ -- Two local installation directories.
These are initially empty.
lib/ -- The lib directory for local installation of
internal libraries during system build.
This is inilially empty, it only only contains
the (empty) subdirectories
shape/ -- for the common Shapefile parts and the
templates for Makefiles and Shapefiles.
emacs/lisp -- for the emacs lisp code
man/ -- The online manuals for
man1/ -- the commands,
man3/ -- the AtFS, AtFStk and sttk library
interfaces,
man5/ -- file formats of AtFS archive files, and
man7/ -- templates and version bind rules.
src/ -- The sources
atfs/ -- the attribute file system (AtFS)
atfstk/ -- the AtFS toolkit library (AtFStk)
interface/ -- GNU-Emacs lisp code
patches/ -- patches for gbd and GNU-grep
rms/ -- the release management system
shape/ -- the shape program
sttk/ -- the ShapeTools toolkit library
vc/ -- the version control system
tutorial/ -- A tutorial on how to work with the shape toolkit
Specialties of the System V version
===================================
For sake of a proper release management with shape, it is extremely
useful to be able to share AtFS subdirectories (where the archive files
are stored) between different directories. On BSD like systems, this
can be organized by using symbolic links. Older System V systems do
not support symbolic links, so we introduced a mechanism allowing the
"AtFS" entry in a directory to be either a subdirectory (the normal
case) or a regular file containing a directory name. The latter case
is handled like a symbolic link and archive files are searched in the
directory named in the "AtFS" entry.
Acknowledgement
===============
Version 1.0 of the shape toolkit was a result of the UniBase project,
a joint research and development project funded by the
"Bundesministerium fuer Forschung und Technologie" (BMFT, Federal
Ministry for Research and Technology of West Germany) under grant
number ITS-8308. The project aimed at the development of a large
scale industrial software production environment.
The current work on the toolkit (version 1.1 and newer) is mostly part
of the STONE project (A STructured and OpeN Environment). STONE is a
scientific project aiming at the construction of a generic software
development environment kernel. The STONE consortium consists of
nine German universities and research institutes, three of them from
former East Germany. STONE is also funded by the BMFT under grant
ITS-8902E8.
Further contributions come from members of the REX project
(Reconfigurable and Extensible Parallel and Distributed Systems)
funded by the EC as ESPRIT Project 2080, and from faculty members of
the TU Berlin.
Thanks to the various people who sent bug reports, hints and
recommendations. Thank you also to the moderator and reviewers of
comp.sources.reviewed, who made very valuable comments on
shapeTools-1.2. They definitely had no easy job reviewing shapeTools
in it's whole complexity.
Special thanks to Steve Emerson (steve@unidata.ucar.edu) who rewrote
parts of the shape program.
Juergen Nickelsen (re)implemented various parts of the toolkit as
member of the STONE project crew. Unfortunately he had to leave the
project due to funding problems. We hope to get him back into the
ShapeTools family as soon as possible.
The ShapeTools people,
Andy Lampen and Axel Mahler
|