1New features with AN-2019-10-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 61- All: Next step with Ultrix porting. 62 63 We are nearly done with the achievable tasts. 64 65 Compilation of all C code works without manual quirks and the resulting 66 programs are usable. This however currenlty only works using GCC since 67 the Ultrix C compiler dumps core with some of our source files. 68 69 The Ultrix compiler on the supplied test machine does not support C++, 70 so it is questionable, whether it would make sense to try to make the 71 C-code compile on Ultrix. 72 73 If you have problems with the scripts to automatically detect that 74 we should use GCC as the default compiler (as configured in the file 75 DEFAULTS/Defaults.ultrix), remove the file: 76 77 incs/Dcc.risc-ultrix 78 79 and then run: 80 81 smake CCOM=gcc 82 83 But GCC on Ultrix is buggy as well and comes with broken include 84 fixes. There are partially correct ones, one set works with C and 85 the other set works with C++. This requires a hand crafted 86 copilation for the SunPro Make that is written in C++. 87 88 You may compile a non parallel (serial only) version of 89 SunPro Make by calling: 90 91 cd sunpro 92 smake -i CPPOPTX=-I/usr/local/lib/gcc-lib/mips-dec-ultrix4.4/2.7.2/include/cxx/ 93 94 You may need to use a different path for that hack, if your GCC installation 95 uses a different install path or is a different version. 96 97 This results in a POSIX compliant make for Ultrix... 98 99 NOTE that yopu need to use -i because there is currently no method 100 in the Schily Makefile system that allows to disable the creation of 101 shared libraries on platforms that do not support shared libs. 102 103 Also note that you cannot use "dmake" (SunPro Make) on Ultrix yet 104 to compile projects in the Schily Makefilesystem, as there is a bug 105 in Ultrix sed(1) that causes the command: 106 107 sed 'y%ABCDEFGHIJKLMNOPQRSTUVWXYZ, /\\()"%abcdefghijklmnopqrstuvwxyz,------%' 108 109 to fail with the message "gabled command". If you did remove one of the 110 backslashes, it would work... 111 112 Thanks to Martin Neitzel for giving access to an Ultrix machine 113 114- configure: A new test for fgetws() has been added to serve the needs 115 for SunPro Make on Ultrix. fgetws() is missing on Ultrix. 116 117- configure: Added new tests for wcstol() wcstoul() wcstoul() wcstoull() 118 These interfaces are missing on Ultrix and we need to support a 119 replacement in libschily for SunPro Make portability. 120 121- conf/makeinc: converted some eval... into (eval ...) to support 122 the Bourne Shell from SVr2 used on Ultrix. This was needed since 123 we still got some "illegal io" error messages from the pre-SVr2 Bourne 124 Shell on Ultrix. 125 126- RULES/risc-ultrix-gcc.rul: mkdir on Ultrix supports -p 127 128- RULES/risc-ultrix-cc.rul: new file 129 130- RULES/cc-ultrix.rul: new file 131 132- include/schily/wchar.h: Some fallback definitions for 133 mbsinit() mbrtowc() wcrtomb() have been moved to make them always 134 visible and not only in case that <wchar.h> exists. 135 136- include/schily/wchar.h: Before, we checked for HAVE_ISWPRINT to catch 137 the HP-UX-10.20 case where wchar_t is in stdlib.h. Now we check 138 (SIZEOF_WCHAR == 0 || SIZEOF_WCHAR_T == 0) as this works on Ultrix as 139 well. 140 141- include/schily/wait.h: We need to fiddle a bit more with WAIT_T in order 142 to be able to work around the buggy sys/wait.h from Ultrix. 143 144- include/schily/schily.h: removed a superfluous \ that caused 145 warnings with the Ultrix cc. 146 147- include/schily/libport.h: addeed vsnprintf() prototype 148 149- include/schily/libport.h: addeed wcstol() prototype 150 151- libschily: The argument types of the K&R function snprintf() are now 152 identical to the ANSI C variant. 153 154- libschily: A vsnprintf() implementaton has been added since this is 155 needed by SunPro Make and missing on Ultrix. 156 157- libschily: A new source wcastoi.c has been added. This is to 158 support wcstol() that is missing in Ultrix and needed by SunPro Make 159 160- libgetopt: The getopt() function now supports options in the form: 161 162 +o, ++long-option or +long-option 163 164 if the optstring starts with a '+'. A new exported variable 165 "optflags" has the bit "OPT_PLUS" set, in case that an actual option 166 starts with '+'. 167 168 If more than one of the flag characters ':', '+' or "()" are used, 169 "()" must be last. 170 171- libfind: The recent changes to support "find dir/name -name name" 172 did not work with -depth because the name base index needs a reset 173 after processing the directory content. 174 175 Thanks to Tavian Barnes for reporting. 176 177- libstreamar: Added new keywords "fsdevmajor" and "fsdevminor" as 178 there are too many incompatible st_dev binary formats. 179 180 These keywords are not yet created, but they are understood. 181 This permits to switch to the new format (fade out "dev") later. 182 183- star: Added new keywords "SCHILY.fsdevmajor" and "SCHILY.fsdevminor" 184 as there are too many incompatible st_dev binary formats. 185 186 These keywords are not yet created, but they are understood. 187 This permits to switch to the new format (fade out "SCHILY.dev") later. 188 189- star: The amount of shared mamory used by default has been reduced to 190 1 MB on Ultrix. These are old small machines, that do not support 191 8 MB. 192 193- cdrecord: The amount of shared mamory used by default has been reduced 194 to 1 MB on Ultrix. These are old small machines, that do not support 195 4 MB. 196 197- Bourne Shell: The testsuite no longer tries to check ISO-8859-1 strings 198 as we cannot set this up reliably on all platforms and as Mac OS does 199 not allow to create the related filenames. 200 201- Bourne Shell: The getopts(1) builtin command now supports options in 202 the form: 203 204 +o, ++long-option or +long-option 205 206 if the optstring starts with a '+'. The shell variable "$NAME" has 207 a leading '+' in case that an actual option starts with '+'. 208 209 Note that this makes getopts(1) in the Bourne Shell compatible at 210 shell script level to the extensions in the getopts(1) implementation 211 in ksh93 for: 212 213 -o/+o Short options with either a leading - or + 214 215 --long GNU style long options as aliases to short -o options 216 217 ++long GNU style long options as aliases to short +o options 218 219 Our enhancements to support: 220 221 -long UNIX style long options as aliases to short -o options 222 223 +long UNIX style long options as aliases to short +o options 224 225 - Long options the have no related short option 226 227 Are not supported by ksh93. 228 229- ved: The recognition for argv[0] == "ved-e" did previously use strrchr() 230 and did not work correctly when e.g. trying to call a binary like 231 OBJ/i386-sunos5-cc/ved. We now check only to the right of the first '-' 232 after the last '/' 233 234- ved: the code that writes the .vedtmp file did not work on Ultrix. 235 Existing slots have not been overwritten (refreshed) but rather a copy 236 has been appended to the end of the file. This happened when switching 237 from read mode into write mode for the open file ".vedtmp.*". 238 239 We now first retrieve the old file offset before calling fflush(). 240 241- SunPro Make: If we are on old platforms like Ultrix, we need the 242 wcs*() functions from libschily, as these functions are missing 243 from libc. To use them with C++ we need the prototypes from 244 include/schily/libport.h. 245 246 The file sunpro/Make/include/mksh/defs.h now includes <schily/libport.h> 247 for that purpose, even in case a specific source does not like to 248 include <schily/schily.h> 249 250- SunPro Make: sunpro/Make/include/mksh/defs.h now includes missing libc 251 prototypes (needed for Ultrix) in order to prevent C++ to abort 252 compilation on Ultrix. 253 254- SunPro Make: Various sources now use schily/wait.h and WAIT_T in order 255 to avoid "int"/"union wait" problems e.g. on Ultrix. 256 257- SunPro Make: We need to use if (*(int *)&status == 0) as e.g. Ultrix 258 has union wait. 259 260- SunPro Make: We now support select() as a fallback if poll() is not 261 available. 262 263- SunPro Make: sunpro/Make/include/mksh/defs.h now calls #undef PMAKE 264 if HAVE_SEMAPHORE_H is missing, e.g. on Ultrix. This prevents to 265 support "dmake -j...", but it make SunPro Make usable on Ultrx at 266 all. 267 268- SunPro Make: sunpro/Make/include/mksh/defs.h now calls #undef PMAKE 269 if NO_PMAKE is missing 270 271- SunPro Make: parallel.cc moved an #if defined(PMAKE) past the 272 #include defs.h to be able to disable the paralle make features in 273 case that POSIX semaphore support is missing. 274 275- SunPro Make: changed putwchar() to putchar() since these calls 276 are close to a normal printf() call and since they are only used to 277 print the non-wide characters space and slash, which are not converted 278 multi byte characters anyway. 279 280- SunPro Make: Added a fgetws() emulation to the file 281 sunpro/Make/bin/make/common/rep.cc, based on fgets() and mbtowcs() 282 to serve the needs of Ultrix in that source file. 283 284- SunPro Make: Added a workaround for a missing readlink() prototype 285 on Ultrix to the file sunpro/Make/lib/vroot/src/readlink.cc 286 287- SunPro Make: new version date 288 289 290 291- SCCS TODO: 292 293 - Convert sccs.c to use -NSCCS in the back end programs instead 294 of converting g-file names from the command line into s.file 295 names in the frontend in order to forward s.file names to the 296 backend programs. Doing it this way allows us to have the SCCS 297 history files "off tree" in a separate directory tree starting 298 with ".sccs/" at the "project root" directory, as the related 299 code to convert path names is in libcomobj::bulkprepare(). 300 301 - Add code to admin(1) and delta(1) to retrieve the list of 302 new or modified files in order to have all important code 303 for a "sccs commit" in a single program that does not need to 304 deal with ARG_MAX limitations. 305 306 - Add code to admin(1), delta(1) and get(1) to maintain/understand 307 the changeset file. 308 309 - Add code to libcomobj to understand the changeset file, 310 which is needed in order to e.g. know the file names and file 311 specific SIDs/state that correspond to a project global SID. 312 313 - Add code to all programs to maintain a lock (for the file 314 $PROJECTHOME/.sccs/SCCS/s.changeset, that would be in the file 315 $PROJECTHOME/.sccs/SCCS/z.changeset) to maintain a project 316 global lock. 317 318 - Find/verify a complete transactional model that allows to repair 319 complex changes to the set of files for a project that have 320 been aborted in the middle. The current idea is to create the 321 file $PROJECTHOME/.sccs/changeset with the deltas to the 322 changeset during a complex update operation. 323 324 - Find a way to decide when to use SCCS v6 type history files. 325 For the project mode, this is needed in order to prevent 326 historic SCCS implementations to believe they could modify 327 files without knowing about project global locks. 328 329 330 331 332 333- Bourne Shell Missing features for POSIX compliance: 334 335 - Support for $'...' quoting (this is not needed for the current 336 version of POSIX but for the next POSIX 337 version that will be named SUSv8). 338 The development of SUSv8 will start in 339 late 2016. 340 341 We are now expecting the Bourne Shell to be fully POSIX compliant. 342 343- Bourne Shell further TODO list: 344 345 - Finish loadable builtin support. 346 347 - POSIX does not allow us to implement ". -h", so we will 348 add a "source" builtin to be able to implement "source -h" 349 350- The following builtins (that are available in bsh) are still missing in 351 the Bourne Shell: 352 353 err echo with output going to stderr 354 glob echo with '\0' instead of ' ' between args 355 env a builtin version of /usr/bin/env 356 357 The following bsh intrinsics are still missing in the Bourne Shell: 358 359 - the restricted bsh has restriction features that 360 are missing in the Bourne shell. 361 362 - source -h read file into history but do not execute 363 364 and probably more features not yet identified to be bsh unique. 365 366 367 368Author: 369 370Joerg Schilling 371D-13353 Berlin 372Germany 373 374Email: joerg@schily.net, joerg.schilling@fokus.fraunhofer.de 375 376Please mail bugs and suggestions to me. 377