Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Nov 2000 14:58:12 +0900
From:      Makoto MATSUSHITA <matusita@jp.FreeBSD.org>
To:        current@FreeBSD.org, stable@FreeBSD.org
Subject:   "make modules" kicks the first module directory twice
Message-ID:  <20001113145812F.matusita@jp.FreeBSD.org>
In-Reply-To: <3A085F93.BC245A53@cup.hp.com>
References:  <HLEDJBJKDDPDJBMGCLPPKEFGCIAA.otterr@telocity.com> <3A085F93.BC245A53@cup.hp.com>

next in thread | previous in thread | raw e-mail | index | archive | help

(Strip down To: address, maybe it's only -current problem so I send
this email to current@FreeBSD.ORG also. Set appropriate Subject:. -- MAR)

marcel> Makoto-san mentioned there's a problem with 3dfx. Is this
marcel> still the case or has it been resolved?

Unfortunately, no. It seems that nobody use -j option already :-)

***

Most audiences doesn't understand what's the problem (it's my fault).
I've checked again, and here is "how to reproduce the problem easily":

(Prepare fresh kernel source code tree; this example uses /usr/src/sys.)
% cd /usr/src/sys/conf/GENERIC; config GENERIC
(... stuff deleted ...)
% cd ../../compile/GENERIC
% make -j 2 modules
cd ../../modules && env MAKEOBJDIRPREFIX=/usr/src/sys/compile/GENERIC/modules KMODDIR=/boot/kernel make obj all
===> 3dfx
===> 3dfx
Warning: Object directory not changed from original /usr/src/sys/modules/3dfx
(... ok, break it ...)

'3dfx' directory is kicked twice. Apparantly, the one assumes that
/usr/src/sys/modules/3dfx is an object directory, and yet another one
assumes maybe /usr/src/sys/compile/GENERIC/modules is an object
directory (this is correct). Note that make(1) uses only one directory
for module building (I dunno why), so if the former one is used, the
latter one is simply ignored (again, I dunno why).

It's O.K. if /usr/src/sys/compile/GENERIC/modules is used correctly;
however, what will happen if only /usr/src/sys/modules/3dfx is used as
an object directory? -- that's problem.

So... you cannot supply the make variable, KERNEL_FLAG='-j 2', to your
"make release" since you've hit this problem. Don't blame '3dfx'
module. It's simply the first module directory listed in SUBDIRS
variable; you can see the same problem even if you change the order of
SUBDIRS directories.

I tried to fix, but sorry I cannot find an answer. However, here is an
escape of this problem:

Index: Makefile
===================================================================
RCS file: /lab/FreeBSD/FreeBSD.cvs/src/release/Makefile,v
retrieving revision 1.585
diff -c -r1.585 Makefile
*** Makefile	2000/11/12 11:04:11	1.585
--- Makefile	2000/11/13 05:37:12
***************
*** 831,837 ****
  	@rm -f ${RD}/kernels/*.ko
  	@cd ${.CURDIR}/../sys/${MACHINE}/conf && config ${KERNEL}
  	@cd ${.CURDIR}/../sys/compile/${KERNEL} && \
! 			make kernel-depend && \
  			make ${KERNEL_FLAGS} modules && \
  			make modules-reinstall DESTDIR=${RD}/kernels && \
  
--- 831,837 ----
  	@rm -f ${RD}/kernels/*.ko
  	@cd ${.CURDIR}/../sys/${MACHINE}/conf && config ${KERNEL}
  	@cd ${.CURDIR}/../sys/compile/${KERNEL} && \
! 			make modules-depend && \
  			make ${KERNEL_FLAGS} modules && \
  			make modules-reinstall DESTDIR=${RD}/kernels && \
  
It does not fix this problem. However, if we separate the execution of
"make obj" and "make all", we can avoid (again, not *fix*) the problem.
Maybe this change is reasonable; there is few meaning doing "make
kernel-depend" in "doMODULES" target.

-- -
Makoto `MAR' MATSUSHITA


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001113145812F.matusita>