diff --git a/.gitignore b/.gitignore index d81040f..23fdd7d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ activesupport-2.3.5.gem +activesupport-2.3.8.gem diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..d5ece39 --- /dev/null +++ b/Rakefile @@ -0,0 +1,175 @@ +require 'rake/testtask' +require 'rake/rdoctask' +require 'rake/gempackagetask' + +require File.join(File.dirname(__FILE__), 'lib', 'active_support', 'version') + +PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : '' +PKG_NAME = 'activesupport' +PKG_VERSION = ActiveSupport::VERSION::STRING + PKG_BUILD +PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" + +RELEASE_NAME = "REL #{PKG_VERSION}" + +RUBY_FORGE_PROJECT = "activesupport" +RUBY_FORGE_USER = "webster132" + +task :default => :test +Rake::TestTask.new { |t| + t.libs << "test" + t.pattern = 'test/**/*_test.rb' + t.verbose = true + t.warning = true +} + +# Create compressed packages +dist_dirs = [ "lib", "test"] + +# Genereate the RDoc documentation + +Rake::RDocTask.new { |rdoc| + rdoc.rdoc_dir = 'doc' + rdoc.title = "Active Support -- Utility classes and standard library extensions from Rails" + rdoc.options << '--line-numbers' << '--inline-source' + rdoc.options << '--charset' << 'utf-8' + rdoc.template = ENV['template'] ? "#{ENV['template']}.rb" : '../doc/template/horo' + rdoc.rdoc_files.include('README', 'CHANGELOG') + rdoc.rdoc_files.include('lib/active_support.rb') + rdoc.rdoc_files.include('lib/active_support/**/*.rb') + rdoc.rdoc_files.exclude('lib/active_support/vendor/*') +} + +spec = Gem::Specification.new do |s| + s.platform = Gem::Platform::RUBY + s.name = PKG_NAME + s.version = PKG_VERSION + s.summary = "Support and utility classes used by the Rails framework." + s.description = %q{Utility library which carries commonly used classes and goodies from the Rails framework} + + s.files = [ "CHANGELOG", "README" ] + Dir.glob( "lib/**/*" ).delete_if { |item| item.include?( "\.svn" ) } + s.require_path = 'lib' + s.has_rdoc = true + + s.author = "David Heinemeier Hansson" + s.email = "david@loudthinking.com" + s.homepage = "http://www.rubyonrails.org" + s.rubyforge_project = "activesupport" +end + +Rake::GemPackageTask.new(spec) do |p| + p.gem_spec = spec + p.need_tar = true + p.need_zip = true +end + +desc "Publish the beta gem" +task :pgem => [:package] do + require 'rake/contrib/sshpublisher' + Rake::SshFilePublisher.new("gems.rubyonrails.org", "/u/sites/gems/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload + `ssh gems.rubyonrails.org '/u/sites/gems/gemupdate.sh'` +end + +desc "Publish the API documentation" +task :pdoc => [:rdoc] do + require 'rake/contrib/sshpublisher' + Rake::SshDirPublisher.new("wrath.rubyonrails.org", "public_html/as", "doc").upload +end + +desc "Publish the release files to RubyForge." +task :release => [ :package ] do + require 'rubyforge' + require 'rake/contrib/rubyforgepublisher' + + packages = %w( gem tgz zip ).collect{ |ext| "pkg/#{PKG_NAME}-#{PKG_VERSION}.#{ext}" } + + rubyforge = RubyForge.new + rubyforge.login + rubyforge.add_release(PKG_NAME, PKG_NAME, "REL #{PKG_VERSION}", *packages) +end + +namespace :tzinfo do + desc "Update bundled tzinfo gem. Only copies the subset of classes and definitions required to support Rails time zone features." + task :update => ['tzinfo:copy_classes', 'tzinfo:copy_definitions'] do + Rake::Task['tzinfo:cleanup_tmp'].invoke + end + + task :unpack_gem do + mkdir_p "tmp" + cd "tmp" + sh "gem unpack --version #{ENV['VERSION'] || "'> 0'"} tzinfo" + cd ".." + end + + task :copy_classes => :unpack_gem do + mkdir_p "#{destination_path}/tzinfo" + cp "#{tmp_path}/lib/tzinfo.rb", destination_path + comment_requires_for_excluded_classes!('tzinfo.rb') + files = FileList["#{tmp_path}/lib/tzinfo/*.rb"] + files.each do |file| + filename = File.basename(file) + unless excluded_classes.include? filename.sub(/.rb$/, '') + cp "#{tmp_path}/lib/tzinfo/#{filename}", "#{destination_path}/tzinfo" + comment_requires_for_excluded_classes!("tzinfo/#{filename}") + end + end + end + + task :copy_definitions => :unpack_gem do + $:.unshift "#{File.dirname(__FILE__)}/lib" + require 'active_support/values/time_zone' + definitions_path = "#{destination_path}/tzinfo/definitions/" + mkdir_p definitions_path + ActiveSupport::TimeZone::MAPPING.values.each do |zone| + subdir = nil + if /\// === zone + subdir = zone.sub(/\w+$/, '') + mkdir_p "#{definitions_path}/#{subdir}" + end + cp "#{tmp_path}/lib/tzinfo/definitions/#{zone}.rb", "#{definitions_path}/#{subdir}" + end + end + + task :cleanup_tmp do + rm_rf "tmp" + end + + def comment_requires_for_excluded_classes!(file) + lines = open("#{destination_path}/#{file}") {|f| f.readlines} + updated = false + + new_lines = [] + lines.each do |line| + if Regexp.new("require 'tzinfo/(#{excluded_classes.join('|')})'") === line + updated = true + new_lines << "# #{line}" + else + new_lines << line + end + end + + if updated + open("#{destination_path}/#{file}", "w") {|f| f.write(new_lines.join)} + end + end + + def version + ENV['VERSION'] ||= get_unpacked_version + end + + def get_unpacked_version + m = (FileList["tmp/tzinfo-*"].to_s.match /\d+\.\d+\.\d+/) + m ? m[0] : raise(LoadError, "TZInfo gem must be installed locally. `gem install tzinfo` and try again") + end + + def tmp_path + "tmp/tzinfo-#{version}" + end + + def destination_path + "lib/active_support/vendor/tzinfo-#{version}" + end + + def excluded_classes + %w(country country_index_definition country_info country_timezone timezone_index_definition timezone_proxy tzdataparser) + end +end diff --git a/activesupport-23-tests.tgz b/activesupport-23-tests.tgz new file mode 100644 index 0000000..81b55c3 Binary files /dev/null and b/activesupport-23-tests.tgz differ diff --git a/rubygem-activesupport.spec b/rubygem-activesupport.spec index 78d0827..75def99 100644 --- a/rubygem-activesupport.spec +++ b/rubygem-activesupport.spec @@ -9,16 +9,33 @@ Summary: Support and utility classes used by the Rails framework Name: rubygem-%{gemname} Epoch: 1 -Version: 2.3.5 +Version: 2.3.8 Release: 1%{?dist} Group: Development/Languages License: MIT URL: http://www.rubyonrails.org + Source0: http://gems.rubyforge.org/gems/%{gemname}-%{version}.gem + +# For some reason the activesupport doesn't ship with the upstream Rakefile +Source1: http://github.com/rails/rails/raw/2-3-stable/activesupport/Rakefile + +# Also the activesupport gem doesn't ship with the test suite like the other +# Rails rpms, you may check it out like so +# git clone http://github.com/rails/rails.git -b 2-3-stable +# cd rails/activesupport/ +# git reset --hard 9da7ff8842e5e6407872 # revisions after this correspond to +# # rails 2.3.9 and break test suite +# # when run against stock 2.3.8 gem +# tar czvf activesupport-23-tests.tgz test/ +Source2: activesupport-23-tests.tgz + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires: rubygems Requires: ruby(abi) = %{rubyabi} BuildRequires: rubygems +BuildRequires(check): rubygem(rake) +BuildRequires(check): rubygem(mocha) BuildArch: noarch Provides: rubygem(%{gemname}) = %{version} @@ -36,6 +53,12 @@ mkdir -p %{buildroot}%{gemdir} gem install --local --install-dir %{buildroot}%{gemdir} \ --force --rdoc %{SOURCE0} +# move the rakefile in place +cp %{SOURCE1} %{buildroot}%{geminstdir} + +# move the tests into place +tar xzvf %{SOURCE2} -C %{buildroot}%{geminstdir} + # Remove bad shebangs for file in %{buildroot}%{geminstdir}/lib/active_support/vendor/builder-2.1.2/builder.rb \ %{buildroot}%{geminstdir}/lib/active_support/vendor/builder-2.1.2/blankslate.rb \ @@ -56,18 +79,29 @@ done %clean rm -rf %{buildroot} +%check +pushd %{buildroot}%{geminstdir} +rake test + %files %defattr(-, root, root, -) %dir %{geminstdir} %doc %{geminstdir}/CHANGELOG +%{geminstdir}/Rakefile %{geminstdir}/lib %doc %{geminstdir}/README %doc %{gemdir}/doc/%{gemname}-%{version} %{gemdir}/cache/%{gemname}-%{version}.gem %{gemdir}/specifications/%{gemname}-%{version}.gemspec +%{geminstdir}/test %changelog +* Wed Aug 04 2010 Mohammed Morsi - 1:2.3.8-1 +- Update to 2.3.8 +- Added check section with rubygem-mocha dependency +- Added upsteam Rakefile and test suite to run tests + * Thu Jan 28 2010 Mamoru Tasaka - 1:2.3.5-1 - Update to 2.3.5 diff --git a/sources b/sources index 433dc41..28703fa 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -c4cbb7dd1ea612fd1c6b181a211cd468 activesupport-2.3.5.gem +1211d35bb0489764fd1fcac19d081a47 activesupport-2.3.8.gem