Re: Anyone interested in implementing Etc module for Mono?

No conversion for Fixnums is needed (Fixnums are ints). Arrays are
harder. I would take a look at clr_ext in
merlin/main/languages/ruby/samples. Inside that file is a to_clr_array
method

JD


From: Ryan R. [email protected]
Sent: Saturday, April 03, 2010 12:13 AM
To: [email protected] [email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

Where is documentation on converting between CLR and Ruby types? I can
get RubyStrings, but what about Fixnum and Array?

Thanks,

Ryan R.

Sure!
Mono::Unix::Native::Passwdhttp://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Passwdand
Mono::Unix::Native::Grouphttp://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Groupthat
are returned from the
Mono::Unix::Native::Syscallhttp://www.go-mono.com/docs/index.aspx?link=M:Mono.Posix.Syscall.getusername(System.Int32functions
have UInt32, System.String, and System.String[]. System.String is
no biggie, and I’m finding .to_i on a System.UInt32 is still displayed
as
System.UInt32, so I suppose that’s not an issue, either. MRI displays
Fixnum
as the type, and I was trying to get the correct types back from the
functions. That leaves MRI’s Array to Mono’s System.String[].

My current implementation is just a Ruby module wrapping calls to the
Mono
functions and returning the appropriate types. Most of it is working,
though
without being able to run tests easily, I’m testing from the command
line. I
still need to add conditionals to return nil if it’s run on Windows. I
suppose I also need to conditionally load the Mono.Posix.dll if it’s on
Windows, too.

I’m about to finish the basic implementation and post to
githubhttp://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb.
(I’ve
already got what I finished last night up there.) I also asked Shri for
a
pairing session to make sure it’s inline with what you’re wanting.

Cheers,

Ryan R.

Email: [email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/

On Sat, Apr 3, 2010 at 11:25 AM, Tomas M. <

Does a clr_array map to a Ruby Array?

Ryan R.

Can you give an example of where you need the conversions?

Tomas

From: [email protected]
[mailto:[email protected]] On Behalf Of Jim D.
Sent: Saturday, April 03, 2010 11:00 AM
To: [email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

No conversion for Fixnums is needed (Fixnums are ints). Arrays are
harder. I would take a look at clr_ext in
merlin/main/languages/ruby/samples. Inside that file is a to_clr_array
method

JD


From: Ryan R. [email protected]
Sent: Saturday, April 03, 2010 12:13 AM
To: [email protected] [email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?
Where is documentation on converting between CLR and Ruby types? I can
get RubyStrings, but what about Fixnum and Array?

Thanks,

Ryan R.

I’ve posted an initial “complete” implementation, though I have only
done
basic testing. I have a couple of TODO’s remaining and some cleanup, as
well
as writing actual specs. I still don’t have tests running. You can find
the
module here:
http://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb

http://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rbNot
the prettiest thing in the world, but I just wanted to get it working. I
definitely still have work to do.

Cheers,

Ryan R.

Email: [email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/

Nice work.

A few suggestions:

  •      You can move the file to 
    

C:\M0\Merlin\Main\Languages\Ruby\Libs.

  •      Use System::Environment:: 
    

System::Environment.OSVersion.Platform to detect the OS (see e.g.
Win32API.rb in Libs).

  •      Rather than check for the platform in every method it might 
    

be better to define the methods differently on Windows. Something like:

module Etc
platform = System::PlatformID
case System::Environment.OSVersion.Platform
when platform.Win32S, platform.WinCE, platform.Win32Windows,
platform.Win32NT:

def self.endgrent; end

def self.endpwent; end
def self.getgrent; end
…
else

load_assembly ‘Mono.Posix’

def self.endgrent

Mono::Unix::Native::Syscall.endgrent

end

def self.endpwent

Mono::Unix::Native::Syscall.endpwent

end

def self.getgrent

to_group(Mono::Unix::Native::Syscall.getgrent)

end

…
end
end

From: [email protected]
[mailto:[email protected]] On Behalf Of Ryan R.
Sent: Saturday, April 03, 2010 3:59 PM
To: [email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

I’ve posted an initial “complete” implementation, though I have only
done basic testing. I have a couple of TODO’s remaining and some
cleanup, as well as writing actual specs. I still don’t have tests
running. You can find the module here:
http://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb

Not the prettiest thing in the world, but I just wanted to get it
working. I definitely still have work to do.

Cheers,

Ryan R.

Email: [email protected]mailto:[email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/

On Sat, Apr 3, 2010 at 2:30 PM, Ryan R.
<[email protected]mailto:[email protected]> wrote:
Sure!
Mono::Unix::Native::Passwdhttp://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Passwd
and
Mono::Unix::Native::Grouphttp://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Group
that are returned from the
Mono::Unix::Native::Syscallhttp://www.go-mono.com/docs/index.aspx?link=M:Mono.Posix.Syscall.getusername(System.Int32
functions have UInt32, System.String, and System.String[]. System.String
is no biggie, and I’m finding .to_i on a System.UInt32 is still
displayed as System.UInt32, so I suppose that’s not an issue, either.
MRI displays Fixnum as the type, and I was trying to get the correct
types back from the functions. That leaves MRI’s Array to Mono’s
System.String[].

My current implementation is just a Ruby module wrapping calls to the
Mono functions and returning the appropriate types. Most of it is
working, though without being able to run tests easily, I’m testing from
the command line. I still need to add conditionals to return nil if it’s
run on Windows. I suppose I also need to conditionally load the
Mono.Posix.dll if it’s on Windows, too.

I’m about to finish the basic implementation and post to
githubhttp://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb.
(I’ve already got what I finished last night up there.) I also asked
Shri for a pairing session to make sure it’s inline with what you’re
wanting.

Cheers,

Ryan R.

Email: [email protected]mailto:[email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/

On Sat, Apr 3, 2010 at 11:25 AM, Tomas M.
<[email protected]mailto:[email protected]>
wrote:
Can you give an example of where you need the conversions?

Tomas

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Jim D.
Sent: Saturday, April 03, 2010 11:00 AM

To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

No conversion for Fixnums is needed (Fixnums are ints). Arrays are
harder. I would take a look at clr_ext in
merlin/main/languages/ruby/samples. Inside that file is a to_clr_array
method

JD


From: Ryan R.
<[email protected]mailto:[email protected]>
Sent: Saturday, April 03, 2010 12:13 AM
To: [email protected]mailto:[email protected]
<[email protected]mailto:[email protected]>
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?
Where is documentation on converting between CLR and Ruby types? I can
get RubyStrings, but what about Fixnum and Array?

Thanks,

Ryan R.


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core

I was hoping for just such pointers, thanks! I will try to get this
updated tonight.

Ryan

Sent from my iPhone

On Apr 3, 2010, at 4:43 PM, Tomas M.

Quick question: The etc.rb in Libs is a class, but the implementation in
the
Ruby Standard Library appears to be a module. Should I keep the class or
use
the module?

Ryan R.

On Sat, Apr 3, 2010 at 4:43 PM, Tomas M.
<[email protected]

Nm … I just made the changes and committed to my linux branch. I’ll
work
on tests, rebasing, etc. tonight.

http://github.com/panesofglass/ironruby/blob/linux/Merlin/Main/Languages/Ruby/Libs/etc.rb

Cheers,

Ryan R.

That is a bug. Make it a module.

Tomas

From: [email protected]
[mailto:[email protected]] On Behalf Of Ryan R.
Sent: Saturday, April 03, 2010 5:02 PM
To: [email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

Quick question: The etc.rb in Libs is a class, but the implementation in
the Ruby Standard Library appears to be a module. Should I keep the
class or use the module?

Ryan R.

On Sat, Apr 3, 2010 at 4:43 PM, Tomas M.
<[email protected]mailto:[email protected]>
wrote:
Nice work.

A few suggestions:

  •      You can move the file to 
    

C:\M0\Merlin\Main\Languages\Ruby\Libs.

  •      Use System::Environment:: 
    

System::Environment.OSVersion.Platform to detect the OS (see e.g.
Win32API.rb in Libs).

  •      Rather than check for the platform in every method it might 
    

be better to define the methods differently on Windows. Something like:

module Etc
platform = System::PlatformID
case System::Environment.OSVersion.Platform
when platform.Win32S, platform.WinCE, platform.Win32Windows,
platform.Win32NT:

def self.endgrent; end

def self.endpwent; end
def self.getgrent; end
…
else

load_assembly ‘Mono.Posix’

def self.endgrent

Mono::Unix::Native::Syscall.endgrent

end

def self.endpwent

Mono::Unix::Native::Syscall.endpwent

end

def self.getgrent

to_group(Mono::Unix::Native::Syscall.getgrent)

end

…
end
end

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Ryan R.
Sent: Saturday, April 03, 2010 3:59 PM

To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

I’ve posted an initial “complete” implementation, though I have only
done basic testing. I have a couple of TODO’s remaining and some
cleanup, as well as writing actual specs. I still don’t have tests
running. You can find the module here:
http://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb

Not the prettiest thing in the world, but I just wanted to get it
working. I definitely still have work to do.

Cheers,

Ryan R.

Email: [email protected]mailto:[email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/
On Sat, Apr 3, 2010 at 2:30 PM, Ryan R.
<[email protected]mailto:[email protected]> wrote:
Sure!
Mono::Unix::Native::Passwdhttp://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Passwd
and
Mono::Unix::Native::Grouphttp://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Group
that are returned from the
Mono::Unix::Native::Syscallhttp://www.go-mono.com/docs/index.aspx?link=M:Mono.Posix.Syscall.getusername(System.Int32
functions have UInt32, System.String, and System.String[]. System.String
is no biggie, and I’m finding .to_i on a System.UInt32 is still
displayed as System.UInt32, so I suppose that’s not an issue, either.
MRI displays Fixnum as the type, and I was trying to get the correct
types back from the functions. That leaves MRI’s Array to Mono’s
System.String[].

My current implementation is just a Ruby module wrapping calls to the
Mono functions and returning the appropriate types. Most of it is
working, though without being able to run tests easily, I’m testing from
the command line. I still need to add conditionals to return nil if it’s
run on Windows. I suppose I also need to conditionally load the
Mono.Posix.dll if it’s on Windows, too.

I’m about to finish the basic implementation and post to
githubhttp://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb.
(I’ve already got what I finished last night up there.) I also asked
Shri for a pairing session to make sure it’s inline with what you’re
wanting.

Cheers,

Ryan R.

Email: [email protected]mailto:[email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/
On Sat, Apr 3, 2010 at 11:25 AM, Tomas M.
<[email protected]mailto:[email protected]>
wrote:
Can you give an example of where you need the conversions?

Tomas

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Jim D.
Sent: Saturday, April 03, 2010 11:00 AM

To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

No conversion for Fixnums is needed (Fixnums are ints). Arrays are
harder. I would take a look at clr_ext in
merlin/main/languages/ruby/samples. Inside that file is a to_clr_array
method

JD


From: Ryan R.
<[email protected]mailto:[email protected]>
Sent: Saturday, April 03, 2010 12:13 AM
To: [email protected]mailto:[email protected]
<[email protected]mailto:[email protected]>
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?
Where is documentation on converting between CLR and Ruby types? I can
get RubyStrings, but what about Fixnum and Array?

Thanks,

Ryan R.


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core

I’ve posted all the type fixes, but since I can’t compile master, I’m
hesitant to rebase. What should I do? Also, I still haven’t gotten to
the tests. Looks like the current ones all expect nil and assume
Windows. Are those the real rubyspec specs?

Sent from my iPhone

Also, to get a Int32 out of a UInt32, you should be able to use
induced_from:

a = System::UInt32.new(1)
=> 1 (UInt32)
Fixnum.induced_from(a)
=> 1

Minor thing, but it will work.

The fact that etc is a class is my bad. I was just getting enough
implemented in order to pass some specs and use libraries that expected
the nil on Windows.

JD

From: [email protected]
[mailto:[email protected]] On Behalf Of Tomas M.
Sent: Saturday, April 03, 2010 6:01 PM
To: [email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

That is a bug. Make it a module.

Tomas

From: [email protected]
[mailto:[email protected]] On Behalf Of Ryan R.
Sent: Saturday, April 03, 2010 5:02 PM
To: [email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

Quick question: The etc.rb in Libs is a class, but the implementation in
the Ruby Standard Library appears to be a module. Should I keep the
class or use the module?

Ryan R.
On Sat, Apr 3, 2010 at 4:43 PM, Tomas M.
<[email protected]mailto:[email protected]>
wrote:
Nice work.

A few suggestions:

  •      You can move the file to 
    

C:\M0\Merlin\Main\Languages\Ruby\Libs.

  •      Use System::Environment:: 
    

System::Environment.OSVersion.Platform to detect the OS (see e.g.
Win32API.rb in Libs).

  •      Rather than check for the platform in every method it might 
    

be better to define the methods differently on Windows. Something like:

module Etc
platform = System::PlatformID
case System::Environment.OSVersion.Platform
when platform.Win32S, platform.WinCE, platform.Win32Windows,
platform.Win32NT:

def self.endgrent; end

def self.endpwent; end
def self.getgrent; end
…
else

load_assembly ‘Mono.Posix’

def self.endgrent

Mono::Unix::Native::Syscall.endgrent

end

def self.endpwent

Mono::Unix::Native::Syscall.endpwent

end

def self.getgrent

to_group(Mono::Unix::Native::Syscall.getgrent)

end

…
end
end

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Ryan R.
Sent: Saturday, April 03, 2010 3:59 PM

To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

I’ve posted an initial “complete” implementation, though I have only
done basic testing. I have a couple of TODO’s remaining and some
cleanup, as well as writing actual specs. I still don’t have tests
running. You can find the module here:
http://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb

Not the prettiest thing in the world, but I just wanted to get it
working. I definitely still have work to do.

Cheers,

Ryan R.

Email: [email protected]mailto:[email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/
On Sat, Apr 3, 2010 at 2:30 PM, Ryan R.
<[email protected]mailto:[email protected]> wrote:
Sure!
Mono::Unix::Native::Passwdhttp://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Passwd
and
Mono::Unix::Native::Grouphttp://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Group
that are returned from the
Mono::Unix::Native::Syscallhttp://www.go-mono.com/docs/index.aspx?link=M:Mono.Posix.Syscall.getusername(System.Int32
functions have UInt32, System.String, and System.String[]. System.String
is no biggie, and I’m finding .to_i on a System.UInt32 is still
displayed as System.UInt32, so I suppose that’s not an issue, either.
MRI displays Fixnum as the type, and I was trying to get the correct
types back from the functions. That leaves MRI’s Array to Mono’s
System.String[].

My current implementation is just a Ruby module wrapping calls to the
Mono functions and returning the appropriate types. Most of it is
working, though without being able to run tests easily, I’m testing from
the command line. I still need to add conditionals to return nil if it’s
run on Windows. I suppose I also need to conditionally load the
Mono.Posix.dll if it’s on Windows, too.

I’m about to finish the basic implementation and post to
githubhttp://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb.
(I’ve already got what I finished last night up there.) I also asked
Shri for a pairing session to make sure it’s inline with what you’re
wanting.

Cheers,

Ryan R.

Email: [email protected]mailto:[email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/
On Sat, Apr 3, 2010 at 11:25 AM, Tomas M.
<[email protected]mailto:[email protected]>
wrote:
Can you give an example of where you need the conversions?

Tomas

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Jim D.
Sent: Saturday, April 03, 2010 11:00 AM

To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

No conversion for Fixnums is needed (Fixnums are ints). Arrays are
harder. I would take a look at clr_ext in
merlin/main/languages/ruby/samples. Inside that file is a to_clr_array
method

JD


From: Ryan R.
<[email protected]mailto:[email protected]>
Sent: Saturday, April 03, 2010 12:13 AM
To: [email protected]mailto:[email protected]
<[email protected]mailto:[email protected]>
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?
Where is documentation on converting between CLR and Ruby types? I can
get RubyStrings, but what about Fixnum and Array?

Thanks,

Ryan R.


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core

If you run “mspec ci library\etc”, that runs the real RubySpec specs.
irtests does run a command like “mspec ci lib” which will run the Etc
RubySpec specs. http://wiki.github.com/ironruby/ironruby/rubyspec might
be useful to you about how these scripts work.

The RubySpecs are supposed to be working on all platforms. The specs use
checks like “platform_is :windows” or “platform_is_not :windows” to have
versions for all OSes. I am surprised that the current ones expect nil.
You can fix them to have versions of the specs that work on Unixes. You
can run the tests against MRI using “mspec –tr” to ensure that the spec
you add is correct.

If you can streamline the development process for Mono, that will be
great so others have an easier time in the future…

From: [email protected]
[mailto:[email protected]] On Behalf Of Ryan R.
Sent: Sunday, April 04, 2010 9:54 AM
To: [email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

I’ve posted all the type fixes, but since I can’t compile master, I’m
hesitant to rebase. What should I do? Also, I still haven’t gotten to
the tests. Looks like the current ones all expect nil and assume
Windows. Are those the real rubyspec specs?

Sent from my iPhone

On Apr 3, 2010, at 10:13 PM, Jim D.
<[email protected]mailto:[email protected]> wrote:
Also, to get a Int32 out of a UInt32, you should be able to use
induced_from:

a = System::UInt32.new(1)
=> 1 (UInt32)
Fixnum.induced_from(a)
=> 1

Minor thing, but it will work.

The fact that etc is a class is my bad. I was just getting enough
implemented in order to pass some specs and use libraries that expected
the nil on Windows.

JD

From:
[email protected]mailto:[email protected]
[mailto:[email protected]] On Behalf Of Tomas M.
Sent: Saturday, April 03, 2010 6:01 PM
To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

That is a bug. Make it a module.

Tomas

From:
[email protected]mailto:[email protected]
[mailto:[email protected]] On Behalf Of Ryan R.
Sent: Saturday, April 03, 2010 5:02 PM
To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

Quick question: The etc.rb in Libs is a class, but the implementation in
the Ruby Standard Library appears to be a module. Should I keep the
class or use the module?

Ryan R.
On Sat, Apr 3, 2010 at 4:43 PM, Tomas M.
<[email protected]mailto:[email protected]>
wrote:
Nice work.

A few suggestions:

  •      You can move the file to 
    

C:\M0\Merlin\Main\Languages\Ruby\Libs.

  •      Use System::Environment:: 
    

System::Environment.OSVersion.Platform to detect the OS (see e.g.
Win32API.rb in Libs).

  •      Rather than check for the platform in every method it might 
    

be better to define the methods differently on Windows. Something like:

module Etc
platform = System::PlatformID
case System::Environment.OSVersion.Platform
when platform.Win32S, platform.WinCE, platform.Win32Windows,
platform.Win32NT:

def self.endgrent; end

def self.endpwent; end
def self.getgrent; end
…
else

load_assembly ‘Mono.Posix’

def self.endgrent

Mono::Unix::Native::Syscall.endgrent

end

def self.endpwent

Mono::Unix::Native::Syscall.endpwent

end

def self.getgrent

to_group(Mono::Unix::Native::Syscall.getgrent)

end

…
end
end

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Ryan R.
Sent: Saturday, April 03, 2010 3:59 PM

To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

I’ve posted an initial “complete” implementation, though I have only
done basic testing. I have a couple of TODO’s remaining and some
cleanup, as well as writing actual specs. I still don’t have tests
running. You can find the module here:
http://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb

Not the prettiest thing in the world, but I just wanted to get it
working. I definitely still have work to do.

Cheers,

Ryan R.

Email: [email protected]mailto:[email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/
On Sat, Apr 3, 2010 at 2:30 PM, Ryan R.
<[email protected]mailto:[email protected]> wrote:
Sure!
Mono::Unix::Native::Passwdhttp://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Passwd
and
Mono::Unix::Native::Grouphttp://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Group
that are returned from the
Mono::Unix::Native::Syscallhttp://www.go-mono.com/docs/index.aspx?link=M:Mono.Posix.Syscall.getusername(System.Int32
functions have UInt32, System.String, and System.String[]. System.String
is no biggie, and I’m finding .to_i on a System.UInt32 is still
displayed as System.UInt32, so I suppose that’s not an issue, either.
MRI displays Fixnum as the type, and I was trying to get the correct
types back from the functions. That leaves MRI’s Array to Mono’s
System.String[].

My current implementation is just a Ruby module wrapping calls to the
Mono functions and returning the appropriate types. Most of it is
working, though without being able to run tests easily, I’m testing from
the command line. I still need to add conditionals to return nil if it’s
run on Windows. I suppose I also need to conditionally load the
Mono.Posix.dll if it’s on Windows, too.

I’m about to finish the basic implementation and post to
githubhttp://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb.
(I’ve already got what I finished last night up there.) I also asked
Shri for a pairing session to make sure it’s inline with what you’re
wanting.

Cheers,

Ryan R.

Email: [email protected]mailto:[email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/
On Sat, Apr 3, 2010 at 11:25 AM, Tomas M.
<[email protected]mailto:[email protected]>
wrote:
Can you give an example of where you need the conversions?

Tomas

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Jim D.
Sent: Saturday, April 03, 2010 11:00 AM

To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

No conversion for Fixnums is needed (Fixnums are ints). Arrays are
harder. I would take a look at clr_ext in
merlin/main/languages/ruby/samples. Inside that file is a to_clr_array
method

JD


From: Ryan R.
<[email protected]mailto:[email protected]>
Sent: Saturday, April 03, 2010 12:13 AM
To: [email protected]mailto:[email protected]
<[email protected]mailto:[email protected]>
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?
Where is documentation on converting between CLR and Ruby types? I can
get RubyStrings, but what about Fixnum and Array?

Thanks,

Ryan R.


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core

Here’s the error I get with xbuild:
Errors:

/home/ryan/dev/ironruby/Merlin/Main/Languages/Ruby/Ruby.sln (default
targets) →
(ValidateSolutionConfiguration target) →

: error : Error initializing task Message: Not registered task 

Message.

 14 Warning(s)
 1 Error(s)

Time Elapsed 00:00:00.1908000

Ryan R.

Email: [email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/

Nm… I figured out that dev.sh, despite the command to export to PATH
was
not. I’m working on rubyspecs now. Do I put these in the rubyspec git
repo
or in the IR copy
(MERLIN_ROOT/…/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec)?

Ryan

Thanks, Shri. The problem is that I cannot run mspec at all. I have
added it
to my path, but I get a message saying thtat the command can’t be found,
even while in the bin folder. (And yes, the files are executable. :slight_smile:
I’ll
keep trying to determine what’s wrong, but I would think this should
just
work.

In other news, I was able to get master built on linux using rake
compile.
I’ve checked this into my copy of master on github, along with the
etc.rb
updates and Ivan’s dev.sh script. I can write the additional test cases,
but
they should also work now on windows. I’m about to pull and try it
myself.

Cheers!

Ryan R.

Great. I’ve been working on cleaning up the file paths so that I can run
the
specs (and irtests). The problem seems to be just having ‘\’ hard-coded
everywhere. I’m changing this to File.join(“abc”,“xyz”). I’ve still got
a
few remaining, notably ir.cmd and irtests.rb. Then I’ll get on the specs
for
Etc. Those really shouldn’t be hard to write up as I’ve typed them over
and
over into the REPL the last few days. :slight_smile:

Cheers,

Ryan

You should add new/updated specs to
MERLIN_ROOT/…/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec
so that all IronRuby devs will immediately start running the new/updated
specs (after your changes get pulled into the IronRuby master repo). Jim
will then periodically push these back to the RubySpec git repo. He also
does pull periodically from the RubySpec repo into
MERLIN_ROOT/…/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec.

From: [email protected]
[mailto:[email protected]] On Behalf Of Ryan R.
Sent: Sunday, April 04, 2010 7:33 PM
To: [email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

Nm… I figured out that dev.sh, despite the command to export to PATH
was not. I’m working on rubyspecs now. Do I put these in the rubyspec
git repo or in the IR copy
(MERLIN_ROOT/…/External.LCA_RESTRICTED/Languages/IronRuby/mspec/rubyspec)?

Ryan
On Sun, Apr 4, 2010 at 6:32 PM, Ryan R.
<[email protected]mailto:[email protected]> wrote:
Thanks, Shri. The problem is that I cannot run mspec at all. I have
added it to my path, but I get a message saying thtat the command can’t
be found, even while in the bin folder. (And yes, the files are
executable. :slight_smile: I’ll keep trying to determine what’s wrong, but I would
think this should just work.

In other news, I was able to get master built on linux using rake
compile. I’ve checked this into my copy of master on github, along with
the etc.rb updates and Ivan’s dev.sh script. I can write the additional
test cases, but they should also work now on windows. I’m about to pull
and try it myself.

Cheers!

Ryan R.

On Sun, Apr 4, 2010 at 10:55 AM, Shri B.
<[email protected]mailto:[email protected]> wrote:
If you run “mspec ci library\etc”, that runs the real RubySpec specs.
irtests does run a command like “mspec ci lib” which will run the Etc
RubySpec specs. http://wiki.github.com/ironruby/ironruby/rubyspec might
be useful to you about how these scripts work.

The RubySpecs are supposed to be working on all platforms. The specs use
checks like “platform_is :windows” or “platform_is_not :windows” to have
versions for all OSes. I am surprised that the current ones expect nil.
You can fix them to have versions of the specs that work on Unixes. You
can run the tests against MRI using “mspec –tr” to ensure that the spec
you add is correct.

If you can streamline the development process for Mono, that will be
great so others have an easier time in the future…

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Ryan R.
Sent: Sunday, April 04, 2010 9:54 AM

To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

I’ve posted all the type fixes, but since I can’t compile master, I’m
hesitant to rebase. What should I do? Also, I still haven’t gotten to
the tests. Looks like the current ones all expect nil and assume
Windows. Are those the real rubyspec specs?

Sent from my iPhone

On Apr 3, 2010, at 10:13 PM, Jim D.
<[email protected]mailto:[email protected]> wrote:
Also, to get a Int32 out of a UInt32, you should be able to use
induced_from:

a = System::UInt32.new(1)
=> 1 (UInt32)
Fixnum.induced_from(a)
=> 1

Minor thing, but it will work.

The fact that etc is a class is my bad. I was just getting enough
implemented in order to pass some specs and use libraries that expected
the nil on Windows.

JD

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Tomas M.
Sent: Saturday, April 03, 2010 6:01 PM
To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

That is a bug. Make it a module.

Tomas

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Ryan R.
Sent: Saturday, April 03, 2010 5:02 PM
To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

Quick question: The etc.rb in Libs is a class, but the implementation in
the Ruby Standard Library appears to be a module. Should I keep the
class or use the module?

Ryan R.
On Sat, Apr 3, 2010 at 4:43 PM, Tomas M.
<[email protected]mailto:[email protected]>
wrote:
Nice work.

A few suggestions:

  •      You can move the file to 
    

C:\M0\Merlin\Main\Languages\Ruby\Libs.

  •      Use System::Environment:: 
    

System::Environment.OSVersion.Platform to detect the OS (see e.g.
Win32API.rb in Libs).

  •      Rather than check for the platform in every method it might 
    

be better to define the methods differently on Windows. Something like:

module Etc
platform = System::PlatformID
case System::Environment.OSVersion.Platform
when platform.Win32S, platform.WinCE, platform.Win32Windows,
platform.Win32NT:

def self.endgrent; end

def self.endpwent; end
def self.getgrent; end
…
else

load_assembly ‘Mono.Posix’

def self.endgrent

Mono::Unix::Native::Syscall.endgrent

end

def self.endpwent

Mono::Unix::Native::Syscall.endpwent

end

def self.getgrent

to_group(Mono::Unix::Native::Syscall.getgrent)

end

…
end
end

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Ryan R.
Sent: Saturday, April 03, 2010 3:59 PM

To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

I’ve posted an initial “complete” implementation, though I have only
done basic testing. I have a couple of TODO’s remaining and some
cleanup, as well as writing actual specs. I still don’t have tests
running. You can find the module here:
http://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb

Not the prettiest thing in the world, but I just wanted to get it
working. I definitely still have work to do.

Cheers,

Ryan R.

Email: [email protected]mailto:[email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/
On Sat, Apr 3, 2010 at 2:30 PM, Ryan R.
<[email protected]mailto:[email protected]> wrote:
Sure!
Mono::Unix::Native::Passwdhttp://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Passwd
and
Mono::Unix::Native::Grouphttp://www.go-mono.com/docs/index.aspx?link=T:Mono.Unix.Native.Group
that are returned from the
Mono::Unix::Native::Syscallhttp://www.go-mono.com/docs/index.aspx?link=M:Mono.Posix.Syscall.getusername(System.Int32
functions have UInt32, System.String, and System.String[]. System.String
is no biggie, and I’m finding .to_i on a System.UInt32 is still
displayed as System.UInt32, so I suppose that’s not an issue, either.
MRI displays Fixnum as the type, and I was trying to get the correct
types back from the functions. That leaves MRI’s Array to Mono’s
System.String[].

My current implementation is just a Ruby module wrapping calls to the
Mono functions and returning the appropriate types. Most of it is
working, though without being able to run tests easily, I’m testing from
the command line. I still need to add conditionals to return nil if it’s
run on Windows. I suppose I also need to conditionally load the
Mono.Posix.dll if it’s on Windows, too.

I’m about to finish the basic implementation and post to
githubhttp://github.com/panesofglass/ironruby/blob/linux/Merlin/External.LCA_RESTRICTED/Languages/IronRuby/Etc/IronRuby.Libraries.Etc/etc.rb.
(I’ve already got what I finished last night up there.) I also asked
Shri for a pairing session to make sure it’s inline with what you’re
wanting.

Cheers,

Ryan R.

Email: [email protected]mailto:[email protected]
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Twitter: @panesofglass
Website: http://panesofglass.org/
On Sat, Apr 3, 2010 at 11:25 AM, Tomas M.
<[email protected]mailto:[email protected]>
wrote:
Can you give an example of where you need the conversions?

Tomas

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Jim D.
Sent: Saturday, April 03, 2010 11:00 AM

To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?

No conversion for Fixnums is needed (Fixnums are ints). Arrays are
harder. I would take a look at clr_ext in
merlin/main/languages/ruby/samples. Inside that file is a to_clr_array
method

JD


From: Ryan R.
<[email protected]mailto:[email protected]>
Sent: Saturday, April 03, 2010 12:13 AM
To: [email protected]mailto:[email protected]
<[email protected]mailto:[email protected]>
Subject: Re: [Ironruby-core] Anyone interested in implementing Etc
module for Mono?
Where is documentation on converting between CLR and Ruby types? I can
get RubyStrings, but what about Fixnum and Array?

Thanks,

Ryan R.


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core

By the way, if I’ve changed jobs since I signed my LCA, do I need to do
it
again for my current employer?

Ryan