Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

build Quickfix on tandem oss

1,024 views
Skip to first unread message

dex5...@gmail.com

unread,
Jul 25, 2012, 12:08:40 AM7/25/12
to
I'm trying to build Quickfix(a FIX protocol engine) on tandem oss
But It really difficult for me
I have sucess build it in Linux environment

Does anyone who had sucess build it on tandem oss?
Can anyone tell me the details to build it?

Thanks for your helps.

Best Regard.

Keith Dick

unread,
Jul 25, 2012, 12:34:57 AM7/25/12
to
We probably could help you better if you told us at least a little about what problems you are having with building it on oss.

One thing that is needed by many open source programs in order to build on oss is the floss package from http://ituglib.connect-community.org/

If you haven't downloaded the floss package, try getting it and seeing whether using it clears up your build problems.

dex5...@gmail.com

unread,
Jul 25, 2012, 2:08:47 AM7/25/12
to kd...@acm.org
Keith於 2012年7月25日星期三UTC+8下午12時34分57秒寫道:
> dex5...@gmail.com wrote:
> > I'm trying to build Quickfix(a FIX protocol engine) on tandem oss
> > But It really difficult for me
> > I have sucess build it in Linux environment
> >
> > Does anyone who had sucess build it on tandem oss?
> > Can anyone tell me the details to build it?
> >
> > Thanks for your helps.
> >
> > Best Regard.
>
> We probably could help you better if you told us at least a little about what problems you are having with building it on oss.
>
> One thing that is needed by many open source programs in order to build on oss is the floss package from http://ituglib.connect-community.org/
>
> If you haven't downloaded the floss package, try getting it and seeing whether using it clears up your build problems.

To Keith:

Can I build it without using floss package?
The manager may not allow me to install it.
sorry,I can't explain my problem very well.
Can I build it in the same way as linux?
Just like,1.type"./bootstrap"、2.type"./configure"、3.type"make"
I have tried to type"./bootstrap" on oss,and it shows

aclocal...
./bootstrap[6]:aclocal: not found
autoheader...
./bootstrap[8]:autoheader: not found
libtoolize...
./bootstrap[10]:which: not found
./bootstrap[14]:libtoolize: not found
automake...
./bootstrap[17]:automake: not found
autoconf...
./bootstrap[19]:autoconf: not found

Does it mean I can't use the way?
Or I can use another wat to build?
Or it really need floss package?

Sorry,I'm just the first day to use oss and I can't explain my problem very well.

Thanks for your help
Best Regards.

Keith Dick

unread,
Jul 25, 2012, 12:15:25 PM7/25/12
to
I know nothing about building Quickfix, and only general principles about building open source products in OSS. I'll tell you what I think I know, but I hope someone who knows more about building open source in OSS replies with better answers for you.

The Unix-like systems have differences from each other, and the typical build scripts try to examine the environment and make adjustments according to what is found. That is what a script named ./configure typically does, and I imagine the ./bootstrap script in Quickfix also does that, but I have not looked at it to be sure. Such scripts typically are able to work on the most common systems: Linux, BSD, Solaris, AIX, HP/UX. The scripts often don't work quite right on NonStop OSS because the developers don't have NonStop OSS systems to test on.

The floss package I mentioned tries to supply some of the things that many open source products expect, but are missing or implemented differently in NonStop OSS. You probably could get Quickfix to build without using the floss package, but it would take a lot of effort to do things yourself that the floss package supplies for you. There is no guarantee that just installing the floss package will fix all of the problem you have with that build. It probably will help, though.

The messages you show coming from the bootstrap script might not be errors. Those kind of scripts usually print a lot of such messages, just reporting what they have found or did not find. Then they adjust the build script to make use of the things they found, or do things differently based on tests of how the things they found operate. I know that is kind of vague, but I don't know many details.

Quickfix probably includes some documentation that says what things it depends on having available to build and to run. If you have not checked for such documentation, look for it and try to be sure you have enough of what it needs. A lot of the common open source packages are available at that same URL I gave for the floss package. If you find that Quickfix needs some open source packages that NonStop OSS does not include by default, you might be able to find a copy of that package already built for use in NonStop OSS. I checked to see whether there is already a pre-built version of Quickfix there, but it seems not to be there.

I am not sure I understood what you meant when you said that your manager might not allow you to install it (I assume "it" means the floss package). If your manager is willing to use Quickfix, he is open to using open source software. The floss package is just a little more open source software, supplied by HP, to make NonStop OSS work better with other open source software, so I don't know why it would not be acceptable. But I don't know all of the considerations.

If you have other questions, post again to ask them, and we will try to help.

Bill Honaker

unread,
Jul 25, 2012, 6:29:38 PM7/25/12
to
There is no user id or fee required any of the Open Source packages on
the ITUGLIB server. All of them follow one of the common open source
library agreements. FLOSS (the acronym is the 'Freeware Look for OSS')
is one of those packages. Note that FLOSS is currently unsupported,
with some help in this newsgroup 'as needed'; But I understand that it
will be an official product soon. At that time, I think it will just
be on your system after installing a new VRU.

<shameless plug>

If your company is a Connect member (www.connect-community.org), you
also have access to some Guardian-related utilites that were
member-contributed. Due to the agreements under which those utilities
were contributed, you will have to have a Connect userid and password
to download them. You can, however, view a list of the packages in
other libraries on the site.

Note: that the ITUGLIB web site is JSP code running on an NS2000. The
address of the home page of ITUGLIB is actually here:

http://ituglib.connect-community.org/apps/Ituglib/HomePage.jsf

Please support the vendors that make this page possible!

</shameless plug>

Bill

On Wed, 25 Jul 2012 12:15:25 -0400, Keith Dick <kd...@acm.org> wrote:

>dex5...@gmail.com wrote:
>> Keith? 2012?7?25????UTC+8??12?34?57????
>>
>>>dex5...@gmail.com wrote:
>>>&gt; I&#39;m trying to build Quickfix(a FIX protocol engine) on tandem oss
>>>&gt; But It really difficult for me
>>>&gt; I have sucess build it in Linux environment
>>>&gt;
>>>&gt; Does anyone who had sucess build it on tandem oss?
>>>&gt; Can anyone tell me the details to build it?
>>>&gt;
>>>&gt; Thanks for your helps.
>>>&gt;
>>>&gt; Best Regard.
>>>
>>>We probably could help you better if you told us at least a little about what problems you are having with building it on oss.
>>>
>>>One thing that is needed by many open source programs in order to build on oss is the floss package from http://ituglib.connect-community.org/
>>>
>>>If you haven&#39;t downloaded the floss package, try getting it and seeing whether using it clears up your build problems.
>>
>>
>> To Keith:
>>
>> Can I build it without using floss package?
>> The manager may not allow me to install it.
>> sorry,I can't explain my problem very well.
>> Can I build it in the same way as linux?
>> Just like,1.type"./bootstrap"?2.type"./configure"?3.type"make"
Message has been deleted

dex5...@gmail.com

unread,
Jul 26, 2012, 9:27:31 PM7/26/12
to kd...@acm.org
To Keith:

Thanks for your help.
I'm trying to install the floss package first.
When I execute them,it shows an error message.

aclocal...
./bootstrap[6]:aclocal:cannot execute
autoheader...
./bootstrap[8]:autoheader:cannot execute
automake...
./bootstrap[17]:automake:cannot execute
autoconf...
/usr/local/bin/autoconf[501]:/usr/local/bin/autom4te:cannot execute

I had install "which",too. It can execute very well.
When I type "which automake",it will show "usr/local/bin/automake"
I have no idea why they can't execute.

Best Regards.

dex5...@gmail.com

unread,
Jul 27, 2012, 5:11:09 AM7/27/12
to kd...@acm.org
I found that it should use "perl" to execute automake.
But after I install "perl" and run it(I type"perl --help").
It show the message:

*** RLD ERROR ***: FileSystem Error 11: File /G/SYSTEM/ZDLL/libcrypto.so NOT Found
sh: /usr/local/bin/perl: tdm_execve(): failed with unexpected error
pr_errno=(4022) pr_TPCerror=(75) pr_TPCdetail=(11)

Does it mean I need to install "libcrypto.so"?
If right,where can I find it?

I also tried to type "automake --help". This time,it will crash.

Does anyone can help me to solve this problem?

Thanks for your help.
Best Regards.


Keith Dick

unread,
Jul 27, 2012, 11:50:22 PM7/27/12
to
I think libcrypto.so is in the package openssl or openssh. Both are available in the itug connect library -- the same library for which I gave the URL earlier. Look at them to see which one contains libcrypto.so.

When you installed perl, did you install the precompiled version for your system type from the itug connect library? If you did not use the precompiled version from itug connect, it might be a good idea to get it from there, to avoid other possible problems. Just using the precompiled version probably will not solve the problem with missing libcrypto.so, unless the precompiled version does not use that library.

dex5...@gmail.com

unread,
Jul 30, 2012, 3:45:27 AM7/30/12
to kd...@acm.org
To Keith,

Thanks for your help.
The package that I install is almost can run.
It's just have a problem in "libtool"

when I execute "libtool",it showed:

/usr/local/bin/libtool[741]: /usr/local/bin/echo: not found
/usr/local/bin/libtool[742]: /usr/local/bin/echo: not found
/usr/local/bin/libtool[774]: /usr/local/bin/echo: not found
/usr/local/bin/libtool[6524]: /usr/local/bin/echo: not found
/usr/local/bin/libtool[6525]: /usr/local/bin/echo: not found

I had search "echo" at the website,but it didn't show anything.
Do you know which package I should install from the website that you gave me before?

Best Regards.

Keith Dick

unread,
Jul 30, 2012, 9:33:39 AM7/30/12
to
I am not sure what is causing the problem. It looks like libtool is trying to find the echo command in /usr/local/bin/. On most Unix-like systems, echo is in /bin/. I notice that libtool is running from /usr/local/bin/. I wonder whether /bin is missing forom your PATH environment variable. That would be a simple explanation.

If it is not simply that /bin is missing from your PATH environment variable, something you could try is to create a symlink named echo in /usr/local/bin that points to /bin/echo. I think the command would be:

ln -s /bin/echo /usr/local/bin/echo

dex5...@gmail.com

unread,
Jul 30, 2012, 11:07:38 PM7/30/12
to kd...@acm.org
To Keith,

All the package that I need were installed.
When I tried to type "./configure", it showed:

checking for libxml - version >= 2.0.0... no
*** Could not run libxml test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means LIBXML was incorrectly installed
*** or that you have moved LIBXML since it was installed. In the latter case, you
*** may want to edit the xml2-config script: /usr/local/bin/xml2-config
configure: error: libxml2 must be installed.

The "libxml2" package was downloaded from the website that you gave me.
I had install it already.
The version is "2.6.24".



I also type another code "./configure --disable-xmltest" and it showed:

checking for set_terminate in the global namespace... no
checking for set_terminate in the std namespace... no
configure: error: unable to find set_terminate in std or global namespace

Is it mean I don't have C++ library?
But I can run my test c++ code on oss.
Here is my test code:

#include <iostream>
using namespace std;

int main() {
cout << "Hello! World!\n";
return 0;
}

Sorry...
There have a lot of problems.
Thank you very much that always help me to solve my problem.

Best Regards.

Keith Dick

unread,
Jul 31, 2012, 1:20:25 AM7/31/12
to
dex5...@gmail.com wrote:
> To Keith,

You probably should not include "To Keith" in your posts. That might make others think that you don't want them to answer. However, I'm not an expert on building open source software on OSS, and someone else might be better able to answer your questions than I am. I will continue to try to answer, if no one else does.

>
> All the package that I need were installed.
> When I tried to type "./configure", it showed:
>
> checking for libxml - version >= 2.0.0... no
> *** Could not run libxml test program, checking why...
> *** The test program failed to compile or link. See the file config.log for the
> *** exact error that occured. This usually means LIBXML was incorrectly installed
> *** or that you have moved LIBXML since it was installed. In the latter case, you
> *** may want to edit the xml2-config script: /usr/local/bin/xml2-config
> configure: error: libxml2 must be installed.
>
> The "libxml2" package was downloaded from the website that you gave me.
> I had install it already.
> The version is "2.6.24".

Were you able to find the file config.log that the message above mentions? If so, were you able to find the messages in it that tell about compiling and linking the libxml test program? Those messages might give us an idea about why this was not able to find libxml, even though you believe you installed it.
>
>
>
> I also type another code "./configure --disable-xmltest" and it showed:
>
> checking for set_terminate in the global namespace... no
> checking for set_terminate in the std namespace... no
> configure: error: unable to find set_terminate in std or global namespace
>
> Is it mean I don't have C++ library?
> But I can run my test c++ code on oss.
> Here is my test code:
>
> #include <iostream>
> using namespace std;
>
> int main() {
> cout << "Hello! World!\n";
> return 0;
> }

You certainly have the C++ library. However, it seems that you don't have the set_terminate() function that is supposed to be in the library. HP C++ supports three versions of library. Maybe not all three versions include set_terminate(), and maybe your compilations are using a library version that does not include set_terminate(). But I believe the default if no version is specified is to use the latest version, VERSION3, and I would be surprised if set_terminate() is not in Version3.

Try writing a test program that uses set_terminate(). Compile and run it specifying the VERSION1, VERSION2, and VERSION3 pragmas on the compiler command line and see whether all three libraries include set_terminate(). If not all three do, check which library version your builds use (I'm not sure how you can determine this), and make sure it is a version that includes set_terminate().

Wendy

unread,
Aug 1, 2012, 5:54:22 PM8/1/12
to
On Wednesday, July 25, 2012 3:29:38 PM UTC-7, Bill Honaker wrote:
> There is no user id or fee required any of the Open Source packages on the ITUGLIB server. All of them follow one of the common open source library agreements. FLOSS (the acronym is the 'Freeware Look for OSS') is one of those packages. Note that FLOSS is currently unsupported, with some help in this newsgroup 'as needed'; But I understand that it will be an official product soon.

FLOSS is now a supported product, you can find the manual at http://bizsupport1.austin.hp.com/bc/docs/support/SupportManual/c02732164/c02732164.pdf.

Cheers,
Wendy

Keith Dick

unread,
Aug 1, 2012, 9:23:58 PM8/1/12
to
Good news. And when I looked at that document, it contains an indirect pointer to another document that seems very useful in that it contains some instructions on building open source software on OSS. That document is:

http://h20223.www2.hp.com/NonStopComputing/downloads/Open_source_WP.pdf

I have not tried to follow the directions in that document to build any open source package on OSS, but it seems at first glance to give quite a bit of advice about how to go about the process.

dex5...@gmail.com

unread,
Aug 2, 2012, 10:19:07 PM8/2/12
to kd...@acm.org
I tried to search the Internet to solve this problem:

checking for xml2-config... /usr/local/bin/xml2-config
checking for libxml - version >= 2.0.0... no
*** Could not run libxml test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means LIBXML was incorrectly installed
*** or that you have moved LIBXML since it was installed. In the latter case, you
*** may want to edit the xml2-config script: /usr/local/bin/xml2-config
configure: error: libxml2 must be installed.

Almost the answer is that I need install "libxml2-dev",too.
I didn't find the package on "ITUGLIB",but I found it on the website :

http://xmlsoft.org/xslt/downloads.html

It didn't have oss TNS/E version,it just have "x86_64" and the file is ".rpm".
Can I install this version on oss?
and
How do I install ".rpm" on oss?

Best Regards.

Keith Dick

unread,
Aug 3, 2012, 1:00:24 AM8/3/12
to
You cannot use a program compiled for x86_64 on an Itanium processor, which is what TNS/E uses for the CPU, and as far as I know, there is no tool for OSS that will install software from .rpm files. So you are doubly out of luck on that matter.

If you actually need the libxml2-dev package, I suggest that you first try to check the libxml2 package on Ituglib to see whether it contains components from libxml2-dev, also. I cannot tell you how to check. Perhaps there will be a text file that describes what is in the package. Perhaps you could look at the files in the package on Ituglib and see whether it contains the things that come in the libxml2-dev package.

If the Ituglib libxml2 does contain libxml2-dev, then if you installed it from Ituglib, you need to figure out why the -dev components were not installed, or if they were installed, why Quickfix cannot find them.

If the Ituglib libxml2 does not contain libxml2-dev, then you might have to get the source for libxml2-dev and build it on OSS. If you have to do that, the manual Wendy referenced, and the one I referenced in my reply to her post probably will be helpful in showing how to build a package on OSS.

Joachim Schmitz

unread,
Aug 5, 2012, 12:06:40 PM8/5/12
to
dex5...@gmail.com wrote:
> To Keith,
>
> Thanks for your help.
> The package that I install is almost can run.
> It's just have a problem in "libtool"
>
> when I execute "libtool",it showed:
>
> /usr/local/bin/libtool[741]: /usr/local/bin/echo: not found
> /usr/local/bin/libtool[742]: /usr/local/bin/echo: not found
> /usr/local/bin/libtool[774]: /usr/local/bin/echo: not found
> /usr/local/bin/libtool[6524]: /usr/local/bin/echo: not found
> /usr/local/bin/libtool[6525]: /usr/local/bin/echo: not found

/usr/local/bin/echo is in sh-utils, which nowadays is in coreutils.
And that will be supported (and on SUT) shortly...

> I had search "echo" at the website,but it didn't show anything.
> Do you know which package I should install from the website that you
> gave me before?
>
> Best Regards.

Bye, Jojo

Joachim Schmitz

unread,
Aug 5, 2012, 12:07:18 PM8/5/12
to
dex5...@gmail.com wrote:
> Keith於 2012年7月25日星期三UTC+8下午12時34分57秒寫道:
>> dex5...@gmail.com wrote:
>> &gt; I&#39;m trying to build Quickfix(a FIX protocol engine) on
>> tandem oss &gt; But It really difficult for me
>> &gt; I have sucess build it in Linux environment
>> &gt;
>> &gt; Does anyone who had sucess build it on tandem oss?
>> &gt; Can anyone tell me the details to build it?
>> &gt;
>> &gt; Thanks for your helps.
>> &gt;
>> &gt; Best Regard.
>>
>> We probably could help you better if you told us at least a little
>> about what problems you are having with building it on oss.
>>
>> One thing that is needed by many open source programs in order to
>> build on oss is the floss package from
>> http://ituglib.connect-community.org/
>>
>> If you haven&#39;t downloaded the floss package, try getting it and
>> seeing whether using it clears up your build problems.
>
> To Keith:
>
> Can I build it without using floss package?
> The manager may not allow me to install it.

If you don't want or are not allowed to use floss from ITUGLIB, take T1200,
which is on newer SUTs nowadays.
It basically has the same functionallity and is fully supported. It may be
back a bit vs. the ITUGLIB version.

> sorry,I can't explain my problem very well.
> Can I build it in the same way as linux?
> Just like,1.type"./bootstrap"、2.type"./configure"、3.type"make"
> I have tried to type"./bootstrap" on oss,and it shows
>
> aclocal...
> ./bootstrap[6]:aclocal: not found
> autoheader...
> ./bootstrap[8]:autoheader: not found
> libtoolize...
> ./bootstrap[10]:which: not found
> ./bootstrap[14]:libtoolize: not found
> automake...
> ./bootstrap[17]:automake: not found
> autoconf...
> ./bootstrap[19]:autoconf: not found

This means you'd need autoconf. You can get it from, you guessed it, ITUGLIB
;-)

dex5...@gmail.com

unread,
Aug 6, 2012, 2:09:19 AM8/6/12
to Joachim Schmitz
I found two way that can solve the problem "configure: error: libxml2 must be installed." One is install "libxml2-dev",too.The other is install "libxml2" by manual. I use the second way and it can solve this problem.

Aonther problem :

checking for set_terminate in the global namespace... no
checking for set_terminate in the std namespace... no
configure: error: unable to find set_terminate in std or global namespace

Keith said I can write some program to test which version had include set_terminate().
After I test on three different versions.
version1 showed the message:
c89: error: Option version1 is not compatible with target tns/e.

version2 and version3 can compile and run my test program.
Here is my test program:

#include<exception>
#include<iostream>
using namespace std;
void terminate_ex(){
cout<<"execute function:terminate_set()"<<endl;
}
void(*old_terminate)()=set_terminate(terminate_ex);
void throw_unexpected_exception(){
throw "*";
}
int main(){
try{
throw_unexpected_exception();
cout<<"this line will not show"<<endl;
return 0;
}catch(int){
cout<<"exe catch block"<<endl;
}
}

In the result,I seems had set_terminate.
Why the "configure" can't find?
How can I solve this problem?

Thanks.
Best Regards.

Joachim Schmitz

unread,
Aug 6, 2012, 3:03:17 AM8/6/12
to
Look into that configure (it is a script) and check what it does to detect
set_terminate.
Then try to fool it.


> Thanks.
> Best Regards.

Bye, Jojo

dex5...@gmail.com

unread,
Aug 6, 2012, 9:32:39 PM8/6/12
to Joachim Schmitz
I tried to change the return value to fool the system, but it still show the error message.
I had checked the file and I found the value that I modify had become the original value.

I want to install another c++ package to test this error.
Does anyone know which package can compile c++ and run it?
or
Another way to solve this problem?

Best Regards.
Message has been deleted

Keith Dick

unread,
Aug 6, 2012, 10:27:02 PM8/6/12
to
dex5...@gmail.com wrote:
> I tried to change the return value to fool the system.
> But it still show the same error message.
> I checked the file to find the error, I found that the value that I modify had become the original value.
>
> I want to try to install different c++ package to test this error.
> Does anyone know which package can compile c++ and run it?
> or
> Another way to solve this problem?
>
> Best Regards.

I think this post does not give enough details for us to tell you what to try. You probably should show us enough of the code to understand how it is doing the test, and show how you modified it. Do not post thousands of lines of code, but include enough code that we can see what it is doing.

I do not understand the third line of your post.

In the fourth and fifth lines, are you asking which of the other packages in the ITUG library are written in C++? If yes, I am not sure that trying to install another package that uses C++ will help you solve the current problem, though maybe I am overlooking something. If you are not asking that, please make that question be more clear.

dex5...@gmail.com

unread,
Aug 6, 2012, 10:59:30 PM8/6/12
to kd...@acm.org
Sorry,I will try to talk more clear.

After I test three different versions(the details can see I post before) of c89 on tandem oss,the result is set_terminate() can be compile and run.
Later,I tried to modify the "configure" to fool the system to pass the check.
Here is the original code:

if ac_fn_cxx_try_compile "$LINENO"; then :
set_terminate_is_global=true
else
set_terminate_is_global=false
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext

if test $set_terminate_is_global = true
then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5

I change "set_terminate_is_global=false" to "true" and execute again.
It showed the error message again and the code that I modified had become the original value,"false".

I also found the test code that the "configure" used. I test it independently and it can build without error message.
Here is the test code in "configure":

#include <exception>
void term() {}
int main ()
{
std::set_terminate(term);
;
return 0;
}

It is used by test "std namespace".

Thanks.

Keith Dick

unread,
Aug 7, 2012, 12:15:46 AM8/7/12
to
Good - this is more clear.

My first thought about why your modification to change "false" to "true" did not persist is that the file in which you made that change might be created in the course of running the configure script (or in the course of running something prior to running the configure script). The whole file might be copied unchanged from another file, or the file might be copied and modified, or the file might be constructed from small sections. So one thing you could investigate is how the file you modified gets created. If I am correct that it is created at some point in the build, then you could modify the template from which it gets created to make the change from "false" to "true".

Another approach would be try try to figure out how the configure script is testing whether set_terminate() is working, determine why it is getting the wrong answer, and change whatever it is doing wrong. That probably would be harder than just changing the script to always set the result to "true", but maybe it is easier. You'll have to decide that when you look into this further.

You showed the C++ code that is used to test set_terminate(). I would guess that the script compiles that C++ code and checks the completion code of the compiler to determine whether the compilation succeeded or failed. But if that C++ code compiles without error for you when you compile it on your own, there must be something different about how you compiled it vs. how the configure script compiled it, or some difference between the source lines you compiled and the source lines the configure script compiled. If you have not already looked at the files conftest.err conftest.$ac_objext and conftest.$ac_ext that the script removes, they might give you some clues about how the compilation configure does differs from the one you did. Try to figure out how to prevent the script from removing them so you can look at them.

I'd like to look into the configure script to give you better help, but I don't have much free time today or for the next couple of days, so I can't make any suggestions that are more specific right now. If you haven't solved it yourself (or with someone else's help) by the end of the week, I probably will be able to look into it more closely then, though I don't have access to a NonStop system, so I'll only be able to read the script, not test things.
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

Joachim Schmitz

unread,
Aug 7, 2012, 12:55:40 PM8/7/12
to
dex5...@gmail.com wrote:
> Sorry,I will try to talk more clear.
>
> After I test three different versions(the details can see I post
> before) of c89 on tandem oss,the result is set_terminate() can be
> compile and run. Later,I tried to modify the "configure" to fool the
> system to pass the check.
> Here is the original code:
>
> if ac_fn_cxx_try_compile "$LINENO"; then :
> set_terminate_is_global=true
> else
> set_terminate_is_global=false
> fi
> rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
>
> if test $set_terminate_is_global = true
> then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
> $as_echo "yes" >&6; }
> else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
>
> I change "set_terminate_is_global=false" to "true" and execute again.
> It showed the error message again and the code that I modified had
> become the original value,"false".

It is the next check that fails (too).
set_terminate is in std namespace and not in global namespace.

You'd need top modify after the check.
And for typeinfo too. Here's what I did:

/usr/local/bin/diff -EBbu ./configure.orig ./configure
--- ./configure.orig 2010-04-05 21:00:26 -0500
+++ ./configure 2012-08-07 11:47:43 -0500
@@ -16028,7 +16028,9 @@
return 0;
}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+#if ac_fn_cxx_try_compile "$LINENO"; then :
+# __TANDEM
+if ! ac_fn_cxx_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }

@@ -16080,7 +16082,9 @@
return 0;
}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+#if ac_fn_cxx_try_compile "$LINENO"; then :
+# __TANDEM
+if ! ac_fn_cxx_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }



dex5...@gmail.com

unread,
Aug 7, 2012, 11:56:24 PM8/7/12
to Joachim Schmitz
Sorry,It's just my guess.
"XFile.pm" should use perl to compile.
So the error was caused by perl.
At first,I install "autoconf" with pre-compiled version.
This time,I tried to install it again by manual.
I type "conf_script_floss_cc" and it can compile.
When I type "make",it showed the same message:

truncate not implemented at ../lib/Autom4te/XFile.pm line 280.
*** Error code 1

Stop.
*** Error code 1

Stop.
*** Error code 2

Stop.

Is it my perl version didn't support truncate?
Or my guess is wrong,it is aother probelm?
Or another way to install "autoconf" correctly?

Best Regards.
Message has been deleted
Message has been deleted

dex5...@gmail.com

unread,
Aug 12, 2012, 11:23:18 PM8/12/12
to Joachim Schmitz
I found my autoconf can't install(I used pre-compiled version before,so I didn't find the error at the first time).
The same error message:

truncate not implemented at ../lib/Autom4te/XFile.pm line 280.
*** Error code 1
Stop.
*** Error code 1
Stop.
*** Error code 2
Stop.

I used both ./configure and conf_script_floss_cc to build it.
Both of them showed the same error message when I type "make".

Jojo said,there has an API called floss_truncate in floss package although oss don't have truncate().
Is it the same as truncate? If yes, how do I use this?
or another way to install autoconf correctly?

(Below is my thinking...)
Autoconf is the foundation of building open source programs.
So I think this problem can be solve with an easy way(just I don't know).
I had search many websites and papers,but never seen anyone had this problem(Maybe I had the wrong way to search).

Thanks for your helps.
Best regards.

Joachim Schmitz

unread,
Aug 13, 2012, 4:35:28 PM8/13/12
to
dex5...@gmail.com wrote:
> I found my autoconf can't install(I used pre-compiled version
> before,so I didn't find the error at the first time). The same error
> message:
>
> truncate not implemented at ../lib/Autom4te/XFile.pm line 280.
> *** Error code 1
> Stop.
> *** Error code 1
> Stop.
> *** Error code 2
> Stop.

I'm ptretty sure this is a perl problen, not a Quickfix or autoconf one

> I used both ./configure and conf_script_floss_cc to build it.
> Both of them showed the same error message when I type "make".

I don't think it does that with an unmodified configure.ac only, then
autoconf gets involved to (re)build configure, then that fails.
When I run configure in Quickfix I don't see that error (I ran into problems
later though, during the compile).

> Jojo said,there has an API called floss_truncate in floss package
> although oss don't have truncate().
> Is it the same as truncate? If yes, how do I use this?
> or another way to install autoconf correctly?

?? the floss package tries to implement the otherwise not existent API
truncate(). It does that by using the exsiting API ftruncate(), with an
open() before and a close after, nothing really wild, but check yourself,
the code is freely available.

The problem seems to be that perl (which is having the problem) hasnn't been
build using this API (as it wasn't part of floss when that perl was build),
so can't (or at least apparently doesn't) implement it for its script
engine, which is giving you grief here.

I'm not sure, but the perl that will get released shortly on the
H06.25/J06.14 SUTs may fit the bill?

> (Below is my thinking...)
> Autoconf is the foundation of building open source programs.

Not quite, it is the foundation for building configure scripts. Usually this
part of the work has been done by whoever publishes an OpenSource package,
almost all come with a reday-to-use configure script. The enduser almost
never has to run autoconf.

> So I think this problem can be solve with an easy way(just I don't
> know).

Yes, by reinstating the original configure.ac, basically.

> I had search many websites and papers,but never seen anyone had this
> problem(Maybe I had the wrong way to search).

Hmm, well, this is mostly a problem on HP NonStop I guess?

> Thanks for your helps.
> Best regards.

Bye, Jojo

dex5...@gmail.com

unread,
Aug 14, 2012, 4:59:54 AM8/14/12
to Joachim Schmitz
I tried to install perl again by manual.
Of course,an error message... :

Checking for GNU C Library...
Shall I use /usr/bin/nm to extract C symbols from the libraries? [y]
I can't seem to find your C library. I've looked in the following places:
Where is your C library?

I tried to find the path of my C library,but I can't find it.
Does tandem oss have C library?

After I checked, I downloaded C library from this website:
http://www.gnu.org/software/libc/
Which the package name is "glibc".

I can't find C library from Ituglib.
I only find "glib" on it.
Does it the same as glibc?or is the different program?

I also tried to install the "glibc"
After I type ./configure, it showed:

checking for sysdeps preconfigure fragments... x86_64 configure: WARNING: you should use --build, --host, --target
configure: WARNING: you should use --build, --host, --target
configure: WARNING: invalid host type: $CXX
configure: error: unrecognized option: `-c'
Try `../configure --help' for more information

Does it mean I need to specify the build,host,and target?
How do I specify them?or this message is about another things?

Thanks for your helps.
Best Regards.

Joachim Schmitz

unread,
Aug 14, 2012, 8:02:09 AM8/14/12
to
dex5...@gmail.com wrote:
> I tried to install perl again by manual.

Why?

> Of course,an error message... :
>
> Checking for GNU C Library...

configure f�r perl? So you installed perl sources, not perl?
Or configure for Quickfix?

> Shall I use /usr/bin/nm to extract C symbols from the libraries? [y]
> I can't seem to find your C library. I've looked in the following
> places:
> Where is your C library?

Check /usr/local/Floss/floss-<version>/Makefile.floss on how the packages
got build. Almost none got build by running configure directly. Read my
mini-howto in /usr/local/Floss/floss-<version>/docs/HowToPort.txt.

> I tried to find the path of my C library,but I can't find it.
> Does tandem oss have C library?

Of course it does. Well, sort of, basically it is /usr/lib/libc.obey, but
this is implemnted entirely different from 'normal' UNIX machines. Esp. you
won't be able to run nm against it. If anything, you'd need to run nm
against the files mentioned in that libc.obey.

> After I checked, I downloaded C library from this website:
> http://www.gnu.org/software/libc/
> Which the package name is "glibc".
> I can't find C library from Ituglib.
> I only find "glib" on it.
> Does it the same as glibc?or is the different program?

glib is it yes.

> I also tried to install the "glibc"
> After I type ./configure, it showed:

configure for glibc? Why? Just install the nse package from ITUGLIB and be
done with it.
If you want to build yourself a new glibc, check how the old one on ITUGLIB
got built, see above.

> checking for sysdeps preconfigure fragments... x86_64 configure:
> WARNING: you should use --build, --host, --target configure: WARNING:
> you should use --build, --host, --target
> configure: WARNING: invalid host type: $CXX
> configure: error: unrecognized option: `-c'
> Try `../configure --help' for more information

see above on how to do the configure.

> Does it mean I need to specify the build,host,and target?

No, I don't think so, but see above.

> How do I specify them?or this message is about another things?

Yes, I beliebe so, but see above.

You won't need glibc. Neiher the older one from ITUGLIB nor a newer one.
Surely not for your Quickfix port.
Having a new go at building perl might be an option for your truncate
problem, but it won't be trivial and as said several times before, just
reinstaling Quickfix's configure.ac should do the trick and is far easier.

> Thanks for your helps.
> Best Regards.

Bye, Jojo

Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

Joachim Schmitz

unread,
Aug 16, 2012, 5:31:53 AM8/16/12
to
dex5...@gmail.com wrote:
> Sorry,I had a little confused about your response.
> I will try to describe my questions more clear.
>
> I can run ./configure(or conf_script_floss_cc) without any errors.
> My problem is in "make" step.
> Here is my message when I execute "make":
>
> CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh
> /home/syscom/MARK/quickfix/config/missing --run aclocal-1.11 In
> autoload.pl

It is doing this appararently because aclocal.m4 had been modified.
Reinstate that from the original archive.

Hmm you do have and use GNU make (/usr/local/bin/make) and have
/usr/local/bin in PATH before /bin, don't you?

> Use of uninitialized value $macro in exists at
> /usr/local/bin/aclocal-1.11 line 694, <GEN48> line 1.
> Use of uninitialized value $macro in string eq at
> /usr/local/bin/aclocal-1.11 line 696, <GEN48> line 1. Use of
> uninitialized value $macro in string eq at
> /usr/local/bin/aclocal-1.11 line 696, <GEN48> line 1. Use of
> uninitialized value $macro in string eq at
> /usr/local/bin/aclocal-1.11 line 696, <GEN48> line 1. Use of
> uninitialized value $macro in string eq at
> /usr/local/bin/aclocal-1.11 line 701, <GEN48> line 1. truncate not
> implemented at /usr/local/share/autoconf/Autom4te/XFile.pm line 280.
> aclocal-1.11: autom4te failed with exit status: 1
> *** Error code 1
>
> It seems to execute "aclocal",but my aclocal had some problem.
> At first,I tried to fix the problem by checking "perl" and
> "autotools" packages.
> But you said it is more easier that I tried to trick Quickfix.
> So I decided to modify the Quickfix's file(such as configure.in and
> Makefile.in).
> I believed I should ckeck "Makefile.in" because my problem is in
> "make" step.
> But you said I should reinstall "configure.in" to solve this
> problem.(Here let me confuse.)
> What the relation between "configure.in" and my problem?
> I have no idea why it can solve my problem.(I can't find which code
> is about the error message.)
>
> Sorry,I challenged your answer.
> I just want to clarify my confuse.
>
> Best Regards.

OK, let's start from scratch:
1. unpack from the original source to /usr/local/Floss/ so you end up having
/usr/loal/Floss/quickfix
2. in /uss/local/Floss habe a makefile like this
include Makefile # which in turn include's ${FLOSS}/Makefile.floss
quickfix: # make
@echo "Cleaning $@..."
@cd $@* && if [ -f Makefile ] ; then ${MAKE} -ik distclean ; else
true ; fi
@cd $@* && ../${FLOSS}/rm_cache
@echo "Configuring $@..."
@cd $@* && PATH=/usr/local/bin:${PATH}
../${FLOSS}/conf_script_floss_cc
@cd $@* && ../${FLOSS}/findno
@echo "Making $@..."
@cd $@* && ${MAKE}
@cd $@* && ../${FLOSS}/findcall_floss && ${MAKE} check
@echo "Installing $@..."
@cd $@* && ${MAKE} install
@cd $@* && ${MAKE} distclean

3. being in /usr/local/Floss run "make quickfix", or to make extra sure
you're reylly using GNU make (see below), run "PATH=/usr/local/bin:$PATH
make quickfix
4. watch the show... fix proplems, do step 3 again, ad infintum...

This is how I started with this. Problems you'll be hitting:

quickfix makes some assumptions that are not true in OSS:
- bash is not in /bin (used at least in
examples/tradeclientgui/banzai/build.sh)
fix is quite easy: get and install bash from ITUGLIB, then replace
"#!/bin/bash" with "#!/bin/env bash". Patch:
/usr/local/bin/diff -EBbu ./examples/tradeclientgui/banzai/build.sh.orig
./examp
les/tradeclientgui/banzai/build.sh
--- ./examples/tradeclientgui/banzai/build.sh.orig 2010-02-23
21:35:39 -060
0
+++ ./examples/tradeclientgui/banzai/build.sh 2012-08-16 02:18:07 -0500
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/env bash
WHICH_JAVA=$(which java)
if [ $? != 0 ] ; then
exit 0

- our make is not GNU make (used at least in UnitTest++/Makefile)
fix is quite easy: get and install it from ITUGLIB, them kmake sure
/usr/local/bin is in PATH before /bin

- our compiler is not gcc (used in UnitTest++/Makefile and configure many
other places)
Here it is getting difficult. porting from one platform to another usually
is quite straight forward, but porting from one compiler to another then is
not.
Part of the fix is to modifify configure and UnitTest++/Makefile and ret rid
of the CFLAGS only gcc understands. This also is responsible for it to not
detect set_terminate and typeinfo to be in std namespace, My earlier fix for
this to fool configure was wrong, the real fix is to get rid of the gcc
specific CFLAGS. Patch:
/usr/local/bin/diff -EBbu ./UnitTest++/Makefile.orig ./UnitTest++/Makefile
--- ./UnitTest++/Makefile.orig 2010-03-25 09:58:41 -0500
+++ ./UnitTest++/Makefile 2012-08-07 11:55:12 -0500
@@ -1,5 +1,5 @@
-CXX = g++
-CXXFLAGS ?= -g -Wall -W -Winline -ansi
+CXX = c++
+CXXFLAGS ?= -g
LDFLAGS ?=
SED = sed
MV = mv
@@ -57,7 +57,7 @@
test_dependencies = $(subst .o,.d,$(test_objects))

define make-depend
- $(CXX) $(CXXFLAGS) -M $1 | \
+ $(CXX) $(CXXFLAGS) $1 | \
$(SED) -e 's,\($(notdir $2)\) *:,$(dir $2)\1: ,' > $3.tmp
$(SED) -e 's/#.*//' \
-e 's/^[^:]*: *//' \
/usr/local/bin/diff -EBbu ./configure.orig ./configure
--- ./configure.orig 2010-04-05 21:00:26 -0500
+++ ./configure 2012-08-16 03:03:49 -0500
@@ -15400,7 +15400,7 @@
# libs
LIBS="$STLPORT_LIBS $XML_LIBS $MYSQL_LIBS $POSTGRESQL_LIBS $LIBS"
# gcc flags
-SHAREDFLAGS="-Wall -ansi -Wpointer-arith -Wwrite-strings $BOOST_CFLAGS
$STLPORT
_CFLAGS $MYSQL_CFLAGS $POSTGRESQL_CFLAGS $XML_CPPFLAGS $XML_CFLAGS
$PYTHON_CFLAG
S $RUBY_CFLAGS"
+SHAREDFLAGS="$BOOST_CFLAGS $STLPORT_CFLAGS $MYSQL_CFLAGS $POSTGRESQL_CFLAGS
$XM
L_CPPFLAGS $XML_CFLAGS $PYTHON_CFLAGS $RUBY_CFLAGS"
CFLAGS="$CFLAGS $SHAREDFLAGS"

CXXFLAGS="$CXXFLAGS $SHAREDFLAGS"

There may be more too it, so this is to to be continued, most probably
[shortly after] yes it is, scroll down...

Then we have some proplems of our own:
-configure doesn't detect TNS/E systems properly
This is fixed in later versions of these scripts, but that hasn't made it
into quickfix yet. Patch:
/usr/local/bin/diff -EBbu ./config/config.sub.orig ./config/config.sub
--- ./config/config.sub.orig 2010-04-05 21:00:24 -0500
+++ ./config/config.sub 2012-08-07 11:34:01 -0500
@@ -823,6 +823,12 @@
np1)
basic_machine=np1-gould
;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
nsr-tandem)
basic_machine=nsr-tandem
;;


So far so bad, at this point I'm hitting a brick wall:
Making quickfix...
make[1]: Entering directory `/usr/local/Floss/quickfix-1.13.3'
/usr/local/bin/make all-recursive
make[2]: Entering directory `/usr/local/Floss/quickfix-1.13.3'
Making all in UnitTest++
make[3]: Entering directory `/usr/local/Floss/quickfix-1.13.3/UnitTest++'
src/TestResults.d:2: *** missing separator. Stop.
make[3]: Leaving directory `/usr/local/Floss/quickfix-1.13.3/UnitTest++'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/local/Floss/quickfix-1.13.3'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/local/Floss/quickfix-1.13.3'
make: *** [quickfix] Error 2

Here, once again, it relies heavily on gcc, here to create dependencies,
using gcc -M option. We don't have that unfortunatly and I don't know how to
fix that (it should be possible though, other packages have their way of
dealing with this). Responsible is that one line in UnitTest++/Makefile were
I removed the -M earlier, see above.
So let's try for now to just ignore that error by commenting out the last
for lines of UnitTest++/Makefile, Patch:
/usr/local/bin/diff -EBbu ./UnitTest++/Makefile.orig ./UnitTest++/Makefile
--- ./UnitTest++/Makefile.orig 2010-03-25 09:58:41 -0500
+++ ./UnitTest++/Makefile 2012-08-16 03:59:42 -0500
@@ -95,7 +95,7 @@

check:

-ifneq "$(MAKECMDGOALS)" "clean"
--include $(dependencies)
--include $(test_dependencies)
-endif
+#ifneq "$(MAKECMDGOALS)" "clean"
+#-include $(dependencies)
+#-include $(test_dependencies)
+#endif


This looks much better now, we now get to see real problems like
"/usr/local/Floss/quickfix-1.13.3/UnitTest++/src/Win32/TimeHelpers.h", line
23: error(114):
identifier "__int64" is undefined


__int64 m_startTime;
^

Patch:
/usr/local/bin/diff -EBbu ./UnitTest++/src/Config.h.orig
./UnitTest++/src/Config.h
--- ./UnitTest++/src/Config.h.orig 2010-01-03 13:09:13 -0600
+++ ./UnitTest++/src/Config.h 2012-08-16 04:11:12 -0500
@@ -15,7 +15,8 @@
#endif

#if defined(unix) || defined(__unix__) || defined(__unix) || defined(linux)
|| \
- defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__) ||
defined(__FreeBSD__)
+ defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__) || \
+ defined(__FreeBSD__) || defined(__TANDEM)
#define UNITTEST_POSIX
#endif



The rest is left as an excercise to the reader ;-)
(next problem is that we don't have SIGBUS nor SIGTRAP, easily fixed by
#ifdef SIGBUS resp. #idef SIGTRAP, the one after that is that we don't have
usleep(), we have it in the threading libs SPT and PUT and in floss for
non-threads, somehow need up our mind about which to use and how)

Bye, Jojo

Joachim Schmitz

unread,
Aug 16, 2012, 6:16:18 AM8/16/12
to
Joachim Schmitz wrote:
<snip>
> The rest is left as an excercise to the reader ;-)
> (next problem is that we don't have SIGBUS nor SIGTRAP, easily fixed
> by #ifdef SIGBUS resp. #idef SIGTRAP, the one after that is that we
> don't have usleep(), we have it in the threading libs SPT and PUT and
> in floss for non-threads, somehow need up our mind about which to use
> and how)


