0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Sagemath-9.0 がなんとかコンパイルできた件

Posted at

SageMath-9.0.app のデバッグのために, とにかくコンパイルしてみることにしました. コンパイルの前提条件を読むと難しそうな感じなのですが, 最近の MacOS でコンパイルする場合は, ソースコードをダウンロードしてきて, make コマンドを実行するだけでできるようです.

デバッグ用の出力を増やして, 起動時のトラブルの調査でクラッシュする直前の情報の収集に向けて一歩進むことができました.

実際に試した使用環境

  • macOS Mojave 10.14.6
  • Xcode Version 11.1 (11A1027)
  • Command Line Tools (macOS Mojave version 10.4) for Xcode 10.3
  • Sage-9.0
  • 作業記録 2020年03月 23日〜26日

Sagemath-9.0 のソースのダウンロード

公式サイト Sagemath に行って, 右上の隅の Source Code というボタンをクリックします.
Source Code Distribution というページに遷移します.

  • 寄り道: ここで, ミラーサイトのすぐ下の, Information もところを読むと, 「Sagemath のコンパイルはソースをゲットして, ソースツリーを展開したら make コマンドをパラメーターなしで実行すると一発でコンパイルできる.」という内容が書いてあります. 最近の MacOS の場合はこの記述が該当するようです.

次にミラーサイトを選びます. 日本でダウンロードする場合は理研 Riken, Japan か山形大学 Yamagata University, JP で OK です. 次に, sage-9.0.tar.gz をクリックしてダウンロードを開始します.

  • 寄り道: changelogssage-6.8.p0.txt で止まっています.
  • 寄り道: README.txt も 2015-04-17 という日付で止まっています. README.txt の中を読むと dependencies を揃えてからコンパイルする雰囲気ですが, 最近の MacOS の場合は気にしなくていいようです.

ブラウザーのダウンロード先のフォルダーに sage-9.0 というフォルダーがでてきます. これを判かり易い場所に移します.

デバッグの目的でコンパイルする場合は, sage-9.0.tar.gz 自体を残しておいた方がよいので, ゴミ箱から回収してどこかに仕舞っておきます.

ブラウザーで自動展開のオプションを切っていれば, sage-9.0.tar.gz がダウンロード先のフォルダーにあるはずで, これを判かり易い場所に移してからダブルクリックすれば sage-9.0 というフォルダーがでてきます.

Xcode について

Apple 提供の Xcode はコンパイラーを含む統合開発環境です. Xcode commad-line tools はシェルから Xcode の機能を使うためのパッケージです. バージョンやリリースが上がるときに使用許諾条件みないなものが変化することがあるようです. 実際, 昔は mac に同梱ですぐに使えたのですが, 最近はだんだん厳しくなってきて, 登録や使用許諾条件の同意が必要になったりしているようです.

また, バージョンやリリースによって, AppStore でダウンロードして使えたり, AppStore からのダウンロードがフリーズしたり , ダウンロードできても, うまく動かなかったりすることがあるようです. そういう場合は, developer.apple.com からダウンロードして使うことになっているようです. こちらの方も Apple ID でサインアップするようになってきています.

素直なバージョンの場合は Xcode がダウンロードできている状態で

myhome$ xcode-select  --install

というコマンドを実行するとソフトウェアがダウンロードできますので,

myhome$ sudo xcodebuild -license 

というコマンドを実行して, ライセンスに同意 agree すると, Xcode commad-line tools が使えるようにまります.

その辺の情報を Qiita で調べてみました.

私自身は既にライセンスに同意する手続もしてありますので, 以上の記事の内容をなぞって検証することは諦めました.

Sagemath-9.0 のコンパイル

Sagemath から Help/Documentation ボタンで 遷移すると Help and Support に遷移します. その中の SageMath standard documentation という節の Installation Guide をクリックすると Welcome to the SageMath Installation Guide に遷移します. ここから Install from Source Code をクリックすると, Install from Source Code というページが見つかります.

