Merge pull request #863 from penman/preserve_alias
Save aliases in INSTALL_RECEIPT
This commit is contained in:
		
						commit
						1d66cdd3ad
					
				@ -60,6 +60,11 @@ class Formula
 | 
			
		||||
  # e.g. `this-formula`
 | 
			
		||||
  attr_reader :name
 | 
			
		||||
 | 
			
		||||
  # The name specified when installing this {Formula}.
 | 
			
		||||
  # Could be the name of the {Formula}, or an alias.
 | 
			
		||||
  # e.g. `another-name-for-this-formula`
 | 
			
		||||
  attr_reader :alias_path
 | 
			
		||||
 | 
			
		||||
  # The fully-qualified name of this {Formula}.
 | 
			
		||||
  # For core formula it's the same as {#name}.
 | 
			
		||||
  # e.g. `homebrew/tap-name/this-formula`
 | 
			
		||||
@ -145,9 +150,10 @@ class Formula
 | 
			
		||||
  attr_accessor :build
 | 
			
		||||
 | 
			
		||||
  # @private
 | 
			
		||||
  def initialize(name, path, spec)
 | 
			
		||||
  def initialize(name, path, spec, alias_path: nil)
 | 
			
		||||
    @name = name
 | 
			
		||||
    @path = path
 | 
			
		||||
    @alias_path = alias_path
 | 
			
		||||
    @revision = self.class.revision || 0
 | 
			
		||||
    @version_scheme = self.class.version_scheme || 0
 | 
			
		||||
 | 
			
		||||
@ -222,6 +228,11 @@ class Formula
 | 
			
		||||
 | 
			
		||||
  public
 | 
			
		||||
 | 
			
		||||
  # The path that was specified to find/install this formula.
 | 
			
		||||
  def specified_path
 | 
			
		||||
    alias_path || path
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # Is the currently active {SoftwareSpec} a {#stable} build?
 | 
			
		||||
  # @private
 | 
			
		||||
  def stable?
 | 
			
		||||
 | 
			
		||||
@ -599,7 +599,7 @@ class FormulaInstaller
 | 
			
		||||
      -I #{HOMEBREW_LOAD_PATH}
 | 
			
		||||
      --
 | 
			
		||||
      #{HOMEBREW_LIBRARY_PATH}/build.rb
 | 
			
		||||
      #{formula.path}
 | 
			
		||||
      #{formula.specified_path}
 | 
			
		||||
    ].concat(build_argv)
 | 
			
		||||
 | 
			
		||||
    Sandbox.print_sandbox_message if Sandbox.formula?(formula)
 | 
			
		||||
 | 
			
		||||
@ -68,6 +68,8 @@ class Formulary
 | 
			
		||||
    attr_reader :name
 | 
			
		||||
    # The formula's ruby file's path or filename
 | 
			
		||||
    attr_reader :path
 | 
			
		||||
    # The name used to install the formula
 | 
			
		||||
    attr_reader :alias_path
 | 
			
		||||
 | 
			
		||||
    def initialize(name, path)
 | 
			
		||||
      @name = name
 | 
			
		||||
@ -76,7 +78,7 @@ class Formulary
 | 
			
		||||
 | 
			
		||||
    # Gets the formula instance.
 | 
			
		||||
    def get_formula(spec)
 | 
			
		||||
      klass.new(name, path, spec)
 | 
			
		||||
      klass.new(name, path, spec, :alias_path => alias_path)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def klass
 | 
			
		||||
