Re: Poor state of the build infrastructure.

2014-09-25 Thread John Baldwin
On Wednesday, September 24, 2014 7:33:46 pm Marcel Moolenaar wrote:
 
 On Sep 24, 2014, at 12:54 PM, John Baldwin j...@freebsd.org wrote:
 
  On Tuesday, September 23, 2014 09:29:48 AM Marcel Moolenaar wrote:
  What is going on here?
  Are we still in some kind of flux and people aren't done yet or is
  this the intended state by virtue of noone having anything left on
  there TODO list?
  
  Sorry to ask a dumb question, but are you sure you did the make buildworld 
  first?  Shouldn't that have errored if it couldn't build crt1?
 
 The root cause problem was that MAKEOBJDIRPREFIX was not set
 to whatever it was set to during buildworld. That was easy
 enough to figure out when a bunch of things don't add up.

Ok.

 But neither problem mentioned in the email had anything to
 do with MAKEOBJDIRPREFIX. Having to set the COMPILER_TYPE
 as part of an install is a bug. Entering a powerpc buildenv
 and having a compiler that builds for the host (or maybe
 just some default) is a regression.

Agreed on COMPILER_TYPE, but I think the path thing has always been true in 
make buildenv because we don't build cross-tools for things like 'cp'.

-- 
John Baldwin
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Poor state of the build infrastructure.

2014-09-25 Thread Ian Lepore
On Thu, 2014-09-25 at 14:50 -0400, John Baldwin wrote:
 On Wednesday, September 24, 2014 7:33:46 pm Marcel Moolenaar wrote:
  
  On Sep 24, 2014, at 12:54 PM, John Baldwin j...@freebsd.org wrote:
  
   On Tuesday, September 23, 2014 09:29:48 AM Marcel Moolenaar wrote:
   What is going on here?
   Are we still in some kind of flux and people aren't done yet or is
   this the intended state by virtue of noone having anything left on
   there TODO list?
   
   Sorry to ask a dumb question, but are you sure you did the make 
   buildworld 
   first?  Shouldn't that have errored if it couldn't build crt1?
  
  The root cause problem was that MAKEOBJDIRPREFIX was not set
  to whatever it was set to during buildworld. That was easy
  enough to figure out when a bunch of things don't add up.
 
 Ok.
 
  But neither problem mentioned in the email had anything to
  do with MAKEOBJDIRPREFIX. Having to set the COMPILER_TYPE
  as part of an install is a bug. Entering a powerpc buildenv
  and having a compiler that builds for the host (or maybe
  just some default) is a regression.
 
 Agreed on COMPILER_TYPE, but I think the path thing has always been true in 
 make buildenv because we don't build cross-tools for things like 'cp'.
 

Just to be clear, all the problems in the original mail, including
failure to detect COMPILER_TYPE automatically and building the wrong
type of binaries, were fallout from the original problem of not setting
MAKEOBJDIRPREFIX correctly.  It turns out if you use the build system
correctly, it works!  (Unfortunately, using it correctly requires
knowing about a whole lotta knobs to be set these days if your needs are
not vanilla.)

-- Ian


___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Poor state of the build infrastructure.

2014-09-24 Thread John Baldwin
On Tuesday, September 23, 2014 09:29:48 AM Marcel Moolenaar wrote:
 What is going on here?
 Are we still in some kind of flux and people aren't done yet or is
 this the intended state by virtue of noone having anything left on
 there TODO list?

Sorry to ask a dumb question, but are you sure you did the make buildworld 
first?  Shouldn't that have errored if it couldn't build crt1?  I think if you 
haven't done a make buildworld/toolchain, then when you do make buildenv you 
will fall back to using the host tools:

 make TARGET=sparc64 buildenv
Entering world for sparc64:sparc64
$ echo $PATH
/usr/obj/sparc64.sparc64/usr/src/tmp/legacy/usr/sbin:/usr/obj/sparc64.sparc64/usr/src/tmp/legacy/usr/bin:/usr/obj/sparc64.sparc64/usr/src/tmp/legacy/usr/games:/usr/obj/sparc64.sparc64/usr/src/tmp/legacy/bin:/usr/obj/sparc64.sparc64/usr/src/tmp/usr/sbin:/usr/obj/sparc64.sparc64/usr/src/tmp/usr/bin:/usr/obj/sparc64.sparc64/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin
$ which cc
/usr/obj/sparc64.sparc64/usr/src/tmp/usr/bin/cc
$ which cat
/bin/cat


-- 
John Baldwin
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Poor state of the build infrastructure.

2014-09-24 Thread Marcel Moolenaar

On Sep 24, 2014, at 12:54 PM, John Baldwin j...@freebsd.org wrote:

 On Tuesday, September 23, 2014 09:29:48 AM Marcel Moolenaar wrote:
 What is going on here?
 Are we still in some kind of flux and people aren't done yet or is
 this the intended state by virtue of noone having anything left on
 there TODO list?
 
 Sorry to ask a dumb question, but are you sure you did the make buildworld 
 first?  Shouldn't that have errored if it couldn't build crt1?

The root cause problem was that MAKEOBJDIRPREFIX was not set
to whatever it was set to during buildworld. That was easy
enough to figure out when a bunch of things don't add up.

But neither problem mentioned in the email had anything to
do with MAKEOBJDIRPREFIX. Having to set the COMPILER_TYPE
as part of an install is a bug. Entering a powerpc buildenv
and having a compiler that builds for the host (or maybe
just some default) is a regression.

The only thing the FreeBSD build is good at, really, is
building in /usr/src for the host. The rest is just not
up to par and I think it harms FreeBSD beyond belief.

-- 
Marcel Moolenaar
mar...@xcllnt.net




signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: Poor state of the build infrastructure.

2014-09-24 Thread Justin Hibbits
On Wed, 24 Sep 2014 16:33:46 -0700
Marcel Moolenaar mar...@xcllnt.net wrote:

 
 On Sep 24, 2014, at 12:54 PM, John Baldwin j...@freebsd.org wrote:
 
  On Tuesday, September 23, 2014 09:29:48 AM Marcel Moolenaar wrote:
  What is going on here?
  Are we still in some kind of flux and people aren't done yet or is
  this the intended state by virtue of noone having anything left on
  there TODO list?
  
  Sorry to ask a dumb question, but are you sure you did the make
  buildworld first?  Shouldn't that have errored if it couldn't build
  crt1?
 
 The root cause problem was that MAKEOBJDIRPREFIX was not set
 to whatever it was set to during buildworld. That was easy
 enough to figure out when a bunch of things don't add up.

That's a very annoying problem, and even more annoying to track down.


 But neither problem mentioned in the email had anything to
 do with MAKEOBJDIRPREFIX. Having to set the COMPILER_TYPE
 as part of an install is a bug. Entering a powerpc buildenv
 and having a compiler that builds for the host (or maybe
 just some default) is a regression.

When MAKEOBJDIRPREFIX isn't set, it takes whatever compiler it can
find.  It should probably error out instead, since the build
environment isn't sane at this point.  I ran into this probably a few
weeks back.

 The only thing the FreeBSD build is good at, really, is
 building in /usr/src for the host. The rest is just not
 up to par and I think it harms FreeBSD beyond belief.

I have no problems building outside of /usr/src.

- Justin


signature.asc
Description: PGP signature


Re: Poor state of the build infrastructure.

2014-09-24 Thread Marcel Moolenaar

On Sep 24, 2014, at 4:47 PM, Justin Hibbits chmeeed...@gmail.com wrote:

  It should probably error out instead, since the build
 environment isn't sane at this point.  I ran into this probably a few
 weeks back.
 
 The only thing the FreeBSD build is good at, really, is
 building in /usr/src for the host. The rest is just not
 up to par and I think it harms FreeBSD beyond belief.
 
 I have no problems building outside of /usr/src.

It's not a problem in the sense that it cannot be done, but
just think about having to share a machine with a bunch of
people and you don't own the machine.
You quickly realize that without MAKEOBJDIRPREFIX or with
files in /etc (like /etc/make.conf) that you can't tweak,
you quick;y realize how error prone everything and how
much time you end up wasting.

-- 
Marcel Moolenaar
mar...@xcllnt.net




signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: Poor state of the build infrastructure.

2014-09-24 Thread Garrett Cooper
On Sep 24, 2014, at 16:33, Marcel Moolenaar mar...@xcllnt.net wrote:

 
 On Sep 24, 2014, at 12:54 PM, John Baldwin j...@freebsd.org wrote:
 
 On Tuesday, September 23, 2014 09:29:48 AM Marcel Moolenaar wrote:
 What is going on here?
 Are we still in some kind of flux and people aren't done yet or is
 this the intended state by virtue of noone having anything left on
 there TODO list?
 
 Sorry to ask a dumb question, but are you sure you did the make buildworld 
 first?  Shouldn't that have errored if it couldn't build crt1?
 
 The root cause problem was that MAKEOBJDIRPREFIX was not set
 to whatever it was set to during buildworld. That was easy
 enough to figure out when a bunch of things don't add up.
 
 But neither problem mentioned in the email had anything to
 do with MAKEOBJDIRPREFIX. Having to set the COMPILER_TYPE
 as part of an install is a bug. Entering a powerpc buildenv
 and having a compiler that builds for the host (or maybe
 just some default) is a regression.
 
 The only thing the FreeBSD build is good at, really, is
 building in /usr/src for the host. The rest is just not
 up to par and I think it harms FreeBSD beyond belief.

