.travis.yml に記載されているビルド手順を Docker コンテナ上で実施してみる。
前提
- OS: Windows 10 Pro
- Docker: Docker version 20.10.0, build 7287ab3
ソースコード取得
作業用 Docker コンテナを起動
ビルド
dist ディレクトリに成果物が生成される。
.travis.yml に記載されているビルド手順を Docker コンテナ上で実施してみる。
dist ディレクトリに成果物が生成される。
ブラウザからページを開いて数クリックで TOPPERS カーネルの入門環境を構築できるサイトを作ったので紹介。
Eclipse Che の Factory 機能を使って、 che.openshift.io 上に TOPPERS カーネルのビルド・実行環境を構築する。
本記事は、 TOPPERS Advent Calendar 2020 1 日目の記事です。
例として、 TOPPERS/ASP3(zybo_z7) の実行手順を説明する。
アクセスすると、以下のページが表示される。
toppers-asp3 をクリック。
※ Eclipse Che に渡す devfile を確認したい場合は、右側の歯車マーク( ⚙ ) をクリックすると、内容が参照できる
Red Hat アカウントでログインする。
アカウントを持っていない場合には、 今すぐ作成しましょう のリンクから Red Hat アカウントを作成するか、下部のアイコンをクリックし、 OAuth 認証でログインする。
ログインすると、以下のようにワークスペースの作成が始まる。
ワークスペースのローディング画面になる。サードパティの Cookie を有効にしないと、このまま全く進まないため、有効にする。 (シークレットモードで起動していない場合、必要のない作業だと思われる。)
以下のように、ワークスペースが開くので、ここからサンプルプロジェクトの作成・ビルド・実行を行っていく。
左側の Explorer アイコンをクリックすると、プロジェクト内のファイル一覧が表示される。
右側の workspace アイコンをクリックすると、ワークスペースの情報が表示される。
右側のワークスペースのリストから、 toppers-kernel-build-kit > create sample をクリックする。
サンプルプロジェクト用のディレクトリが生成される。
右側のワークスペースのリストから、 toppers-kernel-build-kit > build sample をクリックする。
サンプルプロジェクトがビルドされ、実行ファイル asp が生成される。
右側のワークスペースのリストから、 qemu-xilinx > run sample on qemu をクリックする。
qemu-sytem-aarch64 を利用して、ビルドした asp を実行する。
toppers-asp3/sample/sample1.c がサンプルのソースコードなので、これを修正して挙動がどう変わるかを確認できる。
以下ドキュメントを参照して、ワークスペースにプロジェクトを追加できる。
Creating a workspace by importing the source code of a project :: Eclipse Che Documentation
メニューの Terminal -> Configure Tasks... -> build sample を選択すると、タスク定義ファイル( tasks.json ) が開くので、そこでコマンドを確認できる。
チェック対象テキストは content.md。内容は以下。
Eclipse Che のワークスペースの生成・破棄は、Linux コンテナ技術によって実現されている。そのため、ワークスペースで使用するツールは、64bit Linux 環境で動作する必要がある。TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。以下のプラグインを使ってチェックを行う。
npm install -g textlint
npm install -g @textlint/textlint-plugin-markdown
npm install -g prh
npm install -g textlint-rule-prh
npm install -g textlint-rule-preset-ja-technical-writing
npm install -g textlint-rule-preset-jtf-style重複など気にせず、とにかく何でもかんでも指摘させる設定になっている(はず)なので、要調整。
設定内容の詳細は各プラグインのドキュメントを参照。
最低でも ./rules/media/techbooster.yml, ./rules/media/WEB+DB_PRESS.yml はどちらかひとつにするのが良いはず。
# prh のリファレンス(?)ルール取得
git clone --depth 1 https://github.com/prh/rules.git
# prh の設定
cat - << EOF > ./prh.yml
version: 1
imports:
- ./rules/media/techbooster.yml
- ./rules/media/WEB+DB_PRESS.yml
EOF
# textlint の設定
cat - << EOF > ./.textlintrc
{
"plugins": {
"@textlint/markdown": {
"extensions": [".md"]
}
},
"rules": {
"prh": {
"rulePaths" :["./prh.yml"]
},
"preset-ja-technical-writing": true
}
}
EOFlint_results.txt に、指摘点が列挙される。
/work/content.md
1:101 error Line 1 sentence length(151) exceeds the maximum sentence length of 100.
Over 51 characters ja-technical-writing/sentence-length
1:225 ✓ error (mikoto2000/cfg-1v1.9.7.2) => (mikoto2000/cfg-1v1.9.7.2)
半角カッコの代わりに全角カッコを使うこと。文字のバランスが崩れるためです prh
✖ 2 problems (2 errors, 0 warnings)
✓ 1 fixable problem.
Try to run: $ textlint --fix [file]curl -L -O https://github.com/redpen-cc/redpen/releases/download/redpen-1.10.4/redpen-1.10.4.tar.gz
tar xf redpen-1.10.4.tar.gz
export PATH=$PATH:$(pwd)/redpen-distribution-1.10.4/bin/redpen_results.txt に、指摘が列挙される。
./content.md:1: ValidationError[SentenceLength], 文長("151")が最大値 "100" を超えています。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。
./content.md:1: ValidationError[JapaneseAmbiguousNounConjunction], 助詞「の」が連続しています: "〜Eclipseのワークスペースの生成〜" at line: Eclipse Che のワークスペースの生成・破棄は、Linux コンテナ技術によって実現されている。
./content.md:1: ValidationError[InvalidSymbol], 不正なシンボル "(" がみつかりました。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。
./content.md:1: ValidationError[InvalidSymbol], 不正なシンボル ")" がみつかりました。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。
./content.md:1: ValidationError[SpaceBetweenAlphabeticalWord], アルファベット単語の後にスペースが存在しません。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。
./content.md:1: ValidationError[SpaceBetweenAlphabeticalWord], アルファベット単語の前にスペースが存在しません。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。後は、それぞれの Docker イメージを作ってサクッと実行できるようにしたうえで、設定を詰めていけばいい感じになりそう。
以上。