Encode::Detect のコンパイルエラー

今(今?)ちまたで絶賛のPlaggerインストールプレイですが、手ごわい相手としてよく挙げられているものにEncode::Detectってのがあります。

なんかTemplateが中ボスでEncode::Detectがラスボスっぽい
http://mono.kmc.gr.jp/~yhara/d/?date=20061015

でまあ、このあたりとかを見てそのままモジュールを順に入れたりするわけですが。
http://www.emaillab.org/spamassassin/patch/spamassassin-3.1.5-normalize-test6.txt

どうもgccが古いとコケるらしい。
http://d.hatena.ne.jp/nipotan/20060821/1156142353

Encode::Detect 1.00になっても同じ。

parse error before `__attribute__'

などが大量に出て、

error building lib/Encode/Detect/Detector.o from 'lib/Encode/Detect/Detector.c' at /usr/local/lib/perl5/site_perl/5.8.8/ExtUtils/CBuilder/Base.pm line 108.
make: *** [all] Error 2

というコンパイルエラー。
GCCのバージョンを上げればよさそうなんだけど、私の環境はFedora RegacyだったりしてGCC 3.2、それ以降のRPMがなさげ。

もう少し調べると、これについては
http://rt.perl.org/rt3//Public/Bug/Display.html?id=39634
あたりで議論されていました。perl.hにパッチが、とか言ってますがとりあえずの対処として、
Encode::Detect を落としてきて Detector.xs に以下のパッチを当てると解消します。

--- Detector.xs.orig    2006-10-28 05:48:59.000000000 +0900
+++ Detector.xs 2007-01-07 01:26:42.000000000 +0900
@@ -38,6 +38,7 @@
 #define PERL_NO_GET_CONTEXT     /* we want efficiency */
 #include "EXTERN.h"
 #include "perl.h"
+#undef HASATTRIBUTE_UNUSED
 #include "XSUB.h"
 }

これでやっと入りました。まあなくてもとりあえずPlagger動かせたりはするみたいだけど、
普通にEncode::Guessより便利だし使いたかったので。