Hello community,

here is the log from the commit of package rubygem-get_process_mem for 
openSUSE:Factory checked in at 2020-10-05 19:31:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-get_process_mem (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-get_process_mem.new.4249 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-get_process_mem"

Mon Oct  5 19:31:21 2020 rev:7 rq:838036 version:0.2.7

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/rubygem-get_process_mem/rubygem-get_process_mem.changes
  2020-03-07 21:38:09.328268783 +0100
+++ 
/work/SRC/openSUSE:Factory/.rubygem-get_process_mem.new.4249/rubygem-get_process_mem.changes
        2020-10-05 19:31:24.812768539 +0200
@@ -1,0 +2,7 @@
+Fri Sep 25 14:00:53 UTC 2020 - Stephan Kulow <co...@suse.com>
+
+updated to version 0.2.7
+ see installed CHANGELOG.md
+
+
+-------------------------------------------------------------------

Old:
----
  get_process_mem-0.2.5.gem

New:
----
  get_process_mem-0.2.7.gem

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

Other differences:
------------------
++++++ rubygem-get_process_mem.spec ++++++
--- /var/tmp/diff_new_pack.aAqsIy/_old  2020-10-05 19:31:26.356775050 +0200
+++ /var/tmp/diff_new_pack.aAqsIy/_new  2020-10-05 19:31:26.360775067 +0200
@@ -24,7 +24,7 @@
 #
 
 Name:           rubygem-get_process_mem
-Version:        0.2.5
+Version:        0.2.7
 Release:        0
 %define mod_name get_process_mem
 %define mod_full_name %{mod_name}-%{version}

++++++ get_process_mem-0.2.5.gem -> get_process_mem-0.2.7.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.travis.yml new/.travis.yml
--- old/.travis.yml     2019-11-05 18:03:01.000000000 +0100
+++ new/.travis.yml     2020-08-28 00:17:20.000000000 +0200
@@ -15,6 +15,8 @@
 
 matrix:
   allow_failures:
+    - rvm: 2.2
+      if: os = osx
     - rvm: ruby-head
     - rvm: jruby-head
     - rvm: truffleruby
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md
--- old/CHANGELOG.md    2019-11-05 18:03:01.000000000 +0100
+++ new/CHANGELOG.md    2020-08-28 00:17:20.000000000 +0200
@@ -1,4 +1,12 @@
-## Master - unreleased
+## HEAD (unreleased)
+
+## 0.2.7
+
+- Native (faster) support for returning memory from different PIDs on mac 
(https://github.com/schneems/get_process_mem/pull/42)
+
+## 0.2.6
+
+- Support returning memory from different PIDs on mac 
(https://github.com/schneems/get_process_mem/pull/41)
 
 ## 0.2.5
 
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/get_process_mem/darwin.rb 
new/lib/get_process_mem/darwin.rb
--- old/lib/get_process_mem/darwin.rb   2019-11-05 18:03:01.000000000 +0100
+++ new/lib/get_process_mem/darwin.rb   2020-08-28 00:17:20.000000000 +0200
@@ -3,49 +3,59 @@
 class GetProcessMem
   class Darwin
     extend FFI::Library
-    ffi_lib 'c'
-    attach_function :mach_task_self, [], :__darwin_mach_port_t
-    attach_function :task_info,
-                    [
-                      :__darwin_mach_port_t,
-                      :int,     # return selector
-                      :pointer, #pointer to task info
-                      :pointer, #pointer to int (size of structure / bytes 
filled out)
-                    ],
-                    :int
+    ffi_lib 'proc'
 
-    class IntPtr < FFI::Struct
-      layout :value, :int
-    end
 
     class TaskInfo < FFI::Struct
-      layout  :suspend_count, :int32,
-              :virtual_size, :uint64,
-              :resident_size, :uint64,
-              :user_time, :uint64,
-              :system_time, :uint64,
-              :policy, :int32
+      layout :pti_virtual_size, :uint64,
+             :pti_resident_size, :uint64,
+             :pti_total_user, :uint64,
+             :pti_total_system, :uint64,
+             :pti_threads_user, :uint64,
+             :pti_threads_system, :uint64,
+             :pti_policy, :int32,
+             :pti_faults, :int32,
+             :pti_pageins, :int32,
+             :pti_cow_faults, :int32,
+             :pti_messages_sent, :int32,
+             :pti_messages_received, :int32,
+             :pti_syscalls_mach, :int32,
+             :pti_syscalls_unix, :int32,
+             :pti_csw, :int32,
+             :pti_threadnum, :int32,
+             :pti_numrunning, :int32,
+             :pti_priority, :int32
+
     end
 
-    MACH_TASK_BASIC_INFO = 20
-    MACH_TASK_BASIC_INFO_COUNT = TaskInfo.size / FFI.type_size(:uint)
+
+    attach_function :proc_pidinfo,
+                    [
+                      :int, #pid
+                      :int, # flavour
+                      :uint64, #arg, not needed for this selector
+                      TaskInfo.by_ref, #output buffer
+                      :int, #size of buffer
+                    ],
+                    :int
+
+
+    PROC_PIDTASKINFO = 4 #from sys/proc_info.h
 
     class << self
-      def resident_size
-        mach_task_info[:resident_size]
+      def resident_size(pid)
+        get_proc_pidinfo(pid)[:pti_resident_size]
       end
 
       private
 
-      def mach_task_info
+      def get_proc_pidinfo(pid)
         data = TaskInfo.new
-        out_count = IntPtr.new
-        out_count[:value] = MACH_TASK_BASIC_INFO_COUNT
-        result = task_info(mach_task_self, MACH_TASK_BASIC_INFO, data, 
out_count)
-        if result == 0
+        result = proc_pidinfo(pid, PROC_PIDTASKINFO, 0, data, TaskInfo.size)
+        if result == TaskInfo.size
           data
         else
-          raise "task_info returned #{result}"
+          raise SystemCallError.new("proc_pidinfo returned #{result}", 
FFI.errno);
         end
       end
     end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/get_process_mem/version.rb 
new/lib/get_process_mem/version.rb
--- old/lib/get_process_mem/version.rb  2019-11-05 18:03:01.000000000 +0100
+++ new/lib/get_process_mem/version.rb  2020-08-28 00:17:20.000000000 +0200
@@ -1,3 +1,3 @@
 class GetProcessMem
-  VERSION = "0.2.5"
+  VERSION = "0.2.7"
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/get_process_mem.rb new/lib/get_process_mem.rb
--- old/lib/get_process_mem.rb  2019-11-05 18:03:01.000000000 +0100
+++ new/lib/get_process_mem.rb  2020-08-28 00:17:20.000000000 +0200
@@ -119,6 +119,8 @@
   end
 
   def darwin_memory
-    Darwin.resident_size
+    Darwin.resident_size(pid)
+  rescue Errno::EPERM
+    nil
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2019-11-05 18:03:01.000000000 +0100
+++ new/metadata        2020-08-28 00:17:20.000000000 +0200
@@ -1,14 +1,14 @@
 --- !ruby/object:Gem::Specification
 name: get_process_mem
 version: !ruby/object:Gem::Version
-  version: 0.2.5
+  version: 0.2.7
 platform: ruby
 authors:
 - Richard Schneeman
-autorequire: 
+autorequire:
 bindir: bin
 cert_chain: []
-date: 2019-11-05 00:00:00.000000000 Z
+date: 2020-08-27 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: ffi
@@ -93,7 +93,7 @@
 licenses:
 - MIT
 metadata: {}
-post_install_message: 
+post_install_message:
 rdoc_options: []
 require_paths:
 - lib
@@ -108,8 +108,8 @@
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
-rubygems_version: 3.0.3
-signing_key: 
+rubygems_version: 3.1.2
+signing_key:
 specification_version: 4
 summary: Use GetProcessMem to find out the amount of RAM used by any process
 test_files:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/test/get_process_mem_test.rb 
new/test/get_process_mem_test.rb
--- old/test/get_process_mem_test.rb    2019-11-05 18:03:01.000000000 +0100
+++ new/test/get_process_mem_test.rb    2020-08-28 00:17:20.000000000 +0200
@@ -1,11 +1,20 @@
 require 'test_helper'
 
 class GetProcessMemTest < Test::Unit::TestCase
-
   def setup
     @mem = GetProcessMem.new
   end
 
+  def test_different_pid_returns_different_memory
+    pid = Process.spawn("tail -f Gemfile")
+
+    other_mem = GetProcessMem.new(pid)
+    assert @mem.kb > other_mem.kb
+  ensure
+    Process.kill('TERM', pid) if pid
+    Process.wait(pid) if pid
+  end
+
   def test_seems_to_work
     assert @mem.kb    > 0
     assert @mem.mb    > 0


Reply via email to