1New features with AN-2020-11-25:
2
3This is the first localization step for the schily source consolidation. Many
4programs now (hopefully) call gettext() for all strings that need localization.
5
6-	The next step will include dgettext() calls for the libraries and the
7	missing programs
8
9-	The following step will include the extracted strings
10
11-	The last step will include German translations and install support
12	for the resulting binary message object files.
13
14----------> Please test and report compilation problems! <---------
15
16***** NOTE: As mentioned since 2004, frontends to the tools should *****
17*****		call all programs in the "C" locale		   *****
18*****		by e.g. calling: LC_ALL=C cdrecord ....		   *****
19*****		unless these frontends support localized strings   *****
20*****		used by the cdrtools with NLS support.		   *****
21
22		*** WARNING        ***
23		*** Need new smake ***
24
25	*** Due to the fact that schily-tools 2014-04-03 introduced to use new macro
26	*** expansions and a related bug fix in smake, you need a newer smake
27	*** to compile this source. If your smake is too old and aborts, ensure to
28	*** use the recent smake by calling:
29
30	cd ./psmake
31	./MAKE-all
32	cd ..
33	psmake/smake
34	psmake/smake install
35
36	The new smake version mentioned above is smake-1.2.4
37	The recent smake version is smake-1.3
38
39	*** Due to the fact that schily-tools 2018-01-26 introduced
40	*** optimizations for the Schily version of SunPro Make, you
41	*** need at least the dmake version from 2018/01/11 with support
42	*** for the "export" directive to compile with this makefile system.
43
44
45	WARNING: the new version of the isoinfo program makes use of the
46		*at() series of functions that have been introduced by Sun
47		in August 2001 and added to POSIX.1-2008. For older platforms,
48		libschily now includes emulations for these functions but
49		these emulations have not yet been tested thoroughly.
50		Please report problems!
51
52	BUG WARNING: Please never report bugs only to Linux distributions as
53		they usually do not forward these bug reports upstream and as
54		the Linux distributions typically do not let skilled people
55		check the bugs. We did not hear about a FIFO problem in star
56		for a long time. Then a problem on Linux occurred once
57		every 6000-10000 tries but it did not happen on Solaris after
58		even 10 million tries, so it was not known besides Linux.
59
60	BUG WARNING: *** GNU make *** starts too early with parallel
61		execution (when reading Makefiles and evaluating rules for
62		"include" statements already). Since GNU make does not
63		support a concept for a correct ordering of such actions,
64		you need to be prepared to see gmake fail in parallel
65		mode. If you are interested in reliable parallel execution,
66		it is recommended to use the included "dmake" program with
67		a command line like:
68
69			dmake -j10 -f SMakefile
70
71		from the top level directory. Note that if you are on Linux,
72		you need a halfway recent kernel or the compile time will not
73		go down because of the low POSIX semaphore performance in
74		older Linux kernels.
75
76		The "dmake" program included in the schilytools tarball is the
77		current version of the "new" SunOS make program that has been
78		introduced in January 1986 by Sun Microsystems. It also
79		introduced new features like the "include" directive that
80		3 years later have been copied by gmake in a partially buggy
81		way. As gmake does not fix showstopper bugs, it cannot be
82		supported. Current showstoppers are: 1) gmake executes
83		"include" related rules in the inverse order, causing rules
84		to fail if they depend on files created by an "earlier" action
85		2) gmake caches an outdated state of the directory and aborts
86		with a wrong complain about allegedly missing files that in
87		fact exist already.
88
89
90-	Makefile System: Added support for MacOS on arm64
91
92	Thanks to a hint from Ryan Schmidt from macports
93
94	Note that due to outstanding replies to recent changes in configure,
95	it could up to now not be verified that all configure tests now work in
96	a way that results in correct overall results. See below for an in
97	depth report on the changes.
98
99-	Makefile System: autoconf (config.guess & config.sub) now supports
100	the new arm64 Apple systems.
101
102	Thanks to Ryan Schmidt from macports for provinding the needed uname(1)
103	output.
104
105-	Makefile System: Added a new shell script "autoconf/uname" that helps
106	to create shell scrips that allow to emulate an alien host system in
107	order to test the correct behavior of configure.guess and configure.sub
108	on the main development platform.
109
110	This helps to adapt configure.guess and configure.sub to new platforms
111	in the future.
112
113-	Makefile System: The new clang compiler as published with the upcomming
114	ARM macs has been preconfigured with
115
116		-Werror -Wimplicit-function-declaration
117
118	as the default behavior and thus is in conflict with the existing base
119	assumption of the autoconf system that minimalistic C-code used for
120	compile/link allows to check for the existence of a specific function
121	in libc without a need to know which system #include file is used to
122	define a prototype for that function.
123
124	This clang version, as a result of this default, behaves like a C++
125	compiler and aborts if a function is used with no previous function
126	prototype. This caused most of the existing autoconf test to fail with
127	error messages about missing prototypes.
128
129	We implemented a workaround using these methods for the identified
130	problems:
131
132	-	Most of the exit() calls in the various main() functions have
133		been replaced by return() to avoid a need to
134		#include <stdlib.h> in special since these test may be the
135		case for layered tests that #include files from the higher
136		level parts.
137
138	-	Many autoconf tests programs now #include more system include
139		files, e.g. stdlib.h and unistd.h to avoid missing prototype
140		errors. This cannot reliably be done in tests that are used as
141		a base for higher level tests where the high level test
142		#includes own system include files, since older platforms do
143		not support to #include the same file twice.
144
145		So this is tricky...
146
147	-	A test for a Linux glibc bug caused by incorect #pragma weak
148		usage inside glibc that prevents one or more functions from
149		ecvt()/fcvt()/gcvt() from being usable outside glibc now uses
150		hand-written prototypes for some of the libc interface
151		functions in order to avoid using the system includes. If we
152		did not do that, we could not use ecvt()/fcvt()/gcvt() on
153		MacOS anymore.
154
155	Thanks to Ryan Schmidt from macports for reporting and for the given
156	help that was needed for remote debugging.
157
158	Please send the needed feedback on whether the current state of the
159	configure script results on correct autoconf results on the M1 Macs.
160
161-	makefiles: A new copy of makefiles.tar.bz2 replaces the old one from
162	may 2020.
163
164-	libhfs_iso: changed malloc() to calloc() to avoid uninitialized data.
165	Missing initialization caused junk in the filesystem and fdisk
166	partition created by mkisofs with the -chrp-boot or -part option.
167
168	Thanks to Jan Engelhardt for reporting
169
170-	libxtermcap: The new version does no longer free the allocated buffer
171	and copies the failing filename into this buffer in case that an
172	open() call fails. This allows to find the filename of the failing
173	termcap database in case that the last entry from the TERMPATH
174	could not be opened.
175
176-	ved/ctags: The makefile to install vctags.1 was called Makefile.man
177	but needs to be named Mctags.man because this is the name used in
178	the main Makefile.
179
180	Thanks to Jan Engelhardt for reporting
181
182-	ved/vctags: the vctags binary and man page have been added to the
183	SVr4 packet meta data for the OpenCSW package "CSWved".
184
185-	ved/p/termcap/Bourne Shell: The documentation for the TERMPATH
186	environment variable has been wrong and was fixed regarding the fact
187	that $HOME is only prepended to the path if TERMPATH is empty and
188	the implcit (compiled in) search path is used.
189
190-	ved/bsh/Bourne Shell: A new set of dotfiles.tar.bz2 is available.
191	The $HOME/.termcap file now includes a minimalistic "ansi" entry
192	taken from the Solaris /etc/termcap file. It is identical to the
193	compiled-in ansi termcap entry from the new ved, see below.
194
195-	ved: A new colon command (ESC : vhelp) has been added. The reason
196	for this command is to make it easy to edit the online help file
197	even in case the keyboard in use is a PC based keyboard where the
198	Delete key creates backspace as its output. On such a keyboard, it
199	would otherwise be hard to enter ^X^H, since ^H would be mapped
200	to DEL before it is seen by inpout reader of ved.
201
202-	ved: The documentation in "vedsheet.tr" and "ved.help" now mentions
203	the new colon command that is called via ESC : vhelp
204
205-	ved: The error message for the case that a matching TERM entry could
206	not be found now contains the errno related string if applicable.
207
208-	ved: The editor binary now contains a compiled-in termcap entry
209	for a minimalistic ansi compatible terminal to avoid problems
210	in case that there is no installed termcap data base on the
211	current system.
212
213	Thanks to a hint from Sven Guckes
214
215-	ved: If the tgetent() call to retrieve a termcap entry for the
216	current terminal fails, ved now implicitely used the compiled-in
217	minimalistic ansi terminal description. In order to help users,
218	ved also writes some help to stderr, explaining that the problem
219	could be avoided if a suitable termcap data-base was installed.
220
221	In such a case, ved then waits for a second and continues.
222
223-	ved: The man page now explains that ved is using te real termcap
224	database instead of a database emulated via terminfo.
225
226-	ved: The man page now explains that it is possible to create a
227	private termcap entry for an unknown (to termcap) terminal by
228	calling:
229
230		infocmp -C >> $HOME/.termcap
231
232	Thanks to a hint from Sven Guckes
233
234-	ved: If ved is called without file type argument and there is
235	no .vedtmp file, ved now edits a scratchfilename in a way that
236	forbids to write the "original filename" back using the QUIT
237	command. Previous versions of ved did write an error message,
238	explaining that a file type argument is missing.
239
240	Thanks to a hint from Sven Guckes
241	Thanks to a discussion with Heiko Ei�feldt
242
243-	SunPro Make: The new speudo target .NOTPARALLEL is now ignored, when
244	make is in (Sun 2006) SunPro compat mode or when it emulates SYSv make.
245
246-	SunPro Make: The man page replaced some headlines that incorrectly
247	have been printed out in italics. The new corrected headlines are
248	printed in bold.
249
250-	SunPro Make: The man page incorrectly listed suffix rules since it
251	did not include a needed newline before the rule command.
252
253-	SunPro Make: The make macro assignment operators ?= and ::= that
254	will be introduced with the next POSIX standard have been
255	implemented. Note that the current proposed text in POSIX for +=
256	(which is supported by SunPro Make since January 1986 - 3 years
257	before gmake was written) is inacceptable as it tries to standardize
258	a design bug from gmake. There is related a pending bugreport to fix
259	the POSIX text.
260
261-	SunPro Make: Execept when on HP-UX or Linux, a structure definition
262	for the enum used to remember the build state value was a bitmap
263	that did only hold 3 bits. The enum was defined to hold
264	8 different values, so there was no reserve for future expansions.
265	We now use 8 bits instead of 3 bits.
266
267-	SunPro Make: The man page now mentions that if no target argument
268	is used on the command line, make selectes the first **regular**
269	target seen in the makefile to become the default target.
270
271-	SunPro Make: The man page fixed a textual incorrectness in the
272	description for the "macro:shell= command" assignment description.
273	The previous claim was that make macros in the output are expanded,
274	but make rather expands make macros in the command line **before**
275	calling the command.
276
277-	SunPro Make: The man page now documents the presiously undocumented
278	$(VAR:shell) macro reference which does the same as the $(VAR:sh)
279	macro reference.
280
281-	SunPro Make: The man page corrected the syntax description for the
282	"Makefile Target Entries" section. : or :: are now correctly mentioned
283	as mandatory and more than one possible target entry is listed before
284	the : / :: to make the explaining text easier to understand.
285
286-	SunPro Make: The #ifdefs for the -x option have been corrected to
287	enable the -x option in our parallel mode that is a subset of the
288	previous "TEAMWARE" distributed mode used by Sun that we cannot
289	support because too few source code has been given away by Sun.
290
291-	SunPro Make: The enhancement to the option parser from 2017 that
292	since then permits -j# in addition to -j # introduced a bug that did
293	prevent the -x option from working correctly. The related problem
294	has been fixed.
295
296-	SunPro Make: The man page now documents the -x option that was
297	undocumented by the man page as published by Sun.
298
299
300
301
302-	SCCS: The current idea for converting a historic SCCS project into
303	a project oriented SCCS history bundle is the following:
304
305	-	Create a user map file for "sccslog" by calling:
306
307		mkdir $HOME/.sccs
308		$EDITOR $HOME/.sccs/usermap
309
310		Enter the UNIX login names followed by a TAB, followed
311		by an E-mail notation. Use one line per user, e.g.
312
313			joerg	J. Schilling <joerg@mail.com>
314
315	-	Create a copy of the whole project to work on for this test.
316		Do not do this conversion on the original project until
317		sccs-6.0 is ready.
318
319	-	chdir to the project home directory of the just created copy.
320
321	-	Call "sccs init -i ." to make the project using an in-tree
322		project oriented repository.
323
324	-	Call:
325
326		find * -path '*SCCS/s.*' | /opt/schily/ccs/bin/sccscvt -NSCCS/s. -k -ooo -V6 -
327
328		for the CSRG BSD project use:
329
330		find * -path '*SCCS/s.*' | TZ=US/Pacific /opt/schily/ccs/bin/sccscvt -NSCCS/s. -k -ooo -V6 -
331
332		to convert all history files into SCCSv6 history files. The
333		TZ=US/Pacific is important for the UCB conversion since SCCSv6
334		uses timezones but SCCSv4 does not and we need to have the
335		correct timezone entries in the SCCSv6 history files.
336
337		For the complete "schilytools" project with 4200 SCCS history
338		files in 55 Mbytes, this takes 12 seconds for the SCCS history
339		from 1984 .. 2020, but note that most of the edits from the
340		1980s are lost, so there are few entries from the time
341		before 1989.
342
343		An alternate example: the SCCS history from the BSD-4.4 project
344		from December 1979 up to June 1995 is in 12600 SCCS history
345		files that take up 125 MB.
346		The conversion time to the SCCSv6 history file format is
347		18 seconds.
348
349	-	Call:
350
351		find * -path '*SCCS/s.*' | /opt/schily/ccs/bin/sccslog -changeset -
352
353		to populate the changeset file from the existing deltas.
354
355		For the complete "schilytools" project with 19600 commits,
356		this takes 8 minutes. The resulting file .sccs/SCCS/s.changeset
357		has a size of approx. 7 MBytes.
358
359		An alternate example: the SCCS history from the BSD-4.4 project
360		from December 1979 up to June 1995 has approx. 47000 commits.
361		The conversion time is approx. 40 minutes.
362		The size of the resulting changeset file is approx. 14 MBytes.
363
364	-	convert the in-tree repository into an off-tree repository.
365		This final step is not yet needed and there is currently no
366		code to do that automatically.
367
368	-	If you like to check the resulting changeset file, there is
369		currently only one way to look at it, by calling:
370
371		sccs -O get -p -A -m .sccs/SCCS/s.changeset | more
372
373		This prints an annotated version of the changeset file.
374		The next task is to develop an enhancement to "sccs log"
375		that prints the changeset in a way similar to what "hg log -v"
376		prints.
377
378	-	NOTE: Normal filesystems on Linux are slow, it is advised to
379		make the conversions on tmpfs for performance reasons in case
380		you are using Linux.
381
382	Please however keep in mind that this is still experimental and there is
383	absolutely no grant that a changelog created with current experimental
384	software will work correctly with the final SCCS version. The procedure
385	is just an example to check how it may look like.
386
387	The final conversion method will be more automated... most likely
388	by a command similar to "sccs import ..."
389
390	IMPORTANT: This is not yet the time to finally convert a project into
391	the project mode, because the project would be stuck in the current
392	state. What we need to continue work in that repository state in the
393	project mode is at least a working "sccs commit". Be prepared to remove
394	the changeset history file once "sccs commit" works and to re-create
395	the changeset file for that time.
396
397
398
399-	SCCS TODO:
400
401	-	Activate "fsdiff" as a "bdiff" replacement in delta(1)
402		to speed up delta(1) and to reduce the size of the SCCS
403		history files.
404
405	-	Implement something that outputs similar information from
406		the changeset file as printed with "hg log -v".
407
408		This would be the next key feature.
409
410	-	verify whether sccs.c uses -NSCCS in the back end programs
411		correctly, instead of converting g-file names from the command
412		line into s.file names in the frontend in order to forward
413		s.file names to the backend programs. This is needed for an
414		off-tree repository.
415
416		The related unit tests are already passed.
417
418	-	Add code to to sccs(1) to send a list of files to admin(1) and
419		delta(1) with new or modified files in order to have all
420		important code for a "sccs commit" in a single program that
421		does not need to deal with ARG_MAX limitations.
422
423	-	Add code to admin(1), delta(1), sccs-log(1) and get(1) to
424		maintain/understand the changeset file.
425
426		This is mainly writing out the sccschangeset(4) entries to an
427		intermediate store if a single file has been treated
428		successfully. For sccs-log(1), see below.
429
430	-	Finish the work to allow normal line based diffs in SCCS even
431		for binary files. This are files that include nul bytes and
432		this needs to completely avoid fputs() and this needs an
433		initialized member p_line_length in struct packet even for
434		all content that does not result from a previous getline() call.
435
436	-	sccs -R tell (and probably other subcommands?) does not yet
437		work in NewMode
438
439	-	Add code to libcomobj to understand the changeset file.
440		This is needed in order to e.g. know the file names and file
441		specific SIDs/state that corresponds to a project global SID.
442
443	-	Find/verify a complete transactional model that allows to repair
444		complex changes to the set of files for a project that have
445		been aborted in the middle. The current idea is to create the
446		file $PROJECTHOME/.sccs/changeset with the deltas to the
447		changeset during a complex update operation.
448
449	-	Find a decision on how to deal with the admin flags that are
450		currently implemented as global flags and thus do not depend on
451		the SID (version) if the history file.
452
453	-	Aborting a transaction via ^C currently requires a manual
454		removal of the global lock file. Find a way to avoid this in
455		case that a commit has been aborted while being prompted for
456		a commit message (which is before any real action happened).
457
458	-	Implement a fully automated method to convert a SCCSv4 based
459		history with unrelated history files into a new SCCSv6 based
460		project mode history with a populated changeset history file.
461
462		This will most likely be done as a variant of the to be defined
463		new command "sccs sccsimport" that imports a whole existing old
464		SCCS project.
465
466	-	Implement this "sccs sccsimport" based conversion in a way where
467		sccs(1) holds the global changeset lock for the whole time
468		of the conversion.
469
470
471
472
473-	Bourne Shell Missing features for POSIX compliance:
474
475	- Support for $'...' quoting (this is not needed for the current
476					version of POSIX but for the next POSIX
477					version that will be named SUSv8).
478					The development of SUSv8 will start in
479					late 2016.
480
481	We are now expecting the Bourne Shell to be fully POSIX compliant.
482
483-	Bourne Shell further TODO list:
484
485	-	Finish loadable builtin support.
486
487	-	POSIX does not allow us to implement ". -h", so we will
488		add a "source" builtin to be able to implement "source -h"
489
490-	The following builtins (that are available in bsh) are still missing in
491	the Bourne Shell:
492
493	err			echo with output going to stderr
494	glob			echo with '\0' instead of ' ' between args
495	env			a builtin version of /usr/bin/env
496
497	The following bsh intrinsics are still missing in the Bourne Shell:
498
499	-			the restricted bsh has restriction features that
500				are missing in the Bourne shell.
501
502	-	source -h	read file into history but do not execute
503
504	and probably more features not yet identified to be bsh unique.
505
506
507
508Author:
509
510Joerg Schilling
511D-13353 Berlin
512Germany
513
514Email: 	joerg@schily.net
515
516Please mail bugs and suggestions to me.
517