Add Native Code Pointer to Objcode

2010-12-20 Thread Noah Lavine
Hello all,

The attached patch compresses the objcode representation a bit, then
adds space for a native code pointer. The whole thing ends up being
four words, as it is now.

The patch depends on this idea, so please let me know if it is wrong:
the current objcode representation uses its last two words to store
the object the objcode came from - a bytevector if the objcode is from
a bytevector, a file if it is from a file, etc. But each objcode can
only be from one thing, so in fact we only need to use one word to
store that. (Currently, one of the last two words will always be 0.)

The interesting changes are probably all in libguile/objcodes.c and
libguile/objcodes.h. I also changed all of the files that contained
static objcode, but those are pretty repetitive changes.

Noah


0001-Space-for-Native-Code.patch
Description: Binary data


Re: How Do I Debug a Boot Error?

2010-12-20 Thread Noah Lavine
Hello,

Thank you both! As it turned out, this was the issue that was caused
by the update to Gnulib, so the error is currently gone.

However, I realize that in general it would be great to have better
error messages in situations like this. I might be able to re-break my
Guile some time and try to make it give better messages.

Noah

On Mon, Dec 20, 2010 at 5:52 PM, Andy Wingo  wrote:
> Hi Noah,
>
> On Fri 17 Dec 2010 20:33, Noah Lavine  writes:
>
>> ;;; compiling 
>> /Users/noah/Desktop/guile/guile/module/language/objcode/spec.scm
>> guile: uncaught throw to wrong-type-arg: (#f Wrong type (expecting
>> ~A): ~S (exact integer (#t # #> 1037f8880> #)) ((#t #> 1037f88a0> # #)))
>>
>> How should I debug such a thing?
>
> Well, it should not be so bad -- I mean this is really terrible
> feedback, and no one should see that.
>
> But that said, run it as meta/gdb-uninstalled-guile, break on
> scm_ithrow, and then call scm_backtrace from with the breakpoint
> handler.
>
> Be on the lookout for a general solution, too; this error message is
> terrible.
>
> Andy
> --
> http://wingolog.org/
>



Re: How Do I Debug a Boot Error?

2010-12-20 Thread Andy Wingo
Hi Noah,

On Fri 17 Dec 2010 20:33, Noah Lavine  writes:

> ;;; compiling /Users/noah/Desktop/guile/guile/module/language/objcode/spec.scm
> guile: uncaught throw to wrong-type-arg: (#f Wrong type (expecting
> ~A): ~S (exact integer (#t # # 1037f8880> #)) ((#t # 1037f88a0> # #)))
>
> How should I debug such a thing?

Well, it should not be so bad -- I mean this is really terrible
feedback, and no one should see that.

But that said, run it as meta/gdb-uninstalled-guile, break on
scm_ithrow, and then call scm_backtrace from with the breakpoint
handler.

Be on the lookout for a general solution, too; this error message is
terrible.

Andy
-- 
http://wingolog.org/



Re: How does one specify linking to 64 bit libraries when there is a choice?

2010-12-20 Thread Ralf Corsepius

On 12/20/2010 03:09 PM, Bruce Korb wrote:

On 12/19/10 20:40, Noah Lavine wrote:

Hello,

I am not at all an expert on guile-config, but I will help if I can.


Thank you to all who responded.


Usually if you have 64-bit libs in lib64, you have to pass --libdir
explicitly.


We've now concluded that that is, indeed, the answer to the
original question.  The fallout question:

   How much understanding of the machinery should be expected
   of the hapless project builder?

Nelson has been doing this stuff for quite a while and has
reasonably good understanding of the process.  From that
understanding, he made the assumption that a standard 64 bit
"Red Hat Enterprise Linux Server release 5.5 (Tikanga)"
installation would be compatible with installing Guile via
./configure&&  make&&  sudo make install
and not wind up with a frumitzed `guile-config link` output.
The assumption was incorrect and we now know that.

Correct, this assumption is incorrect.

(With my Fedora Packaging Committee member hat on) In Fedora and RHEL, 
users are supposed to pass

--libdir=/usr/lib64 to configure
on x86_64 and
--libdir=/usr/lib to configure
on i386.

Analogous conventions apply to other multilib'ed architectures.

Ralf



Re: How does one specify linking to 64 bit libraries when there is a choice?

2010-12-20 Thread Andy Wingo
Hello,

When a work subscription to libtool and a home subscription to
guile-devel collide...

On Mon 20 Dec 2010 05:40, Noah Lavine  writes:

> I found the file that pkg-config will be using to give you this
> information. It is meta/guile-.pc in my Guile source
> tree. Furthermore, I think it's safe to assume that it is generated
> from meta/guile-.pc.in.

I think with 1.8, which is what Nelson is trying to build, it's still a
fairly thick thing.

>> On 12/17/10 11:57, Nelson H. F. Beebe wrote:
>>> /usr/local/bin/guile-config still reported -L/usr/local/lib.

Usually if you have 64-bit libs in lib64, you have to pass --libdir
explicitly.

So you would configure guile using:

./configure --prefix=/usr/local --libdir=/usr/local/lib64

If you still get /usr/local/lib coming out in guile's configure, you may
have a libtool-related issue, but I doubt it.

Cheers,

ANdy



Re: How does one specify linking to 64 bit libraries when there is a choice?

2010-12-20 Thread Andy Wingo
Hi Bruce,

Sorry you and others have had to suffer through this.

On Mon 20 Dec 2010 15:09, Bruce Korb  writes:

>   How much understanding of the machinery should be expected
>   of the hapless project builder?

I'm not sure, but:

> Nelson has been doing this stuff for quite a while and has
> reasonably good understanding of the process.  From that
> understanding, he made the assumption that a standard 64 bit
> "Red Hat Enterprise Linux Server release 5.5 (Tikanga)"
> installation would be compatible with installing Guile via
>./configure && make && sudo make install

This is incorrect, for RHEL and other systems which place 64-bit libs in
$prefix/lib64.  You will find hacks to set --libdir in almost all
packaging scripts.

> Perhaps we can strive to make the assumption correct
> in the future?

This idea is attractive, if it can be done. But this is more an autoconf
issue (setting $libdir) than a libtool issue, and it's not a Guile issue
at all :)

Cheers,

Andy



Re: How Do I Debug a Boot Error?

2010-12-20 Thread Ludovic Courtès
Hi Noah,

Noah Lavine  writes:

> I've managed to get Guile to give me this error when it starts up:
>
> ;;; compiling /Users/noah/Desktop/guile/guile/module/language/objcode/spec.scm
> guile: uncaught throw to wrong-type-arg: (#f Wrong type (expecting
> ~A): ~S (exact integer (#t # # 1037f8880> #)) ((#t # 1037f88a0> # #)))

What does “make -C module” do?  What about rebuilding all the ‘.go’
files?

I would first try to get back to a working state, will all .go files
compiled, and then find out which change triggered the faulty behavior.
FWIW...

Thanks,
Ludo’.




Re: Request for Latest Gnulib

2010-12-20 Thread Ludovic Courtès
Hello,

Noah Lavine  writes:

> All of which is a long way of saying, please merge the latest version
> of Gnulib so I will be able to build Guile again.

Done!

Ludo’.




Re: How does one specify linking to 64 bit libraries when there is a choice?

2010-12-20 Thread Ralf Wildenhues
* Ralf Wildenhues wrote on Mon, Dec 20, 2010 at 08:20:25PM CET:
> The other crucial part is that libtool doesn't get the
> sys_lib_search_path_spec and sys_lib_dlsearch_path_spec settings
> right on several distros, introducing such wrong directories itself (not
> to speak of cross setups).  There have been several proposed patches to
> address this, e.g.
> http://thread.gmane.org/gmane.comp.gnu.libtool.patches/10625
> http://thread.gmane.org/gmane.comp.gnu.libtool.patches/9931
> but I have yet to see one that solves it.

ESENDTOOSOON, sorry.

At least with current Libtool you can override wrong settings with the
lt_cv_sys_lib_search_path_spec and lt_cv_sys_lib_dlsearch_path_spec
cache variables.



Re: How does one specify linking to 64 bit libraries when there is a choice?

2010-12-20 Thread Ralf Wildenhues
* Bruce Korb wrote on Mon, Dec 20, 2010 at 03:09:48PM CET:
>   How much understanding of the machinery should be expected
>   of the hapless project builder?

I've skimmed most of the conversation in this thread now.

The crucial part, I think, is *not* the --libdir setting.  Distros
usually get that consistent between their packages, and users should not
be using any of /usr/lib{,32,64} but rather something below /usr/local.

One crucial part is that libtool gets confused whenever it has
directories with the wrong ABI in the search path (unlike ld or ld.so,
both are in some cases smart enough to skip wrong ABI), which means that
either no instance of the build system machineries may introduce such
paths, or libtool needs to get smarter to ignore wrong ABI dirs.

The other crucial part is that libtool doesn't get the
sys_lib_search_path_spec and sys_lib_dlsearch_path_spec settings
right on several distros, introducing such wrong directories itself (not
to speak of cross setups).  There have been several proposed patches to
address this, e.g.
http://thread.gmane.org/gmane.comp.gnu.libtool.patches/10625
http://thread.gmane.org/gmane.comp.gnu.libtool.patches/9931
but I have yet to see one that solves it.

Thanks,
Ralf



Re: How does one specify linking to 64 bit libraries when there is a choice?

2010-12-20 Thread Bruce Korb
On 12/19/10 20:40, Noah Lavine wrote:
> Hello,
> 
> I am not at all an expert on guile-config, but I will help if I can.

Thank you to all who responded.

> Usually if you have 64-bit libs in lib64, you have to pass --libdir
> explicitly.

We've now concluded that that is, indeed, the answer to the
original question.  The fallout question:

  How much understanding of the machinery should be expected
  of the hapless project builder?

Nelson has been doing this stuff for quite a while and has
reasonably good understanding of the process.  From that
understanding, he made the assumption that a standard 64 bit
"Red Hat Enterprise Linux Server release 5.5 (Tikanga)"
installation would be compatible with installing Guile via
   ./configure && make && sudo make install
and not wind up with a frumitzed `guile-config link` output.
The assumption was incorrect and we now know that.

Perhaps we can strive to make the assumption correct
in the future?

Thank you!  Regards, Bruce



Re: Nice quote from the cover of R2RS

2010-12-20 Thread Neil Jerram
Mark H Weaver  writes:

> Data and procedures and the values they amass,
> Higher-order functions to combine and mix and match,
> Objects with their local state, the messages they pass,
> A property, a package, the control point for a catch--
> In the Lambda Order they are all first-class.
> One Thing to name them all, One Thing to define them,
> One Thing to place them in environments and bind them,
> In the Lambda order they are all first-class.

Thanks, I enjoyed that.  I'd say the first half is more Auden (like the
Night Mail) than Tolkien though.

> I wonder if it might be included in the Guile manual for fun.

For me, it's close but not quite there yet.  The scansion doesn't really
work, and for me that let's it down.  But I imagine that could be fixed,
if someone wants to have a go at it.

   Neil