操作
バグ #208
完了beatorajaリポジトリのCRLF改行でLinuxコンテナ内のビルドスクリプトが動かない
バグ #208:
beatorajaリポジトリのCRLF改行でLinuxコンテナ内のビルドスクリプトが動かない
説明
refs #195
izu-ir #195(plugin実装)作業中に判明した申し送り事項。izu-ir の scripts/setup-beatoraja-jar.sh が beatoraja をクローン・ビルドして plugin/libs/beatoraja.jar を生成するが、以下のトラブルで DevContainer(Linux/bash)内でそのままは動かなかった。
現象¶
-
gradlewが CRLF 改行-
./gradlew実行時にfailed to run command './gradlew': No such file or directory(シェバン#!/bin/sh\rが/bin/sh\rと解釈される)。 -
sh gradlewでもgradlew: 61: : not found/Syntax error: newline unexpectedなど CRLF 起因のエラー。
-
-
scripts/setup-sibling-repos.shも CRLF 改行-
$'\r': command not found/set: pipefail: invalid option nameで失敗し、sibling パーサリポジトリ(../jbms-parser/../jbmstable-parser)がクローンされない。 - そのため
settings.gradleのincludeBuildが成立せず、bms.model.*(Mode 等)を参照する plugin コンパイルが通らない。
-
#195での回避(恒久対応ではない)¶
- sibling リポジトリを手動クローン(
git clone https://github.com/izu-san/jbms-parser.git他)。 - Gradle wrapper を
./gradlewではなくjava -classpath gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMainで直起動(CRLF の gradlew を避ける)。 - izu-ir 側
scripts/setup-beatoraja-jar.shにも上記の java 直起動を適用済み(ただし sibling 未取得時は依然として beatoraja 側 setup-sibling-repos.sh に依存)。
期待する恒久対応(beatoraja リポジトリ側)¶
-
.gitattributesでシェルスクリプト・gradlewをeol=lf(または* text=auto eol=lf)に固定し、チェックアウト改行を LF に統一する。 - 既存ファイルの改行を LF に正規化(
git add --renormalize .)。 - DevContainer の
postCreateCommandで sibling クローンが確実に走ることを確認。
影響¶
- izu-ir plugin(#195)のローカル compile/test、および beatoraja 自体のコンテナビルドの再現性・自動化に影響。
操作