bookie_accounting 1.1.0 → 1.1.1
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/Rakefile +100 -113
- data/bin/bookie-create-tables +1 -1
- data/bin/bookie-data +1 -1
- data/bin/bookie-send +1 -1
- data/lib/bookie/version.rb +1 -1
- data/rpm/activesupport.erb +151 -0
- data/rpm/bundle.erb +71 -0
- data/rpm/default.erb +147 -0
- data/rpm/mysql2.erb +149 -0
- data/rpm/pacct.erb +147 -0
- data/rpm/rspec-core.erb +149 -0
- data/rpm/sqlite3.erb +147 -0
- metadata +157 -152
- data/rpm/bookie_accounting.spec.erb +0 -83
- data/rpm/spec_template.erb +0 -77
data/Rakefile
CHANGED
@@ -3,6 +3,8 @@ require 'bundler'
|
|
3
3
|
require "bundler/gem_tasks"
|
4
4
|
require "rspec/core/rake_task"
|
5
5
|
|
6
|
+
require 'erb'
|
7
|
+
|
6
8
|
task :default => :spec
|
7
9
|
|
8
10
|
desc "Run specs"
|
@@ -15,131 +17,116 @@ task :rdoc do
|
|
15
17
|
system("rdoc rdoc lib")
|
16
18
|
end
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
'bookie_accounting' => {
|
25
|
-
:is_app => true,
|
26
|
-
:has_binaries => true,
|
27
|
-
:gem_file => "bookie_accounting-#{Bookie::VERSION}.gem",
|
28
|
-
:license => 'MIT',
|
29
|
-
:skip_deps => Set.new(['sqlite3']),
|
30
|
-
},
|
31
|
-
'spreadsheet' => {
|
32
|
-
:has_binaries => true,
|
33
|
-
:license => 'GPL3',
|
34
|
-
},
|
35
|
-
'ruby-ole' => {
|
36
|
-
:license => 'MIT',
|
37
|
-
},
|
38
|
-
'pacct' => {
|
39
|
-
:license => 'MIT',
|
40
|
-
},
|
41
|
-
})
|
20
|
+
#Returns whether the given file is older than its dependencies (or doesn't even exist)
|
21
|
+
def older(file, *dep_files)
|
22
|
+
dep_files.each do |dep_file|
|
23
|
+
return true if !File.exists?(file) || File.mtime(file) < File.mtime(dep_file)
|
24
|
+
end
|
25
|
+
false
|
42
26
|
end
|
43
27
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
this_dir = Dir.pwd
|
50
|
-
pkg_dir = File.join(this_dir, 'pkg')
|
28
|
+
desc "Build RPM and dependencies (designed for use on CentOS)"
|
29
|
+
task :rpm_deps do
|
30
|
+
gem_filenames = {
|
31
|
+
"pacct" => "pacct-0.8.4-universal-linux.gem"
|
32
|
+
}
|
51
33
|
|
52
|
-
|
34
|
+
lockfile = Bundler::LockfileParser.new(Bundler.read_file("Gemfile.lock"))
|
53
35
|
|
54
|
-
|
55
|
-
spec_dir = File.join(
|
56
|
-
src_dir = File.join(
|
57
|
-
rpm_dir = File.join(
|
36
|
+
home_dir = ENV['HOME']
|
37
|
+
spec_dir = File.join(home_dir, 'rpmbuild/SPECS')
|
38
|
+
src_dir = File.join(home_dir, 'rpmbuild/SOURCES')
|
39
|
+
rpm_dir = File.join(home_dir, 'rpmbuild/RPMS')
|
58
40
|
|
59
|
-
|
60
|
-
|
61
|
-
end
|
41
|
+
FileUtils.mkdir_p(spec_dir)
|
42
|
+
FileUtils.mkdir_p(src_dir)
|
62
43
|
|
63
|
-
#To do: packaging for Ruby versions other than 1.8
|
64
|
-
template = ERB.new(File.read('rpm/spec_template.erb'))
|
65
|
-
lockfile = Bundler::LockfileParser.new(Bundler.read_file("Gemfile.lock"))
|
66
44
|
lockfile.specs.each do |spec|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
end
|
91
|
-
fail "Unable to find gem file for #{gem_name}" unless gem_file
|
92
|
-
gem = File.basename(gem_file, '.gem')
|
93
|
-
s = YAML.load(`gem spec #{gem_file}`)
|
94
|
-
|
95
|
-
#Build the RPM spec.
|
96
|
-
Dir.chdir(spec_dir)
|
97
|
-
if s.licenses.length > 0
|
98
|
-
license = s.licenses.join(' AND ')
|
99
|
-
else
|
100
|
-
license = extra_data[:license]
|
101
|
-
end
|
102
|
-
url = s.homepage
|
103
|
-
summary = s.summary
|
104
|
-
description = s.description
|
105
|
-
requires = []
|
106
|
-
build_requires = []
|
107
|
-
s.dependencies.each do |dep|
|
108
|
-
case dep.type
|
109
|
-
when :development
|
110
|
-
build_requires.push(dep)
|
111
|
-
else
|
112
|
-
requires.push(dep)
|
113
|
-
end
|
114
|
-
end
|
115
|
-
requires.map!{ |r| "rubygem-#{r.name}" }
|
116
|
-
|
117
|
-
is_app = extra_data[:is_app]
|
118
|
-
has_binaries = extra_data[:has_binaries]
|
119
|
-
|
120
|
-
if is_app
|
121
|
-
spec_filename = "#{gem_name}.spec"
|
122
|
-
else
|
123
|
-
spec_filename = "rubygem-#{gem_name}.spec"
|
45
|
+
puts "#{spec.name} (#{spec.version})"
|
46
|
+
|
47
|
+
spec_filename = File.join(spec_dir, "rubygem-#{spec.name}.spec")
|
48
|
+
|
49
|
+
gem_filename = gem_filenames[spec.name] || "#{spec.name}-#{spec.version}.gem"
|
50
|
+
|
51
|
+
system("gem fetch #{spec.name} -v #{spec.version}") unless File.exists?(gem_filename)
|
52
|
+
|
53
|
+
template = "rpm/#{spec.name}.erb"
|
54
|
+
template = "rpm/default.erb" unless File.exists?(template)
|
55
|
+
|
56
|
+
system("gem2rpm #{gem_filename} -t #{template} > #{spec_filename}") if older(spec_filename, gem_filename, template)
|
57
|
+
|
58
|
+
src = File.join(src_dir, gem_filename)
|
59
|
+
FileUtils.cp(gem_filename, src_dir) if older(src, gem_filename)
|
60
|
+
|
61
|
+
rpm_glob = File.join(rpm_dir, "*/rubygem-#{spec.name}-#{spec.version}-*.rpm")
|
62
|
+
rpm_glob_results = Dir.glob(rpm_glob)
|
63
|
+
if rpm_glob_results.length > 1
|
64
|
+
puts "Multiple RPMs exist for #{spec.name} (#{spec.version}):"
|
65
|
+
rpm_glob_results.each{ |r| puts " #{r}" }
|
66
|
+
puts "Unable to resolve dependency due to ambiguous target"
|
67
|
+
exit 1
|
124
68
|
end
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
else
|
132
|
-
file.write(template.result(binding))
|
69
|
+
|
70
|
+
if rpm_glob_results.length == 0 || older(rpm_glob_results[0], spec_filename)
|
71
|
+
msg = `rpmbuild -ba #{spec_filename}`
|
72
|
+
unless $?.success?
|
73
|
+
puts msg
|
74
|
+
exit 1
|
133
75
|
end
|
134
76
|
end
|
77
|
+
end
|
78
|
+
end
|
135
79
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
80
|
+
desc "Build RPM with all dependencies bundled"
|
81
|
+
task "rpm_bundle" do
|
82
|
+
gem_filenames = {
|
83
|
+
"pacct" => "pacct-0.8.4-universal-linux.gem"
|
84
|
+
}
|
85
|
+
|
86
|
+
lockfile = Bundler::LockfileParser.new(Bundler.read_file("Gemfile.lock"))
|
87
|
+
|
88
|
+
home_dir = ENV['HOME']
|
89
|
+
spec_dir = File.join(home_dir, 'rpmbuild/SPECS')
|
90
|
+
src_dir = File.join(home_dir, 'rpmbuild/SOURCES')
|
91
|
+
rpm_dir = File.join(home_dir, 'rpmbuild/RPMS')
|
92
|
+
|
93
|
+
FileUtils.mkdir_p(spec_dir)
|
94
|
+
FileUtils.mkdir_p(src_dir)
|
95
|
+
|
96
|
+
spec_filename = File.join(spec_dir, "bookie_accounting.spec")
|
97
|
+
|
98
|
+
template = ERB.new(File.read("rpm/bundle.erb"))
|
99
|
+
|
100
|
+
specs = lockfile.specs
|
101
|
+
|
102
|
+
#To do: ensure that the rubygems version matches the local version?
|
103
|
+
bookie_spec = Gem::Specification.load("bookie_accounting.gemspec")
|
104
|
+
|
105
|
+
sources = []
|
106
|
+
|
107
|
+
pwd = Dir.pwd
|
108
|
+
Dir.chdir(src_dir)
|
109
|
+
specs.each do |spec|
|
110
|
+
puts "#{spec.name} (#{spec.version})"
|
111
|
+
|
112
|
+
#bookie_spec = spec if spec.name == "bookie_accounting"
|
113
|
+
|
114
|
+
gem_filename = gem_filenames[spec.name] || "#{spec.name}-#{spec.version}.gem"
|
115
|
+
|
116
|
+
system("gem fetch #{spec.name} -v #{spec.version}") unless File.exists?(gem_filename)
|
117
|
+
|
118
|
+
sources << gem_filename
|
141
119
|
end
|
120
|
+
Dir.chdir(pwd)
|
142
121
|
|
143
|
-
|
122
|
+
File.open(spec_filename, "w") do |f|
|
123
|
+
f.write(template.result(binding))
|
124
|
+
end
|
125
|
+
|
126
|
+
msg = `rpmbuild -ba #{spec_filename}`
|
127
|
+
unless $?.success?
|
128
|
+
puts msg
|
129
|
+
exit 1
|
130
|
+
end
|
144
131
|
end
|
145
132
|
|
data/bin/bookie-create-tables
CHANGED
data/bin/bookie-data
CHANGED
@@ -11,7 +11,7 @@ jobs = Bookie::Database::Job
|
|
11
11
|
summaries = Bookie::Database::JobSummary
|
12
12
|
systems = Bookie::Database::System
|
13
13
|
|
14
|
-
config_filename = '/etc/bookie/config.json'
|
14
|
+
config_filename = ENV['BOOKIE_CONFIG'] || '/etc/bookie/config.json'
|
15
15
|
include_details = false
|
16
16
|
|
17
17
|
output_type = :stdout
|
data/bin/bookie-send
CHANGED
data/lib/bookie/version.rb
CHANGED
@@ -0,0 +1,151 @@
|
|
1
|
+
# Generated from <%= package.spec.file_name %> by gem2rpm -*- rpm-spec -*-
|
2
|
+
<% doc_subpackage = false %>
|
3
|
+
%global gemname <%= spec.name %>
|
4
|
+
|
5
|
+
<% if nongem -%>
|
6
|
+
%global ruby_sitelib %(ruby -rrbconfig -e "puts Config::CONFIG['sitelibdir']")
|
7
|
+
<% end -%>
|
8
|
+
%global gemdir %(ruby -rubygems -e 'puts Gem::dir' 2>/dev/null)
|
9
|
+
%global geminstdir %{gemdir}/gems/%{gemname}-%{version}
|
10
|
+
<%# TODO: Try to check against spec.required_ruby_version -%>
|
11
|
+
%global rubyabi 1.8
|
12
|
+
|
13
|
+
Summary: <%= spec.summary.gsub(/\.$/, "") %>
|
14
|
+
Name: rubygem-%{gemname}
|
15
|
+
Version: <%= spec.version %>
|
16
|
+
Release: 1%{?dist}
|
17
|
+
Group: Development/Languages
|
18
|
+
License: <%= if spec.licenses.length > 0 then spec.licenses.join(" and ") else "Unknown" end %>
|
19
|
+
<% if spec.homepage -%>
|
20
|
+
URL: <%= spec.homepage %>
|
21
|
+
<% end -%>
|
22
|
+
Source0: <%= download_path %>%{gemname}-%{version}.gem
|
23
|
+
Requires: ruby(abi) = %{rubyabi}
|
24
|
+
<% for req in spec.required_rubygems_version -%>
|
25
|
+
Requires: ruby(rubygems) <%= req %>
|
26
|
+
<% end -%>
|
27
|
+
<% for d in spec.runtime_dependencies -%>
|
28
|
+
<% for req in d.requirement -%>
|
29
|
+
Requires: rubygem(<%= d.name %>) <%= req %>
|
30
|
+
<% end -%>
|
31
|
+
<% end -%>
|
32
|
+
BuildRequires: ruby(abi) = %{rubyabi}
|
33
|
+
<% for req in spec.required_rubygems_version -%>
|
34
|
+
BuildRequires: ruby(rubygems) <%= req %>
|
35
|
+
<% end -%>
|
36
|
+
<%# TODO: Unfortunately this does not match with ruby(abi) yet -%>
|
37
|
+
<% for req in spec.required_ruby_version -%>
|
38
|
+
BuildRequires: ruby<%= "-devel" unless spec.extensions.empty? %> <%= req %>
|
39
|
+
<% end -%>
|
40
|
+
<% if spec.extensions.empty? -%>
|
41
|
+
BuildArch: noarch
|
42
|
+
<% else -%>
|
43
|
+
BuildRequires: ruby-devel
|
44
|
+
<% end -%>
|
45
|
+
Provides: rubygem(%{gemname}) = %{version}
|
46
|
+
|
47
|
+
%description
|
48
|
+
<%= spec.description %>
|
49
|
+
|
50
|
+
<% if doc_subpackage -%>
|
51
|
+
%package doc
|
52
|
+
Summary: Documentation for %{name}
|
53
|
+
Group: Documentation
|
54
|
+
Requires: %{name} = %{version}-%{release}
|
55
|
+
BuildArch: noarch
|
56
|
+
|
57
|
+
%description doc
|
58
|
+
Documentation for %{name}
|
59
|
+
<% end # if doc_subpackage -%>
|
60
|
+
|
61
|
+
<% if nongem -%>
|
62
|
+
%package -n ruby-%{gemname}
|
63
|
+
Summary: <%= spec.summary.gsub(/\.$/, "") %>
|
64
|
+
Group: Development/Languages
|
65
|
+
Requires: rubygem(%{gemname}) = %{version}
|
66
|
+
<% spec.files.select{ |f| spec.require_paths.include?(File::dirname(f)) }.reject { |f| f =~ /\.rb$/ }.collect { |f| File::basename(f) }.each do |p| -%>
|
67
|
+
Provides: ruby(<%= p %>) = %{version}
|
68
|
+
<% end -%>
|
69
|
+
%description -n ruby-%{gemname}
|
70
|
+
<%= spec.description -%>
|
71
|
+
<% end # if nongem -%>
|
72
|
+
|
73
|
+
%prep
|
74
|
+
%setup -q -c -T
|
75
|
+
mkdir -p .%{gemdir}
|
76
|
+
<% unless spec.extensions.empty? -%>
|
77
|
+
export CONFIGURE_ARGS="--with-cflags='%{optflags}'"
|
78
|
+
<% end -%>
|
79
|
+
#To do: fix doc issue so docs can be installed on CentOS?
|
80
|
+
gem install --local --install-dir .%{gemdir} \
|
81
|
+
--no-rdoc \
|
82
|
+
--no-ri \
|
83
|
+
<% unless spec.executables.nil? or spec.executables.empty? -%>
|
84
|
+
--bindir .%{_bindir} \
|
85
|
+
<% end -%>
|
86
|
+
<% unless spec.extensions.empty? -%>
|
87
|
+
-V \
|
88
|
+
<% end -%>
|
89
|
+
--force %{SOURCE0}
|
90
|
+
|
91
|
+
%build
|
92
|
+
|
93
|
+
%install
|
94
|
+
mkdir -p %{buildroot}%{gemdir}
|
95
|
+
cp -pa .%{gemdir}/* \
|
96
|
+
%{buildroot}%{gemdir}/
|
97
|
+
<% unless spec.executables.nil? or spec.executables.empty? -%>
|
98
|
+
|
99
|
+
mkdir -p %{buildroot}%{_bindir}
|
100
|
+
cp -pa .%{_bindir}/* \
|
101
|
+
%{buildroot}%{_bindir}/
|
102
|
+
<% end -%>
|
103
|
+
|
104
|
+
<% unless spec.executables.empty? -%>
|
105
|
+
find %{buildroot}%{geminstdir}/bin -type f | xargs chmod a+x
|
106
|
+
<% end -%>
|
107
|
+
<% if nongem -%>
|
108
|
+
mkdir -p %{buildroot}%{ruby_sitelib}
|
109
|
+
<% spec.files.select{ |f| spec.require_paths.include?(File::dirname(f)) }.each do |p| -%>
|
110
|
+
ln -s %{gemdir}/gems/%{gemname}-%{version}/<%= p %> %{buildroot}%{ruby_sitelib}
|
111
|
+
<% end -%>
|
112
|
+
<% end # if nongem -%>
|
113
|
+
|
114
|
+
%files
|
115
|
+
%{geminstdir}
|
116
|
+
<% unless spec.executables.nil? or spec.executables.empty? -%>
|
117
|
+
<% for f in spec.executables -%>
|
118
|
+
%{_bindir}/<%= f %>
|
119
|
+
<% end -%>
|
120
|
+
%{geminstdir}/bin
|
121
|
+
<% end -%>
|
122
|
+
%{geminstdir}/lib
|
123
|
+
<% unless spec.extensions.empty? -%>
|
124
|
+
<%# TODO: Is it possible to delete the folder specified by the spec.extensions? -%>
|
125
|
+
%exclude %{geminstdir}/ext
|
126
|
+
<% end -%>
|
127
|
+
<% unless doc_subpackage -%>
|
128
|
+
#%doc %{gemdir}/doc/%{gemname}-%{version}
|
129
|
+
<% for f in spec.extra_rdoc_files -%>
|
130
|
+
#%doc %{geminstdir}/<%= f %>
|
131
|
+
<% end -%>
|
132
|
+
<% end -%>
|
133
|
+
%exclude %{gemdir}/cache/%{gemname}-%{version}.gem
|
134
|
+
%{gemdir}/specifications/%{gemname}-%{version}.gemspec
|
135
|
+
|
136
|
+
<% if doc_subpackage -%>
|
137
|
+
%files doc
|
138
|
+
%doc %{gemdir}/doc/%{gemname}-%{version}
|
139
|
+
<% for f in spec.extra_rdoc_files -%>
|
140
|
+
%doc %{geminstdir}/<%= f %>
|
141
|
+
<% end -%>
|
142
|
+
<% end # if doc_subpackage -%>
|
143
|
+
|
144
|
+
<% if nongem -%>
|
145
|
+
%files -n ruby-%{gemname}
|
146
|
+
%{ruby_sitelib}/*
|
147
|
+
<% end # if nongem -%>
|
148
|
+
|
149
|
+
%changelog
|
150
|
+
* <%= Time.now.strftime("%a %b %d %Y") %> <%= packager %> - <%= spec.version %>-1
|
151
|
+
- Initial package
|
data/rpm/bundle.erb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
#Borrows a few tricks from the gem2rpm default template
|
2
|
+
|
3
|
+
%define _prefix /opt/bookie
|
4
|
+
%define gemdir %{_prefix}
|
5
|
+
|
6
|
+
Name: bookie_accounting
|
7
|
+
Version: <%= bookie_spec.version %>
|
8
|
+
Release: 1%{?dist}
|
9
|
+
Summary: <%= bookie_spec.summary[0 ... -1] %>
|
10
|
+
|
11
|
+
#To do: change group?
|
12
|
+
Group: System Management
|
13
|
+
License: MIT
|
14
|
+
URL: http://github.com/blm768/bookie
|
15
|
+
<% sources.each_with_index do |src, i| %>
|
16
|
+
Source<%= i %>: <%= src %>
|
17
|
+
<% end %>
|
18
|
+
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
19
|
+
|
20
|
+
BuildRequires: ruby-devel, rubygems, mysql-devel, sqlite-devel
|
21
|
+
Requires: rubygems, mysql-libs, sqlite
|
22
|
+
|
23
|
+
%description
|
24
|
+
<% bookie_spec.description %>
|
25
|
+
|
26
|
+
|
27
|
+
%prep
|
28
|
+
export CONFIGURE_ARGS="--with-cflags='%{optflags}'"
|
29
|
+
|
30
|
+
<% sources.each_with_index do |src, i| %>
|
31
|
+
gem install --local --install-dir .%{gemdir} \
|
32
|
+
--bindir .%{_bindir} \
|
33
|
+
--no-rdoc --no-ri \
|
34
|
+
-V \
|
35
|
+
--force %{SOURCE<%= i %>}
|
36
|
+
<% end %>
|
37
|
+
|
38
|
+
|
39
|
+
%build
|
40
|
+
|
41
|
+
|
42
|
+
%install
|
43
|
+
rm -rf %{buildroot}
|
44
|
+
mkdir -p %{buildroot}%{gemdir}
|
45
|
+
cp -r .%{gemdir}/* %{buildroot}%{gemdir}
|
46
|
+
echo "{}" > %{buildroot}%{_prefix}/config.json
|
47
|
+
chmod 600 %{buildroot}%{_prefix}/config.json
|
48
|
+
cat > %{buildroot}%{_bindir}/bookie-env <<-EOF
|
49
|
+
#!/bin/sh
|
50
|
+
export GEM_HOME=%{gemdir}
|
51
|
+
#To do: change path based on Ruby version.
|
52
|
+
export GEM_PATH=\$GEM_HOME:/usr/lib/ruby/gems/1.8
|
53
|
+
export PATH=%{_bindir}:\$PATH
|
54
|
+
export BOOKIE_CONFIG=%{_prefix}/config.json
|
55
|
+
|
56
|
+
eval "\$@"
|
57
|
+
EOF
|
58
|
+
chmod 700 %{buildroot}%{_bindir}/bookie-env
|
59
|
+
|
60
|
+
|
61
|
+
%clean
|
62
|
+
rm -rf %{buildroot}
|
63
|
+
|
64
|
+
|
65
|
+
%files
|
66
|
+
%defattr(-,root,root,-)
|
67
|
+
%{gemdir}
|
68
|
+
|
69
|
+
|
70
|
+
%changelog
|
71
|
+
|
data/rpm/default.erb
ADDED
@@ -0,0 +1,147 @@
|
|
1
|
+
# Generated from <%= package.spec.file_name %> by gem2rpm -*- rpm-spec -*-
|
2
|
+
%global gemname <%= spec.name %>
|
3
|
+
|
4
|
+
<% if nongem -%>
|
5
|
+
%global ruby_sitelib %(ruby -rrbconfig -e "puts Config::CONFIG['sitelibdir']")
|
6
|
+
<% end -%>
|
7
|
+
%global gemdir %(ruby -rubygems -e 'puts Gem::dir' 2>/dev/null)
|
8
|
+
%global geminstdir %{gemdir}/gems/%{gemname}-%{version}
|
9
|
+
<%# TODO: Try to check against spec.required_ruby_version -%>
|
10
|
+
%global rubyabi 1.8
|
11
|
+
|
12
|
+
Summary: <%= spec.summary.gsub(/\.$/, "") %>
|
13
|
+
Name: rubygem-%{gemname}
|
14
|
+
Version: <%= spec.version %>
|
15
|
+
Release: 1%{?dist}
|
16
|
+
Group: Development/Languages
|
17
|
+
License: <%= if spec.licenses.length > 0 then spec.licenses.join(" and ") else "Unknown" end %>
|
18
|
+
<% if spec.homepage -%>
|
19
|
+
URL: <%= spec.homepage %>
|
20
|
+
<% end -%>
|
21
|
+
Source0: <%= download_path %>%{gemname}-%{version}.gem
|
22
|
+
Requires: ruby(abi) = %{rubyabi}
|
23
|
+
<% for req in spec.required_rubygems_version -%>
|
24
|
+
Requires: ruby(rubygems) <%= req %>
|
25
|
+
<% end -%>
|
26
|
+
<% for d in spec.runtime_dependencies -%>
|
27
|
+
<% for req in d.requirement -%>
|
28
|
+
Requires: rubygem(<%= d.name %>) <%= req %>
|
29
|
+
<% end -%>
|
30
|
+
<% end -%>
|
31
|
+
BuildRequires: ruby(abi) = %{rubyabi}
|
32
|
+
<% for req in spec.required_rubygems_version -%>
|
33
|
+
BuildRequires: ruby(rubygems) <%= req %>
|
34
|
+
<% end -%>
|
35
|
+
<%# TODO: Unfortunately this does not match with ruby(abi) yet -%>
|
36
|
+
<% for req in spec.required_ruby_version -%>
|
37
|
+
BuildRequires: ruby<%= "-devel" unless spec.extensions.empty? %> <%= req %>
|
38
|
+
<% end -%>
|
39
|
+
<% if spec.extensions.empty? -%>
|
40
|
+
BuildArch: noarch
|
41
|
+
<% else -%>
|
42
|
+
BuildRequires: ruby-devel
|
43
|
+
<% end -%>
|
44
|
+
Provides: rubygem(%{gemname}) = %{version}
|
45
|
+
|
46
|
+
%description
|
47
|
+
<%= spec.description %>
|
48
|
+
|
49
|
+
<% if doc_subpackage -%>
|
50
|
+
%package doc
|
51
|
+
Summary: Documentation for %{name}
|
52
|
+
Group: Documentation
|
53
|
+
Requires: %{name} = %{version}-%{release}
|
54
|
+
BuildArch: noarch
|
55
|
+
|
56
|
+
%description doc
|
57
|
+
Documentation for %{name}
|
58
|
+
<% end # if doc_subpackage -%>
|
59
|
+
|
60
|
+
<% if nongem -%>
|
61
|
+
%package -n ruby-%{gemname}
|
62
|
+
Summary: <%= spec.summary.gsub(/\.$/, "") %>
|
63
|
+
Group: Development/Languages
|
64
|
+
Requires: rubygem(%{gemname}) = %{version}
|
65
|
+
<% spec.files.select{ |f| spec.require_paths.include?(File::dirname(f)) }.reject { |f| f =~ /\.rb$/ }.collect { |f| File::basename(f) }.each do |p| -%>
|
66
|
+
Provides: ruby(<%= p %>) = %{version}
|
67
|
+
<% end -%>
|
68
|
+
%description -n ruby-%{gemname}
|
69
|
+
<%= spec.description -%>
|
70
|
+
<% end # if nongem -%>
|
71
|
+
|
72
|
+
%prep
|
73
|
+
%setup -q -c -T
|
74
|
+
mkdir -p .%{gemdir}
|
75
|
+
<% unless spec.extensions.empty? -%>
|
76
|
+
export CONFIGURE_ARGS="--with-cflags='%{optflags}'"
|
77
|
+
<% end -%>
|
78
|
+
gem install --local --install-dir .%{gemdir} \
|
79
|
+
<% unless spec.executables.nil? or spec.executables.empty? -%>
|
80
|
+
--bindir .%{_bindir} \
|
81
|
+
<% end -%>
|
82
|
+
<% unless spec.extensions.empty? -%>
|
83
|
+
-V \
|
84
|
+
<% end -%>
|
85
|
+
--force %{SOURCE0}
|
86
|
+
|
87
|
+
%build
|
88
|
+
|
89
|
+
%install
|
90
|
+
mkdir -p %{buildroot}%{gemdir}
|
91
|
+
cp -pa .%{gemdir}/* \
|
92
|
+
%{buildroot}%{gemdir}/
|
93
|
+
<% unless spec.executables.nil? or spec.executables.empty? -%>
|
94
|
+
|
95
|
+
mkdir -p %{buildroot}%{_bindir}
|
96
|
+
cp -pa .%{_bindir}/* \
|
97
|
+
%{buildroot}%{_bindir}/
|
98
|
+
<% end -%>
|
99
|
+
|
100
|
+
<% unless spec.executables.empty? -%>
|
101
|
+
find %{buildroot}%{geminstdir}/bin -type f | xargs chmod a+x
|
102
|
+
<% end -%>
|
103
|
+
<% if nongem -%>
|
104
|
+
mkdir -p %{buildroot}%{ruby_sitelib}
|
105
|
+
<% spec.files.select{ |f| spec.require_paths.include?(File::dirname(f)) }.each do |p| -%>
|
106
|
+
ln -s %{gemdir}/gems/%{gemname}-%{version}/<%= p %> %{buildroot}%{ruby_sitelib}
|
107
|
+
<% end -%>
|
108
|
+
<% end # if nongem -%>
|
109
|
+
|
110
|
+
%files
|
111
|
+
%{geminstdir}
|
112
|
+
<% unless spec.executables.nil? or spec.executables.empty? -%>
|
113
|
+
<% for f in spec.executables -%>
|
114
|
+
%{_bindir}/<%= f %>
|
115
|
+
<% end -%>
|
116
|
+
%{geminstdir}/bin
|
117
|
+
<% end -%>
|
118
|
+
%{geminstdir}/lib
|
119
|
+
<% unless spec.extensions.empty? -%>
|
120
|
+
<%# TODO: Is it possible to delete the folder specified by the spec.extensions? -%>
|
121
|
+
%exclude %{geminstdir}/ext
|
122
|
+
<% end -%>
|
123
|
+
<% unless doc_subpackage -%>
|
124
|
+
%doc %{gemdir}/doc/%{gemname}-%{version}
|
125
|
+
<% for f in spec.extra_rdoc_files -%>
|
126
|
+
%doc %{geminstdir}/<%= f %>
|
127
|
+
<% end -%>
|
128
|
+
<% end -%>
|
129
|
+
%exclude %{gemdir}/cache/%{gemname}-%{version}.gem
|
130
|
+
%{gemdir}/specifications/%{gemname}-%{version}.gemspec
|
131
|
+
|
132
|
+
<% if doc_subpackage -%>
|
133
|
+
%files doc
|
134
|
+
%doc %{gemdir}/doc/%{gemname}-%{version}
|
135
|
+
<% for f in spec.extra_rdoc_files -%>
|
136
|
+
%doc %{geminstdir}/<%= f %>
|
137
|
+
<% end -%>
|
138
|
+
<% end # if doc_subpackage -%>
|
139
|
+
|
140
|
+
<% if nongem -%>
|
141
|
+
%files -n ruby-%{gemname}
|
142
|
+
%{ruby_sitelib}/*
|
143
|
+
<% end # if nongem -%>
|
144
|
+
|
145
|
+
%changelog
|
146
|
+
* <%= Time.now.strftime("%a %b %d %Y") %> <%= packager %> - <%= spec.version %>-1
|
147
|
+
- Initial package
|