Hello community, here is the log from the commit of package dice for openSUSE:Factory checked in at 2015-07-21 13:27:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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-05-27 12:53:02.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.dice.new/dice.changes 2015-07-21 13:29:11.000000000 +0200 @@ -1,0 +2,74 @@ +Mon Jul 20 10:18:19 CEST 2015 - m...@suse.de + +- Fixed packaging + + missing ruby-solv requirement, and broken binary patch to + adapt the gem search path + +------------------------------------------------------------------- +Sun Jul 19 22:31:04 CEST 2015 - m...@suse.de + +- Disable ruby internal buffering for build log + +------------------------------------------------------------------- +Thu Jul 16 14:11:39 CEST 2015 - m...@suse.de + +- Version 0.7.2 + +------------------------------------------------------------------- +Thu Jul 16 14:10:50 CEST 2015 - m...@suse.de + +- Use unique tmp names for building + +------------------------------------------------------------------- +Thu Jul 16 11:36:31 CEST 2015 - m...@suse.de + +- Bind mount docker host tmp dir for building + + It should be avoided to produce big data in the docker storage + backend. We might easily run out of space + +------------------------------------------------------------------- +Thu Jul 16 11:08:39 CEST 2015 - m...@suse.de + +- Stick to the naming conventions of docker + + Use the tag name 'latest' to identify the most recent image + +------------------------------------------------------------------- +Thu Jul 16 10:40:13 CEST 2015 - m...@suse.de + +- Fixed calling commands passed to docker run + + let a shell process evaluate the given parameters + +------------------------------------------------------------------- +Wed Jul 15 13:09:45 CEST 2015 - m...@suse.de + +- Added support for plain docker build system + + The buildsystem will pull the opensuse/kiwi image from dockerhub + to establish a build environment + +------------------------------------------------------------------- +Tue Jul 14 13:22:28 CEST 2015 - m...@suse.de + +- Refactor job command invokation + + Make sure the basic access to the buildsystem is provided by + the buildsystem factory and not created as part of the job. + This allows to run job commands within a buildservice by the + nature of the buildservice and not hard coded to the use + of ssh. This change has been in preparation to add a native + docker build service class + +------------------------------------------------------------------- +Mon Jun 8 10:12:57 CEST 2015 - m...@suse.de + +- Update README + + due to the use of the latest packaging tools for ruby modules the + package was renamed to follow the guidelines. Formerly 'dice' is + now ruby<version>-rubygem-dice-<version>.<arch> + +------------------------------------------------------------------- Old: ---- dice-0.6.1.gem New: ---- dice-0.7.2.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dice.spec ++++++ --- /var/tmp/diff_new_pack.ETNLQd/_old 2015-07-21 13:29:11.000000000 +0200 +++ /var/tmp/diff_new_pack.ETNLQd/_new 2015-07-21 13:29:11.000000000 +0200 @@ -17,7 +17,7 @@ Name: dice -Version: 0.6.1 +Version: 0.7.2 Release: 0 %define mod_name dice %define mod_full_name %{mod_name}-%{version} @@ -94,16 +94,6 @@ rm -rf vendor .bundle Gemfile Gemfile.lock -# Adapt the binary - -# Here we do a surgery on the binary to actually load the bundled gems. This is -# a hack, but it can't be done anywhere else because the binary is generated -# during gem install. -sed -i '/gem/i \ -Gem.path.unshift("%{_libdir}/ruby/gems/%{rb_ver}/gems/%{mod_full_name}/bundle/ruby/%{rb_ver}") - -' bin/%{mod_name} - # Delete devel source ( cd lib/semaphore && rm -f semaphore.cpp Makefile extconf.rb ) @@ -113,6 +103,15 @@ popd +# Adapt the binary +# Here we do a surgery on the binary to actually load the bundled gems. +# This is a hack, but it can't be done anywhere else because the binary +# is generated during gem install. +sed -i '/gem/i \ +Gem.path.unshift("%{_libdir}/ruby/gems/%{rb_ver}/gems/%{mod_full_name}/bundle/ruby/%{rb_ver}") + +' %{buildroot}/usr/bin/dice.ruby*-%{version} + # Convert duplicate files to symlinks %fdupes -s %{buildroot} ++++++ dice-0.6.1.gem -> dice-0.7.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/build_system.rb new/lib/build_system.rb --- old/lib/build_system.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/build_system.rb 2015-07-20 10:19:26.000000000 +0200 @@ -10,6 +10,11 @@ "#{self}: Setting up Vagrant buildsystem" ) build_system = vagrant_build_system + elsif Dice.config.buildhost == Dice::DOCKER_BUILD + Dice.logger.info( + "#{self}: Setting up Docker buildsystem" + ) + build_system = docker_build_system else hostname = Dice.config.buildhost Dice.logger.info( @@ -22,6 +27,10 @@ private + def docker_build_system + DockerBuildSystem.new(recipe) + end + def vagrant_build_system VagrantBuildSystem.new(recipe) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/build_system_base.rb new/lib/build_system_base.rb --- old/lib/build_system_base.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/build_system_base.rb 2015-07-20 10:19:26.000000000 +0200 @@ -4,8 +4,6 @@ abstract_method :up abstract_method :provision abstract_method :halt - abstract_method :get_port - abstract_method :get_ip abstract_method :is_busy? abstract_method :get_lockfile @@ -53,6 +51,18 @@ @job ||= Job.new(self) end + def job_builder_command(action) + command = [ + "ssh", + "-o", "StrictHostKeyChecking=no", + "-p", port, + "-i", private_key_path, + "#{user}@#{host}", + "sudo #{action}" + ] + command + end + def import_build_options build_options_file = recipe.basepath + "/" + Dice::META + "/" + Dice::BUILD_OPTS_FILE @@ -68,6 +78,23 @@ end end + def private_key_path + Dice.config.ssh_private_key + end + + def port + port = "22" + port + end + + def host + Dice.config.buildhost + end + + def user + Dice.config.ssh_user + end + private def semaphore_id diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/connection.rb new/lib/connection.rb --- old/lib/connection.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/connection.rb 2015-07-20 10:19:26.000000000 +0200 @@ -10,6 +10,11 @@ "#{self}: Connecting to Vagrant virtualized buildsystem" ) connection = vagrant_connection + elsif Dice.config.buildhost == Dice::DOCKER_BUILD + Dice.logger.info( + "#{self}: Connecting to Docker container" + ) + connection = docker_connection else hostname = Dice.config.buildhost Dice.logger.info( @@ -22,6 +27,10 @@ private + def docker_connection + ConnectionDockerBuildSystem.new(recipe) + end + def vagrant_connection ConnectionVagrantBuildSystem.new(recipe) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/connection_docker_build_system.rb new/lib/connection_docker_build_system.rb --- old/lib/connection_docker_build_system.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/connection_docker_build_system.rb 2015-07-20 10:19:26.000000000 +0200 @@ -0,0 +1,9 @@ +class ConnectionDockerBuildSystem < ConnectionBase + def ssh + container_name = recipe.build_name_from_path + Dice.logger.info( + "#{self.class}: Attaching to docker container #{container_name}..." + ) + exec("docker exec -ti #{container_name} bash") + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/constants.rb new/lib/constants.rb --- old/lib/constants.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/constants.rb 2015-07-20 10:19:26.000000000 +0200 @@ -1,6 +1,10 @@ module Dice ROOT = File.expand_path("..", File.dirname(__FILE__)) VAGRANT_BUILD = :VAGRANT + DOCKER_BUILD = :DOCKER + + DOCKER_BUILD_CONTAINER = "schaefi/kiwi-build-box:latest" + SSH_USER = "vagrant" SSH_PRIVATE_KEY_PATH = File.join(ROOT, "key/vagrant") 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-07-20 10:19:26.000000000 +0200 @@ -31,6 +31,7 @@ require_relative "build_system_base" require_relative "build_system" require_relative "vagrant_build_system" +require_relative "docker_build_system" require_relative "host_build_system" require_relative "job" require_relative "solver" @@ -41,6 +42,7 @@ require_relative "connection_base" require_relative "connection_host_build_system" require_relative "connection_vagrant_build_system" +require_relative "connection_docker_build_system" require_relative "connection_task" require_relative "build_scheduler" require_relative "kiwi_config" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/docker_build_system.rb new/lib/docker_build_system.rb --- old/lib/docker_build_system.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/docker_build_system.rb 2015-07-20 10:19:26.000000000 +0200 @@ -0,0 +1,92 @@ +class DockerBuildSystem < BuildSystemBase + def get_lockfile + # set a recipe specific lock + # building the same recipe multiple times is possible if the + # buildsystem is a container or a vm but not useful. Thus we + # prevent that by a recipe lock + lock = recipe.basepath + "/" + Dice::META + "/" + Dice::LOCK + lock + end + + def up + Dice.logger.info( + "#{self.class}: Pulling buildsystem from dockerhub #{recipe.basepath}..." + ) + begin + up_output = Command.run( + "docker", "pull", Dice::DOCKER_BUILD_CONTAINER, :stdout => :capture + ) + rescue Cheetah::ExecutionFailed => e + raise Dice::Errors::DockerPullFailed.new( + "Pulling #{Dice::DOCKER_BUILD_CONTAINER} failed with: #{e.stderr}" + ) + end + Dice.logger.info("#{self.class}: #{up_output}") + end + + def provision + # provision a docker container is done when running the job + # by bind mounting host volumes to the container. There is + # no syncing of folders required at this stage + nil + end + + def halt + container_name = recipe.build_name_from_path + Dice.logger.info("#{self.class}: Delete container...") + begin + Command.run("docker", "inspect", container_name) + rescue Cheetah::ExecutionFailed + # given container is already gone, no action needed + recipe.reset_working_dir + return + end + begin + halt_output = Command.run( + "docker", "rm", container_name, :stdout => :capture + ) + rescue Cheetah::ExecutionFailed => e + Dice.logger.error( + "#{self.class}: Deletion of container failed with: #{e.stderr}" + ) + end + Dice.logger.info("#{self.class}: #{halt_output}") + recipe.reset_working_dir + end + + def job_builder_command(action) + container_name = recipe.build_name_from_path + command = [ + "docker", "run", + "--rm=true", + "--entrypoint=sudo", + "--privileged=true", + "--name=#{container_name}", + "-v", "#{recipe.basepath}:/vagrant", + "-v", "/tmp:/tmp", + Dice::DOCKER_BUILD_CONTAINER, + "bash", "-c", action + ] + command + end + + def port + # the docker container is not accessed via ssh + nil + end + + def host + # the docker container is not accessed via ssh + nil + end + + def private_key_path + # the docker container is not accessed via ssh + nil + end + + def is_busy? + # docker container is never busy, because started by us + false + end +end 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-07-20 10:19:26.000000000 +0200 @@ -36,5 +36,6 @@ class MountISOFailed < DiceError; end class GetSSHPrivateKeyPathFailed < DiceError; end class UriNotFound < DiceError; end + class DockerPullFailed < DiceError; end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/host_build_system.rb new/lib/host_build_system.rb --- old/lib/host_build_system.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/host_build_system.rb 2015-07-20 10:19:26.000000000 +0200 @@ -1,11 +1,4 @@ class HostBuildSystem < BuildSystemBase - attr_reader :host, :user - - def post_initialize - @host = Dice.config.buildhost - @user = Dice.config.ssh_user - end - def get_lockfile # set a global lock for the used worker host # running multiple builds in parallel on one host is not supported @@ -31,7 +24,7 @@ ssh_options = "-o StrictHostKeyChecking=no -o NumberOfPasswordPrompts=0" provision_output = Command.run( "rsync", "-e", - "ssh #{ssh_options} -i #{get_private_key_path}", + "ssh #{ssh_options} -i #{private_key_path}", "--rsync-path", "sudo rsync", "-z", "-a", "-v", "--delete", "--exclude", ".*", ".", "#{user}@#{host}:/vagrant", :stdout => :capture @@ -53,7 +46,7 @@ "ssh", "-o", "StrictHostKeyChecking=no", "-o", "NumberOfPasswordPrompts=0", - "-i", get_private_key_path, "#{user}@#{host}", + "-i", private_key_path, "#{user}@#{host}", "sudo", "killall", "kiwi" ) rescue Cheetah::ExecutionFailed => e @@ -62,19 +55,6 @@ recipe.reset_working_dir end - def get_port - port = "22" - port - end - - def get_ip - host - end - - def get_private_key_path - Dice.config.ssh_private_key - end - def is_busy? busy = true begin @@ -82,7 +62,7 @@ "ssh", "-o", "StrictHostKeyChecking=no", "-o", "NumberOfPasswordPrompts=0", - "-i", get_private_key_path, "#{user}@#{host}", + "-i", private_key_path, "#{user}@#{host}", "sudo", "pidof", "-x", "kiwi" ) rescue Cheetah::ExecutionFailed => e diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/job.rb new/lib/job.rb --- old/lib/job.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/job.rb 2015-07-20 10:19:26.000000000 +0200 @@ -1,22 +1,20 @@ class Job - attr_reader :job_user - attr_reader :build_log, :archive, :buildsystem, :ip, :port + attr_reader :build_log, :archive, :buildsystem, :job_name, :bundle_name def initialize(buildsystem) @buildsystem = buildsystem - @job_user = Dice.config.ssh_user @build_log = buildsystem.recipe.basepath + "/" + Dice::META + "/" + Dice::BUILD_LOG - @archive = buildsystem.recipe.basepath + "/" + + @archive = buildsystem.recipe.basepath + "/" + Dice::META + "/" + Dice::BUILD_RESULT - @ip = buildsystem.get_ip - @port = buildsystem.get_port + @job_name = Dir::Tmpname.make_tmpname(['kiwi_build_', '.dice'], nil) + @bundle_name = Dir::Tmpname.make_tmpname(['kiwi_bundle_', '.dice'], nil) end def build prepare_build Dice.logger.info("#{self.class}: Building...") - build_opts = "--build /vagrant -d /tmp/image --logfile terminal" + build_opts = "--build /vagrant -d /tmp/#{job_name} --logfile terminal" if Dice.option.kiwitype build_opts += " --type #{Dice.option.kiwitype}" end @@ -24,17 +22,18 @@ build_opts += " --add-profile #{Dice.option.kiwiprofile}" end logfile = File.open(build_log, "w") + logfile.sync = true + kiwi_command = "/usr/sbin/kiwi #{build_opts}" begin Command.run( - "ssh", "-o", "StrictHostKeyChecking=no", "-p", port, - "-i", buildsystem.get_private_key_path, "#{job_user}@#{ip}", - "sudo /usr/sbin/kiwi #{build_opts}", + buildsystem.job_builder_command(kiwi_command), :stdout => logfile, :stderr => logfile ) rescue Cheetah::ExecutionFailed => e Dice.logger.info("#{self.class}: Build failed") logfile.close + cleanup_build raise Dice::Errors::BuildFailed.new( "Build failed for details check: #{build_log}" ) @@ -45,19 +44,20 @@ def bundle Dice.logger.info("#{self.class}: Bundle results...") logfile = File.open(build_log, "a") - bundle_opts = "--bundle-build /tmp/image --bundle-id DiceBuild " + - "--destdir /tmp/bundle --logfile terminal" + logfile.sync = true + bundle_opts = "--bundle-build /tmp/#{job_name} --bundle-id DiceBuild " + + "--destdir /tmp/#{bundle_name} --logfile terminal" + kiwi_command = "/usr/sbin/kiwi #{bundle_opts}" begin Command.run( - "ssh", "-o", "StrictHostKeyChecking=no", "-p", port, - "-i", buildsystem.get_private_key_path, "#{job_user}@#{ip}", - "sudo /usr/sbin/kiwi #{bundle_opts}", + buildsystem.job_builder_command(kiwi_command), :stdout => logfile, :stderr => logfile ) rescue Cheetah::ExecutionFailed => e Dice.logger.info("#{self.class}: Bundler failed") logfile.close + cleanup_build raise Dice::Errors::BuildFailed.new( "Bundle result failed for details check: #{build_log}" ) @@ -68,20 +68,21 @@ def get_result Dice.logger.info("#{self.class}: Retrieving results in #{archive}...") result = File.open(archive, "w") + result_command = "tar --exclude image-root -C /tmp/#{bundle_name} -c ." begin Command.run( - "ssh", "-o", "StrictHostKeyChecking=no", "-p", port, - "-i", buildsystem.get_private_key_path, "#{job_user}@#{ip}", - "sudo tar --exclude image-root -C /tmp/bundle -c .", + buildsystem.job_builder_command(result_command), :stdout => result ) rescue Cheetah::ExecutionFailed => e Dice.logger.info("#{self.class}: Archiving failed") result.close + cleanup_build raise Dice::Errors::ResultRetrievalFailed.new( "Archiving result failed with: #{e.stderr}" ) end + cleanup_build result.close end @@ -90,11 +91,10 @@ def prepare_build Dice.logger.info("#{self.class}: Preparing build...") FileUtils.rm(archive) if File.file?(archive) + prepare_command = "rm -rf /tmp/kiwi_*.dice /var/lock/kiwi-init.lock" begin Command.run( - "ssh", "-o", "StrictHostKeyChecking=no", "-p", port, - "-i", buildsystem.get_private_key_path, "#{job_user}@#{ip}", - "sudo rm -rf /tmp/image /tmp/bundle /var/lock/kiwi-init.lock" + buildsystem.job_builder_command(prepare_command) ) rescue Cheetah::ExecutionFailed => e Dice.logger.info("#{self.class}: Preparation failed") @@ -103,4 +103,16 @@ ) end end + + def cleanup_build + Dice.logger.info("#{self.class}: Cleanup build...") + cleanup_command = "rm -rf /tmp/#{job_name} /tmp/#{bundle_name}" + begin + Command.run( + buildsystem.job_builder_command(cleanup_command) + ) + rescue Cheetah::ExecutionFailed => e + Dice.logger.info("#{self.class}: Cleanup failed with: #{e.stderr}") + end + end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/recipe.rb new/lib/recipe.rb --- old/lib/recipe.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/recipe.rb 2015-07-20 10:19:26.000000000 +0200 @@ -60,6 +60,11 @@ end end + def build_name_from_path + name = basepath.gsub("/", "_").sub(/^_/, "") + name + end + private def get_cwd 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-07-20 10:19:26.000000000 +0200 @@ -70,7 +70,7 @@ @recipe.reset_working_dir end - def get_port + def port port = nil if ssh_output =~ /Executing SSH.*\-p.*\"(\d+)\".*/ port = $1 @@ -85,7 +85,7 @@ port end - def get_ip + def host ip = nil if ssh_output =~ /Executing SSH.*@(.*?)\".*/ ip = $1 @@ -100,7 +100,7 @@ ip end - def get_private_key_path + def private_key_path pkey = nil if ssh_output =~ /Executing SSH.*\-i.*\"(\/.*?)\".*/ pkey = $1 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-07-20 10:19:26.000000000 +0200 @@ -1,3 +1,3 @@ module Dice - VERSION = "0.6.1" + VERSION = "0.7.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-07-20 10:19:26.000000000 +0200 @@ -1,111 +1,111 @@ --- !ruby/object:Gem::Specification name: dice version: !ruby/object:Gem::Version - version: 0.6.1 + version: 0.7.2 platform: ruby authors: - SUSE autorequire: bindir: bin cert_chain: [] -date: 2015-05-19 00:00:00.000000000 Z +date: 2015-07-20 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,47 +122,49 @@ extensions: [] extra_rdoc_files: [] files: -- lib/connection_vagrant_build_system.rb -- lib/repository_plaindir.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/uri.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_docker_build_system.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/docker_build_system.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_plaindir.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 -- COPYING +- lib/solver.rb +- lib/uri.rb +- lib/vagrant_build_system.rb +- lib/version.rb homepage: https://github.com/schaefi/dice/ licenses: - GPL-3.0 @@ -173,17 +175,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 ++++++ gem2rpm.yml ++++++ --- /var/tmp/diff_new_pack.ETNLQd/_old 2015-07-21 13:29:12.000000000 +0200 +++ /var/tmp/diff_new_pack.ETNLQd/_new 2015-07-21 13:29:12.000000000 +0200 @@ -47,9 +47,9 @@ # :post: |- # /bin/echo foo # ## used by gem_packages -# :main: -# :preamble: |- -# Requires: util-linux +:main: + :preamble: |- + Requires: ruby-solv # Recommends: pwgen # :filelist: |- # /usr/bin/gem2rpm-opensuse