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

Reply via email to