core-source 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,64 @@
1
+ == Sender
2
+
3
+ http://rubygems.org/gems/core-source
4
+
5
+ == DESCRIPTION:
6
+
7
+ Fork of ruby_core_source modified to support CFLAGS and permit use of
8
+ whichever build system (mkmf, rpmkmf, or other modules) while utilizing
9
+ core source.
10
+
11
+ This fork was created because the existing ruby_core_source takes over
12
+ the build definition, preventing definition of CFLAGS and other settings
13
+ that mkmf requires be defined by an enclosing block.
14
+
15
+ == INSTALL:
16
+
17
+ * sudo gem install rp_ruby_core_source
18
+
19
+ == EXAMPLE:
20
+
21
+ require 'mkmfmf' # mkmfmf is a drop-in replacement for mkmf; see http://rubygems.org/gems/mkmfmf
22
+ require 'core-source'
23
+
24
+ target = "gdb_helper"
25
+
26
+ required_core_headers = [ "vm_core.h",
27
+ "iseq.h",
28
+ "eval_intern.h",
29
+ "version.h",
30
+ "node.h" ]
31
+
32
+ default_cflags = "-march=x86-64 -gfull -fcatch-undefined-behavior -fno-common -fsigned-char -pipe"
33
+
34
+ # Create our makefile from sources
35
+ if ensure_core_headers( required_core_headers )
36
+ with_cflags( default_cflags ) do
37
+ create_makefile( target )
38
+ end
39
+ end
40
+
41
+ == LICENSE:
42
+
43
+ (The MIT License)
44
+
45
+ Copyright (c) 2010 Asher
46
+
47
+ Permission is hereby granted, free of charge, to any person obtaining
48
+ a copy of this software and associated documentation files (the
49
+ 'Software'), to deal in the Software without restriction, including
50
+ without limitation the rights to use, copy, modify, merge, publish,
51
+ distribute, sublicense, and/or sell copies of the Software, and to
52
+ permit persons to whom the Software is furnished to do so, subject to
53
+ the following conditions:
54
+
55
+ The above copyright notice and this permission notice shall be
56
+ included in all copies or substantial portions of the Software.
57
+
58
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
59
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
60
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
61
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
62
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
63
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
64
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,239 @@
1
+ # Contrib code taken from ruby_core_source
2
+
3
+ # = progressbar.rb
4
+ #
5
+ # == Copyright (C) 2001 Satoru Takabayashi
6
+ #
7
+ # Ruby License
8
+ #
9
+ # This module is free software. You may use, modify, and/or redistribute this
10
+ # software under the same terms as Ruby.
11
+ #
12
+ # This program is distributed in the hope that it will be useful, but WITHOUT
13
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14
+ # FOR A PARTICULAR PURPOSE.
15
+ #
16
+ # == Author(s)
17
+ #
18
+ # * Satoru Takabayashi
19
+
20
+ # Author:: Satoru Takabayashi
21
+ # Copyright:: Copyright (c) 2001 Satoru Takabayashi
22
+ # License:: Ruby License
23
+
24
+ # = Console Progress Bar
25
+ #
26
+ # Console::ProgressBar is a terminal-based progress bar library.
27
+ #
28
+ # == Usage
29
+ #
30
+ # pbar = ConsoleProgressBar.new( "Demo", 100 )
31
+ # 100.times { pbar.inc }
32
+ # pbar.finish
33
+ #
34
+
35
+ module Console; end
36
+
37
+ class Console::ProgressBar
38
+
39
+ def initialize(title, total, out = STDERR)
40
+ @title = title
41
+ @total = total
42
+ @out = out
43
+ @bar_length = 80
44
+ @bar_mark = "o"
45
+ @total_overflow = true
46
+ @current = 0
47
+ @previous = 0
48
+ @is_finished = false
49
+ @start_time = Time.now
50
+ @format = "%-14s %3d%% %s %s"
51
+ @format_arguments = [:title, :percentage, :bar, :stat]
52
+ show_progress
53
+ end
54
+
55
+ private
56
+ def convert_bytes (bytes)
57
+ if bytes < 1024
58
+ sprintf("%6dB", bytes)
59
+ elsif bytes < 1024 * 1000 # 1000kb
60
+ sprintf("%5.1fKB", bytes.to_f / 1024)
61
+ elsif bytes < 1024 * 1024 * 1000 # 1000mb
62
+ sprintf("%5.1fMB", bytes.to_f / 1024 / 1024)
63
+ else
64
+ sprintf("%5.1fGB", bytes.to_f / 1024 / 1024 / 1024)
65
+ end
66
+ end
67
+
68
+ def transfer_rate
69
+ bytes_per_second = @current.to_f / (Time.now - @start_time)
70
+ sprintf("%s/s", convert_bytes(bytes_per_second))
71
+ end
72
+
73
+ def bytes
74
+ convert_bytes(@current)
75
+ end
76
+
77
+ def format_time (t)
78
+ t = t.to_i
79
+ sec = t % 60
80
+ min = (t / 60) % 60
81
+ hour = t / 3600
82
+ sprintf("%02d:%02d:%02d", hour, min, sec);
83
+ end
84
+
85
+ # ETA stands for Estimated Time of Arrival.
86
+ def eta
87
+ if @current == 0
88
+ "ETA: --:--:--"
89
+ else
90
+ elapsed = Time.now - @start_time
91
+ eta = elapsed * @total / @current - elapsed;
92
+ sprintf("ETA: %s", format_time(eta))
93
+ end
94
+ end
95
+
96
+ def elapsed
97
+ elapsed = Time.now - @start_time
98
+ sprintf("Time: %s", format_time(elapsed))
99
+ end
100
+
101
+ def stat
102
+ if @is_finished then elapsed else eta end
103
+ end
104
+
105
+ def stat_for_file_transfer
106
+ if @is_finished then
107
+ sprintf("%s %s %s", bytes, transfer_rate, elapsed)
108
+ else
109
+ sprintf("%s %s %s", bytes, transfer_rate, eta)
110
+ end
111
+ end
112
+
113
+ def eol
114
+ if @is_finished then "\n" else "\r" end
115
+ end
116
+
117
+ def bar
118
+ len = percentage * @bar_length / 100
119
+ sprintf("|%s%s|", @bar_mark * len, " " * (@bar_length - len))
120
+ end
121
+
122
+ def percentage
123
+ if @total.zero?
124
+ 100
125
+ else
126
+ @current * 100 / @total
127
+ end
128
+ end
129
+
130
+ def title
131
+ @title[0,13] + ":"
132
+ end
133
+
134
+ def get_width
135
+ # FIXME: I don't know how portable it is.
136
+ default_width = 80
137
+ begin
138
+ tiocgwinsz = 0x5413
139
+ data = [0, 0, 0, 0].pack("SSSS")
140
+ if @out.ioctl(tiocgwinsz, data) >= 0 then
141
+ rows, cols, xpixels, ypixels = data.unpack("SSSS")
142
+ if cols >= 0 then cols else default_width end
143
+ else
144
+ default_width
145
+ end
146
+ rescue Exception
147
+ default_width
148
+ end
149
+ end
150
+
151
+ def show
152
+ arguments = @format_arguments.map {|method| send(method) }
153
+ line = sprintf(@format, *arguments)
154
+
155
+ width = get_width
156
+ if line.length == width - 1
157
+ @out.print(line + eol)
158
+ elsif line.length >= width
159
+ @bar_length = [@bar_length - (line.length - width + 1), 0].max
160
+ if @bar_length == 0 then @out.print(line + eol) else show end
161
+ else #line.length < width - 1
162
+ @bar_length += width - line.length + 1
163
+ show
164
+ end
165
+ end
166
+
167
+ def show_progress
168
+ if @total.zero?
169
+ cur_percentage = 100
170
+ prev_percentage = 0
171
+ else
172
+ cur_percentage = (@current * 100 / @total).to_i
173
+ prev_percentage = (@previous * 100 / @total).to_i
174
+ end
175
+
176
+ if cur_percentage > prev_percentage || @is_finished
177
+ show
178
+ end
179
+ end
180
+
181
+ public
182
+ def file_transfer_mode
183
+ @format_arguments = [:title, :percentage, :bar, :stat_for_file_transfer]
184
+ end
185
+
186
+ def bar_mark= (mark)
187
+ @bar_mark = String(mark)[0..0]
188
+ end
189
+
190
+ def total_overflow= (boolv)
191
+ @total_overflow = boolv ? true : false
192
+ end
193
+
194
+ def format= (format)
195
+ @format = format
196
+ end
197
+
198
+ def format_arguments= (arguments)
199
+ @format_arguments = arguments
200
+ end
201
+
202
+ def finish
203
+ @current = @total
204
+ @is_finished = true
205
+ show_progress
206
+ end
207
+
208
+ def halt
209
+ @is_finished = true
210
+ show_progress
211
+ end
212
+
213
+ def set (count)
214
+ if count < 0
215
+ raise "invalid count less than zero: #{count}"
216
+ elsif count > @total
217
+ if @total_overflow
218
+ @total = count + 1
219
+ else
220
+ raise "invalid count greater than total: #{count}"
221
+ end
222
+ end
223
+ @current = count
224
+ show_progress
225
+ @previous = @current
226
+ end
227
+
228
+ def inc (step = 1)
229
+ @current += step
230
+ @current = @total if @current > @total
231
+ show_progress
232
+ @previous = @current
233
+ end
234
+
235
+ def inspect
236
+ "(ProgressBar: #{@current}/#{@total})"
237
+ end
238
+
239
+ end
@@ -0,0 +1,291 @@
1
+ # Contrib code taken from ruby_core_source, modified only to enable progress bar
2
+
3
+ #
4
+ # I've striped down dependencies on Net::SSH and Facets to
5
+ # stay as simple as possible.
6
+ #
7
+ # Original code from Assaf Arkin, released under Apache License
8
+ # (http://buildr.rubyforge.org/license.html)
9
+ #
10
+ require 'cgi'
11
+ require 'uri'
12
+ require 'net/http'
13
+ require 'net/https'
14
+ require 'tempfile'
15
+ require 'fileutils'
16
+
17
+ # show progress of download
18
+ require File.join(File.dirname(__FILE__), 'progressbar')
19
+
20
+ # Not quite open-uri, but similar. Provides read and write methods for the resource represented by the URI.
21
+ # Currently supports reads for URI::HTTP and writes for URI::SFTP. Also provides convenience methods for
22
+ # downloads and uploads.
23
+ module URI
24
+ # Raised when trying to read/download a resource that doesn't exist.
25
+ class NotFoundError < RuntimeError; end
26
+
27
+ class << self
28
+ # :call-seq:
29
+ # read(uri, options?) => content
30
+ # read(uri, options?) { |chunk| ... }
31
+ #
32
+ # Reads from the resource behind this URI. The first form returns the content of the resource,
33
+ # the second form yields to the block with each chunk of content (usually more than one).
34
+ #
35
+ # For example:
36
+ # File.open "image.jpg", "w" do |file|
37
+ # URI.read("http://example.com/image.jpg") { |chunk| file.write chunk }
38
+ # end
39
+ # Shorter version:
40
+ # File.open("image.jpg", "w") { |file| file.write URI.read("http://example.com/image.jpg") }
41
+ #
42
+ # Supported options:
43
+ # * :modified -- Only download if file modified since this timestamp. Returns nil if not modified.
44
+ # * :progress -- Show the progress bar while reading.
45
+ def read(uri, options = nil, &block)
46
+ uri = URI.parse(uri.to_s) unless URI === uri
47
+ uri.read(options, &block)
48
+ end
49
+
50
+ # :call-seq:
51
+ # download(uri, target, options?)
52
+ #
53
+ # Downloads the resource to the target.
54
+ #
55
+ # The target may be a file name (string or task), in which case the file is created from the resource.
56
+ # The target may also be any object that responds to +write+, e.g. File, StringIO, Pipe.
57
+ #
58
+ # Use the progress bar when running in verbose mode.
59
+ def download(uri, target, options = nil)
60
+ uri = URI.parse(uri.to_s) unless URI === uri
61
+ uri.download(target, options)
62
+ end
63
+
64
+ # :call-seq:
65
+ # write(uri, content, options?)
66
+ # write(uri, options?) { |bytes| .. }
67
+ #
68
+ # Writes to the resource behind the URI. The first form writes the content from a string or an object
69
+ # that responds to +read+ and optionally +size+. The second form writes the content by yielding to the
70
+ # block. Each yield should return up to the specified number of bytes, the last yield returns nil.
71
+ #
72
+ # For example:
73
+ # File.open "killer-app.jar", "rb" do |file|
74
+ # write("sftp://localhost/jars/killer-app.jar") { |chunk| file.read(chunk) }
75
+ # end
76
+ # Or:
77
+ # write "sftp://localhost/jars/killer-app.jar", File.read("killer-app.jar")
78
+ #
79
+ # Supported options:
80
+ # * :progress -- Show the progress bar while reading.
81
+ def write(uri, *args, &block)
82
+ uri = URI.parse(uri.to_s) unless URI === uri
83
+ uri.write(*args, &block)
84
+ end
85
+ end
86
+
87
+ class Generic
88
+
89
+ # :call-seq:
90
+ # read(options?) => content
91
+ # read(options?) { |chunk| ... }
92
+ #
93
+ # Reads from the resource behind this URI. The first form returns the content of the resource,
94
+ # the second form yields to the block with each chunk of content (usually more than one).
95
+ #
96
+ # For options, see URI::read.
97
+ def read(options = nil, &block)
98
+ fail "This protocol doesn't support reading (yet, how about helping by implementing it?)"
99
+ end
100
+
101
+ # :call-seq:
102
+ # download(target, options?)
103
+ #
104
+ # Downloads the resource to the target.
105
+ #
106
+ # The target may be a file name (string or task), in which case the file is created from the resource.
107
+ # The target may also be any object that responds to +write+, e.g. File, StringIO, Pipe.
108
+ #
109
+ # Use the progress bar when running in verbose mode.
110
+ def download(target, options = {})
111
+ case target
112
+ when String
113
+ # If download breaks we end up with a partial file which is
114
+ # worse than not having a file at all, so download to temporary
115
+ # file and then move over.
116
+ modified = File.stat(target).mtime if File.exist?(target)
117
+ temp = nil
118
+ Tempfile.open(File.basename(target)) do |tf|
119
+ tf.binmode
120
+ read(options.merge(:modified => modified)) { |chunk| tf.write chunk }
121
+ temp = tf
122
+ end
123
+ FileUtils.mkpath(File.dirname(target))
124
+ FileUtils.move(temp.path, target)
125
+ when File
126
+ read(options.merge(:modified => target.mtime)) { |chunk| target.write chunk }
127
+ target.flush
128
+ else
129
+ raise ArgumentError, "Expecting a target that is either a file name (string, task) or object that responds to write (file, pipe)." unless target.respond_to?(:write)
130
+ read(options) { |chunk| target.write chunk }
131
+ target.flush
132
+ end
133
+ end
134
+
135
+ # :call-seq:
136
+ # write(content, options?)
137
+ # write(options?) { |bytes| .. }
138
+ #
139
+ # Writes to the resource behind the URI. The first form writes the content from a string or an object
140
+ # that responds to +read+ and optionally +size+. The second form writes the content by yielding to the
141
+ # block. Each yield should return up to the specified number of bytes, the last yield returns nil.
142
+ #
143
+ # For options, see URI::write.
144
+ def write(*args, &block)
145
+ options = args.pop if Hash === args.last
146
+ options ||= {}
147
+ if String === args.first
148
+ ios = StringIO.new(args.first, "r")
149
+ write(options.merge(:size => args.first.size)) { |bytes| ios.read(bytes) }
150
+ elsif args.first.respond_to?(:read)
151
+ size = args.first.size rescue nil
152
+ write({ :size => size }.merge(options)) { |bytes| args.first.read(bytes) }
153
+ elsif args.empty? && block
154
+ write_internal(options, &block)
155
+ else
156
+ raise ArgumentError, "Either give me the content, or pass me a block, otherwise what would I upload?"
157
+ end
158
+ end
159
+
160
+ protected
161
+
162
+ # :call-seq:
163
+ # with_progress_bar(enable, file_name, size) { |progress| ... }
164
+ #
165
+ # Displays a progress bar while executing the block. The first argument must be true for the
166
+ # progress bar to show (TTY output also required), as a convenient for selectively using the
167
+ # progress bar from a single block.
168
+ #
169
+ # The second argument provides a filename to display, the third its size in bytes.
170
+ #
171
+ # The block is yielded with a progress object that implements a single method.
172
+ # Call << for each block of bytes down/uploaded.
173
+ def with_progress_bar(enable, file_name, size) #:nodoc:
174
+ if enable && $stdout.isatty
175
+ progress_bar = Console::ProgressBar.new(file_name, size)
176
+ # Extend the progress bar so we can display count/total.
177
+ class << progress_bar
178
+ def total()
179
+ convert_bytes(@total)
180
+ end
181
+ end
182
+ # Squeeze the filename into 30 characters.
183
+ if file_name.size > 30
184
+ base, ext = File.basename(file_name), File.extname(file_name)
185
+ truncated = "#{base[0..26-ext.to_s.size]}..#{ext}"
186
+ else
187
+ truncated = file_name
188
+ end
189
+ progress_bar.format = "#{CGI.unescape(truncated)}: %3d%% %s %s/%s %s"
190
+ progress_bar.format_arguments = [:percentage, :bar, :bytes, :total, :stat]
191
+ progress_bar.bar_mark = "o"
192
+
193
+ begin
194
+ class << progress_bar
195
+ def <<(bytes)
196
+ inc bytes.respond_to?(:size) ? bytes.size : bytes
197
+ end
198
+ end
199
+ yield progress_bar
200
+ ensure
201
+ progress_bar.finish
202
+ end
203
+ else
204
+ progress_bar = Object.new
205
+ class << progress_bar
206
+ def <<(bytes)
207
+ end
208
+ end
209
+ yield progress_bar
210
+ end
211
+ end
212
+
213
+ # :call-seq:
214
+ # proxy_uri() => URI?
215
+ #
216
+ # Returns the proxy server to use. Obtains the proxy from the relevant environment variable (e.g. HTTP_PROXY).
217
+ # Supports exclusions based on host name and port number from environment variable NO_PROXY.
218
+ def proxy_uri()
219
+ proxy = ENV["#{scheme.upcase}_PROXY"]
220
+ proxy = URI.parse(proxy) if String === proxy
221
+ excludes = (ENV["NO_PROXY"] || "").split(/\s*,\s*/).compact
222
+ excludes = excludes.map { |exclude| exclude =~ /:\d+$/ ? exclude : "#{exclude}:*" }
223
+ return proxy unless excludes.any? { |exclude| File.fnmatch(exclude, "#{host}:#{port}") }
224
+ end
225
+
226
+ def write_internal(options, &block) #:nodoc:
227
+ fail "This protocol doesn't support writing (yet, how about helping by implementing it?)"
228
+ end
229
+ end
230
+
231
+ class HTTP #:nodoc:
232
+
233
+ # See URI::Generic#read
234
+ def read(options = nil, &block)
235
+ options ||= {}
236
+ connect do |http|
237
+ puts "Requesting #{self}" #if verbose
238
+ headers = { 'If-Modified-Since' => CGI.rfc1123_date(options[:modified].utc) } if options[:modified]
239
+ request = Net::HTTP::Get.new(request_uri.empty? ? '/' : request_uri, headers)
240
+ request.basic_auth self.user, self.password if self.user
241
+ http.request request do |response|
242
+ case response
243
+ when Net::HTTPNotModified
244
+ # No modification, nothing to do.
245
+ puts 'Not modified since last download' #if verbose
246
+ return nil
247
+ when Net::HTTPRedirection
248
+ # Try to download from the new URI, handle relative redirects.
249
+ puts "Redirected to #{response['Location']}" #if verbose
250
+ return (self + URI.parse(response['location'])).read(options, &block)
251
+ when Net::HTTPOK
252
+ puts "Downloading #{self}" #if verbose
253
+ result = nil
254
+ with_progress_bar options[:progress], path.split('/').last, response.content_length do |progress|
255
+ if block
256
+ response.read_body do |chunk|
257
+ block.call chunk
258
+ progress << chunk
259
+ end
260
+ else
261
+ result = ''
262
+ response.read_body do |chunk|
263
+ result << chunk
264
+ progress << chunk
265
+ end
266
+ end
267
+ end
268
+ return result
269
+ when Net::HTTPNotFound
270
+ raise NotFoundError, "Looking for #{self} and all I got was a 404!"
271
+ else
272
+ raise RuntimeError, "Failed to download #{self}: #{response.message}"
273
+ end
274
+ end
275
+ end
276
+ end
277
+
278
+ private
279
+
280
+ def connect
281
+ if proxy = proxy_uri
282
+ proxy = URI.parse(proxy) if String === proxy
283
+ http = Net::HTTP.new(host, port, proxy.host, proxy.port, proxy.user, proxy.password)
284
+ else
285
+ http = Net::HTTP.new(host, port)
286
+ end
287
+ http.use_ssl = true if self.instance_of? URI::HTTPS
288
+ yield http
289
+ end
290
+ end
291
+ end
@@ -0,0 +1,61 @@
1
+
2
+ require_relative 'contrib/uri_ext.rb'
3
+ require_relative 'contrib/progressbar.rb'
4
+
5
+ require 'rbconfig'
6
+ require 'yaml'
7
+ require 'archive/tar/minitar'
8
+ require 'zlib'
9
+ require 'fileutils'
10
+ require 'tmpdir'
11
+ require 'tempfile'
12
+
13
+ STATUS_BAR_WIDTH = 80
14
+
15
+ def ensure_core_headers( headers )
16
+
17
+ unless headers.select { |header| have_header( header ) }.empty?
18
+ return true
19
+ end
20
+
21
+ ruby_dir = ""
22
+ if RUBY_PATCHLEVEL < 0
23
+ Tempfile.open("preview-revision") { |temp|
24
+ uri_path = "http://cloud.github.com/downloads/mark-moseley/ruby_core_source/preview_revision.yml"
25
+ uri = URI.parse(uri_path)
26
+ uri.download(temp, {:progress => true})
27
+ revision_map = YAML::load(File.open(temp.path))
28
+ ruby_dir = revision_map[RUBY_REVISION]
29
+ return false if ruby_dir.nil?
30
+ }
31
+ else
32
+ ruby_dir = "ruby-" + RUBY_VERSION.to_s + "-p" + RUBY_PATCHLEVEL.to_s
33
+ end
34
+
35
+ #
36
+ # Download the headers
37
+ #
38
+ uri_path = "http://ftp.ruby-lang.org/pub/ruby/1.9/" + ruby_dir + ".tar.gz"
39
+ Tempfile.open("ruby-src") { |temp|
40
+
41
+ temp.binmode
42
+ uri = URI.parse(uri_path)
43
+ uri.download(temp, {:progress => true})
44
+
45
+ tgz = Zlib::GzipReader.new(File.open(temp, "rb"))
46
+
47
+ Dir.mktmpdir { |dir|
48
+ inc_dir = dir + "/" + ruby_dir + "/*.inc"
49
+ hdr_dir = dir + "/" + ruby_dir + "/*.h"
50
+ Archive::Tar::Minitar.unpack(tgz, dir)
51
+ FileUtils.cp( Dir.glob([ inc_dir, hdr_dir ] ), Config::CONFIG["rubyhdrdir"])
52
+ }
53
+ }
54
+
55
+ return true unless headers.select { |header| have_header( header ) }.empty?
56
+
57
+ raise LoadError 'Could not find core headers ' + headers.join( ', ' ) + '.'
58
+
59
+
60
+ end
61
+
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 5
9
- version: 0.2.5
8
+ - 6
9
+ version: 0.2.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - Asher
@@ -14,22 +14,10 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-11-28 00:00:00 -05:00
17
+ date: 2010-12-09 00:00:00 -05:00
18
18
  default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: minitar
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
31
- type: :runtime
32
- version_requirements: *id001
19
+ dependencies: []
20
+
33
21
  description: Fork of ruby_core_source modified to support CFLAGS and permit use of whichever build system (mkmf, rpmkmf, or other modules) while utilizing core source. This fork was created because the existing ruby_core_source takes over the build definition, preventing definition of CFLAGS and other settings that mkmf requires be defined by an enclosing block.
34
22
  email: asher@ridiculouspower.com
35
23
  executables: []
@@ -38,8 +26,11 @@ extensions: []
38
26
 
39
27
  extra_rdoc_files: []
40
28
 
41
- files: []
42
-
29
+ files:
30
+ - lib/contrib/progressbar.rb
31
+ - lib/contrib/uri_ext.rb
32
+ - lib/core-source.rb
33
+ - README.rdoc
43
34
  has_rdoc: true
44
35
  homepage: http://rubygems.org/gems/core-source
45
36
  licenses: []