James,
After examining the tsxs shell script it is now apparent to me why the
command didn't work.
This will not work as expected:
tsxs -o libJsonPTransformationHandler.so -C JsonPTransformationHandler.cc
-I /home/sowens/ApiMgmtPlugin
I suspect that this WILL work as expected
tsxs -I /home/sowens/ApiMgmtPlugin -o libJsonPTransformationHandler.so -C
JsonPTransformationHandler.cc
Apparently the command line parsing algorithm used isn't as robust as it
could be.
The inner loop in the argument parser:
-C)
shift
while [ -r "$1" ]; do
SRC=$1
obj=`echo $SRC | sed -e 's/\.[a-z]*$/\.lo/g;'`
echo " compiling $SRC -> $obj"
debug "$CXX $CPPFLAGS $CXXFLAGS $PICFLAGS -c $SRC -o $obj"
$CXX $CPPFLAGS $CXXFLAGS $PICFLAGS -c $SRC -o $obj ||
bail "Compile failed: $CXX $CPPFLAGS $CXXFLAGS $PICFLAGS -c
$SRC -o $obj"
OBJS="$OBJS $obj"
LD=$MODULELDXX
BUILD=1
shift
done
;;
Seems to be eating arguments after the -C.
Once I get to a terminal I can try this out from I will follow up with
results.
Steve Owens
On 1/19/13 10:03 AM, "James Peach" <[email protected]> wrote:
>On 18/01/2013, at 12:37 PM, "Owens, Steve" <[email protected]> wrote:
>
>> Given that tsxs is broken does anyone know what would be the sequence
>>of commands that it would execute to build the plugin if it were working
>>correctly given the following command line?
>>
>> tsxs -o libJsonPTransformationHandler.so -C
>>JsonPTransformationHandler.cc -I /home/sowens/ApiMgmtPlugin
>
>Here's an example (a bit Mac OS X specific):
> https://github.com/jpeach/spdy/blob/master/Makefile
>
>You really only have to set the include path to $TS_ROOT/include and tell
>the linker to allow undefined symbols if that's necessary.
>
>The -I option to tsxs looks reasonably implemented .. can you put a "set
>-x" at the top of tsxs and post the output somewhere?
>
>>
>>
>> From: "Owens, Steve" <[email protected]>
>> Reply-To: "[email protected]"
>><[email protected]>
>> Date: Fri, 18 Jan 2013 12:19:14 -0800
>> To: "[email protected]" <[email protected]>
>> Subject: Re: Questions about tsxs
>>
>> Digging into this further I can see that when I invoke:
>> tsxs -o libJsonPTransformationHandler.so -C
>>JsonPTransformationHandler.cc -I /home/sowens/ApiMgmtPlugin
>>
>> Tsxs writes the following on the last line of output:
>> Compile failed: g++ -I/usr/local/include -g -pipe -Wall -Werror -O3
>>-feliminate-unused-debug-symbols -fno-strict-aliasing
>>-Wno-invalid-offsetof -fpic -c JsonPTransformationHandler.cc -o
>>JsonPTransformationHandler.lo
>>
>> Yet when I do
>> tsxs -h
>>
>> It outputs:
>> /usr/local/bin/tsxs : a tool to compile, link and install trafficserver
>>plugins.
>>
>> compiling/linking:
>> -c [ file1.c [ file2.c [ ... ] ] ] ## compiles C files
>> -C [ file1.cc [ file2.C [ ... ] ] ] ## compiles C++ files
>> -o modulename.so ## the name of the module
>> -I include ## add -Iinclude to the compile
>> -l lib ## add -llib to the link
>>
>> installing:
>> -o modulename.so ## the name of the module
>> -i ## install the object
>>
>>
>> So I am pretty sure there is a bug here since the I
>>/home/sowens/ApiMgmtPlugin didn't make it to the g++ command.
>>
>>
>> From: "Owens, Steve" <[email protected]>
>> Reply-To: "[email protected]"
>><[email protected]>
>> Date: Fri, 18 Jan 2013 12:09:56 -0800
>> To: "[email protected]" <[email protected]>
>> Subject: Questions about tsxs
>>
>> I am experiencing some confusing behaviors trying to use tsxs and the
>>documentation on this tool does not seem to be very complete.
>>
>> Here is what I am trying to do in a nutshell.
>>
>> I have plugin file that I want to build and I want to be able to
>>include files from a different directory into the header file such that:
>>
>> When I put in my JsonPTransformationHandler.h file
>> #include <events/BaseEventHandler.h>
>> #include <TransactionData.h>
>>
>>
>> And I put this in my JsonPTransformationHandler.cc file:
>> #include "JsonPTransformationHandler.h"
>> #include <ApiMgmtUtil.h>
>>
>>
>> I have tried executing the build tool with the following command lines
>>to no avail:
>>
>> tsxs -o libJsonPTransformationHandler.so -C
>>JsonPTransformationHandler.cc -I/home/sowens/ApiMgmtPlugin
>> tsxs -o libJsonPTransformationHandler.so -C
>>JsonPTransformationHandler.cc -I/home/sowens/ApiMgmtPlugin/
>> tsxs -o libJsonPTransformationHandler.so -C
>>JsonPTransformationHandler.cc -I /home/sowens/ApiMgmtPlugin
>> tsxs -o libJsonPTransformationHandler.so -C
>>JsonPTransformationHandler.cc -I /home/sowens/ApiMgmtPlugin/
>>
>> Yet in each and every case when the tool runs it renders the following
>>error messages:
>> JsonPTransformationHandler.h:13:37: error: events/BaseEventHandler.h:
>>No such file or directory
>> JsonPTransformationHandler.h:14:29: error: TransactionData.h: No such
>>file or directory
>> JsonPTransformationHandler.cc:9:25: error: ApiMgmtUtil.h: No such file
>>or directory
>>
>> Yet the following ls commands hold:
>> [sowens@d4mftapp11 JsonPTransformationHandlerPlugin]$ ls -l
>>/home/sowens/ApiMgmtPlugin/TransactionData.h
>> -rw-rw-r-- 1 sowens sowens 7736 Jan 18 11:22
>>/home/sowens/ApiMgmtPlugin/TransactionData.h
>> [sowens@d4mftapp11 JsonPTransformationHandlerPlugin]$ ls -l
>>/home/sowens/ApiMgmtPlugin/ApiMgmtUtil.h
>> -rw-rw-r-- 1 sowens sowens 20232 Jan 18 11:22
>>/home/sowens/ApiMgmtPlugin/ApiMgmtUtil.h
>> [sowens@d4mftapp11 JsonPTransformationHandlerPlugin]$ ls -l
>>/home/sowens/ApiMgmtPlugin/events/BaseEventHandler.h
>> -rw-rw-r-- 1 sowens sowens 1970 Jan 18 11:22
>>/home/sowens/ApiMgmtPlugin/events/BaseEventHandler.h
>>
>>
>> So the files are there but tsxs cannot fine them. Furthermore other
>>than the limited help provided by the h option on tsxs there is no
>>examples in the ATS web documentation that talks about includes. Does
>>tsxs support include directories?
>>
>