misc/50873: make buildworld cannot handle MAKEOBJDIRPREFIX in some cases

Eugene Grosbein eugen at grosbein.pp.ru
Sat Apr 12 10:40:19 PDT 2003


>Number:         50873
>Category:       misc
>Synopsis:       make buildworld cannot handle MAKEOBJDIRPREFIX in some cases
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Apr 12 10:40:17 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Eugene Grosbein
>Release:        FreeBSD 4.8-STABLE i386
>Organization:
Svyaz Service JSC
>Environment:
System: FreeBSD grosbein.pp.ru 4.8-STABLE FreeBSD 4.8-STABLE #3: Sun Apr 6 23:20:11 KRAST 2003 eu at grosbein.pp.ru:/usr/local/obj/usr/local/src/sys/DADV i386

/usr is small and read-only.
Sources live in /usr/local/src and /usr/src is symlink for /usr/local/src.

>Description:
	I actively use make.conf to optimize my systems and exclude
	unneeded parts of system from build (make buildworld).

	Generally I use /usr/local/obj and my /usr/obj is symlink for
	/usr/local/obj. It runs Ok and I have no problems with this
	configuration as soon as I have full collection of sources

	However, now I need to build another world for another processor
	so I try to use MAKEOBJDIRPREFIX and buildworld fails.

>How-To-Repeat:

mkdir ~/hp 		  # I need to build a small world for my HP notebook
mkdir /usr/local/smallobj # a space for buildworld
cd hp

cat >make.conf <<EOF
CPUTYPE=i586
CFLAGS=-O2 -pipe
COPTFLAGS=-O2 -pipe
MODULES_WITH_WORLD=yes
MAKEOBJDIRPREFIX=/usr/local/smallobj
NO_FORTRAN=true
NO_I4B=true
NOGAMES=true
NOINFO=true
NO_GDB=true
NOPAM=true
NOATM=true
NONETGRAPH=true
NORADIUS=true
NOMAN=true
NOPROFILE=true
NOSHARE=true
NOSHARED=no
NO_SHAREDOCS=true
NO_IPFILTER=true
NOALIAS=true
NONAT=true
EOF

dir=`realpath ~/hp`
cd /usr/src
make __MAKE_CONF=$dir/make.conf buildworld

	It fails instantly. Here is full output, it's rather short.

--------------------------------------------------------------
>Fix:

	Unknown for me.

	I'm not familiar with a policy of building CANONICALOBJDIR
	but can guess that 'make install' should use 
	/usr/local/smallobj/usr/local/src/usr.bin/yacc created by
	'make obj' and not /usr/local/smallobj/usr/bin/

Eugene Grosbein
>Release-Note:
>Audit-Trail:
>Unformatted:
 >>> Rebuilding the temporary build tree
 --------------------------------------------------------------
 rm -rf /usr/local/smallobj/usr/local/src/i386
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/bin
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/lib/compat/aout
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/games
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/libdata/ldscripts
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/libexec/elf
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/sbin
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/misc
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/dict
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devX100
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devX100-12
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devX75
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devX75-12
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devascii
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devcp1047
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devdvi
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devhtml
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devkoi8-r
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devlatin1
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devlbp
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devlj4
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devps
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/groff_font/devutf8
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/tmac/mdoc
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/share/tmac/mm
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/arpa
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/dev
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/fs
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/g++/std
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/isc
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/isofs
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/libmilter
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/objc
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/openssl
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/protocols
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/readline
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/rpc
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/rpcsvc
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/security
 mkdir -p /usr/local/smallobj/usr/local/src/i386/usr/include/ufs
 ln -sf /usr/local/src/sys /usr/local/smallobj/usr/local/src/i386
 
 --------------------------------------------------------------
 >>> stage 1: bootstrap tools
 --------------------------------------------------------------
 cd /usr/local/src; MAKEOBJDIRPREFIX=/usr/local/smallobj/usr/local/src/i386  DESTDIR=  INSTALL="sh /usr/local/src/tools/install.sh" make -f Makefile.inc1 -DBOOTSTRAPPING  -DNOHTML -DNOINFO -DNOMAN -DNOPIC -DNOPROFILE -DNOSHARED  -DNO_WERROR bootstrap-tool s
 echo "===> usr.bin/yacc";  cd /usr/local/src/usr.bin/yacc;  make DIRPRFX=usr.bin/yacc/ obj;  make DIRPRFX=usr.bin/yacc/ depend;  make DIRPRFX=usr.bin/yacc/ all;  make DIRPRFX=usr.bin/yacc/ DESTDIR=/usr/local/smallobj install
 ===> usr.bin/yacc
 /usr/local/smallobj/usr/local/src/usr.bin/yacc created for /usr/local/src/usr.bin/yacc
 sh /usr/local/src/tools/install.sh -s -o root -g wheel -m 555   yacc /usr/local/smallobj/usr/bin
 sh /usr/local/src/tools/install.sh -o root  -g wheel -m 555  yyfix.sh  /usr/local/smallobj/usr/bin/yyfix
 install: /usr/local/smallobj/usr/bin/yyfix: Not a directory
 *** Error code 71
 
 Stop in /usr/local/src/usr.bin/yacc.
 *** Error code 1
 
 Stop in /usr/local/src.
 *** Error code 1
 
 Stop in /usr/local/src.
 *** Error code 1
 
 Stop in /usr/local/src.
 
 
 	I see that it tries to install yacc into nonexistent directory
 	/usr/local/smallobj/usr/bin. Instead, in installs yacc in 
 	the existent /usr/local/smallobj/usr and produce file 'bin' here.
 	Then it tries int install yyfix.sh into 
 	/usr/local/smallobj/usr/bin/yyfix but /usr/local/smallobj/usr/bin
 	is a file :-)
 


More information about the freebsd-bugs mailing list