------------------------------------------------------------------------------
Bug #19 (partially fixed: upgrade to mupad >= 2005-01-25)

There is an incompatibility between the IPC dynamic modules compiled
with gcc 3.4 and libstdc++.so.6 and kernels of mupad compiled with
libstdc++.so.3 (that is all kernel of MuPAD before 2005-01-25).

Diagnostic: The test file IPC/IPC.tst either crashes, or complains
about a return value of "koucou" instead of "coucou": the ascii code
of the first character returned by IPC::getline is shifted by 8.

Without optimisation, the test dynamic module src/IPC/fdstest5.mdm
segfaults at the destruction of the fdistream:

#0  std::locale::_Impl::_M_remove_reference (this=0x6f630a74)
    at /wiwianka/user/ccr/bursar/src/gcc-build/i686-pc-linux-gnu/libstdc++-v3/include/bits/localefwd.h:329
#1  0x00742d0d in std::locale::~locale (__in_chrg=0x8381f08)
    at ../../../../gcc-3.0.3/libstdc++-v3/src/locale.cc:326
#2  0x081bb485 in std::basic_streambuf<char, std::char_traits<char> >::~basic_streambuf ()
#3  0x006d2164 in ~fdinbuf (this=0x8381ed8) at fdstream.hpp:187
#4  0x006d2537 in ~fdistream (this=0x8381ed0) at popen.cc:187

With optimisation (even -O1), the crash occurs even earlier, but we
don't know precisely where.

------------------------------------------------------------------------------
Bug #10:

domain bla
    category Cat::GradedHopfAlgebraWithBasis, Cat::CommutativeRing;

    ...
end

In such a domain, the category Cat::AbelianGroup is looked up before
Cat::ModuleWithBasis, which is not quite reasonnable. The consequence
is that Cat::AbelianGroup overwrites the _subtract and _negate method
with incorrect implementations!

Temporary hack: define _subtract and _negate in all our
Dom::FreeModule's.

------------------------------------------------------------------------------
Bug #11:

Redhat 9 standard, MuPADscilab-2.5.3-1.i386.rpm
./configure
...
configure: WARNING: dlfcn.h: present but cannot be compiled
configure: WARNING: dlfcn.h: check for missing prerequisite headers?
configure: WARNING: dlfcn.h: proceeding with the preprocessor's result
configure: WARNING:     ## ------------------------------------ ##
configure: WARNING:     ## Report this to bug-autoconf@gnu.org. ##
configure: WARNING:     ## ------------------------------------ ##
...


------------------------------------------------------------------------------
Bug #12:

   *----*    MuPAD 2.5.0 -- The Open Computer Algebra System
  /|   /|
 *----* |    Copyright (c)  1997 - 2002  by SciFace Software
 | *--|-*                   All rights reserved.
 |/   |/
 *----*      Licensed to:   MuPAD Combinat Developer

 Type ?demo, ?topics, ?news or ?changes for further information.
>> TEXTWIDTH:=96:
>> T := combinat::decomposableObjects([B=Union(Z, Prod(B,B))], Labelled):
>> T::unrank(11000, 300) ;
Error: Recursive definition [See ?MAXDEPTH];
during evaluation of 'DOM_VAR(0,1)::count_functions[B]'
>> 
------------------------------------------------------------------------------
Bug #13:

>> T := combinat::decomposableObjects([B=Union(Z, Prod(B,B))], Labelled):
>> T::unrank(11000, 300) ;
Error: Recursive definition [See ?MAXDEPTH];
during evaluation of 'combinat::splitN::unrank'
>> 
------------------------------------------------------------------------------
Bug #14:

Non user-friendly error message in the unlabelled case:
>> parts := combinat::decomposableObjects([P=(Powerset(Z, Length=3))]):
>> parts::makeCount() ;
Error: wrong 3rd argument
------------------------------------------------------------------------------
Bug #15:
The ps/pdf versions do not include the fonts for Mwarn & such
------------------------------------------------------------------------------
Bug #1: Undefined symbol cerr in dynamic modules

Running tests in MAPITL.tst ...
Warning: making floating point tests with only 14 decimals.
MDM_sys_load: ../MAPITL_test.mdm: undefined symbol: cerr
Error: Bad module, can't load 'MAPITL_test' [loadmod]

This happened on a linux box with RedHat 7.3 with both gcc 2.96 in
/usr/, and gcc3 in /usr/local/. The dynamic module was compiled with
gcc 2.96 which was first in the path, but wrongly dynamically linked
with libstdc++ from gcc3 which was in /usr/local/lib.

The problem seems to be that libtool includes /usr/local/lib in
sys_lib_search_path_spec. Is this a bug in libtool ? What's the best
way to fix this ?

Temporary fix:

Manually edit configure, src/GLIP/configure and src/MAPITL/configure,
by replacing the line:
sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
by
sys_lib_search_path_spec="/lib /usr/lib"

Then run again ./configure, make clean and make

------------------------------------------------------------------------------
Bug #5:
MAPITL does not compile with egcs 2.91.66:
problem with switch(MFdom(c)), line 197 of MAPITL_tmpl.h
Cf mail de Gilles Radenne

------------------------------------------------------------------------------
Bug #16:
Should combinat::subword::generate([2,2,3],2) return twice [2,3], or
only once ?

------------------------------------------------------------------------------
Bug #17:
NIL should be used instead of FAIL for optional arguments.

------------------------------------------------------------------------------
Bug #18:
Let S be a Dom::FreeModule, with a product created with
Dom::FreeModule::makeAssociativeAlgebraProduct and a one. With the
current coercion mechanism, and with testargs()=TRUE, the coefficient
term 3 in 3*S([])*3 is first coerced into S::one*3.

------------------------------------------------------------------------------
The table of contents of the html documentation is buggy?

------------------------------------------------------------------------------
With MuPAD 2.0.0, the example in Steenrod.tex is buggy.

------------------------------------------------------------------------------
Bug #9 (Patched 06/2003):

Darwin: in Symmetrica-module, the dynamic module does not compile due
to multiple inclusion of libstdc++, whereas GLIP compiles
properly. The only difference is that currently
../Symmetrica/libSymmetrica.la is a convenience library. It then seems
that libtool feels that he should add the -all_load flag which causes
the trouble in combination with the -lstdc++

Potential fixes (which one is the safest ?):
 - remove the -lstdc++
   That's the current fix; it seems not to be required on darwin and linux.
   Why was it there ? Check on the CVS when it was added.
 - patch libtool
 - make libSymmetrica.la a normal library

------------------------------------------------------------------------------
Bug #7:
Darwin: weird error with make COMBINAT/combinat.res
This is most likely due to an error when loading the dynamic module GLIP

g++ -fno-gnu-linker -fpic -DDARWIN -c GLIP.cc -o GLIP.o -DMDX -DLONG_IS_32BIT -DPARI_BIG_ENDIAN -DDARWIN -DMDX -DMMMDLEAN -DNO_BYTECODE -DNO_ENHANCED_MATCH  -bundle -I../GLIP/ -I../MAPITL -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/ -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/kernel -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/pari -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/acmatch -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/mcode
g++ -bundle  -o GLIP.mdm GLIP.o ../GLIP/.libs/libGLIP.a


g++  -fno-gnu-linker -fpic -DDARWIN -DHAVE_CONFIG_H -I. -I. -DDARWIN -DMDX -DLONG_IS_32BIT -DPARI_BIG_ENDIAN -DDARWIN -DMDX -DMMMDLEAN -DNO_BYTECODE -DNO_ENHANCED_MATCH -bundle -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/ -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/kernel -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/pari -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/acmatch -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/mcode -I ./../MAPITL -I ./../GLIP -g -O1 -c GLIP.cc -MT GLIP_la-GLIP.lo -MD -MP -MF .deps/GLIP_la-GLIP.TPlo  -o .libs/GLIP_la-GLIP.o
g++ -bundle -o .libs/GLIP.so  .libs/GLIP_la-GLIP.o  ../GLIP/.libs/libGLIP.a
(cd .libs && rm -f GLIP.la && ln -s ../GLIP.la GLIP.la)
rm -f GLIP.mdm && ln -s .libs/GLIP.so GLIP.mdm
rm -f ../../modules/Darwin/2.5.0/GLIP.mdm && cp .libs/GLIP.so ../../modules/Darwin/2.5.0/GLIP.mdm
echo -n "module(GLIP);" | ~/MuPAD-2.5.0/share/bin/mupad

g++ -DHAVE_CONFIG_H -I. -I. -I../../config -DDARWIN -DMDX -DLONG_IS_32BIT -DPARI_BIG_ENDIAN -DDARWIN -DMDX -DMMMDLEAN -DNO_BYTECODE -DNO_ENHANCED_MATCH -bundle -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/ -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/kernel -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/pari -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/acmatch -I/home/users/n/nt/nthiery/MuPAD-2.5.0/share/mmg/include/mcode -I ./../MAPITL -I ./../GLIP -g -O2 -c GLIP.cc -MT GLIP_la-GLIP.lo -MD -MP -MF .deps/GLIP_la-GLIP.TPlo  -fno-common -DPIC -o .libs/GLIP_la-GLIP.o
g++ -bundle -Wl,-bind_at_load -flat_namespace -undefined suppress -o .libs/GLIP.so  .libs/GLIP_la-GLIP.o  ../GLIP/.libs/libGLIP.dylib
(cd .libs && rm -f GLIP.la && ln -s ../GLIP.la GLIP.la)
rm -f GLIP.mdm && ln -s .libs/GLIP.so GLIP.mdm
rm -f ../../modules/Darwin/2.5.0/GLIP.mdm && cp .libs/GLIP.so ../../modules/Darwin/2.5.0/GLIP.mdm

Add a hard timeout to get around hangs in the testsuite ?
Done 2003/10

------------------------------------------------------------------------------
Bug #6:
MUPADdir needs to be fully qualified, and not relative.

------------------------------------------------------------------------------
Dynamic modules do not load properly with MuPAD 2.0.0/2.5.0 and Linux
Fedora core 1/2 (and probably other glibc 2. based linuxes)

localhost-~mupad200/linux>mupad200

   *----*    MuPAD 2.0.0 -- The Open Computer Algebra System
  /|   /|
 *----* |    Copyright (c)  1997 - 2000  by SciFace Software
 | *--|-*                   All rights reserved.
 |/   |/
 *----*      Licensed to:   Nicolas M. Thiery

>> module(stdmod)
MDM_sys_load: /lib/libc.so.6: undefined symbol: __ctype32_toupper
Error: Bad module, can't load 'stdmod' [loadmod]

That's a bug concerning mupad 2.0.0 and the way compatibility glibc
libraries are searched for. A patch that worked on my box: edit
<MUPAD_ROOT>/share/bin/mupad, and add the following line just before
starting the MuPAD binary:

# Hack to let ld.so lookup for compatibility glibc libraries
# for dynamic modules
LD_LIBRARY_PATH=/usr/i386-glibc21-linux/lib/:${LD_LIBRARY_PATH}

exec $MuPAD_BIN/mupad -l $MuPAD_LIB -m $MuPAD_MOD -h $MuPAD_HELP "$@"


A variation which is sometimes, but not always, fixed this way:

mupad: dynamic-link.h:57: elf_get_dynamic_info:  l'assertion « ! "bad dynamic tag" » a échoué.
zsh: abort (core dumped)  mupad250


==============================================================================
Fixed bugs:
==============================================================================

------------------------------------------------------------------------------
Bug: (Fixed since the html doc is built with tex4ht)
In the html documentation, the accents such as è, î and É are squizzed.
------------------------------------------------------------------------------
Bug #6: (Fixed 2003/11/21)
Many typename warnings in the dynamic modules with gcc 3.2
Check this on the web.
------------------------------------------------------------------------------
Bug #7 (seems to be fixed, 15/10/2004):
The dynamic module IPC does not work under Darwin (see test suite)
------------------------------------------------------------------------------
Bug #8 (Fixed 20/06/2003):
All the compilation fails with gcc 3.0.3 with the following message:
g++: cannot specify -o with -c or -S and multiple compilations
------------------------------------------------------------------------------
Bug #17:
Check the installation procedure with MuPAD 2.5.0
Problem with GLIP.cc which does not get rebuild ?

Seems to be ok.
------------------------------------------------------------------------------
Bug # : (fixed 2004/02)
When using the current shallow copy closure:
gen0:=combinat::permutations::generator([0,0]):
//gen1:=combinat::generators::fromList([[1,1],[1,1]]):
gen1:=combinat::permutations::generator([1]):
gen:=combinat::generators::cartesian(gen0,gen1):
gen();
gen();
gen();
gen();
gen();
------------------------------------------------------------------------------
Bug #8 (Fixed 29/09/2003):

Unclear error message when the valuation of a non-terminal is infinity:
trees:=combinat::decomposableStructures([A=Prod(A,A)]);
trees::makeCount();
