README.SCCS
1#ident "@(#)README.SCCS 1.9 18/04/04 "
2
3This is a portable and reworked version of the original UNIX SCCS source.
4
5SCCS is the most mature Revision Control System. This source is:
6
7- Based on the original SCCS project that started in 1972 at Bell Labs.
8
9- Including all Sun / Solaris extensions.
10
11- Large file aware
12
13- Allowing to selectively disable/enable expansion of specific SCCS
14 keywords (like %I%, %Q%, ...).
15
16- Correctly dealing with lockfiles even in a NFS based multi machine
17 environment.
18
19- Using gettext() for internationalized texts.
20
21- Completely using a type clean set of function prototypes and external
22 variable definitions.
23
24- Ported to and tested on all major OS platforms.
25
26To compile, just run "smake" (or Sun make or GNU make).
27
28The binaries by default install to /opt/schily/ccs/bin & /opt/schily/xpg4/bin
29"/opt/schily" is called "Installation Base" and may be controlled via the
30make macro INS_BASE.
31
32If you like to install SCCS to a different directory, you need to do
33the following:
34
35If you like to install to e.g. /usr/sccs, call:
36
37 smake INS_BASE=/usr/sccs
38 smake INS_BASE=/usr/sccs install
39
40The binaries then are located in /usr/sccs/ccs/bin and /usr/sccs/xpg4/bin
41
42If you like to create binaries to incorporate into a standard UNIX distribution,
43call:
44
45 smake INS_BASE=/usr
46 smake INS_BASE=/usr install
47
48The binaries then are located in /usr/ccs/bin and /usr/xpg4/bin
49
50
51Note that you need to at least recompile sccs.c, delta.c and help.c
52in case that you like to change the install directory. The other programs
53need to be recompiled too, in order to allow them to find their international
54string translation files or in case that SCCS_FATALHELP has been defined for
55compilation, so is is a good idea to recompile everything:
56
57string translation files, so is is a good idea to recompile everything:
58
59smake clean
60smake INS_BASE=/usr/sccs
61smake INS_BASE=/usr/sccs install
62
63or at least:
64
65rm cmd/sccs/cmd/*/OBJ/*/*.o
66smake INS_BASE=/usr/sccs
67smake INS_BASE=/usr/sccs install
68
69The normal install tree looks this way:
70
71/opt/schily/bin/ contains symlink to the "sccs" program
72/opt/schily/ccs/bin/ contains sccs binaries
73/opt/schily/ccs/include/ fallback search dir for %sccs.include.filename%
74/opt/schily/ccs/lib/ contains internal libs
75/opt/schily/ccs/lib/help/ contains help files
76/opt/schily/share/man/ contains man pages
77/opt/schily/xpg4/bin/ contains POSIX variants of the binaries
78
79With:
80
81smake clean
82smake INS_BASE=/usr SCCS_BIN_PRE= SCCS_HELP_PRE=share/
83smake INS_BASE=/usr SCCS_BIN_PRE= SCCS_HELP_PRE=share/ install
84
85the install tree looks this way:
86
87/usr/bin/ contains sccs binaries
88/usr/lib/ contains internal libs
89/usr/share/include/ fallback search dir for %sccs.include.filename%
90/usr/share/lib/help/ contains help files
91/usr/share/man/ contains man pages
92/usr/xpg4/bin/ contains POSIX variants of the binaries
93
94Note that in this case, the binary of the UNIX "diff" program may overwrite
95a local "diff" variant. If you plan to create binary packages that do not
96include the UNIX diff program, be careful to check whether the local diff
97program supports all needed features for SCCS and allows SCCS to work
98correctly in all cases. If you like to verify that you local "diff"
99implementation works correctly, run the following:
100
101smake clean
102smake INS_BASE=/tmp/SCCSTEST SCCS_BIN_PRE= SCCS_HELP_PRE=share/ tests
103cp /usr/bin/diff /tmp/SCCSTEST/bin
104smake INS_BASE=/tmp/SCCSTEST SCCS_BIN_PRE= SCCS_HELP_PRE=share/ tests
105
106and verify that both runs of the test work correctly.
107
108Also note that this kind of parameters work with smake, gnu make and the
109schilytools variant of SunPro Make, but not with the Sun/Oracle provided
110version of SunPro Make because the latter does not propagate command line
111macro definitions to sub make programs.
112
113NOTE: If you are compiling using a K&R C-compiler and like to install
114to a different dir than /usr/ccs, you need to edit all *.c files in
115the directory cmd/sccs/cmd/src. Look for the comments tagged XXX for further
116help and edit all strings in the #else parts of #ifdef PROTOTYPES.
117Replace the "/usr" prefix with your intended install path.
118
119
120If you like to "install" to a different intermediate directory, call e.g.:
121
122smake install DESTDIR=/tmp
123
124Note that you need to add all other make parameters as well on the command line
125when you use DESTDIR=<dir>.
126
127If you like to use sccs, you need to add /opt/schily/ccs/bin to your PATH.
128
129If your PATH has ${INS_BASE}/xpg4/bin before ${INS_BASE}/ccs/bin
130line in: ${INS_BASE}/xpg4/bin:${INS_BASE}/ccs/bin
131you will use the POSIX compliant variants of the SCCS tools.
132
133Further compile time options:
134
135SCCS implements the following compile time options that can be activated via
136
137 smake COPTX=-DXXX
138or
139 smake "COPTX=-DXXX -DYYY ..."
140
141where XXX is one of the following:
142
143BUG_1205145
144or
145GMT_TIME
146 This is a hacky compile time option introduced by Sun
147 between 1989 and 2006. It allows to store GMT based timestamps
148 in the SCCS history files instead of local time based timestamps.
149
150 Note that this compile option is deprecated since SCCS
151 started to support the SCCSv6 history format that stores
152 local time + GMT offset.
153
154 Future versions of SCCS may not support this anymore or
155 just stop compiling when the option is used.
156
157
158SCCS_FATALHELP
159 Print the equivalent of the "sccs help" command for failing commands
160 in addition to the historic short message that only includes the
161 SCCS error code.
162
163 This option is enabled by default.
164
165
166NO_NANOSECS
167 Do not include nanoseconds in the SCCSv6 time stamps.
168