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

powerpc64le-linux "Syslog not supported on this platform" #4885

Closed
kisgezenguz opened this issue Dec 6, 2017 · 10 comments
Closed

powerpc64le-linux "Syslog not supported on this platform" #4885

kisgezenguz opened this issue Dec 6, 2017 · 10 comments

Comments

@kisgezenguz
Copy link

Environment

on a SLES 12 SP1 on Power server
rb3test:~ # uname -a
Linux rb3test 4.4.90-92.45-default #1 SMP Tue Oct 24 15:03:15 UTC 2017 (1094ae5) ppc64le ppc64le ppc64le GNU/Linux

fresh build jruby
rb3test:~ # /tmp/jruby-9.1.14.0/bin/jruby -v
jruby 9.1.14.0 (2.3.3) 2017-12-06 fffffff OpenJDK 64-Bit Server VM 25.151-b12 on 1.8.0_151-b12 +jit [linux-ppc64le]

rb3test:/tmp/jruby-9.1.14.0 # ./mvnw
Downloading https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip
.....
[INFO] Reactor Summary:
[INFO]
[INFO] JRuby .............................................. SUCCESS [ 4.791 s]
[INFO] JRuby Core ......................................... SUCCESS [ 45.169 s]
[INFO] JRuby Lib Setup .................................... SUCCESS [ 30.720 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:41 min
[INFO] Finished at: 2017-12-06T07:46:04+01:00
[INFO] Final Memory: 83M/614M
[INFO] ---------------------------------------------------------------------

standard installed ruby from Suse repo
rb3test:~ # ruby -v
ruby 2.1.9p490 (2016-03-30 revision 54437) [powerpc64le-linux-gnu]

rb3test:~ # rpm -qa | grep ruby
ruby2.1-devel-2.1.9-18.1.ppc64le
ruby2.1-rubygem-cfa_grub2-0.5.3-2.3.1.ppc64le
libstorage-ruby-2.26.10-13.5.ppc64le
ruby2.1-rubygem-ruby-augeas-0.5.0-1.40.ppc64le
yast2-ruby-bindings-3.1.51.2-9.3.1.ppc64le
ruby2.1-rubygem-gem2rpm-0.10.1-4.1.ppc64le
ruby2.1-2.1.9-18.1.ppc64le
ruby2.1-rubygem-bundler-1.7.3-3.8.ppc64le
ruby2.1-rubygem-cheetah-0.5.0-4.1.ppc64le
ruby2.1-rubygem-fast_gettext-0.9.2-1.1.ppc64le
ruby2.1-rubygem-cfa-0.3.1-1.1.ppc64le
ruby2.1-stdlib-2.1.9-18.1.ppc64le
ruby-2.1-1.6.ppc64le
ruby2.1-rubygem-abstract_method-1.2.1-4.1.ppc64le
ruby-common-2.1-19.1.noarch
libruby2_1-2_1-2.1.9-18.1.ppc64le
ruby2.1-rubygem-ruby-dbus-0.9.3-3.6.ppc64le

Expected Behavior

rb3test:~ # /tmp/jruby-9.1.14.0/bin/jruby -r syslog -e 'puts "OK"'
OK

like by ruby
rb3test:~ # ruby -r syslog -e 'puts "OK"'
OK

Actual Behavior

rb3test:~ # /tmp/jruby-9.1.14.0/bin/jruby -d -r syslog -e 'puts "OK"'
Exception LoadError' at org/jruby/RubyKernel.java:955 - no such file to load -- /tmp/jruby-9.1.14.0/lib/ruby/stdlib/ffi/platform/powerpc64le-linux/syslog Exception LoadError' at /tmp/jruby-9.1.14.0/lib/ruby/stdlib/syslog.rb:20 - Syslog not supported on this platform
Exception `LoadError' at /tmp/jruby-9.1.14.0/lib/ruby/stdlib/syslog.rb:20 - Syslog not supported on this platform

rb3test:~ # ruby -r syslog -e 'puts "OK"'
OK

seems powerpc64le-linux is not implemented

also strange ruby show platform powerpc64le-linux-gnu
jruby show linux-ppc64le but search for powerpc64le-linux

@kisgezenguz kisgezenguz changed the title powerpc64le-linux Syslog not supported on this platform powerpc64le-linux "Syslog not supported on this platform" Dec 6, 2017
@headius
Copy link
Member

headius commented Dec 6, 2017

These particular files (and maybe other FFI files) are sorted out by processor-OS, and it appears we simply don't have a syslog definition for PowerPC LE at all. We do have syslog definitions for powerpc-aix and powerpc-darwin...perhaps they would be easy to adapt?

Without access to a ppcle machine I won't be able to help, so maybe you can give it a try?

@kisgezenguz
Copy link
Author

kisgezenguz commented Dec 7, 2017

Thanks headius,

I follow you advise and create a new platform definition.
rb3test:/tmp/jruby-9.1.14.0/lib/ruby/stdlib/ffi/platform # mkdir powerpc64le-linux
rb3test:/tmp/jruby-9.1.14.0/lib/ruby/stdlib/ffi/platform # cp -r ./powerpc-aix/* ./powerpc64le-linux
build jruby again,
seems working

rb3test:/tmp/jruby-9.1.14.0 # /tmp/jruby-9.1.14.0/bin/jruby -r etc -e 'puts "OK"'
OK

rb3test:~ # /tmp/jruby-9.1.14.0/bin/jruby -r syslog -e 'puts "OK"'
OK

I don't have experience with ruby/jruby and under ./lib/ruby/stdlib/ffi/platform/powerpc-aix are some configuration files (platform.conf, types.conf) how to check the content is correct or not for powerpc64le-linux?

and for understanding
why we have powerpc64le-linux and ppc64le-linux? is not the same?

@headius
Copy link
Member

headius commented Dec 7, 2017

I can't say with certain why it uses a different name. It is probably in the FFI logic shared between JRuby and MRI, or this mechanism existed before we used FFI extensively in JRuby proper. In any case, congratulations on fixing this! Can you submit a PR?

@kisgezenguz
Copy link
Author

sorry I am not a developer, PR meaning is?

@headius
Copy link
Member

headius commented Dec 8, 2017

@kisgezenguz PR means pull request, a way to submit modifications back to a project. The primary reason we don't have a syslog for ppc64le is because none of us have access to ppc4le machines. Without that access, we have no way to adapt the other ppc64 logic to the ppc64le environment.

You say you are not a developer, so perhaps we can work together to get this implemented. I'd recommend copying one of the ppc64 syslogs into the right location and see what happens.

@headius
Copy link
Member

headius commented Dec 9, 2017

Oops, I lost track of this bug. I see now that you literally just copied the AIX files to the right location and they worked. I will make your change and attribute it to you.

@headius
Copy link
Member

headius commented Dec 9, 2017

why we have powerpc64le-linux and ppc64le-linux? is not the same?

I noticed this now and I'm not sure either. It's possible that the resolution of the processor name changed, or it could be that in different environments or on different JVMs this resolves slightly differently.

For now I believe the best option is to copy the ppc64le-linux files to powerpc64-linux with a note about the duplication. That should fix this issue. Then we can look into why we have both names.

@kisgezenguz
Copy link
Author

thank you headius, learned something new again

regarding the changes I have now 3 week holiday so test the changes from my side is next year possible.

@headius
Copy link
Member

headius commented Dec 11, 2017

I will push a commit that copies the related file and adds comments noting the duplication.

@headius
Copy link
Member

headius commented Dec 11, 2017

I believe the commit that introduced this file (in the wrong directory) is 17c7a15. Note that it uses POWERPC64LE as the CPU_TYPE, but then puts the file in the directory with the short name.

I don't believe any of the ppc dirs under platform are being used, so I'll remove them.

headius added a commit that referenced this issue Dec 11, 2017
@headius headius closed this as completed Dec 11, 2017
@headius headius added this to the JRuby 9.1.16.0 milestone Dec 11, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants