Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

192 lines (150 sloc) 6.001 kb
# -*- ruby -*-
$:.unshift 'lib'
require 'rubygems'
require 'rubygems/package_task'
require 'hoe'
Hoe::RUBY_FLAGS << " --disable-gems" if RUBY_VERSION > "1.9"
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.rdoc'
self.need_zip = false
self.need_tar = false
spec_extras[:required_rubygems_version] = Gem::Requirement.default
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',
'graph.dot',
'pkgs/sources/sources*.gem',
'scripts/*.hieraki')
extra_dev_deps << ['builder', '~> 2.1']
extra_dev_deps << ['hoe-seattlerb', '~> 1.2']
extra_dev_deps << ['minitest', '~> 1.4']
extra_dev_deps << ['session', '~> 2.4']
self.extra_rdoc_files = Dir["*.rdoc"]
spec_extras['rdoc_options'] = proc do |rdoc_options|
rdoc_options << "--title=RubyGems #{self.version} Documentation"
end
spec_extras['require_paths'] = %w[hide_lib_for_update]
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
# It's good to have RG's development dependencies expressed in the Hoe
# block above, but including them in the rubygems-update gemspec makes
# it very difficult for people on old RG versions to install it,
# especially since they're working against stub legacy indexes
# now. Remove 'em before building the gem.
task :debug_gem => :scrub_dev_deps
Rake::Task[:gem].prerequisites.unshift :scrub_dev_deps
task :scrub_dev_deps do
hoe.spec.dependencies.reject! { |d| :development == d.type }
end
task :prerelease => [:clobber, :sanity_check, :test, :test_functional]
task :postrelease => [:tag, :publish_docs]
pkg_dir_path = "pkg/rubygems-update-#{hoe.version}"
task :package do
mv pkg_dir_path, "pkg/rubygems-#{hoe.version}"
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
raise "need a git version of rake tag written"
end
# Misc Tasks ---------------------------------------------------------
# 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 do
rsync_with ruby_dir
end
desc "Updates Rubinius HEAD with the currently checked-out copy of RubyGems."
task :update_rubinius do
rsync_with rubinius_dir
end
desc "Diffs Ruby HEAD with the currently checked-out copy of RubyGems."
task :diff_ruby do
diff_with ruby_dir
end
desc "Diffs Rubinius HEAD with the currently checked-out copy of RubyGems."
task :diff_rubinius do
diff_with rubinius_dir
end
desc "Get coverage for a specific test, no system RubyGems."
task "rcov:for", [:test] do |task, args|
mgem = Gem.source_index.find_name("minitest").first rescue nil
rgem = Gem.source_index.find_name(/rcov/).first
libs = rgem.require_paths.map { |p| File.join rgem.full_gem_path, p }
rcov = File.join rgem.full_gem_path, rgem.bindir, rgem.default_executable
if mgem
libs << mgem.require_paths.map { |p| File.join mgem.full_gem_path, p }
end
libs << "lib:test"
flags = []
flags << "-I" << libs.flatten.join(":")
rflags = []
rflags << "-i" << "lib/rubygems"
ruby "#{flags.join ' '} #{rcov} #{rflags.join ' '} #{args[:test]}"
end
task :graph do
$: << File.expand_path("~/Work/p4/zss/src/graph/dev/lib")
require 'graph'
deps = Graph.new
deps.rotate
current = nil
`rake -P -s`.each_line do |line|
case line
when /^rake (.+)/
current = $1
deps[current] if current # force the node to exist, in case of a leaf
when /^\s+(.+)/
deps[current] << $1 if current
else
warn "unparsed: #{line.chomp}"
end
end
deps.boxes
deps.save "graph", nil
end
Jump to Line
Something went wrong with that request. Please try again.