Discussion:
[Larceny-users] Larceny 0.961 build annoyances
David Rush
2008-06-21 18:47:31 UTC
Permalink
HI y'all -

I don't know what it is with my Debian systems, but I seem to have
endless problems building Larceny on them. My latest round has
occurred with the 0.961 source code tarball. I can't use the binary
release because of libc incompatibility with my Debian Etch release,
so I just moved on to building the code from source, hosting it on PLT
v372.

The build went fine up until sasstrap.heap got dumped. Then I get:

Dumping sasstrap.heap
Loading src/Lib/Common/malcode.lop

*** Error encountered!
Deleting target file: sasstrap.heap
make-sasstrap-heap: sasstrap.heap

=== context ===
select-handler/no-breaks
/home/drr/dist/larceny-0.961-src/src/Build/make.sch:351:2: make
/home/drr/dist/larceny-0.961-src/src/Build/make.sch:244:0: make:make
Continuing on from there (figuring that I can grab the heap images
from the binary dist)

(build-runtime)
(build-executable)

both ran perfectly. So I copied them into my 0.961 binary distribution
directory and voilá - a working larceny system. So can anybody tell me
why I am having issues building the heaps? This is actually not the
first time this has occurred to me, but I had downstream issues with
ERR5RS which caused me to believe that I needed to rebuild the
libraries as well (as in step 4 from HOWTO-BUILD) and *that* build
failed while trying to load syntax-case saying that there was a
version mismatch between the expanders (or some such - I don't have it
here right now). I would very much like to know what I need to change
in order to get a clean build.

And FWIW, I am not stuck. My ERR5RS problems turned out to be operator
error compounded by impure installation steps. The problem building
the heaps is quite reproducible for me. SO this qualifies as merely an
annoyance. As is the fact that - for whatever reason - I *still* can't
get a clean build of the runtime under x86-64. but that's a different
story and not exceedingly relevant as my deployment host is only 32
bits. What are the chances of a 64-bit native Larceny for this summer?

david rush
--
GPG Public key at http://cyber-rush.org/drr/gpg-public-key.txt
Jed Davis
2008-06-22 00:33:01 UTC
Permalink
Post by David Rush
HI y'all -
I don't know what it is with my Debian systems, but I seem to have
endless problems building Larceny on them. My latest round has
occurred with the 0.961 source code tarball. I can't use the binary
release because of libc incompatibility with my Debian Etch release,
Let's see... Etch seems to have glibc 2.3.6, according to
packages.debian.org, and:

$ nm /usr/local/lib/larceny-0.961/larceny.bin| grep ' U .*@@' | tr @ \ | sort -k3 | tail -5
U dlopen GLIBC_2.1
U fclose GLIBC_2.1
U fopen GLIBC_2.1
U __ctype_b_loc GLIBC_2.3
U __stack_chk_fail GLIBC_2.4

A quick check on the Web suggests invoking GCC with -fno-stack-protector
as one way to prevent that last symbol from being used; I have not
sought to confirm or deny that hypothesis, nor the related question of
whether that's the only issue preventing use on older systems.
--
(let ((C call-with-current-continuation)) (apply (lambda (x y) (x y)) (map
((lambda (r) ((C C) (lambda (s) (r (lambda l (apply (s s) l)))))) (lambda
(f) (lambda (l) (if (null? l) C (lambda (k) (display (car l)) ((f (cdr l))
(C k))))))) '((#\J #\d #\D #\v #\s) (#\e #\space #\a #\i #\newline)))))
David Rush
2008-06-22 06:56:50 UTC
Permalink
Post by Jed Davis
Post by David Rush
I don't know what it is with my Debian systems, but I seem to have
endless problems building Larceny on them. My latest round has
occurred with the 0.961 source code tarball. I can't use the binary
release because of libc incompatibility with my Debian Etch release,
Let's see... Etch seems to have glibc 2.3.6, according to
...
whether that's the only issue preventing use on older systems.
Not to whine or anything, but Etch was only promoted to Debian stable
on 17 Feb 2008. I do realize that Debian doesn't have the world's
fastest release cycle, but four months seems pretty recent. But
rebuilding the runtime to work on the current stable Debian wasn't a
problem. The part I really don't understand is why everything except
heap-building seems to work correctly in the build process.

david rush
--
GPG Public key at http://cyber-rush.org/drr/gpg-public-key.txt
Felix Klock
2008-06-23 22:33:41 UTC
Permalink
David (cc'ing larceny-users)-
Post by David Rush
Post by Jed Davis
Post by David Rush
I don't know what it is with my Debian systems, but I seem to have
endless problems building Larceny on them. My latest round has
occurred with the 0.961 source code tarball. I can't use the binary
release because of libc incompatibility with my Debian Etch release,
Let's see... Etch seems to have glibc 2.3.6, according to
...
whether that's the only issue preventing use on older systems.
Not to whine or anything, but Etch was only promoted to Debian stable
on 17 Feb 2008. I do realize that Debian doesn't have the world's
fastest release cycle, but four months seems pretty recent. But
rebuilding the runtime to work on the current stable Debian wasn't a
problem. The part I really don't understand is why everything except
heap-building seems to work correctly in the build process.
I was not aware of the dependency on glibc 2.4 that the newer gcc
seems to be introducing. I will investigate Jed's suggestion of using
-fno-stack-protector to try to remove that dependency on glibc 2.4
(Ticket #546).

I tried to replicate your problem building the heap, but that step of
the build process worked on the copy of Debian Etch that I tried it
out on. I have included a transcript of the build in this email, to
make it obvious which versions of the Larceny source, Mzscheme
runtime, and the setup flags I used in the build, and also to make it
clear which files are being generated by the build. (The kind of
symptoms that you described in his email can be caused by build
artifacts from one Scheme system corrupting a build attempt under a
different scheme system.)

If you continue to have issues with your build when following the
steps transcribed below, I can post my VMware image for this Etch-
based build online, so that you could compare its configuration with
your own machine's configuration and figure out which is the
significant difference here.

-Felix



% ls -F
Desktop/ larceny-0.961-src.tar.gz plt/
% tar xzf larceny-0.961-src.tar.gz
% cd larceny-0.961-src
% ../plt/bin/mzscheme
Welcome to MzScheme v372 [3m], Copyright (c) 2004-2007 PLT Scheme Inc.
Post by David Rush
(load "setup.sch")
(setup 'scheme: 'mzscheme 'host: 'linux86 'sassy)
Loading MzScheme compatibility package.
src/Build/expander.sch
src/Build/config.sch
#t
Post by David Rush
(build-config-files)
src/Rts/features.sch
Redefined feature set!
Post by David Rush
(load-compiler)
src/Build/nbuild.sch
src/Build/nbuild-files.sch
src/Build/nbuild-defns.sch
Loading Twobit.
src/Compiler/hash.sch
src/Compiler/hashtable.sch
src/Compiler/hashtree.sch
src/Compiler/sets.sch
src/Compiler/switches.sch
src/Compiler/pass1.aux.sch
src/Compiler/pass2.aux.sch
src/Compiler/prefs.sch
src/Compiler/pass0.sch
src/Compiler/syntaxenv.sch
src/Compiler/syntaxrules2.sch
src/Compiler/syntaxrules.sch
src/Compiler/lowlevel.sch
src/Compiler/expand.sch
src/Compiler/usual.sch
WARNING from macro expander:
Redefining
let
src/Compiler/pass1.sch
src/Compiler/copy.sch
src/Compiler/pass3commoning.aux.sch
src/Compiler/pass3rep.aux.sch
src/Lib/Common/globals.sch
src/Lib/Common/ecodes.sch
src/Lib/Common/layouts.sch
src/Lib/Common/regs.sch
src/Compiler/common.imp.sch
WARNING from macro expander:
Redefining
.call
src/Compiler/iasn.imp.sch
src/Compiler/iasn.imp2.sch
src/Compiler/pass2p1.sch
src/Compiler/pass2p2.sch
src/Compiler/pass2if.sch
src/Compiler/pass3callgraph.sch
src/Compiler/pass3inlining.sch
src/Compiler/pass3folding.sch
src/Compiler/pass3anormal.sch
src/Compiler/pass3anormal2.sch
src/Compiler/pass3commoning.sch
src/Compiler/pass3rep.sch
src/Compiler/pass3.sch
src/Compiler/pass4.aux.sch
src/Compiler/pass4p1.sch
src/Compiler/pass4p2.sch
src/Compiler/pass4let.sch
src/Compiler/pass4special.sch
src/Compiler/pass4p3.sch
src/Compiler/driver-common.sch
src/Compiler/driver-twobit.sch
src/Compiler/printlap.sch
Loading the common assembler.
src/Asm/Shared/pass5p1.sch
src/Asm/Shared/asmutil.sch
src/Asm/Shared/asmutil32el.sch
src/Asm/Shared/asmutil32.sch
src/Asm/Shared/makefasl.sch
src/Asm/Shared/dumpheap.sch
Loading x86-sass machine assembler.
src/Asm/Shared/external-assembler.sch
Selecting compiler: No compiler at all
src/Asm/IAssassin/sassy-machine.sch
src/Asm/IAssassin/sassy-instr.sch
src/Asm/IAssassin/sassy-invoke.sch
src/Asm/IAssassin/pass5p2-sassy.sch
src/Asm/IAssassin/peepopt.sch
src/Asm/IAssassin/asm-switches.sch
Loading bootstrap heap dumper.
Loading make utility, makefile, and help.
src/Build/make.sch
src/Build/compile-tools.sch
src/Lib/makefile.sch
src/Compiler/help.sch
Loading utility functions.
src/Rts/make-templates.sch
src/Build/cleanup.sch

Welcome. Type (help) for help.
Post by David Rush
(build-heap)
Assembling src/Lib/Common/malcode.lop
Compiling src/Lib/Common/typetags.lap
Assembling src/Lib/Common/typetags.lop
Compiling src/Lib/Common/syscall-id.lap
Assembling src/Lib/Common/syscall-id.lop
Compiling src/Lib/Common/sys-unix.lap
Assembling src/Lib/Common/sys-unix.lop
Compiling src/Lib/Common/system-interface.lap
Assembling src/Lib/Common/system-interface.lop
Compiling src/Lib/Common/error0.lap
Assembling src/Lib/Common/error0.lop
Compiling src/Lib/Arch/IAssassin/primops.lap
Assembling src/Lib/Arch/IAssassin/primops.lop
Compiling src/Lib/Common/sysparam.lap
Assembling src/Lib/Common/sysparam.lop
Compiling src/Lib/Common/struct.lap
Assembling src/Lib/Common/struct.lop
Compiling src/Lib/Common/command-line.lap
Assembling src/Lib/Common/command-line.lop
Compiling src/Lib/Common/list.lap
Assembling src/Lib/Common/list.lop
Compiling src/Lib/Common/vector.lap
Assembling src/Lib/Common/vector.lop
Compiling src/Lib/Common/bytevector.lap
Assembling src/Lib/Common/bytevector.lop
Compiling src/Lib/Common/string.lap
Assembling src/Lib/Common/string.lop
Compiling src/Lib/Common/control.lap
Assembling src/Lib/Common/control.lop
Compiling src/Lib/Common/hash.lap
Assembling src/Lib/Common/hash.lop
Compiling src/Lib/Common/preds.lap
Assembling src/Lib/Common/preds.lop
Compiling src/Lib/Common/oblist.lap
Assembling src/Lib/Common/oblist.lop
Compiling src/Lib/Common/mcode.lap
Assembling src/Lib/Common/mcode.lop
Compiling src/Lib/Common/memstats.lap
Assembling src/Lib/Common/memstats.lop
Compiling src/Lib/Common/record.lap
Assembling src/Lib/Common/record.lop
Compiling src/Lib/Common/condition.lap
Assembling src/Lib/Common/condition.lop
Compiling src/Lib/Common/ecodes.lap
Assembling src/Lib/Common/ecodes.lop
Compiling src/Lib/Common/ehandler.lap
Assembling src/Lib/Common/ehandler.lop
Compiling src/Lib/Common/error.lap
Assembling src/Lib/Common/error.lop
Compiling src/Lib/Common/raise.lap
Assembling src/Lib/Common/raise.lop
Compiling src/Lib/Common/timer.lap
Assembling src/Lib/Common/timer.lop
Compiling src/Lib/Common/exit.lap
Assembling src/Lib/Common/exit.lop
Compiling src/Lib/Common/dump.lap
Assembling src/Lib/Common/dump.lop
Compiling src/Lib/Common/secret.lap
Assembling src/Lib/Common/secret.lop
Compiling src/Lib/Common/hashtable.lap
Assembling src/Lib/Common/hashtable.lop
Compiling src/Lib/Common/enum.lap
Assembling src/Lib/Common/enum.lop
Compiling src/Lib/Common/unicode0.lap
Assembling src/Lib/Common/unicode0.lop
Compiling src/Lib/Common/unicode1.lap
Assembling src/Lib/Common/unicode1.lop
Compiling src/Lib/Common/unicode2.lap
Assembling src/Lib/Common/unicode2.lop
Compiling src/Lib/Common/unicode3.lap
Assembling src/Lib/Common/unicode3.lop
Compiling src/Lib/Common/unicode4.lap
Assembling src/Lib/Common/unicode4.lop
Compiling src/Lib/Common/require.lap
Assembling src/Lib/Common/require.lop
Compiling src/Lib/Common/iosys.lap
Assembling src/Lib/Common/iosys.lop
Compiling src/Lib/Common/fileio.lap
Assembling src/Lib/Common/fileio.lop
Compiling src/Lib/Common/conio.lap
Assembling src/Lib/Common/conio.lop
Compiling src/Lib/Common/bytevectorio.lap
Assembling src/Lib/Common/bytevectorio.lop
Compiling src/Lib/Common/stringio.lap
Assembling src/Lib/Common/stringio.lop
Compiling src/Lib/Common/customio.lap
Assembling src/Lib/Common/customio.lop
Compiling src/Lib/Common/utf16.lap
Assembling src/Lib/Common/utf16.lop
Compiling src/Lib/Common/portio.lap
Assembling src/Lib/Common/portio.lop
Compiling src/Lib/Common/stdio.lap
Assembling src/Lib/Common/stdio.lop
Compiling src/Lib/Common/print.lap
Assembling src/Lib/Common/print.lop
Compiling src/Lib/Common/ioboot.lap
Assembling src/Lib/Common/ioboot.lop
Compiling src/Lib/Common/format.lap
Assembling src/Lib/Common/format.lop
Compiling src/Lib/Common/sort.lap
Assembling src/Lib/Common/sort.lop
Compiling src/Lib/Common/number.lap
Assembling src/Lib/Common/number.lop
Compiling src/Lib/Common/fx.lap
Assembling src/Lib/Common/fx.lop
Compiling src/Lib/Common/fl.lap
Assembling src/Lib/Common/fl.lop
Compiling src/Lib/Common/bitwise.lap
Assembling src/Lib/Common/bitwise.lop
Compiling src/Lib/Common/globals.lap
Assembling src/Lib/Common/globals.lop
Compiling src/Lib/Common/profile.lap
Assembling src/Lib/Common/profile.lop
Compiling src/Lib/Common/bignums-el.lap
Assembling src/Lib/Common/bignums-el.lop
Compiling src/Lib/Common/bignums.lap
Assembling src/Lib/Common/bignums.lop
Compiling src/Lib/Common/ratnums.lap
Assembling src/Lib/Common/ratnums.lop
Compiling src/Lib/Common/rectnums.lap
Assembling src/Lib/Common/rectnums.lop
Compiling src/Lib/Common/flonums-el.lap
Assembling src/Lib/Common/flonums-el.lop
Compiling src/Lib/Common/flonums.lap
Assembling src/Lib/Common/flonums.lop
Compiling src/Lib/Common/contag.lap
Assembling src/Lib/Common/contag.lop
Compiling src/Lib/Common/num2str.lap
Assembling src/Lib/Common/num2str.lop
Compiling src/Lib/Common/belle.lap
Assembling src/Lib/Common/belle.lop
Compiling src/Lib/Common/str2num.lap
Assembling src/Lib/Common/str2num.lop
Compiling src/Lib/Common/javadot-symbol.lap
Assembling src/Lib/Common/javadot-symbol.lop
Compiling src/Lib/Common/javadot-syntax.lap
Assembling src/Lib/Common/javadot-syntax.lop
Compiling src/Lib/Common/reader.lap
ANF size: 32727
Assembling src/Lib/Common/reader.lop
Compiling src/Lib/Common/env.lap
Assembling src/Lib/Common/env.lop
Compiling src/Lib/Common/procinfo.lap
Assembling src/Lib/Common/procinfo.lop
Compiling src/Lib/Common/load.lap
Assembling src/Lib/Common/load.lop
Compiling src/Lib/Common/eval.lap
Assembling src/Lib/Common/eval.lop
Compiling src/Lib/Common/syshooks.lap
Assembling src/Lib/Common/syshooks.lop
Compiling src/Lib/Common/gcctl.lap
Assembling src/Lib/Common/gcctl.lop
Compiling src/Lib/Common/toplevel.lap
Assembling src/Lib/Common/toplevel.lop
Compiling src/Lib/Arch/IAssassin/toplevel-target.lap
Assembling src/Lib/Arch/IAssassin/toplevel-target.lop
Compiling src/Lib/Arch/IAssassin/loadable.lap
Assembling src/Lib/Arch/IAssassin/loadable.lop
Compiling src/Lib/Common/go.lap
Assembling src/Lib/Common/go.lop
Compiling src/Lib/Repl/main.lap
Assembling src/Lib/Repl/main.lop
Compiling src/Lib/Repl/reploop.lap
Assembling src/Lib/Repl/reploop.lop
Compiling src/Lib/Interpreter/interp.lap
Assembling src/Lib/Interpreter/interp.lop
Compiling src/Lib/Interpreter/interp-prim.lap
Assembling src/Lib/Interpreter/interp-prim.lop
Compiling src/Lib/Interpreter/switches.lap
Assembling src/Lib/Interpreter/switches.lop
Compiling src/Compiler/pass0.lap
Assembling src/Compiler/pass0.lop
Compiling src/Compiler/pass1.lap
Assembling src/Compiler/pass1.lop
Compiling src/Compiler/pass1.aux.lap
Assembling src/Compiler/pass1.aux.lop
Compiling src/Compiler/pass2.aux.lap
Assembling src/Compiler/pass2.aux.lop
Compiling src/Compiler/prefs.lap
Assembling src/Compiler/prefs.lop
Compiling src/Compiler/syntaxenv.lap
Assembling src/Compiler/syntaxenv.lop
Compiling src/Compiler/syntaxrules2.lap
Assembling src/Compiler/syntaxrules2.lop
Compiling src/Compiler/syntaxrules.lap
Assembling src/Compiler/syntaxrules.lop
Compiling src/Compiler/lowlevel.lap
Assembling src/Compiler/lowlevel.lop
Compiling src/Compiler/expand.lap
Assembling src/Compiler/expand.lop
Compiling src/Compiler/usual.lap
Assembling src/Compiler/usual.lop
Compiling src/Lib/Interpreter/macro-expand.lap
Assembling src/Lib/Interpreter/macro-expand.lop
Dumping sasstrap.heap
Loading src/Lib/Common/malcode.lop
Loading src/Lib/Common/typetags.lop
Loading src/Lib/Common/syscall-id.lop
Loading src/Lib/Common/sys-unix.lop
Loading src/Lib/Common/system-interface.lop
Loading src/Lib/Common/error0.lop
Loading src/Lib/Arch/IAssassin/primops.lop
Loading src/Lib/Common/sysparam.lop
Loading src/Lib/Common/struct.lop
Loading src/Lib/Common/command-line.lop
Loading src/Lib/Common/list.lop
Loading src/Lib/Common/vector.lop
Loading src/Lib/Common/bytevector.lop
Loading src/Lib/Common/string.lop
Loading src/Lib/Common/control.lop
Loading src/Lib/Common/hash.lop
Loading src/Lib/Common/preds.lop
Loading src/Lib/Common/oblist.lop
Loading src/Lib/Common/mcode.lop
Loading src/Lib/Common/memstats.lop
Loading src/Lib/Common/record.lop
Loading src/Lib/Common/condition.lop
Loading src/Lib/Common/ecodes.lop
Loading src/Lib/Common/ehandler.lop
Loading src/Lib/Common/error.lop
Loading src/Lib/Common/raise.lop
Loading src/Lib/Common/timer.lop
Loading src/Lib/Common/exit.lop
Loading src/Lib/Common/dump.lop
Loading src/Lib/Common/secret.lop
Loading src/Lib/Common/hashtable.lop
Loading src/Lib/Common/enum.lop
Loading src/Lib/Common/unicode0.lop
Loading src/Lib/Common/unicode1.lop
Loading src/Lib/Common/unicode2.lop
Loading src/Lib/Common/unicode3.lop
Loading src/Lib/Common/unicode4.lop
Loading src/Lib/Common/require.lop
Loading src/Lib/Common/iosys.lop
Loading src/Lib/Common/fileio.lop
Loading src/Lib/Common/conio.lop
Loading src/Lib/Common/bytevectorio.lop
Loading src/Lib/Common/stringio.lop
Loading src/Lib/Common/customio.lop
Loading src/Lib/Common/utf16.lop
Loading src/Lib/Common/portio.lop
Loading src/Lib/Common/stdio.lop
Loading src/Lib/Common/print.lop
Loading src/Lib/Common/ioboot.lop
Loading src/Lib/Common/format.lop
Loading src/Lib/Common/sort.lop
Loading src/Lib/Common/number.lop
Loading src/Lib/Common/fx.lop
Loading src/Lib/Common/fl.lop
Loading src/Lib/Common/bitwise.lop
Loading src/Lib/Common/globals.lop
Loading src/Lib/Common/profile.lop
Loading src/Lib/Common/bignums-el.lop
Loading src/Lib/Common/bignums.lop
Loading src/Lib/Common/ratnums.lop
Loading src/Lib/Common/rectnums.lop
Loading src/Lib/Common/flonums-el.lop
Loading src/Lib/Common/flonums.lop
Loading src/Lib/Common/contag.lop
Loading src/Lib/Common/num2str.lop
Loading src/Lib/Common/belle.lop
Loading src/Lib/Common/str2num.lop
Loading src/Lib/Common/javadot-symbol.lop
Loading src/Lib/Common/javadot-syntax.lop
Loading src/Lib/Common/reader.lop
Loading src/Lib/Common/env.lop
Loading src/Lib/Common/procinfo.lop
Loading src/Lib/Common/load.lop
Loading src/Lib/Common/eval.lop
Loading src/Lib/Common/syshooks.lop
Loading src/Lib/Common/gcctl.lop
Loading src/Lib/Common/toplevel.lop
Loading src/Lib/Arch/IAssassin/toplevel-target.lop
Loading src/Lib/Arch/IAssassin/loadable.lop
Loading src/Lib/Common/go.lop
Loading src/Lib/Repl/main.lop
Loading src/Lib/Repl/reploop.lop
Loading src/Lib/Interpreter/interp.lop
Loading src/Lib/Interpreter/interp-prim.lop
Loading src/Lib/Interpreter/switches.lop
Loading src/Compiler/pass0.lop
Loading src/Compiler/pass1.lop
Loading src/Compiler/pass1.aux.lop
Loading src/Compiler/pass2.aux.lop
Loading src/Compiler/prefs.lop
Loading src/Compiler/syntaxenv.lop
Loading src/Compiler/syntaxrules2.lop
Loading src/Compiler/syntaxrules.lop
Loading src/Compiler/lowlevel.lop
Loading src/Compiler/expand.lop
Loading src/Compiler/usual.lop
Loading src/Lib/Interpreter/macro-expand.lop
Assembling final procedure
Creating final image in "sasstrap.heap"...
Loading...