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
|
#
# We ensure everything in windows is pinned to the same version as "generic"
# by reading the generic Gemfile.lock and pinning to that version in the Gemfile.
#
# This could *almost* be accomplished by simply copying the lockfile and doing a
# `bundle install` to add any windows dependencies, but bundler can still update
# existing versions in a couple of cases:
#
# 1. When the source has changed since the main lockfile was built.
# 2. When Windows-specific dependencies constrain our solution.
#
# We do NOT allow windows gem versions to differ from non-windows, so that our
# packages are consistent across operating systems.
#
# At the end of this process, this `Gemfile`:
#
# ```
# gem 'chef', github: 'chef/chef'
# gem 'berkshelf'
# ```
#
# Is transformed to something like this:
#
# ```
# gem 'chef', github: 'chef/chef', ref: '23049723984237948023'
# gem 'berkshelf', '= 2.0.5'
# gem 'ohai', '= 12.9.30' # implicit dependency of chef
# ```
#
require_relative "tasks/gemfile_util"
extend GemfileUtil
# Honor the main gem's lockfile
include_locked_gemfile("Gemfile", without_groups: [ :aix, :bsd, :mac_os_x, :linux, :solaris ], copy_groups: true)
# We have the same deps as the main Gemfile (except since we're Windows, we read the
# chef-windows.gemspec instead of chef.gemspec)
$chef_platform = "windows"
chef_gemfile = File.expand_path("../Gemfile", __FILE__)
instance_eval(IO.read(chef_gemfile), chef_gemfile)
|