Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wrong compile option during Rails installation on Clear Linux OS? #82

Open
espio999 opened this issue May 1, 2021 · 4 comments
Open

Comments

@espio999
Copy link

espio999 commented May 1, 2021

I wonder whether this is caused by the installation mechanism of this gem, or Ruby.

Install Rails with "sudo gem install rails" on Clear Linux OS, building gem is failed at "websocket-driver".

Error said
"gcc: error: unrecognized command-line option ‘-mzero-caller-saved-regs=used’; did you mean ‘-fzero-call-used-regs=’?"

It looks associated with the next topic.
https://gcc.gnu.org/pipermail/gcc-patches/2020-July/550018.html

Is an inappropriate building option set in Makefile dynamically generated during installation process? Although I over-write this option as "-fzero-call-used-regs=", Makefile itself is overwritten in installation process.

Steps to reproduce

Process of installation

  1. install following bundles with command "sudo swupd bundle-add"
    -ruby-basic
    -sqlite
    -nodejs-basic
    -c-basic
    -devpkg-sqlite-autoconf

  2. setup command of ruby and rails
    sudo gem update --system

Error at "websocket-driver"

Expected behavior

Rails is successfully installed.

Actual behavior

Next error is reported.

wsluser@paulownia~ $ sudo gem install rails
Password:
Building native extensions. This could take a while...
ERROR:  Error installing rails:
        ERROR: Failed to build gem native extension.

    current directory: /usr/lib64/ruby/gems/2.7.0/gems/websocket-driver-0.7.3/ext/websocket-driver
/usr/bin/ruby -I /usr/lib64/ruby/site_ruby/2.7.0 -r ./siteconf20210501-2471-f0bjii.rb extconf.rb
creating Makefile

current directory: /usr/lib64/ruby/gems/2.7.0/gems/websocket-driver-0.7.3/ext/websocket-driver
make DESTDIR\= clean

current directory: /usr/lib64/ruby/gems/2.7.0/gems/websocket-driver-0.7.3/ext/websocket-driver
make DESTDIR\=
compiling websocket_mask.c
gcc: error: unrecognized command-line option ‘-mzero-caller-saved-regs=used’; did you mean ‘-fzero-call-used-regs=’?
make: *** [Makefile:245: websocket_mask.o] Error 1

make failed, exit code 2

Gem files will remain installed in /usr/lib64/ruby/gems/2.7.0/gems/websocket-driver-0.7.3 for inspection.
Results logged to /usr/lib64/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0/websocket-driver-0.7.3/gem_make.out

System configuration

Rails version:

wsluser@paulownia~ $ rails -v
Rails 6.1.3.1

Ruby version:

wsluser@paulownia~ $ ruby -v
ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-linux-gnu]

Clear Linux OS:

wsluser@paulownia~ $ cat /etc/os-release
NAME="Clear Linux OS"
VERSION=1
ID=clear-linux-os
ID_LIKE=clear-linux-os
VERSION_ID=34560
PRETTY_NAME="Clear Linux OS"
ANSI_COLOR="1;35"
HOME_URL="https://clearlinux.org"
SUPPORT_URL="https://clearlinux.org"
BUG_REPORT_URL="mailto:dev@lists.clearlinux.org"
PRIVACY_POLICY_URL="http://www.intel.com/privacy"
BUILD_ID=34560
@Volosh1n
Copy link

Volosh1n commented May 4, 2021

Same here.
Ubuntu 20.05 LTS
Ruby 3.0.1 (rvm)
gem install rails raises the same error.

$ gem install rails                                                       
Building native extensions. This could take a while...
ERROR:  Error installing rails:
	ERROR: Failed to build gem native extension.

    current directory: /home/seva/.rvm/gems/ruby-3.0.1/gems/websocket-driver-0.7.3/ext/websocket-driver
/usr/share/rvm/rubies/ruby-3.0.1/bin/ruby -I /usr/share/rvm/rubies/ruby-3.0.1/lib/ruby/3.0.0 -r ./siteconf20210504-154939-ji16ct.rb extconf.rb
creating Makefile

current directory: /home/seva/.rvm/gems/ruby-3.0.1/gems/websocket-driver-0.7.3/ext/websocket-driver
make DESTDIR\= clean

current directory: /home/seva/.rvm/gems/ruby-3.0.1/gems/websocket-driver-0.7.3/ext/websocket-driver
make DESTDIR\=
compiling websocket_mask.c
linking shared-object websocket_mask.so

current directory: /home/seva/.rvm/gems/ruby-3.0.1/gems/websocket-driver-0.7.3/ext/websocket-driver
make DESTDIR\= install
make: /usr/bin/mkdir: command not found
make: *** [Makefile:202: .sitearchdir.time] Error 127

make install failed, exit code 2

Gem files will remain installed in /home/seva/.rvm/gems/ruby-3.0.1/gems/websocket-driver-0.7.3 for inspection

@alexmalus
Copy link

I had a similar issue (and build) as @Volosh1n reported.

As inspired by: https://mulmandu17.tistory.com/63

Solution was:

sudo ln -s /bin/mkdir /usr/bin/mkdir

Another attempt at gem installing rails worked OK, and this gem:

Building native extensions. This could take a while...
Successfully installed websocket-driver-0.7.3

got built successfully.

@jcoglan
Copy link
Collaborator

jcoglan commented Jun 15, 2021

We don't do anything special with the extension config, we just tell rubygems about it:

For development we use rake-compiler to build.

I'm not able to provide support for OSes other than Ubuntu and macOS, but usually compiler issues aren't to do with this gem specifically but some other problem with the environment gems are being compiled in.

@Volosh1n
Copy link

sudo ln -s /bin/mkdir /usr/bin/mkdir - it helped.

Found here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants