Date: Sun, 13 Apr 2003 01:31:26 +0800 (KRAST) From: Eugene Grosbein <eugen@grosbein.pp.ru> To: FreeBSD-gnats-submit@FreeBSD.org Subject: misc/50873: make buildworld cannot handle MAKEOBJDIRPREFIX in some cases Message-ID: <200304121731.h3CHVQV5018557@grosbein.pp.ru> Resent-Message-ID: <200304121740.h3CHeIuS018915@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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@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 :-)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304121731.h3CHVQV5018557>