Merge pull request #19459 from Homebrew/feat/fetch/cask_on_linux
fix: allow fetching casks on Linux
This commit is contained in:
		
						commit
						0e80446543
					
				@ -411,10 +411,12 @@ module Cask
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      if @dsl.on_system_blocks_exist?
 | 
					      if @dsl.on_system_blocks_exist?
 | 
				
			||||||
        begin
 | 
					        begin
 | 
				
			||||||
          MacOSVersion::SYMBOLS.keys.product(OnSystem::ARCH_OPTIONS).each do |os, arch|
 | 
					          OnSystem::ALL_OS_ARCH_COMBINATIONS.each do |os, arch|
 | 
				
			||||||
            bottle_tag = ::Utils::Bottles::Tag.new(system: os, arch:)
 | 
					            bottle_tag = ::Utils::Bottles::Tag.new(system: os, arch:)
 | 
				
			||||||
            next unless bottle_tag.valid_combination?
 | 
					            next unless bottle_tag.valid_combination?
 | 
				
			||||||
            next if depends_on.macos &&
 | 
					            next if bottle_tag.linux? && @dsl.os.nil?
 | 
				
			||||||
 | 
					            next if bottle_tag.macos? &&
 | 
				
			||||||
 | 
					                    depends_on.macos &&
 | 
				
			||||||
                    !@dsl.depends_on_set_in_block? &&
 | 
					                    !@dsl.depends_on_set_in_block? &&
 | 
				
			||||||
                    !depends_on.macos.allows?(bottle_tag.to_macos_version)
 | 
					                    !depends_on.macos.allows?(bottle_tag.to_macos_version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -204,8 +204,6 @@ module Homebrew
 | 
				
			|||||||
            ref = cask.loaded_from_api? ? cask.full_name : cask.sourcefile_path
 | 
					            ref = cask.loaded_from_api? ? cask.full_name : cask.sourcefile_path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            os_arch_combinations.each do |os, arch|
 | 
					            os_arch_combinations.each do |os, arch|
 | 
				
			||||||
              next if os == :linux
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
              SimulateSystem.with(os:, arch:) do
 | 
					              SimulateSystem.with(os:, arch:) do
 | 
				
			||||||
                cask = Cask::CaskLoader.load(ref)
 | 
					                cask = Cask::CaskLoader.load(ref)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -324,6 +324,15 @@ RSpec.describe Cask::Cask, :cask do
 | 
				
			|||||||
    let(:expected_versions_variations) do
 | 
					    let(:expected_versions_variations) do
 | 
				
			||||||
      <<~JSON
 | 
					      <<~JSON
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "sequoia": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.2.3/intel.zip"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "sonoma": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.2.3/intel.zip"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "ventura": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.2.3/intel.zip"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
          "monterey": {
 | 
					          "monterey": {
 | 
				
			||||||
            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.2.3/intel.zip"
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.2.3/intel.zip"
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
@ -346,6 +355,21 @@ RSpec.describe Cask::Cask, :cask do
 | 
				
			|||||||
            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.0.0/intel.zip",
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.0.0/intel.zip",
 | 
				
			||||||
            "version": "1.0.0",
 | 
					            "version": "1.0.0",
 | 
				
			||||||
            "sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
 | 
					            "sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "high_sierra": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.0.0/intel.zip",
 | 
				
			||||||
 | 
					            "version": "1.0.0",
 | 
				
			||||||
 | 
					            "sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "sierra": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.0.0/intel.zip",
 | 
				
			||||||
 | 
					            "version": "1.0.0",
 | 
				
			||||||
 | 
					            "sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "el_capitan": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine/darwin/1.0.0/intel.zip",
 | 
				
			||||||
 | 
					            "version": "1.0.0",
 | 
				
			||||||
 | 
					            "sha256": "1866dfa833b123bb8fe7fa7185ebf24d28d300d0643d75798bc23730af734216"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      JSON
 | 
					      JSON
 | 
				
			||||||
@ -353,6 +377,18 @@ RSpec.describe Cask::Cask, :cask do
 | 
				
			|||||||
    let(:expected_sha256_variations) do
 | 
					    let(:expected_sha256_variations) do
 | 
				
			||||||
      <<~JSON
 | 
					      <<~JSON
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          "sequoia": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "sonoma": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "ventura": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
          "monterey": {
 | 
					          "monterey": {
 | 
				
			||||||
            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip",
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip",
 | 
				
			||||||
            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
@ -368,21 +404,77 @@ RSpec.describe Cask::Cask, :cask do
 | 
				
			|||||||
          "mojave": {
 | 
					          "mojave": {
 | 
				
			||||||
            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip",
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip",
 | 
				
			||||||
            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "high_sierra": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "sierra": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "el_capitan": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      JSON
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					    let(:expected_sha256_variations_os) do
 | 
				
			||||||
 | 
					      <<~JSON
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "sequoia": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel-darwin.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "sonoma": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel-darwin.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "ventura": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel-darwin.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "monterey": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel-darwin.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "big_sur": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel-darwin.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "catalina": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel-darwin.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "mojave": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel-darwin.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "high_sierra": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel-darwin.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "sierra": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel-darwin.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "el_capitan": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel-darwin.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "x86_64_linux": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel-linux.zip",
 | 
				
			||||||
 | 
					            "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b"
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          "arm64_linux": {
 | 
				
			||||||
 | 
					            "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-arm-linux.zip"
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      JSON
 | 
					      JSON
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    before do
 | 
					    before do
 | 
				
			||||||
      # Use a more limited symbols list to shorten the variations hash
 | 
					 | 
				
			||||||
      symbols = {
 | 
					 | 
				
			||||||
        monterey: "12",
 | 
					 | 
				
			||||||
        big_sur:  "11",
 | 
					 | 
				
			||||||
        catalina: "10.15",
 | 
					 | 
				
			||||||
        mojave:   "10.14",
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      stub_const("MacOSVersion::SYMBOLS", symbols)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      # For consistency, always run on Monterey and ARM
 | 
					      # For consistency, always run on Monterey and ARM
 | 
				
			||||||
      MacOS.full_version = "12"
 | 
					      MacOS.full_version = "12"
 | 
				
			||||||
      allow(Hardware::CPU).to receive(:type).and_return(:arm)
 | 
					      allow(Hardware::CPU).to receive(:type).and_return(:arm)
 | 
				
			||||||
@ -408,6 +500,14 @@ RSpec.describe Cask::Cask, :cask do
 | 
				
			|||||||
      expect(JSON.pretty_generate(h["variations"])).to eq expected_sha256_variations.strip
 | 
					      expect(JSON.pretty_generate(h["variations"])).to eq expected_sha256_variations.strip
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it "returns the correct variations hash for a cask different sha256s on each arch and os" do
 | 
				
			||||||
 | 
					      c = Cask::CaskLoader.load("sha256-os")
 | 
				
			||||||
 | 
					      h = c.to_hash_with_variations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      expect(h).to be_a(Hash)
 | 
				
			||||||
 | 
					      expect(JSON.pretty_generate(h["variations"])).to eq expected_sha256_variations_os.strip
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # NOTE: The calls to `Cask.generating_hash!` and `Cask.generated_hash!`
 | 
					    # NOTE: The calls to `Cask.generating_hash!` and `Cask.generated_hash!`
 | 
				
			||||||
    #       are not idempotent so they can only be used in one test.
 | 
					    #       are not idempotent so they can only be used in one test.
 | 
				
			||||||
    it "returns the correct hash placeholders" do
 | 
					    it "returns the correct hash placeholders" do
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					cask "sha256-os" do
 | 
				
			||||||
 | 
					  os macos: "darwin", linux: "linux"
 | 
				
			||||||
 | 
					  arch arm: "arm", intel: "intel"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  version "1.2.3"
 | 
				
			||||||
 | 
					  sha256 arm:          "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94",
 | 
				
			||||||
 | 
					         intel:        "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b",
 | 
				
			||||||
 | 
					         x86_64_linux: "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b",
 | 
				
			||||||
 | 
					         arm64_linux:  "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  url "file://#{TEST_FIXTURE_DIR}/cask/caffeine-#{arch}-#{os}.zip"
 | 
				
			||||||
 | 
					  homepage "https://brew.sh/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  app "Caffeine.app"
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user