To see now what all needs attention, use "make -ik 2>&1 | tee /tmp/make.out"
so it doesn't stop at the first problem and you can see all the problems
laying ahead of you.

This reveals: Actually we seem do need PTREADS in one form or another
anyway.
And here I'm out of the game, C++ is not my strengh an pthreads is not my
area of expertise at all, this is where the previous maintainer of that
stuff on ITUGLIB, Tom Bates, was much better suited...
As soon as I see a package needs PTHREADS, I usually just give up.
Here I checked with using conf_script_floss_cc_put (should use PUT, Posix
User Treads) and got quite a bit further, but ended up in strange C++
issues, like this:

m_threadID = 0;
^
"/usr/local/Floss/quickfix-1.13.3/examples/tradeclient/../../include/quickfix/Mutex.h",
line 78: error(430):
none of the available operator functions matches these operands
operand types are: pthread_t = int


Bye, Jojo

dex5...@gmail.com

unread,
Aug 17, 2012, 5:05:53 AM8/17/12
to Joachim Schmitz
Thanks for your reply.
I had only used original "make" before.
I tried to use GNU make yesterday,but at first I can't run it.
After I saw your reply and tried it step by step, I was fixing usleep() now.

You used conf_script_floss_cc_put to solve this problem.
I found I don't have this command on my system.(My floss version is 0.8)
Floss-1.3 version had include conf_script_floss_cc_put,but it didn't have pre-compiled version.
I will try to install it by manual these days.

If I had the result or another problem, I'll report to here.

By the way,you said you usually give up if there have PTHREADS.
But this problem can be solve, can't it?

Again,thank you very much for your helps.
Best Regards.

Joachim Schmitz

unread,
Aug 17, 2012, 6:16:13 AM8/17/12
to
dex5...@gmail.com wrote:
> Thanks for your reply.
> I had only used original "make" before.

Oh, really? That might explaing a lot of your problems, the makefiles
Quickfix provides dos make use of GNU make features quiet a bit!

> I tried to use GNU make yesterday,but at first I can't run it.

?? Just grab from ITUGLIB, install and make sure /usr/local/bin is in PATH
first.

> After I saw your reply and tried it step by step, I was fixing
> usleep() now.
>
> You used conf_script_floss_cc_put to solve this problem.

Not the usleep() one (only), but the phtread problem that showed up next

> I found I don't have this command on my system.(My floss version is
> 0.8)

True. Not sure whether T1200 (the official HP version of floss) has that yet

> Floss-1.3 version had include conf_script_floss_cc_put,but it didn't
> have pre-compiled version. I will try to install it by manual these
> days.

None of the FLOSS packages from ITUGLIB after 0.8 come precompiled. My
reason for this: it is a) to much work to maintain src, nsr and nse
packacked and b) whoever wants them, wants them to build other packages, so
can as well build this one and have sort of first excercise in the due
course too and c) thoese who don#t want to build, at best need the souce for
reading, not the readily build library.
This may change in the futur, when we add a floss dll (libfloss.so).

> If I had the result or another problem, I'll report to here.
>
> By the way,you said you usually give up if there have PTHREADS.
> But this problem can be solve, can't it?

I don't really believe in problems that can't be solved, but I know there
are some I can't ;-)

> Again,thank you very much for your helps.
> Best Regards.

Bye, Jojo

dex5...@gmail.com

unread,
Aug 20, 2012, 4:04:26 AM8/20/12
to Joachim Schmitz
Today, I tried to install floss-1.3 by manual.
It only have "Makefile",so I type "make" to build it.
There have a warning message it showed:

/usr/local/Floss/floss-1.3: /usr/local/bin/make
./cc -g -c -o rcmd.o rcmd.c
s3 = accept(s2, (struct sockaddr *)&from, &len);
^
"/usr/local/Floss/floss-1.3/rcmd.c", line 170: warning(252): argument of type
"size_t *" is incompatible with parameter of type "socklen_t *"

for f in rcmd.o; do eld -change FLOATTYPE NEUTRAL_FLOAT $f || \
nld -change FLOATTYPE NEUTRAL_FLOAT $f; done
ar rv libfloss.a rcmd.o

I type "findcall_floss" to check it had build correctly.
I found it had some error message:

Did you remember to check calls to [gs]et.*[gu]id()?
./libfloss.a[uid.o]: 00000000 E getpwuid
Did you remember to check calls to [gs]et.*[gu]id()?
./libfloss.a[uid.o]: 00000000 E getuid
Did you remember to check calls to [gs]et.*[gu]id()?
./libfloss.a[uid.o]: 00000000 E setreuid
./libfloss.a[readwrite.o]: 00000000 E read
./libfloss.a[readwrite.o]: 00000000 E write
./libfloss.a[pty.o]: 00000000 E fork
.
.
.
Did you remember to check calls to [gs]et.*[gu]id()?
./uid.o: 00000000 F floss_getpwuid
Did you remember to check calls to [gs]et.*[gu]id()?
./uid.o: 00000000 F floss_seteuid
Did you remember to check calls to [gs]et.*[gu]id()?
./uid.o: 00000000 F floss_setreuid
Did you remember to check calls to [gs]et.*[gu]id()?
./uid.o: 00000000 E geteuid
Did you remember to check calls to [gs]et.*[gu]id()?
./uid.o: 00000000 E getpwuid
Did you remember to check calls to [gs]et.*[gu]id()?

