Oberon || Compiler & Tools || Library || Module Index || Search Engine

Ulm's Oberon System:


obci - check in Oberon sources


obci [ option ] ... file ...


obci stores one or more Oberon source files in combination with a set of compilation options into the compiler database (CDB), located in the Oberon name space in the directory /pub/cdb/oberon. Source files must have a suffix of ``.od'' (in case of definitions) or ``.om'' (in case of modules). No syntax checks are performed but a module name must be extractable.

Sources may be checked in any number of times. If the source differs, a new entry in CDB is created that, by default, takes precedence over older releases. If the source text is identical to a version already present in CDB, it's associated header (containing compilation options and a time stamp) is updated.

Following options affect obci directly:

-a authfile
specifies a file containing a persistent object of type Shards.Lid that is to be used for authorization.
-b basedir
defines the base path of the compiler data base (CDB). Default is /pub/cdb/oberon.
check in all sources with the time stamps (last time of modification) of their corresponding files (default behaviour).
do not take the modification stamps of the source files but the current time as time stamp in CDB.

Compilation options are simply stored into CDB along with the source text. Their main use is to fine-tune the set of identifiers visible as standard identifiers (like INTEGER) and internal modules (as SYSTEM). By default, these sets are minimized in conformance to the Oberon reports. Local extensions of SYSTEM are available on request only.

Some identifier sets are defined to avoid the necessity of enumerating a long list of identifiers:

Set of standard identifiers as defined in the Oberon report.
Set of identifiers exported by SYSTEM as defined in the Oberon report.
Local set of extensions of SYSTEM (not included by default).
Local set of standard functions that support UNIX system calls: UNIXCALL, UNIXFORK, and UNIXSIGNAL. Not included by default.

In addition, some fine-tuning options are available that cover changes introduced by revisions of the Oberon report.

Currently, following options are supported:

-builtin modname
add modname to the list of internal modules that may be imported like SYSTEM. There are none available yet.
do not permit the same identifier specified twice in one of the internal modules or in the set of standard identifiers (default).
allow name clashes. The first definition of an identifier supersedes any later additions.
-std idset
include the set of identifiers idset to the set of standard identifiers. The first use of this option empties the set first. Further uses extend the set.
-sys idset
include the set of identifiers idset to the set of visible identifiers in SYSTEM.

Following options allow to modify some of the identifier sets. The option name should be prefixed by + for TRUE, and - for FALSE:

option       identifier set   identifiers                  default
stdbyte      std              BYTE                         TRUE
stdsize      std              SIZE                         FALSE
sysaddress   ulmsys           ADDRESS, UNTRACEDADDRESS     TRUE
sysbyte      sys              BYTE                         FALSE
syscr        ulmsys           Ulm's coroutine primitives   TRUE
syshalt      ulmsys           HALT (without cleanup)       TRUE
sysint16     ulmsys           INT16 (16-bit integer)       TRUE
syssize      sys              SIZE                         TRUE


Check in Streams.od and Streams.om with all extensions of Ulm enabled in conformance to older Oberon reports:
oberon$ A=/var/cdbd/db/write
oberon$ obci -a $A -sys sys -sys ulmsys -sys unixsys Streams.o[dm]

Check in a module in conformance to the latest Oberon report:

oberon$ A=/var/cdbd/db/write
oberon$ obci -a $A -stdbyte +sysbyte -syssize +stdsize Hello.mod


Following environment parameters allow to override the builtin defaults:
default path of the authorization file.
default path of CDB within the Oberon name space.


daemon running CDB.
compiles (if necessary) and loads modules.
removes modules from CDB.
daemon defining the shared root of the Oberon name space.
Oberon name space.
definition of ulmsys.
definition of std.
definition of sys.


Sources checked in are readable for everybody with read access to CDB. There is currently no difference between shared and private modules.
Edited by: borchert, last change: 2005/04/27, revision: 1.7, converted to HTML: 2005/04/27

Oberon || Compiler & Tools || Library || Module Index || Search Engine