Or better yet just use LIBC directly instead :)
So ffi_lib FFI::Platform::LIBC
I'll add this as a comment to BUILDR-348
Pepijn
On 1/3/2010 18:05, Pepijn Van Eeckhoudt wrote:
Aha, that confirms what I suspected. I was about to check the JRuby
source code, so thanks for saving me some digging :)
Adding
ffi_lib "c"
before the attach_function does the trick. map_library_name maps this
to Platform::LIBC and then the attach works correctly.
Pepijn
On 1/3/2010 17:50, Antoine Toulme wrote:
See my comment on BUILDR-348.
On Mon, Mar 1, 2010 at 08:49, Pepijn Van Eeckhoudt<
[email protected]> wrote:
Just tested that; nothing happens. I don't see the vim output and
jirb is
no longer responding to input.
Pepijn
On 1/3/2010 17:37, Alex Boisvert wrote:
They may have fixed system() such that using FFI directly wouldn't be
necessary anymore. A simple test such as "system 'vim'" from jirb on
Windows would confirm.
alex
On Mon, Mar 1, 2010 at 8:16 AM, Antoine Toulme<[email protected]
wrote:
I can contact the jruby folks and see if a jruby update would help
- JFFI
is
now 1.0 btw, while it was 0.4 in 1.4.0.
On Mon, Mar 1, 2010 at 08:12, Alex Boisvert<[email protected]>
wrote:
On Mon, Mar 1, 2010 at 3:00 AM, Pepijn Van Eeckhoudt<
[email protected]> wrote:
It would be nice if BUILDR-348 could be resolved for 1.4.0. We are
planning
on using buildr as internally running on jruby 1.4. Right now this
issue
means I will either have to maintain a custom buildr build or have
every
developer patch the buildr installation by hand.
Any idea on the root cause of this problem? Does commenting out
that
one
line have any other side effects?
The issue is that JRuby use{s,d} the JVM's System.exec() call to
spawn
external processes, which isn't 100% equivalent to Unix system()
call.
For
instance, if you spawned a process like 'vim' or a language shell
like
'scala' or 'irb', then you wouldn't be able to interact with the
sub-process
correctly due to incomplete redirection of all terminal
capabilities.
To solve this, we override the system() call to circumvent the
JRuby's
system call and directly call the native system() using FFI.
I don't know what's the state of things on JRuby 1.4.0 + Windows but
some
internals seem to have changed which is why we're getting the error
described in BUILDR-348. Somebody needs to investigate what
works/doesn't
work on Windows -- the workaround I provided on BUILDR-348 simply
reverts
to
using the standard system() implementation, which works for most
things
but
not shelling out to interactive apps.
alex
--
Pepijn Van Eeckhoudt - Project Leader
T +32 16 23 95 91
F +32 16 29 34 22 | [email protected]
LUCIAD - high performance visualization
Wetenschapspark Arenberg | Gaston Geenslaan 9
3001 Leuven | Belgium | www.luciad.com
--
Pepijn Van Eeckhoudt - Project Leader
T +32 16 23 95 91
F +32 16 29 34 22 | [email protected]
LUCIAD - high performance visualization
Wetenschapspark Arenberg | Gaston Geenslaan 9
3001 Leuven | Belgium | www.luciad.com