[ruby-core:81444] [Ruby trunk Bug#9993] x86_64 linux + i686 os = 32bit ruby, but `RUBY_PLATFORM=x86_64`

From: clauss.gigantisch@...
Date: 2017-05-29 06:25:01 UTC
List: ruby-core #81444
Issue #9993 has been updated by hugespider (Clauss Gigantisch).


I had similar issue

----

Environment info:
OS: FreeBSD 10.3 STABLE
rvm:
version: "rvm 1.29.1 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io/]"
updated: "2 months 9 days 18 hours 28 minutes 46 seconds ago"
path: "/home/spider/.rvm"
autolibs: "[4] Allow RVM to use package manager if found, install missing dependencies, install package manager (only OS X)."


----

ruby:

irb(main):001:0> RUBY_PLATFORM
=> "amd64-freebsd10"

RVM:

2.2.4 :001 > RUBY_PLATFORM
 => "x86_64-freebsd10.3"

First seems to be correct and former to be incorrect.

1st is ruby installed from FreeBSD ports and then I run irb.
2nd is ruby installed using rvm and then I run irb.


Originally submitted at:
https://github.com/rvm/rvm/issues/4037

----------------------------------------
Bug #9993: x86_64 linux + i686 os = 32bit ruby, but `RUBY_PLATFORM=x86_64`
https://bugs.ruby-lang.org/issues/9993#change-65149

* Author: DenKn (Denis Knauf)
* Status: Third Party's Issue
* Priority: Normal
* Assignee: cruby-linux
* Target version: 
* ruby -v: 2.1.2, 2.2.0dev
* Backport: 
----------------------------------------
Hi,

On x86_64 Linux Kernel, but i686 OS (there is no 64-binary file anywhere), this will produce a i686-binary ruby, but RUBY_PLATFORM=x86_64-linux:

    # ./configure && make
    Downloading config.guess...
    Downloading config.sub...
    checking build system type... x86_64-unknown-linux-gnu
    checking host system type... x86_64-unknown-linux-gnu
    checking target system type... x86_64-unknown-linux-gnu

System type is wrong.

[...]

    # ./ruby --disable-all -e 'puts RUBY_PLATFORM'
    x86_64-linux
    # file ./ruby
    ruby: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

This works fine:

    # ./configure --with-arch=i686 && make
    ./configure --with-arch=i686 && make 
    checking build system type... x86_64-unknown-linux-gnu
    checking host system type... x86_64-unknown-linux-gnu
    checking target system type... x86_64-unknown-linux-gnu

System type is wrong, too, but:

[...]

    # ./ruby --disable-all -e 'puts RUBY_PLATFORM'
    i686-linux
    # file ruby
    ruby: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

In config.log i found in both situations this:

    uname -m = x86_64

`uname -m` prints the kernel system type, not the os system type.

It isn't possible to compile a x86_64-binary on this machine, there is no compiler for that. Only for i386.

    configure:3795: gcc -v >&5
    Using built-in specs.
    Target: i486-linux-gnu



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next