You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by Patrick Happel <ph...@quovadx.com> on 2007/04/12 17:51:15 UTC

Portability of built Standard Library

Hi all,
  I had a question come up that I wasn't sure about regarding the
released versions of the library, and I'm hoping someone can answer it:
Since the Standard Library doesn't build if an acceptable locale isn't
installed, can a built version of the library (ie a .lib, .dll, or .a
file) be used on a machine with different locales than the machine it
was built on?  I'd also like to verify that the newest version of the
library does not require any locales to be installed in order to build.
 
Thanks,
 -Patrick Happel
 
Rogue Wave Software, 
A QUOVADX(tm) division 
Technical Support 
Phone: 303-545-3205 -- 1-800-404-4767 
E-mail: support@roguewave.com <bl...@roguewave.com> 
Web: http://www.roguewave.com/support
<blocked::http://www.roguewave.com/support> 

Re: Portability of built Standard Library

Posted by Martin Sebor <se...@roguewave.com>.
Patrick Happel wrote:
> Martin,
>   I really appreciate your responses to this message, and the other one
> regarding locales.  This information should be enough to get the users
> I'm helping sorted out.  However, you didn't answer this question, which
> is the one I was specifically asked: Can a built version of the library
> (ie a .lib, .dll, or .a file) be used on a machine with different
> locales than the machine it was built on?  An answer would be
> appreciated!

Sorry about that. Compiling the latest sources on one of the
known platforms (including Solaris and Windows) should produce
the same binaries regardless of what locales were installed on
the system where the library was configured (the output of the
config test should be the same either way).

Martin

> 
> Thanks,
>  -Patrick
> 
> -----Original Message-----
> From: Martin Sebor [mailto:sebor@roguewave.com] 
> Sent: Thursday, April 12, 2007 11:15 AM
> To: stdcxx-dev@incubator.apache.org
> Subject: Re: Portability of built Standard Library
> 
> Patrick Happel wrote:
>> Hi all,
>>   I had a question come up that I wasn't sure about regarding the 
>> released versions of the library, and I'm hoping someone can answer
> it:
>> Since the Standard Library doesn't build if an acceptable locale isn't
> 
>> installed, can a built version of the library (ie a .lib, .dll, or .a
>> file) be used on a machine with different locales than the machine it 
>> was built on?
> 
> All you should need to build the old library on a platform with no
> locales is the new config test. In fact, you don't even need the test
> itself, you just need its output for the platform the customer is using.
> You can compile and run the test on the same platform that does have
> locales installed and get its output that way.
> 
> You can also see the output of the latest test on the nightly test
> results page here:
>    http://people.apache.org/~sebor/stdcxx/results/
> 
> Scroll down to the row for the customer's platform (build type shouldn't
> matter), and follow the (H) link to the config header.
> For example, the config header for Solaris 10 obtained with Sun
> C++ 5.8 is here:
> http://people.apache.org/~sebor/stdcxx/results/solaris-10-sparcv9-sunpro
> -64b-5.8-15s-cfg-h.gz.txt
> 
> Scroll down to the the line with _RWSTD_NO_LOCALE_NAME_FMAT on it. What
> follows (all the way to the line containing the _RWSTD_NO_CONDENSED_NAME
> macro) is the rest of the output of the test.
> 
>> I'd also like to verify that the newest version of the library does 
>> not require any locales to be installed in order to build.
> 
> Correct. I don't believe it does. It builds on Cygwin where I don't
> think there is any libc support for localization at all (unless that's
> changed in recent versions of Cygwin). I also just successfully built it
> on Solaris after replacing the libc setlocale() function with a dummy
> one in the test that always fails (see line 29 of the latest test). When
> the function fails (i.e., when the test fails to find any named
> locales), it falls back on the formats hardcoded for each platform. You
> can view the latest sources for the test
> here:
> http://svn.apache.org/repos/asf/incubator/stdcxx/trunk/etc/config/src/LO
> CALE_NAME_FMAT.cpp
> 
> The previous version (from stdcxx 4.1.3) is here:
> http://svn.apache.org/repos/asf/incubator/stdcxx/branches/4.1.3/etc/conf
> ig/src/LOCALE_NAME_FMAT.cpp
> 
> Martin
> 
>>  
>> Thanks,
>>  -Patrick Happel
>>  
>> Rogue Wave Software,
>> A QUOVADX(tm) division
>> Technical Support
>> Phone: 303-545-3205 -- 1-800-404-4767
>> E-mail: support@roguewave.com <bl...@roguewave.com>
>> Web: http://www.roguewave.com/support
>> <blocked::http://www.roguewave.com/support>
>>
> 


RE: Portability of built Standard Library

Posted by Patrick Happel <ph...@quovadx.com>.
Martin,
  I really appreciate your responses to this message, and the other one
regarding locales.  This information should be enough to get the users
I'm helping sorted out.  However, you didn't answer this question, which
is the one I was specifically asked: Can a built version of the library
(ie a .lib, .dll, or .a file) be used on a machine with different
locales than the machine it was built on?  An answer would be
appreciated!

Thanks,
 -Patrick

-----Original Message-----
From: Martin Sebor [mailto:sebor@roguewave.com] 
Sent: Thursday, April 12, 2007 11:15 AM
To: stdcxx-dev@incubator.apache.org
Subject: Re: Portability of built Standard Library

Patrick Happel wrote:
> Hi all,
>   I had a question come up that I wasn't sure about regarding the 
> released versions of the library, and I'm hoping someone can answer
it:
> Since the Standard Library doesn't build if an acceptable locale isn't

> installed, can a built version of the library (ie a .lib, .dll, or .a
> file) be used on a machine with different locales than the machine it 
> was built on?

All you should need to build the old library on a platform with no
locales is the new config test. In fact, you don't even need the test
itself, you just need its output for the platform the customer is using.
You can compile and run the test on the same platform that does have
locales installed and get its output that way.

You can also see the output of the latest test on the nightly test
results page here:
   http://people.apache.org/~sebor/stdcxx/results/

Scroll down to the row for the customer's platform (build type shouldn't
matter), and follow the (H) link to the config header.
For example, the config header for Solaris 10 obtained with Sun
C++ 5.8 is here:
http://people.apache.org/~sebor/stdcxx/results/solaris-10-sparcv9-sunpro
-64b-5.8-15s-cfg-h.gz.txt

Scroll down to the the line with _RWSTD_NO_LOCALE_NAME_FMAT on it. What
follows (all the way to the line containing the _RWSTD_NO_CONDENSED_NAME
macro) is the rest of the output of the test.

> I'd also like to verify that the newest version of the library does 
> not require any locales to be installed in order to build.

Correct. I don't believe it does. It builds on Cygwin where I don't
think there is any libc support for localization at all (unless that's
changed in recent versions of Cygwin). I also just successfully built it
on Solaris after replacing the libc setlocale() function with a dummy
one in the test that always fails (see line 29 of the latest test). When
the function fails (i.e., when the test fails to find any named
locales), it falls back on the formats hardcoded for each platform. You
can view the latest sources for the test
here:
http://svn.apache.org/repos/asf/incubator/stdcxx/trunk/etc/config/src/LO
CALE_NAME_FMAT.cpp

The previous version (from stdcxx 4.1.3) is here:
http://svn.apache.org/repos/asf/incubator/stdcxx/branches/4.1.3/etc/conf
ig/src/LOCALE_NAME_FMAT.cpp

Martin

>  
> Thanks,
>  -Patrick Happel
>  
> Rogue Wave Software,
> A QUOVADX(tm) division
> Technical Support
> Phone: 303-545-3205 -- 1-800-404-4767
> E-mail: support@roguewave.com <bl...@roguewave.com>
> Web: http://www.roguewave.com/support
> <blocked::http://www.roguewave.com/support>
> 


Re: Portability of built Standard Library

Posted by Martin Sebor <se...@roguewave.com>.
Patrick Happel wrote:
> Hi all,
>   I had a question come up that I wasn't sure about regarding the
> released versions of the library, and I'm hoping someone can answer it:
> Since the Standard Library doesn't build if an acceptable locale isn't
> installed, can a built version of the library (ie a .lib, .dll, or .a
> file) be used on a machine with different locales than the machine it
> was built on?

All you should need to build the old library on a platform with
no locales is the new config test. In fact, you don't even need
the test itself, you just need its output for the platform the
customer is using. You can compile and run the test on the same
platform that does have locales installed and get its output
that way.

You can also see the output of the latest test on the nightly
test results page here:
   http://people.apache.org/~sebor/stdcxx/results/

Scroll down to the row for the customer's platform (build type
shouldn't matter), and follow the (H) link to the config header.
For example, the config header for Solaris 10 obtained with Sun
C++ 5.8 is here:
http://people.apache.org/~sebor/stdcxx/results/solaris-10-sparcv9-sunpro-64b-5.8-15s-cfg-h.gz.txt

Scroll down to the the line with _RWSTD_NO_LOCALE_NAME_FMAT
on it. What follows (all the way to the line containing the
_RWSTD_NO_CONDENSED_NAME macro) is the rest of the output of
the test.

> I'd also like to verify that the newest version of the
> library does not require any locales to be installed in order to build.

Correct. I don't believe it does. It builds on Cygwin where
I don't think there is any libc support for localization at
all (unless that's changed in recent versions of Cygwin). I
also just successfully built it on Solaris after replacing
the libc setlocale() function with a dummy one in the test
that always fails (see line 29 of the latest test). When
the function fails (i.e., when the test fails to find any
named locales), it falls back on the formats hardcoded for
each platform. You can view the latest sources for the test
here:
http://svn.apache.org/repos/asf/incubator/stdcxx/trunk/etc/config/src/LOCALE_NAME_FMAT.cpp

The previous version (from stdcxx 4.1.3) is here:
http://svn.apache.org/repos/asf/incubator/stdcxx/branches/4.1.3/etc/config/src/LOCALE_NAME_FMAT.cpp

Martin

>  
> Thanks,
>  -Patrick Happel
>  
> Rogue Wave Software, 
> A QUOVADX(tm) division 
> Technical Support 
> Phone: 303-545-3205 -- 1-800-404-4767 
> E-mail: support@roguewave.com <bl...@roguewave.com> 
> Web: http://www.roguewave.com/support
> <blocked::http://www.roguewave.com/support> 
>