class GNOME2Package

Attributes

author[RW]
description[RW]
email[RW]
homepage[RW]
name[RW]
post_install_message[RW]
required_ruby_version[RW]
root_dir[R]
summary[RW]

Public Class Methods

new() { |self| ... } click to toggle source
# File lib/gnome2-raketask.rb, line 19
def initialize
  initialize_variables
  initialize_configurations
  file, line, method = caller[1].scan(/^(.*):(\d+)(?::.*`(.*)')?\Z/).first
  @root_dir = File.dirname(file)
  @glib2_root_dir = File.expand_path("#{@root_dir}/../glib2")
  @packages = FileList["#{File.dirname(@root_dir)}/*"].map{|f| File.directory?(f) ? File.basename(f) : nil}.compact
  @name = File.basename(@root_dir)
  @cross_compiling_hooks = []
  yield(self) if block_given?
end

Public Instance Methods

cross_compiling(&block) click to toggle source
# File lib/gnome2-raketask.rb, line 31
def cross_compiling(&block)
  @cross_compiling_hooks << block
end
define_tasks() click to toggle source
# File lib/gnome2-raketask.rb, line 35
def define_tasks
  task :default => :build
  define_spec
  define_win32_tasks
  define_package_tasks
end
dependency() click to toggle source
# File lib/gnome2-raketask.rb, line 46
def dependency
  @dependency_configuration
end
guess_version() click to toggle source
# File lib/gnome2-raketask.rb, line 58
def guess_version
  versions = {}
  File.open("#{@glib2_root_dir}/ext/glib2/rbglib.h") do |rbglib_h|
    rbglib_h.each_line do |line|
      if /#define\s+RBGLIB_([A-Z]+)_VERSION\s+(\d+)/ =~ line
        versions[$1.downcase] = $2.to_i
      end
    end
  end
  ["major", "minor", "micro"].collect {|type| versions[type]}.compact.join(".")
end
ruby_gnome2_package?(name) click to toggle source
# File lib/gnome2-raketask.rb, line 42
def ruby_gnome2_package?(name)
  @packages.include?(name)
end
version() click to toggle source
# File lib/gnome2-raketask.rb, line 54
def version
  ENV["VERSION"] || guess_version
end
win32() click to toggle source
# File lib/gnome2-raketask.rb, line 50
def win32
  @win32_configuration
end

Private Instance Methods

define_package_tasks() click to toggle source
# File lib/gnome2-raketask.rb, line 151
def define_package_tasks
  Gem::PackageTask.new(@spec) do |pkg|
  end
end
define_spec() click to toggle source
# File lib/gnome2-raketask.rb, line 85
def define_spec
  @spec = Gem::Specification.new do |s|
    s.name                  = @name
    s.summary               = @summary
    s.description           = @description
    s.author                = @author
    s.email                 = @email
    s.homepage              = @homepage
    s.version               = version
    extensions              = FileList["ext/#{@name}/extconf.rb"]
    extensions.existing!
    s.extensions            = extensions
    s.require_paths         = ["lib"]
    files                   = FileList["ChangeLog", "README",
                                       "Rakefile", "extconf.rb",
                                       "lib/**/*.rb",
                                       "{ext,sample,test,test-unit}/**/*"]
    files.existing!
    s.files                 = files
    s.required_ruby_version = @required_ruby_version || ">= 1.8.5"
    s.post_install_message  = @post_install_message
    @dependency_configuration.apply(s)
  end
end
define_win32_build_task() click to toggle source
# File lib/gnome2-raketask.rb, line 146
def define_win32_build_task
  GNOME2Win32BinaryBuildTask.new(@win32_configuration)
end
define_win32_download_task() click to toggle source
# File lib/gnome2-raketask.rb, line 142
def define_win32_download_task
  GNOME2Win32BinaryDownloadTask.new(@win32_configuration)
end
define_win32_extension_task() click to toggle source
# File lib/gnome2-raketask.rb, line 120
def define_win32_extension_task
  Rake::ExtensionTask.new(so_base_name, @spec) do |ext|
    ext.ext_dir = "ext/#{@name}"
    ext.cross_compile = true
    ext.cross_compiling do |spec|
      if /mingw|mswin/ =~ spec.platform.to_s
        win32_binary_dir = @win32_configuration.relative_binary_dir
        win32_files = []
        if File.exist?(win32_binary_dir)
          Find.find(win32_binary_dir) do |file|
            next if /\.zip\z/ =~ file
            win32_files << file
          end
        end
        spec.files += win32_files
      end
      @cross_compiling_hooks.each do |hook|
        hook.call(spec)
      end
    end
  end

  def define_win32_download_task
    GNOME2Win32BinaryDownloadTask.new(@win32_configuration)
  end

  def define_win32_build_task
    GNOME2Win32BinaryBuildTask.new(@win32_configuration)
  end
end
define_win32_tasks() click to toggle source
# File lib/gnome2-raketask.rb, line 110
def define_win32_tasks
  define_win32_extension_task
  define_win32_download_task
  define_win32_build_task
end
initialize_configurations() click to toggle source
# File lib/gnome2-raketask.rb, line 80
def initialize_configurations
  @dependency_configuration = DependencyConfiguration.new(self)
  @win32_configuration = Win32Configuration.new(self)
end
initialize_variables() click to toggle source
# File lib/gnome2-raketask.rb, line 71
def initialize_variables
  @name = ""
  @summary = ""
  @description = ""
  @author = "The Ruby-GNOME2 Project Team"
  @email = "ruby-gnome2-devel-en@lists.sourceforge.net"
  @homepage = "http://ruby-gnome2.sourceforge.jp/"
end
so_base_name() click to toggle source
# File lib/gnome2-raketask.rb, line 116
def so_base_name
  @name.gsub(/-/, "_")
end