From: tyamada@...2scp.org Date: 2017-12-20T03:39:25+00:00 Subject: [ruby-dev:50375] [Ruby trunk Bug#14207] Failed to build 2.5.0-rc1 on CircleCI Issue #14207 has been updated by minimum2scp (Tsuyoshi YAMADA). sorah (Sorah Fukumori) wrote: > 手元で大丈夫な時の Linux カーネルバージョンって 4.5 以降ですかね? はい、4.5 以降です。 ~~~ tsuyoshi@wezen% uname -a Linux wezen 4.14.0-1-amd64 #1 SMP Debian 4.14.2-1 (2017-11-30) x86_64 GNU/Linux ~~~ ---------------------------------------- Bug #14207: Failed to build 2.5.0-rc1 on CircleCI https://bugs.ruby-lang.org/issues/14207#change-68538 * Author: minimum2scp (Tsuyoshi YAMADA) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: 2.5.0-rc1 * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- CircleCI の docker 上で ruby 2.5.0-rc1 をビルドしてみたらエラーになりました。 make 時に多くの拡張ライブラリが "Could not be configured. It will not be installed" となっていて、 fileutilsで "Operation not permitted - copy_file_range" というメッセージが出ていました。 ~~~ linking ruby make[2]: Leaving directory '/tmp/ruby-2.5.0-rc1' make[1]: Leaving directory '/tmp/ruby-2.5.0-rc1' make[1]: Entering directory '/tmp/ruby-2.5.0-rc1' *** Following extensions are not compiled: dbm: Could not be configured. It will not be installed. /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:441: Operation not permitted - copy_file_range Check ext/dbm/mkmf.log for more details. io/console: Could not be configured. It will not be installed. /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:441: Operation not permitted - copy_file_range Check ext/io/console/mkmf.log for more details. io/nonblock: Could not be configured. It will not be installed. /tmp/ruby-2.5.0-rc1/lib/mkmf.rb:309: closed stream Check ext/io/nonblock/mkmf.log for more details. io/wait: Could not be configured. It will not be installed. /tmp/ruby-2.5.0-rc1/lib/mkmf.rb:309: closed stream Check ext/io/wait/mkmf.log for more details. etc: Could not be configured. It will not be installed. /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:441: Operation not permitted - copy_file_range Check ext/etc/mkmf.log for more details. (snip) readline: Could not be configured. It will not be installed. /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:441: Operation not permitted - copy_file_range Check ext/readline/mkmf.log for more details. gdbm: Could not be configured. It will not be installed. /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:441: Operation not permitted - copy_file_range Check ext/gdbm/mkmf.log for more details. openssl: Could not be configured. It will not be installed. /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:441: Operation not permitted - copy_file_range Check ext/openssl/mkmf.log for more details. *** Fix the problems, then remove these directories and try again if you want. ~~~ また、 make install から呼ばれる do-install-nodoc ターゲットでも "Operation not permitted - copy_file_range (Errno::EPERM)" のメッセージが バックトレースとともに出ていました。 ~~~ ./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems -r./x86_64-linux-fake ./tool/rbinstall.rb --make="make" --dest-dir="" --extout=".ext" --mflags="" --make-flags="" --data-mode=0644 --prog-mode=0755 --installed-list .installed.list --mantype="man" installing binary commands: /usr/local/ruby-2.5.0-rc1/bin /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:1291:in `copy_stream': Operation not permitted - copy_file_range (Errno::EPERM) from /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:1291:in `block (2 levels) in copy_file' from /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:1290:in `open' from /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:1290:in `block in copy_file' from /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:1289:in `open' from /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:1289:in `copy_file' from /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:430:in `copy_file' from /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:782:in `block in install' from /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:1461:in `block in fu_each_src_dest' from /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:1475:in `fu_each_src_dest0' from /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:1459:in `fu_each_src_dest' from /tmp/ruby-2.5.0-rc1/lib/fileutils.rb:778:in `install' from ./tool/rbinstall.rb:167:in `install' from ./tool/rbinstall.rb:346:in `block in <main>' from ./tool/rbinstall.rb:853:in `block in <main>' from ./tool/rbinstall.rb:850:in `each' from ./tool/rbinstall.rb:850:in `<main>' uncommon.mk:312: recipe for target 'do-install-nodoc' failed ~~~ この現象は、ビルドする対象を2.5.0-preview1に変更すると起きませんでした。 また、ローカルPC (Debian) の Docker では 2.5.0-rc1 でも 2.5.0-preview1 でも問題なくビルドできました。 CircleCI 上で git bisect して調べてみると、 r60284 で発生するようになったようです。 CircleCIでのビルド時のログと、再現のための Dockerfile, .circleci/config.yml を添付します。 ---Files-------------------------------- build-2.5.0-rc1.log (85.8 KB) Dockerfile (520 Bytes) config.yml (319 Bytes) -- https://bugs.ruby-lang.org/