Add a gemspec and support loading ffi as a gem

This commit is contained in:
Alex Young
2011-05-16 11:29:07 +01:00
parent 68d82cdf0b
commit 30d633cf09
4 changed files with 39 additions and 5 deletions

View File

@@ -1,6 +1,12 @@
require 'rake/testtask'
ROOT = File.dirname(__FILE__)
task :test do
$:.unshift File.join(ROOT, "lib")
$:.unshift File.join(ROOT, "test")
Rake::TestTask.new do |t|
t.verbose = true
t.test_files = FileList["test/**/t_*.rb"]
end
task :gem do
sh "gem build netlinkrb.gemspec"
end

View File

@@ -1,6 +1,12 @@
require 'socket'
require 'linux/constants'
require 'ffi'
begin
require 'ffi'
rescue LoadError
require('rubygems') ? retry : raise
end
# Good things about FFI::Struct:
# - robust pre-existing code

View File

@@ -1,8 +1,13 @@
# Patchup to add Socket#sendmsg and Socket#recvmsg for ruby 1.8
if BasicSocket.instance_methods.grep(/^sendmsg$/).empty?
require 'ffi'
begin
require 'ffi'
rescue LoadError
require('rubygems') ? retry : raise
end
class BasicSocket
module FFIExt
extend FFI::Library

17
netlinkrb.gemspec Normal file
View File

@@ -0,0 +1,17 @@
# encoding: utf-8
lib = File.expand_path("../lib", __FILE__)
$:.unshift lib unless $:.include? lib
Gem::Specification.new do |s|
s.name = "netlinkrb"
s.version = "0.10"
s.platform = Gem::Platform::RUBY
s.authors = ["Brian Candler", "Patrick Cherry", "Alex Young"]
s.email = ["matthew@bytemark.co.uk"]
s.summary = "Interface to Linux' Netlink API"
s.description = "Ruby native interface to the Netlink API which avoids shelling out to command-line tools as much as possible."
s.files = Dir["{lib,examples}/**/*"] + %w{README}
s.require_path = "lib"
s.add_dependency "ffi"
end