bernd / fpm-cookery

A tool for building software packages with fpm.
Other
460 stars 88 forks source link

Cache broken with symlinks #180

Open NikolausDemmel opened 7 years ago

NikolausDemmel commented 7 years ago

I have the following recipe:

class ZenocamUdevRules < FPM::Cookery::DirRecipe
  description 'udev rules for the ZenoCam'

  name     'zenocam-udev-rules'
  version  '1.0.0'
  revision '0'
  arch     'all'

  section   "non-free"
  maintainer "Nikolaus Demmel <Nikolaus.Demmel@de.bosch.com>"

  source File.join("#{Dir.pwd}/rules.d/"),
    :with => 'directory'

  def build
  end

  def install
    etc('udev/rules.d').install Dir['*']
  end
end

First build is fine, but if cache exists:

$ fpm-cook
===> Starting package creation for zenocam-udev-rules-1.0.0 (ubuntu, deb)
===> 
===> Verifying build_depends and depends with Puppet
===> All build_depends and depends packages installed
===> Fetching source: 
===> Copying /home/den2pal/work/fpm/fpm-recipes-zenocam/zenocam-udev-rules/rules.d/. to cache
/home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:1374:in `symlink': File exists @ sys_fail2 - (/dev/null, /home/den2pal/work/fpm/fpm-recipes-zenocam/zenocam-udev-rules/cache/./75-persistent-net-generator.rules) (Errno::EEXIST)
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:1374:in `copy'
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:469:in `block in copy_entry'
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:1500:in `call'
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:1500:in `wrap_traverse'
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:1503:in `block in wrap_traverse'
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:1502:in `each'
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:1502:in `wrap_traverse'
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:466:in `copy_entry'
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:441:in `block in cp_r'
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:1573:in `block in fu_each_src_dest'
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:1587:in `fu_each_src_dest0'
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:1571:in `fu_each_src_dest'
    from /home/den2pal/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/fileutils.rb:440:in `cp_r'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/fpm-cookery-0.32.0/lib/fpm/cookery/source_handler/directory.rb:21:in `fetch'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/fpm-cookery-0.32.0/lib/fpm/cookery/packager.rb:86:in `block in dispense'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/fpm-cookery-0.32.0/lib/fpm/cookery/packager.rb:83:in `chdir'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/fpm-cookery-0.32.0/lib/fpm/cookery/packager.rb:83:in `dispense'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/fpm-cookery-0.32.0/lib/fpm/cookery/cli.rb:113:in `exec'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/fpm-cookery-0.32.0/lib/fpm/cookery/cli.rb:77:in `block in execute'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/fpm-cookery-0.32.0/lib/fpm/cookery/book.rb:16:in `call'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/fpm-cookery-0.32.0/lib/fpm/cookery/book.rb:16:in `load_recipe'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/fpm-cookery-0.32.0/lib/fpm/cookery/cli.rb:73:in `execute'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/clamp-1.0.0/lib/clamp/command.rb:68:in `run'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/clamp-1.0.0/lib/clamp/subcommand/execution.rb:11:in `execute'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/clamp-1.0.0/lib/clamp/command.rb:68:in `run'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/clamp-1.0.0/lib/clamp/command.rb:133:in `run'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/gems/fpm-cookery-0.32.0/bin/fpm-cook:7:in `<top (required)>'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/bin/fpm-cook:23:in `load'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/bin/fpm-cook:23:in `<main>'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `eval'
    from /home/den2pal/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `<main>'

Obvious workaround is deleting the cache before each build.