diff --git a/.gemspec b/.gemspec deleted file mode 100644 index 53e4b76349c..00000000000 --- a/.gemspec +++ /dev/null @@ -1,84 +0,0 @@ -# -*- encoding: utf-8 -*- -# -# PLEASE NOTE -# This gemspec is not intended to be used for building the Puppet gem. This -# gemspec is intended for use with bundler when Puppet is a dependency of -# another project. For example, the stdlib project is able to integrate with -# the main branch of Puppet by using a Gemfile path of -# https://github.com/puppetlabs/puppet -# -# Please see the [packaging -# repository](https://github.com/puppetlabs/packaging) for information on how -# to build the Puppet gem package. -# -# Make sure these gem requirements are in sync with ext/project_data.yaml and -# the Gemfile - -Gem::Specification.new do |s| - s.name = "puppet" - version = "8.7.0" - mdata = version.match(/(\d+\.\d+\.\d+)/) - s.version = mdata ? mdata[1] : version - - s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") - s.required_ruby_version = Gem::Requirement.new(">= 3.1.0") - s.authors = ["Puppet Labs"] - s.date = "2012-08-17" - s.description = <<~EOF - Puppet, an automated administrative engine for your Linux, Unix, and Windows systems, performs administrative tasks - (such as adding users, installing packages, and updating server configurations) based on a centralized specification. - EOF - s.email = "puppet@puppetlabs.com" - s.executables = ["puppet"] - s.files = ["bin/puppet"] - s.license = "Apache-2.0" - s.homepage = "https://puppetlabs.com" - s.rdoc_options = ["--title", "Puppet - Configuration Management", "--main", "README", "--line-numbers"] - s.require_paths = ["lib"] - s.summary = "Puppet, an automated configuration management tool" - s.specification_version = 3 - s.add_runtime_dependency(%q, [">= 4.3.0", "< 5"]) - s.add_runtime_dependency(%q, "~> 1.0") - s.add_runtime_dependency(%q, ">= 2.1", "< 3") - s.add_runtime_dependency(%q, "~> 2.1") - s.add_runtime_dependency(%q, "~> 1.13") - s.add_runtime_dependency(%q, "~> 1.5") - s.add_runtime_dependency(%q, "~> 1.0") - s.add_runtime_dependency(%q, "~> 1.0") - s.add_runtime_dependency(%q, "~> 1.0") - - # loads platform specific gems like ffi, win32 platform gems - # as additional runtime dependencies - gem_deps_path = File.join(File.dirname(__FILE__), 'ext', 'project_data.yaml') - - # inside of a Vanagon produced package, project_data.yaml does not exist - next unless File.exist?(gem_deps_path) - - # so only load these dependencies from a git clone / bundle install workflow - require 'yaml' - data = YAML.load_file(gem_deps_path) - bundle_platforms = data['bundle_platforms'] - x64_platform = Gem::Platform.local.cpu == 'x64' - data['gem_platform_dependencies'].each_pair do |gem_platform, info| - next if gem_platform == 'x86-mingw32' && x64_platform - next if gem_platform == 'x64-mingw32' && !x64_platform - if bundle_deps = info['gem_runtime_dependencies'] - bundle_platform = bundle_platforms[gem_platform] or raise "Missing bundle_platform" - if bundle_platform == "all" - bundle_deps.each_pair do |name, version| - s.add_runtime_dependency(name, version) - end - else - # important to use .to_s and not .os for the sake of Windows - # .cpu => x64 - # .os => mingw32 - # .to_s => x64-mingw32 - if Gem::Platform.local.to_s == gem_platform - bundle_deps.each_pair do |name, version| - s.add_runtime_dependency(name, version) - end - end - end - end - end -end diff --git a/Gemfile b/Gemfile index 101ad14c1cf..ed574508369 100644 --- a/Gemfile +++ b/Gemfile @@ -12,7 +12,9 @@ def location_for(place, fake_version = nil) end end -# Make sure these gem requirements are in sync with the gempspec and ext/project_data.yaml +# Make sure these gem requirements are in sync with the gempspec. Specifically, +# the runtime_dependencies in puppet.gemspec match the runtime dependencies here +# (like facter, semantic_puppet, and puppet-resource_api) gem "facter", *location_for(ENV['FACTER_LOCATION'] || ["~> 4.3"]) gem "semantic_puppet", *location_for(ENV['SEMANTIC_PUPPET_LOCATION'] || ["~> 1.0"]) @@ -33,6 +35,7 @@ group(:features) do # requires native ldap headers/libs # gem 'ruby-ldap', '~> 0.9', require: false, platforms: [:ruby] gem 'puppetserver-ca', '~> 2.0', require: false + gem 'CFPropertyList', ['>= 3.0.6', '< 4'], require: false end group(:test) do diff --git a/Rakefile b/Rakefile index b03184d7eee..806e1c04dfb 100644 --- a/Rakefile +++ b/Rakefile @@ -45,6 +45,19 @@ task :default do sh %{rake -T} end +namespace :pl_ci do + desc 'Build puppet gems' + task :gem_build do + stdout, stderr, status = Open3.capture3('gem build puppet.gemspec --platform x86-mingw32 && gem build puppet.gemspec --platform x64-mingw32 && gem build puppet.gemspec --platform universal-darwin && gem build puppet.gemspec') + if !status.exitstatus.zero? + puts "Error building facter.gemspec \n#{stdout} \n#{stderr}" + exit(1) + else + puts stdout + end + end +end + task :spec do ENV["LOG_SPEC_ORDER"] = "true" sh %{rspec #{ENV['TEST'] || ENV['TESTS'] || 'spec'}} diff --git a/ext/project_data.yaml b/ext/project_data.yaml index 84487796617..91adc895e4d 100644 --- a/ext/project_data.yaml +++ b/ext/project_data.yaml @@ -1,53 +1,10 @@ --- project: 'puppet' -author: 'Puppet Labs' -email: 'info@puppetlabs.com' -homepage: 'https://github.com/puppetlabs/puppet' -summary: 'Puppet, an automated configuration management tool' -description: 'Puppet, an automated configuration management tool' -version_file: 'lib/puppet/version.rb' -# files and gem_files are space separated lists -files: '[A-Z]* install.rb bin lib conf man examples ext tasks locales' -# Make sure these gem requirements are in sync with the gemspec and Gemfile -gem_files: '[A-Z]* install.rb bin lib conf man examples ext tasks locales' -gem_test_files: -gem_executables: 'puppet' -gem_default_executables: 'puppet' -gem_license: 'Apache-2.0' -gem_forge_project: 'puppet' -gem_required_ruby_version: '>= 3.1.0' -gem_required_rubygems_version: '> 1.3.1' -gem_runtime_dependencies: - facter: ['>= 4.3.0', '< 5'] - semantic_puppet: '~> 1.0' - fast_gettext: ['>= 2.1', '< 3'] - locale: '~> 2.1' - multi_json: '~> 1.13' - puppet-resource_api: '~>1.5' - concurrent-ruby: "~> 1.0" - deep_merge: '~> 1.0' - scanf: '~> 1.0' gem_rdoc_options: - --title - "Puppet - Configuration Management" - --main - README.md - --line-numbers -gem_platform_dependencies: - universal-darwin: - gem_runtime_dependencies: - CFPropertyList: ['>= 3.0.6', '< 4'] - x86-mingw32: - gem_runtime_dependencies: - ffi: '1.15.5' - minitar: '~> 0.9' - x64-mingw32: - gem_runtime_dependencies: - ffi: '1.15.5' - minitar: '~> 0.9' -bundle_platforms: - universal-darwin: all - x86-mingw32: mingw - x64-mingw32: x64_mingw pre_tasks: 'package:apple': 'cfpropertylist' diff --git a/puppet.gemspec b/puppet.gemspec new file mode 100644 index 00000000000..0e2b6a7087c --- /dev/null +++ b/puppet.gemspec @@ -0,0 +1,44 @@ +Gem::Specification.new do |s| + s.name = "puppet" + version = "8.7.0" + mdata = version.match(/(\d+\.\d+\.\d+)/) + s.version = mdata ? mdata[1] : version + s.licenses = ['Apache-2.0'] + + s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") + s.required_ruby_version = Gem::Requirement.new(">= 3.1.0") + s.authors = ["Puppet Labs"] + s.date = "2012-08-17" + s.description = <<~EOF + Puppet, an automated administrative engine for your Linux, Unix, and Windows systems, performs administrative tasks + (such as adding users, installing packages, and updating server configurations) based on a centralized specification. + EOF + s.email = "info@puppetlabs.com" + s.executables = ["puppet"] + s.files = Dir['[A-Z]*'] + Dir['install.rb'] + Dir['bin/*'] + Dir['lib/**/*'] + Dir['conf/*'] + Dir['man/**/*'] + Dir['tasks/*'] + Dir['locales/**/*'] + Dir['ext/**/*'] + Dir['examples/**/*'] + s.license = "Apache-2.0" + s.homepage = "https://github.com/puppetlabs/puppet" + s.rdoc_options = ["--title", "Puppet - Configuration Management", "--main", "README", "--line-numbers"] + s.require_paths = ["lib"] + s.summary = "Puppet, an automated configuration management tool" + s.specification_version = 4 + s.add_runtime_dependency(%q, [">= 4.3.0", "< 5"]) + s.add_runtime_dependency(%q, "~> 1.0") + s.add_runtime_dependency(%q, ">= 2.1", "< 3") + s.add_runtime_dependency(%q, "~> 2.1") + s.add_runtime_dependency(%q, "~> 1.13") + s.add_runtime_dependency(%q, "~> 1.5") + s.add_runtime_dependency(%q, "~> 1.0") + s.add_runtime_dependency(%q, "~> 1.0") + s.add_runtime_dependency(%q, "~> 1.0") + + platform = s.platform.to_s + if platform == 'universal-darwin' + s.add_runtime_dependency('CFPropertyList', ['>= 3.0.6', '< 4']) + end + + if platform == 'x64-mingw32' || platform == 'x86-mingw32' + s.add_runtime_dependency('ffi', '1.15.5') + s.add_runtime_dependency('minitar', '~> 0.9') + end +end diff --git a/spec/unit/provider/user/directoryservice_spec.rb b/spec/unit/provider/user/directoryservice_spec.rb index 14a1183cf0d..80af3bd42b1 100644 --- a/spec/unit/provider/user/directoryservice_spec.rb +++ b/spec/unit/provider/user/directoryservice_spec.rb @@ -4,7 +4,7 @@ module Puppet::Util::Plist end -describe Puppet::Type.type(:user).provider(:directoryservice) do +describe Puppet::Type.type(:user).provider(:directoryservice), :if => Puppet.features.cfpropertylist? do let(:username) { 'nonexistent_user' } let(:user_path) { "/Users/#{username}" } let(:resource) do