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 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