Discussion:
goo build fails on ubuntu 6.06
Eduardo Cavazos
2007-03-10 22:41:06 UTC
Permalink
Hello,

6.06 comes with gcc 4.0. Does goo have issues with 4.0?

I tried 0.153 and 0.155.

Luckily, there's an ubuntu package for goo so I can use that. But I also
wanted to build my own.

Here's the error:

/scratch/goo-0_153-any-dev$ make
make[1]: Entering directory `/scratch/goo-0_153-any-dev/c'
(cd g2c; make)
make[2]: Entering directory `/scratch/goo-0_153-any-dev/c/g2c'
gcc -I.. -g -O2 -DDEFAULT_GOO_ROOT=\"/opt/goo-0.153/lib/goo/\" -c -o
goo/boot.o goo/boot.c
goo/boot.c: In function ‘YPallocate_stack’:
goo/boot.c:986: error: invalid lvalue in assignment
goo/boot.c: At top level:
goo/boot.c:673: warning: ‘YPib’ declared inline after being called
goo/boot.c:673: warning: previous declaration of ‘YPib’ was here
goo/boot.c: In function ‘YPcons_args’:
goo/boot.c:6761: error: invalid lvalue in assignment
goo/boot.c: In function ‘YPfun_val_check_type’:
goo/boot.c:6961: error: invalid lvalue in assignment
goo/boot.c: In function ‘YPcheck_type’:
goo/boot.c:7061: error: invalid lvalue in assignment
goo/boot.c: In function ‘YPstack_check’:
goo/boot.c:7134: error: invalid lvalue in assignment
goo/boot.c: In function ‘YPPcheck_call_types’:
goo/boot.c:7202: error: invalid lvalue in assignment
make[2]: *** [goo/boot.o] Error 1
make[2]: Leaving directory `/scratch/goo-0_153-any-dev/c/g2c'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/scratch/goo-0_153-any-dev/c'
make: *** [all] Error 1
/scratch/goo-0_153-any-dev$
Chris Double
2007-03-10 23:21:29 UTC
Permalink
Post by Eduardo Cavazos
Luckily, there's an ubuntu package for goo so I can use that. But I also
wanted to build my own.
You'll need to be able to build your own I suspect to use the
compilation mode that spawns the C compiler to compile definitions
entered at the REPL. Does that work for you? I can't recall the exact
command to activate it, or if it is the default, but it's described in
the readme. ,help might help.

Nice to see some life in the goo list :)

Chris.
--
http://www.bluishcoder.co.nz
Eduardo Cavazos
2007-03-11 10:26:50 UTC
Permalink
Hmmm.

So the compile fails on the file 'c/g2c/goo/boot.c'. There are 6 offending
lines; 4 of them are the same and the other 2 are also the same:

989: // (P)YPdef_regs();
6764: // (P)YPdef_regs();
6964: // (P)YPset_regs(regs_);
7064: // (P)YPset_regs(regs_);
7137: // (P)YPset_regs(regs_);
7205: // (P)YPset_regs(regs_);

That's output from grep so those are the line numbers. The comments I added.
After commenting out the lines, the build completes.

The resulting goo exits with a segmentation fault.

Ed
Eduardo Cavazos
2007-03-11 11:03:20 UTC
Permalink
Post by Eduardo Cavazos
So the compile fails on the file 'c/g2c/goo/boot.c'. There are 6 offending
989: // (P)YPdef_regs();
6764: // (P)YPdef_regs();
6964: // (P)YPset_regs(regs_);
7064: // (P)YPset_regs(regs_);
7137: // (P)YPset_regs(regs_);
7205: // (P)YPset_regs(regs_);
The YPdef_regs and YPset_regs macros are defined in c/grt.h:

#define YPdef_regs() regs = REGSREF()
#define YPset_regs(x) regs = (REGS)(x)

I expanded the calls to those macros manually in the 6 lines mentioned above
and goo built successfully. For example, instead of this on line 989:

(P)YPdef_regs();

I just have:

regs = REGSREF();

Ed

Loading...