class GNOME2::Rake::ExternalPackage

Public Class Methods

new(properties) click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 38
def initialize(properties)
  super()
  properties.each do |key, value|
    send("#{key}=", value)
  end
end

Public Instance Methods

archive_base_name() click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 58
def archive_base_name
  resolve_value(super) || "#{base_name}.tar.#{compression_method}"
end
archive_url() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 62
def archive_url
  "#{download_base_url}/#{archive_base_name}"
end
base_dir_in_package() click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 82
def base_dir_in_package
  resolve_value(super) || "."
end
base_name() click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 53
def base_name
  resolve_value(super) ||
    "#{name.split('/').last}-#{version.gsub(/\Av/, '')}"
end
bundled_packages() click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 102
def bundled_packages
  super || []
end
compression_method() click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 45
def compression_method
  resolve_value(super) || "gz"
end
download_base_url() click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 66
def download_base_url
  resolve_value(super) || download_site_base_url
end
download_name() click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 49
def download_name
  resolve_value(super) || name
end
latest_version() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 106
def latest_version
  case download_site
  when :gnome
    latest_version_gnome
  when :freedesktop
    latest_version_freedesktop
  when :freedesktop_gstreamer
    latest_version_freedesktop_gstreamer
  when :gnu
    latest_version_gnu
  when :webkitgtk
    latest_version_webkitgtk
  when :icu
    latest_version_icu
  when :github
    latest_version_github
  else
    nil
  end
end
native() click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 94
def native
  super || NativeConfiguration.new({})
end
native=(properties) click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 98
def native=(properties)
  super(NativeConfiguration.new(properties))
end
need_autogen?() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 74
def need_autogen?
  need_autogen
end
need_autoreconf?() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 78
def need_autoreconf?
  need_autoreconf
end
patches() click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 70
def patches
  super || []
end
windows() click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 86
def windows
  super || WindowsConfiguration.new({})
end
windows=(properties) click to toggle source
Calls superclass method
# File lib/gnome2/rake/external-package.rb, line 90
def windows=(properties)
  super(WindowsConfiguration.new(properties))
end

Private Instance Methods

development_minor_version_gnome?(minor_version) click to toggle source
# File lib/gnome2/rake/external-package.rb, line 228
def development_minor_version_gnome?(minor_version)
  minor_version.split(".").last.to_i.odd?
end
development_version_freedesktop_gstreamer?(version) click to toggle source
# File lib/gnome2/rake/external-package.rb, line 266
def development_version_freedesktop_gstreamer?(version)
  version.split(".")[1].to_i.odd?
end
download_site_base_url() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 136
def download_site_base_url
  case download_site
  when :gnome
    base_url = gnome_base_url
    release_series = version.gsub(/\A(\d+\.\d+)(?:[^\d].*)?\z/, '\1')
    base_url << "/#{download_name}/#{release_series}"
  when :freedesktop
    base_url = freedesktop_base_url
    base_url << "/#{download_name}/release"
  when :freedesktop_gstreamer
    base_url = freedesktop_gstreamer_base_url
    base_url << "/#{download_name}"
  when :gnu
    base_url = gnu_base_url
    base_url << "/#{download_name}"
  when :webkitgtk
    base_url = webkitgtk_base_url
  when :icu
    base_url = "#{icu_base_url}/#{version}"
  when :github
    base_url = github_base_url
    base_url << "/#{download_name}/releases/download/#{version}"
  else
    base_url = nil
  end
  base_url
end
freedesktop_base_url() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 168
def freedesktop_base_url
  "https://www.freedesktop.org/software"
end
freedesktop_gstreamer_base_url() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 172
def freedesktop_gstreamer_base_url
  "https://gstreamer.freedesktop.org/src"
end
github_base_url() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 188
def github_base_url
  "https://github.com"
end
gnome_base_url() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 164
def gnome_base_url
  "http://ftp.gnome.org/pub/gnome/sources"
end
gnu_base_url() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 176
def gnu_base_url
  "https://ftp.gnu.org/pub/gnu"
end
icu_base_url() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 184
def icu_base_url
  "http://download.icu-project.org/files/icu4c"
