hermann 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8194f73012572376c8cd14ae68042da11fc79dfc
4
+ data.tar.gz: 355dacd9317c634b430e4a7f32216aaccf07a308
5
+ SHA512:
6
+ metadata.gz: a1d4dd0e592433519e086d889b4362ff1e69f805f121517812bffd4b67ea1a77fb1d941fe0e017968ad791fe23506371831070a905259600f7154f8adca2cd7b
7
+ data.tar.gz: db0b9f012f34e31c23268b4a93cbf40ea38a2b8239c3fe4fb7ca140d339259adffec0aa31f6098466ed57e107149c537ed43630694c6cea852c4048512266db9
data/Rakefile ADDED
@@ -0,0 +1,33 @@
1
+ require 'rubygems'
2
+ require 'fileutils'
3
+ require "bundler/gem_tasks"
4
+ require 'rspec/core/rake_task'
5
+ require 'rake/extensiontask'
6
+
7
+
8
+ Rake::ExtensionTask.new do |t|
9
+ t.name = 'hermann_lib'
10
+ t.ext_dir = 'ext/hermann'
11
+ t.gem_spec = Gem::Specification.load('hermann.gemspec')
12
+ end
13
+
14
+ RSpec::Core::RakeTask.new(:spec) do |r|
15
+ r.rspec_opts = '--tag ~type:integration'
16
+ end
17
+
18
+ namespace :spec do
19
+ RSpec::Core::RakeTask.new(:integration) do |r|
20
+ r.rspec_opts = '--tag type:integration'
21
+ end
22
+ end
23
+
24
+ desc 'Remove the entire ./tmp directory'
25
+ task :removetmp do
26
+ FileUtils.rm_rf('tmp')
27
+ end
28
+
29
+
30
+ task :build => [:compile]
31
+ task :clean => [:removetmp]
32
+ task :default => [:clean, :build, :spec]
33
+
@@ -0,0 +1,74 @@
1
+ # External configuration for Hermann Gem
2
+
3
+ require 'rubygems'
4
+ require 'mkmf'
5
+ require 'mini_portile'
6
+ require 'digest/md5'
7
+
8
+ RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
9
+
10
+ LIBDIR = RbConfig::CONFIG['libdir']
11
+ INCLUDEDIR = RbConfig::CONFIG['includedir']
12
+ BASE_DIR = File.expand_path(File.dirname(__FILE__) + '/../../')
13
+
14
+ puts "Library Dir: #{LIBDIR}\n"
15
+ puts "Include Dir: #{INCLUDEDIR}"
16
+
17
+ ################################################################################
18
+ # MiniPortile overrides
19
+ ################################################################################
20
+ # RdKafkaRecipe is a class that adds some librdkafka specific customizations to
21
+ # make sure that we can safely build librdkafka when installing this gem
22
+ class RdKafkaRecipe < MiniPortile
23
+ attr_accessor :checksum
24
+
25
+ def configure
26
+ execute('configure', %Q(bash configure #{computed_options}))
27
+ end
28
+
29
+ def configured?
30
+ File.exists?(File.join(work_path, 'Makefile.config'))
31
+ end
32
+
33
+ # Overriding this from MiniPortile because it includes autoconf defaults that
34
+ # don't apply to librdkafka's mklove-based configure script
35
+ def configure_defaults
36
+ []
37
+ end
38
+
39
+ def download_file(url, full_path, count=3)
40
+ super(url, full_path, count)
41
+
42
+ # Support some simple checksumming
43
+ unless Digest::MD5.hexdigest(File.read(full_path)) == checksum
44
+ raise 'Checksum error!'
45
+ end
46
+ end
47
+ end
48
+ ################################################################################
49
+
50
+ librdkafka = RdKafkaRecipe.new('librdkafka', '0.8.4')
51
+ librdkafka.files = ["https://github.com/edenhill/librdkafka/archive/#{librdkafka.version}.tar.gz"]
52
+ librdkafka.checksum = '28a3252fd0f31d4a38bea9cd25083a06'
53
+ librdkafka.patch_files = Dir["#{File.join(BASE_DIR, 'ext', 'patches', 'librdkafka')}/*.patch"]
54
+ checkpoint = ".librdkafka.#{librdkafka.version}.cooked"
55
+
56
+ unless File.exists?(checkpoint)
57
+ librdkafka.cook
58
+ File.open(checkpoint, 'w+') do |f|
59
+ f.write("Cooked: #{Time.now}\n")
60
+ end
61
+ end
62
+
63
+ librdkafka.activate
64
+
65
+ HEADER_DIRS = [INCLUDEDIR, File.join(librdkafka.path, 'include')]
66
+ LIB_DIRS = [LIBDIR]
67
+ dir_config('rdkafka', HEADER_DIRS, LIB_DIRS)
68
+
69
+ # Tell mkmf to staticallly link our mini_portile generated static library,
70
+ # courtesty of:
71
+ # <http://blog.zachallett.com/howto-ruby-c-extension-with-a-static-library>
72
+ $LOCAL_LIBS << File.join(librdkafka.path, 'lib', 'librdkafka.a')
73
+
74
+ create_makefile('hermann/hermann_lib')