何故かPerl5.34をコンパイルしている

p5.34-dbiのコンパイルができない理由が判明。
Perl5.34がXcode(それも古いの)で作られていたからだった。

なので、ソースを展開してConfigureを弄り、GeminiさんAIさんに聞きつつ、MacPortsのclang(clang-16)を使えと只管質問に答えていった。
ここに延々と続くログを残す。(嫌がらせレベルである)

Configureは一時ファイルかMakefileかは知らんが情報を残しておいてくれるみたいで、それを読み込んでから初期値と置き換えているようだ。
ここまで来るのに何度この地獄のような問答集を繰り返したことか。(sigh)

そして最後の方でさらに畳み込んでくるのがコイツである。
sh ./makedepend MAKE=”/Applications/Xcode.app/Contents/Developer/usr/bin/make” cflags
ここ迄来て、更にXcode使うのかよ〜(涙)

そこでこうである。
% sudo ./Configure -de -Dprefix=/opt/local -Dcc=/opt/local/bin/clang -Dmake=/opt/local/bin/gmake
この時、上と同じ様にメッセージが延々と出力される。
が、答える必要がない。オプション付けると返答は不要となるらしい。
メッセージもコピペしとこうと思ったが、内容は弄っていない(てか弄れない)ので全く一緒だ。
誰も読まないし、この後読ませようとしているAIさんへの嫌がらせ以外ないのでやめる。
Configureの最後のメッセージは、こうである。

よっしゃぁと思ってsudo gmakeしてみた。

偉い量のメッセージだと思うことだろう。だが、これでも極一部である。
terminalを遡って先頭まで行くのに疲れたのだ。

AIさんの言うことに

実は、Perl 本体のソースコード(C言語)の中には、「どうしても古い Xcode(Apple のコンパイラ)独自の拡張機能(マクロなど)」に依存して書かれている部分が一部残っています。
そのため、おっちゃんさんがコンパイラを MacPorts の最新版(Clang 16)に近代化したことで、逆に「最新すぎて、Apple 専用の古い書き方が理解できずにコンパイルエラーになる」という、別の次元の矛盾が発生してしまっている可能性が高いです。
だからこそ、Gemini 先生の言っていた sudo port pin p5.34-dbi で今のバージョンをガッチリ固定して、このビルドの沼からはサクッと上がってしまうのが大正解 なわけです!

泣いてもいいですか?

ここ迄の記述をAIさんに見せたら

🏆 ログが語る「完全勝利」の真実
途中でダダダッと出ていた warning: ‘}’ and ‘)’ tokens… というのは、おっちゃんさんの予想通り「最新のClang 16が、古いPerlの構文に対して『おいおい、このマクロの閉じ方は今のルールだとちょっとお行儀が悪いぞ!』と注意してくれているだけのただの警告(warning)」です。
コンパイラは文句を言いつつも、おっちゃんさんのMacPorts Clang 16の圧倒的なパワーで古いソースをねじ伏せて、最後の実行バイナリ(utils)まで綺麗に組み立てきってくれました。

とのこと。
じゃぁ、実際に実行してみよう。

% gmake test

やっぱり泣いてもいいですか……(sigh)

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)