The document said the super user ID should be 65535.
and the super group ID must be 255.
So I checked the "uid.c" file to find the error code.
I found a similar code(I'm not very sure):

if ((username = getenv("NSK_USER")) == NULL) {

if (euid < -1 || euid > 65535 || ruid < -1 || ruid > 65535) {

errno = EINVAL;

return -1;

}
if (USER_GETINFO_(, , , &euid, , , , , , , , , , , , , ,

&def_sec) != 0) {

errno = EINVAL;

return -1;

}

}

How can I modified the code to solve this problem?
Or another way to solve above problem?

Thanks for your help.
Best Regards.

Joachim Schmitz

unread,
Aug 20, 2012, 5:38:29 AM8/20/12
to
dex5...@gmail.com wrote:
> Today, I tried to install floss-1.3 by manual.
> It only have "Makefile",so I type "make" to build it.

right.

> There have a warning message it showed:
>
> /usr/local/Floss/floss-1.3: /usr/local/bin/make
> ./cc -g -c -o rcmd.o rcmd.c
> s3 = accept(s2, (struct sockaddr *)&from, &len);
>
> ^ "/usr/local/Floss/floss-1.3/rcmd.c", line 170: warning(252):
> argument of type "size_t *" is incompatible with parameter
> of type "socklen_t *"

Ignore it for now, this is on my TODO list already.
Are you in H0624/J06.13?
Running the findcall_* stuff against floss itself is not needed (and actally
pointless). The purpose of these sciprs is to check the package you are
porting with the help of floss for spots where floss support is needed or
where you should
check for places where UID is checked against (assuming super user).

> The document said the super user ID should be 65535.
> and the super group ID must be 255.
> So I checked the "uid.c" file to find the error code.
> I found a similar code(I'm not very sure):
>
> if ((username = getenv("NSK_USER")) == NULL) {
>
> if (euid < -1 || euid > 65535 || ruid < -1 || ruid > 65535) {
>
> errno = EINVAL;
>
> return -1;
>
> }
> if (USER_GETINFO_(, , , &euid, , , , , , , , , , , , , ,
>
> &def_sec) != 0) {
>
> errno = EINVAL;
>
> return -1;
>
> }
>
> }
>
> How can I modified the code to solve this problem?
> Or another way to solve above problem?

No need to fix, just a 'make' (possibly as a mere mortal user) followed by a
'make install' as SUPER.SUPER) is all you need.

> Thanks for your help.
> Best Regards.

Bye, Jojo

Joachim Schmitz

unread,
Aug 20, 2012, 5:38:48 AM8/20/12
to

dex5...@gmail.com

unread,
Aug 21, 2012, 4:14:44 AM8/21/12
to Joachim Schmitz
I install floss-1.3 correctly.
I retry to use "conf_script_floss_cc_put" to configure.
When I type "make", it still have usleep() error.
Should I give "conf_script_floss_cc_put" a path?
Or is another reason to cause it can't build?

By the way, I do these action in ../Floss/quickfix.
I tried do it in ../Floss and type "make quickfix".
It showed "`quickfix' is up to date.".
So I install quickfix in /Floss/quickfix.
Does it influence this problem?

Best regards.

Joachim Schmitz

unread,
Aug 22, 2012, 3:28:33 AM8/22/12
to
dex5...@gmail.com wrote:
> I install floss-1.3 correctly.
> I retry to use "conf_script_floss_cc_put" to configure.
> When I type "make", it still have usleep() error.

Ah, I see it now too, possible fix:
/usr/local/bin/diff -EBbu ./UnitTest++/Makefile.orig ./UnitTest++/Makefile
--- ./UnitTest++/Makefile.orig 2010-03-25 09:58:41 -0500
+++ ./UnitTest++/Makefile 2012-08-22 02:01:47 -0500
@@ -1,6 +1,6 @@
-CXX = g++
-CXXFLAGS ?= -g -Wall -W -Winline -ansi
-LDFLAGS ?=
+CXX = c++
+CXXFLAGS ?= -g -put
+LDFLAGS ?= -put
SED = sed
MV = mv
RM = rm


It should have inherited them from the toplevel makefile, not sure why it
did not?
Anyway, I seem to get much further with that change (after a make clean at
least)

> Should I give "conf_script_floss_cc_put" a path?

I don't understand that question

> Or is another reason to cause it can't build?
>
> By the way, I do these action in ../Floss/quickfix.
> I tried do it in ../Floss and type "make quickfix".
> It showed "`quickfix' is up to date.".

Oh, you'd either need to change ../Floss/Makefile to:
...
quickfix::
...
rather than just one :, or rename the quickfix dir to its original name,
quickfix-1.13.3

> So I install quickfix in /Floss/quickfix.
> Does it influence this problem?
>
> Best regards.

Bye, Jojo

dex5...@gmail.com

unread,
Aug 22, 2012, 4:15:44 AM8/22/12
to Joachim Schmitz
Oh, I used #ifndef __TANDEM...#endif to sovle "usleep" before you response.
After I saw your answer, I changed my way.

The next error message is:

/quickfix/UnitTest++/src/tests/../TestSuite.h", line 7: warning(734):
function GetSuiteName not inlined

I modified quickfix/Makefile.in directly, see below:

-SUBDIRS = UnitTest++ bin spec test examples doc
+SUBDIRS = bin spec test examples doc

I think it will ignore UnitTest++ directory, but I don't know what problem will it have in the future.
After this modified, I execute again.
The message showed:

m_threadID = 0;
^
"/home/syscom/MARK/quickfix/src/C++/test/../Mutex.h", line 39: error(430):
none of the available operator functions matches these operands
operand types are: pthread_t = int

if ( m_count && m_threadID == pthread_self() )
^
"/home/syscom/MARK/quickfix/src/C++/test/../Mutex.h", line 62: error(430):
none of the available operator functions matches these operands
operand types are: pthread_t == pthread_t

m_threadID = 0;
^
"/home/syscom/MARK/quickfix/src/C++/test/../Mutex.h", line 78: error(430):
none of the available operator functions matches these operands
operand types are: pthread_t = int

3 errors detected in the compilation of "FileLogTestCase.cpp".

Ok,I'm in the pthreads error now.
I stop here and will try to fix it tomorrow.

Best Regards.

Joachim Schmitz

unread,
Aug 22, 2012, 6:04:11 AM8/22/12
to
dex5...@gmail.com wrote:
> Oh, I used #ifndef __TANDEM...#endif to sovle "usleep" before you
> response.
> After I saw your answer, I changed my way.
>
> The next error message is:
>
> /quickfix/UnitTest++/src/tests/../TestSuite.h", line 7: warning(734):
> function GetSuiteName not inlined

just a warning, ignore it.

> I modified quickfix/Makefile.in directly, see below:
>
> -SUBDIRS = UnitTest++ bin spec test examples doc
> +SUBDIRS = bin spec test examples doc
>
> I think it will ignore UnitTest++ directory, but I don't know what
> problem will it have in the future. After this modified, I execute
> again.
> The message showed:
>
> m_threadID = 0;
> ^
> "/home/syscom/MARK/quickfix/src/C++/test/../Mutex.h", line 39:
> error(430): none of the available operator functions matches
> these operands operand types are: pthread_t = int
>
> if ( m_count && m_threadID == pthread_self() )
> ^
> "/home/syscom/MARK/quickfix/src/C++/test/../Mutex.h", line 62:
> error(430): none of the available operator functions matches
> these operands operand types are: pthread_t == pthread_t
>
> m_threadID = 0;
> ^
> "/home/syscom/MARK/quickfix/src/C++/test/../Mutex.h", line 78:
> error(430): none of the available operator functions matches
> these operands operand types are: pthread_t = int
>
> 3 errors detected in the compilation of "FileLogTestCase.cpp".

yes I got that far too, and here I'll give up. C++ plus PThreads, brrr...

> Ok,I'm in the pthreads error now.
> I stop here and will try to fix it tomorrow.

Let me know how far you get.

Bye, Jojo

dex5...@gmail.com

unread,
Aug 23, 2012, 4:33:38 AM8/23/12
to Joachim Schmitz
I found the error is not about "GetSuiteName".
It seems caused by sed.
The error message:

"/home/syscom/MARK/quickfix/UnitTest++/src/tests/../TestSuite.h", line 7: warning(734):
function GetSuiteName not inlined

c89: /usr/bin/eld exited, returning 1.
sed: Missing newline at end of file src/tests/TestChecks.d.tmp.
make[2]: *** [src/tests/TestChecks.o] Error 2
make[2]: Leaving directory `/home/syscom/MARK/quickfix/UnitTest++'

Another problem "pthread", there have no good news today.
Some problems:
Does the error message mean that I don't have the "pthread" function?
Can the "pth" package in ituglib help me?

I found there have a "pthread.h" file in floss.
I opened it and it just had a message:
#error "Don't include pthread.h from here."
Does it broken? Is it the same "pthread" that I need?

I still not in the correctly way.
Maybe all my questions can not help me in this problem.
I can just trial and error of each things that I guest.

Best Regards.

Joachim Schmitz

unread,
Aug 23, 2012, 5:30:47 AM8/23/12
to
dex5...@gmail.com wrote:
> I found the error is not about "GetSuiteName".
> It seems caused by sed.
> The error message:
>
> "/home/syscom/MARK/quickfix/UnitTest++/src/tests/../TestSuite.h",
> line 7: warning(734): function GetSuiteName not inlined

What? 'sed' may be at fault at times, but I'm 99.999% sure that this it it
is not.
Thus message comes from the compiler and it just tells us that the expresion
was too difficult for the compiler to generate inline code for it.

> c89: /usr/bin/eld exited, returning 1.
> sed: Missing newline at end of file src/tests/TestChecks.d.tmp.

This is sed though. And I didn't see that error, probably because I wasn't
useing /bin/sed but /usr/local/bin/sed? Or vice versa, not sure. Which are
you using?

> make[2]: *** [src/tests/TestChecks.o] Error 2
> make[2]: Leaving directory `/home/syscom/MARK/quickfix/UnitTest++'
>
> Another problem "pthread", there have no good news today.
> Some problems:
> Does the error message mean that I don't have the "pthread" function?
> Can the "pth" package in ituglib help me?

Maybe. But it is quite old, 2007 or older.
So I'd rather use PUT, HP NonStop's POSIX User Threads

> I found there have a "pthread.h" file in floss.
> I opened it and it just had a message:
> #error "Don't include pthread.h from here."
> Does it broken? Is it the same "pthread" that I need?

No. It is to support GNU Portable Threads (pth), been part of floss since
ages and I'm not sure at all whether it still should be in floss.
When it got added to floss, /usr/include/pthread.h didn't exist (I think),
that is the PUT one.
/usr/include/spthread may have existed then alreads, that is the SPT one (HP
NonStop Standard POSIX Threads)

The problem with threads is that there are some mani of them:

GNU Portable Threads, in 2 flavours (supported in floss via cc's
options -pth and -pthread), from ITUGLIB, and a whole bunch from HP:
DCE Threads (part of DCE)
Draft POSIX Threads, T5819 (TNS/R only, I believe)
Standard POSIX threads, T1248 (cc -spthread or cc -spt)
POSIX User Threats, T1280 (cc -put)
GTHREADS (part of T9050)

It is a mess, really...

> I still not in the correctly way.
> Maybe all my questions can not help me in this problem.
> I can just trial and error of each things that I guest.

That's the way to go, basically....

Mike yesterday mentioine that there is a Qucifix for Java. maybe that's an
option fo you? Check http://www.quickfixj.org/

> Best Regards.

Bye, Jojo

dex5...@gmail.com

unread,
Aug 24, 2012, 5:06:25 AM8/24/12
to Joachim Schmitz
Yes, I used "/bin/sed" before.
After I used "/usr/local/bin/sed", the error is disappear.

Today, I don't have any process on "pthread".
Because I get some trouble in my tandem oss(I solved it already).

I had suggested my manager to use quickfix/jave before.
But he said the other people prefer c++.
I think it is hard to change the language.

Best regards.

dex5...@gmail.com

unread,
Aug 29, 2012, 4:53:21 AM8/29/12
to Joachim Schmitz
Today, the director helps me to solve pthread problem.
Then it was solved.
Here is the solved way:

src/C++/Mutex.h
-m_threadID = 0 ;
+m_threadID = pthread_self();

-if(m_count && m_threadID == pthread_self() )
+if(m_count && pthread_equal(m_threadID, pthread_self() )

pthread_equal() method is in "pth" package.
The other pthread problem almost can use the same way to solve.

After pthread, I had another error message:

while( nanosleep(&time, &remainder) == -1 )
^
"/home/syscom/MARK/quickfix/src/C++/Utility.cpp", line 545: error(114):
identifier "nanosleep" is undefined

Is it the same with usleep?

Keith Dick

unread,
Aug 29, 2012, 4:30:13 PM8/29/12
to
I'm not quite sure what your question means. I remember that you had a problem with usleep(). I think you solved it by including its definition from spthread.h, but I'm not certain that is what you did. You cannot solve the problem with nanosleep() in a similar way, because, as far as I can tell from the manuals, OSS does not have nanosleep(), unless it is documented somewhere I did not look.

When I look at the description of nanosleep() here:

http://linux.die.net/man/2/nanosleep

and compare it to the description of usleep() in the OSS Library Calls Reference Manual, it appears that it would not be very hard to write a function that uses usleep() to approximate the action of nanosleep(). If you want help writing such a function, I or the others here could post some code that probably would serve.

The substitute would convert nanoseconds to microseconds and so theoretically would not be as precise as a true implementation of nanosleep() would be. I use the word "theoretically" because I don't know whether Linux implementations of nanosleep() actually operate with nanosecond resolution. I have a feeling that operating only with microsecond resolution would, itself, not be a problem for Quickfix, but I do not know that is true.

I notice that the documentation of usleep() in the OSS Library Calls Reference Manual differs from the documentation of usleep() at the linux.die.net site that is linked to from the description of nanosleep() that I referenced above. The description at the linux.die.net site says that usleep() returns 0 or -1, while the description in the OSS Library Calls manual says that usleep() returns 0 or -1 or the number of microseconds still remaining in the sleep interval if the sleep was interrupted by a signal. So if you solved the earlier problem with usleep() by including its definition from spthread.h, the OSS usleep() might not act as the Quickfix code expects. I have no idea whether that actually would be a problem or not. I just mention it to alert you to that possible problem once you finally get Quickfix to build.

Joachim Schmitz

unread,
Aug 29, 2012, 7:40:46 PM8/29/12
to
dex5...@gmail.com wrote:
> Today, the director helps me to solve pthread problem.
> Then it was solved.
> Here is the solved way:
>
> src/C++/Mutex.h
> -m_threadID = 0 ;
> +m_threadID = pthread_self();
>
> -if(m_count && m_threadID == pthread_self() )
> +if(m_count && pthread_equal(m_threadID, pthread_self() )

This 'diff' is a tad short, where exactly, context, line numbers?

> pthread_equal() method is in "pth" package.

So you used pth, not put or spt?

> The other pthread problem almost can use the same way to solve.

I could not get it to work yet.

> After pthread, I had another error message:
>
> while( nanosleep(&time, &remainder) == -1 )
> ^
> "/home/syscom/MARK/quickfix/src/C++/Utility.cpp", line 545:
> error(114): identifier "nanosleep" is undefined

Haven't come that far yet, I still have pthread problems.

> Is it the same with usleep?

floss has a nanosleep, if that's whan you mean?

Bye, Jojo

dex5...@gmail.com

unread,
Aug 30, 2012, 5:05:40 AM8/30/12
to Joachim Schmitz
Thanks for your opinions.
I solved nanosleep by using floss.

I post the more detailed diff below again:

../quickfix/src/C++/Mutex.h
#else
m_count = 0;
ln40- m_threadID = 0;
ln40+ m_threadID = pthread_self();
//pthread_mutexattr_t attr;
#else
ln63)- if ( m_count && m_threadID==pthread_self() )
ln63)+ if ( m_count && pthread_equal(m_threadID, pthread_self()) )
{ ++m_count; return ; }
pthread_mutex_lock( &m_mutex );
++m_count;
m_threadID = pthread_self();
#endif

#else
if ( m_count > 1 )
{ m_count--; return ; }
--m_count;
ln78)- m_threadID = 0;
ln78)+ m_threadID = pthread_self();
pthread_mutex_unlock( &m_mutex );
#endif

The other pthread error almost can use the same way to solve.
If saw the error like "if(m_threadid)", just add "&" before "m_threadid", like this "if(&m_threadid)"

I still use "conf_script_floss_cc_put" to configure.
I found it doesn't use "pth" package, it use "/usr/include/pthread.h".

Best Regards.

Joachim Schmitz

unread,
Aug 30, 2012, 12:33:31 PM8/30/12
to
dex5...@gmail.com wrote:
> Thanks for your opinions.
> I solved nanosleep by using floss.

Yep. that should do the trick.

