[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, experimental, updated. debian/2.6.8-1-844-g7ec39d5

Matt Robinson matt at puppetlabs.com
Tue May 10 08:07:43 UTC 2011


The following commit has been merged in the experimental branch:
commit 36a5665f3e0aeb8b9141cb8be2f69f8568078986
Author: Matt Robinson <matt at puppetlabs.com>
Date:   Tue Mar 22 23:07:56 2011 -0700

    (#6820) Fix File class lookup in the file type for Ruby 1.9
    
    Was getting the following error when we simply called File.dirname
    
    err: Got an uncaught exception of type NoMethodError: undefined method
    `dirname' for Puppet::Type::File:Class
    
    The constant lookup has changed in Ruby 1.9 to look at local scopes
    first, so we need to make it clearer that File is the Ruby File class
    and not something scoped in Puppet.
    
    Reviewed-by: Jacob Helwig <jacob at puppetlabs.com>

diff --git a/lib/puppet/type/file.rb b/lib/puppet/type/file.rb
index 16b1f96..1a6d0c3 100644
--- a/lib/puppet/type/file.rb
+++ b/lib/puppet/type/file.rb
@@ -44,7 +44,7 @@ Puppet::Type.newtype(:file) do
     # convert the current path in an index into the collection and the last
     # path name. The aim is to use less storage for all common paths in a hierarchy
     munge do |value|
-      path, name = File.split(value.gsub(/\/+/,'/'))
+      path, name = ::File.split(value.gsub(/\/+/,'/'))
       { :index => Puppet::FileCollection.collection.index(path), :name => name }
     end
 
@@ -55,7 +55,7 @@ Puppet::Type.newtype(:file) do
       if value[:name] == '/'
         basedir
       else
-        File.join( basedir, value[:name] )
+        ::File.join( basedir, value[:name] )
       end
     end
   end
@@ -248,7 +248,7 @@ Puppet::Type.newtype(:file) do
 
   # Autorequire any parent directories.
   autorequire(:file) do
-    basedir = File.dirname(self[:path])
+    basedir = ::File.dirname(self[:path])
     if basedir != self[:path]
       basedir
     else
@@ -309,7 +309,7 @@ Puppet::Type.newtype(:file) do
   def asuser
     if self.should(:owner) and ! self.should(:owner).is_a?(Symbol)
       writeable = Puppet::Util::SUIDManager.asuser(self.should(:owner)) {
-        FileTest.writable?(File.dirname(self[:path]))
+        FileTest.writable?(::File.dirname(self[:path]))
       }
 
       # If the parent directory is writeable, then we execute
@@ -412,7 +412,7 @@ Puppet::Type.newtype(:file) do
   # Create a new file or directory object as a child to the current
   # object.
   def newchild(path)
-    full_path = File.join(self[:path], path)
+    full_path = ::File.join(self[:path], path)
 
     # Add some new values to our original arguments -- these are the ones
     # set at initialization.  We specifically want to exclude any param
@@ -486,16 +486,16 @@ Puppet::Type.newtype(:file) do
   # not likely to have many actual conflicts, which is good, because
   # this is a pretty inefficient implementation.
   def remove_less_specific_files(files)
-    mypath = self[:path].split(File::Separator)
+    mypath = self[:path].split(::File::Separator)
     other_paths = catalog.vertices.
       select  { |r| r.is_a?(self.class) and r[:path] != self[:path] }.
-      collect { |r| r[:path].split(File::Separator) }.
+      collect { |r| r[:path].split(::File::Separator) }.
       select  { |p| p[0,mypath.length]  == mypath }
 
     return files if other_paths.empty?
 
     files.reject { |file|
-      path = file[:path].split(File::Separator)
+      path = file[:path].split(::File::Separator)
       other_paths.any? { |p| path[0,p.length] == p }
       }
   end
@@ -612,7 +612,7 @@ Puppet::Type.newtype(:file) do
       end
     when "link", "file"
       debug "Removing existing #{s.ftype} for replacement with #{should}"
-      File.unlink(self[:path])
+      ::File.unlink(self[:path])
     else
       self.fail "Could not back up files of type #{s.ftype}"
     end
@@ -677,7 +677,7 @@ Puppet::Type.newtype(:file) do
     path = self[:path]
 
     begin
-      File.send(method, self[:path])
+      ::File.send(method, self[:path])
     rescue Errno::ENOENT => error
       return nil
     rescue Errno::EACCES => error
@@ -703,7 +703,7 @@ Puppet::Type.newtype(:file) do
     use_temporary_file = write_temporary_file?
     if use_temporary_file
       path = "#{self[:path]}.puppettmp_#{rand(10000)}"
-      path = "#{self[:path]}.puppettmp_#{rand(10000)}" while File.exists?(path) or File.symlink?(path)
+      path = "#{self[:path]}.puppettmp_#{rand(10000)}" while ::File.exists?(path) or ::File.symlink?(path)
     else
       path = self[:path]
     end
@@ -712,18 +712,18 @@ Puppet::Type.newtype(:file) do
     umask = mode ? 000 : 022
     mode_int = mode ? mode.to_i(8) : nil
 
-    content_checksum = Puppet::Util.withumask(umask) { File.open(path, 'w', mode_int ) { |f| write_content(f) } }
+    content_checksum = Puppet::Util.withumask(umask) { ::File.open(path, 'w', mode_int ) { |f| write_content(f) } }
 
     # And put our new file in place
     if use_temporary_file # This is only not true when our file is empty.
       begin
         fail_if_checksum_is_wrong(path, content_checksum) if validate_checksum?
-        File.rename(path, self[:path])
+        ::File.rename(path, self[:path])
       rescue => detail
         fail "Could not rename temporary file #{path} to #{self[:path]}: #{detail}"
       ensure
         # Make sure the created file gets removed
-        File.unlink(path) if FileTest.exists?(path)
+        ::File.unlink(path) if FileTest.exists?(path)
       end
     end
 

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list