[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#780223: marked as done (unblock: puppet/3.7.2-3)



Your message dated Thu, 12 Mar 2015 17:34:08 +0100
with message-id <5501C000.4070704@thykier.net>
and subject line Re: Bug#780223: unblock: puppet/3.7.2-3
has caused the Debian Bug report #780223,
regarding unblock: puppet/3.7.2-3
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
780223: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=780223
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Dear Release Team,

I intend to upload puppet 3.7.2-3, fixing the #774643, #775795 and 
#778891 RC bugs and would like your pre-approval, since the list of 
changes is not small. In short, the changes introduced (grouped by bug) 
are:

 - #775795
   A patch to the Debian service provider, as attached in the bug 
   report.  This has been tested and working properly on both, sysv and 
   systemd systems.

 - #774643
   + A patch attached to the bug report, that does the minimal set of 
     changes required for puppet to work with ActiveRecord 4. The patch 
     has been tested in production without any ill side-effects. Note 
     that the patch has been slightly improved to require 
     deprecated_finders only on ActiveRecord versions that strictly need 
     it.
   + Have puppetmaster-common Recommend: ruby-activerecord and 
     ruby-activerecord-deprecated-finders. Although activerecord was not 
     in the Recommends: before, the dependency on deprecated-finders is 
     not straightforward for users to figure out and so was deemed 
     necessary to add.

 - #778891
   + A patch submitted originally with the bug report that enables the 
     systemd unit to use $DAEMON_OPTS, solving part of the issue.
   + Partial revert of an earlier decision to remove (using rm_conffile) 
     /etc/default/puppet, as the defaults file is still used by the 
     initscript and systemd unit file if present.
   + A change in puppet-common's preinst to administratively disable the 
     puppet agent when upgrading from versions where the START flag had 
     an impact. This is done to preserve the semantics of the START flag
     in the same rationale as the initial decision to disable the puppet 
     agent on fresh installs. This specific case was also discussed in 
     #778891 as having potential security implications.
   + A NEWS entry clarifying the above behavior and adding a note for
     people running puppet via cron (a rather common setup) that the 
     upgrade might administratively disable the agent.

The upload also adds upstream metadata in debian/upstream/metadata and 
fixes the Source field in debian/copyright.

See the attached debdiff for the full set of changes.

Regards,
Apollon

unblock puppet/3.7.2-3

-- System Information:
Debian Release: 8.0
  APT prefers testing
  APT policy: (500, 'testing'), (90, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=el_GR.UTF-8, LC_CTYPE=el_GR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
diff -Nru puppet-3.7.2/debian/changelog puppet-3.7.2/debian/changelog
--- puppet-3.7.2/debian/changelog	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/changelog	2015-03-10 19:57:24.000000000 +0200
@@ -1,3 +1,21 @@
+puppet (3.7.2-3) unstable; urgency=medium
+
+  [ Apollon Oikonomopoulos ]
+  * Team upload.
+  * Fix service enable/disable in the Debian service provider (Closes: #775795)
+  * Fix stored configs with ActiveRecord 4.x (Closes: #774643)
+    + puppetmaster-common: add Recommends for stored configs
+  * Preserve and honor changes in /etc/default/puppet (Closes: #778891)
+    + Do not remove /etc/default/puppet on upgrade
+    + Disable the agent when upgrading and START != yes
+    + puppet.service: pass $DAEMON_OPTS to puppet agent. Thanks to Rik Theys!
+    + Add a NEWS note about the START flag
+
+  [ Stig Sandbeck Mathisen ]
+  * Add upstream metadata
+
+ -- Apollon Oikonomopoulos <apoikos@debian.org>  Tue, 10 Mar 2015 14:33:45 +0200
+
 puppet (3.7.2-2) unstable; urgency=medium
 
   [ Gaudenz Steinlin ]
diff -Nru puppet-3.7.2/debian/control puppet-3.7.2/debian/control
--- puppet-3.7.2/debian/control	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/control	2015-03-10 19:57:24.000000000 +0200
@@ -81,6 +81,8 @@
  ruby | ruby-interpreter,
 Breaks: puppet (<< 0.24.7-1), puppetmaster (<< 2.7.6-1~)
 Replaces: puppet (<< 0.24.7-1), puppetmaster (<< 2.7.6-1~)
+Recommends: ruby-activerecord,
+ ruby-activerecord-deprecated-finders
 Suggests:
  apache2 | nginx,
  puppet-el,
diff -Nru puppet-3.7.2/debian/copyright puppet-3.7.2/debian/copyright
--- puppet-3.7.2/debian/copyright	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/copyright	2015-03-10 16:11:08.000000000 +0200
@@ -1,6 +1,6 @@
 Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 Upstream-Name: Puppet
-Source: git://github.com/reductivelabs/puppet.git,
+Source: https://github.com/puppetlabs/puppet
 
 Files: *
 Copyright: 2004-2012 Puppet Labs Inc
diff -Nru puppet-3.7.2/debian/NEWS puppet-3.7.2/debian/NEWS
--- puppet-3.7.2/debian/NEWS	2014-11-13 13:56:19.000000000 +0200
+++ puppet-3.7.2/debian/NEWS	2015-03-10 19:57:24.000000000 +0200
@@ -1,3 +1,17 @@
+puppet (3.7.2-3) unstable; urgency=medium
+ 
+  The START flag in /etc/default/puppet is since 3.2.4-1 no longer effective.
+  To preserve state across upgrades for old setups where the puppet agent was
+  disabled using the START flag, the agent will be disabled using its built-in
+  disable facility if START is not set to true. In that case, you will need to
+  run "puppet agent --enable" before the agent can connect to a puppet master.
+
+  On systems running the puppet agent via cron, make sure that you do not rely
+  on the START variable in /etc/default/puppet and instead disable the
+  service using update-rc.d or systemctl.
+
+ -- Apollon Oikonomopoulos <apoikos@debian.org>  Tue, 10 Mar 2015 14:54:15 +0200
+
 puppet (3.2.4-1) unstable; urgency=high
 
   The puppet agent is now started by default, regardless of init system.
diff -Nru puppet-3.7.2/debian/patches/0005-Fix-service-listing-and-enable-disable-in-Debian.patch puppet-3.7.2/debian/patches/0005-Fix-service-listing-and-enable-disable-in-Debian.patch
--- puppet-3.7.2/debian/patches/0005-Fix-service-listing-and-enable-disable-in-Debian.patch	1970-01-01 02:00:00.000000000 +0200
+++ puppet-3.7.2/debian/patches/0005-Fix-service-listing-and-enable-disable-in-Debian.patch	2015-03-10 16:11:08.000000000 +0200
@@ -0,0 +1,161 @@
+From a9b76dbfba96f537227c445297d3ccd115de46ca Mon Sep 17 00:00:00 2001
+From: Apollon Oikonomopoulos <apoikos@debian.org>
+Date: Fri, 27 Feb 2015 10:55:34 +0200
+Subject: [PATCH] Fix service listing and enable/disable in Debian
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add two support methods to detect when we're running systemd as PID 1
+and if a service has only an initscript.
+
+Use these to implement the following functionality:
+
+ • Under systemd, use systemctl enable/disable for all services. This
+   works correctly for all types of services.
+
+ • Under systemd, use systemctl is-enabled only for services that have a
+   systemd unit file and fall back to invoke-rc.d for sysv services.
+
+Also, fix self.instances to augment the list of systemd-enabled services
+with the sysv services.
+
+Finally drop pre-2.88 sysv-rc support and use `update-rc.d enable' for
+all services when running under sysv-rc, preserving order changes.
+---
+ lib/puppet/provider/service/debian.rb | 94 ++++++++++++++++++++++++++---------
+ 1 file changed, 71 insertions(+), 23 deletions(-)
+
+diff --git a/lib/puppet/provider/service/debian.rb b/lib/puppet/provider/service/debian.rb
+index 9f7a2f5..7a26409 100644
+--- a/lib/puppet/provider/service/debian.rb
++++ b/lib/puppet/provider/service/debian.rb
+@@ -15,6 +15,7 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
+   # http://projects.reductivelabs.com/issues/2538
+   # is resolved.
+   commands :invoke_rc => "/usr/sbin/invoke-rc.d"
++  optional_commands :systemctl => "/bin/systemctl"
+ 
+   # This isn't being used directly, it's just here to ensure
+   # that the /usr/sbin/service binary is available.
+@@ -23,38 +24,82 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
+ 
+   defaultfor :operatingsystem => :debian
+ 
++  def self.runs_on_systemd?
++    Dir.exists? "/run/systemd/system"
++  end
++
++  def is_sysv_unit?
++    # The sysv generator sets the SourcePath attribute to the name of the
++    # initscript. Use this to detect whether a unit is backed by an initscript
++    # or not.
++    source = systemctl(:show, "-pSourcePath", @resource[:name])
++    source.start_with? "SourcePath=/etc/init.d/"
++  end
++
++  def self.instances
++    # We need to merge services with systemd unit files with those only having
++    # an initscript. Note that we could use `systemctl --all` to get sysv
++    # services as well, however it would only output *enabled* services.
++    i = {}
++    if self.runs_on_systemd?
++      begin
++        output = systemctl('list-unit-files', '--type', 'service', '--full', '--all',  '--no-pager')
++        output.scan(/^(\S+)\.service\s+(disabled|enabled)\s*$/i).each do |m|
++          i[m[0]] = new(:name => m[0])
++        end
++      rescue Puppet::ExecutionFailure
++      end
++    end
++    get_services(defpath).each do |sysv|
++      unless i.has_key?(sysv.name)
++        i[sysv.name] = sysv
++      end
++    end
++    return i.values
++  end
++
+   # Remove the symlinks
+   def disable
+-    if `dpkg --compare-versions $(dpkg-query -W --showformat '${Version}' sysv-rc) ge 2.88 ; echo $?`.to_i == 0
+-      update_rc @resource[:name], "disable"
++    if self.class.runs_on_systemd?
++      systemctl(:disable, @resource[:name])
+     else
+-      update_rc "-f", @resource[:name], "remove"
+-      update_rc @resource[:name], "stop", "00", "1", "2", "3", "4", "5", "6", "."
++      update_rc @resource[:name], "disable"
+     end
+   end
+ 
+   def enabled?
+-    # TODO: Replace system call when Puppet::Util::Execution.execute gives us a way
+-    # to determine exit status.  http://projects.reductivelabs.com/issues/2538
+-    system("/usr/sbin/invoke-rc.d", "--quiet", "--query", @resource[:name], "start")
+-
+-    # 104 is the exit status when you query start an enabled service.
+-    # 106 is the exit status when the policy layer supplies a fallback action
+-    # See x-man-page://invoke-rc.d
+-    if [104, 106].include?($CHILD_STATUS.exitstatus)
+-      return :true
+-    elsif [105].include?($CHILD_STATUS.exitstatus)
+-      # 105 is unknown, which generally means the iniscript does not support query
+-      # The debian policy states that the initscript should support methods of query
+-      # For those that do not, peform the checks manually
+-      # http://www.debian.org/doc/debian-policy/ch-opersys.html
+-      if get_start_link_count >= 4
++    # Initscript-backed services have no enabled status in systemd, so we
++    # need to query them using invoke-rc.d.
++    if self.class.runs_on_systemd? and not is_sysv_unit?
++      begin
++        systemctl("is-enabled", @resource[:name])
+         return :true
+-      else
++      rescue Puppet::ExecutionFailure
+         return :false
+       end
+     else
+-      return :false
++      # TODO: Replace system call when Puppet::Util::Execution.execute gives us a way
++      # to determine exit status.  http://projects.reductivelabs.com/issues/2538
++      system("/usr/sbin/invoke-rc.d", "--quiet", "--query", @resource[:name], "start")
++
++      # 104 is the exit status when you query start an enabled service.
++      # 106 is the exit status when the policy layer supplies a fallback action
++      # See x-man-page://invoke-rc.d
++      if [104, 106].include?($CHILD_STATUS.exitstatus)
++        return :true
++      elsif [105].include?($CHILD_STATUS.exitstatus)
++        # 105 is unknown, which generally means the iniscript does not support query
++        # The debian policy states that the initscript should support methods of query
++        # For those that do not, peform the checks manually
++        # http://www.debian.org/doc/debian-policy/ch-opersys.html
++        if get_start_link_count >= 4
++          return :true
++        else
++          return :false
++        end
++      else
++        return :false
++      end
+     end
+   end
+ 
+@@ -63,8 +108,11 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
+   end
+ 
+   def enable
+-    update_rc "-f", @resource[:name], "remove"
+-    update_rc @resource[:name], "defaults"
++    if self.class.runs_on_systemd?
++      systemctl(:enable, @resource[:name])
++    else
++      update_rc @resource[:name], "enable"
++    end
+   end
+ 
+   # The start, stop, restart and status command use service
+-- 
+2.1.4
+
diff -Nru puppet-3.7.2/debian/patches/0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch puppet-3.7.2/debian/patches/0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch
--- puppet-3.7.2/debian/patches/0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch	1970-01-01 02:00:00.000000000 +0200
+++ puppet-3.7.2/debian/patches/0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch	2015-03-10 19:57:24.000000000 +0200
@@ -0,0 +1,194 @@
+From 988b0aff88429f820ee247533b8aed4a77d11a62 Mon Sep 17 00:00:00 2001
+From: Apollon Oikonomopoulos <apoikos@debian.org>
+Date: Tue, 10 Mar 2015 19:46:39 +0200
+Subject: Stored configs compatibility with ActiveRecord 4.x
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Make ActiveRecord-based stored configs work again with ActiveRecord 4.x:
+
+ • Use AR::Base.clear_active_connections! instead of
+   AR::Base.verify_active_connections!
+
+ • Always call AR::Base.connection as a class method, never as an
+   instance method.
+
+ • Require 'activerecord/deprecated_finders' for AR versions later than 4.1 to
+   make all #find(:all) and #find_by_x methods work again.
+
+ • Silence AR's deprecation warnings. We know we are using deprecated
+   finders so these warnings are just (a lot of) noise.
+
+ • Drop all ":integer => true" options passed to add_index in the
+   schema. This was probably never a valid option anyway and was ignored
+   until Rails 4.x, but currently causes the DB bootstrapping to fail.
+---
+ lib/puppet/rails.rb                 |  5 ++++-
+ lib/puppet/rails/database/schema.rb | 20 ++++++++++----------
+ lib/puppet/rails/fact_name.rb       |  3 +++
+ lib/puppet/rails/fact_value.rb      |  3 +++
+ lib/puppet/rails/param_value.rb     |  4 ++--
+ lib/puppet/rails/resource_tag.rb    |  4 ++--
+ 6 files changed, 24 insertions(+), 15 deletions(-)
+
+diff --git a/lib/puppet/rails.rb b/lib/puppet/rails.rb
+index 2c97c02..adb20fb 100644
+--- a/lib/puppet/rails.rb
++++ b/lib/puppet/rails.rb
+@@ -8,6 +8,9 @@ module Puppet::Rails
+   TIME_DEBUG = true
+ 
+   def self.connect
++    # Silence activerecord deprecation warnings
++    ActiveSupport::Deprecation.silenced = true
++
+     # This global init does not work for testing, because we remove
+     # the state dir on every test.
+     return if ActiveRecord::Base.connected?
+@@ -26,7 +29,7 @@ module Puppet::Rails
+     # As of ActiveRecord 2.2 allow_concurrency has been deprecated and no longer has any effect.
+     ActiveRecord::Base.allow_concurrency = true if Puppet::Util.activerecord_version < 2.2
+ 
+-    ActiveRecord::Base.verify_active_connections!
++    ActiveRecord::Base.clear_active_connections!
+ 
+     begin
+       args = database_arguments
+diff --git a/lib/puppet/rails/database/schema.rb b/lib/puppet/rails/database/schema.rb
+index 931a1b6..1216719 100644
+--- a/lib/puppet/rails/database/schema.rb
++++ b/lib/puppet/rails/database/schema.rb
+@@ -19,8 +19,8 @@ class Puppet::Rails::Schema
+           t.column :updated_at, :datetime
+           t.column :created_at, :datetime
+         end
+-        add_index :resources, :host_id, :integer => true
+-        add_index :resources, :source_file_id, :integer => true
++        add_index :resources, :host_id
++        add_index :resources, :source_file_id
+ 
+         # Thanks, mysql!  MySQL requires a length on indexes in text fields.
+         # So, we provide them for mysql and handle everything else specially.
+@@ -45,8 +45,8 @@ class Puppet::Rails::Schema
+           t.column :updated_at, :datetime
+           t.column :created_at, :datetime
+         end
+-        add_index :resource_tags, :resource_id, :integer => true
+-        add_index :resource_tags, :puppet_tag_id, :integer => true
++        add_index :resource_tags, :resource_id
++        add_index :resource_tags, :puppet_tag_id
+ 
+         create_table :puppet_tags do |t|
+           t.column :name, :string
+@@ -55,7 +55,7 @@ class Puppet::Rails::Schema
+         end
+ 
+         # Oracle automatically creates a primary key index
+-        add_index :puppet_tags, :id, :integer => true if Puppet[:dbadapter] != "oracle_enhanced"
++        add_index :puppet_tags, :id if Puppet[:dbadapter] != "oracle_enhanced"
+ 
+         create_table :hosts do |t|
+           t.column :name, :string, :null => false
+@@ -69,7 +69,7 @@ class Puppet::Rails::Schema
+           t.column :source_file_id, :integer
+           t.column :created_at, :datetime
+         end
+-        add_index :hosts, :source_file_id, :integer => true
++        add_index :hosts, :source_file_id
+         add_index :hosts, :name
+ 
+         create_table :fact_names do |t|
+@@ -86,8 +86,8 @@ class Puppet::Rails::Schema
+           t.column :updated_at, :datetime
+           t.column :created_at, :datetime
+         end
+-        add_index :fact_values, :fact_name_id, :integer => true
+-        add_index :fact_values, :host_id, :integer => true
++        add_index :fact_values, :fact_name_id
++        add_index :fact_values, :host_id
+ 
+         create_table :param_values do |t|
+           t.column :value,  :text, :null => false
+@@ -97,8 +97,8 @@ class Puppet::Rails::Schema
+           t.column :updated_at, :datetime
+           t.column :created_at, :datetime
+         end
+-        add_index :param_values, :param_name_id, :integer => true
+-        add_index :param_values, :resource_id, :integer => true
++        add_index :param_values, :param_name_id
++        add_index :param_values, :resource_id
+ 
+         create_table :param_names do |t|
+           t.column :name, :string, :null => false
+diff --git a/lib/puppet/rails/fact_name.rb b/lib/puppet/rails/fact_name.rb
+index 073bbcb..5fe5264 100644
+--- a/lib/puppet/rails/fact_name.rb
++++ b/lib/puppet/rails/fact_name.rb
+@@ -1,4 +1,7 @@
+ require 'active_record'
++if Gem::Version.new(ActiveRecord::VERSION::STRING) >= Gem::Version.new('4.1')
++  require 'active_record/deprecated_finders'
++end
+ require 'puppet/rails'
+ require 'puppet/rails/fact_value'
+ 
+diff --git a/lib/puppet/rails/fact_value.rb b/lib/puppet/rails/fact_value.rb
+index 918c0ac..d1657b9 100644
+--- a/lib/puppet/rails/fact_value.rb
++++ b/lib/puppet/rails/fact_value.rb
+@@ -1,4 +1,7 @@
+ require 'active_record'
++if Gem::Version.new(ActiveRecord::VERSION::STRING) >= Gem::Version.new('4.1')
++  require 'active_record/deprecated_finders'
++end
+ 
+ class Puppet::Rails::FactValue < ActiveRecord::Base
+   belongs_to :fact_name
+diff --git a/lib/puppet/rails/param_value.rb b/lib/puppet/rails/param_value.rb
+index d7c88f8..e082ed8 100644
+--- a/lib/puppet/rails/param_value.rb
++++ b/lib/puppet/rails/param_value.rb
+@@ -48,7 +48,7 @@ class Puppet::Rails::ParamValue < ActiveRecord::Base
+ 
+   # returns an array of hash containing all the parameters of a given resource
+   def self.find_all_params_from_resource(db_resource)
+-    params = db_resource.connection.select_all("SELECT v.id, v.value, v.line, v.resource_id, v.param_name_id, n.name FROM param_values v INNER JOIN param_names n ON v.param_name_id=n.id WHERE v.resource_id=#{db_resource.id}")
++    params = ActiveRecord::Base.connection.select_all("SELECT v.id, v.value, v.line, v.resource_id, v.param_name_id, n.name FROM param_values v INNER JOIN param_names n ON v.param_name_id=n.id WHERE v.resource_id=#{db_resource.id}")
+     params.each do |val|
+       val['value'] = unserialize_value(val['value'])
+       val['line'] = val['line'] ? Integer(val['line']) : nil
+@@ -59,7 +59,7 @@ class Puppet::Rails::ParamValue < ActiveRecord::Base
+ 
+   # returns an array of hash containing all the parameters of a given host
+   def self.find_all_params_from_host(db_host)
+-    params = db_host.connection.select_all("SELECT v.id, v.value,  v.line, v.resource_id, v.param_name_id, n.name FROM param_values v INNER JOIN resources r ON v.resource_id=r.id INNER JOIN param_names n ON v.param_name_id=n.id WHERE r.host_id=#{db_host.id}")
++    params = ActiveRecord::Base.connection.select_all("SELECT v.id, v.value,  v.line, v.resource_id, v.param_name_id, n.name FROM param_values v INNER JOIN resources r ON v.resource_id=r.id INNER JOIN param_names n ON v.param_name_id=n.id WHERE r.host_id=#{db_host.id}")
+     params.each do |val|
+       val['value'] = unserialize_value(val['value'])
+       val['line'] = val['line'] ? Integer(val['line']) : nil
+diff --git a/lib/puppet/rails/resource_tag.rb b/lib/puppet/rails/resource_tag.rb
+index 1c1aa45..1493d3e 100644
+--- a/lib/puppet/rails/resource_tag.rb
++++ b/lib/puppet/rails/resource_tag.rb
+@@ -8,7 +8,7 @@ class Puppet::Rails::ResourceTag < ActiveRecord::Base
+ 
+   # returns an array of hash containing tags of resource
+   def self.find_all_tags_from_resource(db_resource)
+-    tags = db_resource.connection.select_all("SELECT t.id, t.resource_id, p.name FROM resource_tags t INNER JOIN puppet_tags p ON t.puppet_tag_id=p.id WHERE t.resource_id=#{db_resource.id}")
++    tags = ActiveRecord::Base.connection.select_all("SELECT t.id, t.resource_id, p.name FROM resource_tags t INNER JOIN puppet_tags p ON t.puppet_tag_id=p.id WHERE t.resource_id=#{db_resource.id}")
+     tags.each do |val|
+       val['resource_id'] = Integer(val['resource_id'])
+     end
+@@ -17,7 +17,7 @@ class Puppet::Rails::ResourceTag < ActiveRecord::Base
+ 
+   # returns an array of hash containing tags of a host
+   def self.find_all_tags_from_host(db_host)
+-    tags = db_host.connection.select_all("SELECT t.id, t.resource_id, p.name FROM resource_tags t INNER JOIN resources r ON t.resource_id=r.id INNER JOIN puppet_tags p ON t.puppet_tag_id=p.id WHERE r.host_id=#{db_host.id}")
++    tags = ActiveRecord::Base.connection.select_all("SELECT t.id, t.resource_id, p.name FROM resource_tags t INNER JOIN resources r ON t.resource_id=r.id INNER JOIN puppet_tags p ON t.puppet_tag_id=p.id WHERE r.host_id=#{db_host.id}")
+     tags.each do |val|
+       val['resource_id'] = Integer(val['resource_id'])
+     end
+-- 
+2.1.4
+
diff -Nru puppet-3.7.2/debian/patches/series puppet-3.7.2/debian/patches/series
--- puppet-3.7.2/debian/patches/series	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/patches/series	2015-03-10 16:11:08.000000000 +0200
@@ -2,3 +2,5 @@
 0002-Set-passenger-puppet-master-document-root.patch
 0003-fix-puppet-master-logcheck-rule.patch
 0004-debian-service-provider-use-service.patch
+0005-Fix-service-listing-and-enable-disable-in-Debian.patch
+0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch
diff -Nru puppet-3.7.2/debian/puppet-common.preinst puppet-3.7.2/debian/puppet-common.preinst
--- puppet-3.7.2/debian/puppet-common.preinst	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/puppet-common.preinst	2015-03-10 19:57:24.000000000 +0200
@@ -18,7 +18,7 @@
     tmp_lockfile=$(mktemp /var/lib/puppet/state/agent_disabled.lock.XXXXXXXX)
     lockfile=/var/lib/puppet/state/agent_disabled.lock
 
-    printf '{"disabled_message":"Disabled by default on new installations"}' \
+    printf '{"disabled_message":"Disabled by default on new or unconfigured old installations"}' \
         > $tmp_lockfile
 
     mv $tmp_lockfile $lockfile
@@ -29,10 +29,33 @@
         # disable the puppet agent on the first install
         if [ -z "$2" ]; then
             disable_puppet_agent
+        elif dpkg --compare-versions "$2" lt "3.2.4-1~" && \
+            [ -e "/etc/default/puppet" ]; then
+            # Also disable puppet if we use conffiles from a version where the
+            # START flag mattered.
+            . /etc/default/puppet
+
+            if [ "x$START" != "xtrue" -a "x$START" != "xyes" -a "x$START" != "x0" ]; then
+                # Note that "0" is not a typo, it reflects the checks done
+                # in wheezy's initscript.
+                disable_puppet_agent
+            fi
         fi
         ;;
 
     upgrade)
+        # Disable puppet if we are upgrading from a version where the START
+        # flag mattered.
+        if dpkg --compare-versions "$2" lt "3.2.4-1~" && \
+            [ -e "/etc/default/puppet" ]; then
+            . /etc/default/puppet
+
+            if [ "x$START" != "xtrue" -a "x$START" != "xyes" -a "x$START" != "x0" ]; then
+                # Note that "0" is not a typo, it reflects the checks done
+                # in wheezy's initscript.
+                disable_puppet_agent
+            fi
+        fi
         ;;
 
     abort-upgrade)
diff -Nru puppet-3.7.2/debian/puppet.postinst puppet-3.7.2/debian/puppet.postinst
--- puppet-3.7.2/debian/puppet.postinst	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/puppet.postinst	1970-01-01 02:00:00.000000000 +0200
@@ -1,44 +0,0 @@
-#!/bin/sh
-# postinst script for puppet
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-#        * <postinst> `configure' <most-recently-configured-version>
-#        * <old-postinst> `abort-upgrade' <new version>
-#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
-#          <new-version>
-#        * <postinst> `abort-remove'
-#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
-#          <failed-install-package> <version> `removing'
-#          <conflicting-package> <version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-
-case "$1" in
-    configure)
-    ;;
-
-    abort-upgrade|abort-remove|abort-deconfigure)
-    ;;
-
-    *)
-        echo "postinst called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-if dpkg-maintscript-helper supports rm_conffile; then
-    dpkg-maintscript-helper rm_conffile \
-        /etc/default/puppet 3.2.3-1 puppet -- "$@"
-fi
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
diff -Nru puppet-3.7.2/debian/puppet.postrm puppet-3.7.2/debian/puppet.postrm
--- puppet-3.7.2/debian/puppet.postrm	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/puppet.postrm	1970-01-01 02:00:00.000000000 +0200
@@ -1,42 +0,0 @@
-#!/bin/sh
-# postrm script for puppet
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-#        * <postrm> `remove'
-#        * <postrm> `purge'
-#        * <old-postrm> `upgrade' <new-version>
-#        * <new-postrm> `failed-upgrade' <old-version>
-#        * <new-postrm> `abort-install'
-#        * <new-postrm> `abort-install' <old-version>
-#        * <new-postrm> `abort-upgrade' <old-version>
-#        * <disappearer's-postrm> `disappear' <overwriter>
-#          <overwriter-version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-
-case "$1" in
-    purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
-        if dpkg-maintscript-helper supports rm_conffile; then
-            dpkg-maintscript-helper rm_conffile \
-                /etc/default/puppet 3.2.3-1 puppet -- "$@"
-        fi
-
-    ;;
-
-    *)
-        echo "postrm called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
diff -Nru puppet-3.7.2/debian/puppet.preinst puppet-3.7.2/debian/puppet.preinst
--- puppet-3.7.2/debian/puppet.preinst	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/puppet.preinst	1970-01-01 02:00:00.000000000 +0200
@@ -1,40 +0,0 @@
-#!/bin/sh
-# preinst script for #PACKAGE#
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-#        * <new-preinst> `install'
-#        * <new-preinst> `install' <old-version>
-#        * <new-preinst> `upgrade' <old-version>
-#        * <old-preinst> `abort-upgrade' <new-version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-
-case "$1" in
-    install|upgrade)
-    ;;
-
-    abort-upgrade)
-    ;;
-
-    *)
-        echo "preinst called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-if dpkg-maintscript-helper supports rm_conffile; then
-    dpkg-maintscript-helper rm_conffile \
-        /etc/default/puppet 3.2.3-1 puppet -- "$@"
-fi
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
diff -Nru puppet-3.7.2/debian/puppet.service puppet-3.7.2/debian/puppet.service
--- puppet-3.7.2/debian/puppet.service	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/puppet.service	2015-03-10 19:57:24.000000000 +0200
@@ -3,8 +3,9 @@
 
 [Service]
 Type=forking
