Project

General

Profile

Bug #16979

Updated by vihai (Daniele Orlandi) almost 4 years ago

 
 Hello, 

 I encountered an issue copying a directory tree with symlinks with FileUtils#cp_r with preserve flag. 

 Apparently FileUtils considers the possibility that lchmod raises NotImplementedError, however it apparently does not but still fails with ENOTSUPP. 
 Note that I am using musl libc (it is an Alpine 3.12 distribution) thus it may be related to how libc exposes unsupported lchmod. 

 I was unable to reproduce it with a minimal tree, thus here is the output with the actual tree (it is a bundled application): 

 ``` 
 cp -rp /root/kamaji/assets /root/kamaji/bin /root/kamaji/config /root/kamaji/lib /root/kamaji/vendor /root/kamaji/apk/build/data 
 Traceback (most recent call last): 
         42: from apk/build.rb:28:in `<main>' 
         41: from /usr/lib/ruby/2.7.0/fileutils.rb:467:in `cp_r' 
         40: from /usr/lib/ruby/2.7.0/fileutils.rb:1586:in `fu_each_src_dest' 
         39: from /usr/lib/ruby/2.7.0/fileutils.rb:1595:in `fu_each_src_dest0' 
         38: from /usr/lib/ruby/2.7.0/fileutils.rb:1595:in `each' 
         37: from /usr/lib/ruby/2.7.0/fileutils.rb:1597:in `block in fu_each_src_dest0' 
         36: from /usr/lib/ruby/2.7.0/fileutils.rb:1588:in `block in fu_each_src_dest' 
         35: from /usr/lib/ruby/2.7.0/fileutils.rb:468:in `block in cp_r' 
         34: from /usr/lib/ruby/2.7.0/fileutils.rb:494:in `copy_entry' 
         33: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `wrap_traverse' 
         32: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `each' 
         31: from /usr/lib/ruby/2.7.0/fileutils.rb:1515:in `block in wrap_traverse' 
         30: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `wrap_traverse' 
         29: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `each' 
         28: from /usr/lib/ruby/2.7.0/fileutils.rb:1515:in `block in wrap_traverse' 
         27: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `wrap_traverse' 
         26: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `each' 
         25: from /usr/lib/ruby/2.7.0/fileutils.rb:1515:in `block in wrap_traverse' 
         24: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `wrap_traverse' 
         23: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `each' 
         22: from /usr/lib/ruby/2.7.0/fileutils.rb:1515:in `block in wrap_traverse' 
         21: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `wrap_traverse' 
         20: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `each' 
         19: from /usr/lib/ruby/2.7.0/fileutils.rb:1515:in `block in wrap_traverse' 
         18: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `wrap_traverse' 
         17: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `each' 
         16: from /usr/lib/ruby/2.7.0/fileutils.rb:1515:in `block in wrap_traverse' 
         15: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `wrap_traverse' 
         14: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `each' 
         13: from /usr/lib/ruby/2.7.0/fileutils.rb:1515:in `block in wrap_traverse' 
         12: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `wrap_traverse' 
         11: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `each' 
         10: from /usr/lib/ruby/2.7.0/fileutils.rb:1515:in `block in wrap_traverse' 
          9: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `wrap_traverse' 
          8: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `each' 
          7: from /usr/lib/ruby/2.7.0/fileutils.rb:1515:in `block in wrap_traverse' 
          6: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `wrap_traverse' 
          5: from /usr/lib/ruby/2.7.0/fileutils.rb:1514:in `each' 
          4: from /usr/lib/ruby/2.7.0/fileutils.rb:1515:in `block in wrap_traverse' 
          3: from /usr/lib/ruby/2.7.0/fileutils.rb:1518:in `wrap_traverse' 
          2: from /usr/lib/ruby/2.7.0/fileutils.rb:500:in `block in copy_entry' 
          1: from /usr/lib/ruby/2.7.0/fileutils.rb:1441:in `copy_metadata' 
 /usr/lib/ruby/2.7.0/fileutils.rb:1441:in `lchmod': Not supported @ apply2files - /root/kamaji/apk/build/data/vendor/bundle/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-armv7-linux-musleabihf/.libs/libffi.la (Errno::ENOTSUP) 
 ``` 
 ``` 
 

 # ll /root/kamaji/apk/build/data/vendor/bundle/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-armv7-linux-musleabihf/.libs/ 
 total 8 
 drwxr-xr-x 2 root root 4096 Jun 23 15:28 . 
 drwxr-xr-x 8 root root 4096 Jun 23 15:28 .. 
 lrwxrwxrwx 1 root root     12 Jun 23 15:28 libffi.la -> ../libffi.la 

 # ll /root/kamaji/apk/build/data/vendor/bundle/ruby/2.7.0/gems/ffi-1.13.1/ext/ffi_c/libffi-armv7-linux-musleabihf/ 
 total 612 
 [...] 
 -rw-r--r-- 1 root root      915 Jun 23 13:48 libffi.la 
 [...] 

 # ruby -v 
 ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [armv7-linux-musleabihf] 

 # uname -a 
 Linux arm-builder 4.19.118-v7l+ #1311 SMP Mon Apr 27 14:26:42 BST 2020 armv7l GNU/Linux 
 ``` 

 LIBC is musl-1.1.24-r9 

Back