File: ruby_debian_dev.rb

package info (click to toggle)
ruby-defaults 1%3A3.3%2Bsupport3.4~0
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 116 kB
  • sloc: ruby: 91; sh: 77; makefile: 30
file content (76 lines) | stat: -rw-r--r-- 2,166 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
module RubyDebianDev

  RUBY_INTERPRETERS = {}

  def self.skip
    @skip ||= (ENV["RUBY_ALL_DEV_SKIP"] || "").split
  end

  def self.has_support_for(ruby)
    return if skip.include?(ruby)
    RUBY_INTERPRETERS[ruby] = yield
  end

  # XXX the default Ruby must come first here
  has_support_for 'ruby3.3' do
    {
      version:             '3.3',
      binary:              '/usr/bin/ruby3.3',
      api_version:         '3.3.0',
      shared_library:      'libruby3.3',
      min_ruby_version:    '1:3.3~0',
      ruby_upper_bound:    '1:3.4~',
    }
  end

  has_support_for 'ruby3.4' do
    {
      version:             '3.4',
      binary:              '/usr/bin/ruby3.4',
      api_version:         '3.4.0',
      shared_library:      'libruby3.4',
      min_ruby_version:    '1:3.4~0',
      ruby_upper_bound:    '1:3.5~',
    }
  end

  def self.min_ruby_dependency_for(shared_library)
    RUBY_INTERPRETERS.each do |int,data|
      if data[:shared_library] == shared_library
        return "libruby (>= %s)" % data[:min_ruby_version]
      end
    end
    return nil
  end

  def self.ruby_upper_bound
    sort = IO.popen('sort -V', 'w+')
    RUBY_INTERPRETERS.values.map do |data|
      sort.puts(data[:ruby_upper_bound])
    end
    sort.close_write()
    version = sort.read.split.last
    "libruby (<< #{version})"
  end

  #################################################################
  # These constants below are kept here for backwards compatibility
  #################################################################
  SUPPORTED_RUBY_VERSIONS = RUBY_INTERPRETERS.keys.inject({}) do |supported,interpreter|
    supported[interpreter] = RUBY_INTERPRETERS[interpreter][:binary]
    supported
  end

  RUBY_CONFIG_VERSION = RUBY_INTERPRETERS.keys.inject({}) do |supported,interpreter|
    supported[interpreter] = RUBY_INTERPRETERS[interpreter][:version]
    supported
  end

  RUBY_API_VERSION = RUBY_INTERPRETERS.keys.inject({}) do |supported,interpreter|
    supported[interpreter] = RUBY_INTERPRETERS[interpreter][:api_version]
    supported
  end

  SUPPORTED_RUBY_SHARED_LIBRARIES = RUBY_INTERPRETERS.map { |k,v| v[:shared_library] }

end