Summary
Dev snapshots not built correctly through bootstrap compiler
Metadata
- Id: bb0ff1acb1ea28c3070856ff75c7854528fb1a0b
- Trac id: 520
- Type: defect
- Reporter: iraikov
- Owner:
- Cc:
- Status: closed
- Component: compiler
- Estimated difficulty:
- Resolution: worksforme
- Priority: major
- Milestone:
- Version: 4.6.x
- Changetime: 2011-04-11 08:50:00 UTC
- Created: 2011-03-08 11:58:04 UTC
- Keywords: srfi-13
Description
The silex egg compiles fine with Chicken 4.6.5, but upon attempting to use it, the following error occurs:
(use silex) csi: symbol lookup error: /Users/ivan/bin/chicken/lib/chicken/6/silex.so: undefined symbol: C_srfi_2d13_toplevel
silex works with Chicken 4.6.0, so I am guessing this is an issue with the compiler.
Changes and comments
[2011-03-08 12:07:26 UTC] sjamaan changed status from new to closed
[2011-03-08 12:07:26 UTC] sjamaan set resolution to invalid
[2011-03-08 12:07:26 UTC] sjamaan wrote:
This is a known problem if you've built Chicken using an older Chicken; the toplevel C function naming convention has changed, and the new chicken is expecting the function in the new convention, but you've compiled srfi-13 with the old chicken, which generated it using the old convention.
You can either build your Chicken one more time using the *new* Chicken, or use the bootstrap process described in the README.
[2011-03-08 12:09:46 UTC] sjamaan wrote:
See also #467, #463 and #461
[2011-03-08 12:13:32 UTC] iraikov wrote:
Ok, does this mean that the development snapshot script needs to be changed so that it bootstraps the build properly?
[2011-03-08 12:18:51 UTC] sjamaan wrote:
I believe it already does this properly. How did you build your Chicken, and your eggs?
[2011-03-08 12:22:19 UTC] iraikov wrote:
I thought so too. I simply downloaded the development snapshot tarball from the website, and built it with `make PLATFORM=linux PREFIX=$HOME/bin/chicken'.
Then $HOME/bin/chicken/bin/chicken-install silex, as usual.
I just double checked to make sure I don't have some old Chicken lying around, but I can indeed confirm that I have removed all old copies of Chicken prior to the steps above.
[2011-03-08 12:39:55 UTC] sjamaan wrote:
hm, that sounds serious. I'll ask Mario to have a look at this.
[2011-03-08 12:39:55 UTC] sjamaan changed status from closed to reopened
[2011-03-08 12:39:55 UTC] sjamaan removed resolution invalid
[2011-03-08 12:39:55 UTC] sjamaan changed summary
[2011-03-09 15:03:50 UTC] mario wrote:
Hi,
Unfortunately I cannot reproduce the problem here.
Here's what I did:
* downloaded http://code.call-cc.org/dev-snapshots/2011/02/09/chicken-4.6.5.tar.gz
* built it with {{make PLATFORM=linux PREFIX=/home/mario/chicken-4.6.5 install}} (no {{csi}}, {{chicken}}, {{csc}} nor {{chicken-install}} in {{PATH}}; no {{libchicken.*}} in {{/usr/lib}} nor {{/usr/local/lib}}).
* installed silex using {{/home/mario/chicken-4.6.5/bin/chicken-install silex}}
* tried it with {{(use silex)}}:
$ /home/mario/chicken-4.6.5/bin/csi -n
CHICKEN
(c)2008-2011 The Chicken Team
(c)2000-2007 Felix L. Winkelmann
Version 4.6.5
linux-unix-gnu-x86 [ manyargs dload ptables ]
compiled 2011-03-09 on mario (Linux)
#;1> (use silex)
; loading /home/mario/chicken-4.6.5/lib/chicken/6/silex.import.so ...
; loading /home/mario/chicken-4.6.5/lib/chicken/6/scheme.import.so ...
; loading /home/mario/chicken-4.6.5/lib/chicken/6/srfi-13.import.so ...
; loading /home/mario/chicken-4.6.5/lib/chicken/6/silex.so ...
#;2>
No error.
Are those steps correct?
Can anybody else reproduce the problem?
Regarding to the dev-snapshots tarballs, the script which generates the tarballs (release/dev-snapshot.sh, from the chicken-infrastructure repo) performs the bootstrap step and generates the C files using the compiler generated by the bootstrap process. Here's the relevant snippet from the script:
### generate the source snapshot cd $tmpdir/chicken-core touch *.scm make PLATFORM=linux CHICKEN=$chicken boot-chicken touch *.scm make PLATFORM=linux CHICKEN=./chicken-boot spotless all $csi -s scripts/makedist.scm PLATFORM=linux CHICKEN=./chicken-boot
[2011-03-09 15:09:00 UTC] mario wrote:
Here's the ldd output for silex.so:
$ ldd /home/mario/chicken-4.6.5/lib/chicken/6/silex.so
linux-gate.so.1 => (0xb7f7a000)
libchicken.so.6 => /home/mario/chicken-4.6.5/lib/libchicken.so.6 (0xb7bc7000)
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb7b89000)
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7b84000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7a29000)
/lib/ld-linux.so.2 (0xb7f7b000)
[2011-03-10 02:08:53 UTC] iraikov wrote:
The steps are correct, thanks for trying to reproduce this. I will try it myself again tonight, maybe somehow I clobbered or regenerated the tarball improperly.
Replying to mario: > Hi, > > Unfortunately I cannot reproduce the problem here.
[2011-03-31 11:36:11 UTC] felix removed milestone 4.7.0
[2011-04-11 08:50:00 UTC] iraikov changed status from reopened to closed
[2011-04-11 08:50:00 UTC] iraikov set resolution to worksforme
[2011-04-11 08:50:00 UTC] iraikov wrote:
The 4.6.7 snapshot works for me.