rgem2rpm 1.4.14 → 1.4.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/rgem2rpm/converter.rb +3 -3
- data/lib/rgem2rpm/gem.rb +126 -118
- data/lib/rgem2rpm/rpm.rb +111 -91
- data/lib/rgem2rpm/version.rb +1 -1
- data/rgem2rpm.gemspec +3 -2
- metadata +18 -17
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8a39375fa328be4d8ce598ebe6b6e1e0ca9ddf8a685ab7317611a76265f641b2
|
4
|
+
data.tar.gz: 8e25f51912fee50c90d30229138dec28508c5c0434ae7b3668c3971c4a415ceb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: df931ef985f4866644e7b5d277d719dbc07eaf1415768e433af2000707d74f19288e6ef7bde5b2c52ae5a1b1ffcc787870638358ade0d1b42c47ac6b58e0cfa7
|
7
|
+
data.tar.gz: e76507e2e6001bb993832c59a47f7f6b5c0e8c60756dd1577e9b64c87761e4575c40b949a4ccae9d57e5eb7eaf59e94aec20ddba0bcd8e900f5f304df9777f31
|
data/lib/rgem2rpm/converter.rb
CHANGED
@@ -18,10 +18,10 @@ class RGem2Rpm::Converter
|
|
18
18
|
rpm.create
|
19
19
|
rescue => e
|
20
20
|
# clean temporary files
|
21
|
-
objects.each { |obj| obj.clean }
|
21
|
+
#objects.each { |obj| obj.clean }
|
22
22
|
# write error message
|
23
|
-
puts e.message
|
24
|
-
exit
|
23
|
+
puts e.message
|
24
|
+
exit 1
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
data/lib/rgem2rpm/gem.rb
CHANGED
@@ -7,28 +7,30 @@ require 'rubygems/remote_fetcher'
|
|
7
7
|
class RGem2Rpm::Gem
|
8
8
|
# define accessors
|
9
9
|
attr_accessor :spec
|
10
|
-
|
10
|
+
|
11
11
|
def initialize(args)
|
12
12
|
# initialize paramters
|
13
|
-
@filename
|
14
|
-
@platform
|
13
|
+
@filename = args[:filename]
|
14
|
+
@platform = args[:platform] || 'ruby'
|
15
15
|
@installname = args[:rpmname]
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
# install gem to pwd
|
19
19
|
def install
|
20
20
|
# get spec information
|
21
21
|
@spec = compute_spec
|
22
22
|
# define name and platform
|
23
23
|
if @installname
|
24
|
-
|
24
|
+
@spec[:installname] = @installname
|
25
25
|
else
|
26
|
-
|
26
|
+
@spec[:installname] = name_and_platform(@spec[:name])
|
27
27
|
end
|
28
28
|
# set install dir
|
29
29
|
@installdir = "#{@spec[:installname]}-#{@spec[:version]}"
|
30
30
|
# install gem
|
31
|
-
Gem::Installer.new(@filename, :env_shebang => true, :ignore_dependencies => true,
|
31
|
+
Gem::Installer.new(@filename, :env_shebang => true, :ignore_dependencies => true,
|
32
|
+
:install_dir => File.expand_path(@installdir), :bin_dir => File.expand_path("#{@installdir}/bin"),
|
33
|
+
:wrappers => true).install
|
32
34
|
# install build files
|
33
35
|
install_build_files
|
34
36
|
# get file list
|
@@ -36,128 +38,134 @@ class RGem2Rpm::Gem
|
|
36
38
|
# build tar.gz
|
37
39
|
build_source
|
38
40
|
end
|
39
|
-
|
41
|
+
|
40
42
|
# clean temporary files
|
41
43
|
def clean
|
42
44
|
return if @installdir.nil?
|
43
45
|
FileUtils.rm_rf @installdir
|
44
46
|
FileUtils.rm_rf "#{@installdir}.tar.gz"
|
45
47
|
end
|
46
|
-
|
48
|
+
|
47
49
|
private
|
48
|
-
# get information from specification
|
49
|
-
def compute_spec
|
50
|
-
specinfo = {}
|
51
|
-
metadata = nil
|
52
50
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
end
|
51
|
+
# get information from specification
|
52
|
+
def compute_spec
|
53
|
+
specinfo = {}
|
54
|
+
metadata = nil
|
58
55
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
# summary
|
64
|
-
specinfo[:summary] = metadata.summary
|
65
|
-
# homepage
|
66
|
-
specinfo[:homepage] = metadata.homepage
|
67
|
-
# platform
|
68
|
-
specinfo[:platform] = metadata.platform
|
69
|
-
# description
|
70
|
-
specinfo[:description] = metadata.description
|
71
|
-
# if the gemspec has extensions defined, then this should be a 'native' arch.
|
72
|
-
specinfo[:architecture] = metadata.extensions.empty? ? 'all' : 'native'
|
73
|
-
# rubygem required version
|
74
|
-
specinfo[:rubygem] = metadata.required_rubygems_version
|
75
|
-
# dependencies
|
76
|
-
specinfo[:dependencies] = metadata.runtime_dependencies
|
77
|
-
# extensions
|
78
|
-
specinfo[:extensions] = metadata.extensions
|
79
|
-
# executables
|
80
|
-
specinfo[:executables] = metadata.executables
|
81
|
-
#Return value
|
82
|
-
specinfo
|
56
|
+
if Gem::VERSION.to_i >= 2
|
57
|
+
metadata = Gem::Package.new(@filename).spec
|
58
|
+
else
|
59
|
+
Gem::Package.open(File.open(@filename)) {|gem| metadata = gem.metadata}
|
83
60
|
end
|
84
|
-
|
85
|
-
#
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
61
|
+
|
62
|
+
# name
|
63
|
+
specinfo[:name] = metadata.name
|
64
|
+
# version
|
65
|
+
specinfo[:version] = metadata.version
|
66
|
+
# summary
|
67
|
+
specinfo[:summary] = metadata.summary
|
68
|
+
# homepage
|
69
|
+
specinfo[:homepage] = metadata.homepage
|
70
|
+
# platform
|
71
|
+
specinfo[:platform] = metadata.platform
|
72
|
+
# description
|
73
|
+
specinfo[:description] = metadata.description
|
74
|
+
# if the gemspec has extensions defined, then this should be a 'native' arch.
|
75
|
+
specinfo[:architecture] = metadata.extensions.empty? ? 'all' : 'native'
|
76
|
+
# rubygem required version
|
77
|
+
specinfo[:rubygem] = metadata.required_rubygems_version
|
78
|
+
# dependencies
|
79
|
+
specinfo[:dependencies] = metadata.runtime_dependencies
|
80
|
+
# extensions
|
81
|
+
specinfo[:extensions] = metadata.extensions
|
82
|
+
# executables
|
83
|
+
specinfo[:executables] = metadata.executables
|
84
|
+
#Return value
|
85
|
+
specinfo
|
86
|
+
end
|
87
|
+
|
88
|
+
# define name and platform
|
89
|
+
def name_and_platform(gemname)
|
90
|
+
name = gemname
|
91
|
+
if gemname =~ /jruby|jar|java/ or @spec[:platform].to_s == 'java'
|
92
|
+
@platform = 'jruby'
|
93
|
+
name = "jruby-#{gemname}" unless gemname =~ /jruby/
|
94
|
+
elsif @platform == 'jruby' and !@spec[:executables].nil? and !@spec[:executables].empty?
|
95
|
+
name = "jruby-#{gemname}"
|
95
96
|
end
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
97
|
+
"rubygem-#{name}"
|
98
|
+
end
|
99
|
+
|
100
|
+
# return hash with list of files and directories
|
101
|
+
def files
|
102
|
+
@spec[:files] = {:directories => [], :files => [], :executables => [], :extensions => []}
|
103
|
+
Dir.chdir(@installdir) do
|
104
|
+
# create gem directory structure
|
105
|
+
@spec[:files][:directories] << 'gems'
|
106
|
+
@spec[:files][:directories] << 'specifications'
|
107
|
+
@spec[:files][:directories] << 'bin'
|
108
|
+
# get files and directories
|
109
|
+
Dir.glob("gems/**/*") do |file|
|
110
|
+
key = File.directory?(file) ? :directories : (File.executable?(file) || file.end_with?('.sh') ? :executables : :files)
|
111
|
+
@spec[:files][key] << file
|
112
|
+
end
|
113
|
+
# get gem path
|
114
|
+
Dir.glob("gems/*") do |file|
|
115
|
+
@spec[:files][:gempath] = file
|
116
|
+
end
|
117
|
+
# get specification filename
|
118
|
+
Dir.glob("specifications/*") do |file|
|
119
|
+
@spec[:files][:specification] = file
|
120
|
+
end
|
121
|
+
# get executable files
|
122
|
+
Dir.glob("bin/*") do |file|
|
123
|
+
@spec[:files][:executables] << file
|
124
|
+
shebang(file)
|
125
|
+
end
|
126
|
+
|
127
|
+
ext_files = Dir.glob("extensions/**/*.so") + Dir.glob("extensions/**/gem.build_complete")
|
128
|
+
ext_files.each do |file|
|
129
|
+
@spec[:files][:extensions] << file
|
123
130
|
end
|
124
131
|
end
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
132
|
+
end
|
133
|
+
|
134
|
+
def shebang(filename)
|
135
|
+
# alter first line of all executables
|
136
|
+
file_arr = File.readlines(filename)
|
137
|
+
file_arr[0] = "#!/usr/bin/env #{@platform}\n"
|
138
|
+
File.open(filename, 'w') {|f| f.write(file_arr.join)}
|
139
|
+
end
|
140
|
+
|
141
|
+
def build_source
|
142
|
+
# create tar.gz
|
143
|
+
res = system "tar czf #{@installdir}.tar.gz #{@installdir}"
|
144
|
+
# check errors
|
145
|
+
raise "Error creating archive #{@installdir}.tar.gz" unless res
|
146
|
+
# clean temporary files
|
147
|
+
FileUtils.rm_rf @installdir
|
148
|
+
end
|
149
|
+
|
150
|
+
def install_build_files
|
151
|
+
# get current directory
|
152
|
+
pwd = FileUtils.pwd
|
153
|
+
# clean build if gem has extensions
|
154
|
+
@spec[:extensions].each {|extension|
|
155
|
+
path = File.dirname("#{pwd}/#{@installdir}/gems/#{@filename[0, @filename.size - 4]}/#{extension}")
|
156
|
+
case RUBY_VERSION
|
157
|
+
when /^1.8/
|
158
|
+
FileUtils.rm_rf Dir.glob("#{path}/*.o")
|
159
|
+
FileUtils.rm_rf "#{path}/Makefile"
|
160
|
+
when /^1.9/
|
161
|
+
FileUtils.cp_r "#{path}/#{@installdir}", "#{pwd}/"
|
162
|
+
FileUtils.rm_rf "#{path}/#{@installdir}"
|
163
|
+
FileUtils.rm_rf Dir.glob("#{path}/*.o")
|
164
|
+
FileUtils.rm_rf Dir.glob("#{path}/*.so")
|
165
|
+
FileUtils.rm_rf "#{path}/Makefile"
|
166
|
+
end
|
167
|
+
}
|
168
|
+
# delete directories
|
169
|
+
Dir["#{@installdir}/*"].each {|name| FileUtils.rm_rf(name) unless name =~ /bin|gems|specifications|extensions/}
|
170
|
+
end
|
163
171
|
end
|
data/lib/rgem2rpm/rpm.rb
CHANGED
@@ -3,45 +3,45 @@ require 'erb'
|
|
3
3
|
|
4
4
|
class RGem2Rpm::Rpm
|
5
5
|
attr_accessor :name, :version, :release, :license, :summary, :group, :packager, :description, :installdir
|
6
|
-
|
6
|
+
|
7
7
|
def initialize(args)
|
8
|
-
@template
|
9
|
-
@name
|
10
|
-
@rpmname
|
11
|
-
@gemname
|
12
|
-
@version
|
13
|
-
@release
|
14
|
-
@license
|
15
|
-
@summary
|
16
|
-
@packager
|
17
|
-
@group
|
18
|
-
@osuser
|
19
|
-
@osgroup
|
20
|
-
@description
|
21
|
-
@installdir
|
22
|
-
@arch
|
23
|
-
@files
|
24
|
-
@rubygem
|
8
|
+
@template = args[:template] || File.dirname(__FILE__) + '/../../conf/template.spec'
|
9
|
+
@name = args[:installname]
|
10
|
+
@rpmname = args[:rpmname] || args[:installname]
|
11
|
+
@gemname = args[:name]
|
12
|
+
@version = args[:version]
|
13
|
+
@release = args[:release] || '1'
|
14
|
+
@license = "See #{args[:homepage]}"
|
15
|
+
@summary = args[:summary]
|
16
|
+
@packager = args[:packager] || 'rgem2rpm'
|
17
|
+
@group = args[:group] || 'System Environment/Libraries'
|
18
|
+
@osuser = args[:osuser] || 'root'
|
19
|
+
@osgroup = args[:osgroup] || 'root'
|
20
|
+
@description = process_description(args[:description])
|
21
|
+
@installdir = args[:installdir] || '/usr/share/gems'
|
22
|
+
@arch = args[:architecture]
|
23
|
+
@files = args[:files]
|
24
|
+
@rubygem = args[:rubygem]
|
25
25
|
@dependencies = args[:dependencies]
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
def create
|
29
29
|
# create spec
|
30
30
|
spec
|
31
31
|
# build rpm
|
32
32
|
build
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
def installlist
|
36
36
|
install_str = StringIO.new
|
37
37
|
install_str << "rm -rf %{buildroot}\n"
|
38
38
|
# get directories
|
39
|
-
@files[:directories].each {
|
39
|
+
@files[:directories].each {|directory|
|
40
40
|
escaped_str = directory.gsub(/%/, '%%')
|
41
41
|
install_str << "install -d \"#{escaped_str}\" %{buildroot}%{prefix}/\"#{escaped_str}\"\n"
|
42
42
|
}
|
43
43
|
# get files
|
44
|
-
@files[:files].each {
|
44
|
+
@files[:files].each {|file|
|
45
45
|
escaped_str = file.gsub(/%/, '%%')
|
46
46
|
install_str << "install -m 644 \"#{escaped_str}\" %{buildroot}%{prefix}/\"#{escaped_str}\"\n"
|
47
47
|
}
|
@@ -49,42 +49,60 @@ class RGem2Rpm::Rpm
|
|
49
49
|
escaped_str = @files[:specification].gsub(/%/, '%%')
|
50
50
|
install_str << "install -m 644 \"#{escaped_str}\" %{buildroot}%{prefix}/\"#{escaped_str}\"\n"
|
51
51
|
# get executables
|
52
|
-
@files[:executables].each {
|
52
|
+
@files[:executables].each {|executable|
|
53
53
|
escaped_str = executable.gsub(/%/, '%%')
|
54
54
|
install_str << "install -m 0755 \"#{escaped_str}\" %{buildroot}%{prefix}/\"#{escaped_str}\"\n"
|
55
55
|
}
|
56
|
+
|
57
|
+
#Extensions file get build into extensions/<ARCH>-linux/<Ruby Version>/GEM-VERSION/
|
58
|
+
# We need to install this into /usr/lib64/gems/ruby/GEM-VERSION/
|
59
|
+
# Ex. extensions/x86_64-linux/2.5.0/ffi-1.10.0/gem.build_complete => /usr/lib64/gems/ruby/ffi-1.10.0/gem.build_complete
|
60
|
+
@files[:extensions].each {|extensions|
|
61
|
+
#remove preceding chars until gem name-version is found (non greedy way)
|
62
|
+
# ex. "extensions/x86_64-linux/2.5.0/ffi-1.10.0/gem.build_complete".sub(/.*?(?=ffi-1.10.0)/,"")
|
63
|
+
suffix = extensions.sub(/.*?(?=#{@gemname}-#{@version})/, "")
|
64
|
+
install_str << "install -D \"#{extensions}\" %{buildroot}%{_libdir}/gems/ruby/\"#{suffix}\"\n"
|
65
|
+
}
|
66
|
+
|
56
67
|
# return install string
|
57
68
|
install_str.string
|
58
69
|
end
|
59
|
-
|
70
|
+
|
60
71
|
def filelist
|
61
72
|
files_str = StringIO.new
|
62
73
|
files_str << "%defattr(0644,#{@osuser},#{@osgroup},0755)\n"
|
63
|
-
|
74
|
+
|
64
75
|
files_str << "%dir %{prefix}\n"
|
65
|
-
@files[:directories].each {
|
76
|
+
@files[:directories].each {|file|
|
66
77
|
escaped_str = file.gsub(/%/, '?')
|
67
78
|
files_str << "%dir \"%{prefix}/#{escaped_str}\"\n"
|
68
79
|
}
|
69
|
-
|
80
|
+
|
70
81
|
files_str << "%{prefix}/#{@files[:specification]}\n"
|
71
|
-
@files[:files].each {
|
82
|
+
@files[:files].each {|file|
|
72
83
|
escaped_str = file.gsub(/%/, '?')
|
73
84
|
files_str << "\"%{prefix}/#{escaped_str}\"\n"
|
74
85
|
}
|
75
|
-
|
86
|
+
|
76
87
|
# get executables
|
77
|
-
@files[:executables].each {
|
88
|
+
@files[:executables].each {|executable|
|
78
89
|
files_str << "%attr(0755,#{@osuser},#{@osgroup}) %{prefix}/#{executable}\n"
|
79
90
|
}
|
91
|
+
|
92
|
+
@files[:extensions].each {|file|
|
93
|
+
suffix = file.sub(/.*?(?=#{@gemname}-#{@version})/, "")
|
94
|
+
escaped_str = suffix.gsub(/%/, '?')
|
95
|
+
files_str << "\"%{_libdir}/gems/ruby/#{escaped_str}\"\n"
|
96
|
+
}
|
97
|
+
|
80
98
|
# return file string
|
81
99
|
files_str.string
|
82
100
|
end
|
83
|
-
|
101
|
+
|
84
102
|
def buildarch
|
85
103
|
@arch == 'all' ? 'noarch' : nil
|
86
104
|
end
|
87
|
-
|
105
|
+
|
88
106
|
def requires
|
89
107
|
req_str = StringIO.new
|
90
108
|
# set rubygems dependency
|
@@ -93,11 +111,11 @@ class RGem2Rpm::Rpm
|
|
93
111
|
req_str << " #{@rubygem}" unless @rubygem == '>= 0'
|
94
112
|
end
|
95
113
|
# set runtime dependencies
|
96
|
-
@dependencies.each {
|
97
|
-
d.requirement.requirements.each {
|
114
|
+
@dependencies.each {|d|
|
115
|
+
d.requirement.requirements.each {|v|
|
98
116
|
req_str << ', ' unless req_str.size == 0
|
99
117
|
req_str << "rubygem(#{d.name})"
|
100
|
-
req_str << " #{v[0].gsub('~>','>=')} #{v[1].to_s}" unless v[0] =~ /!=/
|
118
|
+
req_str << " #{v[0].gsub('~>', '>=')} #{v[1].to_s}" unless v[0] =~ /!=/
|
101
119
|
if v[0] =~ /~>/
|
102
120
|
version = v[1].to_s.strip.split('.')
|
103
121
|
version[version.size - 1] = "0"
|
@@ -109,87 +127,89 @@ class RGem2Rpm::Rpm
|
|
109
127
|
# return string with dependencies
|
110
128
|
req_str.string
|
111
129
|
end
|
112
|
-
|
130
|
+
|
113
131
|
def conflicts
|
114
132
|
conflict_str = StringIO.new
|
115
133
|
# set conflicts
|
116
|
-
@dependencies.each {
|
117
|
-
d.requirement.requirements.each {
|
134
|
+
@dependencies.each {|d|
|
135
|
+
d.requirement.requirements.each {|v|
|
118
136
|
conflict_str << ', ' unless conflict_str.size == 0
|
119
|
-
conflict_str << "rubygem(#{d.name}) #{v[0].gsub('!=','=')} #{v[1].to_s}" if v[0] =~ /!=/
|
137
|
+
conflict_str << "rubygem(#{d.name}) #{v[0].gsub('!=', '=')} #{v[1].to_s}" if v[0] =~ /!=/
|
120
138
|
}
|
121
139
|
}
|
122
140
|
# returns string with conflicts
|
123
141
|
conflict_str.string
|
124
142
|
end
|
125
|
-
|
126
|
-
|
143
|
+
|
144
|
+
# return gem provides clause
|
127
145
|
def provides
|
128
146
|
prv_str = StringIO.new
|
129
147
|
prv_str << "rubygem(#{@gemname}) = #{@version}"
|
130
148
|
prv_str.string
|
131
149
|
end
|
132
|
-
|
133
|
-
|
150
|
+
|
151
|
+
# return changelog information
|
134
152
|
def changelog
|
135
153
|
change_str = StringIO.new
|
136
|
-
change_str << "* #{Time.now.strftime('%a %b %d %Y')} rgem2rpm <https://github.com/
|
154
|
+
change_str << "* #{Time.now.strftime('%a %b %d %Y')} rgem2rpm <https://github.com/ptinovacao/rgem2rpm> #{@version}-#{@release}\n"
|
137
155
|
change_str << "- Create rpm package\n"
|
138
156
|
change_str.string
|
139
157
|
end
|
140
|
-
|
141
|
-
|
158
|
+
|
159
|
+
# clean temporary files
|
142
160
|
def clean
|
143
161
|
FileUtils.rm_rf "#{@name}-#{@version}.spec"
|
144
162
|
FileUtils.rm_rf "./rpmtemp"
|
145
163
|
end
|
146
|
-
|
164
|
+
|
147
165
|
private
|
148
|
-
def spec
|
149
|
-
template = ERB.new(File.read(@template))
|
150
|
-
# write rpm spec file file
|
151
|
-
File.open("#{@name}-#{@version}.spec", 'w') { |f|
|
152
|
-
f.write(template.result(binding))
|
153
|
-
}
|
154
|
-
end
|
155
|
-
|
156
|
-
def process_description(description)
|
157
|
-
res = []
|
158
|
-
str = description
|
159
|
-
while str != nil
|
160
|
-
res << "#{str[0,80]}"
|
161
|
-
str = str[80,str.size]
|
162
|
-
end
|
163
|
-
res.join "\n"
|
164
|
-
end
|
165
166
|
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
#
|
179
|
-
|
180
|
-
# clean temporary files
|
181
|
-
Dir.glob("rpmtemp/rpmbuild/RPMS/**/*.rpm") do |file|
|
182
|
-
FileUtils.mv file, "./"
|
183
|
-
end
|
184
|
-
clean
|
167
|
+
def spec
|
168
|
+
template = ERB.new(File.read(@template))
|
169
|
+
# write rpm spec file file
|
170
|
+
File.open("#{@name}-#{@version}.spec", 'w') {|f|
|
171
|
+
f.write(template.result(binding))
|
172
|
+
}
|
173
|
+
end
|
174
|
+
|
175
|
+
def process_description(description)
|
176
|
+
res = []
|
177
|
+
str = description
|
178
|
+
while str != nil
|
179
|
+
res << "#{str[0, 80]}"
|
180
|
+
str = str[80, str.size]
|
185
181
|
end
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
182
|
+
res.join "\n"
|
183
|
+
end
|
184
|
+
|
185
|
+
def build
|
186
|
+
create_rpm_env
|
187
|
+
# move to rpmbuild path
|
188
|
+
FileUtils.mv "#{@name}-#{@version}.spec", "rpmtemp/rpmbuild/SPECS"
|
189
|
+
# move sources to rpmbuild
|
190
|
+
FileUtils.mv "#{@name}-#{@version}.tar.gz", "rpmtemp/rpmbuild/SOURCES"
|
191
|
+
# define rpm build args
|
192
|
+
options = "-bb --rmspec --rmsource"
|
193
|
+
define = "--define \"_topdir #{Dir.pwd}/rpmtemp/rpmbuild\" --define \"_tmppath #{Dir.pwd}/rpmtemp/rpmbuild/tmp\""
|
194
|
+
specfile = "#{Dir.pwd}/rpmtemp/rpmbuild/SPECS/#{@name}-#{@version}.spec"
|
195
|
+
# create rpm
|
196
|
+
res = system "rpmbuild #{options} #{define} #{specfile}"
|
197
|
+
# check errors
|
198
|
+
raise "Error creating rpm" unless res
|
199
|
+
# clean temporary files
|
200
|
+
Dir.glob("rpmtemp/rpmbuild/RPMS/**/*.rpm") do |file|
|
201
|
+
FileUtils.mv file, "./"
|
194
202
|
end
|
203
|
+
clean
|
204
|
+
end
|
205
|
+
|
206
|
+
def create_rpm_env
|
207
|
+
FileUtils.mkdir_p "rpmtemp/rpmbuild/SPECS"
|
208
|
+
FileUtils.mkdir_p "rpmtemp/rpmbuild/BUILD"
|
209
|
+
FileUtils.mkdir_p "rpmtemp/rpmbuild/RPMS"
|
210
|
+
FileUtils.mkdir_p "rpmtemp/rpmbuild/SRPMS"
|
211
|
+
FileUtils.mkdir_p "rpmtemp/rpmbuild/SOURCES"
|
212
|
+
FileUtils.mkdir_p "rpmtemp/rpmbuild/tmp"
|
213
|
+
end
|
214
|
+
|
195
215
|
end
|
data/lib/rgem2rpm/version.rb
CHANGED
data/rgem2rpm.gemspec
CHANGED
@@ -7,9 +7,10 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.required_ruby_version = Gem::Requirement.new(">= 1.8.6")
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.4.2") if s.respond_to?(:required_rubygems_version=)
|
9
9
|
s.date = Time.now.strftime("%Y-%m-%d")
|
10
|
-
s.authors = ["Joao Peixoto"]
|
11
|
-
s.email = %q{
|
10
|
+
s.authors = ["Sergio Freire", "Nuno Correia", "Joao Peixoto"]
|
11
|
+
s.email = %q{sergio-s-freire@ptinovacao.pt}
|
12
12
|
s.summary = %q{Convert ruby gems into rpm}
|
13
|
+
s.license = "MIT"
|
13
14
|
s.homepage = %q{https://github.com/ptinovacao/rgem2rpm}
|
14
15
|
s.description = %q{Application that enables conversion of rubygems to rpms.}
|
15
16
|
s.bindir = 'bin'
|
metadata
CHANGED
@@ -1,55 +1,56 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rgem2rpm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
5
|
-
prerelease:
|
4
|
+
version: 1.4.15
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
7
|
+
- Sergio Freire
|
8
|
+
- Nuno Correia
|
8
9
|
- Joao Peixoto
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date:
|
13
|
+
date: 2019-01-16 00:00:00.000000000 Z
|
13
14
|
dependencies: []
|
14
15
|
description: Application that enables conversion of rubygems to rpms.
|
15
|
-
email:
|
16
|
+
email: sergio-s-freire@ptinovacao.pt
|
16
17
|
executables:
|
17
18
|
- rgem2rpm
|
18
19
|
extensions: []
|
19
20
|
extra_rdoc_files: []
|
20
21
|
files:
|
22
|
+
- Rakefile
|
23
|
+
- bin/rgem2rpm
|
24
|
+
- conf/template.spec
|
25
|
+
- lib/rgem2rpm.rb
|
26
|
+
- lib/rgem2rpm/argumentparse.rb
|
21
27
|
- lib/rgem2rpm/converter.rb
|
22
28
|
- lib/rgem2rpm/gem.rb
|
23
|
-
- lib/rgem2rpm/argumentparse.rb
|
24
|
-
- lib/rgem2rpm/version.rb
|
25
29
|
- lib/rgem2rpm/rpm.rb
|
26
|
-
- lib/rgem2rpm.rb
|
27
|
-
- bin/rgem2rpm
|
28
|
-
- conf/template.spec
|
30
|
+
- lib/rgem2rpm/version.rb
|
29
31
|
- rgem2rpm.gemspec
|
30
|
-
- Rakefile
|
31
32
|
homepage: https://github.com/ptinovacao/rgem2rpm
|
32
|
-
licenses:
|
33
|
+
licenses:
|
34
|
+
- MIT
|
35
|
+
metadata: {}
|
33
36
|
post_install_message:
|
34
37
|
rdoc_options: []
|
35
38
|
require_paths:
|
36
39
|
- lib
|
37
40
|
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
-
none: false
|
39
41
|
requirements:
|
40
|
-
- -
|
42
|
+
- - ">="
|
41
43
|
- !ruby/object:Gem::Version
|
42
44
|
version: 1.8.6
|
43
45
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
-
none: false
|
45
46
|
requirements:
|
46
|
-
- -
|
47
|
+
- - ">="
|
47
48
|
- !ruby/object:Gem::Version
|
48
49
|
version: 1.4.2
|
49
50
|
requirements: []
|
50
51
|
rubyforge_project:
|
51
|
-
rubygems_version:
|
52
|
+
rubygems_version: 2.7.6
|
52
53
|
signing_key:
|
53
|
-
specification_version:
|
54
|
+
specification_version: 4
|
54
55
|
summary: Convert ruby gems into rpm
|
55
56
|
test_files: []
|