[OS X TeX] Optimal Solution for an asymptotemk engine

Martin Costabel costabel at wanadoo.fr
Tue Apr 13 13:27:04 CEST 2010


Peter Dyballa wrote:
> 
> Am 12.04.2010 um 14:51 schrieb Martin Costabel:
> 
>> Now looking at today's asy version 1.92, which doesn't want to build 
>> on MacOSX 10.5...
> 
> 
> Some hints or details? I can easily make it compile (with GCC 4.0 and 
> 4.2 and LLVM-GCC 4.2 with -O0) or not compile (with LLVM-GCC 4.2 and 
> some optimisation or an LDFLAG like -dead-strip, in gc-7.1)...

I have now a Fink package for asymptote 1.92 that builds both on 10.5 
and 10.6.

On 10.5, it did not build, because asymptote-1.92, contrary to 1.91, 
includes <tr1/unordered_map>. The version of this that comes from 
c++-4.0.1 is apparently either incompatible with gc or just broken. It 
spits out long and incomprehensible error messages of the type

> g++ -Wall -ansi -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 -DUSEGC  -I/sw/include -Os  -I . -I/sw/include/gc -I/usr/include/gc -o settings.o -c settings.cc
> /usr/include/c++/4.0.0/tr1/hashtable: In copy constructor 'std::tr1::hashtable<Key, Value, Allocator, ExtractKey, Equal, H1, H2, H, RehashPolicy, cache_hash_code, mutable_iterators, unique_keys>::hashtable(const std::tr1::hashtable<Key, Value, Allocator, ExtractKey, Equal, H1, H2, H, RehashPolicy, cache_hash_code, mutable_iterators, unique_keys>&) [with Key = trans::venv::key, Value = std::pair<const trans::venv::key, trans::venv::value*>, Allocator = gc_allocator<std::pair<trans::venv::key, trans::venv::value*> >, ExtractKey = Internal::extract1st<std::pair<const trans::venv::key, trans::venv::value*> >, Equal = trans::venv::keyeq, H1 = trans::venv::keyhash, H2 = Internal::mod_range_hashing, H = Internal::default_ranged_hash, RehashPolicy = Internal::prime_rehash_policy, bool cache_hash_code = false, bool mutable_iterators = true, bool unique_keys = false]':
> /usr/include/c++/4.0.0/tr1/unordered_map:110:   instantiated from here
> /usr/include/c++/4.0.0/tr1/hashtable:1045: error: no matching function for call to 'std::tr1::hashtable<trans::venv::key, 
> std::pair<const trans::venv::key, trans::venv::value*>, gc_allocator<std::pair<trans::venv::key, trans::venv::value*> >, I
> nternal::extract1st<std::pair<const trans::venv::key, trans::venv::value*> >, trans::venv::keyeq, trans::venv::keyhash, In
> ternal::mod_range_hashing, Internal::default_ranged_hash, Internal::prime_rehash_policy, false, true, false>::m_allocate_n
> ode(Internal::hash_node<std::pair<const trans::venv::key, trans::venv::value*>, false>*&)'

and so on.

So for 10.5, I had to patch memory.h so that it does not include 
<tr1/unordered_map>. On 10.6, this is not necessary.

I also patched pipestream.h so that it uses SIGINT instead of SIGQUIT 
and the latex crash dumps go away.

If I have more time, I will take this to the asymptote authors.

-- 
Martin






More information about the macostex-archives mailing list