@ -118,6 +120,7 @@ class Formulary
 | 
			
		||||
      path = alias_path.resolved_path
 | 
			
		||||
      name = path.basename(".rb").to_s
 | 
			
		||||
      super name, path
 | 
			
		||||
      @alias_path = alias_path
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -31,7 +31,7 @@ class Tab < OpenStruct
 | 
			
		||||
      "compiler" => compiler,
 | 
			
		||||
      "stdlib" => stdlib,
 | 
			
		||||
      "source" => {
 | 
			
		||||
        "path" => formula.path.to_s,
 | 
			
		||||
        "path" => formula.specified_path.to_s,
 | 
			
		||||
        "tap" => formula.tap ? formula.tap.name : nil,
 | 
			
		||||
        "spec" => formula.active_spec_sym.to_s,
 | 
			
		||||
        "versions" => {
 | 
			
		||||
@ -146,7 +146,7 @@ class Tab < OpenStruct
 | 
			
		||||
      tab = empty
 | 
			
		||||
      tab.unused_options = f.options.as_flags
 | 
			
		||||
      tab.source = {
 | 
			
		||||
        "path" => f.path.to_s,
 | 
			
		||||
        "path" => f.specified_path.to_s,
 | 
			
		||||
        "tap" => f.tap ? f.tap.name : f.tap,
 | 
			
		||||
        "spec" => f.active_spec_sym.to_s,
 | 
			
		||||
        "versions" => {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1
									
								
								Library/Homebrew/test/fixtures/receipt.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								Library/Homebrew/test/fixtures/receipt.json
									
									
									
									
										vendored
									
									
								
							@ -11,6 +11,7 @@
 | 
			
		||||
  "poured_from_bottle": true,
 | 
			
		||||
  "time": 1403827774,
 | 
			
		||||
  "HEAD": "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
 | 
			
		||||
  "alias_path": "/usr/local/Library/Taps/homebrew/homebrew-core/Aliases/test-formula",
 | 
			
		||||
  "stdlib": "libcxx",
 | 
			
		||||
  "compiler": "clang",
 | 
			
		||||
  "source": {
 | 
			
		||||
 | 
			
		||||
@ -8,10 +8,12 @@ class FormulaTests < Homebrew::TestCase
 | 
			
		||||
    name = "formula_name"
 | 
			
		||||
    path = Formulary.core_path(name)
 | 
			
		||||
    spec = :stable
 | 
			
		||||
    alias_path = CoreTap.instance.alias_dir/"formula_alias"
 | 
			
		||||
 | 
			
		||||
    f = klass.new(name, path, spec)
 | 
			
		||||
    f = klass.new(name, path, spec, :alias_path => alias_path)
 | 
			
		||||
    assert_equal name, f.name
 | 
			
		||||
    assert_equal path, f.path
 | 
			
		||||
    assert_equal alias_path, f.alias_path
 | 
			
		||||
    assert_raises(ArgumentError) { klass.new }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -85,8 +85,11 @@ class FormularyFactoryTest < Homebrew::TestCase
 | 
			
		||||
  def test_factory_from_alias
 | 
			
		||||
    alias_dir = CoreTap.instance.alias_dir
 | 
			
		||||
    alias_dir.mkpath
 | 
			
		||||
    FileUtils.ln_s @path, alias_dir/"foo"
 | 
			
		||||
    assert_kind_of Formula, Formulary.factory("foo")
 | 
			
		||||
    alias_path = alias_dir/"foo"
 | 
			
		||||
    FileUtils.ln_s @path, alias_path
 | 
			
		||||
    result = Formulary.factory("foo")
 | 
			
		||||
    assert_kind_of Formula, result
 | 
			
		||||
    assert_equal alias_path, result.alias_path
 | 
			
		||||
  ensure
 | 
			
		||||
    alias_dir.rmtree
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
@ -45,6 +45,7 @@ class TabTests < Homebrew::TestCase
 | 
			
		||||
    assert_nil tab.head_version
 | 
			
		||||
    assert_equal DevelopmentTools.default_compiler, tab.cxxstdlib.compiler
 | 
			
		||||
    assert_nil tab.cxxstdlib.type
 | 
			
		||||
    assert_nil tab.source["path"]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_include?
 | 
			
		||||
@ -99,6 +100,7 @@ class TabTests < Homebrew::TestCase
 | 
			
		||||
  def test_from_file
 | 
			
		||||
    path = Pathname.new(TEST_DIRECTORY).join("fixtures", "receipt.json")
 | 
			
		||||
    tab = Tab.from_file(path)
 | 
			
		||||
    source_path = "/usr/local/Library/Taps/hombrew/homebrew-core/Formula/foo.rb"
 | 
			
		||||
 | 
			
		||||
    assert_equal @used.sort, tab.used_options.sort
 | 
			
		||||
    assert_equal @unused.sort, tab.unused_options.sort
 | 
			
		||||
@ -116,6 +118,41 @@ class TabTests < Homebrew::TestCase
 | 
			
		||||
    assert_equal "2.14", tab.stable_version.to_s
 | 
			
		||||
    assert_equal "2.15", tab.devel_version.to_s
 | 
			
		||||
    assert_equal "HEAD-0000000", tab.head_version.to_s
 | 
			
		||||
    assert_equal source_path, tab.source["path"]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_create
 | 
			
		||||
    f = formula { url "foo-1.0" }
 | 
			
		||||
    compiler = DevelopmentTools.default_compiler
 | 
			
		||||
    stdlib = :libcxx
 | 
			
		||||
    tab = Tab.create(f, compiler, stdlib)
 | 
			
		||||
 | 
			
		||||
    assert_equal f.path.to_s, tab.source["path"]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_create_from_alias
 | 
			
		||||
    alias_path = CoreTap.instance.alias_dir/"bar"
 | 
			
		||||
    f = formula(:alias_path => alias_path) { url "foo-1.0" }
 | 
			
		||||
    compiler = DevelopmentTools.default_compiler
 | 
			
		||||
    stdlib = :libcxx
 | 
			
		||||
    tab = Tab.create(f, compiler, stdlib)
 | 
			
		||||
 | 
			
		||||
    assert_equal f.alias_path.to_s, tab.source["path"]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_for_formula
 | 
			
		||||
    f = formula { url "foo-1.0" }
 | 
			
		||||
    tab = Tab.for_formula(f)
 | 
			
		||||
 | 
			
		||||
    assert_equal f.path.to_s, tab.source["path"]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_for_formula_from_alias
 | 
			
		||||
    alias_path = CoreTap.instance.alias_dir/"bar"
 | 
			
		||||
    f = formula(:alias_path => alias_path) { url "foo-1.0" }
 | 
			
		||||
    tab = Tab.for_formula(f)
 | 
			
		||||
 | 
			
		||||
    assert_equal alias_path.to_s, tab.source["path"]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_to_json
 | 
			
		||||
@ -133,6 +170,7 @@ class TabTests < Homebrew::TestCase
 | 
			
		||||
    assert_equal @tab.stable_version, tab.stable_version
 | 
			
		||||
    assert_equal @tab.devel_version, tab.devel_version
 | 
			
		||||
    assert_equal @tab.head_version, tab.head_version
 | 
			
		||||
    assert_equal @tab.source["path"], tab.source["path"]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_remap_deprecated_options
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
class Testball < Formula
 | 
			
		||||
  def initialize(name = "testball", path = Pathname.new(__FILE__).expand_path, spec = :stable)
 | 
			
		||||
  def initialize(name = "testball", path = Pathname.new(__FILE__).expand_path, spec = :stable, alias_path: nil)
 | 
			
		||||
    self.class.instance_eval do
 | 
			
		||||
      stable.url "file://#{File.expand_path("..", __FILE__)}/tarballs/testball-0.1.tbz"
 | 
			
		||||
      stable.sha256 TESTBALL_SHA256
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
class TestballBottle < Formula
 | 
			
		||||
  def initialize(name = "testball_bottle", path = Pathname.new(__FILE__).expand_path, spec = :stable)
 | 
			
		||||
  def initialize(name = "testball_bottle", path = Pathname.new(__FILE__).expand_path, spec = :stable, alias_path: nil)
 | 
			
		||||
    self.class.instance_eval do
 | 
			
		||||
      stable.url "file://#{File.expand_path("..", __FILE__)}/tarballs/testball-0.1.tbz"
 | 
			
		||||
      stable.sha256 TESTBALL_SHA256
 | 
			
		||||
 | 
			
		||||
@ -72,8 +72,8 @@ module Homebrew
 | 
			
		||||
    TEST_SHA1   = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef".freeze
 | 
			
		||||
    TEST_SHA256 = "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef".freeze
 | 
			
		||||
 | 
			
		||||
    def formula(name = "formula_name", path = Formulary.core_path(name), spec = :stable, &block)
 | 
			
		||||
      @_f = Class.new(Formula, &block).new(name, path, spec)
 | 
			
		||||
    def formula(name = "formula_name", path = Formulary.core_path(name), spec = :stable, alias_path: nil, &block)
 | 
			
		||||
      @_f = Class.new(Formula, &block).new(name, path, spec, :alias_path => alias_path)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def mktmpdir(prefix_suffix = nil, &block)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user