Skip to content

FileUtils.install fails with text files in a docker container under Kernel 6.8-rc5 with a Errno::ENOTSUP error.. #118

Closed
@satmandu

Description

@satmandu

When in a docker container on an x86_64 host system under kernel 6.8.0-rc5, the following fails:

chronos@mbp113-x86_64 /tmp $ echo "test" > test
chronos@mbp113-x86_64 /tmp $ irb
irb(main):001> FileUtils.install 'test', 'dira/'
/usr/local/lib64/ruby/3.3.0/fileutils.rb:2280:in `copy_stream': Operation not supported - copy_file_range (Errno::ENOTSUP)
        from /usr/local/lib64/ruby/3.3.0/fileutils.rb:2280:in `block (2 levels) in copy_file'
        from /usr/local/lib64/ruby/3.3.0/fileutils.rb:2279:in `open'
        from /usr/local/lib64/ruby/3.3.0/fileutils.rb:2279:in `block in copy_file'
        from /usr/local/lib64/ruby/3.3.0/fileutils.rb:2278:in `open'
        from /usr/local/lib64/ruby/3.3.0/fileutils.rb:2278:in `copy_file'                                                       from /usr/local/lib64/ruby/3.3.0/fileutils.rb:1078:in `copy_file'
        from /usr/local/lib64/ruby/3.3.0/fileutils.rb:1629:in `block in install'
        from /usr/local/lib64/ruby/3.3.0/fileutils.rb:2469:in `block in fu_each_src_dest'
        from /usr/local/lib64/ruby/3.3.0/fileutils.rb:2485:in `fu_each_src_dest0'
        from /usr/local/lib64/ruby/3.3.0/fileutils.rb:2467:in `fu_each_src_dest'
        from /usr/local/lib64/ruby/3.3.0/fileutils.rb:1623:in `install'
        from (irb):1:in `<main>'
        from <internal:kernel>:187:in `loop'
        from /usr/local/lib64/ruby/gems/3.3.0/gems/irb-1.11.0/exe/irb:9:in `<top (required)>'
        from /usr/local/bin/irb:25:in `load'
        from /usr/local/bin/irb:25:in `<main>'
irb(main):002>

Reproducer container:

docker run --platform linux/amd64 --rm --net=host  -v $(pwd):/output -h $(hostname)-x86_64 -it satmandu/crewbuild:nocturne-x86_64.m90

Docker version info:

docker version
Client: Docker Engine - Community
 Version:           25.0.3
 API version:       1.44
 Go version:        go1.21.6
 Git commit:        4debf41
 Built:             Tue Feb  6 21:14:22 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          25.0.3
  API version:      1.44 (minimum version 1.24)
  Go version:       go1.21.6
  Git commit:       f417435
  Built:            Tue Feb  6 21:14:22 2024
  OS/Arch:          linux/amd64
  Experimental:     true
 containerd:
  Version:          1.6.28                                                                                                GitCommit:        ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc:
  Version:          1.1.12                                                                                                GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0                                                                                                GitCommit:        de40ad0

When I am booted into kernel 6.7.5, I don't have any issues. (I have reproduced this on two machines.)

This is an issue even if I manually do a gem install fileutils first:

chronos@mbp113-x86_64 /usr/local/lib/crew/packages $ ruby --version                                                     ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-linux-gnu]                                                          chronos@mbp113-x86_64 /usr/local/lib/crew/packages $ gem install fileutils                                              Fetching fileutils-1.7.2.gem                                                                                            Successfully installed fileutils-1.7.2
1 gem installed
chronos@mbp113-x86_64 /usr/local/lib/crew/packages $ cd /tmp
chronos@mbp113-x86_64 /tmp $ echo 'test' > test
chronos@mbp113-x86_64 /tmp $ irb
irb(main):001> require 'fileutils'
=> false
irb(main):002> FileUtils.install 'test', 'dira/'
/usr/local/lib64/ruby/gems/3.3.0/gems/fileutils-1.7.2/lib/fileutils.rb:2280:in `copy_stream': Operation not supported - copy_file_range (Errno::ENOTSUP)
        from /usr/local/lib64/ruby/gems/3.3.0/gems/fileutils-1.7.2/lib/fileutils.rb:2280:in `block (2 levels) in copy_file'
        from /usr/local/lib64/ruby/gems/3.3.0/gems/fileutils-1.7.2/lib/fileutils.rb:2279:in `open'
        from /usr/local/lib64/ruby/gems/3.3.0/gems/fileutils-1.7.2/lib/fileutils.rb:2279:in `block in copy_file'
        from /usr/local/lib64/ruby/gems/3.3.0/gems/fileutils-1.7.2/lib/fileutils.rb:2278:in `open'
        from /usr/local/lib64/ruby/gems/3.3.0/gems/fileutils-1.7.2/lib/fileutils.rb:2278:in `copy_file'
        from /usr/local/lib64/ruby/gems/3.3.0/gems/fileutils-1.7.2/lib/fileutils.rb:1078:in `copy_file'                 [
        from /usr/local/lib64/ruby/gems/3.3.0/gems/fileutils-1.7.2/lib/fileutils.rb:1629:in `block in install'
        from /usr/local/lib64/ruby/gems/3.3.0/gems/fileutils-1.7.2/lib/fileutils.rb:2469:in `block in fu_each_src_dest'
        from /usr/local/lib64/ruby/gems/3.3.0/gems/fileutils-1.7.2/lib/fileutils.rb:2485:in `fu_each_src_dest0'
        from /usr/local/lib64/ruby/gems/3.3.0/gems/fileutils-1.7.2/lib/fileutils.rb:2467:in `fu_each_src_dest'
        from /usr/local/lib64/ruby/gems/3.3.0/gems/fileutils-1.7.2/lib/fileutils.rb:1623:in `install'
        from (irb):2:in `<main>'
        from <internal:kernel>:187:in `loop'
        from /usr/local/lib64/ruby/gems/3.3.0/gems/irb-1.11.0/exe/irb:9:in `<top (required)>'
        from /usr/local/bin/irb:25:in `load'
        from /usr/local/bin/irb:25:in `<main>'
irb(main):003>  


Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions