[racket] Compiling Racket on Maemo 5

From: nitralime (nitralime at googlemail.com)
Date: Wed Jul 14 12:35:58 EDT 2010

  The latest Racket sources didn't work as you see below:
--------------------------------------------------------------------------------
# cd build
#../configure --prefix=/home/user/local/racket-5.0 --with-x=no 
--disable-gracket
# make
...
...
a - backgraph.o
a - win32_threads.o
a - thread_local_alloc.o
a - openbsd_stop_world.o
a - dyn_load.o
ranlib ../libmzgc.a
make[6]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/racket/gc'
make[5]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/racket'
make foreign-stuff
make[5]: Entering directory 
`/home/user/tmp/plt-racket-a530109/src/build/racket'
cd ../foreign; make all
make[6]: Entering directory 
`/home/user/tmp/plt-racket-a530109/src/build/foreign'
make foreign.o
make[7]: Entering directory 
`/home/user/tmp/plt-racket-a530109/src/build/foreign'
gcc -g -O2  -Wall     -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
-I./../racket -I../../foreign/../racket/include 
-I../../foreign/../racket/src -Ilibffi/include -c 
../../foreign/foreign.c -o foreign.o
make[7]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/foreign'
make libffi/libffi.la
make[7]: Entering directory 
`/home/user/tmp/plt-racket-a530109/src/build/foreign'
cd libffi; make libffi.la
make[8]: Entering directory 
`/home/user/tmp/plt-racket-a530109/src/build/foreign/libffi'
/bin/bash: line 1: ../../../foreign/libffi/install-sh: Permission denied
make[8]: *** [src/.dirstamp] Error 126
make[8]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/foreign/libffi'
make[7]: *** [libffi/libffi.la] Error 2
make[7]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/foreign'
make[6]: *** [all] Error 2
make[6]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/foreign'
make[5]: *** [foreign-stuff] Error 2
make[5]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/racket'
make[4]: *** [common] Error 2
make[4]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/racket'
make[3]: *** [cgc] Error 2
make[3]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/racket'
make[2]: *** [3m] Error 2
make[2]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/racket'
make[1]: *** [3m] Error 2
make[1]: Leaving directory `/home/user/tmp/plt-racket-a530109/src/build'
make: *** [all] Error 2
--------------------------------------------------------------------------------

I seems that my work around, i.e. replacing /*libffi*/ source tree by 
its /*patched version
from Debian repository*/, is more promising:-) It is available for the 
following architectures:
alpha, amd64, /*armel*/ (<--> /*Maemo5*/), avr32, hppa, hurd-i386, i386, 
ia64,
kfreebsd-amd64, kfreebsd-i386, m68k, mips, mipsel, powerpc, s390, sparc.


Using the option --disable-foreign the compilation ran up to this point:
-------------------------------------------------------------------------------
# cd build
#../configure --prefix=/home/user/local/racket-5.0 --with-x=no 
--disable-gracket --disable-foreign
# make
...
...
a - string.o
a - struct.o
a - stxobj.o
a - symbol.o
a - syntax.o
a - thread.o
a - type.o
a - vector.o
a - foreign.o
a - ../src/gmp.o
a - ../src/unwind.o
ranlib ../libracket3m.a
ranlib: '../libracket3m.a': No such file
make[4]: *** [../libracket3m.a] Error 1
make[4]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/racket/gc2'
make[3]: *** [all] Error 2
make[3]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/racket/gc2'
make[2]: *** [3m] Error 2
make[2]: Leaving directory 
`/home/user/tmp/plt-racket-a530109/src/build/racket'
make[1]: *** [3m] Error 2
make[1]: Leaving directory `/home/user/tmp/plt-racket-a530109/src/build'
make: *** [all] Error 2
-------------------------------------------------------------------------------

Regards
Nik


On 07/14/2010 02:46 PM, Matthew Flatt wrote:
> 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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20100714/9f9bf864/attachment.html>

Posted on the users mailing list.