~ubuntu-branches/ubuntu/quantal/ruby1.9.1/quantal

« back to all changes in this revision

Viewing changes to lib/rubygems/indexer/master_index_builder.rb

  • Committer: Bazaar Package Importer
  • Author(s): Lucas Nussbaum
  • Date: 2010-07-31 17:08:39 UTC
  • mfrom: (1.1.4 upstream) (8.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20100731170839-j034dmpdqt1cc4p6
Tags: 1.9.2~svn28788-1
* New release based on upstream snapshot from the 1.9.2 branch,
  after 1.9.2 RC2. That branch is (supposed to be) binary-compatible
  with the 1.9.1 branch.
  + Builds fine on i386. Closes: #580852.
* Upgrade to Standards-Version: 3.9.1. No changes needed.
* Updated generated incs.
* Patches that still need work:
  + Unclear status, need more investigation:
   090729_fix_Makefile_deps.dpatch
   090803_exclude_rdoc.dpatch
   203_adjust_base_of_search_path.dpatch
   902_define_YAML_in_yaml_stringio.rb.dpatch
   919_common.mk_tweaks.dpatch
   931_libruby_suffix.dpatch
   940_test_thread_mutex_sync_shorter.dpatch
  + Maybe not needed anymore, keeping but not applying.
   102_skip_test_copy_stream.dpatch (test doesn't block anymore?)
   104_skip_btest_io.dpatch (test doesn't block anymore?)
   201_gem_prelude.dpatch (we don't use that rubygems anyway?)
   202_gem_default_dir.dpatch (we don't use that rubygems anyway?)
   940_test_file_exhaustive_fails_as_root.dpatch
   940_test_priority_fails.dpatch
   100518_load_libc_libm.dpatch
* Add disable-tests.diff: disable some tests that cause failures on FreeBSD.
  Closes: #590002, #543805, #542927.
* However, many new failures on FreeBSD. Since that version is still an
  improvement, add the check that makes test suite failures non-fatal on
  FreeBSD again. That still needs to be investigated.
* Re-add 903_skip_base_ruby_check.dpatch
* Add build-dependency on ruby1.8 and drop all pre-generated files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
require 'rubygems/indexer'
2
 
 
3
 
##
4
 
# Construct the master Gem index file.
5
 
 
6
 
class Gem::Indexer::MasterIndexBuilder < Gem::Indexer::AbstractIndexBuilder
7
 
 
8
 
  def start_index
9
 
    super
10
 
    @index = Gem::SourceIndex.new
11
 
  end
12
 
 
13
 
  def end_index
14
 
    super
15
 
 
16
 
    @file.puts "--- !ruby/object:#{@index.class}"
17
 
    @file.puts "gems:"
18
 
 
19
 
    gems = @index.sort_by { |name, gemspec| gemspec.sort_obj }
20
 
    gems.each do |name, gemspec|
21
 
      yaml = gemspec.to_yaml.gsub(/^/, '    ')
22
 
      yaml = yaml.sub(/\A    ---/, '') # there's a needed extra ' ' here
23
 
      @file.print "  #{gemspec.original_name}:"
24
 
      @file.puts yaml
25
 
    end
26
 
  end
27
 
 
28
 
  def cleanup
29
 
    super
30
 
 
31
 
    index_file_name = File.join @directory, @filename
32
 
 
33
 
    compress index_file_name, "Z"
34
 
    paranoid index_file_name, "#{index_file_name}.Z"
35
 
 
36
 
    @files << "#{@filename}.Z"
37
 
  end
38
 
 
39
 
  def add(spec)
40
 
    @index.add_spec(spec)
41
 
  end
42
 
 
43
 
  private
44
 
 
45
 
  def paranoid(path, compressed_path)
46
 
    data = Gem.read_binary path
47
 
    compressed_data = Gem.read_binary compressed_path
48
 
 
49
 
    if data != unzip(compressed_data) then
50
 
      raise "Compressed file #{compressed_path} does not match uncompressed file #{path}"
51
 
    end
52
 
  end
53
 
 
54
 
end