end
latest_version_freedesktop() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 232
def latest_version_freedesktop
  base_url = "#{freedesktop_base_url}/#{download_name}/release"
  versions = []
  open(base_url) do |index|
    index.read.scan(/<a (.+?)>/) do |content,|
      case content
      when /href="#{Regexp.escape(name)}-
                  (\d+(?:\.\d+)*)
                  \.tar\.#{Regexp.escape(compression_method)}"/x
        versions << $1
      end
    end
  end
  sort_versions(versions).last
end
latest_version_freedesktop_gstreamer() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 248
def latest_version_freedesktop_gstreamer
  base_url = "#{freedesktop_gstreamer_base_url}/#{download_name}"
  versions = []
  open(base_url) do |index|
    index.read.scan(/<a (.+?)>/) do |content,|
      case content
      when /href="#{Regexp.escape(name)}-
                  (\d+(?:\.\d+)*)
                  \.tar\.#{Regexp.escape(compression_method)}"/x
        version = $1
        next if development_version_freedesktop_gstreamer?(version)
        versions << version
      end
    end
  end
  sort_versions(versions).last
end
latest_version_github() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 317
def latest_version_github
  latest_url = "#{github_base_url}/#{download_name}/releases/latest"
  open(latest_url) do |latest_page|
    return latest_page.base_uri.path.split("/").last
  end
end
latest_version_gnome() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 198
def latest_version_gnome
  base_url = "#{gnome_base_url}/#{download_name}"
  minor_versions = []
  open(base_url) do |index|
    index.read.scan(/<a (.+?)>/) do |content,|
      case content
      when /href="(\d+(?:\.\d+)*)\/?"/
        minor_version = $1
        next if development_minor_version_gnome?(minor_version)
        minor_versions << minor_version
      end
    end
  end
  return nil if minor_versions.empty?

  latest_minor_version = sort_versions(minor_versions).last
  versions = []
  open("#{base_url}/#{latest_minor_version}") do |index|
    index.read.scan(/<a (.+?)>/) do |content,|
      case content
      when /href="#{Regexp.escape(name)}-
                  (\d+(?:\.\d+)*)
                  \.tar\.#{Regexp.escape(compression_method)}"/x
        versions << $1
      end
    end
  end
  sort_versions(versions).last
end
latest_version_gnu() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 270
def latest_version_gnu
  base_url = "#{gnu_base_url}/#{download_name}"
  versions = []
  open(base_url) do |index|
    index.read.scan(/<a (.+?)>/) do |content,|
      case content
      when /href="#{Regexp.escape(name)}-
                  (\d+(?:\.\d+)*)
                  \.tar\.#{Regexp.escape(compression_method)}"/x
        version = $1
        versions << version
      end
    end
  end
  sort_versions(versions).last
end
latest_version_icu() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 303
def latest_version_icu
  base_url = icu_base_url
  versions = []
  open(base_url) do |index|
    index.read.scan(/<a (.+?)>/) do |content,|
      case content
      when /href="(\d+(?:\.\d+)+)\/"/x
        versions << $1
      end
    end
  end
  sort_versions(versions).last
end
latest_version_webkitgtk() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 287
def latest_version_webkitgtk
  base_url = webkitgtk_base_url
  versions = []
  open(base_url) do |index|
    index.read.scan(/<a (.+?)>/) do |content,|
      case content
      when /href="#{Regexp.escape(name)}-
                  (\d+(?:\.\d+)*)
                  \.tar\.#{Regexp.escape(compression_method)}"/x
        versions << $1
      end
    end
  end
  sort_versions(versions).last
end
resolve_value(value) click to toggle source
# File lib/gnome2/rake/external-package.rb, line 128
def resolve_value(value)
  if value.respond_to?(:call)
    value.call(self)
  else
    value
  end
end
sort_versions(versions) click to toggle source
# File lib/gnome2/rake/external-package.rb, line 192
def sort_versions(versions)
  versions.sort_by do |version|
    version.split(".").collect(&:to_i)
  end
end
webkitgtk_base_url() click to toggle source
# File lib/gnome2/rake/external-package.rb, line 180
def webkitgtk_base_url
  "https://webkitgtk.org/releases"
end