[#112457] [Ruby master Feature#19443] Cache `Process.pid` — "byroot (Jean Boussier) via ruby-core" <ruby-core@...>
Issue #19443 has been reported by byroot (Jean Boussier).
16 messages
2023/02/16
[#112584] [Ruby master Feature#19465] [PATCH] reuse open(2) from rb_file_load_ok on POSIX-like system — "normalperson (Eric Wong) via ruby-core" <ruby-core@...>
Issue #19465 has been reported by normalperson (Eric Wong).
9 messages
2023/02/25
[#112595] [Ruby master Feature#19465] [PATCH] reuse open(2) from rb_file_load_ok on POSIX-like system
— "nobu (Nobuyoshi Nakada) via ruby-core" <ruby-core@...>
2023/02/25
SXNzdWUgIzE5NDY1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbm9idSAoTm9idXlvc2hpIE5ha2FkYSku
[#112613] Re: [Ruby master Feature#19465] [PATCH] reuse open(2) from rb_file_load_ok on POSIX-like system
— Eric Wong via ruby-core <ruby-core@...>
2023/02/26
"nobu (Nobuyoshi Nakada) via ruby-core" <ruby-core@ml.ruby-lang.org> wrote:
[#112615] Re: [Ruby master Feature#19465] [PATCH] reuse open(2) from rb_file_load_ok on POSIX-like system
— SHIBATA Hiroshi via ruby-core <ruby-core@...>
2023/02/27
MzUxMzZlMWU5YzIzMmFkN2EwMzQwN2I5OTJiMmU4NmI2ZGY0M2Y2MyBpcyBicm9rZW4gd2l0aCBg
[#112626] Re: [Ruby master Feature#19465] [PATCH] reuse open(2) from rb_file_load_ok on POSIX-like system
— Eric Wong via ruby-core <ruby-core@...>
2023/02/28
```
[ruby-core:112197] [Ruby master Bug#19403] Unable to Build Native Gems on Mac with Ruby 3.1.0+
From:
"hsbt (Hiroshi SHIBATA) via ruby-core" <ruby-core@...>
Date:
2023-02-03 08:14:15 UTC
List:
ruby-core #112197
Issue #19403 has been updated by hsbt (Hiroshi SHIBATA).
Status changed from Open to Closed
Backport changed from 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN to 2.7: DONTNEED, 3.0: DONTNEED, 3.1: REQUIRED, 3.2: REQUIRED
I confirmed to fix installation error with `SDKROOT` environmental variable.
```
$ env | rg SDKROOT
SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
```
Before result with `make install` at `ruby_3_1` branch.
```
(snip)
installing extension objects: /Users/hsbt/.local/share/rbenv/versions/ruby_3_1/lib/ruby/vendor_ruby/3.1.0/arm64-darwin22
installing extension headers: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Users/hsbt/.local/share/rbenv/versions/ruby_3_1/include/ruby-3.1.0/arm64-darwin22
/Users/hsbt/Documents/github.com/ruby/ruby.github/lib/fileutils.rb:240:in `mkdir': Permission denied @ dir_s_mkdir - /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Users (Errno::EACCES)
from /Users/hsbt/Documents/github.com/ruby/ruby.github/lib/fileutils.rb:240:in `fu_mkdir'
from /Users/hsbt/Documents/github.com/ruby/ruby.github/lib/fileutils.rb:221:in `block (2 levels) in mkdir_p'
```
After:
```
(snip)
installing extension objects: /Users/hsbt/.local/share/rbenv/versions/ruby_3_1/lib/ruby/vendor_ruby/3.1.0/arm64-darwin22
installing extension headers: /Users/hsbt/.local/share/rbenv/versions/ruby_3_1/include/ruby-3.1.0/arm64-darwin22
installing extension scripts: /Users/hsbt/.local/share/rbenv/versions/ruby_3_1/lib/ruby/3.1.0
(snip)
----------------------------------------
Bug #19403: Unable to Build Native Gems on Mac with Ruby 3.1.0+
https://bugs.ruby-lang.org/issues/19403#change-101631
* Author: jcouball@yahoo.com (James Couball)
* Status: Closed
* Priority: Normal
* ruby -v: 3.2.0
* Backport: 2.7: DONTNEED, 3.0: DONTNEED, 3.1: REQUIRED, 3.2: REQUIRED
----------------------------------------
# Unable to Build Native Gems on Mac with Ruby 3.1.0+
## Problem
In Ruby 3.1 and later installed by `rvm` or `asdf` on a Mac, `require 'mkmf'` aborts
the script and reports the following error (the reported path is different depending
on the Ruby install manager and the version of Ruby):
```text
mkmf.rb can't find header files for ruby at /Users/couballj/.asdf/installs/ruby/3.2.0/lib/ruby/include/ruby.h
You might have to install separate package for the ruby development
environment, ruby-dev or ruby-devel for example.
```
and `RbConfig::CONFIG["rubyhdrdir"]` is set to an incorrect path:
```text
"/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Users/couballj/.asdf/installs/ruby/3.2.0/include/ruby-3.2.0"
```
## Expected Behavior
Running `require 'mkmf'` should not abort and for my system/user using `asdf` installed
Ruby 3.2.0 `RbConfig::CONFIG["rubyhdrdir"]` should be set to:
```text
"/Users/couballj/.asdf/installs/ruby/3.2.0/include/ruby-3.2.0"
```
## Details
In Ruby 3.1 and later I can no longer build native gems (like nokoguru or redcarpet)
on my Mac.
I have tried this by installing Ruby with both `rvm` and `asdf`, both which have
the same results.
I receive the following error when trying to install (and build) these gems. For
example, here is the error message when I try to run `gem install redcarpet`:
```text
mkmf.rb can't find header files for ruby at /Users/couballj/.asdf/installs/ruby/3.2.0/lib/ruby/include/ruby.h
You might have to install separate package for the ruby development
environment, ruby-dev or ruby-devel for example.
```
I found that this error could be triggered just by running a Ruby script that requires
`mkmf`. If `test.rb` contains this:
```ruby
require 'mkmf'
```
Running this script:
`ruby test.rb`
Results in this output:
```text
mkmf.rb can't find header files for ruby at /Users/couballj/.asdf/installs/ruby/3.2.0/lib/ruby/include/ruby.h
You might have to install separate package for the ruby development
environment, ruby-dev or ruby-devel for example.
```
Curiously, the reported directory does not exist. On my system, the path to `ruby.h`
is `/Users/couballj/.asdf/installs/ruby/3.2.0/include/ruby-3.2.0/ruby.h`
I found where in the Ruby code this error is reported in [mkmf.rb line 233](https://github.com/ruby/ruby/blob/master/lib/mkmf.rb#L224-L233).
This code is trying to find `ruby.h` based on the value of `RbConfig::CONFIG["rubyhdrdir"]`.
On my system, this value is:
```ruby
"/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Users/couballj/.asdf/installs/ruby/3.2.0/include/ruby-3.2.0"
```
This value is a concatenation of `ENV['SDKROOT']` (which on my system is `/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk`)
and the correct include directory path `/Users/couballj/.asdf/installs/ruby/3.2.0/include/ruby-3.2.0`.
When I run the same code with Ruby 2.7.7, `RbConfig::CONFIG["rubyhdrdir"]` is set to the correct path:
```ruby
"/Users/couballj/.asdf/installs/ruby/3.2.0/include/ruby-3.2.0"
```
## Possible Cause
I have found a possible cause in [commit fd97862](https://github.com/ruby/ruby/commit/fd978621ccbc9519afc05ad031ba2518e9a6f379#)
in line 127 of mkconfig.rb. This change prepends `ENV['SDKROOT']` to the include directory that
is used to build `RbConfig::CONFIG["rubyhdrdir"]`.
While there may have been good reason for that change, in my case this change causes
`require 'mkmf'` to fail in my use case.
## Work Around
I have been able to work around this issue by creating a symbolic link from
`/Users /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Users` to `/Users`
with the following command:
```shell
sudo ln -s /Users /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/Users
```
This change will works for both `rvm` and `asdf` no matter what version of Ruby is
installed.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/