Subject: bug#58274: giac 1.9.0-21 fails to build

From: Maxim Cournoyer <[email-masked]>
Date: Mon, 03 Oct 2022 10:34:39 -0400

Hi,

The build of giac fails like:

--8<---------------cut here---------------start------------->8---
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -DIN_GIAC -I. -I.. -I. -I.. -g -O2 -fno-strict-aliasing -DGIAC_GENERIC_CONSTANTS -DTIMEOUT -DHAVE_LIBMICROPYTHON -fpermissive -DQUICKJS -MT alg_ext.lo -MD -MP -MF .deps/alg_ext.Tpo -c alg_ext.cc -o alg_ext.o >/dev/null 2>&1
pari.cc:752:17: error: typedef ‘giac::PFGEN’ is initialized (use ‘decltype’ instead)
  752 |   typedef GEN (*PFGEN)(ANYARG);
      |                 ^~~~~
pari.cc:752:24: error: ‘ANYARG’ was not declared in this scope
  752 |   typedef GEN (*PFGEN)(ANYARG);
      |                        ^~~~~~
pari.cc: In function ‘giac::gen giac::in_pari(const giac::gen&, const giac::context*)’:
pari.cc:829:19: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  829 |        argvec[k]= (GEN) v[j].val;
      |                   ^~~~~~~~~~~~~~
pari.cc:847:19: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  847 |         argvec[k]=(long int*)(pos -1);
      |                   ^~~~~~~~~~~~~~~~~~~
pari.cc:855:17: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  855 |       argvec[k]=(long int*) v[j].val;
      |                 ^~~~~~~~~~~~~~~~~~~~
pari.cc:883:16: error: ‘PFGEN’ was not declared in this scope; did you mean ‘GEN’?
  883 |        res = ((PFGEN)call)(_ARGS_);
      |                ^~~~~
      |                GEN
pari.cc:883:22: error: expected ‘)’ before ‘call’
  883 |        res = ((PFGEN)call)(_ARGS_);
      |              ~       ^~~~
      |                      )
pari.cc:887:20: error: expected primary-expression before ‘int’
  887 |        m = (long)((int (*)(ANYARG))call)(_ARGS_);
      |                    ^~~
pari.cc:887:20: error: expected ‘)’ before ‘int’
  887 |        m = (long)((int (*)(ANYARG))call)(_ARGS_);
      |                   ~^~~
      |                    )
pari.cc:887:49: error: expected ‘)’ before ‘;’ token
  887 |        m = (long)((int (*)(ANYARG))call)(_ARGS_);
      |                  ~                              ^
      |                                                 )
pari.cc:891:14: error: expected primary-expression before ‘long’
  891 |        m = ((long (*)(ANYARG))call)(_ARGS_);
      |              ^~~~
pari.cc:891:14: error: expected ‘)’ before ‘long’
  891 |        m = ((long (*)(ANYARG))call)(_ARGS_);
      |             ~^~~~
      |              )
pari.cc:891:44: error: expected ‘)’ before ‘;’ token
  891 |        m = ((long (*)(ANYARG))call)(_ARGS_);
      |            ~                               ^
      |                                            )
pari.cc:895:10: error: expected primary-expression before ‘void’
  895 |        ((void (*)(ANYARG))call)(_ARGS_);
      |          ^~~~
pari.cc:895:10: error: expected ‘)’ before ‘void’
  895 |        ((void (*)(ANYARG))call)(_ARGS_);
      |         ~^~~~
      |          )
pari.cc:895:40: error: expected ‘)’ before ‘;’ token
  895 |        ((void (*)(ANYARG))call)(_ARGS_);
      |        ~                               ^
      |                                        )
make[2]: *** [Makefile:814: pari.lo] Error 1
--8<---------------cut here---------------end--------------->8---

-- 
Thanks,
Maxim