CSL Notebook Topic
To CSL  Date August 9, 1984
From Mike Kupfer  Location PARC
Subject How to compile Alpine Organization CSL
Came from /Indigo/Alpine/Release52/Doc/HowToCompileAlpine.tioga
Last edited by MBrown on February 12, 1984 10:31:23 pm PST
Last edited
 by Kupfer on August 9, 1984 4:45:03 pm PDT
Abstract This memo tells how to rebuild Alpine's bcds from their Cedar sources. It is implementor documentation; consult the administrator documentation for instruction on how to start up a server, using the new bcds.
Cedar release directory
The df files mentioned below all contain imports from the Cedar5.1 and Cedar5.2 directories. Because this directory now changes with each Cedar release, these df files will have to be hand-edited with each Cedar release.
We use "©" to denote "the current release directory for the DF file in question."
The Alpine server implementations
To establish context,
% CD ///AlpineRelease/ -- the name is up to you
% Bringover /Indigo/Alpine/Release52/Top/AlpUmbrella .
Alpine has five public interfaces, i.e. interfaces for remote access from workstations: AlpineTransaction, AlpineFile, AlpineVolume, AlpineOwner, AlpineDebug. AlpineEnvironment is a types-and-constants-only module used by everybody.
The public interfaces must occasionally be recompiled, generally due to Cedar changes. Most often the recompilation will not affect the format of calls on the wire, hence will not require the client implementations out in the world to change. Very occasionally the public interfaces will change in an incompatible way, as happened recently when the size of FileIDs changed. Then you must not only recompile, but change the version stamp on the interface and distribute new client software to the world.
You change the version stamp by editing AlpineRemoteExportImpl. You increment each half of AlpineRemoteExportImpl.version by one, then save the file.
If you are recompiling the public interfaces, you must be sure that the bcds of the same names (AlpineEnvironment.bcd, AlpineFile.bcd, etc) do not exist in the root directory; otherwise Lupine will become confused. Then
% Bringover -p /Indigo/©/Top/Lupine
% AddDebugSearchRule ///AlpineRelease/ -- to help Lupine
% AlpExportsCompileExports .
To rebuild the server implementations, whether or not you have recompiled the public interfaces,
% MakeAlpineInternals .
It is possible that MakeDo, invoked inside MakeAlpineInternals, will complain about a syntax error in either LogMapImpls.Config or FilePageMgrImpls.Config. This is acceptable, as long as AlpineCommonImpls.bcd and AlpineServerImpls.bcd actually get rebuilt.
When you are done,
% SModel AlpUmbrella
% VerifyAlpine -- "VerifyDF AlpUmbrella" does not work very well
% Delete *!* -- clean up the scratch directory
See the comments in AlpUmbrella.df; they explain how to rebuild a single Alpine configuration without rebuilding everything else.
The Alpine client implementations
If you have just recompiled the server implementations, be sure to SModel them before building the client implementations.
To establish context,
% CD ///AlpineClientRelease/ -- the name is up to you
% Bringover /Indigo/Alpine/ClientRelease50/Top/AlpUser .
To rebuild the client implementations,
% AlpUserCompileExports; AlpUserCompileInternals .
When you are done,
% SModel AlpUser
% VerifyDF AlpUser
% Delete *!* -- clean up the scratch directory
Alpine and the Cedar release
The procedures above only write files on /Indigo/Alpine/. We release only the client software to /Indigo/Cedar*.*/. Unfortunately, not all client software is controlled by AlpUser.df: the public interfaces belong to AlpUmbrella. This means that a separate df file, AlpineUser.df, is required for the release.
A safe way to proceed is as follows:
% CD ///AlpineCedarRelease/ -- the name is up to you
% Bringover /Indigo/Alpine/Release52/Top/AlpUmbrella
% Bringover /Indigo/Alpine/ClientRelease50/Top/AlpUser
% Open /Indigo/©/Top/AlpineUser.df
% -- now edit it to point to the next release directory, say Cedar5.2, and save
% SModel AlpineUser
% VerifyDF AlpineUser
% Del *!* -- clean up the scratch directory
Caveat
Having not worked with the client-side software, I am not 100% convinced that what is described above will work. In particular, I don't know whether my recent changes to the server software will affect making new client BCD's. Also, I believe that if you change any of the publicly exported interfaces (AlpineTransaction, etc.), then you must fix AlpUser.df before you Bring it Over (otherwise it brings over the old version, right?).