Hello community,

here is the log from the commit of package rubygem-puppet for openSUSE:Factory 
checked in at 2016-09-21 18:47:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-puppet (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-puppet.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-puppet"

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-puppet/rubygem-puppet.changes    
2016-04-22 16:24:38.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.rubygem-puppet.new/rubygem-puppet.changes       
2016-09-21 18:47:55.000000000 +0200
@@ -1,0 +2,26 @@
+Tue Aug 16 15:01:32 UTC 2016 - tampak...@opensuse.org
+
+- set the perms of the unicorn.conf to 644
+
+-------------------------------------------------------------------
+Wed Aug  3 10:51:14 UTC 2016 - tampak...@opensuse.org
+
+- Replace the greps with fillup-template to update the sysconfig files.
+  Fixes properly boo#916005
+
+-------------------------------------------------------------------
+Fri Jul 29 18:08:33 UTC 2016 - jeng...@inai.de
+
+- Run fdupes over practically everything that was installed,
+  fixing "files-duplicate /usr/lib64/ruby/gems/2.2.0/doc/
+  /puppet-3.8.7/ri/Puppet/Pops/Types/TypeFactory/any-c.ri" etc.
+
+-------------------------------------------------------------------
+Mon Jul 25 13:08:46 UTC 2016 - tampak...@opensuse.org
+
+- Update to 3.8.7:
+  
https://docs.puppetlabs.com/puppet/3.8/reference/release_notes.html#puppet-386
+  
https://docs.puppetlabs.com/puppet/3.8/reference/release_notes.html#puppet-387
+- Add -master-unicorn subpackage with unicorn systemd unit file and config
+
+-------------------------------------------------------------------

Old:
----
  puppet-3.8.5.gem

New:
----
  puppet-3.8.7.gem
  puppetmaster-unicorn.service
  rubygem-puppet-rpmlintrc
  unicorn.conf

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-puppet.spec ++++++
--- /var/tmp/diff_new_pack.Jnv2dw/_old  2016-09-21 18:47:57.000000000 +0200
+++ /var/tmp/diff_new_pack.Jnv2dw/_new  2016-09-21 18:47:57.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package rubygem-puppet
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -24,7 +24,7 @@
 #
 
 Name:           rubygem-puppet
-Version:        3.8.5
+Version:        3.8.7
 Release:        0
 %define mod_name puppet
 %define mod_full_name %{mod_name}-%{version}
@@ -43,6 +43,7 @@
 BuildRequires: fdupes
 Requires(pre): /usr/sbin/groupadd
 Requires(pre): /usr/sbin/useradd
+Requires(pre): %fillup_prereq
 Requires:      tar
 %if 0%{?suse_version} >= 1210
 BuildRequires: systemd
@@ -62,7 +63,10 @@
 Source:         http://rubygems.org/gems/%{mod_full_name}.gem
 Source1:        puppetmaster.fw
 Source2:        puppet.fw
-Source3:        gem2rpm.yml
+Source3:        puppetmaster-unicorn.service
+Source4:        unicorn.conf
+Source5:        %{name}-rpmlintrc
+Source6:        gem2rpm.yml
 # MANUAL
 Patch0:  %{mod_name}-zypper-lu.patch
 Patch1:  %{mod_name}-systemd-default.patch
@@ -88,6 +92,7 @@
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+find -type f -print0 | xargs -0 touch -r %{S:0}
 %gem_build
 
 %build
@@ -108,9 +113,17 @@
 for config_file in auth fileserver tagmail ; do
     install -m0644 $gemdir/conf/$config_file.conf 
%{buildroot}%{_sysconfdir}/%{mod_name}/$config_file.conf
 done
+install -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/%{mod_name}/unicorn.conf
+mkdir -p %{buildroot}%{_localstatedir}/adm/fillup-templates
+cp $gemdir/ext/redhat/client.sysconfig 
%{buildroot}/%{_localstatedir}/adm/fillup-templates/sysconfig.puppet
+cp $gemdir/ext/redhat/server.sysconfig 
%{buildroot}/%{_localstatedir}/adm/fillup-templates/sysconfig.puppetmaster
 %if 0%{?has_systemd}
 ln -sf service %{buildroot}/%{_sbindir}/rcpuppet
 ln -sf service %{buildroot}/%{_sbindir}/rcpuppetmaster
+ln -sf service %{buildroot}/%{_sbindir}/rcpuppetmaster-unicorn
+install -m 644 $gemdir/ext/systemd/puppet.service  
%{buildroot}%{_unitdir}/system/puppet.service
+install -m 644 $gemdir/ext/systemd/puppetmaster.service 
%{buildroot}%{_unitdir}/system/puppetmaster.service
+install -m 644 %{SOURCE3} 
%{buildroot}%{_unitdir}/system/puppetmaster-unicorn.service
 %else
 mkdir -p %{buildroot}%_initddir
 # fix old port arg
@@ -123,9 +136,6 @@
 
 install -m 644 %{SOURCE1} %{buildroot}/%{_fwdefdir}/puppetmasterd
 install -m 644 %{SOURCE2} %{buildroot}/%{_fwdefdir}/puppet
-# Latest git calls the service for agent puppet again
-install -m 644 $gemdir/ext/systemd/puppet.service  
%{buildroot}%{_unitdir}/system/puppet.service
-install -m 644 $gemdir/ext/systemd/puppetmaster.service 
%{buildroot}%{_unitdir}/system/puppetmaster.service
 
 for mandirX in $(ls $gemdir/man); do
     for manpage in $(ls $gemdir/man/$mandirX); do
@@ -133,7 +143,7 @@
     done
 done
 
-%fdupes -s %{buildroot}%{_mandir}
+%fdupes %{buildroot}%{_prefix}
 
 # Install vim syntax files
 install -Dp -m0644 $gemdir/ext/vim/ftdetect/%{mod_name}.vim 
%{buildroot}%{vim_data_dir}/ftdetect/%{mod_name}.vim
@@ -163,12 +173,12 @@
 %config(noreplace) %{_fwdefdir}/%{mod_name}
 %{_mandir}/man?/*
 %{_sbindir}/rcpuppet
+%if 0%{?has_systemd}
 %{_unitdir}/system/%{mod_name}.service
-%if 0%{?suse_version} == 1110
+%else
 %_initddir/%{mod_name}
-%dir /usr/lib/systemd
-%dir /usr/lib/systemd/system
 %endif
+%{_localstatedir}/adm/fillup-templates/sysconfig.puppet
 
 %pre
 getent group puppet >/dev/null || /usr/sbin/groupadd -r puppet
@@ -180,29 +190,21 @@
 %preun
 %if 0%{?has_systemd}
 %service_del_preun puppet.service
-%endif
-
-%if 0%{?suse_version} == 1110
+%else
 %stop_on_removal %{name}
 %endif
 
 %postun
 %if 0%{?has_systemd}
 %service_del_postun puppet.service
-%endif
-
-%if 0%{?suse_version} == 1110
+%else
 %insserv_cleanup
 %endif
 
 %post
+%fillup_only -n puppetmaster
 %if 0%{?has_systemd}
 %service_add_post puppet.service
-%else
-# Compatibility with old setups
-if [ -f /etc/sysconfig/puppet ] && [ -z "`grep 'PUPPET_EXTRA_OPTS="' 
/etc/sysconfig/puppet | grep ' --server=${PUPPET_SERVER} 
--masterport=${PUPPET_PORT} --logdest=${PUPPET_LOG}"'`" ]; then
-    echo 'PUPPET_EXTRA_OPTS=" --server=${PUPPET_SERVER} 
--masterport=${PUPPET_PORT} --logdest=${PUPPET_LOG} ${PUPPET_EXTRA_OPTS}"' >>  
/etc/sysconfig/puppet
-fi
 %endif
 
 %package master
@@ -212,11 +214,11 @@
 Obsoletes: puppet-server <= 3.7.3
 Provides:  puppet-master = %{version}-%{release}
 Provides:  puppetmaster = %{version}-%{release}
-%if 0%{?suse_version} > 1210
+%if 0%{?has_systemd}
 %{?systemd_requires}
 %endif
 
-# Requires:      rubygem-puppet = 3.8.4
+# Requires:      rubygem-puppet = 3.8.7
 %description master
 Puppet lets you centrally manage every important aspect of your system
 using a cross-platform specification language that manages all the
@@ -231,12 +233,12 @@
 %config(noreplace) %{_sysconfdir}/%{mod_name}/auth.conf
 %config(noreplace) %{_sysconfdir}/%{mod_name}/fileserver.conf
 %config(noreplace) %{_sysconfdir}/%{mod_name}/tagmail.conf
+%if 0%{?has_systemd}
 %{_unitdir}/system/puppetmaster.service
-%if 0%{?suse_version} == 1110
+%else
 %_initddir/puppetmaster
-%dir /usr/lib/systemd
-%dir /usr/lib/systemd/system
 %endif
+%{_localstatedir}/adm/fillup-templates/sysconfig.puppetmaster
 
 %pretrans master
 if [ -x /usr/bin/puppet ] && [ "`/usr/bin/puppet --version | grep '^3.3.1'`" 
]; then
@@ -254,27 +256,20 @@
 %preun master
 %if 0%{?has_systemd}
 %service_del_preun puppetmaster.service
-%endif
-
-%if 0%{?suse_version} == 1110
+%else
 %stop_on_removal %{name}
 %endif
 
 %postun master
 %if 0%{?has_systemd}
 %service_del_postun puppetmaster.service
-%endif
-
-%if 0%{?suse_version} == 1110
+%else
 %insserv_cleanup
 %endif
 
 %post master
 # Compatibility with old setups
-if [ -f /etc/sysconfig/puppetmasterd ] && [ -z "`grep 
'PUPPETMASTER_EXTRA_OPTS="' /etc/sysconfig/puppetmasterd | grep ' 
--manifest=${PUPPETMASTER_MANIFEST} --masterport=${PUPPETMASTER_PORTS[0]} 
--logdest ${PUPPETMASTER_LOG}"'`" ]; then
-    echo 'PUPPETMASTER_EXTRA_OPTS=" --manifest=${PUPPETMASTER_MANIFEST} 
--masterport=${PUPPETMASTER_PORTS[0]} --logdest ${PUPPETMASTER_LOG} 
${PUPPETMASTER_EXTRA_OPTS}' >>  /etc/sysconfig/puppet
-fi
-
+%fillup_only
 %if 0%{?has_systemd}
 %service_add_post puppetmaster.service
 %endif
@@ -289,6 +284,49 @@
 fi
 
 
+%package master-unicorn
+Summary:   Unicorn files for puppetmaster
+Group:     Productivity/Networking/System
+Requires:  rubygem-puppet-master = %{version}
+Requires:  rubygem(unicorn)
+BuildArch: noarch
+%if 0%{?has_systemd} > 1210
+%{?systemd_requires}
+%endif
+
+# Requires:      rubygem-puppet = 3.8.7
+%description master-unicorn
+Unicorn config and systemd files for puppetmaster
+
+%files master-unicorn
+%defattr(-,root,root,-)
+%config(noreplace) %{_sysconfdir}/%{mod_name}/unicorn.conf
+%if 0%{?has_systemd}
+%{_sbindir}/rcpuppetmaster-unicorn
+%{_unitdir}/system/puppetmaster-unicorn.service
+%endif
+
+%pre master-unicorn
+%if 0%{?has_systemd}
+%service_add_pre puppetmaster-unicorn.service
+%endif
+
+%preun master-unicorn
+%if 0%{?has_systemd}
+%service_del_preun puppetmaster-unicorn.service
+%endif
+
+%postun master-unicorn
+%if 0%{?has_systemd}
+%service_del_postun puppetmaster-unicorn.service
+%endif
+
+%post master-unicorn
+%if 0%{?has_systemd}
+%service_add_post puppetmaster-unicorn.service
+%endif
+
+
 %package vim
 Summary:     Vim syntax files for Puppet manifests
 Group:       Productivity/Text/Editors
@@ -300,7 +338,7 @@
 Provides:    puppet-vim = %{version}-%{release}
 Obsoletes:   puppet-vim < %{version}-%{release}
 
-# Requires:      rubygem-puppet = 3.8.4
+# Requires:      rubygem-puppet = 3.8.7
 %description vim
 Vim ftdetect and syntax files for Puppet manifests
 
@@ -323,7 +361,7 @@
 Supplements: packageand(emacs:%{name})
 Provides:    puppet-emacs = %{version}-%{release}
 
-# Requires:      rubygem-puppet = 3.8.4
+# Requires:      rubygem-puppet = 3.8.7
 %description emacs
 Emacs syntax files for Puppet manifests
 
@@ -331,7 +369,7 @@
 %defattr(-,root,root,-)
 # emacs-mode files
 %if 0%{?suse_version} <= 1230
-%{_datadir}/emacs/site-lisp/site-start.d
+%dir %{_datadir}/emacs/site-lisp/site-start.d
 %endif
 %{_datadir}/emacs/site-lisp/puppet-mode.el
 %{_datadir}/emacs/site-lisp/site-start.d/puppet-mode-init.el

++++++ gem2rpm.yml ++++++
--- /var/tmp/diff_new_pack.Jnv2dw/_old  2016-09-21 18:47:57.000000000 +0200
+++ /var/tmp/diff_new_pack.Jnv2dw/_new  2016-09-21 18:47:57.000000000 +0200
@@ -2,6 +2,9 @@
 :sources:
   - puppetmaster.fw
   - puppet.fw
+  - puppetmaster-unicorn.service
+  - unicorn.conf
+  - '%{name}-rpmlintrc'
 :summary: A network tool for managing many disparate systems
 :description: |-
   Puppet lets you centrally manage every important aspect of your system
@@ -14,6 +17,7 @@
   '%{mod_name}-systemd-default.patch': -p1
   '%{mod_name}-ruby-2_2.patch': -p1
   '%{mod_name}-systemd-default-on-new-suse.patch': -p1
+  '%{mod_name}-non_ASCII_user_comment.patch': -p1
 :main:
   :preamble: |-
     Provides:   %{mod_name} = %{version}-%{release}
@@ -39,6 +43,7 @@
   BuildRequires: fdupes
   Requires(pre): /usr/sbin/groupadd
   Requires(pre): /usr/sbin/useradd
+  Requires(pre): %fillup_prereq
   Requires:      tar
   %if 0%{?suse_version} >= 1210
   BuildRequires: systemd
@@ -58,9 +63,17 @@
   for config_file in auth fileserver tagmail ; do
       install -m0644 $gemdir/conf/$config_file.conf 
%{buildroot}%{_sysconfdir}/%{mod_name}/$config_file.conf
   done
+  install -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/%{mod_name}/unicorn.conf
+  mkdir -p %{buildroot}%{_localstatedir}/adm/fillup-templates
+  cp $gemdir/ext/redhat/client.sysconfig 
%{buildroot}/%{_localstatedir}/adm/fillup-templates/sysconfig.puppet
+  cp $gemdir/ext/redhat/server.sysconfig 
%{buildroot}/%{_localstatedir}/adm/fillup-templates/sysconfig.puppetmaster
   %if 0%{?has_systemd}
   ln -sf service %{buildroot}/%{_sbindir}/rcpuppet
   ln -sf service %{buildroot}/%{_sbindir}/rcpuppetmaster
+  ln -sf service %{buildroot}/%{_sbindir}/rcpuppetmaster-unicorn
+  install -m 644 $gemdir/ext/systemd/puppet.service  
%{buildroot}%{_unitdir}/system/puppet.service
+  install -m 644 $gemdir/ext/systemd/puppetmaster.service 
%{buildroot}%{_unitdir}/system/puppetmaster.service
+  install -m 644 %{SOURCE3} 
%{buildroot}%{_unitdir}/system/puppetmaster-unicorn.service
   %else
   mkdir -p %{buildroot}%_initddir
   # fix old port arg
@@ -73,9 +86,6 @@
 
   install -m 644 %{SOURCE1} %{buildroot}/%{_fwdefdir}/puppetmasterd
   install -m 644 %{SOURCE2} %{buildroot}/%{_fwdefdir}/puppet
-  # Latest git calls the service for agent puppet again
-  install -m 644 $gemdir/ext/systemd/puppet.service  
%{buildroot}%{_unitdir}/system/puppet.service
-  install -m 644 $gemdir/ext/systemd/puppetmaster.service 
%{buildroot}%{_unitdir}/system/puppetmaster.service
 
   for mandirX in $(ls $gemdir/man); do
       for manpage in $(ls $gemdir/man/$mandirX); do
@@ -83,7 +93,7 @@
       done
   done
 
-  %fdupes -s %{buildroot}%{_mandir}
+  %fdupes %{buildroot}%{_prefix}
 
   # Install vim syntax files
   install -Dp -m0644 $gemdir/ext/vim/ftdetect/%{mod_name}.vim 
%{buildroot}%{vim_data_dir}/ftdetect/%{mod_name}.vim
@@ -111,27 +121,19 @@
   :preun: |-
     %if 0%{?has_systemd}
     %service_del_preun puppet.service
-    %endif
-
-    %if 0%{?suse_version} == 1110
+    %else
     %stop_on_removal %{name}
     %endif
   :postun: |-
     %if 0%{?has_systemd}
     %service_del_postun puppet.service
-    %endif
-
-    %if 0%{?suse_version} == 1110
+    %else
     %insserv_cleanup
     %endif
   :post: |-
+    %fillup_only -n puppetmaster
     %if 0%{?has_systemd}
     %service_add_post puppet.service
-    %else
-    # Compatibility with old setups
-    if [ -f /etc/sysconfig/puppet ] && [ -z "`grep 'PUPPET_EXTRA_OPTS="' 
/etc/sysconfig/puppet | grep ' --server=${PUPPET_SERVER} 
--masterport=${PUPPET_PORT} --logdest=${PUPPET_LOG}"'`" ]; then
-        echo 'PUPPET_EXTRA_OPTS=" --server=${PUPPET_SERVER} 
--masterport=${PUPPET_PORT} --logdest=${PUPPET_LOG} ${PUPPET_EXTRA_OPTS}"' >>  
/etc/sysconfig/puppet
-    fi
     %endif
 :filelist: |-
   %attr(0750,%{mod_name},%{mod_name}) %dir %{_localstatedir}/lib/%{mod_name}
@@ -141,12 +143,12 @@
   %config(noreplace) %{_fwdefdir}/%{mod_name}
   %{_mandir}/man?/*
   %{_sbindir}/rcpuppet
+  %if 0%{?has_systemd}
   %{_unitdir}/system/%{mod_name}.service
-  %if 0%{?suse_version} == 1110
+  %else
   %_initddir/%{mod_name}
-  %dir /usr/lib/systemd
-  %dir /usr/lib/systemd/system
   %endif
+  %{_localstatedir}/adm/fillup-templates/sysconfig.puppet
 :custom_pkgs:
   :master:
     :preamble: |-
@@ -156,7 +158,7 @@
       Obsoletes: puppet-server <= 3.7.3
       Provides:  puppet-master = %{version}-%{release}
       Provides:  puppetmaster = %{version}-%{release}
-      %if 0%{?suse_version} > 1210
+      %if 0%{?has_systemd}
       %{?systemd_requires}
       %endif
     :description: |-
@@ -180,25 +182,18 @@
       :preun: |-
         %if 0%{?has_systemd}
         %service_del_preun puppetmaster.service
-        %endif
-
-        %if 0%{?suse_version} == 1110
+        %else
         %stop_on_removal %{name}
         %endif
       :postun: |-
         %if 0%{?has_systemd}
         %service_del_postun puppetmaster.service
-        %endif
-
-        %if 0%{?suse_version} == 1110
+        %else
         %insserv_cleanup
         %endif
       :post: |-
         # Compatibility with old setups
-        if [ -f /etc/sysconfig/puppetmasterd ] && [ -z "`grep 
'PUPPETMASTER_EXTRA_OPTS="' /etc/sysconfig/puppetmasterd | grep ' 
--manifest=${PUPPETMASTER_MANIFEST} --masterport=${PUPPETMASTER_PORTS[0]} 
--logdest ${PUPPETMASTER_LOG}"'`" ]; then
-            echo 'PUPPETMASTER_EXTRA_OPTS=" 
--manifest=${PUPPETMASTER_MANIFEST} --masterport=${PUPPETMASTER_PORTS[0]} 
--logdest ${PUPPETMASTER_LOG} ${PUPPETMASTER_EXTRA_OPTS}' >>  
/etc/sysconfig/puppet
-        fi
-
+        %fillup_only
         %if 0%{?has_systemd}
         %service_add_post puppetmaster.service
         %endif
@@ -217,11 +212,46 @@
       %config(noreplace) %{_sysconfdir}/%{mod_name}/auth.conf
       %config(noreplace) %{_sysconfdir}/%{mod_name}/fileserver.conf
       %config(noreplace) %{_sysconfdir}/%{mod_name}/tagmail.conf
+      %if 0%{?has_systemd}
       %{_unitdir}/system/puppetmaster.service
-      %if 0%{?suse_version} == 1110
+      %else
       %_initddir/puppetmaster
-      %dir /usr/lib/systemd
-      %dir /usr/lib/systemd/system
+      %endif
+      %{_localstatedir}/adm/fillup-templates/sysconfig.puppetmaster
+  :master-unicorn:
+    :preamble: |-
+      Summary:   Unicorn files for puppetmaster
+      Group:     Productivity/Networking/System
+      Requires:  rubygem-puppet-master = %{version}
+      Requires:  rubygem(unicorn)
+      BuildArch: noarch
+      %if 0%{?has_systemd} > 1210
+      %{?systemd_requires}
+      %endif
+    :description: |-
+      Unicorn config and systemd files for puppetmaster
+    :scripts:
+      :pre: |-
+        %if 0%{?has_systemd}
+        %service_add_pre puppetmaster-unicorn.service
+        %endif
+      :preun: |-
+        %if 0%{?has_systemd}
+        %service_del_preun puppetmaster-unicorn.service
+        %endif
+      :postun: |-
+        %if 0%{?has_systemd}
+        %service_del_postun puppetmaster-unicorn.service
+        %endif
+      :post: |-
+        %if 0%{?has_systemd}
+        %service_add_post puppetmaster-unicorn.service
+        %endif
+    :filelist: |-
+      %config(noreplace) %{_sysconfdir}/%{mod_name}/unicorn.conf
+      %if 0%{?has_systemd}
+      %{_sbindir}/rcpuppetmaster-unicorn
+      %{_unitdir}/system/puppetmaster-unicorn.service
       %endif
   :vim:
     :preamble: |-
@@ -255,7 +285,7 @@
     :filelist: |-
       # emacs-mode files
       %if 0%{?suse_version} <= 1230
-      %{_datadir}/emacs/site-lisp/site-start.d
+      %dir %{_datadir}/emacs/site-lisp/site-start.d
       %endif
       %{_datadir}/emacs/site-lisp/puppet-mode.el
       %{_datadir}/emacs/site-lisp/site-start.d/puppet-mode-init.el

++++++ puppet-3.8.5.gem -> puppet-3.8.7.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/build_defaults.yaml new/ext/build_defaults.yaml
--- old/ext/build_defaults.yaml 1970-01-01 01:00:00.000000000 +0100
+++ new/ext/build_defaults.yaml 1970-01-01 01:00:00.000000000 +0100
@@ -26,8 +26,8 @@
     repo: 'git://github.com/puppetlabs/hiera.git'
   sys:
     ref:
-      x86: 'refs/tags/1.9.3-p551.8'
-      x64: 'refs/tags/2.0.0.11-x64'
+      x86: 'refs/tags/1.9.3-p551.10'
+      x64: 'refs/tags/2.0.0.13-x64'
     repo: 'git://github.com/puppetlabs/puppet-win32-ruby.git'
 apt_signing_server: 'apt.puppetlabs.com'
 apt_repo_url: 'http://apt.puppetlabs.com'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/nagios/check_puppet.rb 
new/ext/nagios/check_puppet.rb
--- old/ext/nagios/check_puppet.rb      1970-01-01 01:00:00.000000000 +0100
+++ new/ext/nagios/check_puppet.rb      1970-01-01 01:00:00.000000000 +0100
@@ -27,17 +27,17 @@
         o.on(
           "-s", "--statefile=statefile", String, "The state file",
 
-    "Default: #{OPTIONS[:statefile]}") { |OPTIONS[:statefile]| }
+    "Default: #{OPTIONS[:statefile]}") { |op| OPTIONS[:statefile] = op }
 
       o.on(
         "-p", "--process=processname", String, "The process to check",
 
-    "Default: #{OPTIONS[:process]}")   { |OPTIONS[:process]| }
+    "Default: #{OPTIONS[:process]}")   { |op| OPTIONS[:process] = op }
 
       o.on(
         "-i", "--interval=value", Integer,
 
-    "Default: #{OPTIONS[:interval]} minutes")  { |OPTIONS[:interval]| }
+    "Default: #{OPTIONS[:interval]} minutes")  { |op| OPTIONS[:interval] = op }
 
     o.separator ""
     o.on_tail("-h", "--help", "Show this help message.") do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/puppet-nm-dispatcher new/ext/puppet-nm-dispatcher
--- old/ext/puppet-nm-dispatcher        1970-01-01 01:00:00.000000000 +0100
+++ new/ext/puppet-nm-dispatcher        1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
-#!/bin/bash
-#
-# Restart puppet on network changes to pickup changes to /etc/resolv.conf
-#
-# https://projects.puppetlabs.com/issues/2776
-# https://bugzilla.redhat.com/532085
-
-
-if [ -f "/bin/systemctl" ]  ; then
-  [[ $2 =~ ^(up|down)$ ]] && /bin/systemctl try-restart puppet.service || :
-else
-  [[ $2 =~ ^(up|down)$ ]] && /sbin/service puppet condrestart || :
-fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/redhat/puppet.spec.erb 
new/ext/redhat/puppet.spec.erb
--- old/ext/redhat/puppet.spec.erb      1970-01-01 01:00:00.000000000 +0100
+++ new/ext/redhat/puppet.spec.erb      1970-01-01 01:00:00.000000000 +0100
@@ -181,22 +181,12 @@
 # Create puppet modules directory for puppet module tool
 mkdir -p %{buildroot}%{_sysconfdir}/%{name}/modules
 
-
-# Install a NetworkManager dispatcher script to pickup changes to
-# # /etc/resolv.conf and such (https://bugzilla.redhat.com/532085).
-mkdir -p %{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d
-cp -pr ext/puppet-nm-dispatcher \
-  %{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d/98-%{name}
-
 %files
 %defattr(-, root, root, 0755)
 %doc LICENSE README.md examples
 %{_bindir}/puppet
 %{_bindir}/extlookup2hiera
 %{puppet_libdir}/*
-%dir %{_sysconfdir}/NetworkManager
-%dir %{_sysconfdir}/NetworkManager/dispatcher.d
-%{_sysconfdir}/NetworkManager/dispatcher.d/98-puppet
 %if 0%{?_with_systemd}
 %{_unitdir}/puppet.service
 %{_unitdir}/puppetagent.service
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/systemd/puppet.service 
new/ext/systemd/puppet.service
--- old/ext/systemd/puppet.service      1970-01-01 01:00:00.000000000 +0100
+++ new/ext/systemd/puppet.service      1970-01-01 01:00:00.000000000 +0100
@@ -7,6 +7,7 @@
 EnvironmentFile=-/etc/sysconfig/puppetagent
 EnvironmentFile=-/etc/sysconfig/puppet
 ExecStart=/usr/bin/puppet agent $PUPPET_EXTRA_OPTS --no-daemonize
+ExecReload=/bin/kill -HUP $MAINPID
 KillMode=process
 
 [Install]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puppet/module_tool/tar/mini.rb 
new/lib/puppet/module_tool/tar/mini.rb
--- old/lib/puppet/module_tool/tar/mini.rb      1970-01-01 01:00:00.000000000 
+0100
+++ new/lib/puppet/module_tool/tar/mini.rb      1970-01-01 01:00:00.000000000 
+0100
@@ -31,7 +31,7 @@
     Archive::Tar::Minitar.open(tarfile).collect do |entry|
       flag = entry.typeflag
       if flag.nil? || flag =~ /[[:digit:]]/ && (0..7).include?(flag.to_i)
-        entry.name
+        entry.full_name
       else
         Puppet.debug "Invalid tar flag '#{flag}' will not be extracted: 
#{entry.name}"
         next
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puppet/pops/evaluator/runtime3_support.rb 
new/lib/puppet/pops/evaluator/runtime3_support.rb
--- old/lib/puppet/pops/evaluator/runtime3_support.rb   1970-01-01 
01:00:00.000000000 +0100
+++ new/lib/puppet/pops/evaluator/runtime3_support.rb   1970-01-01 
01:00:00.000000000 +0100
@@ -304,6 +304,15 @@
     # a proper Issue. Now the result is "Error while evaluating a Resource 
Statement" with the message
     # from the raised exception. (It may be good enough).
 
+
+    # In 3.x scope does not resolve classes as absolute names.
+    # In 4.x it does. This comment, and the conditional logic in the if below
+    # should be removed when merged to 4.x
+    #
+    if type_name == CLASS_STRING
+      resource_titles = resource_titles.map {|s| s.index('::') != 0 ? "::#{s}" 
: s }
+    end
+
     # resolve in scope.
     fully_qualified_type, resource_titles = 
scope.resolve_type_and_titles(type_name, resource_titles)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puppet/pops/issues.rb 
new/lib/puppet/pops/issues.rb
--- old/lib/puppet/pops/issues.rb       1970-01-01 01:00:00.000000000 +0100
+++ new/lib/puppet/pops/issues.rb       1970-01-01 01:00:00.000000000 +0100
@@ -73,19 +73,30 @@
       instance_eval &block
     end
 
-    # Returns the label provider given as a key in the hash passed to #format.
-    # If given an argument, calls #label on the label provider (caller would 
otherwise have to
-    # call label.label(it)
+    # Obtains the label provider given as a key `:label` in the hash passed to 
#format. The label provider is
+    # return if no arguments are given. If given an argument, returns the 
result of calling #label on the label
+    # provider.
     #
-    def label(it = nil)
-      raise "Label provider key :label must be set to produce the text of the 
message!" unless @data[:label]
-      it.nil? ? @data[:label] : @data[:label].label(it)
+    # @param args [Object] one object to obtain a label for or zero arguments 
to obtain the label provider
+    # @return [Puppet::Pops::LabelProvider,String] the label provider or label 
depending on if an argument is given or not
+    # @raise [Puppet::Error] if no label provider is found
+    def label(*args)
+      args.empty? ? label_provider : label_provider.label(args[0])
+    end
+
+    # Returns the label provider given as key `:label` in the hash passed to 
#format.
+    # @return [Puppet::Pops::LabelProvider] the label provider
+    # @raise [Puppet::Error] if no label provider is found
+    def label_provider
+      label_provider = @data[:label]
+      raise Puppet::Error, 'Label provider key :label must be set to produce 
the text of the message!' unless label_provider
+      label_provider
     end
 
     # Returns the label provider given as a key in the hash passed to #format.
     #
     def semantic
-      raise "Label provider key :semantic must be set to produce the text of 
the message!" unless @data[:semantic]
+      raise Puppet::Error, 'Label provider key :semantic must be set to 
produce the text of the message!' unless @data[:semantic]
       @data[:semantic]
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puppet/pops/types/type_calculator.rb 
new/lib/puppet/pops/types/type_calculator.rb
--- old/lib/puppet/pops/types/type_calculator.rb        1970-01-01 
01:00:00.000000000 +0100
+++ new/lib/puppet/pops/types/type_calculator.rb        1970-01-01 
01:00:00.000000000 +0100
@@ -886,6 +886,8 @@
     case o
     when :default
       Types::PDefaultType.new()
+    when :undef
+      Types::PUndefType.new()
     else
       infer_Object(o)
     end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puppet/provider/service/launchd.rb 
new/lib/puppet/provider/service/launchd.rb
--- old/lib/puppet/provider/service/launchd.rb  1970-01-01 01:00:00.000000000 
+0100
+++ new/lib/puppet/provider/service/launchd.rb  1970-01-01 01:00:00.000000000 
+0100
@@ -206,7 +206,7 @@
   def self.read_plist(path)
     begin
       return Plist::parse_xml(path)
-    rescue ArgumentError => detail
+    rescue ArgumentError, NoMethodError => detail
       Puppet.debug("Error reading #{path}: #{detail}. Retrying with plutil.")
     end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puppet/provider/user/user_role_add.rb 
new/lib/puppet/provider/user/user_role_add.rb
--- old/lib/puppet/provider/user/user_role_add.rb       1970-01-01 
01:00:00.000000000 +0100
+++ new/lib/puppet/provider/user/user_role_add.rb       1970-01-01 
01:00:00.000000000 +0100
@@ -167,10 +167,12 @@
   end
 
   def password
-    shadow_entry[1] if shadow_entry
+    return :absent unless shadow_entry
+    shadow_entry[1]
   end
 
   def password_min_age
+    return :absent unless shadow_entry
     shadow_entry[3].empty? ? -1 : shadow_entry[3]
   end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puppet/version.rb new/lib/puppet/version.rb
--- old/lib/puppet/version.rb   1970-01-01 01:00:00.000000000 +0100
+++ new/lib/puppet/version.rb   1970-01-01 01:00:00.000000000 +0100
@@ -7,7 +7,7 @@
 
 
 module Puppet
-  PUPPETVERSION = '3.8.5'
+  PUPPETVERSION = '3.8.7'
 
   ##
   # version is a public API method intended to always provide a fast and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        1970-01-01 01:00:00.000000000 +0100
+++ new/metadata        1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +1,7 @@
 --- !ruby/object:Gem::Specification
 name: puppet
 version: !ruby/object:Gem::Version
-  version: 3.8.5
+  version: 3.8.7
   prerelease: 
 platform: ruby
 authors:
@@ -9,7 +9,7 @@
 autorequire: 
 bindir: bin
 cert_chain: []
-date: 2016-01-21 00:00:00.000000000 Z
+date: 2016-04-25 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: facter
@@ -1415,7 +1415,6 @@
 - ext/upload_facts.rb
 - ext/nagios/naggen
 - ext/nagios/check_puppet.rb
-- ext/puppet-nm-dispatcher
 - ext/freebsd/puppetmasterd
 - ext/freebsd/puppetd
 - ext/dbfix.sql
@@ -1783,6 +1782,7 @@
 - spec/fixtures/releases/jamtur01-apache/manifests/ssl.pp
 - spec/fixtures/releases/jamtur01-apache/manifests/params.pp
 - spec/fixtures/hiera.yaml
+- spec/fixtures/module.tar.gz
 - spec/fixtures/manifests/site.pp
 - spec/fixtures/java.tgz
 - spec/integration/environments/default_manifest_spec.rb
@@ -1840,6 +1840,7 @@
 - spec/integration/parser/conditionals_spec.rb
 - spec/integration/parser/parser_spec.rb
 - spec/integration/parser/collector_spec.rb
+- spec/integration/parser/dynamic_scoping_spec.rb
 - spec/integration/parser/catalog_spec.rb
 - spec/integration/parser/compiler_spec.rb
 - spec/integration/parser/environment_spec.rb
@@ -1847,6 +1848,7 @@
 - spec/integration/parser/functions/require_spec.rb
 - spec/integration/parser/scope_spec.rb
 - spec/integration/parser/undef_param_spec.rb
+- spec/integration/module_tool/tar/mini_spec.rb
 - spec/integration/type_spec.rb
 - spec/integration/agent/logging_spec.rb
 - spec/integration/ssl/certificate_request_spec.rb
@@ -2880,6 +2882,7 @@
 - spec/fixtures/releases/jamtur01-apache/manifests/ssl.pp
 - spec/fixtures/releases/jamtur01-apache/manifests/params.pp
 - spec/fixtures/hiera.yaml
+- spec/fixtures/module.tar.gz
 - spec/fixtures/manifests/site.pp
 - spec/fixtures/java.tgz
 - spec/integration/environments/default_manifest_spec.rb
@@ -2937,6 +2940,7 @@
 - spec/integration/parser/conditionals_spec.rb
 - spec/integration/parser/parser_spec.rb
 - spec/integration/parser/collector_spec.rb
+- spec/integration/parser/dynamic_scoping_spec.rb
 - spec/integration/parser/catalog_spec.rb
 - spec/integration/parser/compiler_spec.rb
 - spec/integration/parser/environment_spec.rb
@@ -2944,6 +2948,7 @@
 - spec/integration/parser/functions/require_spec.rb
 - spec/integration/parser/scope_spec.rb
 - spec/integration/parser/undef_param_spec.rb
+- spec/integration/module_tool/tar/mini_spec.rb
 - spec/integration/type_spec.rb
 - spec/integration/agent/logging_spec.rb
 - spec/integration/ssl/certificate_request_spec.rb
Files old/spec/fixtures/module.tar.gz and new/spec/fixtures/module.tar.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spec/integration/module_tool/tar/mini_spec.rb 
new/spec/integration/module_tool/tar/mini_spec.rb
--- old/spec/integration/module_tool/tar/mini_spec.rb   1970-01-01 
01:00:00.000000000 +0100
+++ new/spec/integration/module_tool/tar/mini_spec.rb   1970-01-01 
01:00:00.000000000 +0100
@@ -0,0 +1,28 @@
+require 'spec_helper'
+require 'puppet/module_tool'
+require 'puppet_spec/files'
+
+describe Puppet::ModuleTool::Tar::Mini, :if => (Puppet.features.minitar? && 
Puppet.features.zlib?) do
+  let(:minitar)    { described_class.new }
+
+  describe "Extracts tars with long and short pathnames" do
+    let (:sourcetar) { File.expand_path('../../../../fixtures/module.tar.gz', 
__FILE__) }
+
+    let (:longfilepath)  { 
"puppetlabs-dsc-1.0.0/lib/puppet_x/dsc_resources/xWebAdministration/DSCResources/MSFT_xWebAppPoolDefaults/MSFT_xWebAppPoolDefaults.schema.mof"
 }
+    let (:shortfilepath) { "puppetlabs-dsc-1.0.0/README.md" }
+
+    it "unpacks a tar with a short path length" do
+      extractdir = PuppetSpec::Files.tmpdir('minitar')
+
+      minitar.unpack(sourcetar,extractdir,'module')
+      expect(File).to exist(File.expand_path("#{extractdir}/#{shortfilepath}"))
+    end
+
+    it "unpacks a tar with a long path length" do
+      extractdir = PuppetSpec::Files.tmpdir('minitar')
+
+      minitar.unpack(sourcetar,extractdir,'module')
+      expect(File).to exist(File.expand_path("#{extractdir}/#{longfilepath}"))
+    end
+  end
+end
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spec/integration/parser/dynamic_scoping_spec.rb 
new/spec/integration/parser/dynamic_scoping_spec.rb
--- old/spec/integration/parser/dynamic_scoping_spec.rb 1970-01-01 
01:00:00.000000000 +0100
+++ new/spec/integration/parser/dynamic_scoping_spec.rb 1970-01-01 
01:00:00.000000000 +0100
@@ -0,0 +1,131 @@
+require 'spec_helper'
+require 'puppet/pops'
+require 'puppet/parser/parser_factory'
+require 'puppet_spec/compiler'
+require 'puppet_spec/pops'
+require 'puppet_spec/scope'
+require 'matchers/resource'
+require 'rgen/metamodel_builder'
+
+# These tests are in a separate file since othr compiler related tests have
+# been dramatically changed between 3.x and 4.x and it is a pain to merge
+# them.
+#
+describe "Puppet::Parser::Compiler when dealing with relative naming" do
+  include PuppetSpec::Compiler
+  include Matchers::Resource
+
+  describe "the compiler when using 4.x parser and evaluator" do
+    # this before-clause should be removed when merging to 4.x
+    before :each do
+      Puppet[:parser] = 'future'
+    end
+
+    it "should use absolute references even if references are not anchored" do
+      node = Puppet::Node.new("testnodex")
+      catalog = compile_to_catalog(<<-PP, node)
+      class foo::thing {
+        notify {"from foo::thing":}
+      }
+
+      class thing {
+        notify {"from ::thing":}
+      }
+
+      class foo {
+      #  include thing
+        class {'thing':}
+      }
+
+      include foo
+      PP
+
+      catalog = Puppet::Parser::Compiler.compile(node)
+
+      expect(catalog).to have_resource("Notify[from ::thing]")
+    end
+
+    it "should use absolute references when references are absolute" do
+      node = Puppet::Node.new("testnodex")
+      catalog = compile_to_catalog(<<-PP, node)
+      class foo::thing {
+        notify {"from foo::thing":}
+      }
+
+      class thing {
+        notify {"from ::thing":}
+      }
+
+      class foo {
+      #  include thing
+        class {'::thing':}
+      }
+
+      include foo
+      PP
+
+      catalog = Puppet::Parser::Compiler.compile(node)
+
+      expect(catalog).to have_resource("Notify[from ::thing]")
+    end
+  end
+
+  # This entire describe should be removed when merged to 4.x
+  #
+  describe "the compiler when using 3.x parser and evaluator" do
+    # this before-clause should be removed when merging to 4.x
+    before :each do
+      Puppet[:parser] = 'current'
+    end
+
+    it "should use relative references when they are not anchored" do
+      node = Puppet::Node.new("testnodex")
+      catalog = compile_to_catalog(<<-PP, node)
+            class foo::thing {
+              notify {"from foo::thing":}
+            }
+
+            class thing {
+              notify {"from ::thing":}
+            }
+
+            class foo {
+            #  include thing
+              class {'thing':}
+            }
+
+            include foo
+      PP
+
+      catalog = Puppet::Parser::Compiler.compile(node)
+
+      expect(catalog).to have_resource("Notify[from foo::thing]")
+    end
+
+    it "should use absolute references when references are absolute" do
+      node = Puppet::Node.new("testnodex")
+      catalog = compile_to_catalog(<<-PP, node)
+      class foo::thing {
+        notify {"from foo::thing":}
+      }
+
+      class thing {
+        notify {"from ::thing":}
+      }
+
+      class foo {
+      #  include thing
+        class {'::thing':}
+      }
+
+      include foo
+      PP
+
+      catalog = Puppet::Parser::Compiler.compile(node)
+
+      expect(catalog).to have_resource("Notify[from ::thing]")
+    end
+
+  end # End 3.x only case
+
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spec/unit/pops/evaluator/comparison_ops_spec.rb 
new/spec/unit/pops/evaluator/comparison_ops_spec.rb
--- old/spec/unit/pops/evaluator/comparison_ops_spec.rb 1970-01-01 
01:00:00.000000000 +0100
+++ new/spec/unit/pops/evaluator/comparison_ops_spec.rb 1970-01-01 
01:00:00.000000000 +0100
@@ -86,6 +86,9 @@
       it "'1.0' < 1.1 == true" do
         expect{evaluate(literal('1.0') <  literal(1.1))}.to 
raise_error(/String < Float/)
       end
+      it "undef < 1.1 == true" do
+        expect{evaluate(literal(nil) <  literal(1.1))}.to raise_error(/Undef 
Value < Float/)
+      end
     end
 
     context "of regular expressions" do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spec/unit/pops/types/type_calculator_spec.rb 
new/spec/unit/pops/types/type_calculator_spec.rb
--- old/spec/unit/pops/types/type_calculator_spec.rb    1970-01-01 
01:00:00.000000000 +0100
+++ new/spec/unit/pops/types/type_calculator_spec.rb    1970-01-01 
01:00:00.000000000 +0100
@@ -241,8 +241,8 @@
       calculator.infer(nil).class.should == Puppet::Pops::Types::PUndefType
     end
 
-    it ':undef translates to PRuntimeType' do
-      calculator.infer(:undef).class.should == 
Puppet::Pops::Types::PRuntimeType
+    it ':undef translates to PUndefType' do
+      calculator.infer(:undef).class.should == Puppet::Pops::Types::PUndefType
     end
 
     it 'an instance of class Foo translates to PRuntimeType[ruby, Foo]' do
@@ -1359,8 +1359,8 @@
       end
     end
 
-    it "should consider :undef to be instance of Runtime['ruby', 'Symbol]" do
-      calculator.instance?(Puppet::Pops::Types::PRuntimeType.new(:runtime => 
:ruby, :runtime_type_name => 'Symbol'), :undef).should == true
+    it "should consider :undef to be instance of Undef" do
+      calculator.instance?(Puppet::Pops::Types::PUndefType.new(), 
:undef).should == true
     end
 
     it "should consider :undef to be instance of an Optional type" do

++++++ puppetmaster-unicorn.service ++++++
[Unit]
Description=Puppet Master Unicorn

[Service]
Type=simple
User=puppet
Group=puppet
WorkingDirectory=/etc/puppet/rack
ExecStart=/usr/bin/unicorn -E production -c /etc/puppet/unicorn.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target
++++++ rubygem-puppet-rpmlintrc ++++++
# "#!" is (also) used to nudge editors into loading certain colors
addFilter("non-executable-script")
++++++ unicorn.conf ++++++
worker_processes 8
working_directory "/etc/puppet"
listen '/var/run/puppet/puppetmaster_unicorn.sock', :backlog => 512
timeout 120
pid "/var/run/puppet/puppetmaster_unicorn.pid"

stderr_path '/var/log/puppet/stderr.log'
stdout_path '/var/log/puppet/stdout.log'

preload_app true

if GC.respond_to?(:copy_on_write_friendly=)
  GC.copy_on_write_friendly = true
end

before_fork do |server, worker|
  old_pid = "#{server.config[:pid]}.oldbin"
  if File.exists?(old_pid) && server.pid != old_pid
    begin
      Process.kill("QUIT", File.read(old_pid).to_i)
    rescue Errno::ENOENT, Errno::ESRCH
      # someone else did our job for us
    end
  end
end

Reply via email to