[racket] Compiling Racket on Maemo 5

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Wed Jul 14 08:46:17 EDT 2010

Right --- this is the problem that Kevin was talking about when he
mentioned that the 3m build doesn't work. It's also what I was talking
about for `raco make' and `raco setup', because something like `raco
make' is used to build some Racket files that are used to build 3m.

Besides the changes that I mentioned before, we've upgraded libffi to
the latest version, so you might now be able to build without using
`--disable-foreign'. Either way, the latest code should work.

You can download and try the latest Racket sources from here:

  http://github.com/plt/racket/


At Wed, 14 Jul 2010 13:10:53 +0200, nitralime wrote:
> I get now the following errors:
> -------------------------------------------------------------------------------
> -------------
> .....
> .....
> make[3]: Entering directory `/home/user/tmp/plt-5.0/src/build/racket/gc2'
> mkdir xsrc
> make xsrc/precomp.h
> make[4]: Entering directory `/home/user/tmp/plt-5.0/src/build/racket/gc2'
> env XFORM_PRECOMP=yes ../racketcgc -cqu ../../../racket/gc2/xform.rkt 
> --setup . --cpp "gcc -E -I./.. -I../../../racket/gc2/../include 
> -DNEWGC_BTC_ACCOUNT  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
> -DDONT_USE_FOREIGN "  --keep-lines -o xsrc/precomp.h 
> ../../../racket/gc2/precomp.c
> Copying tree...
> /home/user/tmp/plt-5.0/collects/ffi/unsafe.rkt:17:56: rename-out: no 
> binding for identifier at: _scheme in: (rename-out (_scheme _racket))
> 
>   === context ===
> /home/user/tmp/plt-5.0/collects/racket/private/reqprov.rkt:741:25
> /home/user/tmp/plt-5.0/collects/racket/private/reqprov.rkt:740:18
> /home/user/tmp/plt-5.0/collects/racket/private/reqprov.rkt:725:5
> /home/user/tmp/plt-5.0/collects/racket/provide-transform.rkt:51:2: 
> expand-export
> /home/user/tmp/plt-5.0/collects/racket/private/reqprov.rkt:605:17: 
> transform-simple
> /home/user/tmp/plt-5.0/collects/racket/private/reqprov.rkt:601:2
> 
> make[4]: *** [xsrc/precomp.h] Error 1
> make[4]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket/gc2'
> make[3]: *** [all] Error 2
> make[3]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket/gc2'
> make[2]: *** [3m] Error 2
> make[2]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket'
> make[1]: *** [3m] Error 2
> make[1]: Leaving directory `/home/user/tmp/plt-5.0/src/build'
> make: *** [all] Error 2
> -------------------------------------------------------------------------------
> -------------
> 
> Regards
> Nik
> 
> 
> On 07/13/2010 06:19 PM, Kevin Tew wrote:
> > Ok I tried compiling with your configure line myself.
> > I had to make an additional change to get racket/racketcgc to build.
> >
> > the 3m  variant still doesn't build do to more reliance on the ffi 
> > during xform.
> > setup is also going to try to use the ffi.
> >
> > We have added additional dependencies on the ffi (foreign function 
> > interface) and need to decide if we are going to support building 
> > without it.
> > My guess is that is possible but will require some engineering effort.
> >
> > Kevin
> >
> > diff --git a/src/racket/src/env.c b/src/racket/src/env.c
> > index b1c0a8d..68b634b 100644
> > --- a/src/racket/src/env.c
> > +++ b/src/racket/src/env.c
> > @@ -501,7 +501,9 @@ static Scheme_Env *place_instance_init(void 
> > *stack_base, int initial_main_os_thr
> >    scheme_init_gmp_places();
> >    scheme_alloc_global_fdset();
> >    scheme_init_file_places();
> > +#ifndef DONT_USE_FOREIGN
> >    scheme_init_foreign_places();
> > +#endif
> >
> >    env = scheme_make_empty_env();
> >    scheme_set_param(scheme_current_config(), MZCONFIG_ENV, 
> > (Scheme_Object *)env);
> > diff --git a/src/racket/src/thread.c b/src/racket/src/thread.c
> > index 7329d58..3d2c4fb 100644
> > --- a/src/racket/src/thread.c
> > +++ b/src/racket/src/thread.c
> > @@ -4159,7 +4159,7 @@ void scheme_thread_block(float sleep_time)
> >  #ifdef MZ_USE_FUTURES
> >    scheme_check_future_work();
> >  #endif
> > -#ifdef MZ_USE_MZRT
> > +#if defined(MZ_USE_MZRT) && !defined(DONT_USE_FOREIGN)
> >    scheme_check_foreign_work();
> >  #endif
> >
> >
> >
> > On 07/13/2010 10:03 AM, Kevin Tew wrote:
> >> Try this patch, if it works for you.  I'll commit it
> >>
> >> Kevin
> >>
> >> diff --git a/src/racket/src/env.c b/src/racket/src/env.c
> >> index b1c0a8d..68b634b 100644
> >> --- a/src/racket/src/env.c
> >> +++ b/src/racket/src/env.c
> >> @@ -501,7 +501,9 @@ static Scheme_Env *place_instance_init(void 
> >> *stack_base, int initial_main_os_thr
> >>    scheme_init_gmp_places();
> >>    scheme_alloc_global_fdset();
> >>    scheme_init_file_places();
> >> +#ifndef DONT_USE_FOREIGN
> >>    scheme_init_foreign_places();
> >> +#endif
> >>
> >>    env = scheme_make_empty_env();
> >>    scheme_set_param(scheme_current_config(), MZCONFIG_ENV, 
> >> (Scheme_Object *)env);
> >>
> >> On 07/13/2010 09:25 AM, nitralime wrote:
> >>> Hi folks!
> >>>
> >>> I have tried to compile Racket on Maemo 5 (<--> Nokia N900).
> >>> Following the usual configure and make schema I have proceeded
> >>> as follows:
> >>>
> >>> # cd plt-5.0/src/build
> >>> # ../configure  --prefix=/home/user/local/racket-5.0 --without-x 
> >>> --disable-gracket --disable-foreign
> >>> # make
> >>> ...
> >>> ...
> >>> a - src/unwind.o
> >>> a - src/vector.o
> >>> ranlib libracket.a
> >>> make[5]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket'
> >>> make[4]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket'
> >>> make racketcgc
> >>> make[4]: Entering directory `/home/user/tmp/plt-5.0/src/build/racket'
> >>> gcc -I. -I../../racket/include -g -O2  -Wall     -D_LARGEFILE_SOURCE 
> >>> -D_FILE_OFFSET_BITS=64 -DDONT_USE_FOREIGN 
> >>> -DINITIAL_COLLECTS_DIRECTORY='"'"`cd ../../racket/../../collects; 
> >>> pwd`"'"' -c ../../racket/main.c -o main.o
> >>> gcc -o racketcgc main.o  libracket.a libmzgc.a  -ldl -lm  -ldl -lm 
> >>> -rdynamic
> >>> libracket.a(env.o): In function `place_instance_init':
> >>> /home/user/tmp/plt-5.0/src/build/racket/src/../../../racket/src/env.c:500: 
> >>> undefined reference to `scheme_init_foreign_places'
> >>> collect2: ld returned 1 exit status
> >>> make[4]: *** [racketcgc] Error 1
> >>> make[4]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket'
> >>> make[3]: *** [cgc] Error 2
> >>> make[3]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket'
> >>> make[2]: *** [3m] Error 2
> >>> make[2]: Leaving directory `/home/user/tmp/plt-5.0/src/build/racket'
> >>> make[1]: *** [3m] Error 2
> >>> make[1]: Leaving directory `/home/user/tmp/plt-5.0/src/build'
> >>> make: *** [all] Error
> >>>
> >>> Any idea how this problem can be resolved!
> >>>
> >>> Regards
> >>> Nik
> >>>
> >>>
> >>> _________________________________________________
> >>>    For list-related administrative tasks:
> >>>    http://lists.racket-lang.org/listinfo/users
> >>
> >>
> >> _________________________________________________
> >>    For list-related administrative tasks:
> >>    http://lists.racket-lang.org/listinfo/users
> >
> 
> _________________________________________________
>   For list-related administrative tasks:
>   http://lists.racket-lang.org/listinfo/users


Posted on the users mailing list.