> I post the more detailed diff below again:
>
> ../quickfix/src/C++/Mutex.h
> #else
> m_count = 0;
> ln40- m_threadID = 0;
> ln40+ m_threadID = pthread_self();
> //pthread_mutexattr_t attr;
> #else
> ln63)- if ( m_count && m_threadID==pthread_self() )
> ln63)+ if ( m_count && pthread_equal(m_threadID, pthread_self()) )
> { ++m_count; return ; }
> pthread_mutex_lock( &m_mutex );
> ++m_count;
> m_threadID = pthread_self();
> #endif
>
> #else
> if ( m_count > 1 )
> { m_count--; return ; }
> --m_count;
> ln78)- m_threadID = 0;
> ln78)+ m_threadID = pthread_self();
> pthread_mutex_unlock( &m_mutex );
> #endif

Yes, I found those, still the diff style is a bit strange...

> The other pthread error almost can use the same way to solve.

I apparently gave up too early, it is not that many files that need to get
amended.

> If saw the error like "if(m_threadid)", just add "&" before
> "m_threadid", like this "if(&m_threadid)"

Ah, this was the missing link, I'm getting much further now!
It seems there's now only one file I can't get to compile:
libtool: compile:
c++ -put -DHAVE_CONFIG_H -I. -I../.. -I. -I.. -I../.. -g -I/usr/local/include/libxml2
-c CallStack.cpp -o CallStack.o

return (_Left < _Right);

^

"/usr/include/functional", line 181: error(430): none of the available

operator functions matches these operands

operand types are: const FIX::thread_id < const FIX::thread_id

detected during instantiation of "bool

std::less<_Ty>::operator()(const _Ty &, const _Ty &)
const

[with _Ty=FIX::thread_id]" at line 211 of

"/usr/include/map"





1 error detected in the compilation of "CallStack.cpp".

c89: /usr/cmplr/ccombe exited, returning 2.


No idea how to fix that.

> I still use "conf_script_floss_cc_put" to configure.
> I found it doesn't use "pth" package, it use "/usr/include/pthread.h".

Yep, me too

Bye, Jojo

PS: Here's my full diff output (beware of tabs, spaces and linefeeds):


'cd' into source dir and apply with
/usr/local/bin/patch -p0 -b -z.orig

/usr/local/bin/diff -EBbu ./UnitTest++/Makefile.orig ./UnitTest++/Makefile
--- ./UnitTest++/Makefile.orig 2010-03-25 09:58:41 -0500
+++ ./UnitTest++/Makefile 2012-08-22 02:17:48 -0500
@@ -1,6 +1,6 @@
-CXX = g++
-CXXFLAGS ?= -g -Wall -W -Winline -ansi
-LDFLAGS ?=
+CXX = c++
+CXXFLAGS ?= -g -put
+LDFLAGS ?= -put
SED = sed
MV = mv
RM = rm
@@ -57,7 +57,7 @@
test_dependencies = $(subst .o,.d,$(test_objects))

define make-depend
- $(CXX) $(CXXFLAGS) -M $1 | \
+ $(CXX) $(CXXFLAGS) $1 | \
$(SED) -e 's,\($(notdir $2)\) *:,$(dir $2)\1: ,' > $3.tmp
$(SED) -e 's/#.*//' \
-e 's/^[^:]*: *//' \
@@ -95,7 +95,7 @@

check:

-ifneq "$(MAKECMDGOALS)" "clean"
--include $(dependencies)
--include $(test_dependencies)
-endif
+#ifneq "$(MAKECMDGOALS)" "clean"
+#-include $(dependencies)
+#-include $(test_dependencies)
+#endif
/usr/local/bin/diff -EBbu ./UnitTest++/src/Config.h.orig
./UnitTest++/src/Config.h
--- ./UnitTest++/src/Config.h.orig 2010-01-03 13:09:13 -0600
+++ ./UnitTest++/src/Config.h 2012-08-16 04:11:12 -0500
@@ -15,7 +15,8 @@
#endif

#if defined(unix) || defined(__unix__) || defined(__unix) || defined(linux)
|| \
- defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__) ||
define
d(__FreeBSD__)
+ defined(__APPLE__) || defined(__NetBSD__) || defined(__OpenBSD__) || \
+ defined(__FreeBSD__) || defined(__TANDEM)
#define UNITTEST_POSIX
#endif

/usr/local/bin/diff -EBbu ./UnitTest++/src/Posix/SignalTranslator.cpp.orig
./UnitTest++/src/Posix/SignalTranslator.cpp
--- ./UnitTest++/src/Posix/SignalTranslator.cpp.orig 2010-01-03
13:09:13 -0600
+++ ./UnitTest++/src/Posix/SignalTranslator.cpp 2012-08-16 04:19:18 -0500
@@ -26,16 +26,24 @@

sigaction( SIGSEGV, &action, &m_old_SIGSEGV_action );
sigaction( SIGFPE , &action, &m_old_SIGFPE_action );
+#ifdef SIGTRAP
sigaction( SIGTRAP, &action, &m_old_SIGTRAP_action );
+#endif
+#ifdef SIGBUS
sigaction( SIGBUS , &action, &m_old_SIGBUS_action );
+#endif
sigaction( SIGILL , &action, &m_old_SIGBUS_action );
}

SignalTranslator::~SignalTranslator()
{
sigaction( SIGILL , &m_old_SIGBUS_action , 0 );
+#ifdef SIGBUS
sigaction( SIGBUS , &m_old_SIGBUS_action , 0 );
+#endif
+#ifdef SIGTRAP
sigaction( SIGTRAP, &m_old_SIGTRAP_action, 0 );
+#endif
sigaction( SIGFPE , &m_old_SIGFPE_action , 0 );
sigaction( SIGSEGV, &m_old_SIGSEGV_action, 0 );

/usr/local/bin/diff -EBbu ./config/config.sub.orig ./config/config.sub
--- ./config/config.sub.orig 2010-04-05 21:00:24 -0500
+++ ./config/config.sub 2012-08-07 11:34:01 -0500
@@ -823,6 +823,12 @@
np1)
basic_machine=np1-gould
;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
nsr-tandem)
basic_machine=nsr-tandem
;;
/usr/local/bin/diff -EBbu ./configure.orig ./configure
--- ./configure.orig 2010-04-05 21:00:26 -0500
+++ ./configure 2012-08-16 03:41:03 -0500
@@ -15400,7 +15400,8 @@
# libs
LIBS="$STLPORT_LIBS $XML_LIBS $MYSQL_LIBS $POSTGRESQL_LIBS $LIBS"
# gcc flags
-SHAREDFLAGS="-Wall -ansi -Wpointer-arith -Wwrite-strings $BOOST_CFLAGS
$STLPORT_CFLAGS $MYSQL_CFLAGS $POSTGRESQL_CFLAGS $XML_CPPFLAGS $XML_CFLAGS
$PYTHON_CFLAGS $RUBY_CFLAGS"
+#SHAREDFLAGS="-Wall -ansi -Wpointer-arith -Wwrite-strings $BOOST_CFLAGS
$STLPORT_CFLAGS $MYSQL_CFLAGS $POSTGRESQL_CFLAGS $XML_CPPFLAGS $XML_CFLAGS
$PYTHON_CFLAGS $RUBY_CFLAGS" # __TANDEM: no gcc here!
+SHAREDFLAGS="$BOOST_CFLAGS $STLPORT_CFLAGS $MYSQL_CFLAGS $POSTGRESQL_CFLAGS
$XML_CPPFLAGS $XML_CFLAGS $PYTHON_CFLAGS $RUBY_CFLAGS"
CFLAGS="$CFLAGS $SHAREDFLAGS"

CXXFLAGS="$CXXFLAGS $SHAREDFLAGS"
/usr/local/bin/diff -EBbu ./examples/tradeclientgui/banzai/build.sh.orig
./examples/tradeclientgui/banzai/build.sh
--- ./examples/tradeclientgui/banzai/build.sh.orig 2010-02-23
21:35:39 -0600
+++ ./examples/tradeclientgui/banzai/build.sh 2012-08-16 02:18:07 -0500
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/env bash
WHICH_JAVA=$(which java)
if [ $? != 0 ] ; then
exit 0
/usr/local/bin/diff -EBbu ./src/C++/Acceptor.cpp.orig ./src/C++/Acceptor.cpp
--- ./src/C++/Acceptor.cpp.orig 2012-08-30 04:14:04 -0500
+++ ./src/C++/Acceptor.cpp 2012-08-30 04:13:25 -0500
@@ -38,7 +38,11 @@
MessageStoreFactory& messageStoreFactory,
const SessionSettings& settings )
throw( ConfigError )
+#ifdef __TANDEM
+ : m_threadid( pthread_self() ),
+#else
: m_threadid( 0 ),
+#endif
m_application( application ),
m_messageStoreFactory( messageStoreFactory ),
m_settings( settings ),
@@ -55,7 +59,11 @@
const SessionSettings& settings,
LogFactory& logFactory )
throw( ConfigError )
+#ifdef __TANDEM
+ : m_threadid( pthread_self() ),
+#else
: m_threadid( 0 ),
+#endif
m_application( application ),
m_messageStoreFactory( messageStoreFactory ),
m_settings( settings ),
@@ -243,9 +251,15 @@

m_stop = true;
onStop();
+#ifdef __TANDEM
+ if( &m_threadid )
+ thread_join( m_threadid );
+ m_threadid = pthread_self();
+#else
if( m_threadid )
thread_join( m_threadid );
m_threadid = 0;
+#endif

std::vector<Session*>::iterator session = enabledSessions.begin();
for( ; session != enabledSessions.end(); ++session )
/usr/local/bin/diff -EBbu ./src/C++/CallStack.cpp.orig
./src/C++/CallStack.cpp
--- ./src/C++/CallStack.cpp.orig 2010-02-25 20:05:58 -0600
+++ ./src/C++/CallStack.cpp 2012-08-30 06:11:55 -0500
@@ -68,7 +68,11 @@
{
Context& c = i->second;
if(c.size())
+#ifdef __TANDEM
+ std::cerr << "thread(" << &(i->first) << "):" << c.exception <<
std::endl;
+#else
std::cerr << "thread(" << i->first << "):" << c.exception <<
std::endl;
+#endif
while(c.size())
{
std::cerr << " at " << c.top() << std::endl;
/usr/local/bin/diff -EBbu ./src/C++/HttpServer.cpp.orig
./src/C++/HttpServer.cpp
--- ./src/C++/HttpServer.cpp.orig 2009-02-23 16:57:40 -0600
+++ ./src/C++/HttpServer.cpp 2012-08-30 04:53:12 -0500
@@ -65,7 +65,11 @@
}

HttpServer::HttpServer( const SessionSettings& settings ) throw(
ConfigError )
+#ifdef __TANDEM
+: m_pServer( 0 ), m_settings( settings ), m_threadid( pthread_self() ),
m_port( 0 ), m_stop false ) {}
+#else
: m_pServer( 0 ), m_settings( settings ), m_threadid( 0 ), m_port( 0 ),
m_stop( false ) {}
+#endif

void HttpServer::onConfigure( const SessionSettings& s )
throw ( ConfigError )
@@ -111,9 +115,15 @@
m_stop = true;
onStop();

+#ifdef __TANDEM
+ if( &m_threadid )
+ thread_join( m_threadid );
+ m_threadid = pthread_self();
+#else
if( m_threadid )
thread_join( m_threadid );
m_threadid = 0;
+#endif

QF_STACK_POP
}
/usr/local/bin/diff -EBbu ./src/C++/Initiator.cpp.orig
./src/C++/Initiator.cpp
--- ./src/C++/Initiator.cpp.orig 2010-03-06 20:02:15 -0600
+++ ./src/C++/Initiator.cpp 2012-08-30 04:19:43 -0500
@@ -37,7 +37,11 @@
Initiator::Initiator( Application& application,
MessageStoreFactory& messageStoreFactory,
const SessionSettings& settings ) throw(
ConfigError )
+#ifdef __TANDEM
+: m_threadid( pthread_self() ),
+#else
: m_threadid( 0 ),
+#endif
m_application( application ),
m_messageStoreFactory( messageStoreFactory ),
m_settings( settings ),
@@ -50,7 +54,11 @@
MessageStoreFactory& messageStoreFactory,
const SessionSettings& settings,
LogFactory& logFactory ) throw( ConfigError )
+#ifdef __TANDEM
+: m_threadid( pthread_self() ),
+#else
: m_threadid( 0 ),
+#endif
m_application( application ),
m_messageStoreFactory( messageStoreFactory ),
m_settings( settings ),
@@ -300,9 +308,15 @@

m_stop = true;
onStop();
+#ifdef __TANDEM
+ if( &m_threadid )
+ thread_join( m_threadid );
+ m_threadid = pthread_self();
+#else
if( m_threadid )
thread_join( m_threadid );
m_threadid = 0;
+#endif

std::vector<Session*>::iterator session = enabledSessions.begin();
for( ; session != enabledSessions.end(); ++session )
/usr/local/bin/diff -EBbu ./src/C++/Mutex.h.orig ./src/C++/Mutex.h
--- ./src/C++/Mutex.h.orig 2006-01-26 12:33:35 -0600
+++ ./src/C++/Mutex.h 2012-08-29 04:57:37 -0500
@@ -36,7 +36,11 @@
InitializeCriticalSection( &m_mutex );
#else
m_count = 0;
+#ifdef __TANDEM
+ m_threadID = pthread_self();
+#else
m_threadID = 0;
+#endif
//pthread_mutexattr_t attr;
//pthread_mutexattr_init(&attr);
//pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
@@ -59,7 +63,11 @@
#ifdef _MSC_VER
EnterCriticalSection( &m_mutex );
#else
+#ifdef __TANDEM
+ if ( m_count && pthread_equal(m_threadID, pthread_self()) )
+#else
if ( m_count && m_threadID == pthread_self() )
+#endif
{ ++m_count; return ; }
pthread_mutex_lock( &m_mutex );
++m_count;
@@ -75,7 +83,11 @@
if ( m_count > 1 )
{ m_count--; return ; }
--m_count;
+#ifdef __TANDEM
+ m_threadID = pthread_self();
+#else
m_threadID = 0;
+#endif
pthread_mutex_unlock( &m_mutex );
#endif
}
/usr/local/bin/diff -EBbu ./src/C++/Utility.cpp.orig ./src/C++/Utility.cpp
--- ./src/C++/Utility.cpp.orig 2010-02-27 11:56:42 -0600
+++ ./src/C++/Utility.cpp 2012-08-30 04:57:43 -0500
@@ -35,6 +35,13 @@
#include <algorithm>
#include <fstream>

+#ifdef __TANDEM
+#define _FLOSS_USE_NANOSLEEP
+extern "C" {
+#include <floss.h(floss_nanosleep)>;
+}
+#endif
+
namespace FIX
{
void string_replace( const std::string& oldValue,
@@ -484,7 +491,11 @@
result = _beginthreadex( NULL, 0, &func, var, 0, &id );
if ( result == 0 ) return false;
#else
+#ifdef __TANDEM
+ thread_id result = pthread_self();
+#else
thread_id result = 0;
+#endif
if( pthread_create( &result, 0, func, var ) != 0 ) return false;
#endif
thread = result;
@@ -493,7 +504,11 @@

bool thread_spawn( THREAD_START_ROUTINE func, void* var )
{
+#ifdef __TANDEM
+ thread_id thread = pthread_self();
+#else
thread_id thread = 0;
+#endif
return thread_spawn( func, var, thread );
}


dex5...@gmail.com

unread,
Sep 2, 2012, 10:43:47 PM9/2/12
to Joachim Schmitz
About "diff", I wrote these by manual.
Because I modified the source code on my computer, then upload to Tandem OSS.

About problem "return (_Left < _Right);"
I still try to find way to solve this problem.
And I believe quickfix can be built after this problem...

By the way, thanks your full diff output.
It's very clear and useful.

Best Regards.

Joachim Schmitz

unread,
Sep 3, 2012, 7:16:03 AM9/3/12
to
dex5...@gmail.com wrote:
> About "diff", I wrote these by manual.
> Because I modified the source code on my computer, then upload to
> Tandem OSS.

Ah, OK

> About problem "return (_Left < _Right);"
> I still try to find way to solve this problem.
> And I believe quickfix can be built after this problem...

Yes, I too believe this to be the last road block to get it build
Then it needs testing of course ;-)

Bye, Jojo

yzg...@gmail.com

unread,
Oct 28, 2014, 11:08:12 AM10/28/14
to
I had the same problem with gcc 4.1.2 and tracked down the cause for the issue in my build environment to be my gcc not supporting the -std=c++0x option. I hacked the configure as follows and configure runs through ok.

16317c16317,16320
< CXXFLAGS="$CXXFLAGS $SHAREDFLAGS -std=c++0x"
---
> CXXFLAGS="$CXXFLAGS $SHAREDFLAGS"
> if test echo "" | g++ -std=c++0x -E - ; then
> CXXFLAGS="$CXXFLAGS -std=c++0x"
> fi



On Tuesday, July 31, 2012 1:20:25 AM UTC-4, Keith wrote:
> dex5...@gmail.com wrote:
> > To Keith,
>
> You probably should not include "To Keith" in your posts. That might make others think that you don't want them to answer. However, I'm not an expert on building open source software on OSS, and someone else might be better able to answer your questions than I am. I will continue to try to answer, if no one else does.
>
> >
> > All the package that I need were installed.
> > When I tried to type "./configure", it showed:
> >
> > checking for libxml - version >= 2.0.0... no
> > *** Could not run libxml test program, checking why...
> > *** The test program failed to compile or link. See the file config.log for the
> > *** exact error that occured. This usually means LIBXML was incorrectly installed
> > *** or that you have moved LIBXML since it was installed. In the latter case, you
> > *** may want to edit the xml2-config script: /usr/local/bin/xml2-config
> > configure: error: libxml2 must be installed.
> >
> > The "libxml2" package was downloaded from the website that you gave me.
> > I had install it already.
> > The version is "2.6.24".
>
> Were you able to find the file config.log that the message above mentions? If so, were you able to find the messages in it that tell about compiling and linking the libxml test program? Those messages might give us an idea about why this was not able to find libxml, even though you believe you installed it.
> >
> >
> >
> > I also type another code "./configure --disable-xmltest" and it showed:
> >
> > checking for set_terminate in the global namespace... no
> > checking for set_terminate in the std namespace... no
> > configure: error: unable to find set_terminate in std or global namespace
> >
> > Is it mean I don't have C++ library?
> > But I can run my test c++ code on oss.
> > Here is my test code:
> >
> > #include <iostream>
> > using namespace std;
> >
> > int main() {
> > cout << "Hello! World!\n";
> > return 0;
> > }
>
> You certainly have the C++ library. However, it seems that you don't have the set_terminate() function that is supposed to be in the library. HP C++ supports three versions of library. Maybe not all three versions include set_terminate(), and maybe your compilations are using a library version that does not include set_terminate(). But I believe the default if no version is specified is to use the latest version, VERSION3, and I would be surprised if set_terminate() is not in Version3.
>
> Try writing a test program that uses set_terminate(). Compile and run it specifying the VERSION1, VERSION2, and VERSION3 pragmas on the compiler command line and see whether all three libraries include set_terminate(). If not all three do, check which library version your builds use (I'm not sure how you can determine this), and make sure it is a version that includes set_terminate().
> >
> > Sorry...
> > There have a lot of problems.
> > Thank you very much that always help me to solve my problem.
> >
> > Best Regards.

yzg...@gmail.com

unread,
Oct 28, 2014, 12:35:24 PM10/28/14
to
Also needed to run make with
CXXFLAGS="-DHAVE_STD_TR1_SHARED_PTR=1 -g -Wall -W -Winline -Wno-overloaded-virtual -ansi"
and to hack src/C++/test/SessionTestCase.cpp as follows:

618c618
< provider.addTransportDataDictionary( BeginString("FIX.4.2"), std::shared_ptr<DataDictionary>(new DataDictionary()) );
---
> provider.addTransportDataDictionary( BeginString("FIX.4.2"), ptr::shared_ptr<DataDictionary>(new DataDictionary()) );
689c689
< provider.addTransportDataDictionary( BeginString("FIX.4.2"), std::shared_ptr<DataDictionary>(new DataDictionary()) );
---
> provider.addTransportDataDictionary( BeginString("FIX.4.2"), ptr::shared_ptr<DataDictionary>(new DataDictionary()) );
744c744
< provider.addTransportDataDictionary( BeginString("FIX.4.2"), std::shared_ptr<DataDictionary>(new DataDictionary()) );
---
> provider.addTransportDataDictionary( BeginString("FIX.4.2"), ptr::shared_ptr<DataDictionary>(new DataDictionary()) );

red floyd

unread,
Oct 28, 2014, 4:54:03 PM10/28/14
to
On 10/28/2014 8:08 AM, yzg...@gmail.com wrote:
> I had the same problem with gcc 4.1.2 and tracked down the cause for the issue in my build environment to be my gcc not supporting the -std=c++0x option. I hacked the configure as follows and configure runs through ok.


Gcc has a Tandem port?????? Where?

Keith Dick

unread,
Oct 30, 2014, 5:12:51 AM10/30/14
to
I would be surprised if there were an OSS port of gcc. I imagine these posts are about how the problem of building Quickfix was fixed on some other system. It might point to the place where the problem can be fixed for an OSS build of Quickfix. But if someone has managed to get gcc running on OSS, even a fairly old version such as 4.1.2, that certainly would be interesting news.

wilso...@gmail.com

unread,
Jul 21, 2016, 4:09:49 PM7/21/16
to
On Wednesday, July 25, 2012 at 12:08:40 AM UTC-4, dex5...@gmail.com wrote:
> I'm trying to build Quickfix(a FIX protocol engine) on tandem oss
> But It really difficult for me
> I have sucess build it in Linux environment
>
> Does anyone who had sucess build it on tandem oss?
> Can anyone tell me the details to build it?
>
> Thanks for your helps.
>
> Best Regard.


If anyone is coming here looking for a way to fix these library issues, one way I was able to resolve them was by setting the environment variable:

_RLD_LIB_PATH

By setting this to a specific path and then copying the ".so" library files from the HP Connect / ITUG open source ports, the library issues were resolved.

Thanks
0 new messages