2007年1月30日星期二

FreeBSD 4.x EoL, and Perl 5.005_03, too

FreeBSD 4.x 終於要退休了。在這篇 FreeBSD 4.x EoL 中有提到前因後果。

不過,除了 FreeBSD 4.x 本身要退休了,令我高興的是,FreeBSD 4.x 內建的 Perl 5.005_03 也要退休了。

Perl 在 1998.09.09 正式進入了 FreeBSD 3.0 的 base system,陪伴著 FreeBSD developers 經過了三年半的時光,然後在 2002.05.16 從 base system 中被移除。將 Perl 搭載於作業系統之中一直存在著兩極的反應:支持者覺得這是個非常好用的開發工具,強力推薦保留於系統之中;反對者則表示應該要將作業系統和開發工具切開,以免為了編譯 Perl 而大幅拉長 make world 時間。從 FreeBSD 5.0 開始的 Perl 一律由 ports 安裝,所以也從 FreeBSD 5.x 開始,我學著用比較「樸素」的一點的 awk, sed, grep 去完成原本「華麗」的 perl 所執行的工作,以確保程式能在不需要額外安裝套件的環境下執行。

由於 Perl 5.005_03 仍然存在 FreeBSD 4.x 之中,因此在 FreeBSD 4.x 依然支援的情況下,perl@FreeBSD.org 就得繼續支援 Perl 5.005_03。也許很難以想像,讓系統支援七八年前的 Perl 5.005_03 有時候是一件痛苦的事情。因為 our,因為 warnings,因為 thread,因為 utf8…,種種的原因讓 Perl 5.005_03 越來越難在現有的平台上編譯。

因此有的 MAINTAINER 會放上這麼一行,叫你自己升級:


.if ${PERL_LEVEL} < 500600

IGNORE= requires Perl 5.6 or newer. Install lang/perl5.8 and try again

.endif


有的則是很辛苦的修掉拉哩拉匝的宣告,只求能執行:


.if ${PERL_LEVEL} < 500600

post-patch:

${PERL} -pi -e 's/^our (Ww+);/use vars q($$1);/o;'

-e 's/^ours+(Ww+)(?!;)/use vars q($$1); $$1/o;'

-e 'undef $$_ if /^s*(no|use) warnings/o;'

${WRKSRC}/GCrypt.pm ${WRKSRC}/Makefile.PL

.endif

.include


終於,這些 dirty hack 都可以退休了。我那測試專用的 4.11-RELEASE 的 isoroot 也可以砍掉囉~

0 意見: