rgem2rpm 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/rgem2rpm/converter.rb +50 -39
- data/lib/rgem2rpm/version.rb +1 -1
- data/lib/rgem2rpm.rb +0 -5
- data/rgem2rpm.gemspec +1 -6
- metadata +2 -7
- data/lib/rgem2rpm/ext/builder.rb +0 -23
- data/lib/rgem2rpm/ext/configure_builder.rb +0 -20
- data/lib/rgem2rpm/ext/ext_conf_builder.rb +0 -17
- data/lib/rgem2rpm/ext/rake_builder.rb +0 -32
- data/lib/rgem2rpm/ext.rb +0 -12
data/lib/rgem2rpm/converter.rb
CHANGED
@@ -3,7 +3,6 @@ require 'fileutils'
|
|
3
3
|
require 'zlib'
|
4
4
|
require 'archive/tar/minitar'
|
5
5
|
require 'erb'
|
6
|
-
require 'rgem2rpm/ext'
|
7
6
|
include Archive::Tar
|
8
7
|
|
9
8
|
class RGem2Rpm::Converter < Gem::Installer
|
@@ -108,10 +107,19 @@ class RGem2Rpm::Converter < Gem::Installer
|
|
108
107
|
def create_rpm
|
109
108
|
# unpack gem software
|
110
109
|
unpack @rpm_unpack_dir
|
110
|
+
# check if gem has extensions
|
111
|
+
unless @spec.extensions.empty?
|
112
|
+
# set rpm arch
|
113
|
+
@rpm_no_arch = false
|
114
|
+
# build extensions
|
115
|
+
build_extensions
|
116
|
+
# clean build
|
117
|
+
build_clean
|
118
|
+
end
|
119
|
+
# create file list with build files
|
120
|
+
generate_file_list
|
111
121
|
# generate install
|
112
122
|
generate_install
|
113
|
-
# generate post install
|
114
|
-
#generate_post
|
115
123
|
# generate executable files
|
116
124
|
generate_bin
|
117
125
|
# create gemspec file
|
@@ -152,6 +160,32 @@ class RGem2Rpm::Converter < Gem::Installer
|
|
152
160
|
end
|
153
161
|
|
154
162
|
private
|
163
|
+
##
|
164
|
+
# Get list of files generated during build operation
|
165
|
+
def generate_file_list
|
166
|
+
# check if gem has native extensions
|
167
|
+
if @spec.extensions.empty?
|
168
|
+
# use gemspec file list
|
169
|
+
@file_list = @spec.files
|
170
|
+
else
|
171
|
+
# initialize build files array
|
172
|
+
build_files = Array.new
|
173
|
+
# get required path
|
174
|
+
first_element = @spec.require_paths.first
|
175
|
+
require_path = if first_element.kind_of? Array then first_element.join("/") else first_element end
|
176
|
+
# start building make command
|
177
|
+
Dir.chdir("#{@rpm_tmp_dir}/#{@spec.full_name}/#{require_path}") do |path|
|
178
|
+
Dir.glob("**/*") do |file|
|
179
|
+
build_files << "#{require_path}/#{file}" unless File.directory?("#{path}/#{file}")
|
180
|
+
end
|
181
|
+
end
|
182
|
+
# include build files in the list of files
|
183
|
+
@file_list = @spec.files + build_files
|
184
|
+
# delete duplicate values
|
185
|
+
@file_list.uniq!
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
155
189
|
##
|
156
190
|
# Create install string.
|
157
191
|
def generate_install
|
@@ -164,7 +198,7 @@ class RGem2Rpm::Converter < Gem::Installer
|
|
164
198
|
install_str << "install -p -m 644 %{name}-%{version}.gemspec %{buildroot}%{prefix}/specifications"
|
165
199
|
files_str << "%{prefix}/specifications/%{name}-%{version}.gemspec"
|
166
200
|
# get files list
|
167
|
-
@
|
201
|
+
@file_list.each { |file|
|
168
202
|
if File.file? "#{@rpm_unpack_dir}/#{file}"
|
169
203
|
install_str << "\ninstall -p -D -m 644 %{name}-%{version}/\"#{file}\" %{buildroot}%{prefix}/gems/%{name}-%{version}/\"#{file}\""
|
170
204
|
files_str << "\n\"%{prefix}/gems/%{name}-%{version}/#{file}\""
|
@@ -181,41 +215,6 @@ class RGem2Rpm::Converter < Gem::Installer
|
|
181
215
|
@files = files_str.string
|
182
216
|
end
|
183
217
|
|
184
|
-
##
|
185
|
-
# Builds extensions. Valid types of extensions are extconf.rb files,
|
186
|
-
# configure scripts and rakefiles or mkrf_conf files.
|
187
|
-
def generate_post
|
188
|
-
return if @spec.extensions.empty?
|
189
|
-
@rpm_post = "echo \"Building native extensions. This could take a while...\"\n"
|
190
|
-
# initialize make command string
|
191
|
-
build_cmd = StringIO.new
|
192
|
-
# start building make command
|
193
|
-
dest_path = File.join @os_install_dir, "gems", "#{name}-#{version}", @spec.require_paths.first
|
194
|
-
ran_rake = false # only run rake once
|
195
|
-
|
196
|
-
@spec.extensions.each do |extension|
|
197
|
-
break if ran_rake
|
198
|
-
|
199
|
-
builder = case extension
|
200
|
-
when /extconf/ then
|
201
|
-
RGem2Rpm::Ext::ExtConfBuilder
|
202
|
-
when /configure/ then
|
203
|
-
RGem2Rpm::Ext::ConfigureBuilder
|
204
|
-
when /rakefile/i, /mkrf_conf/i then
|
205
|
-
ran_rake = true
|
206
|
-
RGem2Rpm::Ext::RakeBuilder
|
207
|
-
else
|
208
|
-
nil
|
209
|
-
end
|
210
|
-
# get build
|
211
|
-
build_cmd << builder.build(extension, dest_path)
|
212
|
-
end
|
213
|
-
# set rpm no arch to false
|
214
|
-
@rpm_no_arch = false
|
215
|
-
# return set post install
|
216
|
-
@rpm_post = "#{@rpm_post}#{build_cmd.string}"
|
217
|
-
end
|
218
|
-
|
219
218
|
def generate_bin
|
220
219
|
return if @spec.executables.nil? or @spec.executables.empty?
|
221
220
|
|
@@ -273,6 +272,18 @@ load Gem.bin_path('#{@spec.name}', '#{bin_file_name}', version)
|
|
273
272
|
TEXT
|
274
273
|
end
|
275
274
|
|
275
|
+
def build_clean
|
276
|
+
# clean each build
|
277
|
+
@spec.extensions.each do |extension|
|
278
|
+
Dir.chdir(File.dirname("#{@rpm_tmp_dir}/#{@spec.full_name}/#{extension}")) do |path|
|
279
|
+
# delete intermediate build files
|
280
|
+
system "make clean"
|
281
|
+
# delete makefile
|
282
|
+
FileUtils.rm_rf("#{path}/Makefile")
|
283
|
+
end
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
276
287
|
def create_rpm_env
|
277
288
|
FileUtils.mkdir_p "#{@rpm_top_dir}/SPECS" unless File.exists?("#{@rpm_top_dir}/SPECS")
|
278
289
|
FileUtils.mkdir_p "#{@rpm_top_dir}/BUILD" unless File.exists?("#{@rpm_top_dir}/BUILD")
|
data/lib/rgem2rpm/version.rb
CHANGED
data/lib/rgem2rpm.rb
CHANGED
@@ -4,8 +4,3 @@ module RGem2Rpm; end
|
|
4
4
|
require 'rgem2rpm/argumentparse'
|
5
5
|
require 'rgem2rpm/converter'
|
6
6
|
require 'rgem2rpm/version'
|
7
|
-
require 'rgem2rpm/ext'
|
8
|
-
require 'rgem2rpm/ext/builder'
|
9
|
-
require 'rgem2rpm/ext/configure_builder'
|
10
|
-
require 'rgem2rpm/ext/ext_conf_builder'
|
11
|
-
require 'rgem2rpm/ext/rake_builder'
|
data/rgem2rpm.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = %q{rgem2rpm}
|
3
|
-
s.version = "1.0
|
3
|
+
s.version = "1.1.0"
|
4
4
|
s.required_ruby_version = Gem::Requirement.new(">= 1.8.6")
|
5
5
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.4.2") if s.respond_to?(:required_rubygems_version=)
|
6
6
|
s.date = %q{2011-04-26}
|
@@ -18,12 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
"lib/rgem2rpm.rb",
|
19
19
|
"lib/rgem2rpm/argumentparse.rb",
|
20
20
|
"lib/rgem2rpm/converter.rb",
|
21
|
-
"lib/rgem2rpm/ext.rb",
|
22
21
|
"lib/rgem2rpm/version.rb",
|
23
|
-
"lib/rgem2rpm/ext/builder.rb",
|
24
|
-
"lib/rgem2rpm/ext/configure_builder.rb",
|
25
|
-
"lib/rgem2rpm/ext/ext_conf_builder.rb",
|
26
|
-
"lib/rgem2rpm/ext/rake_builder.rb",
|
27
22
|
"conf/template.spec"]
|
28
23
|
s.add_dependency 'minitar', '>= 0.5.3'
|
29
24
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rgem2rpm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.0
|
5
|
+
version: 1.1.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Joao Peixoto
|
@@ -38,12 +38,7 @@ files:
|
|
38
38
|
- lib/rgem2rpm.rb
|
39
39
|
- lib/rgem2rpm/argumentparse.rb
|
40
40
|
- lib/rgem2rpm/converter.rb
|
41
|
-
- lib/rgem2rpm/ext.rb
|
42
41
|
- lib/rgem2rpm/version.rb
|
43
|
-
- lib/rgem2rpm/ext/builder.rb
|
44
|
-
- lib/rgem2rpm/ext/configure_builder.rb
|
45
|
-
- lib/rgem2rpm/ext/ext_conf_builder.rb
|
46
|
-
- lib/rgem2rpm/ext/rake_builder.rb
|
47
42
|
- conf/template.spec
|
48
43
|
homepage: https://github.com/jppeixoto/rgem2rpm
|
49
44
|
licenses: []
|
@@ -68,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
63
|
requirements: []
|
69
64
|
|
70
65
|
rubyforge_project:
|
71
|
-
rubygems_version: 1.
|
66
|
+
rubygems_version: 1.8.1
|
72
67
|
signing_key:
|
73
68
|
specification_version: 3
|
74
69
|
summary: Convert ruby gems into rpm
|
data/lib/rgem2rpm/ext/builder.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'rubygems/ext/builder'
|
2
|
-
|
3
|
-
class RGem2Rpm::Ext::Builder < Gem::Ext::Builder
|
4
|
-
|
5
|
-
def self.make_str(dest_path)
|
6
|
-
# create make command strings
|
7
|
-
make = StringIO.new
|
8
|
-
# change makefile variables
|
9
|
-
make << "sed -i 's/RUBYARCHDIR\s*=\s*\$[^$]*/RUBYARCHDIR = #{dest_path.gsub(/\//, '\/')}/g' Makefile\n"
|
10
|
-
make << "sed -i 's/RUBYLIBDIR\s*=\s*\$[^$]*/RUBYLIBDIR = #{dest_path.gsub(/\//, '\/')}/g' Makefile\n"
|
11
|
-
make << "make #{redirector}\n"
|
12
|
-
# create make command strings
|
13
|
-
make << "make install #{redirector}"
|
14
|
-
# return make string
|
15
|
-
return make.string
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.redirector
|
19
|
-
'2>&1'
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'rgem2rpm/ext/builder'
|
2
|
-
|
3
|
-
class RGem2Rpm::Ext::ConfigureBuilder < RGem2Rpm::Ext::Builder
|
4
|
-
|
5
|
-
def self.build(extension, dest_path)
|
6
|
-
# create make string
|
7
|
-
build = StringIO.new
|
8
|
-
unless File.exist?('Makefile') then
|
9
|
-
build << "sh ./configure --prefix=#{dest_path}"
|
10
|
-
build << " #{Gem::Command.build_args.join ' '}" unless Gem::Command.build_args.empty?
|
11
|
-
build << "\n"
|
12
|
-
end
|
13
|
-
# get make commands
|
14
|
-
build << make_str(dest_past)
|
15
|
-
# return make string
|
16
|
-
return build.string
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'rgem2rpm/ext/builder'
|
2
|
-
|
3
|
-
class RGem2Rpm::Ext::ExtConfBuilder < RGem2Rpm::Ext::Builder
|
4
|
-
|
5
|
-
def self.build(extension, dest_path)
|
6
|
-
# create build string
|
7
|
-
build = StringIO.new
|
8
|
-
build << "cd %{prefix}/gems/%{name}-%{version}/#{File.dirname extension}\n"
|
9
|
-
build << "#{File.basename Gem.ruby} #{File.basename extension}"
|
10
|
-
build << " #{Gem::Command.build_args.join ' '}" unless Gem::Command.build_args.empty?
|
11
|
-
build << " #{redirector}\n"
|
12
|
-
# get make commands
|
13
|
-
build << make_str(dest_path)
|
14
|
-
return build.string
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'rgem2rpm/ext/builder'
|
2
|
-
|
3
|
-
class RGem2Rpm::Ext::RakeBuilder < RGem2Rpm::Ext::Builder
|
4
|
-
|
5
|
-
def self.build(extension, dest_path)
|
6
|
-
# create build string
|
7
|
-
build = StringIO.new
|
8
|
-
if File.basename(extension) =~ /mkrf_conf/i then
|
9
|
-
build << "#{File.basename Gem.ruby} #{extension}"
|
10
|
-
build << " #{Gem::Command.build_args.join " "}" unless Gem::Command.build_args.empty?
|
11
|
-
build << "\n"
|
12
|
-
end
|
13
|
-
|
14
|
-
# Deal with possible spaces in the path, e.g. C:/Program Files
|
15
|
-
dest_path = '"' + dest_path + '"' if dest_path.include?(' ')
|
16
|
-
|
17
|
-
rake = ENV['rake']
|
18
|
-
|
19
|
-
rake ||= begin
|
20
|
-
"\"#{File.basename Gem.ruby}\" -rubygems #{Gem.bin_path('rake')}"
|
21
|
-
rescue Gem::Exception
|
22
|
-
end
|
23
|
-
|
24
|
-
rake ||= Gem.default_exec_format % 'rake'
|
25
|
-
|
26
|
-
build << "#{rake} RUBYARCHDIR=#{dest_path} RUBYLIBDIR=#{dest_path}" # ENV is frozen
|
27
|
-
# return build string
|
28
|
-
return build.string
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
|
data/lib/rgem2rpm/ext.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
|
3
|
-
##
|
4
|
-
# Classes for building C extensions live here.
|
5
|
-
|
6
|
-
module RGem2Rpm::Ext; end
|
7
|
-
|
8
|
-
require 'rubygems/ext/builder'
|
9
|
-
require 'rubygems/ext/configure_builder'
|
10
|
-
require 'rubygems/ext/ext_conf_builder'
|
11
|
-
require 'rubygems/ext/rake_builder'
|
12
|
-
|