I agree with Marcel. COMPILER_TYPE showed up before 10.0-CURRENT 
dealing with the gcc-clang cutover and caused some minor issues when 
integrating with some FreeBSD makefiles unless using the top-level make rules. 
It would be nice if it defaulted to something sane now that the build knobs 
work has been moved out to src.opts.mk .
Thanks!
-Garrett


signature.asc
Description: Message signed with OpenPGP using GPGMail


Poor state of the build infrastructure.

2014-09-23 Thread Marcel Moolenaar
Things have regressed from last I tried (which is a while). After a
clean buildworld for PowerPC I can't install it:

# make installworld TARGET_ARCH=powerpc TARGET=powerpc __MAKE_CONF=/dev/null 
DESTDIR=/tank/scratch/powerpc
mkdir -p /tmp/install.pjtGQ4J8
:
make[2]: /tank/scratch/marcelm/head/share/mk/bsd.compiler.mk line 37: Unable 
to determine compiler type for cc.  Consider setting COMPILER_TYPE.
*** Error code 1

And look at share/mk/bsd.compiler.mk. Its comments with typos doesn't
even fit 80 character. While technically speaking, not a problem, it
does leave the impression of low quality. This has the unfortunate
side-effect of deepening the low quality perception caused by not
being able to do an installworld in the first place.

So, ok. I add COMPILER_TYPE=fuckthat to the command line and guess
what:

# make installworld TARGET_ARCH=powerpc TARGET=powerpc __MAKE_CONF=/dev/null 
DESTDIR=/tank/scratch/powerpc COMPILER_TYPE=fuckthat
mkdir -p /tmp/install.pFqalBOs
:
 Making hierarchy
:
 Installing everything
:
=== lib/csu/powerpc (install)
install -o root -g wheel -m 444  crt1.o crti.o crtn.o Scrt1.o gcrt1.o 
/tank/scratch/powerpc/usr/lib
install: crt1.o: No such file or directory
*** Error code 71

What???

Ok, let's check if things were build properly:

% make buildenv __MAKE_CONF=/dev/null TARGET=powerpc TARGET_ARCH=powerpc
$ cd lib/csu/powerpc
$ make
:
cc  -O2 -pipe ... -c crti.S
crti.S:34:13: error: unexpected token in memory operand
 stwu 1,-16(1)
^
crti.S:35:2: error: invalid instruction mnemonic 'mflr'
 mflr 0
 ^~~~
crti.S:36:12: error: unexpected token in memory operand
 stw 31,12(1)
   ^
crti.S:37:11: error: unexpected token in memory operand
 stw 0,20(1)
  ^
crti.S:38:2: error: invalid instruction mnemonic 'mr'
 mr 31,1
 ^~
crti.S:45:13: error: unexpected token in memory operand
 stwu 1,-16(1)
^
crti.S:46:2: error: invalid instruction mnemonic 'mflr'
 mflr 0
 ^~~~
crti.S:47:12: error: unexpected token in memory operand
 stw 31,12(1)
   ^
crti.S:48:11: error: unexpected token in memory operand
 stw 0,20(1)
  ^
crti.S:49:2: error: invalid instruction mnemonic 'mr'
 mr 31,1
 ^~
*** Error code 1


Grrr...

$ which cc
/usr/bin/cc
$ cc -v
FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
Target: x86_64-unknown-freebsd10.1
Thread model: posix
Selected GCC installation: 

So, now even the very questionable but fundamentally non-broken make
buildenv isn't working anymore. How is anyone going to develop for
anything but the host this way. Granted we seriously sucked in this
regard to begin with but we seem to have regressed to the point of
having absolutely no working support whatsoever.

What is going on here?
Are we still in some kind of flux and people aren't done yet or is
this the intended state by virtue of noone having anything left on
there TODO list?

-- 
Marcel Moolenaar
mar...@xcllnt.net




signature.asc
Description: Message signed with OpenPGP using GPGMail