Sha256: 8ed20322a70cbc23cb1b4fc181884961c5d0997bac7b523ac769cb9db44e9807

Contents?: true

Size: 1.78 KB

Versions: 2

Compression:

Stored size: 1.78 KB

Contents

# frozen_string_literal: true

require "mini_portile2"
require_relative "configuration"

module LibarchiveBinary
  FORMATS = {
    "arm64-apple-darwin" => "Mach-O 64-bit dynamically linked shared library arm64",
    "x86_64-apple-darwin" => "Mach-O 64-bit dynamically linked shared library x86_64",
    "aarch64-linux-gnu" => "ELF 64-bit LSB shared object, ARM aarch64",
    "x86_64-linux-gnu" => "ELF 64-bit LSB shared object, x86-64",
    "x86_64-w64-mingw32" => "PE32+ executable",
  }.freeze

  ARCHS = {
    "arm64-apple-darwin" => "arm64",
    "x86_64-apple-darwin" => "x86_64",
  }.freeze

  LIBNAMES = {
    "x86_64-w64-mingw32" => "libarchive.dll",
    "x86_64-linux-gnu" => "libarchive.so",
    "aarch64-linux-gnu" => "libarchive.so",
    "x86_64-apple-darwin" => "libarchive.dylib",
    "arm64-apple-darwin" => "libarchive.dylib",
  }.freeze

  ROOT = Pathname.new(File.expand_path("../..", __dir__))

  class BaseRecipe < MiniPortile
    def initialize(name)
      library = LibarchiveBinary.library_for(name)
      version = library["version"]
      super(name, version)
      @files << {
        url: library["url"],
        sha256: library["sha256"],
      }
      @printed = {}
    end

    def apple_arch_flag(host)
      fl = ARCHS[host]
      fl.nil? ? "" : " -arch #{fl}"
    end

    def cflags(host)
      "CFLAGS=-fPIC#{apple_arch_flag(host)}"
    end

    def ldflags(host)
      "LDFLAGS=-fPIC#{apple_arch_flag(host)}"
    end

    def message(text)
      return super unless text.start_with?("\rDownloading")

      match = text.match(/(\rDownloading .*)\((\s*)(\d+)%\)/)
      pattern = match ? match[1] : text
      return if @printed[pattern] && match[3].to_i != 100

      @printed[pattern] = true
      super
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ffi-libarchive-binary-0.4.0.rc1-x64-mingw32 lib/ffi-libarchive-binary/base_recipe.rb
ffi-libarchive-binary-0.4.0.rc1-x64-mingw-ucrt lib/ffi-libarchive-binary/base_recipe.rb