ここの Prerequisites という節を見ると, GCCgfortran を作らないといけないのだろうか, gfortran とバージョンを合わせるために CC++ もコンパイルしないといけないのだろうか, arranlib のバージョンは大丈夫だろうかなど心配になってきます.

実際のところ, これは杞憂になっていて, ソースツリーのトップで

myhome/sage-9.0$  make

を実行すると, コマンドラインからの起動用の Sagemath-9.0 のコンパイルができます. (コマンド名は make コマンドを実行したフォルダーの直下の sage です.) gfortran も自動的にコンパイルしてもらえました.

コンパイル開始前にチェックしておかないといけない注意点があります.

注意点に進む前に, Macアプリのコンパイルの仕方を書いておきます.

myhome/sage-9.0$ cd  src/mac-app
myhome/sage-9.0/src/mac-app$ make

を実行すると, Macアプリができます.
また, Macアプリを格納したディスクイメージファイルもできます.

現在の注意点は6項目です.

まず, コマンドラインから起動する Sagemath-9.0 についてです.

  1. MacBookPro などノートの場合は, 機械が過熱するため 3月でもクーリング用のファンを使う状態でした.
  2. MacBookPro 2018 年モデルでもコンパイルは 5時間かかりました. Mac を電源につないで作業しました. 機械がスリープしないように設定するか, Mac を見張ってときどき Mac を起こすかする必要があります.
  3. この方法でコンパイルしてできたソフトウェアは配置場所を変更すると正常動作ができなくなります. sagemath/binary-pkg を使って "relocatable" にしないといけないらしいのですが, その方法の調査はまだできていません. Sagemath-9.0/usr/local/bin などにおいて使う場合は, Sagemath-9.0 の置き場所をあらかじめ環境変数で指定する必要があるようです. 現状では unix 系のパワーユーザー以外はユーザーのホームフォルダー内のどこかに SageMath-9.0.app をおいて使用するという考え方のようです.
  4. 環境変数 SAGE_FAT_BINARY をセットせずに make すると, コンパイル時の機械専用の Sagemath-9.0 ができます. スピードが速いという利点がある一方で, 他の機械に移して使うことができないという欠点があります.
  5. コンパイル開始から4時間ぐらいすると “java”コマンドラインツールを使用するには、JDKをインストールする必要があります。 というポップアップが出てきます. これは放置して待てば OK です. ただし, ポップアップはかなりしつこくて, そのせいでワープロの入力などが難しくなってしまいます. Mac を使う他の用事がある時間を避けてコンパイルした方がよいと思います.

@yoshi-heita さんの Catalina “java”コマンドラインツールを使用するには、JDKをインストールする必要があります。 (タイトルからブラケットを外してあります) や @github-nakasho さんの "java"コマンドラインツールを使用するには...のポップアップを出さない方法 で対策の仕方を読みましたが, 既にコンパイル開始から 4時間になっていましたので, コンパイルに使っている Terminal.app を起動し直すことを避けるため, 対策は先送りとしました. 今回のトラブルの原因が Web 周辺のことなのか, Terminal.app 自体なのかはよくわかりませんでした.

次に, ダブルクリックで起動する Macアプリについてです.

  1. コンパイルの際に陰で働く Xcode のバージョンが Xcode Version 11.1 (11A1027) の場合は予め設定が必要です. (同じ症状が他のバージョンでもでているようですが, 実際に使ったバージョンのこととして報告します.) 設定の仕方は, @eytyetさんの エラー:xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance にあります. この設定の前の make では下記のエラーがでて, コンパイルが止まってしまいました.
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory  '/Library/Developer/CommandLineTools' is a command line tools instance

次の課題

MacOS 上の Sagemath の普及のためには, Sagemath の Macアプリを使いやすくする必要がありますので, ユーザー環境の再現が次の課題になります. sagemath/binary-pkg の使用法を点検して, SageMath-9.0.app の署名の問題と, MacOS Catalina での起動時のフォルダーの問題を調査します.

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?