bookie_accounting 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|