Class: MiniPortile

### Home Classes Methods

### In Files

- lib/mini_portile.rb

### Parent

Object

### Methods

- ::new
- #activate
- #compile
- #configure
- #configure_options
- #configured?
- #cook
- #download
- #downloaded?
- #extract
- #install
- #installed?
- #patch
- #path

### Files

- History.txt
- LICENSE.txt
- README.rdoc

### Class/Module Index

Quicksearch

- MiniPortile

No matching classes.

# MiniPortile

### Attributes

configure_options[W]
files[RW]
host[RW]
logger[RW]
name[R]
original_host[R]
patch_files[RW]
target[RW]
version[R]

### Public Class Methods

new(name, version) click to toggle source

    # File lib/mini_portile.rb, line 14
    def initialize(name, version)
      @name = name
      @version = version
      @target = 'ports'
      @files = []
      @patch_files = []
      @logger = STDOUT

      @original_host = @host = detect_host
    end

### Public Instance Methods

activate() click to toggle source

    # File lib/mini_portile.rb, line 116
    def activate
      lib_path = File.join(port_path, "lib")
      vars = {
        'PATH'          => File.join(port_path, 'bin'),
        'CPATH'         => File.join(port_path, 'include'),
        'LIBRARY_PATH'  => lib_path
      }.reject { |env, path| !File.directory?(path) }

      output "Activating #{@name} #{@version} (from #{port_path})..."
      vars.each do |var, path|
        full_path = File.expand_path(path)

        # turn into a valid Windows path (if required)
        full_path.gsub!(File::SEPARATOR, File::ALT_SEPARATOR) if File::ALT_SEPARATOR

        # save current variable value
        old_value = ENV[var] || ''

        unless old_value.include?(full_path)
          ENV[var] = "#{full_path}#{File::PATH_SEPARATOR}#{old_value}"
        end
      end

      # rely on LDFLAGS when cross-compiling
      if File.exist?(lib_path) && (@host != @original_host)
        full_path = File.expand_path(lib_path)

        old_value = ENV.fetch("LDFLAGS", "")

        unless old_value.include?(full_path)
          ENV["LDFLAGS"] = "-L#{full_path} #{old_value}".strip
        end
      end
    end

compile() click to toggle source

    # File lib/mini_portile.rb, line 69
    def compile
      execute('compile', make_cmd)
    end

configure() click to toggle source

    # File lib/mini_portile.rb, line 59
    def configure
      return if configured?

      md5_file = File.join(tmp_path, 'configure.md5')
      digest   = Digest::MD5.hexdigest(computed_options)
      File.open(md5_file, "w") { |f| f.write digest }

      execute('configure', %(sh configure #{computed_options}))
    end

configure_options() click to toggle source

    # File lib/mini_portile.rb, line 55
    def configure_options
      @configure_options ||= configure_defaults
    end

configured?() click to toggle source

    # File lib/mini_portile.rb, line 87
    def configured?
      configure = File.join(work_path, 'configure')
      makefile  = File.join(work_path, 'Makefile')
      md5_file  = File.join(tmp_path, 'configure.md5')

      stored_md5  = File.exist?(md5_file) ? File.read(md5_file) : ""
      current_md5 = Digest::MD5.hexdigest(computed_options)

      (current_md5 == stored_md5) && newer?(makefile, configure)
    end

cook() click to toggle source

    # File lib/mini_portile.rb, line 105
    def cook
      download unless downloaded?
      extract
      patch
      configure unless configured?
      compile
      install unless installed?

      return true
    end

download() click to toggle source

    # File lib/mini_portile.rb, line 25
    def download
      @files.each do |url|
        filename = File.basename(url)
        download_file(url, File.join(archives_path, filename))
      end
    end

downloaded?() click to toggle source

    # File lib/mini_portile.rb, line 78
    def downloaded?
      missing = @files.detect do |url|
        filename = File.basename(url)
        !File.exist?(File.join(archives_path, filename))
      end

      missing ? false : true
    end

extract() click to toggle source

    # File lib/mini_portile.rb, line 32
    def extract
      @files.each do |url|
        filename = File.basename(url)
        extract_file(File.join(archives_path, filename), tmp_path)
      end
    end

install() click to toggle source

    # File lib/mini_portile.rb, line 73
    def install
      return if installed?
      execute('install', %(#{make_cmd} install))
    end

installed?() click to toggle source

    # File lib/mini_portile.rb, line 98
    def installed?
      makefile  = File.join(work_path, 'Makefile')
      target_dir = Dir.glob("#{port_path}/*").find { |d| File.directory?(d) }

      newer?(target_dir, makefile)
    end

patch() click to toggle source

    # File lib/mini_portile.rb, line 39
    def patch
      # Set GIT_DIR while appying patches to work around
      # git-apply doing nothing when started within another
      # git directory.
      ENV['GIT_DIR'], old_git = '.', ENV['GIT_DIR']
      begin
        @patch_files.each do |full_path|
          next unless File.exists?(full_path)
          output "Running git apply with #{full_path}..."
          execute('patch', %(git apply #{full_path}))
        end
      ensure
        ENV['GIT_DIR'] = old_git
      end
    end

path() click to toggle source

    # File lib/mini_portile.rb, line 151
    def path
      File.expand_path(port_path)
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.