[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GUB fail with smob templates
Re: GUB fail with smob templates
Tue, 14 Oct 2014 15:20:32 +0200
Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux)
"Phil Holmes" <address@hidden> writes:
> ----- Original Message -----
> From: "David Kastrup" <address@hidden>
> To: "Phil Holmes" <address@hidden>
> Cc: <address@hidden>
> Sent: Tuesday, October 14, 2014 12:16 PM
> Subject: Re: GUB fail with smob templates
>> "Phil Holmes" <address@hidden> writes:
>>> ----- Original Message -----
>>> From: "David Kastrup" <address@hidden>
>>> To: "Phil Holmes" <address@hidden>
>>> Cc: <address@hidden>
>>> Sent: Sunday, October 12, 2014 6:41 PM
>>> Subject: Re: GUB fail with smob templates
>>>> Phil Holmes <address@hidden> writes:
>>>>> GUB has again coughed on the changes to the SMOB code. It's well
>>>>> out of
>>>>> my depth to understand why, but I've pasted below some of the error
>>>>> messages: the make is built with -j14, so I presume that's why
>>>>> there are
>>>>> so many.
>>>>> release-unstable/lily/include/smobs.tcc:131: error: invalid operands of
>>>>> types 'scm_unused_struct* (Grob::*)()' and 'scm_unused_struct*
>>>>> (Smob_base<Grob>::*)()' to binary 'operator!='
>>>> I've pushed a prospective fix to staging. No idea whether it will do
>>>> the trick.
>>>> David Kastrup
>>> Zip attached.
>>> error: invalid operands of types 'scm_unused_struct*
>>> (Smob_base<Skyline_pair>::*)()' and 'scm_unused_struct*
>>> (Skyline_pair::*)()' to binary 'operator!='
>> This is getting absolutely ridiculous, but I pushed another "fix" to
>> staging (basically, I now have to cast a member function pointer to its
>> own type before comparing it with another member function pointer cast
>> to its type).
> Fails compiling for a different target now. Logfile attached again.
error: invalid operands of types 'bool' and 'int' to binary 'operator=='
So now we cannot compare a bool with an int? What is this, Pascal?
The error message also does not fit the current line in smobs.tcc:
136 if (static_cast<SCM (Super::*)()>(&Super::mark_smob) !=
137 static_cast<SCM (Super::*)()>(&Smob_base<Super>::mark_smob))
Previous versions had
136 if (Super::type_p_name_ != 0)
which is still not the best fit, but at least there is an integer
> Do you reckon we should continue to try to get this fixed, or just
> bite the bullet and update gcc and see if that works?
It would appear that the versions of GCC are somewhat basic regarding
their template support. Now what is really surprising to me is that
2.19.15 went ahead without much of a hitch. Because the changes of
2.19.16, as compared to 2.19.15, seem to be more on the surface.
Since we _did_ get 2.19.15 through, 2.19.16 should be a breeze.
However, the current batch of error messages is totally baffling to me.
The current error messages just do not appear to match the flagged lines
So I'm poking around quite in the dark. It's probably silly to ask
since you are not building for the first time, but you are sure that you
are working from the current origin/release/unstable ?
To me it looks like updating gcc to some newer version might make sense.
Starting with version 2.19.15, we are relying more on templates than
before. And working with gcc versions that go bonkers in entirely
puzzling ways is likely going to cause more trouble than the one we are
having right now anyway.