From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-3.9 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 83FF71F454 for ; Mon, 4 Nov 2019 14:32:09 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 295A11209D5; Mon, 4 Nov 2019 23:31:59 +0900 (JST) Received: from o1678948x4.outbound-mail.sendgrid.net (o1678948x4.outbound-mail.sendgrid.net [167.89.48.4]) by neon.ruby-lang.org (Postfix) with ESMTPS id 8507F1209A4 for ; Mon, 4 Nov 2019 23:31:56 +0900 (JST) Received: by filter0163p3mdw1.sendgrid.net with SMTP id filter0163p3mdw1-12319-5DC0365C-33 2019-11-04 14:31:56.449652671 +0000 UTC m=+315595.105586399 Received: from herokuapp.com (unknown [3.88.230.70]) by ismtpd0005p1iad2.sendgrid.net (SG) with ESMTP id UkEH-by4S1uZmz3ilJMgHQ for ; Mon, 04 Nov 2019 14:31:56.381 +0000 (UTC) Date: Mon, 04 Nov 2019 14:31:56 +0000 (UTC) From: jaruga@redhat.com Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 71259 X-Redmine-Project: ruby-trunk X-Redmine-Issue-Id: 16234 X-Redmine-Issue-Author: jaruga X-Redmine-Sender: jaruga X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: =?us-ascii?Q?yXpFNqRr1dEY0snEQ6vUpjORBmm3WV3CBkaa8tOjsKk8Ed+gy18DOWf9+91ebH?= =?us-ascii?Q?DTCcoPa+31Bbm7jWbUDyOCsM1xEd+tZhOFhl9g6?= =?us-ascii?Q?r+4QiuQvmT5RNrKo5g6T44wxEK8S0jPxPaBO7ml?= =?us-ascii?Q?puXmxa=2FTu2eFYCAqnwODmDvBZGyWHWAKyQRvCSn?= =?us-ascii?Q?ji6smA2HQ1M0JQnVKXzYILc3I3bNZQl5oxg=3D=3D?= To: ruby-core@ruby-lang.org X-ML-Name: ruby-core X-Mail-Count: 95667 Subject: [ruby-core:95667] [Ruby master Misc#16234] Enabling ARM 64/32-bit cases by Drone CI X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #16234 has been updated by jaruga (Jun Aruga). I like to share my investigation about below issue (random error) at "make install" on arm64 environment. https://travis-ci.org/ruby/ruby/jobs/606916890#L2412 ``` cp: cannot create regular file '../../.ext/common/json.rb': Permission denied ... No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself. Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#build-times-out-because-no-output-was-received ``` I sent a pull-request that I do not intend to be merged, but I think it can be a clue to fix the issue. https://github.com/ruby/ruby/pull/2642 First, `No output ..." issue comes from "exit 1` message in the result of Travis CI. We can replace it with "false" command for example, because "exit" does not work on arm64 according to following page. https://travis-ci.community/t/exit-0-cannot-exit-successfully-on-arm/5731 Second, `cp: cannot create regular file '../../.ext/common/json.rb': Permission denied `. I have not found the root cause of the issue. But I found some things. Comparing the result of `id` command, there are differences, the travis user's user id and group id are different. On x86_64 ``` $ id uid=2000(travis) gid=2000(travis) groups=2000(travis),999(docker) ``` On arm64 ``` $ id uid=1000(travis) gid=1000(travis) groups=1000(travis),111(docker) ``` And, seeing the actual error, https://travis-ci.org/junaruga/ruby/jobs/607138014#L2421 After failing to copy, `.ext/common/fiddle.rb` exists at the destination path, right? I do not know why. But I think it is a clue for the issue. ``` cp: cannot create regular file '../../.ext/common/fiddle.rb': Permission denied ... {:mtime=>1572874916.7814617, :ctime=>1572874916.7814617, :mode=>"100444", :uid=>1000, :gid=>1000, :path=>".ext/common/fiddle.rb"} ... {:mtime=>1572874920.841432, :ctime=>1572874920.841432, :mode=>"40755", :uid=>1000, :gid=>1000, :path=>".ext/common"} ... ``` And I think `make COPY='cp -f' install` in `.travis.yml` might be wrong. It is ``make CP='cp -f'`, isn't it? ---------------------------------------- Misc #16234: Enabling ARM 64/32-bit cases by Drone CI https://bugs.ruby-lang.org/issues/16234#change-82453 * Author: jaruga (Jun Aruga) * Status: Closed * Priority: Normal * Assignee: ---------------------------------------- Currently ruby project has 4 CIs on GitHub. 1. Travis CI: linux cases with flags and compilers. 2. GitHub Actions: macros, windows, ubuntu 3. Wercker: Ruby JIT cases 4. Appveyor: windows I like to suggest 5th CI: Drone CI for ARM 64/32-bit cases. Drone CI supports native the ARM 64/32 bit environments. Have you used Drone CI? I tried to use both Drone CI and Shippable CI supporting ARM. My impression for Drone CI is quite good. Great user experience and user interface. Shippable CI was not so good for some reasons. Drone CI have not only linux ARM 64/32 bit environments on DockerRunner mode (= using container for CI like Wercker), but also freebsd, netbsd, openbsd, dragonfly (?) and solaris environments on ExecRunner (= maybe running commands directly without container) mode according to the following documents. * https://exec-runner.docs.drone.io/configuration/platform/ * https://docker-runner.docs.drone.io/configuration/platform/ Is it exciting isn't it? We can check ARM issue at a pull-request timing. Here is the example. The content is almost same with wercker.yml except JIT option. "ruby/3" is failed on the latest master branch, but "ruby/2" arm64 case is succeeded on old master branch. https://cloud.drone.io/junaruga/ruby/3 https://github.com/junaruga/ruby/blob/feature/ci-arm/.drone.yml https://cloud.drone.io/junaruga/ruby/2 Here is the pull-request as an example. https://github.com/ruby/ruby/pull/2520 .drone.yml is the file to manage the CI cases. But when you see most of the YAML parts between ARM 64-bit and 32-bit cases in .drone.yml is same. In case of .traivs.yml, we are using YAML anchor (&) and reference (*) feature effectively. But in case of .drone.yml I am not sure we can still use it beyond the "---" separator. Luckily Drone CI started providing the alternative .drone.star file by Starlark language. https://docs.drone.io/starlark/overview/ https://blog.drone.io/create-pipelines-using-starlark/ Enabling Drone CI is quite simple. Just go to https://drone.io/ , then register and enable target repository. UI is quite good. Pros * We can check ARM 64/32-bit cases, and possibly freebsd and solaris cases too. * It's for free. * Each developer can debug ARM cases on their forked repository. * Customize easily. I see .travis.yml is used effectively. Cons * Have to manage additonal file .drone.yml or .drone.star. But first, I want to ask you. Are you interested in using Drone CI for Ruby project? -- https://bugs.ruby-lang.org/