-
Notifications
You must be signed in to change notification settings - Fork 41
Add build and install of libmagparse.so to the build.rake #352
Comments
Woot! Thank you Allen! Sent from my iPhone On Oct 22, 2014, at 5:57 PM, Allen Otis [email protected] wrote: I have created the branch allen/libmagparse . The remaining work before this branch can be merged to master Note that a developer working on I have built the new libmagparse.so with a script outside of rake, For now all of this is supported on Linux only. We haven't Allen — |
I'm trying to get this to work (on ubuntu 14.04) and am getting this:
topaz.logThe end of
|
You need to be running the topaz executable interactively, or else I suppose unfortunately this is running under rake. When I do VM development I almost never use rake . Allen On Tue, Nov 18, 2014 at 6:13 PM, JohnnyT [email protected] wrote:
|
It's possible the rake script emits the files & only deletes them if there is no error. Worth checking anyway. -- Monty Sent from my iPhone
|
Also, I think the rake scripts should include "where" and "stack" Allen On Tue, Nov 18, 2014 at 8:27 PM, Monty Williams [email protected]
|
I just committed a change to src/smalltalk/ruby/allprims.topaz On Tue, Nov 18, 2014 at 6:13 PM, JohnnyT [email protected] wrote:
|
I’m suspicious of rakelib/contrib/ottobehrens/ — Monty |
I just committed a file README_bootstrap.txt which outlines the bootstrap On Wed, Nov 19, 2014 at 10:12 AM, Monty Williams [email protected]
|
Thanks!
|
I had almost forgot about Otto’s files until I remembered he contributed stone.rb & topaz.rb
|
I have some documentation additions to rubyom.hf that are in progress, class omObjSType
{
+ // a C variable of type omObjSType* is a pointer to an in-memory object,
+ // where in-memory means the object was created in, or faulted into
+ // the VM's temporary object memory. For some function calls and returns
+ // the args or result may also be the object id of a special object
+ // such as OOP_NIL or a SmallInteger .
+
+ // When an argument of type omObjSType* is passed to an om:: function
+ // and the function is documented as "possible gc" or "may cause gc",
+ // then that pointer is not valid after the function returns.
+ // To access the object again you would need to have saved it
+ // in a handle, obtained from OmScopeType::add or
+ // OmScopeType::newHandle , and then dereference the handle after
+ // the function call which invalidated the pointer. In code like this (shown with line numbers) from rubygrammar.y . A handle is a NODE** obtained from an instance of OmScopeType .
Note that the object pointers, i.e. NODE *x are saved in handles via
The C compiler would not complain, and yet the valO object pointer could Eventually some more sophisticated usage of C++ typing might make these I would be glad to proofread any parser changes when they are ready Allen |
Hey @AllenOtis - Currently the file at http://seaside.gemtalksystems.com/maglev/GemStone-34619.Linux-x86_64.tar.gz ( the Could we get that updated? |
The directory names within the 34619 download should be fixed now. |
If a pre-built libmagparse.so is eventually added to the maglev repository, |
@AllenOtis @johnnyt so can we close this issue now? I'm unclear as to the status. |
@AllenOtis 34619 is 404'ing right now. If I try to update to the version used by master, I get filein errors because of primitive mismatches. Please advise. |
Ryan, If you are trying to merge the libmagparse work into the master, then After that we can schedule a phone call to discuss later this week. Allen On Mon, Mar 16, 2015 at 1:41 PM, Ryan Davis [email protected]
|
No, I'm just trying to use your branch at this point and can't because the tarball doesn't exist:
|
You need to do the development on Linux. Allen On Mon, Mar 16, 2015 at 2:02 PM, Ryan Davis [email protected]
|
Then should I try merging master to your branch so I get an up to date version for osx or is that cut of the server the only one with your changes for the parser? |
Ryan, Johnny, You have to use the 34619 server build with the libmagparse branch. I was hoping we could get the libmagparse work integrated on Linux first, Allen On Mon, Mar 16, 2015 at 2:08 PM, Ryan Davis [email protected]
|
OK. I'm going to leave that to @johnnyt since he's working on installer changes and I'll focus on the parser changes and work blind for now. Once @johnnyt has this up and running, we'll work towards merging and then towards getting a darwin build available. I have enough tooling that I can just focus on the parser structural changes to get it up to 1.9. |
I'm trying to get this running on an Ubuntu 12.04 VM and am getting the following error: vagrant@precise64:~/maglev$ ./bin/maglev start-debug
startstone[Info]: GemStone version '3.1.0.2.1'
startstone[Info]: Starting Stone repository monitor 'maglev'.
startstone[Info]: GEMSTONE is: '/home/vagrant/maglev/gemstone'.
startstone[Info]:
GEMSTONE_SYS_CONF=/home/vagrant/maglev/etc/system-debug.conf
GEMSTONE_EXE_CONF=/home/vagrant/maglev/maglev.conf
startstone[Warning]: Using GEMSTONE_LOG environment variable to set log file.
startstone[Info]: Log file is '/home/vagrant/maglev/log/maglev/maglev.log'.
startstone[Info]: GemStone server 'maglev' has been started, process 23473 .
_____________________________________________________________________________
| GemStone/S64 Object-Oriented Data Management System |
| Copyright (C) VMware, Inc. 1986-2014 |
| All rights reserved. |
+-----------------------------------------------------------------------------+
| PROGRAM: WAITSTONE, GemStone Remote Process Utility |
| VERSION: 3.1.0.2.1, Beta Tue Oct 21 16:16:34 2014 |
| BUILD: gss64_maglev_1_9_branch-34619 |
| BUILT FOR: x86-64 (Linux) |
| MODE: 64 bit |
| RUNNING ON: 4-CPU precise64 x86_64 (Linux 3.2.0-23-generic #36-Ubuntu SMP Tue
| Apr 10 20:39:51 UTC 2012) 3954MB |
| PROCESS ID: 23496 DATE: 03/16/2015 23:35:55 UTC |
| USER IDS: REAL=vagrant (1000) EFFECTIVE=vagrant (1000) |
_____________________________________________________________________________
| GEMSTONE_GLOBAL_DIR = /home/vagrant/maglev |
|_____________________________________________________________________________|
Network service !#server!maglev is ready.
Loading kernel. It may take a few seconds...
/home/vagrant/maglev/gemstone/bin/topaz: symbol lookup error: /home/vagrant/maglev/gemstone/lib/libmagparse-3.1.0.2.1-64.so: undefined symbol: _Z18DoPrimCheckNumArgsP2omPP10omObjSTypei
FAILED LOADING PRIMS: 127 See /home/vagrant/maglev/log/maglev/allprims.log
/home/vagrant/maglev/gemstone/bin/topaz: symbol lookup error: /home/vagrant/maglev/gemstone/lib/libmagparse-3.1.0.2.1-64.so: undefined symbol: _Z18DoPrimCheckNumArgsP2omPP10omObjSTypei Does that _Z18DoPrimCheckNumArgsP2omPP10omObjSTypei look familiar? |
Johnny, First step would be cd $GEMSTONE/lib And if libmagparse is not in $GEMSTONE/lib, You might also run the "loading kernel" or whatever in a manner that shows I'm wondering what has changed since we last debugged stuff together. Allen On Mon, Mar 16, 2015 at 4:38 PM, JohnnyT [email protected] wrote:
|
Johnny, Not sure what type of build we last debugged with on your Linux VM . However I would suspect your $GEMSTONE is from the released server ( Allen On Mon, Mar 16, 2015 at 4:38 PM, JohnnyT [email protected] wrote:
|
The instructions say to use
|
I would make the following edit in rubyom.hf so you can compile I've got a bunch of documentation comments in my checkout of rubyom.hf now #if defined(FLG_DEBUG)
-void DoPrimCheckNumArgs(om *omPtr, omObjSType **SP, int expectedNumArg);
-#define DOPRIM_ARGS(__omptr, __n) DoPrimCheckNumArgs(__omptr, ARStackPtr,
__n)
+// reenable if doing lots of new primitives in the parser; needs a slow
build
+// void DoPrimCheckNumArgs(om *omPtr, omObjSType **SP, int expectedNumArg);
+// define DOPRIM_ARGS(__omptr, __n) DoPrimCheckNumArgs(__omptr,
ARStackPtr, __n)
+#define DOPRIM_ARGS(__omptr, __n) { }
#else
#define DOPRIM_ARGS(__omptr, __n) { }
#endif On Mon, Mar 16, 2015 at 5:20 PM, Ryan Davis [email protected]
|
@AllenOtis - I was compiling the parser with FLG_DEBUG - that was the problem. I also added |
Allrighty - the The Eventually - we should build and save a precompiled libmagparse.so in the repo. @AllenOtis - will we need a different version for Darwin? and what is the process for getting a new darwin server? |
We shouldn't be checking in generated code/binaries into the repo. The parser already has a ton of generated files checked in that need to be removed and marked as ignored. Let's set it up to build from scratch and have proper dependencies in the build system. We basically need a darwin build of the server before we can merge this to master, don't we? |
We should have a Darwin build (revision 34619) available by the end of the On Tue, Mar 17, 2015 at 2:43 PM, Ryan Davis [email protected]
|
The Darwin build is available. |
Has anyone gotten a maglev build (on @AllenOtis' parser_fixes branch) against this server to work yet? Master builds fine for me. But the parser_fixes branch (and my branch off of that) does not. I get missing headers for unicode stuff: #include "unicode/ustring.h"
#include "unicode/umachine.h"
#include "unicode/utf.h" If I bypass that, I get failures for a BUNCH of fields:
That's using gcc-4.9. If I use OSX bundled g++, I get:
I'm not sure what tooling or packages I'm missing and I see no doco specifying what versions of what compilers should or should not work. |
I should add, against the apple-supplied compiler, |
Are you trying to compile on Linux or Darwin ? On Fri, Mar 20, 2015 at 3:30 PM, Ryan Davis [email protected]
|
Darwin. |
I haven't compile the libmagparse branch on Darwin, and You definitely need libicu packages installed . Allen On Fri, Mar 20, 2015 at 4:58 PM, Ryan Davis [email protected]
|
typical compile lines for the server on Darwin 13.4.0 are as follows. Current directory is where the .o files will go For debugging /usr/bin/g++ -fmessage-length=0 -Wno-format -Wtrigraphs -Wcomment And with optmization /usr/bin/g++ -DOBJ_pgsvr -fmessage-length=0 -Wno-format -Wtrigraphs On Fri, Mar 20, 2015 at 5:14 PM, Allen Otis [email protected]
|
I've got my parser changes into a compilable, but not linkable, state. @johnnyt can you take a whack at it? |
I'm trying it out - but am getting probably the same stuff you did @zenspider: + echo 'Linking libmagparse.so'
Linking libmagparse.so
$CC \
-shared \
-m64 -lpthread -ldl -lc -lm -o libmagparse.so \
-stdlib=libstdc++ \
-L$GEMSTONE/lib \
-lgcilnk-$GSVERSION \
rubyast.o rubygrammar.o
+ /usr/bin/g++ -shared -m64 -lpthread -ldl -lc -lm -o libmagparse.so -stdlib=libstdc++ -L/Users/johnnyt/.rbenv/versions/maglev-2.0.0-dev/gemstone/lib -lgcilnk-3.1.0.2.1-64 rubyast.o rubygrammar.o
Undefined symbols for architecture x86_64:
"GemErrAnsi(om*, int, char const*, char const*)", referenced from:
MagParse903(om*, omObjSType**) in rubygrammar.o
sessionInit(om*, rb_parse_state*) in rubygrammar.o
resolveAstClass(om*, omObjSType**, AstClassEType) in rubygrammar.o
initAstSelector(om*, unsigned long long*, AstSelectorEType) in rubygrammar.o
initAstSymbol(om*, omObjSType**, AstSymbolEType) in rubygrammar.o
"ComHeapInit(ComStateType*)", referenced from:
MagParse903(om*, omObjSType**) in rubygrammar.o
"ComHeapMalloc(ComStateType*, unsigned int)", referenced from:
VarTable::allocate(rb_parse_state*, int) in rubyast.o
LocalState::allocate(rb_parse_state*) in rubyast.o
bstring::balloc(bstring*, long long, rb_parse_state*) in rubyast.o
bstring::new_(rb_parse_state*) in rubyast.o
StartPositionList::allocate(rb_parse_state*, int) in rubyast.o
MagCompileError902(om*, omObjSType**) in rubygrammar.o
MagParse903(om*, omObjSType**) in rubygrammar.o
...
"GemSupErr_oo_(int, omObjSType*, omObjSType*)", referenced from:
RubyNode::checkInstanceOf(omObjSType**, AstClassEType, rb_parse_state*) in rubyast.o
"LrgInt64ToOop(om*, long long)", referenced from:
RubyLexStrTerm::newHereDoc(rb_parse_state*, char const*, long long, long long, bstring*) in rubygrammar.o
RubyAbstractNumberNode::s(long long, rb_parse_state*) in rubygrammar.o
"FloatPrimFetchArg(om*, omObjSType**, double*)", referenced from:
yyparse(rb_parse_state*) in rubygrammar.o
"GemDoSessionSymList(om*)", referenced from:
resolveAstClass(om*, omObjSType**, AstClassEType) in rubygrammar.o
"GemSupSearchSymList(om*, omObjSType**, omObjSType**)", referenced from:
resolveAstClass(om*, omObjSType**, AstClassEType) in rubygrammar.o
"FloatPrimDoubleToOop(om*, double)", referenced from:
yyparse(rb_parse_state*) in rubygrammar.o
yylex(rb_parse_state*) in rubygrammar.o
"HostCallDebuggerMsg_fl(char const*, char const*, int)", referenced from:
RpNameToken::s(omObjSType**, omObjSType*, rb_parse_state*) in rubyast.o
RpNameToken::s(AstSymbolEType, omObjSType*, rb_parse_state*) in rubyast.o
RpNameToken::s(rb_parse_state*, omObjSType*) in rubyast.o
OOP_OF_SMALL_LONG_(long long) in rubyast.o
VarTable::allocate(rb_parse_state*, int) in rubyast.o
OOP_TO_BIT(unsigned long long) in rubyast.o
RpNameToken::buildQuid(unsigned long long, long long, long long) in rubyast.o
...
"LrgRubyStringToInteger(om*, omObjSType**, long long, int)", referenced from:
newInteger(rb_parse_state*, int) in rubygrammar.o
"ObjCanonicalSymFromCStr(om*, unsigned char const*, long long, unsigned long long)", referenced from:
rb_parser_sym(char const*, rb_parse_state*) in rubygrammar.o
"ObjExistingCanonicalSym__(om*, omObjSType**)", referenced from:
initAstSelector(om*, unsigned long long*, AstSelectorEType) in rubygrammar.o
"LrgNegate(om*, omObjSType**)", referenced from:
yyparse(rb_parse_state*) in rubygrammar.o
"ObjNewSym(om*, char const*)", referenced from:
RpNameToken::s(char const*, omObjSType*, rb_parse_state*) in rubyast.o
yyparse(rb_parse_state*) in rubygrammar.o
resolveAstClass(om*, omObjSType**, AstClassEType) in rubygrammar.o
initAstSymbol(om*, omObjSType**, AstSymbolEType) in rubygrammar.o
"OmScopeType::initialize_(om*)", referenced from:
OmScopeType::OmScopeType(om*) in rubyast.o
OmScopeType::OmScopeType(om*) in rubygrammar.o
"OmScopeType::deinitialize_()", referenced from:
OmScopeType::~OmScopeType() in rubyast.o
OmScopeType::~OmScopeType() in rubygrammar.o
"OmScopeType::add_(omObjSType*)", referenced from:
OmScopeType::add(omObjSType*) in rubyast.o
OmScopeType::add(omObjSType*) in rubygrammar.o
OmScopeType::newHandle() in rubygrammar.o
"om::FetchCData(omObjSType*)", referenced from:
MagParse903(om*, omObjSType**) in rubygrammar.o
"om::FetchSize_(omObjSType*)", referenced from:
MagCompileError902(om*, omObjSType**) in rubygrammar.o
MagParse903(om*, omObjSType**) in rubygrammar.o
here_document(omObjSType**, rb_parse_state*) in rubygrammar.o
heredoc_restore(rb_parse_state*) in rubygrammar.o
"om::corruptObj(omObjSType*, char const*)", referenced from:
om::StoreSmallInt_(om*, omObjSType**, long long, long long) in rubyast.o
om::StoreSmallInt_(om*, omObjSType**, long long, long long) in rubygrammar.o
"om::FetchBytes_(omObjSType*, long long, long long, unsigned char*)", referenced from:
heredoc_restore(rb_parse_state*) in rubygrammar.o
"om::NewString__(om*, unsigned char const*, long long)", referenced from:
RubyLexStrTerm::newHereDoc(rb_parse_state*, char const*, long long, long long, bstring*) in rubygrammar.o
yylex(rb_parse_state*) in rubygrammar.o
NEW_STR(char const*, long long, rb_parse_state*) in rubygrammar.o
newInteger(rb_parse_state*, int) in rubygrammar.o
om::NewString(om*, long long) in rubygrammar.o
om::NewString_(om*, char const*) in rubygrammar.o
"om::strCharSize(omObjSType*)", referenced from:
MagCompileError902(om*, omObjSType**) in rubygrammar.o
MagParse903(om*, omObjSType**) in rubygrammar.o
"om::LocatePomObj(om*, unsigned long long)", referenced from:
RpNameToken::s(rb_parse_state*, omObjSType*) in rubyast.o
quidToSymbolObj(omObjSType*, rb_parse_state*) in rubygrammar.o
"om::isCByteArray(omObjSType*)", referenced from:
MagParse903(om*, omObjSType**) in rubygrammar.o
"om::objIdOfObj__(om*, omObjSType*)", referenced from:
RpNameToken::quidForSym(omObjSType*, om*) in rubyast.o
rb_parser_sym(char const*, rb_parse_state*) in rubygrammar.o
initAstSelector(om*, unsigned long long*, AstSelectorEType) in rubygrammar.o
"om::AppendToArray(om*, omObjSType**, omObjSType**)", referenced from:
yylex(rb_parse_state*) in rubygrammar.o
"om::FetchCString_(omObjSType*, char*, long long)", referenced from:
MagCompileError902(om*, omObjSType**) in rubygrammar.o
MagParse903(om*, omObjSType**) in rubygrammar.o
rb_compile_error_q(rb_parse_state*, char const*, omObjSType*) in rubygrammar.o
here_document(omObjSType**, rb_parse_state*) in rubygrammar.o
"om::FetchClassId_(omObjSType*)", referenced from:
omObjSType::classId() in rubygrammar.o
"om::compilerState()", referenced from:
MagParse903(om*, omObjSType**) in rubygrammar.o
VarTable::grow(rb_parse_state*) in rubygrammar.o
"om::FetchClassObj_(omObjSType*)", referenced from:
RubyNode::checkInstanceOf(omObjSType**, AstClassEType, rb_parse_state*) in rubyast.o
RubyNode::is_a(omObjSType*, AstClassEType, rb_parse_state*) in rubyast.o
"om::rubyParseState()", referenced from:
MagCompileError902(om*, omObjSType**) in rubygrammar.o
MagParse903(om*, omObjSType**) in rubygrammar.o
"om::AppendToString_(om*, omObjSType**, char const*, long long)", referenced from:
here_document(omObjSType**, rb_parse_state*) in rubygrammar.o
om::AppendToString(om*, omObjSType**, char const*) in rubygrammar.o
"om::FetchOopNoFault(omObjSType*, long long)", referenced from:
om::FetchSmallInt__(omObjSType*, long long) in rubygrammar.o
"om::IsKindOf_noHist(om*, omObjSType**, omObjSType*)", referenced from:
RubyAbstractLiteralNode::kind_of(omObjSType*, rb_parse_state*) in rubygrammar.o
"om::NewGlobalHandle()", referenced from:
sessionInit(om*, rb_parse_state*) in rubygrammar.o
"om::IntRecurFromPrim_(om*, omObjSType**, unsigned long long)", referenced from:
RubyNode::call(omObjSType*, AstSelectorEType, rb_parse_state*) in rubyast.o
"om::IntRecurFromPrim__(om*, omObjSType**, unsigned long long, long long, omObjSType***)", referenced from:
RubyNode::call(omObjSType*, AstSelectorEType, omObjSType*, rb_parse_state*) in rubyast.o
RubyNode::call(omObjSType*, AstSelectorEType, omObjSType*, omObjSType*, rb_parse_state*) in rubyast.o
RubyNode::call(omObjSType*, AstSelectorEType, omObjSType*, omObjSType*, omObjSType*, rb_parse_state*) in rubyast.o
RubyNode::call(omObjSType*, AstSelectorEType, omObjSType*, omObjSType*, omObjSType*, omObjSType*, rb_parse_state*) in rubyast.o
RubyNode::call(AstClassEType, AstSelectorEType, rb_parse_state*) in rubyast.o
RubyNode::call(AstClassEType, AstSelectorEType, omObjSType*, rb_parse_state*) in rubyast.o
RubyNode::call(AstClassEType, AstSelectorEType, omObjSType*, omObjSType*, rb_parse_state*) in rubyast.o
...
"om::set_rubyParseStack(YyStackData*)", referenced from:
MagParse903(om*, omObjSType**) in rubygrammar.o
sessionInit(om*, rb_parse_state*) in rubygrammar.o
"om::set_rubyParseState(rb_parse_state*)", referenced from:
MagParse903(om*, omObjSType**) in rubygrammar.o
sessionInit(om*, rb_parse_state*) in rubygrammar.o
"om::NewObj(om*, omObjSType**)", referenced from:
RubyNode::basicNew(AstClassEType, rb_parse_state*) in rubyast.o
RpNameToken::s(omObjSType**, omObjSType*, rb_parse_state*) in rubyast.o
RpNameToken::s(rb_parse_state*, omObjSType*) in rubyast.o
RubyLexStrTerm::newStrTerm(short, int, int, rb_parse_state*) in rubygrammar.o
RubyLexStrTerm::newHereDoc(rb_parse_state*, char const*, long long, long long, bstring*) in rubygrammar.o
"om::FetchOop(omObjSType*, long long)", referenced from:
RubyNode::basicNew(AstClassEType, rb_parse_state*) in rubyast.o
RubyNode::call(AstClassEType, AstSelectorEType, rb_parse_state*) in rubyast.o
RubyNode::call(AstClassEType, AstSelectorEType, omObjSType*, rb_parse_state*) in rubyast.o
RubyNode::call(AstClassEType, AstSelectorEType, omObjSType*, omObjSType*, rb_parse_state*) in rubyast.o
RubyNode::call(AstClassEType, AstSelectorEType, omObjSType*, omObjSType*, omObjSType*, rb_parse_state*) in rubyast.o
RubyNode::call(AstClassEType, AstSelectorEType, omObjSType*, omObjSType*, omObjSType*, omObjSType*, rb_parse_state*) in rubyast.o
RubyNode::call(AstClassEType, AstSelectorEType, omObjSType*, omObjSType*, omObjSType*, omObjSType*, omObjSType*, rb_parse_state*) in rubyast.o
...
"om::NewArray(om*, long long)", referenced from:
sessionInit(om*, rb_parse_state*) in rubygrammar.o
yyparse(rb_parse_state*) in rubygrammar.o
VarTable::asArray(om*) in rubygrammar.o
yylex(rb_parse_state*) in rubygrammar.o
"om::isSymbol(omObjSType*)", referenced from:
RpNameToken::s(rb_parse_state*, omObjSType*) in rubyast.o
quidToSymbolObj(omObjSType*, rb_parse_state*) in rubygrammar.o
"om::StoreOopR(om*, omObjSType**, long long, omObjSType**)", referenced from:
om::StoreOop(om*, omObjSType**, long long, omObjSType**) in rubyast.o
om::StoreOop(om*, omObjSType**, long long, omObjSType**) in rubygrammar.o
ld: symbol(s) not found for architecture x86_64 @AllenOtis - any thoughts? |
I used the following link command the last time I did a link on Linux.
Allen On Tue, Mar 24, 2015 at 12:20 PM, JohnnyT [email protected] wrote:
|
@AllenOtis I'm having a hard time getting this up and running and a lot of it has to do with the unknown in this project. "linux" is vague. "/usr/bin/g++" is vague. I have no idea what my tooling is supposed to be and it doesn't seem to be documented anywhere. Given that the ruby landscape is absolutely dominated by OSX, we need to smooth this out. If there is some specific set of tooling that a developer needs to have installed for this to work, it needs to be well documented. I'm currently trying to use
gcc-4.9 doesn't ship with a linker, so it is trying to use the linker from xcode, which is clang's ld. I've hacked up the following (semi-)equivalents: @@ -53,8 +54,10 @@ echo "Linking libmagparse.so"
$CC \
-shared \
-m64 -lpthread -ldl -lc -lm -o libmagparse.so \
+ -Wl,-flat_namespace \
+ -Wl,-undefined -Wl,warning \
+ -Wl,-exported_symbols_list -Wl,magparse.exp \
-L$GEMSTONE/lib \
- -lgcilnk-$GSVERSION \
rubyast.o rubygrammar.o and I've got a link working, finally. But obviously this script won't work for linux users. Is there a cross-platform build setup you guys use, or is it just shell scripts and a bunch of variables? |
Part of the work to integrate libmagparse branch to master is to develop On Thu, Mar 26, 2015 at 4:15 PM, Ryan Davis [email protected]
|
OK. At some point in time, I'll probably convert the scripts to makefiles. Unless creditera wants to pay me to futz with linux, I'll just do the OSX side with appropriate parameterization and let someone else fill in for other platforms. |
Closed by #405 |
I have created the branch allen/libmagparse .
The commits 22c079c .. 86ea7b1
plus the new server build on seaside.gemtalksystems.com
gss64_maglev_1_9_branch-34618 (v3.1.0.2.1)
are part of moving the ruby parser out of libgcilnk.so
and into a new library , libmagparse.so .
The remaining work before this branch can be merged to master
involves adding C compile and link steps to the build.rake
to build the libmagparse.so and also a rake step to
install the resulting libmagparse.so into the server lib directory.
It would be desirable to have options to compile the library
with and without C optimization depending on whether full debugging
with gdb is needed.
This work is described in src/kernel/parser/README.txt .
Note that a developer working on
the parser would also need to run the yacc.sh step.
A make file that builds byacc and then runs it if the
src/kernel/parser/grammar.y is newer than
src/kernel/parser/rubygrammar.c might be desirable ;
otherwise byacc could be run before every C compile.
The use of byacc is discussed in src/kernel/parser/README.txt .
I have built the new libmagparse.so with a script outside of rake,
and run the tests listed in vmunit.conf successfully under topaz,
building and testing on Ubuntu 10.04 .
For now all of this is supported on Linux only. We haven't
published a v3.1.0.2.1 server for Mac yet.
And some of the byacc scripts or code, and some of the
compile and link steps given in
src/kernel/parser/README.txt would need changes to work on Mac .
Allen
The text was updated successfully, but these errors were encountered: