summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2013-09-30 13:19:31 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2013-09-30 13:19:31 -0700
commitfa204e0efb1fea305107ad2c4c10226e61879da0 (patch)
treef602315cf24fab210483413463f14741ac7779fb
parent2a4ae8fe7c4b406a30f2c9e8257a20504dba9236 (diff)
downloadchef-fa204e0efb1fea305107ad2c4c10226e61879da0.tar.gz
use separate gemspec for windows
- allows us to explicitly version pin in the gemspec on gem installs rather than getting different behavior from 'gem install' and 'bundle install' (gemspec vs. Gemfile). - the mingw deps had been in the Gemfile because it needed to be a group since gemspecs do not have groups. this builds two different gems for publication to rubygems instead. - see mixlib-shellout for the prototype of where this has been done (successfully).
-rw-r--r--chef/Gemfile20
-rw-r--r--chef/Rakefile16
-rw-r--r--chef/chef-x86-mingw32.gemspec19
3 files changed, 32 insertions, 23 deletions
diff --git a/chef/Gemfile b/chef/Gemfile
index dbf5204946..440634bff3 100644
--- a/chef/Gemfile
+++ b/chef/Gemfile
@@ -1,6 +1,6 @@
source 'https://rubygems.org'
-gemspec
+gemspec :name => "chef"
gem "dep_selector", :group => :server, :platform => "ruby"
gem "activesupport", "< 4.0.0", :group => :compat_testing, :platform => "ruby"
@@ -17,24 +17,6 @@ group(:development, :test) do
# gem 'pry'
end
-platforms :mswin, :mingw do
- gem "systemu", "2.2.0" # CHEF-3718
- gem "ffi", "1.0.9"
- gem "rdp-ruby-wmi", "0.3.1"
- gem "windows-api", "0.4.0"
- gem "windows-pr", "1.2.1"
- gem "win32-api", "1.4.8"
- gem "win32-dir", "0.3.7"
- gem "win32-event", "0.5.2"
- gem "win32-mutex", "0.3.1"
- gem "win32-process", "0.6.5"
- gem "win32-service", "0.7.2"
-end
-
-platforms :mingw_18 do
- gem "win32-open3", "0.3.2"
-end
-
# If you want to load debugging tools into the bundle exec sandbox,
# add these additional dependencies into chef/Gemfile.local
eval(IO.read(__FILE__ + '.local'), binding) if File.exists?(__FILE__ + '.local')
diff --git a/chef/Rakefile b/chef/Rakefile
index b227bd3e7a..dc441e3802 100644
--- a/chef/Rakefile
+++ b/chef/Rakefile
@@ -26,13 +26,12 @@ require './tasks/rspec.rb'
GEM_NAME = "chef"
-spec = eval(File.read("chef.gemspec"))
-
# This has to be here or else the docs get generated *after* the gem is created
task :gem => 'docs:all'
-Gem::PackageTask.new(spec) do |pkg|
- pkg.gem_spec = spec
+Dir[File.expand_path("../*gemspec", __FILE__)].reverse.each do |gemspec_path|
+ gemspec = eval(IO.read(gemspec_path))
+ Gem::PackageTask.new(gemspec).define
end
begin
@@ -58,6 +57,15 @@ task :uninstall do
sh %{gem uninstall #{GEM_NAME} -x -v #{Chef::VERSION} }
end
+desc "Build it, tag it and ship it"
+task :ship => :gem do
+ sh("git tag #{Chef::VERSION}")
+ sh("git push opscode --tags")
+ Dir[File.expand_path("../pkg/*.gem", __FILE__)].reverse.each do |built_gem|
+ sh("gem push #{built_gem}")
+ end
+end
+
RONN_OPTS = "--manual='Chef Manual' --organization='Chef #{Chef::VERSION}' --date='#{Time.new.strftime('%Y-%m-%d')}'"
namespace :docs do
diff --git a/chef/chef-x86-mingw32.gemspec b/chef/chef-x86-mingw32.gemspec
new file mode 100644
index 0000000000..83f6009fd6
--- /dev/null
+++ b/chef/chef-x86-mingw32.gemspec
@@ -0,0 +1,19 @@
+# x86-mingw32 Gemspec #
+gemspec = eval(IO.read(File.expand_path("../chef.gemspec", __FILE__)))
+
+gemspec.platform = "x86-mingw32"
+
+gemspec.add_dependency "systemu", "2.2.0" # CHEF-3718
+gemspec.add_dependency "ffi", "1.0.9"
+gemspec.add_dependency "rdp-ruby-wmi", "0.3.1"
+gemspec.add_dependency "windows-api", "0.4.0"
+gemspec.add_dependency "windows-pr", "1.2.1"
+gemspec.add_dependency "win32-api", "1.4.8"
+gemspec.add_dependency "win32-dir", "0.3.7"
+gemspec.add_dependency "win32-event", "0.5.2"
+gemspec.add_dependency "win32-mutex", "0.3.1"
+gemspec.add_dependency "win32-process", "0.6.5"
+gemspec.add_dependency "win32-service", "0.7.2"
+
+gemspec
+