3.1.52 fails to build in hppa/linux
Jaroslav Hajek
highegg at gmail.com
Sun Feb 22 12:40:40 CST 2009
On Sun, Feb 22, 2009 at 5:21 PM, Rafael Laboissiere <rafael at debian.org> wrote:
> * Jaroslav Hajek <highegg at gmail.com> [2009-02-22 16:41]:
>
>> On Sun, Feb 22, 2009 at 4:08 PM, Rafael Laboissiere <rafael at debian.org> wrote:
>> > A bug report has been filed against the octave3.1 in Debian regarding the
>> > failure to build the package on the hppa architecture. You will find the
>> > complete bug report in http://bugs.debian.org/516588, including a link to
>> > the full build log. In sum, it fails with errors like this:
>> >
>> > g++ -c -fPIC -I. -I.. -I../liboctave -I../src -I../libcruft/misc -DHAVE_CONFIG_H -I/usr/include/freetype2 -Wall -W -Wshadow -Wold-style-cast -O2 -g oct-inttypes.cc -o pic/oct-inttypes.o
>> > oct-inttypes.cc:511: error: ambiguous template specialization 'mop<octave_int_cmp_op::lt>' for 'bool octave_int_cmp_op::mop(double, int64_t)'
>> >
>> > Any ideas?
>> >
>> > --
>> > Rafael
>> >
>>
>> This is a bug in gcc. See, for instance,
>> http://www.nabble.com/Cast-ambiguity-compilation-error-td21532844.html
>> or any earlier thread referenced therein. Upgrading gcc should help.
>
> The version of g++ used in the hppa failing build mentioned above is 4.3.3.
> It is the same version that I use to build the packages on my amd64 system.
> Curiously enough, the automatic builds on armel [1] sparc [2] architectures
> fail in the same way. On the other hand, building on i386 [3] and amd64 (my
> development system) succeeds.
>
> Can that be caused by the way the int64 type is defined on some
> architectures?
>
> [1] http://experimental.debian.net/fetch.php?&pkg=octave3.1&ver=3.1.52-4&arch=armel&stamp=1235272806&file=log&as=raw
> [2] http://experimental.debian.net/fetch.php?&pkg=octave3.1&ver=3.1.52-4&arch=sparc&stamp=1235287227&file=log&as=raw
> [3] http://experimental.debian.net/fetch.php?&pkg=octave3.1&ver=3.1.52-4&arch=i386&stamp=1235278606&file=log&as=raw
>
> --
> Rafael
>
Rafael,
can you try compiling (no need to link) the following test code? It
should be a simple instance of the same issue.
class A {};
template <class X, class T> void method (double u, T v);
template <class X> void method (double u, long v);
int main ()
{
double u; long v;
method<A> (u, v);
}
If you get a failure, then you have a buggy gcc.
--
RNDr. Jaroslav Hajek
computing expert
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz
More information about the Octave-maintainers
mailing list