Skip to content

@z80oolong z80oolong released this Mar 18, 2019 · 5 commits to master since this release

build-proot.rb -- termux の開発コミュニティによる proot をビルドするための Ruby スクリプト

概要

この安定版配布ページに置かれている .zip アーカイブ及び .tar.gz アーカイブは、 termux の開発コミュニティによって、システムコール link(2)symlink(2) によってエミュレートする機能が実装された proot をクロスコンパイル環境及び Android NDK toolchain に基づいて自動的にビルドする為の Ruby スクリプトが含まれています。

なお、この Ruby スクリプトによってコンパイルされる proot は、下記の不具合を修正する差分ファイルが適用されています。

  • Android NDK の toolchain の他、 PC 上のクロスコンパイル環境においてもビルドが可能となるように修正。
  • VFAT 領域等、シンボリックリンクに対応していないファイルシステムの領域において、システムコール link(2) を実行した時に、リンク元のファイルが別名に変更されたままとなる問題を修正。
  • proot コマンドにおいて、オプション --link2symlink が指定され、かつ、環境変数 PROOT_L2S_DIR が設定されない場合に、自動的にオプション -H が指定されて proot コマンドが起動されるように修正。
    • また、オプション -H が設定された場合に、 proot によって不可視化されるファイル及びシンボリックリンクのプレフィックスを ".l2s." とするように修正。
    • link(2)symlink(2) によってエミュレートする機能を使用時に proot の内部で作成される ".l2s." をプレフィックスとするファイル及びシンボリックリンクが外部から直接読み書きが出来るためにこれらのファイルを削除すると、ハードリンクが機能しなくなるために行われる修正です。
  • ソースコード src/syscall/socket.c において、 obsolete である glibc の標準ライブラリ関数 mktemp(3) に代えて独自の実装による mktemp(3) 関数である proot_mktemp 関数を使用するように修正。
  • ソースコードのうち、幾つかのファイル等において、 proot のコンパイル時に警告を出力する問題を修正。
  • proot の一時ファイルを置くためのディレクトリのパス名の設定について、環境変数 PROOT_TMP_DIR の他に、環境変数 PROOT_TMPDIR を参照するように修正。

また、 この Ruby スクリプトによって生成された proot の実行バイナリファイルである proot.{arm,x86-32}, proot-cross.{arm,x86-32} 及び、 proot.{arm,x86-32}, proot-cross.{arm,x86-32} をコンパイルする為のソースコードである
proot-5.1.0.110.ziptalloc-2.1.14.tar.gz 及び proot における前述の不具合を修正した差分ファイルも同梱しています。

この安定版配布ページに置かれている .zip アーカイブ及び .tar.gz アーカイブ及び git リポジトリの詳細については、 git リポジトリ内の README.md を御覧下さい。

前回の安定版からの変更点

ベースとなる termux の開発コミュニティによる proot のソースコードを最新の commit ID である 0e29e5a9 に追随しました。

そして、同梱のバイナリファイル proot.{arm,x86-32} 及び proot-cross.{arm,x86-32} も再度コンパイルしています。

同梱しているバイナリファイルについて

ここで、 Android NDK を用いたクロスコンパイル環境によってビルドしたバイナリファイル proot.{arm,x86-32} の SHA256 のハッシュ値について以下に示します。

5639638eff739f1c3db98704bec8438cc245fd5c30acaca238edd03b3fdd45cc  proot.arm
c8cc75ddbbcec6289be585510b489401815a210ec9324c7732092742fc80c75d  proot.x86-32

また、 Debian パッケージによるクロスコンパイル環境によってビルドしたバイナリファイル proot-cross.{arm,x86-32} の SHA256 のハッシュ値について以下に示します。

8d85d1e491c65fa8c69b9e0ea9d3323d27e8ac1a4d85803db7ecfcbc5e372baf  proot-cross.arm
d81be1b284bf9560ef4274a333f4da21428f2b6873c6394b11c8ba76143a1c5d  proot-cross.x86-32

配布条件

アーカイブファイル proot-termux-build.{tar.gz,zip} は、 Z.OOL. (mailto:zool@zool.jpn.org) が著作権を有し、アーカイブファイルに同梱する doc/COPYING.md のうち、 "LICENSE of build-proot.rb, talloc-cross-answer.txt and README.md" の項に記述されたライセンスの配布条件である GNU public license version 3 に従って配布されるものとします。 

特に、アーカイブファイル proot-termux-build.{tar.gz,zip} に収められているファイルのうち、 README.mdtalloc をビルドするための設定ファイル talloc-cross-answer.txt 及び Ruby スクリプト build-proot.rb は、 Z.OOL. (mailto:zool@zool.jpn.org) が著作権を有し、アーカイブファイルに同梱する doc/COPYING.md のうち、 "LICENSE of build-proot.rb, talloc-cross-answer.txt and README.md" の項に記述されたライセンスの配布条件である GNU public license version 3 に従って配布されるものとします。

なお、差分ファイル に関しては、 Z.OOL. (mailto:zool@zool.jpn.org) が著作権を有し、アーカイブファイルに同梱する doc/COPYING.md のうち、 "LICENSE of proot-termux-fix.diff" の項に記述されたライセンスの配布条件である GNU public license version 3 に従って配布されるものとします。

但し、 talloc 2.1.14 のソースコードである talloc-2.1.14.tar.gzAndrew Tridgell 氏が著作権を有し、別添する doc/COPYING.md のうち、 "LICENSE of talloc 2.1.11" の項に記述されたライセンスの配布条件である GNU public license version 3 に従って配布されるものとします。

そして、 proot のソースコードである proot-5.1.0.110.zip 及びこれらのソースコードより生成された実行バイナリファイルである proot.{arm,x86-32}, proot-cross.{arm,x86-32} は、 STMicroelectronics 社及び termux の開発コミュニティにおいて、別添する doc/COPYING.md のうち、 "LICENSE of PRoot" の項において記述された著作権者及び Z.OOL. (mailto:zool@zool.jpn.org) が著作権を有し、同項のライセンスの配布条件である GNU public license version 2 に従って配布されるものとします。

Assets 9
You can’t perform that action at this time.