概要
概要
目的は,最新の Maxima を FreeBSD の ports として導入する方法を提示することです.
対象は次のようなものです.
Maxima は FreeBSD の ports/packages に収録されています. ports で言えば math/maxima にあります.
ソースは以下のところにあります.ここで歴代の version を確認することができます.
http://sourceforge.net/projects/maxima/files/Maxima-source
version up は,不定期ですが数ヵ月に一度のペースです.
ここ 3 年ほどは下表のようになっております.
(FreeBSD の ports になったものは右側に記します.)
5.31.3 (2013.10.15) ports (2013.11.21)
5.32.0 (2013.12.25)
5.32.1 (2014.1.2)
5.33.0 (2014.4.5)
5.34.0 (2014.8.27)
5.34.1 (2014.9.8)
5.35.1 (2014.12.13) 移植して bugzilla に送りましたが commit されませんでした.
5.36.0 (2015.4.16)
5.36.1 (2015.5.1)
5.37.0 (2015.8.17)
5.37.1 (2015.8.31)
5.37.2 (2015.9.17)
5.37.3 (2015.11.10) ports (2016.3.1)
5.38.0 (2016.4.3)
5.38.1 (2016.5.12) 移植して bugzilla に送りました.
→ 2016.9.21 に commit されました.
5.39.0 (2016.12.12) ports (2017.4.8) [1]
5.40.0 (2017.5.3) 移植して bugzilla に送りました.
→ 2017.8.18 に commit されました.
5.41.0 (2017.10.3) 移植して bugzilla に送りました.
→ 2017.12.11 に commit されました.
5.42.0 (2018.9.28) 2018.10.9 の時点で bugzilla に上がっています.
5.42.1 (2018.10.16) 2019.1.6 に commit されました.
5.42.2 (2019.1.24) 2019.2.8 の時点で ports になっています.
5.43.0 (2019.5.31) 2019.6.15 の時点で ports になっています.
5.43.2 (2020.1.27) 2020.3.8 の時点で ports になっています.
5.44.0 (2020.7.8) 2020.7.9 の時点で ports になっています.
5.45.0 (2021.5.24) [3]
5.45.1 (2021.6.21) [3] 2022.2.15 に ports になりました.
5.46.0 (2022.4.13) 2022.4.22 の時点で ports になっています.
5.47.0 (2023.5.31) 2023.6.8 の時点で ports になっています.
一見して分かるように,ports が更新される頻度がかなり低いです.[2]
そこで,以下に最新の Maxima を FreeBSD に ports として導入する方法を提示致します. ここで「ports として」とは,他の ports/packages と同等に FreeBSD の管理ツールを使うことができると言う意味です.
[1] これは私の貢献によるものではありません.
私も移植を試みたのですが,work/maxima-5.39.0/doc/info/errormessages.texi から生じるエラーでお手上げ状態になりました.
新しい Makefile を見ると,この問題は次のようにして解決されていました.
.if ${OSVERSION} < 1100000 # The older makeinfo from the base fails in 10.3 BUILD_DEPENDS+= ${LOCALBASE}/bin/makeinfo:print/texinfo CONFIGURE_ENV+= MAKEINFO="${LOCALBASE}/bin/makeinfo" .endif
すなわち,makeinfo の方に問題があったのでした.
[2] これを書き始めた時点ではそうだったのですが,最近はまめに更新されています.
[3] 2021.6.5 現在,maxima にはメンテナーがおりません. そこで,この最新版を ports で使えるようにしました. LISP は default である ecl を使いました. 私の使い方の範囲内では問題なく動作しております.
(2021.7.3) 5.45.1 が出たので,それ用の patch を作って bugzilla に上ました.
(2021.10.30) オリジナルの PORTREVISION が 14 から 18 に変わったので,以下の patch を修正しました.
(2021.11.17) オリジナルの PORTREVISION が 18 から 19 に変わったので,以下の patch を修正しました.
(2022.2.15) ports が更新されたので,以下の patch はもう不要です. (そのうち消します.)
--- Makefile.orig 2021-07-03 14:12:05.136004000 +0900
+++ Makefile 2021-07-04 22:29:23.320743000 +0900
@@ -1,8 +1,7 @@
# Created by: Scott Flatman <sf@dsinw.com>
PORTNAME= maxima
-PORTVERSION= 5.44.0
-PORTREVISION= 19
+PORTVERSION= 5.45.1
CATEGORIES= math lisp tk
MASTER_SITES= SF/maxima/Maxima-source/${PORTVERSION}-source
--- distinfo.orig 2021-06-19 13:47:52.457473000 +0900
+++ distinfo 2021-07-03 14:36:31.291108000 +0900
@@ -1,3 +1,3 @@
-TIMESTAMP = 1592256101
-SHA256 (maxima-5.44.0.tar.gz) = d93f5e48c4daf8f085d609cb3c7b0bdf342c667fd04cf750c846426874c9d2ec
-SIZE (maxima-5.44.0.tar.gz) = 34976354
+TIMESTAMP = 1625290591
+SHA256 (maxima-5.45.1.tar.gz) = fe9016276970bef214a1a244348558644514d7fdfaa4fc8b9d0e87afcbb4e7dc
+SIZE (maxima-5.45.1.tar.gz) = 39951932
--- pkg-plist.orig 2021-04-07 18:14:46.070375000 +0900
+++ pkg-plist 2021-07-04 22:58:08.982674000 +0900
@@ -23,6 +23,7 @@
share/emacs/site-lisp/imaxima.lisp
share/emacs/site-lisp/maxima-font-lock.el
share/emacs/site-lisp/maxima.el
+share/emacs/site-lisp/mylatex.ltx.el
share/emacs/site-lisp/setup-imaxima-imath.el
share/emacs/site-lisp/smart-complete.el
share/emacs/site-lisp/sshell.el
--- files/patch-interfaces_xmaxima_Tkmaxima_Paths.tcl.orig 2021-06-19 13:47:52.457564000 +0900
+++ files/patch-interfaces_xmaxima_Tkmaxima_Paths.tcl 2021-07-03 14:50:49.579642000 +0900
@@ -1,6 +1,6 @@
---- interfaces/xmaxima/Tkmaxima/Paths.tcl.orig 2020-06-08 10:58:28 UTC
+--- interfaces/xmaxima/Tkmaxima/Paths.tcl.orig 2021-07-03 05:30:32 UTC
+++ interfaces/xmaxima/Tkmaxima/Paths.tcl
-@@ -302,6 +302,8 @@ proc setMaxDir {} {
+@@ -294,6 +294,8 @@ proc setMaxDir {} {
set maxima_priv(pReferenceToc) [file join $dir html maxima_toc.html]
}
}
手作業でやるなら,ファイル files/patch-interfaces_xmaxima_Tkmaxima_Paths.tcl は rm した方が早いです.
ある port を更新する方法の一般論は,maintain ports に提示しました. ここでは Maxima 特有の事項を述べます.
ソースは,以下のようにして download できます.
% fetch http://sourceforge.net/projects/maxima/files/Maxima-source/5.38.1-source/maxima-5.38.1.tar.gz
新しい Maxima を ports として導入するために必要な作業は,math/maxima の中の以下のファイルを修正することです.
ここで,
pkg-plist ですが,make makeplist で作成された pkg-plist.make を以下のように修正するだけです.
--- pkg-plist.make 2016-09-20 01:23:03.000000000 +0900 +++ pkg-plist 2016-09-19 23:16:28.000000000 +0900 @@ -1,15 +1,7 @@ -/you/have/to/check/what/makeplist/gives/you bin/maxima bin/rmaxima bin/xmaxima -info/dir -info/imaxima.info info/maxima-index.lisp -info/maxima.info -info/maxima.info-1 -info/maxima.info-2 -info/maxima.info-3 -info/xmaxima.info lib/maxima/%%PORTVERSION%%/%%BINDIR%%/%%MAXIMABIN%% libexec/maxima/%%PORTVERSION%%/mgnuplot man/man1/maxima.1.gz
poudriere の出力 maxima-5.38.1_1.log は attachment の制限 1.2MB を大きく越えるので,圧縮します.
% gzip maxima-5.38.1_1.log
sbcl も更新するなら,先にそちらをやる必要があります.[1] これは sbcl の version の違いだけが理由ではありません. 同一の sbcl を make deinstall, make reinstall しただけで,maxima が動かなくなったこともありました. (この場合には maxima を make し直したら動くようになりました.) [2]
[1] 当然ですが,Lisp として sbcl (Steel Bank Common Lisp) を選択した場合です.(FreeBSD の ports ではこれが default です.)
Lisp の選択肢としては ccl (Clozure CL) や cmucl (CMUCL) もあります.
(2020.7.3) default の Lisp が ecl (Embeddable Common Lisp) に変更されていました.
sbcl も選択肢として残されています.
ただし,make config にて SAGE を on にすると (これが default) ecl が前提となり sbcl を選択できません.
[2]「pkg で sbcl を更新したら maxima が動かなくなった.」というトラブルの報告も見かけるようになりました.