Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

New 'config' pulls in undesired subsystems



I've finally gotten around to building -current again.  The changes to
'config' cause a number of my custom kernels to not build because a
subsystem I thought I'd eliminated is (incompletely) pulled in anyway.

In particular, I have a number of sparc systems in which I intend never
to have a framebuffer/keyboard/mouse, so the whole "wscons" system is
unneeded and undesirable.

I've taken to using a "differential" approach to kernel configurations
including "GENERIC" (or other appropriate stock configuration) and
disabling unneeded items with the "no foo at bar", "no options FOOOPTION"
convention.

So I have all the framebuffers, keyboard, mouse, (and associated zs,
zstty) drivers excluded along with their wskbd, wsdisplay, wsmux, wsfont
(pseudo-)devices as well as all WSXXX-related options.  I've been using
this mechanism (and these same config files, with minor tweaks) since
about mid-way between the release of netbsd-5 and netbsd-6.

Something is causing 'config' to think the "wscons" subsystem is needed
and it pulls in a part of it (wsdisplay) which fails to link--presumedly
since all the framebuffers are disabled.

I noticed during one attempt that it was explicitly pulling in the dumb
terminal emulation.  The rather ironic inclusion of "options
WSEMUL_NO_DUMB" to keep "wsdisplay" from being included was not effective.

The typical failure is:

[...]
--- netbsd ---
#      link  AURORA/netbsd
/d0/build/current/tools/i386/bin/sparc--netbsdelf-ld -Map netbsd.map --cref -n -T /x/current/src/sys/arch/sparc/conf/kern.ldscript -Ttext F0004000 -e start -X -S -o netbsd ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o
wsdisplay.o: In function `wsdisplaywrite':
wsdisplay.c:(.text+0x488): undefined reference to `wsdisplay_cd'
wsdisplay.c:(.text+0x490): undefined reference to `wsdisplay_cd'
wsdisplay.o: In function `wsdisplaymmap':
wsdisplay.c:(.text+0x510): undefined reference to `wsdisplay_cd'
wsdisplay.c:(.text+0x518): undefined reference to `wsdisplay_cd'
wsdisplay.o: In function `wsdisplayopen':
wsdisplay.c:(.text+0x5a4): undefined reference to `wsdisplay_cd'
wsdisplay.o:wsdisplay.c:(.text+0x5ac): more undefined references to `wsdisplay_cd' follow
*** [netbsd] Error code 1

nbmake: stopped in /d0/build/current/obj/sparc/sys/arch/sparc/compile/AURORA
1 error

nbmake: stopped in /d0/build/current/obj/sparc/sys/arch/sparc/compile/AURORA

ERROR: Failed to make all in "/d0/build/current/obj/sparc/sys/arch/sparc/compile/AURORA"
*** BUILD ABORTED ***

In the build directory for the kernel are the following files starting
with "ws":

$ ls -laF ws*   
-rw-rw-r--  1 sysop  wsrc   5704 Oct 16 11:14 wsdisplay.d
-rw-rw-r--  1 sysop  wsrc    276 Oct 16 11:14 wsdisplay.h
-rw-rw-r--  1 sysop  wsrc  25852 Oct 16 11:34 wsdisplay.o
-rw-rw-r--  1 sysop  wsrc   3593 Oct 16 11:14 wsdisplay_util.d
-rw-rw-r--  1 sysop  wsrc   2728 Oct 16 11:34 wsdisplay_util.o
-rw-rw-r--  1 sysop  wsrc   3449 Oct 16 11:14 wsemulconf.d
-rw-rw-r--  1 sysop  wsrc   3376 Oct 16 11:34 wsemulconf.o
-rw-rw-r--  1 sysop  wsrc   5015 Sep  3 20:10 wsevent.d
-rw-rw-r--  1 sysop  wsrc   6508 Oct 16 11:34 wsevent.o
-rw-rw-r--  1 sysop  wsrc   3444 Sep  3 20:10 wsfont.d
-rw-rw-r--  1 sysop  wsrc    255 Oct 16 11:14 wsfont.h
-rw-rw-r--  1 sysop  wsrc  15204 Oct 16 11:34 wsfont.o
-rw-rw-r--  1 sysop  wsrc   1443 Oct 16 11:14 wsfont_glue.h
-rw-rw-r--  1 sysop  wsrc   3767 Sep  3 20:10 wsfontdev.d
-rw-rw-r--  1 sysop  wsrc   3196 Sep 21 10:25 wsfontdev.o
-rw-rw-r--  1 sysop  wsrc    248 Sep  3 20:08 wskbd.h
-rw-rw-r--  1 sysop  wsrc    262 Sep  3 20:08 wsmouse.h
-rw-rw-r--  1 sysop  wsrc   4824 Sep  3 20:10 wsmux.d
-rw-rw-r--  1 sysop  wsrc    248 Oct 16 11:14 wsmux.h
-rw-rw-r--  1 sysop  wsrc   8428 Sep 21 10:25 wsmux.o

Looking at al the "#define NWSfoo" shows:

$ grep "define..*NWS" ws*.h      
wsdisplay.h:#define     NWSDISPLAY      1
wsfont.h:#define        NWSFONT 0
wsfont_glue.h:#define   NWSFONT_GLUE    0
wsfont_glue.h:#define   NWSDISPLAY      1
wsfont_glue.h:#define   NWSFONT 0
wskbd.h:#define NWSKBD  0
wsmouse.h:#define       NWSMOUSE        0
wsmux.h:#define NWSMUX  0

Something is causing "NWSDISPLAY" to be set to 1, causing it to be
included.


Meanwhile, building for netbsd-7 with the same configuration file
works and results in fewer files:

$ ls -laF ws*                    
-rw-rw-r--  1 sysop  wsrc    276 Aug 16 18:23 wsdisplay.h
-rw-rw-r--  1 sysop  wsrc   4990 Aug 16 18:25 wsevent.d
-rw-rw-r--  1 sysop  wsrc   6364 Aug 16 18:34 wsevent.o
-rw-rw-r--  1 sysop  wsrc   3379 Aug 16 18:25 wsfont.d
-rw-rw-r--  1 sysop  wsrc    255 Oct 14 21:17 wsfont.h
-rw-rw-r--  1 sysop  wsrc  15096 Aug 16 18:34 wsfont.o
-rw-rw-r--  1 sysop  wsrc   1443 Oct 14 21:17 wsfont_glue.h
-rw-rw-r--  1 sysop  wsrc   3707 Aug 16 18:25 wsfontdev.d
-rw-rw-r--  1 sysop  wsrc   3144 Aug 16 18:34 wsfontdev.o
-rw-rw-r--  1 sysop  wsrc    248 Aug 16 18:23 wskbd.h
-rw-rw-r--  1 sysop  wsrc    262 Aug 16 18:23 wsmouse.h
-rw-rw-r--  1 sysop  wsrc   4789 Aug 16 18:25 wsmux.d
-rw-rw-r--  1 sysop  wsrc    248 Oct 14 21:17 wsmux.h
-rw-rw-r--  1 sysop  wsrc   8336 Aug 16 18:34 wsmux.o

Looking at all the "#define NWSfoo" shows:

$ grep "define..*NWS" ws*.h 
wsdisplay.h:#define     NWSDISPLAY      0
wsfont.h:#define        NWSFONT 0
wsfont_glue.h:#define   NWSFONT_GLUE    0
wsfont_glue.h:#define   NWSDISPLAY      0
wsfont_glue.h:#define   NWSFONT 0
wskbd.h:#define NWSKBD  0
wsmouse.h:#define       NWSMOUSE        0
wsmux.h:#define NWSMUX  0

i.e., all 0, particularly NWSDISPLAY, so it's all disabled.


Any clues as to what can be done to ensure wscons/wsdisplay is fully
disabled in -current?

Thanks.

-- 
|/"\ John D. Baker, KN5UKS               NetBSD     Darwin/MacOS X
|\ / jdbaker[snail]mylinuxisp[flyspeck]com    OpenBSD            FreeBSD
| X  No HTML/proprietary data in email.   BSD just sits there and works!
|/ \ GPGkeyID:  D703 4A7E 479F 63F8 D3F4  BD99 9572 8F23 E4AD 1645



Home | Main Index | Thread Index | Old Index