+EnvironmentFile=-/etc/default/puppet
 PIDFile=/run/puppet/agent.pid
-ExecStart=/usr/bin/puppet agent
+ExecStart=/usr/bin/puppet agent $DAEMON_OPTS
 
 [Install]
 WantedBy=multi-user.target
diff -Nru puppet-3.7.2/debian/upstream/metadata puppet-3.7.2/debian/upstream/metadata
--- puppet-3.7.2/debian/upstream/metadata	1970-01-01 02:00:00.000000000 +0200
+++ puppet-3.7.2/debian/upstream/metadata	2015-03-10 16:11:08.000000000 +0200
@@ -0,0 +1,4 @@
+---
+Bug-Database: https://tickets.puppetlabs.com/browse/PUP
+Repository: https://github.com/puppetlabs/puppet.git
+Repository-Browse: https://github.com/puppetlabs/puppet

Attachment: signature.asc
Description: Digital signature


--- End Message ---
--- Begin Message ---
On 2015-03-12 11:59, Apollon Oikonomopoulos wrote:
> Control: tags -1 - moreinfo
> 
> Hi,
> 
> On 21:35 Wed 11 Mar     , Niels Thykier wrote:
>> Ack, looks good.  Please upload it to unstable and remove the moreinfo
>> tag once it has been accepted.
> 
> Uploaded and accepted into unstable with the following minor changes:
> 
>  - Add a note in README.Debian clarifying the dependencies needed for 
>    stored configs to work and noting the deprecation status.
> 
>  - Improve the ActiveRecord 4 patch to also include 
>    clear_active_connections! stubs in the testsuite's specs. We do not 
>    use the test suite directly, but are shipping it in puppet-testsuite, 
>    so I did the change for completeness.
> 
> Full debdiff since 3.7.2-2 and interdiff attached.
> 
> Regards,
> Apollon
> 

Unblocked, thanks.

~Niels

--- End Message ---

Reply to: