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

AIX Binaries - where to get or how to buld #101

Open
bhyatm opened this issue Dec 17, 2013 · 16 comments
Open

AIX Binaries - where to get or how to buld #101

bhyatm opened this issue Dec 17, 2013 · 16 comments

Comments

@bhyatm
Copy link

bhyatm commented Dec 17, 2013

Hi,

I would like to create a node.js program but I need it to run on AIX platforms.
I am fairly new to node.js so please excuse the basicness of these questions

  1. will this fork let me run my program on node.js
  2. are there pre-built binaries for installation on aix and if so where do i find these (the public jenkins server does not seem to work) and the ibm beta project is failing aswell
  3. if not, how to build the binaries using the source code ??

Thanks

Mac

@andrewlow
Copy link
Collaborator

These issues are against the V8 port to PowerPC. The Node repository can be found here: https://github.com/andrewlow/node

This version of V8 does work on AIX. There is not (yet) a public build. You need to get GCC and some other tools (sorry, no set documentation on doing this yet either) - installed and configured on your AIX machine.

The same tooling is required for Node. It is possible to build Node on AIX, but there are still issues in the libuv implementation that need to be resolved before it is a reasonable end user experience. We are working on this.

If you happen to be an IBM customer, there may be a route to getting better support than this open source project. If you drop me an email I can connect you.

IBM recently made the Linux on PowerPC version of this available: http://www.ibm.com/developerworks/web/nodesdk/

@wifiboss
Copy link

wifiboss commented Jan 7, 2014

Hi Andrew Low, I want to compile v8ppc in aix, but it failed, does the document come out? And how can I get support?
thank you

@andrewlow
Copy link
Collaborator

@wifiboss What was the error exactly? Is your system configured with gcc?

@wifiboss
Copy link

wifiboss commented Jan 9, 2014

@andrewlow I installed the gcc-4.2.0-3 and make-3.81-1 for aix6.1 ppc from aixtoolbox. But the gcc got 'segmentation fault':

root@yxrjzx:/home/kjse/v8ppc>make ppc werror=no
make[1]: Entering directory /home/kjse/v8ppc/out' CXX(target) /home/kjse/v8ppc/out/ppc.release/obj.target/v8_base/src/parser.o In file included from ../src/elements.h:33, from ../src/objects-inl.h:38, from ../src/v8.h:60, from ../src/parser.cc:28: ../src/heap.h: In member function 'v8::internal::byte** v8::internal::Heap::store_buffer_top_address()': ../src/heap.h:1260: warning: dereferencing type-punned pointer will break strict-aliasing rules ../src/parser.cc: At global scope: ../src/parser.cc:5988: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. make[1]: *** [/home/kjse/v8ppc/out/ppc.release/obj.target/v8_base/src/parser.o] Error 1 make[1]: Leaving directory/home/kjse/v8ppc/out'
make: *** [ppc.release] Error 2

@wifiboss
Copy link

wifiboss commented Jan 9, 2014

I succeed with gcc-4.2.0-2 finally. But when this port be integrated into v8 or you update the v8 to the latest version?
thanks

@andrewlow
Copy link
Collaborator

@wifiboss I use gmake to run the make process as the AIX make is fairly unhappy with the V8 makefiles. If you head over to the node repository https://github.com/andrewlow/node you'll find that AIX should build there in a similar way.

Our long term goals include contributing all of this code back to the master projects (both V8 and Node). For V8 there are a set of high level goals that the V8 teams requires we meet before they accept the code back and we're working on those.

If you look in the v8ppc repository, you'll see an upstream branch which is our progress towards more current versions of V8. We will merge the branch once it's ready for consumption (shouldn't be too long at this point)

@wifiboss
Copy link

@andrewlow My AIX is version 6.1, and the gcc version is 4.2.0-2. The sample binaries in master branch runs well. But the binaries 'd8' and 'lineprocessor' in upstream trunk failed with core dump, the binary 'shell' runs well.

My question is:

  1. What's your build environment in AIX and where I can download? (gcc-4.2.0-2 is the highest version I can find on IBM's ftp)
  2. Where is the static library libv8.a after building?
    thanks.

@andrewlow
Copy link
Collaborator

The upstream branch is a work in progress.

  1. As I commented further back in this thread, we don't yet have a documented build environment for AIX. That said we're using gcc 4.6.1. You should be able to get that from http://www.bullfreeware.com/search.php?package=gcc
  2. You may want to refer to this thread https://groups.google.com/forum/#!topic/v8-users/98SA11GJgVA (you'll find the .a files in out/obj.target/tools/gyp/

@edelsohn
Copy link
Collaborator

I strongly advise against using GCC distributed on the IBM website. That is not a recommended version of GCC and not recommended for building v8 or node.js.

@wifiboss
Copy link

@andrewlow , @edelsohn , Your advice helped me a lot. Thank you and your great work!

@wifiboss
Copy link

Is it possible to compile v8ppc with xlC or gxlc++ in the future? We need to link v8 with some libraries compiled by xlC. It seems to be imcompatible.
thanks

@andrewlow
Copy link
Collaborator

Sorry, took a bit to get to this.

No near term plans to resolve this. I believe xLC does have some GCC compatibility we can try out. The V8 code base does rely on GCC features etc, so convincing the xLC compiler to consume the code mostly 'as is' is the best route.

@edelsohn
Copy link
Collaborator

Why do the C++ libraries require xlC instead of G++? G++ consistently uses the Itanium name mangling and object model on all platforms. xlC uses a derivative of the old C-Front C++ ABI. If you want to use Open Source-derived software on AIX, it is more and more difficult to avoid Open Source tools.

@apaprocki
Copy link

Lots of companies using IBM platforms are using IBM compilers and leverage the tweaked compilers to take advantage of the platform in ways GCC does not support. It seems that vendor compiler teams focus on further tweaking their closed-source compilers instead of making all the same features available in GCC/LLVM. Saying "build all your software with a different compiler" isn't straightforward. Even in this example, it seems clear it is non-trivial for v8 to be built with a different compiler, so why wouldn't that be the case for everyone else?

At least Oracle is adopting G++ ABI for Studio 13 to make this less of a problem on Solaris -- what is IBM planning on doing? If IBM wants to support customers on AIX and leverage OSS on AIX, their compiler should be able to build (at least these) OSS projects.

My personal opinion is that porting this project to AIX is not as useful as porting to IBM's "platform". That should also include making it build under xlC whether that involves adding more OSS-like features to xlC (intrinsics, etc) or selecting different features in the code based upon compiler.

@andrewlow
Copy link
Collaborator

@apaprocki while there are IBM people working on this code base, this isn't the forum for the discussion of IBM product plans.

From a technical point of view - I think that you've made a strong case for xlC support in the code base. We'll take a look at what can be done.

If you're looking for an IBM product statement - we can guide that conversation through email to the right people.

@mhdawson
Copy link
Contributor

Binaries for AIX have been available here for some time: http://www.ibm.com/developerworks/web/nodesdk/index.html

I'm going to close this issue. Please re-open if you disagree.

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

6 participants