Hi! ----
Here comes round "three" of the pre-review: I created a couple of webrevs in various flavours based on the 2007-06-06 ksh93-integration prototype005 sources. ** Webrevs: * Webrev over all files: http://www.nrubsig.org/people/gisburn/work/solaris/ksh93_integration/ksh93_integration_prototype005_webrev_20070606/allfiles/webrev/ * Webrev only over files which match the substring "makefile": http://www.nrubsig.org/people/gisburn/work/solaris/ksh93_integration/ksh93_integration_prototype005_webrev_20070606/makefile_files/webrev/ * Webrev over all non-AST files (this includes the files in usr/src/cmd/ast/msgcc/ by accident): http://www.nrubsig.org/people/gisburn/work/solaris/ksh93_integration/ksh93_integration_prototype005_webrev_20070606/non_ast_files/webrev/ * Webrev over all AST sources (e.g. all files not listed in the previous "webrev"): http://www.nrubsig.org/people/gisburn/work/solaris/ksh93_integration/ksh93_integration_prototype005_webrev_20070606/non_files/webrev/ * All-in-one unified diff: http://www.nrubsig.org/people/gisburn/work/solaris/ksh93_integration/ksh93_integration_prototype005_webrev_20070606/unified_diff.txt * All webrev files (including unified diff etc.) as downloadable bz2-compressed tar archive: http://www.nrubsig.org/people/gisburn/work/solaris/ksh93_integration/ksh93_integration_prototype005_webrev_20070606_001.tar.bz2 ** Notes: * This review is still labelled "pre-review" (previous rounds were "pre-pre-review") because the webrev was created from our Subversion repository and not the final SCCS-based tree. "Final review" webrev may follow once we're through fixing all outstanding issues which may be found in this webrev... * All issues discussed in the previous review rounds have AFAIK been addressed, related commits are described in 1. http://bugs.grommit.com/show_bug.cgi?id=253 (meem's review comments) 2. http://bugs.grommit.com/show_bug.cgi?id=254 (thirdparty license stuff) 3. http://bugs.grommit.com/show_bug.cgi?id=255 (demo code (which updates the existing demos and adds a new one ("termclock" - analog clock for terminals (see http://www.nrubsig.org/people/gisburn/work/solaris/ksh93_integration/ksh93_integration_prototype005_webrev_20070606/allfiles/webrev/usr/src/lib/libshell/common/fun/termclock.html)))) * Files marked in usr/src/lib/libshell/misc/filelist.txt for removal from the prototype tree have been obmitted from this webrev (e.g. they are part of the prototype tree but will not be putback into OS/Net and are therefore not listed in this wevrev) * The tree is now based on OS/Net B61+ast-ksh.2007-04-18 (= ksh93s+_beta) and was compiled and tested on Solaris 11/Nevada B61. This is AFAIK the final source code layout. * All AST sources are in usr/src/lib/lib(ast|pp|dll|cmd|shell)/common/ and usr/src/cmd/ast/ (usr/src/cmd/ksh/ just contains Makefile glue which references sources in usr/src/lib/libshell/ (see below)). All files are 100% identical with the upstream (AT&T) versions with additions of sources specifically developed for the ksh93-integration project. Primary directories are: - usr/src/cmd/ksh/ contains the ksh frontend binary (which is just a small (~~5k-8k) wrapper and directly calls into libshell.so.1. Note that /usr/bin/(ksh93|rksh93) is a hardlink to /usr/lib/isaexec which selects the matching 32bit or 64bit version of ksh93 stored in usr/bin/$ISA/(ksh93|rksh93)) - usr/src/ast/ contains code which is delivered to /usr/ast/bin/, currently only "msgcc" (used to generate the AST/ksh93 l10n catalogs) is here - usr/src/lib/libshell/ contains the main ksh93 code - usr/src/lib/libcmd/ contains builtin command (such as "cat", "tail", "tee", "wc" etc.). This binary is compatible to both the old Solaris libcmd.so.1 and the AT&T AST/ksh version of libcmd.so.1 - usr/src/lib/libdll/ contains the code for the dynamic library loader, used to load binary plugins in a platform-independent way - usr/src/lib/libast/ contains a utilty+platform abstraction library, including general purpose function for tree/list/stack/etc. handling, sfio (advanched I/O library), enhanched pattern matching, memory allocators etc. - usr/lib/libpp/ contains a C preprocessor provided as shared library. This is currently only used by "msgcc" * The files in usr/src/lib/lib(ast|pp|dll|cmd|shell)/(${MACH32}|${MACH64})/ except the "Makefile" files are 100% copies from a native AST package build and contain platform-specific configuration information. The source layout is little bit unusal for OS/Net and follows the upstream layout (it cannot be done differently without major surgery in the upstream sources and/or creating a maintaince hazard for future maintainers, for example files with the same name in different subdirs have different functionlity and messing this up will result in painfull debugging sessions with the final conclusion: "Wrong file in wrong place"). * The includes delivered to /usr/include/ast/ are a merge of 32bit and 64bit includes from usr/src/lib/lib(ast|pp|dll|cmd|shell)/(${MACH32}|${MACH64})/include/ast/ created using "/usr/bin/diff -D". This allows the usage of one unified set of includes for 32bit and 64bit binaries instead of shipping two different copies. * usr/src/lib/libast/Makefile.com has the "unusual" (for OS/Net) habit of putting *.o files into subdirs, following the source directory layout in "usr/src/libast/common/". This is just to avoid that the objs/pics subdirs are cramped with *.o files in one single directory (which would drive the maintainers into madness (slowly)). * usr/src/lib/lib(ast|pp|dll|cmd|shell)/Makefile.com list "-erroff=" flags per object file, not globally, resulting in lists which look "huge" because we list each appeance of a suppressed warning explicitly including a comment (and "yes", we're working on reducing the list, step by step). * "mapfile-vers" files are usually placed in usr/src/lib/lib(ast|pp|dll|cmd|shell)/mapfile-vers instead of the common/ subdir since the common/ should be explictly for the upstream sources (with minor exceptions) to make maintaince easier. BTW: There is a small glitch with "usr/src/lib/libcmd/common/mapfile-vers vs. usr/src/lib/libcmd/mapfile-vers" - the file should be moved and not deleted and re-created in it's new location. * usr/src/cmd/ksh/Makefile.ksh93switch contains a master switch to instruct the build whether ksh93 should be build as /usr/bin/ksh or /usr/bin/ksh93 (default). This also affects "usr/src/lib/libc/port/regex/wordexp.c" since the current version depends on a hack in the Sun/Solaris version of /usr/bin/ksh which does not exist in any other version of the korn shell (including ksh93). Toggling the switch in Makefile.ksh93switch will build an alternative version of |libc::wordexp()| which is compatible to ksh93 (the switch and the alternative version of |libc::wordexp()| has been added based on community requests to have such a flag - without such a flag ksh93 cannot be used as /usr/bin/ksh since |libc::wordexp()| will not work without the Sun/Solaris hack in the old /usr/bin/ksh - and that causes SMF to fail (which in turn renderes all the inetd services defunct and/or crashes the SMF service completely, rendering the system more or less unuseable)). * All new Makefiles use SHELL=/usr/bin/ksh (just to avoid that we need more horrible quoting stunts to make the Bourne shell happy&&cooperative (which includes the much-feared "sh: argument list too long"-thing)). This usage was approved by gatekeepers ([EMAIL PROTECTED]) in <[EMAIL PROTECTED]> * usr/src/cmd/ksh/Makefile.com compiles ksh93 with "-xpagesize_stack=64K" and "-xpagesize_heap=64K" based on benchmarking+profiling with larger datasets * The test suite run in usr/src/cmd/ksh/ is now "off" by default. * http://bugs.grommit.com/show_bug.cgi?id=118 disabled the generation of the AST/ksh93 message catalogs in the default build since the generation depends on ksh93+libpp itself (and the OS/Net rules do not allow using tools which were built within the tree (which would break if libc.so.1 changes)), usr/src/lib/Makefile.astmsg now contains a build switch ("ON_BUILD_AST_L10N_CATALOGS") which can be used to enable the generation of the l10n catalogs on demand (via setting $ ON_BUILD_AST_L10N_CATALOGS=1 # before building the tree, note that this will use tools from ${ROOT}+LD_LIBRARY_PATH for now). Once all build machines have been updated to a release which contains ksh93, "msgcc" and libpp the AST message catalog generation will be turned-on again (and the Makefile switch will be removed). Comments/suggestions/etc. welcome... ---- Bye, Roland -- __ . . __ (o.\ \/ /.o) [EMAIL PROTECTED] \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer /O /==\ O\ TEL +49 641 7950090 (;O/ \/ \O;) _______________________________________________ opensolaris-code mailing list [email protected] http://mail.opensolaris.org/mailman/listinfo/opensolaris-code
