Sha256: a1b6bca0c220d194c47811fd403b4faf94da1ecdc9407a8b8468761aa670596e

Contents?: true

Size: 1.63 KB

Versions: 3

Compression:

Stored size: 1.63 KB

Contents

require "rbconfig"

# Used from extconf and to load libskylight
module Skylight
  module Util
    module Platform
      # Normalize the platform OS
      OS =
        case os = RbConfig::CONFIG["host_os"].downcase
        when /linux/
          # The official ruby-alpine Docker containers pre-build Ruby. As a result,
          #   Ruby doesn't know that it's on a musl-based platform. `ldd` is the
          #   only reliable way to detect musl that we've found.
          # See https://github.com/skylightio/skylight-ruby/issues/92
          ENV["SKYLIGHT_MUSL"] || `ldd --version 2>&1` =~ /musl/ ? "linux-musl" : "linux"
        when /darwin/
          "darwin"
        when /freebsd/
          "freebsd"
        when /netbsd/
          "netbsd"
        when /openbsd/
          "openbsd"
        when /sunos|solaris/
          "solaris"
        when /mingw|mswin/
          "windows"
        else
          os
        end

      # Normalize the platform CPU
      ARCH =
        case cpu = RbConfig::CONFIG["host_cpu"].downcase
        when /amd64|x86_64/
          "x86_64"
        when /i?86|x86|i86pc/
          "x86"
        when /ppc|powerpc/
          "powerpc"
        when /^arm/
          "arm"
        else
          cpu
        end

      LIBEXT =
        case OS
        when /darwin/
          "dylib"
        when /linux|bsd|solaris/
          "so"
        when /windows|cygwin/
          "dll"
        else
          "so"
        end

      TUPLE = "#{ARCH}-#{OS}".freeze

      def self.tuple
        TUPLE
      end

      def self.libext
        LIBEXT
      end

      def self.dlext
        RbConfig::CONFIG["DLEXT"]
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
skylight-5.1.1 lib/skylight/util/platform.rb
skylight-5.1.0.beta3 lib/skylight/util/platform.rb
skylight-5.1.0.beta2 lib/skylight/util/platform.rb