Thibaut Barrère
2009-Mar-04 11:37 UTC
[Ironruby-core] A few things about system and IO.popen - what''s the current status ?
Hi, sorry if it''s a know fact - I could not find the info easily. I hope this will be useful. On Windows, system() seems to work partially, is it normal ? The following works:>>> system("echo hello")hello => true the following doesn''t seem to (although svn is in the path):>>> system("svn")=> false>>> system("svn.exe")=> false Still on Windows, it seems that IO.popen crashes (I had a quick look at IoOps.cs to see if it was implemented):>>> IO.popen("svn.exe") do |io| puts io.read end:0:in `popen'': La r?f?rence d''objet n''est pas d?finie ? une instance d''un objet. (System::NullReferenceException) from :0:in `popen'' from :0 I ran the same stuff on Mono and got: IronRuby 1.0.0.0 on Mono 2.4 Copyright (c) Microsoft Corporation. All rights reserved.>>> system("blah")IronRuby.Libraries:0:in `ExecuteProcessAndWait'': No such file or directory (Errno::ENOENT) from IronRuby.Libraries:0:in `ExecuteCommandInShell'' from :0:in `system''>>> system("svn")=> nil>>> system("svn > svninfo.txt")=> nil>>> exitFinally, running IO.popen on Mono gives the same output as Windows: IronRuby 1.0.0.0 on Mono 2.4 Copyright (c) Microsoft Corporation. All rights reserved.>>> IO.popen("svn.exe") { |io| puts io.read }:0:in `popen'': Object reference not set to an instance of an object (System::NullReferenceException) from :0:in `popen'' So my question is: what''s the current status on system and IO.popen ? Is it supposed to work and is it a regression, or is it not fully implemented ? I may be able to help at some point here (either by providing patches or testing on Mono + Windows) if it''s not your top priority :) Given that I use Ruby to glue things together quite a lot, that would be useful to me. cheers, -- Thibaut -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20090304/8e26b442/attachment.html>
Tomas Matousek
2009-Mar-04 16:42 UTC
[Ironruby-core] A few things about system and IO.popen - what''s the current status ?
Implementations of both "system" and "popen" are not solid. Any help here is very much appreciated! Feel free to submit patches and also new specs for these methods. Let us know if you need some changes in runtime (IronRuby.dll) since this assembly is not open to contributions just yet (but we might be able to factor some stuff out to libraries or provide the necessary functionality needed in core). BTW, our tag file for Kernel#system contains this suppressions: fails:Kernel#system can run basic things that exist fails:Kernel#system returns false when it can''t fails:Kernel#system does not write to stderr when it can''t find a command fails:Kernel#system uses /bin/sh if freaky shit is in the command fails:Kernel#system is a private method fails:Kernel#system expands shell variables when given a single string argument fails:Kernel#system does not expand shell variables when given multiples arguments Tomas From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Thibaut Barr?re Sent: Wednesday, March 04, 2009 3:37 AM To: ironruby-core Subject: [Ironruby-core] A few things about system and IO.popen - what''s the current status ? Hi, sorry if it''s a know fact - I could not find the info easily. I hope this will be useful. On Windows, system() seems to work partially, is it normal ? The following works:>>> system("echo hello")hello => true the following doesn''t seem to (although svn is in the path):>>> system("svn")=> false>>> system("svn.exe")=> false Still on Windows, it seems that IO.popen crashes (I had a quick look at IoOps.cs to see if it was implemented):>>> IO.popen("svn.exe") do |io| puts io.read end:0:in `popen'': La r?f?rence d''objet n''est pas d?finie ? une instance d''un objet. (System::NullReferenceException) from :0:in `popen'' from :0 I ran the same stuff on Mono and got: IronRuby 1.0.0.0 on Mono 2.4 Copyright (c) Microsoft Corporation. All rights reserved.>>> system("blah")IronRuby.Libraries:0:in `ExecuteProcessAndWait'': No such file or directory (Errno::ENOENT) from IronRuby.Libraries:0:in `ExecuteCommandInShell'' from :0:in `system''>>> system("svn")=> nil>>> system("svn > svninfo.txt")=> nil>>> exitFinally, running IO.popen on Mono gives the same output as Windows: IronRuby 1.0.0.0 on Mono 2.4 Copyright (c) Microsoft Corporation. All rights reserved.>>> IO.popen("svn.exe") { |io| puts io.read }:0:in `popen'': Object reference not set to an instance of an object (System::NullReferenceException) from :0:in `popen'' So my question is: what''s the current status on system and IO.popen ? Is it supposed to work and is it a regression, or is it not fully implemented ? I may be able to help at some point here (either by providing patches or testing on Mono + Windows) if it''s not your top priority :) Given that I use Ruby to glue things together quite a lot, that would be useful to me. cheers, -- Thibaut -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20090304/1a49db42/attachment-0001.html>
Curt Hagenlocher
2009-Mar-04 16:54 UTC
[Ironruby-core] A few things about system and IO.popen - what''s the current status ?
I don''t know how the semantics differ from Ruby''s, but someone interested in doing this could probably adapt the IronPython source code. These functions should be in "nt.cs". :) From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Tomas Matousek Sent: Wednesday, March 04, 2009 8:42 AM To: ironruby-core at rubyforge.org Subject: Re: [Ironruby-core] A few things about system and IO.popen - what''s the current status ? Implementations of both "system" and "popen" are not solid. Any help here is very much appreciated! Feel free to submit patches and also new specs for these methods. Let us know if you need some changes in runtime (IronRuby.dll) since this assembly is not open to contributions just yet (but we might be able to factor some stuff out to libraries or provide the necessary functionality needed in core). BTW, our tag file for Kernel#system contains this suppressions: fails:Kernel#system can run basic things that exist fails:Kernel#system returns false when it can''t fails:Kernel#system does not write to stderr when it can''t find a command fails:Kernel#system uses /bin/sh if freaky shit is in the command fails:Kernel#system is a private method fails:Kernel#system expands shell variables when given a single string argument fails:Kernel#system does not expand shell variables when given multiples arguments Tomas From: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Thibaut Barr?re Sent: Wednesday, March 04, 2009 3:37 AM To: ironruby-core Subject: [Ironruby-core] A few things about system and IO.popen - what''s the current status ? Hi, sorry if it''s a know fact - I could not find the info easily. I hope this will be useful. On Windows, system() seems to work partially, is it normal ? The following works:>>> system("echo hello")hello => true the following doesn''t seem to (although svn is in the path):>>> system("svn")=> false>>> system("svn.exe")=> false Still on Windows, it seems that IO.popen crashes (I had a quick look at IoOps.cs to see if it was implemented):>>> IO.popen("svn.exe") do |io| puts io.read end:0:in `popen'': La r?f?rence d''objet n''est pas d?finie ? une instance d''un objet. (System::NullReferenceException) from :0:in `popen'' from :0 I ran the same stuff on Mono and got: IronRuby 1.0.0.0 on Mono 2.4 Copyright (c) Microsoft Corporation. All rights reserved.>>> system("blah")IronRuby.Libraries:0:in `ExecuteProcessAndWait'': No such file or directory (Errno::ENOENT) from IronRuby.Libraries:0:in `ExecuteCommandInShell'' from :0:in `system''>>> system("svn")=> nil>>> system("svn > svninfo.txt")=> nil>>> exitFinally, running IO.popen on Mono gives the same output as Windows: IronRuby 1.0.0.0 on Mono 2.4 Copyright (c) Microsoft Corporation. All rights reserved.>>> IO.popen("svn.exe") { |io| puts io.read }:0:in `popen'': Object reference not set to an instance of an object (System::NullReferenceException) from :0:in `popen'' So my question is: what''s the current status on system and IO.popen ? Is it supposed to work and is it a regression, or is it not fully implemented ? I may be able to help at some point here (either by providing patches or testing on Mono + Windows) if it''s not your top priority :) Given that I use Ruby to glue things together quite a lot, that would be useful to me. cheers, -- Thibaut -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20090304/be2e40ab/attachment.html>
Thibaut Barrère
2009-Mar-04 20:48 UTC
[Ironruby-core] A few things about system and IO.popen - what''s the current status ?
Hi, thanks for the pointers. I''ll first have to learn how to compile and launch the specs on my machine. If I manage to get something useful, I''ll report back. cheers, -- Thibaut On Wed, Mar 4, 2009 at 5:54 PM, Curt Hagenlocher <curth at microsoft.com> wrote:> I don?t know how the semantics differ from Ruby?s, but someone interested in > doing this could probably adapt the IronPython source code.? These functions > should be in ?nt.cs?. J > > > > From: ironruby-core-bounces at rubyforge.org > [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Tomas Matousek > Sent: Wednesday, March 04, 2009 8:42 AM > To: ironruby-core at rubyforge.org > Subject: Re: [Ironruby-core] A few things about system and IO.popen - what''s > the current status ? > > > > Implementations of both ?system? and ?popen? are not solid. Any help here is > very much appreciated! Feel free to submit patches and also new specs for > these methods. Let us know if you need some changes in runtime > (IronRuby.dll) since this assembly is not open to contributions just yet > (but we might be able to factor some stuff out to libraries or provide the > necessary functionality needed in core). > > > > BTW, our tag file for Kernel#system contains this suppressions: > > > > fails:Kernel#system can run basic things that exist > > fails:Kernel#system returns false when it can''t > > fails:Kernel#system does not write to stderr when it can''t find a command > > fails:Kernel#system uses /bin/sh if freaky shit is in the command > > fails:Kernel#system is a private method > > fails:Kernel#system expands shell variables when given a single string > argument > > fails:Kernel#system does not expand shell variables when given multiples > arguments > > > > Tomas > > > > From: ironruby-core-bounces at rubyforge.org > [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Thibaut Barr?re > Sent: Wednesday, March 04, 2009 3:37 AM > To: ironruby-core > Subject: [Ironruby-core] A few things about system and IO.popen - what''s the > current status ? > > > > Hi, > > sorry if it''s a know fact - I could not find the info easily. I hope this > will be useful. > > On Windows, system() seems to work partially, is it normal ? The following > works: > >>>> system("echo hello") > hello > => true > > the following doesn''t seem to (although svn is in the path): > >>>> system("svn") > => false >>>> system("svn.exe") > => false > > Still on Windows, it seems that IO.popen crashes (I had a quick look at > IoOps.cs to see if it was implemented): > >>>> IO.popen("svn.exe") do |io| puts io.read end > :0:in `popen'': La r?f?rence d''objet n''est pas d?finie ? une instance d''un > objet. (System::NullReferenceException) > ? ? ? ?from :0:in `popen'' > ? ? ? ?from :0 > > > I ran the same stuff on Mono and got: > > IronRuby 1.0.0.0 on Mono 2.4 > Copyright (c) Microsoft Corporation. All rights reserved. > >>>> system("blah") > IronRuby.Libraries:0:in `ExecuteProcessAndWait'': No such file or directory > (Errno::ENOENT) > from IronRuby.Libraries:0:in `ExecuteCommandInShell'' > from :0:in `system'' > >>>> system("svn") > => nil >>>> system("svn > svninfo.txt") > => nil >>>> exit > > Finally, running IO.popen on Mono gives the same output as Windows: > > > > IronRuby 1.0.0.0 on Mono 2.4 > > Copyright (c) Microsoft Corporation. All rights reserved. > > > >>>> IO.popen("svn.exe") { |io| puts io.read } > > :0:in `popen'': Object reference not set to an instance of an object > (System::NullReferenceException) > > ???? from :0:in `popen'' > > > > > > So my question is: what''s the current status on system and IO.popen ? Is it > supposed to work and is it a regression, or is it not fully implemented ? > > > > I may be able to help at some point here (either by providing patches or > testing on Mono + Windows) if it''s not your top priority :) > > > > Given that I use Ruby to glue things together quite a lot, that would be > useful to me. > > > > cheers, > > > > -- Thibaut > > _______________________________________________ > Ironruby-core mailing list > Ironruby-core at rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core > >