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 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
- desc "Build RPM and dependencies (intended for University of Idaho IBEST internal use)"
19
- task :rpm_deps => [:build] do
20
- require 'erb'
21
- require 'yaml'
22
-
23
- build_rpms({
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
- def find_gem_file(gem_name)
45
- Dir.glob("#{gem_name}-*.gem")[0]
46
- end
47
-
48
- def build_rpms(modules_to_build)
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
- home_dir = Etc.getpwuid.dir
34
+ lockfile = Bundler::LockfileParser.new(Bundler.read_file("Gemfile.lock"))
53
35
 
54
- rpmbuild_dir = File.join(home_dir, 'rpmbuild')
55
- spec_dir = File.join(rpmbuild_dir, 'SPECS')
56
- src_dir = File.join(rpmbuild_dir, 'SOURCES')
57
- rpm_dir = File.join(rpmbuild_dir, 'RPMS')
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
- [spec_dir, src_dir].each do |dir|
60
- FileUtils.mkdir_p(dir)
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
- extra_data = modules_to_build[spec.name]
68
- next unless extra_data
69
-
70
- gem_name = spec.name
71
- version = spec.version
72
-
73
- puts gem_name
74
-
75
- #Has the RPM already been built?
76
- next if Dir.glob(File.join(rpm_dir, "*/(rubygem-)?#{gem_name}-#{version}-*.rpm")).length > 0
77
-
78
- ruby_version = RUBY_VERSION.split('.')[0 .. 1].join('.')
79
-
80
- #Get the gem.
81
- Dir.chdir(src_dir)
82
- gem_file = extra_data[:gem_file]
83
- if gem_file
84
- FileUtils.cp(File.join(pkg_dir, gem_file), '.')
85
- else
86
- gem_file = find_gem_file(gem_name)
87
- #To do: handle old versions of gems existing in src_dir
88
- system("gem fetch #{gem_name} -v #{version}") unless gem_file && File.exists?(gem_file)
89
- gem_file ||= find_gem_file(gem_name)
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
- spec_filename = File.join(spec_dir, spec_filename)
126
-
127
- File.open(spec_filename, "w") do |file|
128
- template_filename = File.join(this_dir, "rpm/#{gem_name}.spec.erb")
129
- if File.exists?(template_filename)
130
- file.write(ERB.new(File.read(template_filename)).result(binding))
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
- msg = `rpmbuild -ba #{spec_filename}`
137
- unless $?.success?
138
- puts msg
139
- exit 1
140
- end
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
- Dir.chdir(this_dir)
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
 
@@ -7,7 +7,7 @@ require 'optparse'
7
7
 
8
8
  require 'bookie/database'
9
9
 
10
- config_file = '/etc/bookie/config.json'
10
+ config_file = ENV['BOOKIE_CONFIG] || '/etc/bookie/config.json'
11
11
  drop = false
12
12
 
13
13
  opts = OptionParser.new do |opts|
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
@@ -15,7 +15,7 @@ end
15
15
 
16
16
  require 'bookie/sender'
17
17
 
18
- config_file = '/etc/bookie/config.json'
18
+ config_file = ENV['BOOKIE_CONFIG'] || '/etc/bookie/config.json'
19
19
  will_create = false
20
20
  will_decommission = false
21
21
  will_undo = false
@@ -1,4 +1,4 @@
1
1
  module Bookie
2
2
  #The library version
3
- VERSION = "1.1.0"
3
+ VERSION = "1.1.1"
4
4
  end
@@ -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