John Clements wrote: >Debian is a slow-moving distribution, and it looks to me like the >version of libgtk in the stable version of Debian Lenny isn't new >enough for DrRacket. Here's what I get on startup:
On a related note, I just tried to compile DrRacket on a week-old OpenBSD 4.8-current and got the following error when starting drracket: ffi-lib: couldn't open "libcairo.so.2" (File not found) === context === /home/meunier/lang/plt/collects/racket/draw/unsafe/cairo.rkt: [running body] /home/meunier/lang/plt/collects/racket/draw/private/font.rkt: [traversing imports] /home/meunier/lang/plt/collects/racket/draw/private/post-script-dc.rkt: [traversing imports] /home/meunier/lang/plt/collects/racket/draw.rkt: [traversing imports] /home/meunier/lang/plt/collects/mred/private/kernel.rkt: [traversing imports] /home/meunier/lang/plt/collects/mred/private/const.rkt: [traversing imports] /home/meunier/lang/plt/collects/mred/private/check.rkt: [traversing imports] /home/meunier/lang/plt/collects/mred/mred.rkt: [traversing imports] /home/meunier/lang/plt/collects/mred/main.rkt: [traversing imports] /home/meunier/lang/plt/collects/scheme/gui/base.rkt: [traversing imports] /home/meunier/lang/plt/collects/scheme/gui.rkt: [traversing imports] /home/meunier/lang/plt/collects/racket/gui/init.rkt: [traversing imports] /home/meunier/lang/plt/collects/scheme/gui/init.rkt: [traversing imports] (the same error also shows up here and there during the setup phase of the build) I had to change a bunch of files in collects/racket/draw/unsafe to get it to work (see the attached diff). For reference, on OpenBSD the library versions are currently as follows: libcairo.so.11.0 libglib-2.0.so.2600.0 libgmodule-2.0.so.2600.0 libgobject-2.0.so.2600.0 libjpeg.so.64.0 libpango-1.0.so.1802.0 libpangocairo-1.0.so.1802.0 libpng.so.10.0 libgdk-x11-2.0.so.2200.0 libgdk_pixbuf-2.0.so.2200.0 libgtk-x11-2.0.so.2200.0 Just to make things more annoying, libcairo needs libpthread: $ nm /usr/local/lib/libcairo.so.11.0 | egrep -i pthread U pthread_mutex_destroy U pthread_mutex_init U pthread_mutex_lock U pthread_mutex_unlock U pthread_mutexattr_destroy U pthread_mutexattr_init U pthread_mutexattr_settype $ so I also had to change the define-runtime-lib macro from collects/racket/draw/private/libs.rkt so that the unix case of the macro accepts multiple libraries. I'm not sure that's the best way to go about adding libpthread though, and I'm definitely not sure that my simple change to collects/racket/draw/unsafe/cairo.rkt to add libpthread works on other platforms... For reference, the current version of libpthread on OpenBSD is libpthread.so.13.1. With theses changes I was able to run drracket, except that: - I got the following error at startup while the steep tool is being loaded: Error invoking tool #<path:/home/meunier/lang/plt/collects/stepper>;("stepper+xml-tool.ss") xml-box: bitmap scheme-box.jpg failed to load === context === /home/meunier/lang/plt/collects/drracket/private/tools-drs.rkt:96:0: invoke-drs-tool /home/meunier/lang/plt/collects/drracket/drracket.rkt: [running body] (I have no problem looking at the jpg file using xv or gimp) - at startup I also got a good half dozen popup windows with error messages about preference files. These were gray popup windows with a triangular red-white icon with a black question mark in it. I tried to use the "copy message" mouse menu of these popup windows but it didn't work. One popup window was different though (it seemed to use a text% editor rather than being just a basic frame with a gray background, and had a round red-white "no entry" icon) so I could copy from it the error message (which was similar to all the previous ones, and was also printed to the console): copy-file: read or write failed; cannot copy: /home/meunier/.racket/racket-prefs.rktd to: /home/meunier/.racket/TMPPREF12938920161293892016827 === context === /home/meunier/lang/plt/collects/racket/file.rkt:249:10 /home/meunier/lang/plt/collects/framework/splash.rkt:172:0: close-splash /home/meunier/lang/plt/collects/drracket/private/drracket-normal.rkt: [running body] /home/meunier/lang/plt/collects/drracket/drracket.rkt: [running body] internal error: wrong eventspace for constrained event handling /home/meunier/lang/plt/collects/mred/private/wx/common/freeze.rkt:9:0 internal-error /home/meunier/lang/plt/collects/mred/private/wx/common/freeze.rkt:36:0 constrained-reply /home/meunier/lang/plt/collects/mred/private/wx/gtk/queue.rkt:184:31 /home/meunier/lang/plt/collects/ffi/unsafe/try-atomic.rkt:32:0 call-as-nonatomic-retry-point /home/meunier/lang/plt/collects/mred/private/wx/common/queue.rkt:374:7 /home/meunier/lang/plt/collects/mred/private/wx/common/queue.rkt:409:32 internal error: wrong eventspace for constrained event handling /home/meunier/lang/plt/collects/mred/private/wx/common/freeze.rkt:9:0 internal-error /home/meunier/lang/plt/collects/mred/private/wx/common/freeze.rkt:36:0 constrained-reply /home/meunier/lang/plt/collects/mred/private/wx/common/queue.rkt:374:7 /home/meunier/lang/plt/collects/mred/private/wx/common/queue.rkt:409:32 - drracket then seemed to work fine, except that at the end I was left with the following files in $HOME/.racket: $ ls -l .racket total 8 drwx------ 3 meunier users 512 Jan 1 22:05 5.0.99.6 -rw------- 1 meunier users 0 Jan 1 23:25 TMPPREF12938919551293891955547 -rw------- 1 meunier users 0 Jan 1 23:25 TMPPREF12938919551293891955634 -rw------- 1 meunier users 0 Jan 1 23:26 TMPPREF12938919601293891960898 -rw------- 1 meunier users 0 Jan 1 23:26 TMPPREF12938919621293891962122 -rw------- 1 meunier users 0 Jan 1 23:26 TMPPREF12938919671293891967039 -rw------- 1 meunier users 0 Jan 1 23:26 TMPPREF12938920161293892016827 -rw------- 1 meunier users 0 Jan 1 23:28 TMPPREF12938920911293892091752 -rw------- 1 meunier users 389 Jan 1 23:28 racket-prefs.rktd $ cat .racket/racket-prefs.rktd ( (plt:framework-pref:framework:exit-when-no-frames #t) (plt:framework-pref:drracket:unit-window-width 600) (plt:framework-pref:drracket:unit-window-max? #f) (plt:framework-pref:drracket:logging-size-percentage 1/2) (plt:framework-pref:drracket:unit-window-size-percentage 1/2) (plt:framework-pref:drracket:frame:initial-position #f) (plt:framework-pref:framework:verify-exit #t) ) $ Philippe
diff --git a/collects/mred/private/wx/gtk/utils.rkt b/collects/mred/private/wx/gtk/utils.rkt index 069e4d4..7ce1cc8 100644 --- a/collects/mred/private/wx/gtk/utils.rkt +++ b/collects/mred/private/wx/gtk/utils.rkt @@ -56,19 +56,19 @@ (ffi-lib "libgio-2.0-0") (ffi-lib "libgdk_pixbuf-2.0-0") (ffi-lib "libgdk-win32-2.0-0")] - [else (ffi-lib "libgdk-x11-2.0" '("0"))])) + [else (ffi-lib "libgdk-x11-2.0")])) (define gdk_pixbuf-lib (case (system-type) [(windows) (ffi-lib "libgdk_pixbuf-2.0-0")] [(unix) - (ffi-lib "libgdk_pixbuf-2.0" '("0"))] + (ffi-lib "libgdk_pixbuf-2.0")] [else gdk-lib])) (define gtk-lib (case (system-type) [(windows) (ffi-lib "libgtk-win32-2.0-0")] - [else (ffi-lib "libgtk-x11-2.0" '("0"))])) + [else (ffi-lib "libgtk-x11-2.0")])) (define-ffi-definer define-gtk gtk-lib) (define-ffi-definer define-gdk gdk-lib) diff --git a/collects/racket/draw/private/libs.rkt b/collects/racket/draw/private/libs.rkt index 29adf9d..05becf6 100644 --- a/collects/racket/draw/private/libs.rkt +++ b/collects/racket/draw/private/libs.rkt @@ -36,7 +36,7 @@ (for/fold ([v #f]) ([lib (in-list libs)]) (ffi-lib lib)))))] [(_ lib-id - [(unix) unix-lib] + [(unix) (ffi-lib unix-lib) ...] [(macosx) (ffi-lib mac-lib) ...] [(win32) (ffi-lib win32-lib) ...] [(win64) (ffi-lib win64-lib) ...]) @@ -44,16 +44,14 @@ (define-runtime-path-list libs (case (system-type) [(macosx) '((so mac-lib) ...)] - [(unix) null] + [(unix) `((so unix-lib) ...)] [(windows) (if win64? `((so win64-lib) ...) `((so win32-lib) ...))])) (define lib-id - (if (null? libs) - unix-lib - (for/fold ([v #f]) ([lib (in-list libs)]) - (ffi-lib lib)))))])) + (for/fold ([v #f]) ([lib (in-list libs)]) + (ffi-lib lib))))])) diff --git a/collects/racket/draw/unsafe/cairo.rkt b/collects/racket/draw/unsafe/cairo.rkt index 4452bd5..149add0 100644 --- a/collects/racket/draw/unsafe/cairo.rkt +++ b/collects/racket/draw/unsafe/cairo.rkt @@ -7,7 +7,7 @@ "../private/utils.rkt") (define-runtime-lib cairo-lib - [(unix) (ffi-lib "libcairo" '("2"))] + [(unix) (ffi-lib "libpthread") (ffi-lib "libcairo")] [(macosx) (ffi-lib "libpixman-1.0.dylib") (ffi-lib "libpng14.14.dylib") diff --git a/collects/racket/draw/unsafe/glib.rkt b/collects/racket/draw/unsafe/glib.rkt index f38bdf5..91f0bd8 100644 --- a/collects/racket/draw/unsafe/glib.rkt +++ b/collects/racket/draw/unsafe/glib.rkt @@ -9,12 +9,12 @@ define-gobj)) (define-runtime-lib glib-lib - [(unix) (ffi-lib "libglib-2.0" '("0"))] + [(unix) (ffi-lib "libglib-2.0")] [(macosx) (ffi-lib "libglib-2.0.0")] [(windows) (ffi-lib "libglib-2.0-0.dll")]) (define-runtime-lib gmodule-lib - [(unix) (ffi-lib "libgmodule-2.0" '("0"))] + [(unix) (ffi-lib "libgmodule-2.0")] [(macosx) (ffi-lib "libgmodule-2.0.0.dylib")] [(win32) @@ -24,7 +24,7 @@ (ffi-lib "libgmodule-2.0-0.dll")]) (define-runtime-lib gobj-lib - [(unix) (ffi-lib "libgobject-2.0" '("0"))] + [(unix) (ffi-lib "libgobject-2.0")] [(macosx) (ffi-lib "libgobject-2.0.0")] [(windows) (ffi-lib "libgobject-2.0-0.dll")]) diff --git a/collects/racket/draw/unsafe/jpeg.rkt b/collects/racket/draw/unsafe/jpeg.rkt index 3b184e4..38ac07e 100644 --- a/collects/racket/draw/unsafe/jpeg.rkt +++ b/collects/racket/draw/unsafe/jpeg.rkt @@ -9,7 +9,7 @@ "../private/libs.rkt") (define-runtime-lib jpeg-lib - [(unix) (ffi-lib "libjpeg" '("62" ""))] + [(unix) (ffi-lib "libjpeg")] [(macosx) ;; for PPC, it's actually version 8! (ffi-lib "libjpeg.62.dylib")] @@ -21,7 +21,10 @@ (path->string (system-library-subpath #f))) 80 62)] - [(unix) 62] + [(unix) (if (string=? "i386-openbsd" + (path->string (system-library-subpath #f))) + 64 + 62)] [(windows) 70])) (define-ffi-definer define-jpeg jpeg-lib diff --git a/collects/racket/draw/unsafe/pango.rkt b/collects/racket/draw/unsafe/pango.rkt index 75ff685..4e76745 100644 --- a/collects/racket/draw/unsafe/pango.rkt +++ b/collects/racket/draw/unsafe/pango.rkt @@ -10,7 +10,7 @@ "../private/libs.rkt") (define-runtime-lib pango-lib - [(unix) (ffi-lib "libpango-1.0" '("0"))] + [(unix) (ffi-lib "libpango-1.0")] [(macosx) (ffi-lib "libintl.8.dylib") (ffi-lib "libpango-1.0.0.dylib")] @@ -24,7 +24,7 @@ (ffi-lib "libpangowin32-1.0-0.dll")]) (define-runtime-lib pangocairo-lib - [(unix) (ffi-lib "libpangocairo-1.0" '("0"))] + [(unix) (ffi-lib "libpangocairo-1.0")] [(macosx) (ffi-lib "libpangocairo-1.0.0.dylib")] [(win32) diff --git a/collects/racket/draw/unsafe/png.rkt b/collects/racket/draw/unsafe/png.rkt index 8d28e6d..5c8fcf6 100644 --- a/collects/racket/draw/unsafe/png.rkt +++ b/collects/racket/draw/unsafe/png.rkt @@ -12,6 +12,7 @@ [(unix) (case (string->symbol (path->string (system-library-subpath #f))) [(i386-freebsd) (ffi-lib "libpng")] + [(i386-openbsd) (ffi-lib "libpng")] [else (ffi-lib "libpng12" '("0" ""))])] [(macosx) (ffi-lib "libpng14.14.dylib")]
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev