On Mar 21, 2009, at 11:59 AM, joel r wrote:

>
>
> On Sat, Mar 21, 2009 at 1:40 PM, Paul Nasrat  
> <[email protected]> wrote:
> But you really should target master for new features like this.
>
> Sure. I've just rebased against master.

Is this code online?  I don't see it in your git repo.

> Also rather than a monolithic patch could you post individual  
> patches, see
>
> http://reductivelabs.com/trac/puppet/wiki/DevelopmentLifecycle
>
> Sorry, I really should have read this document before submitting my  
> patch.
>
>
> > The code is up at http://github.com/finalprefix/puppet/tree/0.24.7-win 
> .
> >
> > I'd love any feedback you might have!
>
> How are you finding running it on windows, there are a bunch of path
> issues I know that need to be cleaned up to run puppet.
>
> Well Facter tries to run domainname and dnsdomainname, which don't  
> exist on windows. I'll probably patch Facter in a bit.
>
> Further, I've been focused on the providers, and I've been running  
> them using the standalone puppet command. At the moment, puppetd  
> doesn't work because fork is not implemented in ruby on Windows. The  
> win32-process gem has an implementation of fork for windows. Perhaps  
> it will solve the problem.

Which of the existing types and providers do you expect to eventually  
work on Windows?

I expect that most of those that use forking wouldn't work on Windows  
anyway, but which of them that use fork would you want to use?

> Daemonization on puppetd will also require puppet to be a windows  
> service. Again, there's a gem for this called win32-service.
>
> I also need to figure out how to get non inheritable pipes for lines  
> 78 and 79 of lib\puppet\external\event-loop\event-loop.rb:
>     # prevent file descriptor leaks
>     @notify_src.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
>     @notify_snk.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
>
> I attempt to run puppet using "puppet test.pp", and the fcntl calls  
> throws:
>
> c:\ruby-1.8.7\lib\ruby\gems\1.8\gems\puppet-0.24.7\lib\puppet 
> \external\event-loop\event-loop.rb:78:in `initialize': uninitialized  
> constant Fcntl::F_SETFD (NameError)
> c:\ruby-1.8.7\lib\ruby\gems\1.8\gems\puppet-0.24.7\lib\puppet 
> \external\event-loop\event-loop.rb:31:in `new'
> c:\ruby-1.8.7\lib\ruby\gems\1.8\gems\puppet-0.24.7\lib\puppet 
> \external\event-loop\event-loop.rb:31:in `default'
> c:\ruby-1.8.7\lib\ruby\gems\1.8\gems\puppet-0.24.7\lib\puppet 
> \external\event-loop\event-loop.rb:35:in `current'
> c:\ruby-1.8.7\lib\ruby\gems\1.8\gems\puppet-0.24.7\lib\puppet 
> \external\event-loop\event-loop.rb:285:in `initialize'
> c:\ruby-1.8.7\lib\ruby\gems\1.8\gems\puppet-0.24.7\lib\puppet\util 
> \settings.rb:532:in `new'
> c:\ruby-1.8.7\lib\ruby\gems\1.8\gems\puppet-0.24.7\lib\puppet\util 
> \settings.rb:532:in `set_filetimeout_timer'
> c:\ruby-1.8.7\lib\ruby\gems\1.8\gems\puppet-0.24.7\lib\puppet\util 
> \settings.rb:341:in `parse'
> c:\ruby-1.8.7\lib\ruby\gems\1.8\gems\puppet-0.24.7\lib\puppet 
> \application.rb:215:in `run'
> c:\ruby-1.8.7\lib\ruby\gems\1.8\gems\puppet-0.24.7\bin\puppet:68
> c:\ruby-1.8.7\bin\puppet:19:in `load'
> c:\ruby-1.8.7\bin\puppet:19
>
> I tried commenting out those two lines, and things worked fine.

Nice - we've got problems going both directions.  Unixes inherit too  
many, and Windows can't inherit them at all?

It should be straightforward to block these out for Windows boxen.

> From what I read so far, using O_NOINHERIT on windows should be the  
> equivalent of FD_CLOEXEC. However, IO.pipe makes the call to _pipe  
> without this flag. I think it should be possible to make the call  
> with O_NOINHERIT using the Win32API gem.
>
>
> If I get a chance this week I'll try and produce a combined tree
> cherry-picking your stuff against master.
>
> Further comments inline
>
> > diff --git a/lib/puppet.rb b/lib/puppet.rb
> > index 4b0091c..77dbdfe 100644
> > --- a/lib/puppet.rb
> > +++ b/lib/puppet.rb
> > @@ -190,53 +190,57 @@ module Puppet
> >     # Trap a couple of the main signals.  This should probably be
> > handled
> > +       begin
> > +               [:INT, :TERM].each do |signal|
> > +                   trap(signal) do
> > +                       Puppet.notice "Caught #{signal}; shutting  
> down"
> > +                       Puppet.debug "Signal caught here:"
> > +                       caller.each { |l| Puppet.debug l }
> > +                       Puppet.shutdown
> > +                   end
> > +               end
> ...
> > +        rescue ArgumentError => e
> > +            raise if e.to_s.index('SIGHUP') == nil
> >         end
> >     end
>
> What's the issue you're fixing here, I'm assuming its due to SIGHUP
> not being defined on windows. There is probably a more explicit way of
> handling this, as it's such a long method it makes it hard to see the
> intent.
>
> This part isn't necessary anymore, since the settrap call has gone  
> from puppet.rb.

It's still used, in lib/puppet/daemon.rb, but only if you run as a  
daemon.

Again, great work, and thanks.

-- 
Trying to determine what is going on in the world by reading
newspapers is like trying to tell the time by watching the second
hand of a clock. --Ben Hecht
---------------------------------------------------------------------
Luke Kanies | http://reductivelabs.com | http://madstop.com


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to