On Thu, Aug 10, 2006 at 01:08:10PM -0700, Garrett D'Amore wrote:
> >
> > Agreed.  If you're interested in working on this, I can put together my 
> > notes
> > from the last time I worked on this (a few months back;  my first big push
> > was a year or so ago).
> >   
> 
> Sure.  I want to at least fix the kernel compilation as a first step.  I
> have verified that it does not look in the proto area built by the sgs
> target at all. 

I'm not sure how to parse this;  I'm fairly sure that instead of adding
includes for $ROOT/usr/include, it directly adds -I$SRC/uts/common, etc.,
so that the #include <sys/foo.h> finds it in $SRC/uts/common.

See the comment on line 214 of usr/src/uts/Makefile.uts.

> So /usr/include has potentially a big impact on the
> compiled kernel and associated modules.

/usr/include is possibly a problem, but at least /usr/lib isn't.  It's actually
fairly easy to verify that the kernel build doesn't use outside dependencies;
the C preprocessor will shove any header file included into the .make.state
files, and it's fairly simple to write a groveler that looks for bad
references.  I'm fairly sure it should be clean already.

I've attached the current version of my groveler, and its input file.

Cheers,
- jonathan

-- 
Jonathan Adams, Solaris Kernel Development
#
# Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
#ident  "%Z%%M% %I%     %E% SMI"

#
# This file lists exceptions to the "no compilation should use on-machine
# header files and libraries" rules.  It is divided into three sections:
#
# 1.    "ignore"d items.  These list object files and commands that are
#       compiled "native" (i.e. against the build machine's headers and
#       libraries) so that they can be run as part of the build.  There
#       are two commands available for this section:
#
#               ignore_re       specify a regular expression.  Matching
#                               files will be ignored.
#
#               ignore_dir      specify a subdirectory.  Files underneath
#                               it will be ignored.
#
# 2.    "disallow"ed directories.  These are directories which hold the
#       build machine's versions of objects generated during the build
#       process.  There is one command available for this section:
#
#               disallow_dir    specify a full path to a disallowed
#                               directory.
#
# 3.    "allow"ed items.  These list exceptions to the "disallow" list.
#       These should be files not generated by the build process, which
#       are used as external dependencies. There are three commands
#       available for thie section:
#
#               allow_lib       specify a library which is allowed to
#                               be linked against.  Should be the "-l"
#                               form of the name;  e.g. "c" for "libc.so.1".
#
#               allow_file      specify a single file which is allowed to
#                               be used.  Must be the full path to the file.
#
#               allow_dir       specify a directory whose entire contents
#                               may be used.
#
#
# In addition, any line may be start with one of the following keywords,
# which effect the line's use:
#
#               for_sparc       only process the line for Sparc builds
#               for_i386        only process the line for Intel builds
#               optional        line may not be used in some builds
#
# The "optional" keyword should only be used when absolutely necessary.
#

#
# Ignore section: native-built commands run as part of the build
# process.  There are two "generic" rules; *[-.]native and *[-.]native.o
# are treated as native.  Everything else should be called out as
# explicitely as is reasonable.
#
ignore_re       [-\.]native$
ignore_re       [-\.]native\.o$

ignore_re       ^usr\/src\/.*\/genassym$
ignore_re       ^usr\/src\/cmd\/abi\/spectrans\/spec2map\/.*\/spec2map$
ignore_re       ^usr\/src\/cmd\/abi\/spectrans\/spec2trace\/.*\/spec2trace$
ignore_re       ^usr\/src\/cmd\/adbgen\/.*\/adbgen[134]$
ignore_file     usr/src/cmd/awk/maketab
ignore_file     usr/src/cmd/lp/filter/postscript/font/native/makedev
ignore_dir      usr/src/cmd/mdb/tools
ignore_dir      usr/src/cmd/oawk/native
ignore_file     usr/src/cmd/spell/hashmk1
ignore_file     usr/src/cmd/spell/spellin1
ignore_file     usr/src/cmd/troff/troff.d/devaps/makedev
ignore_dir      usr/src/cmd/zic/native
ignore_dir      usr/src/lib/libscf/native
ignore_dir      usr/src/lib/libuutil/native
ignore_dir      usr/src/tools

for_i386        ignore_re       ^usr\/src\/psm\/stand\/.*\/mkbin$

for_sparc       ignore_file     usr/src/lib/libbc/libc/compat/sys5/mkepoch
for_sparc       ignore_re       ^usr\/src\/uts\/.*\/genconst$
for_sparc       ignore_re       ^usr\/src\/psm\/stand\/.*\/stripalign$
for_sparc       ignore_re       ^usr\/src\/psm\/stand\/.*\/mkboot$

#
# Disallow section: list of directories which contain libraries and
# include files generated by OS/Net.
#
disallow_dir    /lib
disallow_dir    /usr/lib
disallow_dir    /usr/ccs/lib
disallow_dir    /usr/sadm/lib
disallow_dir    /usr/snadm/lib
disallow_dir    /usr/xpg4/lib
disallow_dir    /usr/sfw/lib
disallow_dir    /usr/include

#
# Allow section:  Files in the "disallow" directories which are *not*
# generated by OS/Net, but which are used during the OS/Net build.
#

# C++ support;  may not be used, depending upon which compiler we use
optional        allow_lib       C
optional        allow_lib       Cstd
optional        allow_lib       Crun
allow_file                      /usr/include/demangle.h

# libm
allow_lib       m
allow_file      /usr/include/floatingpoint.h
allow_file      /usr/include/iso/math_c99.h
allow_file      /usr/include/iso/math_iso.h
allow_file      /usr/include/math.h

# Fiberchannel HBA API
for_sparc       allow_lib       HBAAPI
for_sparc       allow_file      /usr/include/hbaapi.h

# Admin consolidation stuff
allow_lib       spmicommon

# WBEM stuff
allow_lib       cimapi
allow_dir       /usr/sadm/lib/wbem/include

# Netscape Security Services / Netscape Portable Runtime
allow_dir       /usr/lib/mps
allow_dir       /usr/include/mps

# libxml2
allow_lib       xml2
allow_dir       /usr/include/libxml2

# libxslt
allow_lib       xslt
allow_dir       /usr/include/libxslt

# libz
allow_lib       z
allow_file      /usr/include/zconf.h
allow_file      /usr/include/zlib.h

Attachment: checkmk.state.pl
Description: Perl program

_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to