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