New Upstream Snapshot - ruby-get-process-mem
Ready changes
Summary
Merged new upstream version: 0.2.7 (was: 0.2.5).
Resulting package
Built on 2022-11-20T14:14 (took 6m33s)
The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:
apt install -t fresh-snapshots ruby-get-process-mem
Lintian Result
Diff
diff --git a/.github/workflows/check_changelog.yml b/.github/workflows/check_changelog.yml
deleted file mode 100644
index 64f4f2b..0000000
--- a/.github/workflows/check_changelog.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-name: Check Changelog
-
-on: [pull_request]
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v1
- - name: Check that CHANGELOG is touched
- run: |
- cat $GITHUB_EVENT_PATH | jq .pull_request.title | grep -i '\[\(\(changelog skip\)\|\(ci skip\)\)\]' || git diff remotes/origin/${{ github.base_ref }} --name-only | grep CHANGELOG.md
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index cec3cb5..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.gem
-Gemfile.lock
diff --git a/.travis.yml b/.travis.yml
index c11d9fa..1748b52 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -15,6 +15,8 @@ rvm:
matrix:
allow_failures:
+ - rvm: 2.2
+ if: os = osx
- rvm: ruby-head
- rvm: jruby-head
- rvm: truffleruby
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 02e9f6d..d03f3c0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -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
diff --git a/debian/changelog b/debian/changelog
index a2daffd..986bae9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-ruby-get-process-mem (0.2.5-2) UNRELEASED; urgency=medium
+ruby-get-process-mem (0.2.7-1) UNRELEASED; urgency=medium
* Set field Upstream-Contact in debian/copyright.
* Set upstream metadata fields: Bug-Submit.
@@ -9,8 +9,9 @@ ruby-get-process-mem (0.2.5-2) UNRELEASED; urgency=medium
* Set upstream metadata fields: Bug-Database, Bug-Submit, Repository,
Repository-Browse.
* Update standards version to 4.6.1, no changes needed.
+ * New upstream release.
- -- Debian Janitor <janitor@jelmer.uk> Sun, 23 Feb 2020 14:52:54 +0000
+ -- Debian Janitor <janitor@jelmer.uk> Sun, 20 Nov 2022 14:09:25 -0000
ruby-get-process-mem (0.2.5-1) unstable; urgency=medium
diff --git a/debian/patches/bundler b/debian/patches/bundler
index dceab1b..27a23dd 100644
--- a/debian/patches/bundler
+++ b/debian/patches/bundler
@@ -5,15 +5,17 @@ Forwarded: not-needed
Last-Update: 2015-06-14
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/test/test_helper.rb
-+++ b/test/test_helper.rb
+Index: ruby-get-process-mem.git/test/test_helper.rb
+===================================================================
+--- ruby-get-process-mem.git.orig/test/test_helper.rb
++++ ruby-get-process-mem.git/test/test_helper.rb
@@ -1,5 +1,3 @@
-Bundler.require
-
require 'get_process_mem'
require 'test/unit'
-@@ -7,4 +5,4 @@
+@@ -7,4 +5,4 @@ def fixture_path(name = nil)
path = Pathname.new(File.expand_path("../fixtures", __FILE__))
return path.join(name) if name
path
diff --git a/lib/get_process_mem.rb b/lib/get_process_mem.rb
index e781209..67aaf25 100644
--- a/lib/get_process_mem.rb
+++ b/lib/get_process_mem.rb
@@ -119,6 +119,8 @@ class GetProcessMem
end
def darwin_memory
- Darwin.resident_size
+ Darwin.resident_size(pid)
+ rescue Errno::EPERM
+ nil
end
end
diff --git a/lib/get_process_mem/darwin.rb b/lib/get_process_mem/darwin.rb
index 2fd98cb..111f734 100644
--- a/lib/get_process_mem/darwin.rb
+++ b/lib/get_process_mem/darwin.rb
@@ -3,49 +3,59 @@ require 'ffi'
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 --git a/lib/get_process_mem/version.rb b/lib/get_process_mem/version.rb
index 018d81f..91be889 100644
--- a/lib/get_process_mem/version.rb
+++ b/lib/get_process_mem/version.rb
@@ -1,3 +1,3 @@
class GetProcessMem
- VERSION = "0.2.5"
+ VERSION = "0.2.7"
end
diff --git a/test/get_process_mem_test.rb b/test/get_process_mem_test.rb
index 8f39297..f7b831f 100644
--- a/test/get_process_mem_test.rb
+++ b/test/get_process_mem_test.rb
@@ -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
Debdiff
[The following lists of changes regard files as different if they have different names, permissions or owners.]
Files in second set of .debs but not in first
-rw-r--r-- root/root /usr/share/rubygems-integration/all/specifications/get_process_mem-0.2.7.gemspec
Files in first set of .debs but not in second
-rw-r--r-- root/root /usr/share/rubygems-integration/all/specifications/get_process_mem-0.2.5.gemspec
Control files: lines which differ (wdiff format)
Ruby-Versions: all