ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
From: lamont@scriptkiddie.org
To: ruby-core@ruby-lang.org
Subject: [ruby-core:103329] [Ruby master Bug#17787] Four AIX build issues with xlc compiler and ruby-3.0.1
Date: Fri, 09 Apr 2021 03:38:34 +0000 (UTC)	[thread overview]
Message-ID: <redmine.journal-91420.20210409033829.9918@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-17787.20210408211459.9918@ruby-lang.org

Issue #17787 has been updated by lamont (Lamont Granquist).


fdeclspec section is:

```
configure:9228: result: yes
configure:9348: checking whether -fdeclspec is accepted as CFLAGS
configure:9375: xlc_r -q64 -c -q64 -I/opt/chef/embedded/include -D_LARGE_FILES -O  -fdeclspec -q64 -I/opt/chef/embedded/include -D_LARGE_FILES -O conftest.c >&5
configure:9375: $? = 0
configure:9400: result: yes
configure:9425: checking whether -fdeclspec is accepted as CXXFLAGS
configure:9457: xlC_r -q64 -o conftest -q64 -I/opt/chef/embedded/include -D_LARGE_FILES -O -fdeclspec -q64 -I/opt/chef/embedded/include -D_LARGE_FILES -O -q64 -L/opt/chef/embedded/lib -Wl,-blibpath:/opt/chef/e
mbedded/lib:/usr/lib:/lib conftest.cpp  >&5
ld: 0706-005 Cannot find or open file: declspec
        ld:fopen(): No such file or directory
```

later this trainwrecks the configure script with:

```
configure:14675: checking size of long long
configure:14680: xlc_r -q64 -fdeclspec -o conftest -q64 -I/opt/chef/embedded/include -D_LARGE_FILES -O -q64 -I/opt/chef/embedded/include -D_LARGE_FILES -O -q64 -L/opt/chef/embedded/lib -Wl,-blibpath:/opt/chef/embedded/lib:/usr/lib:/lib conftest.c -lm  >&5
ld: 0706-005 Cannot find or open file: declspec
        ld:fopen(): No such file or directory
configure:14680: $? = 255
configure: program exited with status 255
```

----------------------------------------
Bug #17787: Four AIX build issues with xlc compiler and ruby-3.0.1
https://bugs.ruby-lang.org/issues/17787#change-91420

* Author: lamont (Lamont Granquist)
* Status: Feedback
* Priority: Normal
* ruby -v: ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [powerpc-aix7.1.5.0]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN
----------------------------------------
Yesterday found 4 small issues trying to use xlc to build ruby 3.0 on AIX that prevented building.  My solutions are ugly fixes just to get our own builds going which will not be acceptable, but I'll include links to them.

#1:  internal/bits.h uses the gcc extension `__builtin_unreachable()` directly, this does not exist on xlc, I think it should be replaced by "`UNREACHABLE`" but I just used an empty statement:

https://github.com/chef/omnibus-software/blob/3120a25111a29503a10866cbd4ee9fedcb438cee/config/patches/ruby/ruby-3.0.1-aix-builtin-unreachable.patch

the ./configure script is correctly finding `rb_cv_func___builtin_unreachable=no`

#2: With xlc to get cpp output you must use '`>`' and not '`-o`' which differs from `COUTFLAG` and this line in Makefile.in is incorrect and really needs better detection of this feature and not just assuming `CPPOUTFLAG = COUTFLAG`.  I simply hardcoded the right value of `CPPOUTFLAG`:

https://github.com/chef/omnibus-software/blob/3120a25111a29503a10866cbd4ee9fedcb438cee/config/patches/ruby/ruby-3.0.1-aix-cppoutflag.patch

#3: The xlc compiler actually supports gcc's sync builtins.  See the docs here:

https://www.ibm.com/docs/en/SSGH3R_16.1.0/com.ibm.compilers.aix.doc/compiler.pdf#BIFS_GCC_ATOMIC

The checks for this in the configure.ac script are guarded by a check for intel architecture which would need to be properly expanded properly in some way so that those checks would run on aix+xlc as well.  I just forced it on:

https://github.com/chef/omnibus-software/blob/3120a25111a29503a10866cbd4ee9fedcb438cee/config/patches/ruby/ruby-3.0.1-aix-force-gcc-sync-builtins.patch

#4: The configure script incorrectly identifies the compiler as supporting `-fdeclspec`.  It might be good to just omit these checks on the xlc compiler.  I also tested the patches to `fdeclspec` which are currently unreleased in master since we needed to backport those to 3.0.1 for M1 mac builds.  This one I just removed the `fdeclspec` checks entirely:

https://github.com/chef/omnibus-software/blob/3120a25111a29503a10866cbd4ee9fedcb438cee/config/patches/ruby/ruby-3.0.1-aix-nofdeclspec.patch



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

  parent reply	other threads:[~2021-04-09  3:38 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-08 21:15 [ruby-core:103317] [Ruby master Bug#17787] Four AIX build issues with xlc compiler and ruby-3.0.1 lamont
2021-04-08 22:06 ` [ruby-core:103319] " xtkoba+ruby
2021-04-08 22:35 ` [ruby-core:103321] " lamont
2021-04-08 22:47 ` [ruby-core:103322] " nobu
2021-04-09  3:38 ` lamont [this message]
2021-04-09  4:05 ` [ruby-core:103331] " lamont
2021-04-09  9:00 ` [ruby-core:103337] " nobu
2021-04-10  6:58 ` [ruby-core:103367] " lamont
2021-04-29  8:54 ` [ruby-core:103653] " nagachika00

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.ruby-lang.org/en/community/mailing-lists/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=redmine.journal-91420.20210409033829.9918@ruby-lang.org \
    --to=ruby-core@ruby-lang.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).