You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
libuv CI should build 64-bit binaries on AIX #1245
Node.js only supports 64-bit AIX but it looks like libuv is compiling 32-bit binaries on AIX and thus didn't detect the compilation failure that libuv/libuv#1795 introduced.
Needs libuv/libuv#1807 to land first so that libuv can actually build 64-bit AIX binaries.
Thanks to @gireeshpunathil I've found an AIX machine with autotools. It's not enough to pass -maix64 as CFLAGS and LDFLAGS -- you also need to make sure nm and ar run in the correct object mode.
@mhdawson I believe adding export OBJECT_MODE=64 and adding CFLAGS=-maix64 LDFLAGS=-maix64 to the ./configure command are the required changes to build 64-bit AIX binaries.
sh autogen.sh && ./configure CFLAGS=-maix64 LDFLAGS=-maix64
We got an error:
+ ./configure CFLAGS=-maix64 LDFLAGS=-maix64
checking for a BSD-compatible install... ./install-sh -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... nawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... Could not load program /usr/opt/freeware/bin/rpm:
Could not load module /opt/freeware/lib/libpopt.so.
Dependent module /usr/lib/libiconv.a(libiconv.so.2) could not be loaded.
Member libiconv.so.2 is not found in archive
Could not load module rpm.
Dependent module /opt/freeware/lib/libpopt.so could not be loaded.
Could not load module .
which is strange since we compile libuv fine in the Node.js builds
Actually, that same error occurs previously but does not seem to block the process is unrealated.
The real problem seems to be:
checking for ar... ar
checking the archiver (ar) interface... unknown
configure: error: could not determine ar interface
Build step 'Conditional steps (multiple)' marked build as failure
Notifying upstream projects of job completion
Finished: FAILURE
checking for ar... ar
checking the archiver (ar) interface... unknown
configure: error: could not determine ar interface
Build step 'Conditional steps (multiple)' marked build as failure
Notifying upstream projects of job completion
Finished: FAILURE
Activity
richardlau commentedon Apr 23, 2018
libuv/libuv#1807 has landed so it should just be a matter of passing
-Dtarget_arch=ppc64togyp_uv.pyto build 64-bit AIX binaries.I have no strong feelings on whether we should continue to build 32-bit AIX binaries for libuv -- we currently only build 64-bit for AIX for Node.js.
mhdawson commentedon Apr 23, 2018
@richardlau so do you mean add -Dtarget_arch=ppc64 to the CI job ?
I'd lean to just building for 64 bit, although the libuv jobs are quite quick.
richardlau commentedon Apr 23, 2018
I did, but I was assuming the CI job was using gyp, but looking at https://ci.nodejs.org/job/libuv-test-commit-aix/803/nodes=aix61-ppc64/console it looks like it might be using autotools which I am not familiar with.
mhdawson commentedon Apr 24, 2018
@richardlau if you can't figure it out can you see if you can get help from @gireeshpunathil
gireeshpunathil commentedon Apr 25, 2018
@richardlau - can you try this?
As we don't have 32 bit builds, the 64 bit hard-coding is fine, and that is what other platforms that don't support 32 bit do.
richardlau commentedon Apr 25, 2018
@gireeshpunathil Unfortunately I cannot because the AIX machines I have access to do not have autotools installed.
richardlau commentedon Apr 25, 2018
Thanks to @gireeshpunathil I've found an AIX machine with autotools. It's not enough to pass
-maix64asCFLAGSandLDFLAGS-- you also need to make surenmandarrun in the correct object mode.The libuv build instructions for autotools:
what appears to work for 64-bit binaries on AIX is:
Validating binary is 64-bit
@mhdawson I believe adding
export OBJECT_MODE=64and addingCFLAGS=-maix64 LDFLAGS=-maix64to the./configurecommand are the required changes to build 64-bit AIX binaries.richardlau commentedon Apr 25, 2018
Alternatively we could switch the AIX build to use gyp, but we should clear that with the libuv maintainers first.
bnoordhuis commentedon Apr 25, 2018
I'm fine with that, I don't think there are any users of the aix+autotools combo. Pull request welcome.
mhdawson commentedon Apr 25, 2018
Ok so current job has
sh autogen.sh && ./configure make -j2 make check@richardlau I tried to update to:
sh autogen.sh && ./configure CFLAGS=-maix64 LDFLAGS=-maix64We got an error:
which is strange since we compile libuv fine in the Node.js builds
mhdawson commentedon Apr 25, 2018
Actually, that same error occurs previously but does not seem to block the process is unrealated.
The real problem seems to be:
mhdawson commentedon Apr 25, 2018
@richardlau ar shows as
and figure out what might be going wrong.
richardlau commentedon Apr 25, 2018
@mhdawson was
export OBJECT_MODE=64set? If it was try not setting it until afterconfigureis run?richardlau commentedon Apr 25, 2018
@bnoordhuis AFAIK the libuv CI configuration isn't stored in a GitHub repo? Happy to raise a PR otherwise.
bnoordhuis commentedon Apr 25, 2018
It's not. It's done through Jenkins config, I think.
mhdawson commentedon Apr 26, 2018
Sorry missed the OBJECT_MODE bit
mhdawson commentedon Apr 26, 2018
Ok now building ok, thanks for all the help.