Hello community, here is the log from the commit of package dice for openSUSE:Factory checked in at 2015-02-27 10:59:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dice (Old) and /work/SRC/openSUSE:Factory/.dice.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "dice" Changes: -------- --- /work/SRC/openSUSE:Factory/dice/dice.changes 2015-02-05 10:59:40.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.dice.new/dice.changes 2015-02-27 10:59:03.000000000 +0100 @@ -1,0 +2,61 @@ +Tue Feb 17 17:07:41 CET 2015 - ms@suse.de + +- Fixed use of dir:// uri type + + The check if the uri is a remote or local uri was missing + in the repository type checker. This lead to a wrong location + passed to the open call if the dir:// type was used + +------------------------------------------------------------------- +Mon Feb 16 17:35:13 CET 2015 - ms@suse.de + +- Added Uri class to control access + + Simple uri's like local paths or remote locations via http + doesn't require a pre processing. However there are more + complex uri's like the path to an iso which requires to + loop mount the device prior to use it. It's also required to + cleanup the state of such devices properly. It also makes + sense to ask an Uri class if the resource is remote or + local and maybe more useful messages can be passed to an + Uri object in the future + +------------------------------------------------------------------- +Fri Feb 13 16:14:32 CET 2015 - ms@suse.de + +- Increase version to v0.5.2 + +------------------------------------------------------------------- +Fri Feb 13 16:13:05 CET 2015 - ms@suse.de + +- Fixed use of local repositories + + In order to allow curl to load local files the + mime type file:// must be prepended + +------------------------------------------------------------------- +Thu Feb 12 17:00:09 CET 2015 - ms@suse.de + +- Support dir:// and just path /... uri types + +------------------------------------------------------------------- +Thu Feb 5 16:15:26 CET 2015 - ms@suse.de + +- Update documentation + +------------------------------------------------------------------- +Thu Feb 5 16:11:58 CET 2015 - ms@suse.de + +- Fixed documentation references + +------------------------------------------------------------------- +Thu Feb 5 16:10:23 CET 2015 - ms@suse.de + +- Documentation style fixes + +------------------------------------------------------------------- +Thu Feb 5 16:08:10 CET 2015 - ms@suse.de + +- Update documentation + +------------------------------------------------------------------- Old: ---- dice-0.5.0.gem New: ---- dice-0.5.2.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dice.spec ++++++ --- /var/tmp/diff_new_pack.wNjE62/_old 2015-02-27 10:59:04.000000000 +0100 +++ /var/tmp/diff_new_pack.wNjE62/_new 2015-02-27 10:59:04.000000000 +0100 @@ -1,6 +1,7 @@ +# # spec file for package dice # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -13,8 +14,10 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + + Name: dice -Version: 0.5.0 +Version: 0.5.2 Release: 0 %define mod_name dice %define mod_full_name %{mod_name}-%{version} @@ -22,32 +25,32 @@ %define mod_weight 1 BuildRoot: %{_tmppath}/%{name}-%{version}-build -BuildRequires: ruby-macros >= 1 BuildRequires: fdupes -BuildRequires: ruby-devel BuildRequires: gcc-c++ +BuildRequires: ruby-devel +BuildRequires: ruby-macros >= 1 %if %suse_version == 1315 %define rb_build_versions %{rb_default_ruby} BuildRequires: %{rubydevel} -BuildRequires: %{rubygem rice} -BuildRequires: %{rubygem gem2rpm} +BuildRequires: %{rubygem abstract_method >= 1.2.1} BuildRequires: %{rubygem bundler} BuildRequires: %{rubygem cheetah >= 0.4.0} -BuildRequires: %{rubygem gli >= 2.11.0} +BuildRequires: %{rubygem gem2rpm} BuildRequires: %{rubygem gli <= 2.12} -BuildRequires: %{rubygem abstract_method >= 1.2.1} -BuildRequires: %{rubygem json >= 1.8.0} +BuildRequires: %{rubygem gli >= 2.11.0} BuildRequires: %{rubygem inifile >= 2.0.2} +BuildRequires: %{rubygem json >= 1.8.0} +BuildRequires: %{rubygem rice} %else -BuildRequires: rubygem(gem2rpm) +BuildRequires: rubygem(abstract_method) >= 1.2.1 BuildRequires: rubygem(bundler) -BuildRequires: rubygem(rice) BuildRequires: rubygem(cheetah) >= 0.4.0 -BuildRequires: rubygem(gli) >= 2.11.0 +BuildRequires: rubygem(gem2rpm) BuildRequires: rubygem(gli) <= 2.12 -BuildRequires: rubygem(abstract_method) >= 1.2.1 -BuildRequires: rubygem(json) >= 1.8.0 +BuildRequires: rubygem(gli) >= 2.11.0 BuildRequires: rubygem(inifile) >= 2.0.2 +BuildRequires: rubygem(json) >= 1.8.0 +BuildRequires: rubygem(rice) %endif # Disable autogenerating "Requires:" headers for bundled gems. %define __requires_exclude ^rubygem ++++++ dice-0.5.0.gem -> dice-0.5.2.gem ++++++ Files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/dice.rb new/lib/dice.rb --- old/lib/dice.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/dice.rb 2015-02-17 17:11:00.000000000 +0100 @@ -15,6 +15,7 @@ require "inifile" require "time" +require_relative "uri" require_relative "cleaner" require_relative "semaphore/semaphore" require_relative "dice_options" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/exceptions.rb new/lib/exceptions.rb --- old/lib/exceptions.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/exceptions.rb 2015-02-17 17:11:00.000000000 +0100 @@ -31,5 +31,8 @@ class SemaphoreSemGetFailed < DiceError; end class EmptyOptions < DiceError; end class ActiveSemaphoreLock < DiceError; end + class UriStyleMatchFailed < DiceError; end + class UriTypeUnknown < DiceError; end + class MountISOFailed < DiceError; end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kiwi_config.rb new/lib/kiwi_config.rb --- old/lib/kiwi_config.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/kiwi_config.rb 2015-02-17 17:11:00.000000000 +0100 @@ -10,9 +10,10 @@ def repos repo_uri = [] xml.elements.each("*/repository/source") do |element| - repo_uri << KiwiUri.translate(element.attributes["path"].gsub(/\?.*/,"")) + source_path = element.attributes["path"].gsub(/\?.*/,"") + repo_uri << KiwiUri.translate(source_path) end - repo_uri.sort.uniq + repo_uri end def packages diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/kiwi_uri.rb new/lib/kiwi_uri.rb --- old/lib/kiwi_uri.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/kiwi_uri.rb 2015-02-17 17:11:00.000000000 +0100 @@ -1,18 +1,18 @@ class KiwiUri class << self def translate(uri) + # normalize url types available in a kiwi configuration into + # standard mime types. This also includes resolving open build + # service resource locator into http addresses case uri when /^obs:\/\/(\d.*)/ # distribution URL, starting with the number e.g 13.1 uri = "http://download.opensuse.org/distribution/#{$1}/" - when /^http/ - # no translation for http and https required - else - raise Dice::Errors::UriTypeUnknown.new( - "URI style #{uri} unknown" - ) + when /^(\/.*)/ + # Simple path, should be a distribution dir + uri = "dir://#{$1}/" end - uri + Uri.new(uri) end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/repository.rb new/lib/repository.rb --- old/lib/repository.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/repository.rb 2015-02-17 17:11:00.000000000 +0100 @@ -5,7 +5,7 @@ def solvable(uri) @uri = uri repo = nil - case repotype(uri) + case repotype when Dice::RepoType::RpmMd repo = rpmmd_repo when Dice::RepoType::SUSE @@ -16,18 +16,42 @@ private - def repotype(uri) + def repotype + location = uri.location + if uri.is_remote? + # We use the uri.name as location because because ruby's + # open-uri implementation understands remote mime types + location = uri.name + end + + if uri.is_iso? + location = uri.map_loop + end + + lookup_locations = Hash.new + lookup_locations["/suse/setup/descr/directory.yast"] = + Dice::RepoType::SUSE + lookup_locations["/repodata/repomd.xml.key"] = + Dice::RepoType::RpmMd + repotype = nil - begin - open(uri + "/repodata/repomd.xml.key", "rb") - repotype = Dice::RepoType::RpmMd - rescue - open(uri + "/suse/setup/descr/directory.yast", "rb") - repotype = Dice::RepoType::SUSE + lookup_locations.each do |indicator, type| + begin + handle = open(location + indicator, "rb") + repotype = type + handle.close + rescue + # ignore if open failed, result handled later + end + end + + if uri.is_iso? + uri.unmap_loop end + if !repotype raise Dice::Errors::RepoTypeUnknown.new( - "repo type detection failed for uri: #{uri}" + "repo type detection failed for uri: #{uri.name}" ) end repotype diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/repository_base.rb new/lib/repository_base.rb --- old/lib/repository_base.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/repository_base.rb 2015-02-17 17:11:00.000000000 +0100 @@ -8,13 +8,31 @@ end def load_file(source) + data = nil + location = uri.location + if uri.is_iso? + location = uri.map_loop + elsif uri.is_remote? + # uses ruby's openuri implementation to handle mime types + # Thus loading small amount of data from a network location + # can also be done with load_file instead of curl_file and + # directly reads the data into a variable instead of creating + # an output file like curl_file does + location = uri.name + end begin - open(uri + "/" + source, "rb").read + handle = open(location + "/" + source, "rb") + data = handle.read + handle.close rescue => e raise Dice::Errors::UriLoadFileFailed.new( - "Downloading file: #{uri}/#{source} failed: #{e}" + "Downloading file: #{location}/#{source} failed: #{e}" ) end + if uri.is_iso? + uri.unmap_loop + end + data end def curl_file(args) @@ -22,14 +40,23 @@ dest = args[:dest] FileUtils.mkdir_p(File.dirname(dest)) outfile = File.open(dest, "wb") + location = uri.name + if uri.is_iso? + location = "file://" + uri.map_loop + elsif !uri.is_remote? + location = "file://" + uri.location + end begin - Command.run("curl", "-L", uri + "/" + source, :stdout => outfile) + Command.run("curl", "-L", location + "/" + source, :stdout => outfile) rescue Cheetah::ExecutionFailed => e raise Dice::Errors::CurlFileFailed.new( - "Downloading file: #{uri}/#{source} failed: #{e.stderr}" + "Downloading file: #{location}/#{source} failed: #{e.stderr}" ) end outfile.close + if uri.is_iso? + uri.unmap_loop + end check_404_header(source, dest) end @@ -73,7 +100,7 @@ time.write(timestamp) time.close info = File.open(@@kiwi_solv + "/" + meta.info, "wb") - info.write(uri) + info.write(uri.name) info.close meta.solv end @@ -92,10 +119,10 @@ def solv_meta meta = OpenStruct.new - meta.solv = Digest::MD5.hexdigest(uri) + meta.solv = Digest::MD5.hexdigest(uri.name) meta.time = meta.solv + ".timestamp" meta.info = meta.solv + ".info" - meta.uri = uri + meta.uri = uri.name meta end @@ -105,7 +132,7 @@ end def cleanup - FileUtils.rm_rf @tmp_dir if defined?(tmp_dir) + FileUtils.rm_rf tmp_dir if tmp_dir end private @@ -118,7 +145,7 @@ outfile.close if header =~ /404 Not Found/ raise Dice::Errors::CurlFileFailed.new( - "Downloading file: #{uri}/#{source} failed: 404 not found" + "Downloading file: #{uri.name}/#{source} failed: 404 not found" ) end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/solver.rb new/lib/solver.rb --- old/lib/solver.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/solver.rb 2015-02-17 17:11:00.000000000 +0100 @@ -72,7 +72,7 @@ def setup_pool pool.setarch kiwi_config.repos.each do |uri| - solv = pool.add_repo uri + solv = pool.add_repo uri.name solv.add_solv Repository.solvable(uri) pool.addfileprovides pool.createwhatprovides diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/uri.rb new/lib/uri.rb --- old/lib/uri.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/uri.rb 2015-02-17 17:11:00.000000000 +0100 @@ -0,0 +1,97 @@ +class Uri + attr_reader :name, :type, :location + attr_reader :allowed_local_types, :allowed_remote_types + attr_reader :mount_point + + def initialize(name) + @name = name + set_type_and_location + + @allowed_remote_types = OpenStruct.new + @allowed_local_types = OpenStruct.new + + allowed_remote_types.http = true + allowed_remote_types.https = true + allowed_remote_types.ftp = true + + allowed_local_types.iso = true + allowed_local_types.dir = true + + type_ok? + end + + def is_remote? + remote_location = false + if allowed_remote_types[type] + remote_location = true + end + remote_location + end + + def is_iso? + iso_file = false + if type == 'iso' + iso_file = true + end + iso_file + end + + def map_loop + @mount_point ||= mount_loop + end + + def unmap_loop + if mount_point + umount_loop(mount_point) + @mount_point = nil + end + end + + private + + def umount_loop(mount_dir) + begin + Command.run("sudo", "-n", "umount", mount_dir) + rescue Cheetah::ExecutionFailed => e + Dice.logger.error( + "Umounting #{mount_dir} failed: #{e.stderr}" + ) + end + begin + FileUtils.rmdir(mount_dir) + rescue + # ignore if tmpdir remove failed + end + end + + def mount_loop + mount_dir = Dir.mktmpdir + begin + Command.run("sudo", "-n", "mount", location, mount_dir) + rescue Cheetah::ExecutionFailed => e + raise Dice::Errors::MountISOFailed.new( + "Mounting #{location} failed: #{e.stderr}" + ) + end + mount_dir + end + + def set_type_and_location + if name =~ /^(.*):\/\/(.*)/ + @type = "#{$1}" + @location = "#{$2}" + else + raise Dice::Errors::UriStyleMatchFailed.new( + "Can't find resource type/location in #{name}" + ) + end + end + + def type_ok? + if !allowed_local_types[type] && !allowed_remote_types[type] + raise Dice::Errors::UriTypeUnknown.new( + "URI style #{name} unknown" + ) + end + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/vagrant_build_system.rb new/lib/vagrant_build_system.rb --- old/lib/vagrant_build_system.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/vagrant_build_system.rb 2015-02-17 17:11:00.000000000 +0100 @@ -60,8 +60,8 @@ begin halt_output = Command.run("vagrant", "halt", "-f", :stdout => :capture) rescue Cheetah::ExecutionFailed => e - raise Dice::Errors::VagrantHaltFailed.new( - "System stop failed with: #{e.stderr}" + Dice.logger.error( + "#{self.class}: System stop failed with: #{e.stderr}" ) end Dice.logger.info("#{self.class}: #{halt_output}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/version.rb new/lib/version.rb --- old/lib/version.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/version.rb 2015-02-17 17:11:00.000000000 +0100 @@ -1,3 +1,3 @@ module Dice - VERSION = "0.5.0" + VERSION = "0.5.2" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 1970-01-01 01:00:00.000000000 +0100 +++ new/metadata 2015-02-17 17:11:00.000000000 +0100 @@ -1,111 +1,111 @@ --- !ruby/object:Gem::Specification name: dice version: !ruby/object:Gem::Version - version: 0.5.0 + version: 0.5.2 platform: ruby authors: - SUSE autorequire: bindir: bin cert_chain: [] -date: 2015-01-04 00:00:00.000000000 Z +date: 2015-02-17 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: cheetah requirement: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: 0.4.0 type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: 0.4.0 - !ruby/object:Gem::Dependency name: gli requirement: !ruby/object:Gem::Requirement requirements: - - - ~> + - - "~>" - !ruby/object:Gem::Version version: 2.11.0 type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - - ~> + - - "~>" - !ruby/object:Gem::Version version: 2.11.0 - !ruby/object:Gem::Dependency name: abstract_method requirement: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: 1.2.1 type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: 1.2.1 - !ruby/object:Gem::Dependency name: json requirement: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: 1.8.0 type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: 1.8.0 - !ruby/object:Gem::Dependency name: inifile requirement: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: 2.0.2 type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: 2.0.2 - !ruby/object:Gem::Dependency name: rake requirement: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: packaging_rake_tasks requirement: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: '0' description: "\n Given there is the need to build a kiwi appliance for a customer,\n @@ -122,61 +122,62 @@ extensions: [] extra_rdoc_files: [] files: -- lib/connection_vagrant_build_system.rb -- lib/kiwi_config.rb -- lib/dice_options.rb -- lib/build_system.rb +- COPYING +- bin/dice +- completion/dice.sh +- key/vagrant - lib/build_scheduler.rb -- lib/repository_suse.rb +- lib/build_status.rb +- lib/build_system.rb - lib/build_system_base.rb -- lib/connection_host_build_system.rb +- lib/build_task.rb - lib/cleaner.rb -- lib/dice_logger.rb -- lib/repository_base.rb +- lib/cli.rb +- lib/colorstring.rb +- lib/config.rb +- lib/connection.rb - lib/connection_base.rb -- lib/build_status.rb -- lib/host_build_system.rb -- lib/exceptions.rb +- lib/connection_host_build_system.rb - lib/connection_task.rb -- lib/cli.rb -- lib/logger.rb +- lib/connection_vagrant_build_system.rb +- lib/constants.rb - lib/dice.rb +- lib/dice_logger.rb +- lib/dice_options.rb +- lib/exceptions.rb +- lib/host_build_system.rb +- lib/job.rb +- lib/kiwi_config.rb - lib/kiwi_uri.rb -- lib/run_command.rb -- lib/config.rb -- lib/version.rb +- lib/logger.rb - lib/recipe.rb -- lib/connection.rb -- lib/build_task.rb +- lib/repository.rb +- lib/repository_base.rb - lib/repository_rpmmd.rb -- lib/vagrant_build_system.rb -- lib/constants.rb +- lib/repository_suse.rb +- lib/run_command.rb - lib/semaphore/extconf.rb -- lib/job.rb -- lib/colorstring.rb -- lib/solver.rb -- lib/repository.rb - lib/semaphore/semaphore.cpp -- bin/dice -- completion/dice.sh -- key/vagrant -- recipes/suse-13.2-JeOS/root/etc/motd -- recipes/suse-13.2-JeOS/config.xml -- recipes/suse-13.2-JeOS/config.sh +- lib/solver.rb +- lib/uri.rb +- lib/vagrant_build_system.rb +- lib/version.rb +- recipes/suse-13.1-JeOS/Dicefile +- recipes/suse-13.1-JeOS/Vagrantfile +- recipes/suse-13.1-JeOS/config.sh +- recipes/suse-13.1-JeOS/config.xml +- recipes/suse-13.1-JeOS/root/etc/motd - recipes/suse-13.2-JeOS/Dicefile +- recipes/suse-13.2-JeOS/config.sh +- recipes/suse-13.2-JeOS/config.xml +- recipes/suse-13.2-JeOS/root/etc/motd +- recipes/suse-SLE12-JeOS/Dicefile - recipes/suse-SLE12-JeOS/Vagrantfile -- recipes/suse-SLE12-JeOS/root/etc/udev/rules.d/70-persistent-net.rules -- recipes/suse-SLE12-JeOS/root/etc/sysconfig/network/ifcfg-lan0 -- recipes/suse-SLE12-JeOS/root/etc/motd -- recipes/suse-SLE12-JeOS/config.xml - recipes/suse-SLE12-JeOS/config.sh -- recipes/suse-SLE12-JeOS/Dicefile -- recipes/suse-13.1-JeOS/Vagrantfile -- recipes/suse-13.1-JeOS/root/etc/motd -- recipes/suse-13.1-JeOS/config.xml -- recipes/suse-13.1-JeOS/config.sh -- recipes/suse-13.1-JeOS/Dicefile -- COPYING +- recipes/suse-SLE12-JeOS/config.xml +- recipes/suse-SLE12-JeOS/root/etc/motd +- recipes/suse-SLE12-JeOS/root/etc/sysconfig/network/ifcfg-lan0 +- recipes/suse-SLE12-JeOS/root/etc/udev/rules.d/70-persistent-net.rules homepage: https://github.com/schaefi/dice/ licenses: - GPL-3.0 @@ -187,17 +188,17 @@ - lib required_ruby_version: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: '0' required_rubygems_version: !ruby/object:Gem::Requirement requirements: - - - '>=' + - - ">=" - !ruby/object:Gem::Version version: 1.3.6 requirements: [] rubyforge_project: dice -rubygems_version: 2.0.3 +rubygems_version: 2.2.2 signing_key: specification_version: 4 summary: light weight image build system -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org