forked from bmaland/rubygems
/
Rakefile
154 lines (123 loc) · 5.11 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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
123
124
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
# -*- ruby -*-
$:.unshift 'lib'
require 'rubygems'
require 'rubygems/package_task'
require 'hoe'
Hoe.plugin :minitest
hoe = Hoe.spec 'rubygems-update' do
self.rubyforge_name = 'rubygems'
self.author = ['Jim Weirich', 'Chad Fowler', 'Eric Hodel']
self.email = %w[rubygems-developers@rubyforge.org]
self.readme_file = 'README'
self.need_zip = false
self.need_tar = false
spec_extras[:required_ruby_version] = Gem::Requirement.new '> 1.8.3'
spec_extras[:executables] = ['update_rubygems']
clean_globs.push('**/debug.log',
'*.out',
'.config',
'data__',
'html',
'logs',
'pkgs/sources/sources*.gem',
'scripts/*.hieraki',
'util/gem_prelude.rb')
extra_dev_deps << 'builder' << 'session' << 'hoe-seattlerb'
extra_dev_deps << ['minitest', '~> 1.4']
spec_extras['rdoc_options'] = proc do |rdoc_options|
rdoc_options << "--title=RubyGems #{self.version} Documentation"
end
end
desc "Run just the functional tests"
Rake::TestTask.new(:test_functional) do |t|
t.test_files = FileList['test/functional*.rb']
t.warning = true
end
# --------------------------------------------------------------------
# Creating a release
task :release => [:clobber, :sanity_check, :test_functional,
:test, :package, :tag]
pkg_dir_path = "pkg/rubygems-update-#{hoe.version}"
task pkg_dir_path do
mv pkg_dir_path, "pkg/rubygems-#{hoe.version}"
end
task :package => [pkg_dir_path, :sanity_check] do
Dir.chdir 'pkg' do
sh "tar -czf rubygems-#{hoe.version}.tgz rubygems-#{hoe.version}"
sh "zip -q -r rubygems-#{hoe.version}.zip rubygems-#{hoe.version}"
end
end
task :sanity_check do
abort "svn status dirty. commit or revert them" unless `svn st`.empty?
end
task :tag => [:sanity_check] do
reltag = "REL_#{PKG_VERSION.gsub(/\./, '_')}"
svn_url = "svn+ssh://rubyforge.org/var/svn/rubygems"
sh %{svn copy #{svn_url}/trunk #{svn_url}/tags/#{reltag}}
end
# Misc Tasks ---------------------------------------------------------
desc "build util/gem_prelude.rb from the template and defaults.rb"
file 'util/gem_prelude.rb' =>
%w[util/gem_prelude.rb.template lib/rubygems/defaults.rb Rakefile] do
gem_prelude = File.read 'util/gem_prelude.rb.template'
defaults = File.read 'lib/rubygems/defaults.rb'
raise 'template error' unless defaults.sub!(/^module Gem\n/, '')
raise 'template error' unless defaults.sub!(/^end\n/, '')
defaults[0, 0] = " # begin rubygems/defaults\n"
defaults << " # end rubygems/defaults\n"
defaults.gsub!(/^/, ' ')
raise 'template error' unless
gem_prelude.sub!(/^# WARN\n/,
"# THIS FILE WAS AUTOGENERATED, DO NOT EDIT\n")
raise 'template error' unless
gem_prelude.sub!(/^ # INCLUDE rubygems\/defaults\n/, defaults)
rm_f 'util/gem_prelude.rb'
open 'util/gem_prelude.rb', 'w' do |io|
io.write gem_prelude
io.chmod 0444
end
end
# These tasks expect to have the following directory structure:
#
# git/git.rubini.us/code # Rubinius git HEAD checkout
# svn/ruby/trunk # ruby subversion HEAD checkout
# svn/rubygems/trunk # RubyGems subversion HEAD checkout
#
# If you don't have this directory structure, set RUBY_PATH and/or
# RUBINIUS_PATH.
def rsync_with dir
rsync_options = "-avP --exclude '*svn*' --exclude '*swp' --exclude '*rbc'" +
"--exclude '*.rej' --exclude '*.orig' --exclude 'lib/rubygems/defaults/*'"
sh "rsync #{rsync_options} bin/gem #{dir}/bin/gem"
sh "rsync #{rsync_options} lib/ #{dir}/lib"
sh "rsync #{rsync_options} test/ #{dir}/test/rubygems"
sh "rsync #{rsync_options} util/gem_prelude.rb #{dir}/gem_prelude.rb"
end
def diff_with dir
diff_options = "-urpN --exclude '*svn*' --exclude '*swp' --exclude '*rbc'"
sh "diff #{diff_options} bin/gem #{dir}/bin/gem; true"
sh "diff #{diff_options} lib/ubygems.rb #{dir}/lib/ubygems.rb; true"
sh "diff #{diff_options} lib/rubygems.rb #{dir}/lib/rubygems.rb; true"
sh "diff #{diff_options} lib/rubygems #{dir}/lib/rubygems; true"
sh "diff #{diff_options} lib/rbconfig #{dir}/lib/rbconfig; true"
sh "diff #{diff_options} test #{dir}/test/rubygems; true"
sh "diff #{diff_options} util/gem_prelude.rb #{dir}/gem_prelude.rb; true"
end
rubinius_dir = ENV['RUBINIUS_PATH'] || '../../../git/git.rubini.us/code'
ruby_dir = ENV['RUBY_PATH'] || '../../ruby/trunk'
desc "Updates Ruby HEAD with the currently checked-out copy of RubyGems."
task :update_ruby => 'util/gem_prelude.rb' do
rsync_with ruby_dir
end
desc "Updates Rubinius HEAD with the currently checked-out copy of RubyGems."
task :update_rubinius => 'util/gem_prelude.rb' do
rsync_with rubinius_dir
end
desc "Diffs Ruby HEAD with the currently checked-out copy of RubyGems."
task :diff_ruby => 'util/gem_prelude.rb' do
diff_with ruby_dir
end
desc "Diffs Rubinius HEAD with the currently checked-out copy of RubyGems."
task :diff_rubinius => 'util/gem_prelude.rb' do
diff_with rubinius_dir
end