[racket] Compiling Racket on Maemo 5

From: nitralime (nitralime at googlemail.com)
Date: Wed Jul 14 07:10:53 EDT 2010

Hi!

I have applied the changes that you pointed out in your posting to env.c 
and thread.c
with a minor modification of changes in thread.c (MZRT replaced by 
FUTURES!):

-#ifdef MZ_USE_FUTURES
+#if defined(MZ_USE_FUTURES) && !defined(DONT_USE_FOREIGN)

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
>

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

Posted on the users mailing list.