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