-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
206 lines (153 loc) · 7.98 KB
/
README
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
This is the README file for GNU CSSC, a workalike for the source code
control system SCCS. It is based on the MySC package by Ross Ridge.
Although this is a full public release of CSSC, there are features of
the SCCS suite which are not fully implemented. The most important of
these is excluded deltas.
Specific information about compiling CSSC on particular platforms is
provided in the file "docs/Platforms".
==============================================================================
Quick Start
------------------------------------------------------------------------------
0. Configuring the package
You will need a C++ compiler that can compile C++11. Most C++
compilers these days will do that.
To configure CSSC before compiling it, run the "configure" script.
See the file INSTALL for the generic options you can use with "configure".
Options for "configure" that are specific to CSSC are detailed below.
--enable-binary
This is the default setting (but the default setting may change
in the future).
Enables support for creating "binary" SCCS files (required for
interoperability with Solaris). If binary support is disabled,
encoded SCCS files can still be read, but not created. You should
disable this feature only if you need to interoperate with a
version of SCCS which lacks binary file support.
The setting of this option can be overridden at runtime by setting
the environment variable CSSC_BINARY_SUPPORT to "disable".
--disable-binary
Turns off suport for creating encoded ("binary") SCCS files.
CSSC will still handle these as input, but will never create one,
when this option is used.
The setting of this option can be overridden at runtime by setting
the environment variable CSSC_BINARY_SUPPORT to "enable".
--enable-max-line-length=N
The default setting corresponds with N=0.
Sets the maximum line length allowed in SCCS files to N. By
default, CSSC has no limit. Use this option only if you need to
make CSSC interoperate with other versions of SCCS. This limit
applies only to the actual body lines in the file, and are not
checked for (e.g.) comments. This means that by entering a
very long comment, you can make CSSC produce an SCCS file which
cannot be read by some other versions of SCCS.
The setting of this option can be overridden at runtime by setting
the environment variable CSSC_MAX_LINE_LENGTH to a positive integer.
Setting CSSC_MAX_LINE_LENGTH to 0 removes the limit (and so CSSC will
handle lines of any length).
--disable-valgrind
Disables the use of valgrind for the unit and regression tests.
By default, valgrind will be used if it is available. If you
would like to disable valgrind at configure time, pass the
--disable-valgrind option. To disable it afterward, you can
simply set the enviroment variable CSSC_DISABLE_VALGRIND.
Occasionally a system binary (for example a shell) which is used
to run the tests will have a behaviour that Valgrind doesn't like.
Valgrind normally shows the name of the problem binary in its
error report. If "make check" or "make distcheck" fail in this
way, try again with "env CSSC_DISABLE_VALGRIND=1 make check" or
similarly for "make distcheck".
1. Compiling
You will probably need to compile the software with GNU make.
The default installation directory for the binaries is
/usr/local/libexec/cssc, except for the sccs comand, which gets
installed in /usr/local/bin.
If you want to change this, you will need to read the file INSTALL.
If, for example, you want to install the files in /usr/libexec/cssc
and so on rather than in /usr/local/..., you just need to pass the
argument "prefix=/usr" to make.
If, on the other hand, all you wanted to do was to install the binaries
in a normal binary directory, you can do this with the argument
"csscutildir=/usr/local/bin" to make.
The program "sccs" is sensitive to the setting of $(csscutildir) at
compile time, because it compiles in the value of that option as the
default place to find the various subprograms.
mkdir work
cd work
../configure
make
2. Testing
Two types of tests are included with CSSC. First, the unit tests in
the subdirectory "unit-tests". These mostly test individual classes
or modules of CSSC (as opposed to running the CSSC binaries).
Second, there are regression tests in the subdirectory "tests". The
regression tests are run on the built CSSC binaries.
The unit tests are much newer than the regression tests and for the
moment they have lower test coverage.
To run all the tests (unit tests and regresion tests), run "make
check" in the top-level directory:
if make check 2>&1 | tee make.log
then
echo SUCCESS
else
echo FAILURE
fi
This runs the unit tests first and if they succeed, the regression
tests. If either fails, take a look at "make.log".
If you want to run just the unit tests, do this:
cd unit-tests && make check
If you want to run just the regression tests, do this:
cd tests && make check
Note that the regression test process accepts several environment
variables which allow you to point it at a particular installation of
the tools. If you have used these variables for something else, the
test will fail. These variables are :-
$dir, $get, $admin, $cdc, $prs, $prt, $delta, $sact, $sccsdiff,
$unget, $what, $rmdel, $sccs
If the regression tests failed, I'll definitely need some more
information and so it would be best to keep the test outputs in case
I need them in order to fix the bug ("tar cf failed-tests.tar tests"
should do fine for that). I may need to ask you to send a compressed
version of this to me.
If the unit tests failed, I only need you to send the stderr output
(i.e. "make.log" from the example above).
Valgrind will be used for the tests, if it is available and
--disable-valgrind was not in the options passed to configure. This
slows the tests down quite a lot. To prevent the use of valgrind,
you can set the environment variable CSSC_DISABLE_VALGRIND.
3. Installing
cd work
make install
==============================================================================
SCCS commands implemented this package are: admin, cdc, delta, get,
prs, prt, sccsdiff, rmdel, sact, sccs, unget, val and what. Not all
options and capabilities of the commands have been implemented yet,
and the comb and help commands are not provided at all.
You can use these tools to convert your SCCS repository to RCS or CVS
- to do this, you will also need the SCCS-to-RCS conversion script by
Jonathan Leffler (which should be included in the source distribution
of CVS).
Unimplemented features include the "-h" option of admin (use "val"
instead), ignored deltas (delta -g), l-files (get -l). Some features
like including and excluding deltas (get -i -x) have been implemented
but not extensively tested.
See the file INSTALL for information on how to compile this package.
Send any questions or bug reports by e-mail to the <[email protected]>
mailing list. After you have compiled CSSC, _PLEASE_ run the test
suite, as described in docs/TESTING. I'm particularly intersested in
success reports for platforms not in the "docs/Platforms" file.
To generate the manual, use one of these commands:
To make the PDF format manual: make pdf
To make the PostScript format manual: make ps
To make the DVI format manual: make dvi
To make the HTML format manual: make html
To make the Info format manual: make info
If you don't have TeX, you can read the "info" documentation with
either the GNU "info" program, or Emacs.
To regenerate all the machine-generated files from their ultimate
sources (for example, after checking the controlled sources out of a
CVS repository), use
./bootstrap
followed by the usual invocation of "configure" and "make".
The most helpful thing you could possibly do for this project would be
to contribute a new test case. It isn't hard; the test scripts are
just shell scripts; instructions on how to do this are provided in the
manual.