Gemfile 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. source ENV['GEM_SOURCE'] || 'https://rubygems.org'
  2. def location_for(place_or_version, fake_version = nil)
  3. if place_or_version =~ %r{\A(git[:@][^#]*)#(.*)}
  4. [fake_version, { git: Regexp.last_match(1), branch: Regexp.last_match(2), require: false }].compact
  5. elsif place_or_version =~ %r{\Afile:\/\/(.*)}
  6. ['>= 0', { path: File.expand_path(Regexp.last_match(1)), require: false }]
  7. else
  8. [place_or_version, { require: false }]
  9. end
  10. end
  11. def gem_type(place_or_version)
  12. if place_or_version =~ %r{\Agit[:@]}
  13. :git
  14. elsif !place_or_version.nil? && place_or_version.start_with?('file:')
  15. :file
  16. else
  17. :gem
  18. end
  19. end
  20. ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments
  21. minor_version = ruby_version_segments[0..1].join('.')
  22. group :development do
  23. gem "fast_gettext", '1.1.0', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0')
  24. gem "fast_gettext", require: false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0')
  25. gem "json_pure", '<= 2.0.1', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0')
  26. gem "json", '= 1.8.1', require: false if Gem::Version.new(RUBY_VERSION.dup) == Gem::Version.new('2.1.9')
  27. gem "puppet-module-posix-default-r#{minor_version}", require: false, platforms: [:ruby]
  28. gem "puppet-module-posix-dev-r#{minor_version}", require: false, platforms: [:ruby]
  29. gem "puppet-module-win-default-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw]
  30. gem "puppet-module-win-dev-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw]
  31. gem "puppet-blacksmith", '~> 3.4', require: false
  32. end
  33. group :system_tests do
  34. gem "puppet-module-posix-system-r#{minor_version}", require: false, platforms: [:ruby]
  35. gem "puppet-module-win-system-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw]
  36. gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '~> 3.13')
  37. gem "beaker-abs", *location_for(ENV['BEAKER_ABS_VERSION'] || '~> 0.1')
  38. gem "beaker-pe", require: false
  39. gem "beaker-hostgenerator"
  40. gem "beaker-rspec"
  41. end
  42. puppet_version = ENV['PUPPET_GEM_VERSION']
  43. puppet_type = gem_type(puppet_version)
  44. facter_version = ENV['FACTER_GEM_VERSION']
  45. hiera_version = ENV['HIERA_GEM_VERSION']
  46. def puppet_older_than?(version)
  47. puppet_version = ENV['PUPPET_GEM_VERSION']
  48. !puppet_version.nil? &&
  49. Gem::Version.correct?(puppet_version) &&
  50. Gem::Requirement.new("< #{version}").satisfied_by?(Gem::Version.new(puppet_version.dup))
  51. end
  52. gems = {}
  53. gems['puppet'] = location_for(puppet_version)
  54. # If facter or hiera versions have been specified via the environment
  55. # variables, use those versions. If not, and if the puppet version is < 3.5.0,
  56. # use known good versions of both for puppet < 3.5.0.
  57. if facter_version
  58. gems['facter'] = location_for(facter_version)
  59. elsif puppet_type == :gem && puppet_older_than?('3.5.0')
  60. gems['facter'] = ['>= 1.6.11', '<= 1.7.5', require: false]
  61. end
  62. if hiera_version
  63. gems['hiera'] = location_for(ENV['HIERA_GEM_VERSION'])
  64. elsif puppet_type == :gem && puppet_older_than?('3.5.0')
  65. gems['hiera'] = ['>= 1.0.0', '<= 1.3.0', require: false]
  66. end
  67. if Gem.win_platform? && (puppet_type != :gem || puppet_older_than?('3.5.0'))
  68. # For Puppet gems < 3.5.0 (tested as far back as 3.0.0) on Windows
  69. if puppet_type == :gem
  70. gems['ffi'] = ['1.9.0', require: false]
  71. gems['minitar'] = ['0.5.4', require: false]
  72. gems['win32-eventlog'] = ['0.5.3', '<= 0.6.5', require: false]
  73. gems['win32-process'] = ['0.6.5', '<= 0.7.5', require: false]
  74. gems['win32-security'] = ['~> 0.1.2', '<= 0.2.5', require: false]
  75. gems['win32-service'] = ['0.7.2', '<= 0.8.8', require: false]
  76. else
  77. gems['ffi'] = ['~> 1.9.0', require: false]
  78. gems['minitar'] = ['~> 0.5.4', require: false]
  79. gems['win32-eventlog'] = ['~> 0.5', '<= 0.6.5', require: false]
  80. gems['win32-process'] = ['~> 0.6', '<= 0.7.5', require: false]
  81. gems['win32-security'] = ['~> 0.1', '<= 0.2.5', require: false]
  82. gems['win32-service'] = ['~> 0.7', '<= 0.8.8', require: false]
  83. end
  84. gems['win32-dir'] = ['~> 0.3', '<= 0.4.9', require: false]
  85. if RUBY_VERSION.start_with?('1.')
  86. gems['win32console'] = ['1.3.2', require: false]
  87. # sys-admin was removed in Puppet 3.7.0 and doesn't compile under Ruby 2.x
  88. gems['sys-admin'] = ['1.5.6', require: false]
  89. end
  90. # Puppet < 3.7.0 requires these.
  91. # Puppet >= 3.5.0 gem includes these as requirements.
  92. # The following versions are tested to work with 3.0.0 <= puppet < 3.7.0.
  93. gems['win32-api'] = ['1.4.8', require: false]
  94. gems['win32-taskscheduler'] = ['0.2.2', require: false]
  95. gems['windows-api'] = ['0.4.3', require: false]
  96. gems['windows-pr'] = ['1.2.3', require: false]
  97. elsif Gem.win_platform?
  98. # If we're using a Puppet gem on Windows which handles its own win32-xxx gem
  99. # dependencies (>= 3.5.0), set the maximum versions (see PUP-6445).
  100. gems['win32-dir'] = ['<= 0.4.9', require: false]
  101. gems['win32-eventlog'] = ['<= 0.6.5', require: false]
  102. gems['win32-process'] = ['<= 0.7.5', require: false]
  103. gems['win32-security'] = ['<= 0.2.5', require: false]
  104. gems['win32-service'] = ['<= 0.8.8', require: false]
  105. end
  106. gems.each do |gem_name, gem_params|
  107. gem gem_name, *gem_params
  108. end
  109. # Evaluate Gemfile.local and ~/.gemfile if they exist
  110. extra_gemfiles = [
  111. "#{__FILE__}.local",
  112. File.join(Dir.home, '.gemfile'),
  113. ]
  114. extra_gemfiles.each do |gemfile|
  115. if File.file?(gemfile) && File.readable?(gemfile)
  116. eval(File.read(gemfile), binding)
  117. end
  118. end
  119. # vim: syntax=ruby