ibmruntimes / v8ppc

Port of Google V8 javascript engine to PowerPC®
Other
94 stars 19 forks source link

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

Open bhyatm opened 10 years ago

bhyatm commented 10 years ago

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 commented 10 years ago

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 commented 10 years ago

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 commented 10 years ago

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

wifiboss commented 10 years ago

@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 commented 10 years ago

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 commented 10 years ago

@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 commented 10 years ago

@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 commented 10 years ago

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 commented 10 years ago

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 commented 10 years ago

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

wifiboss commented 10 years ago

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 commented 10 years ago

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 commented 10 years ago

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 commented 10 years ago

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 commented 10 years ago

@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 commented 9 years ago

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.