From: nobu@... Date: 2021-04-12T06:36:51+00:00 Subject: [ruby-core:103396] [Ruby master Bug#17793] `shorten-64-to-32` error for 32-bit Android due to `struct stat` definition Issue #17793 has been updated by nobu (Nobuyoshi Nakada). File 0001-Bug-17793-Support-non-standard-struct-stat.patch added Patch updated. ---------------------------------------- Bug #17793: `shorten-64-to-32` error for 32-bit Android due to `struct stat` definition https://bugs.ruby-lang.org/issues/17793#change-91490 * Author: xtkoba (Tee KOBAYASHI) * Status: Open * Priority: Normal * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- [Here is a failure log for armv7a-android from CI.](http://rubyci.s3.amazonaws.com/crossruby/crossruby-master-armv7a-android30/log/20210411T143751Z.fail.html.gz) This failure is because `struct stat` for 32-bit Android is defined as follows. Note that the member `st_dev` is of type `unsigned long long` (instead of `dev_t`), and `st_mode` is of type `unsigned int` (instead of `mode_t`). ```c struct stat { unsigned long long st_dev; unsigned char __pad0[4]; unsigned long __st_ino; unsigned int st_mode; nlink_t st_nlink; uid_t st_uid; gid_t st_gid; unsigned long long st_rdev; unsigned char __pad3[4]; long long st_size; unsigned long st_blksize; unsigned long long st_blocks; struct timespec st_atim; struct timespec st_mtim; struct timespec st_ctim; unsigned long long st_ino; }; ``` I personally avoid these errors by passing the following two arguments to `./configure`. I am not 100% sure this results in no other problems. ``` rb_cv_dev_t_convertible=ULL rb_cv_mode_t_convertible=UINT ``` ---Files-------------------------------- 0001-Bug-17793-Support-non-standard-struct-stat.patch (2.73 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: