[puppet] Add patch for ruby 2.0 support

Orion Poplawski orion at fedoraproject.org
Tue Apr 16 17:04:56 UTC 2013


commit 9e7b9c6ccc72a8dfd36ccf272020823fa7637b5d
Author: Orion Poplawski <orion at nwra.com>
Date:   Tue Apr 16 10:56:33 2013 -0600

    Add patch for ruby 2.0 support

 puppet-ruby2.patch |  525 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 puppet.spec        |    9 +-
 2 files changed, 533 insertions(+), 1 deletions(-)
---
diff --git a/puppet-ruby2.patch b/puppet-ruby2.patch
new file mode 100644
index 0000000..4a14048
--- /dev/null
+++ b/puppet-ruby2.patch
@@ -0,0 +1,525 @@
+diff --git a/lib/puppet/file_serving/fileset.rb b/lib/puppet/file_serving/fileset.rb
+index f2ebf5a..96050b6 100644
+--- a/lib/puppet/file_serving/fileset.rb
++++ b/lib/puppet/file_serving/fileset.rb
+@@ -136,7 +136,7 @@ class Puppet::FileServing::Fileset
+     result = []
+     return result unless recurse?(depth)
+ 
+-    while dir_path = current_dirs.shift or ((depth += 1) and recurse?(depth) and current_dirs = next_dirs and next_dirs = [] and dir_path = current_dirs.shift)
++    while dir_path = current_dirs.shift
+       next unless stat = stat(dir_path)
+       next unless stat.directory?
+ 
+@@ -153,6 +153,14 @@ class Puppet::FileServing::Fileset
+         # And to our list of files/directories to iterate over.
+         next_dirs << File.join(dir_path, file_path)
+       end
++
++      # Move to the next recusion level
++      if current_dirs.empty?
++        depth += 1
++        break unless recurse?(depth)
++        current_dirs = next_dirs
++        next_dirs = []
++      end
+     end
+ 
+     result
+diff --git a/lib/puppet/indirector/facts/inventory_active_record.rb b/lib/puppet/indirector/facts/inventory_active_record.rb
+index 4add7f2..b6c703b 100644
+--- a/lib/puppet/indirector/facts/inventory_active_record.rb
++++ b/lib/puppet/indirector/facts/inventory_active_record.rb
+@@ -11,6 +11,7 @@ class Puppet::Node::Facts::InventoryActiveRecord < Puppet::Indirector::ActiveRec
+     and inventory are deprecated. See http://links.puppetlabs.com/activerecord-deprecation"
+ 
+   def initialize
++    raise Puppet::Error, "ActiveRecords-based inventory is unsupported with Ruby 2 and Rails 3.0" if RUBY_VERSION[0] == '2'
+     Puppet.deprecation_warning "ActiveRecord-based storeconfigs and inventory are deprecated. See http://links.puppetlabs.com/activerecord-deprecation"
+     super
+   end
+diff --git a/lib/puppet/transaction/event.rb b/lib/puppet/transaction/event.rb
+index 057554e..066ef20 100644
+--- a/lib/puppet/transaction/event.rb
++++ b/lib/puppet/transaction/event.rb
+@@ -29,15 +29,8 @@ class Puppet::Transaction::Event
+   end
+ 
+   def resource=(res)
+-    begin
+-      # In Ruby 1.8 looking up a symbol on a string gives nil; in 1.9 it will
+-      # raise a TypeError, which we then catch.  This should work on both
+-      # versions, for all that it is a bit naff. --daniel 2012-03-11
+-      if res.respond_to?(:[]) and level = res[:loglevel]
+-        @default_log_level = level
+-      end
+-    rescue TypeError => e
+-      raise unless e.to_s == "can't convert Symbol into Integer"
++    if res.respond_to?(:[]) and level = res[:loglevel]
++      @default_log_level = level
+     end
+     @resource = res.to_s
+   end
+diff --git a/lib/puppet/util/classgen.rb b/lib/puppet/util/classgen.rb
+index e03bf2a..db8cd40 100644
+--- a/lib/puppet/util/classgen.rb
++++ b/lib/puppet/util/classgen.rb
+@@ -148,10 +148,10 @@ module Puppet::Util::ClassGen
+   # @api private
+   #
+   def is_constant_defined?(const)
+-    if ::RUBY_VERSION =~ /1.9/
+-      const_defined?(const, false)
+-    else
++    if ::RUBY_VERSION =~ /^1.8/
+       const_defined?(const)
++    else
++      const_defined?(const, false)
+     end
+   end
+ 
+diff --git a/lib/puppet/util/rdoc/parser.rb b/lib/puppet/util/rdoc/parser.rb
+index 145706f..6b5ad74 100644
+--- a/lib/puppet/util/rdoc/parser.rb
++++ b/lib/puppet/util/rdoc/parser.rb
+@@ -8,18 +8,18 @@ require "rdoc/code_objects"
+ require "puppet/util/rdoc/code_objects"
+ require "rdoc/tokenstream"
+ 
+-if ::RUBY_VERSION =~ /1.9/
+-	require "rdoc/markup/preprocess"
+-	require "rdoc/parser"
+-else
++if ::RUBY_VERSION =~ /^1.8/
+ 	require "rdoc/markup/simple_markup/preprocess"
+ 	require "rdoc/parsers/parserfactory"
++else
++	require "rdoc/markup/preprocess"
++	require "rdoc/parser"
+ end
+ 
+ module RDoc
+ 
+ class Parser
+-  extend ParserFactory unless ::RUBY_VERSION =~ /1.9/
++  extend ParserFactory if ::RUBY_VERSION =~ /^1.8/
+ 
+   SITE = "__site__"
+ 
+diff --git a/spec/unit/forge/repository_spec.rb b/spec/unit/forge/repository_spec.rb
+index a0b585b..71fe38e 100644
+--- a/spec/unit/forge/repository_spec.rb
++++ b/spec/unit/forge/repository_spec.rb
+@@ -92,7 +92,7 @@ describe Puppet::Forge::Repository do
+         http.expects(:request).with() do |request|
+           puppet_version = /Puppet\/\d+\..*/
+           os_info = /\(.*\)/
+-          ruby_version = /Ruby\/\d+\.\d+\.\d+(-p\d+)? \(\d{4}-\d{2}-\d{2}; .*\)/
++          ruby_version = /Ruby\/\d+\.\d+\.\d+(-p-?\d+)? \(\d{4}-\d{2}-\d{2}; .*\)/
+ 
+           request["User-Agent"] =~ /^#{consumer_version} #{puppet_version} #{os_info} #{ruby_version}/
+         end
+diff --git a/spec/unit/indirector/facts/inventory_active_record_spec.rb b/spec/unit/indirector/facts/inventory_active_record_spec.rb
+index 641ded7..ef50583 100755
+--- a/spec/unit/indirector/facts/inventory_active_record_spec.rb
++++ b/spec/unit/indirector/facts/inventory_active_record_spec.rb
+@@ -23,149 +23,160 @@ describe "Puppet::Node::Facts::InventoryActiveRecord", :if => can_use_scratch_da
+     setup_scratch_database
+   end
+ 
+-  it "should issue a deprecation warning" do
+-    Puppet.expects(:deprecation_warning).with() { |msg| msg =~ /ActiveRecord-based storeconfigs and inventory are deprecated/ }
+-    terminus
+-  end
+-
+-  describe "#save" do
+-    let(:node) {
+-      Puppet::Rails::InventoryNode.new(:name => "foo", :timestamp => Time.now)
+-    }
+-
+-    let(:facts) {
+-      Puppet::Node::Facts.new("foo", "uptime_days" => "60", "kernel" => "Darwin")
+-    }
+-
+-    it "should retry on ActiveRecord error" do
+-      Puppet::Rails::InventoryNode.expects(:create).twice.raises(ActiveRecord::StatementInvalid).returns node
+-
+-      Puppet::Node::Facts.indirection.save(facts)
+-    end
+-
+-    it "should use an existing node if possible" do
+-      node.save
+-      Puppet::Node::Facts.indirection.save(facts)
+-
+-      Puppet::Rails::InventoryNode.count.should == 1
+-      Puppet::Rails::InventoryNode.first.should == node
+-    end
+-
+-    it "should create a new node if one can't be found" do
+-      # This test isn't valid if there are nodes to begin with
+-      Puppet::Rails::InventoryNode.count.should == 0
+-
+-      Puppet::Node::Facts.indirection.save(facts)
+-
+-      Puppet::Rails::InventoryNode.count.should == 1
+-      Puppet::Rails::InventoryNode.first.name.should == "foo"
+-    end
+-
+-    it "should save the facts" do
+-      Puppet::Node::Facts.indirection.save(facts)
+-
+-      Puppet::Rails::InventoryFact.all.map{|f| [f.name,f.value]}.should =~ [["uptime_days","60"],["kernel","Darwin"]]
+-    end
+-
+-    it "should remove the previous facts for an existing node" do
+-      facts = Puppet::Node::Facts.new("foo", "uptime_days" => "30", "kernel" => "Darwin")
+-      Puppet::Node::Facts.indirection.save(facts)
+-      bar_facts = Puppet::Node::Facts.new("bar", "uptime_days" => "35", "kernel" => "Linux")
+-      foo_facts = Puppet::Node::Facts.new("foo", "uptime_days" => "60", "is_virtual" => "false")
+-      Puppet::Node::Facts.indirection.save(bar_facts)
+-      Puppet::Node::Facts.indirection.save(foo_facts)
+-
+-      Puppet::Node::Facts.indirection.find("bar").should == bar_facts
+-      Puppet::Node::Facts.indirection.find("foo").should == foo_facts
+-      Puppet::Rails::InventoryFact.all.map{|f| [f.name,f.value]}.should_not include(["uptime_days", "30"], ["kernel", "Darwin"])
++  context "under Ruby 1.x", :if => RUBY_VERSION[0] == '1' do
++    describe "#initialize" do
++      it "should issue a deprecation warning" do
++        Puppet.expects(:deprecation_warning).with() { |msg| msg =~ /ActiveRecord-based storeconfigs and inventory are deprecated/ }
++        terminus
++      end
++    end
++
++    describe "#save" do
++      let(:node) {
++        Puppet::Rails::InventoryNode.new(:name => "foo", :timestamp => Time.now)
++      }
++
++      let(:facts) {
++        Puppet::Node::Facts.new("foo", "uptime_days" => "60", "kernel" => "Darwin")
++      }
++
++      it "should retry on ActiveRecord error" do
++        Puppet::Rails::InventoryNode.expects(:create).twice.raises(ActiveRecord::StatementInvalid).returns node
++
++        Puppet::Node::Facts.indirection.save(facts)
++      end
++
++      it "should use an existing node if possible" do
++        node.save
++        Puppet::Node::Facts.indirection.save(facts)
++
++        Puppet::Rails::InventoryNode.count.should == 1
++        Puppet::Rails::InventoryNode.first.should == node
++      end
++
++      it "should create a new node if one can't be found" do
++        # This test isn't valid if there are nodes to begin with
++        Puppet::Rails::InventoryNode.count.should == 0
++
++        Puppet::Node::Facts.indirection.save(facts)
++
++        Puppet::Rails::InventoryNode.count.should == 1
++        Puppet::Rails::InventoryNode.first.name.should == "foo"
++      end
++
++      it "should save the facts" do
++        Puppet::Node::Facts.indirection.save(facts)
++
++        Puppet::Rails::InventoryFact.all.map{|f| [f.name,f.value]}.should =~ [["uptime_days","60"],["kernel","Darwin"]]
++      end
++
++      it "should remove the previous facts for an existing node" do
++        facts = Puppet::Node::Facts.new("foo", "uptime_days" => "30", "kernel" => "Darwin")
++        Puppet::Node::Facts.indirection.save(facts)
++        bar_facts = Puppet::Node::Facts.new("bar", "uptime_days" => "35", "kernel" => "Linux")
++        foo_facts = Puppet::Node::Facts.new("foo", "uptime_days" => "60", "is_virtual" => "false")
++        Puppet::Node::Facts.indirection.save(bar_facts)
++        Puppet::Node::Facts.indirection.save(foo_facts)
++
++        Puppet::Node::Facts.indirection.find("bar").should == bar_facts
++        Puppet::Node::Facts.indirection.find("foo").should == foo_facts
++        Puppet::Rails::InventoryFact.all.map{|f| [f.name,f.value]}.should_not include(["uptime_days", "30"], ["kernel", "Darwin"])
++      end
++    end
++
++    describe "#find" do
++      before do
++        @foo_facts = Puppet::Node::Facts.new("foo", "uptime_days" => "60", "kernel" => "Darwin")
++        @bar_facts = Puppet::Node::Facts.new("bar", "uptime_days" => "30", "kernel" => "Linux")
++        Puppet::Node::Facts.indirection.save(@foo_facts)
++        Puppet::Node::Facts.indirection.save(@bar_facts)
++      end
++
++      it "should identify facts by node name" do
++        Puppet::Node::Facts.indirection.find("foo").should == @foo_facts
++      end
++
++      it "should return nil if no node instance can be found" do
++        Puppet::Node::Facts.indirection.find("non-existent node").should == nil
++      end
++    end
++
++    describe "#search" do
++      def search_request(conditions)
++        Puppet::Indirector::Request.new(:facts, :search, nil, nil, conditions)
++      end
++
++      before :each do
++        @now = Time.now
++        @foo = Puppet::Node::Facts.new("foo", "fact1" => "value1", "fact2" => "value2", "uptime_days" => "30")
++        @bar = Puppet::Node::Facts.new("bar", "fact1" => "value1", "uptime_days" => "60")
++        @baz = Puppet::Node::Facts.new("baz", "fact1" => "value2", "fact2" => "value1", "uptime_days" => "90")
++        @bat = Puppet::Node::Facts.new("bat")
++        @foo.timestamp = @now - 3600*1
++        @bar.timestamp = @now - 3600*3
++        @baz.timestamp = @now - 3600*5
++        @bat.timestamp = @now - 3600*7
++        [@foo, @bar, @baz, @bat].each {|facts| Puppet::Node::Facts.indirection.save(facts)}
++      end
++
++      it "should return node names that match 'equal' constraints" do
++        request = search_request('facts.fact1.eq' => 'value1',
++                                 'facts.fact2.eq' => 'value2')
++        terminus.search(request).should == ["foo"]
++      end
++
++      it "should return node names that match 'not equal' constraints" do
++        request = search_request('facts.fact1.ne' => 'value2')
++        terminus.search(request).should == ["bar","foo"]
++      end
++
++      it "should return node names that match strict inequality constraints" do
++        request = search_request('facts.uptime_days.gt' => '20',
++                                 'facts.uptime_days.lt' => '70')
++        terminus.search(request).should == ["bar","foo"]
++      end
++
++      it "should return node names that match non-strict inequality constraints" do
++        request = search_request('facts.uptime_days.ge' => '30',
++                                 'facts.uptime_days.le' => '60')
++        terminus.search(request).should == ["bar","foo"]
++      end
++
++      it "should return node names whose facts are within a given timeframe" do
++        request = search_request('meta.timestamp.ge' => @now - 3600*5,
++                                 'meta.timestamp.le' => @now - 3600*1)
++        terminus.search(request).should == ["bar","baz","foo"]
++      end
++
++      it "should return node names whose facts are from a specific time" do
++        request = search_request('meta.timestamp.eq' => @now - 3600*3)
++        terminus.search(request).should == ["bar"]
++      end
++
++      it "should return node names whose facts are not from a specific time" do
++        request = search_request('meta.timestamp.ne' => @now - 3600*1)
++        terminus.search(request).should == ["bar","bat","baz"]
++      end
++
++      it "should perform strict searches on nodes by timestamp" do
++        request = search_request('meta.timestamp.gt' => @now - 3600*5,
++                                 'meta.timestamp.lt' => @now - 3600*1)
++        terminus.search(request).should == ["bar"]
++      end
++
++      it "should search nodes based on both facts and timestamp values" do
++        request = search_request('facts.uptime_days.gt' => '45',
++                                 'meta.timestamp.lt'    => @now - 3600*4)
++        terminus.search(request).should == ["baz"]
++      end
+     end
+   end
+ 
+-  describe "#find" do
+-    before do
+-      @foo_facts = Puppet::Node::Facts.new("foo", "uptime_days" => "60", "kernel" => "Darwin")
+-      @bar_facts = Puppet::Node::Facts.new("bar", "uptime_days" => "30", "kernel" => "Linux")
+-      Puppet::Node::Facts.indirection.save(@foo_facts)
+-      Puppet::Node::Facts.indirection.save(@bar_facts)
+-    end
+-
+-    it "should identify facts by node name" do
+-      Puppet::Node::Facts.indirection.find("foo").should == @foo_facts
+-    end
+-
+-    it "should return nil if no node instance can be found" do
+-      Puppet::Node::Facts.indirection.find("non-existent node").should == nil
+-    end
+-  end
+-
+-  describe "#search" do
+-    def search_request(conditions)
+-      Puppet::Indirector::Request.new(:facts, :search, nil, nil, conditions)
+-    end
+-
+-    before :each do
+-      @now = Time.now
+-      @foo = Puppet::Node::Facts.new("foo", "fact1" => "value1", "fact2" => "value2", "uptime_days" => "30")
+-      @bar = Puppet::Node::Facts.new("bar", "fact1" => "value1", "uptime_days" => "60")
+-      @baz = Puppet::Node::Facts.new("baz", "fact1" => "value2", "fact2" => "value1", "uptime_days" => "90")
+-      @bat = Puppet::Node::Facts.new("bat")
+-      @foo.timestamp = @now - 3600*1
+-      @bar.timestamp = @now - 3600*3
+-      @baz.timestamp = @now - 3600*5
+-      @bat.timestamp = @now - 3600*7
+-      [@foo, @bar, @baz, @bat].each {|facts| Puppet::Node::Facts.indirection.save(facts)}
+-    end
+-
+-    it "should return node names that match 'equal' constraints" do
+-      request = search_request('facts.fact1.eq' => 'value1',
+-                               'facts.fact2.eq' => 'value2')
+-      terminus.search(request).should == ["foo"]
+-    end
+-
+-    it "should return node names that match 'not equal' constraints" do
+-      request = search_request('facts.fact1.ne' => 'value2')
+-      terminus.search(request).should == ["bar","foo"]
+-    end
+-
+-    it "should return node names that match strict inequality constraints" do
+-      request = search_request('facts.uptime_days.gt' => '20',
+-                               'facts.uptime_days.lt' => '70')
+-      terminus.search(request).should == ["bar","foo"]
+-    end
+-
+-    it "should return node names that match non-strict inequality constraints" do
+-      request = search_request('facts.uptime_days.ge' => '30',
+-                               'facts.uptime_days.le' => '60')
+-      terminus.search(request).should == ["bar","foo"]
+-    end
+-
+-    it "should return node names whose facts are within a given timeframe" do
+-      request = search_request('meta.timestamp.ge' => @now - 3600*5,
+-                               'meta.timestamp.le' => @now - 3600*1)
+-      terminus.search(request).should == ["bar","baz","foo"]
+-    end
+-
+-    it "should return node names whose facts are from a specific time" do
+-      request = search_request('meta.timestamp.eq' => @now - 3600*3)
+-      terminus.search(request).should == ["bar"]
+-    end
+-
+-    it "should return node names whose facts are not from a specific time" do
+-      request = search_request('meta.timestamp.ne' => @now - 3600*1)
+-      terminus.search(request).should == ["bar","bat","baz"]
+-    end
+-
+-    it "should perform strict searches on nodes by timestamp" do
+-      request = search_request('meta.timestamp.gt' => @now - 3600*5,
+-                               'meta.timestamp.lt' => @now - 3600*1)
+-      terminus.search(request).should == ["bar"]
+-    end
+-
+-    it "should search nodes based on both facts and timestamp values" do
+-      request = search_request('facts.uptime_days.gt' => '45',
+-                               'meta.timestamp.lt'    => @now - 3600*4)
+-      terminus.search(request).should == ["baz"]
++  context "under Ruby 2.x", :if => RUBY_VERSION[0] == '2' do
++    describe "#initialize" do
++      it "should raise error under Ruby 2" do
++        lambda { terminus }.should raise_error(Puppet::Error, /Ruby 2/)
++      end
+     end
+   end
+ end
+-
+diff --git a/spec/unit/provider/user/directoryservice_spec.rb b/spec/unit/provider/user/directoryservice_spec.rb
+index 7be6399..6534147 100755
+--- a/spec/unit/provider/user/directoryservice_spec.rb
++++ b/spec/unit/provider/user/directoryservice_spec.rb
+@@ -1,4 +1,5 @@
+ #! /usr/bin/env ruby -S rspec
++# encoding: ASCII-8BIT
+ require 'spec_helper'
+ require 'facter/util/plist'
+ 
+diff --git a/spec/unit/ssl/certificate_authority_spec.rb b/spec/unit/ssl/certificate_authority_spec.rb
+index 3315243..9d007a3 100755
+--- a/spec/unit/ssl/certificate_authority_spec.rb
++++ b/spec/unit/ssl/certificate_authority_spec.rb
+@@ -1,4 +1,5 @@
+ #! /usr/bin/env ruby
++# encoding: ASCII-8BIT
+ require 'spec_helper'
+ 
+ require 'puppet/ssl/certificate_authority'
+diff --git a/spec/unit/transaction/event_spec.rb b/spec/unit/transaction/event_spec.rb
+index 579540d..2a51936 100755
+--- a/spec/unit/transaction/event_spec.rb
++++ b/spec/unit/transaction/event_spec.rb
+@@ -3,10 +3,19 @@ require 'spec_helper'
+ 
+ require 'puppet/transaction/event'
+ 
++class TestResource
++  def to_s
++    "Foo[bar]"
++  end
++  def [](v)
++    nil
++  end
++end
++
+ describe Puppet::Transaction::Event do
+   include PuppetSpec::Files
+ 
+-  [:previous_value, :desired_value, :property, :resource, :name, :message, :file, :line, :tags, :audited].each do |attr|
++  [:previous_value, :desired_value, :property, :name, :message, :file, :line, :tags, :audited].each do |attr|
+     it "should support #{attr}" do
+       event = Puppet::Transaction::Event.new
+       event.send(attr.to_s + "=", "foo")
+@@ -14,12 +23,18 @@ describe Puppet::Transaction::Event do
+     end
+   end
+ 
++  it "should support resource" do
++    event = Puppet::Transaction::Event.new
++    event.resource = TestResource.new
++    event.resource.should == "Foo[bar]"
++  end
++
+   it "should always convert the property to a string" do
+     Puppet::Transaction::Event.new(:property => :foo).property.should == "foo"
+   end
+ 
+   it "should always convert the resource to a string" do
+-    Puppet::Transaction::Event.new(:resource => :foo).resource.should == "foo"
++    Puppet::Transaction::Event.new(:resource => TestResource.new).resource.should == "Foo[bar]"
+   end
+ 
+   it "should produce the message when converted to a string" do
+@@ -99,17 +114,17 @@ describe Puppet::Transaction::Event do
+ 
+     it "should use the source description as the source if one is set" do
+       Puppet::Util::Log.expects(:new).with { |args| args[:source] == "/my/param" }
+-      Puppet::Transaction::Event.new(:source_description => "/my/param", :resource => "Foo[bar]", :property => "foo").send_log
++      Puppet::Transaction::Event.new(:source_description => "/my/param", :resource => TestResource.new, :property => "foo").send_log
+     end
+ 
+     it "should use the property as the source if one is available and no source description is set" do
+       Puppet::Util::Log.expects(:new).with { |args| args[:source] == "foo" }
+-      Puppet::Transaction::Event.new(:resource => "Foo[bar]", :property => "foo").send_log
++      Puppet::Transaction::Event.new(:resource => TestResource.new, :property => "foo").send_log
+     end
+ 
+     it "should use the property as the source if one is available and no property or source description is set" do
+       Puppet::Util::Log.expects(:new).with { |args| args[:source] == "Foo[bar]" }
+-      Puppet::Transaction::Event.new(:resource => "Foo[bar]").send_log
++      Puppet::Transaction::Event.new(:resource => TestResource.new).send_log
+     end
+   end
+ 
+diff --git a/spec/unit/util/execution_spec.rb b/spec/unit/util/execution_spec.rb
+index 4390eba..1e7ac26 100755
+--- a/spec/unit/util/execution_spec.rb
++++ b/spec/unit/util/execution_spec.rb
+@@ -576,7 +576,7 @@ describe Puppet::Util::Execution do
+       it "should raise an error if a nil option is specified" do
+         expect {
+           Puppet::Util::Execution.execute('fail command', nil)
+-        }.to raise_error(TypeError, /can\'t convert nil into Hash/)
++        }.to raise_error(TypeError, /(can\'t convert|no implicit conversion of) nil into Hash/)
+       end
+     end
+   end
diff --git a/puppet.spec b/puppet.spec
index 58852df..939a44d 100644
--- a/puppet.spec
+++ b/puppet.spec
@@ -22,7 +22,7 @@
 
 Name:           puppet
 Version:        3.1.1
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        A network tool for managing many disparate systems
 License:        ASL 2.0
 URL:            http://puppetlabs.com
@@ -32,6 +32,9 @@ Source2:        puppet-nm-dispatcher
 
 # Pulled from upstream, will be released the next time they cut a release from master
 Patch0:         0001-18781-Be-more-tolerant-of-old-clients-in-WEBrick-ser.patch
+# https://projects.puppetlabs.com/issues/18494
+# Ruby 2.0 support
+Patch1:         puppet-ruby2.patch
 
 Group:          System Environment/Base
 
@@ -108,6 +111,7 @@ The server can also function as a certificate authority and file server.
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1
 patch -s -p1 < %{confdir}/rundir-perms.patch
 
 # Fix some rpmlint complaints
@@ -350,6 +354,9 @@ fi
 rm -rf %{buildroot}
 
 %changelog
+* Tue Apr 16 2013 Orion Poplawski <orion at cora.nwra.com> - 3.1.1-3
+- Add upstream patch for ruby 2.0 support
+
 * Fri Mar 15 2013 Vít Ondruch <vondruch at redhat.com> - 3.1.1-2
 - Rebuild for https://fedoraproject.org/wiki/Features/Ruby_2.0.0
 


More information about the scm-commits mailing list