Temurin-build: 構成パラメーターを定義する場所の明確化

作成日 2020年10月08日  ·  6コメント  ·  ソース: adoptium/temurin-build

https://github.com/AdoptOpenJDK/openjdk-build/pull/2125#pullrequestreview-504661752での議論からスピンアウト

構成パラメーターを変更する場所は、ガイダンスを提供する必要があるものです。 物事は現在3つの場所の1つにあるので、FAQのこのセクションをまとめるときに私はそれに遭遇しました。 どちらを使用するかは、影響を受けたい人によって異なります。私には、過去にすでに混乱を招いていた変更をどこで行うべきかを明確にすることを避けてきました。 簡単な要約:

| 場所| 影響|
| --- | --- |
| groovyファイル(このPRによる)| jenkinsパイプラインを実行する場合のみ|
| プラットフォーム固有の構成スクリプト| build-farm / make-adopt-build-farm.sh (パイプラインを含む)を使用しているものは、マシンに固有のものである必要があります。
| build.sh | makejdk-any-platform.shを実行している

したがって、それらの最後の行をどのようにするかによって異なります。 ユーザーが可能な限り同じ構成オプションで養子縁組ビルドを複製できるようにする場合は、build.shに含める必要があると思いますが、ユーザーが自分でビルドするためにオプションにする場合は、jenkinsパイプラインを使用します悪い選択ではありません。 ただし、FAQを更新するなどして、プロジェクトの新しい人々が変更を加える必要があることを明確にする必要があります。

上記の3つの場所のそれぞれに物事を追加する必要がある場合の例を挙げて、各タイプをいつ使用するかについて説明する必要があります。

私は提案します:

  • プラットフォームは、bulidの環境変数に影響を与える場合にスクリプトを作成し、特定のビルドマシンのメモリ使用量をオーバーライドするための構成パラメーターを含めます。 現在、OpenJ9のCUDAやOpenSSLの有効化などがあります。これらはbuild.shに移動できます。これは、VM固有のものをそこに入れたい場合です(groovyに入れると、変更した場合にさらに多くの編集が行われます)。
  • groovyスクリプトには現在、dtraceやJITserverなどの他のopenJ9オプションのようなものがあります(正直に言うと、ここにそれらを入れるのは好きではありませんでした)が、それを支持する議論は、特定のものを追加するためのクリーンな方法であるということですJavaバージョンまたはVMですが、jenkinsを使用していない場合、定義はやや不透明になります。 おそらく、デフォルトで実行するテストスイートや、通常のヒープビルドと大規模なヒープビルドを区別して他のすべてを取り除くオプションなど、ジェンキンス固有のもののためにこれらを保持する必要がありますか?
  • build.shは、ベンダー情報など、誰がビルドしたかを示すもの、バグを報告する場合、GAビルド用の個別のフラグなどを設定します。 freetype alsaようなものがあり、そこにX11開発パスが定義されています(おそらくプラットフォームスクリプトにあるはずです)。 開発者がOpenJDKの構築方法に影響を与えるデフォルトの構成オプションのほとんどを複製できる特定の方法で一貫してadoptopenjdkを構築したい場合は、最大の影響を与えるために、ここ(またはそれから呼び出されるスクリプトの1つ)に含めることをお勧めします

ビルドスクリプト全体に変更を加える場所を理解することもhttps://github.com/AdoptOpenJDK/openjdk-build/issues/957の一部ですが、この重要な問題を明確にするためにスコープを少し制限するためにこれを作成しています

documentation enhancement help wanted

全てのコメント6件

また、ファイルをリポジトリ間で分割する問題が発生しました。これが役立つと思います...

私はそのように断片化することにあまり確信がありませんでしたが、どこに何を置くべきかを決定する必要があり、それを文書化することは簡単な最初のステップになります(まあ、決定することは良い最初のステップであり、それから文書化できます)

build.shスクリプトとgroovyスクリプトの両方で設定されたconfigureオプションは、プラットフォームスクリプトにマージする必要があります。その後、スクリプトをmakejdk-any-platform.shの下に移動する必要があると思います。 単一のフラグ(例:-use-default-config-args)を渡すとトリガーされるか、そのフラグを省略すると無効になります(したがって、スクリプトはユーザーの構成引数のみを使用します)。

これらのことは良い考えです:

  • 構成引数が設定される場所は1つだけなので、それらを見つけて変更するのが簡単になります。
  • makejdk-any-platform.shの下にプラットフォームスクリプトを移動するということは、Dockerイメージを使用するDockerビルドは、1つのリポジトリのクローンを作成するだけでよいことを意味します(ビルドリポジトリの分割が完了した後)。
  • ユーザーはconfigure引数を設定せずにmakejdk-any-platform.shを起動でき、ビルドにドッカーファイルの1つを使用していると仮定すると、ビルド構成に必要なすべてのオプションがあることが保証されます。
  • リリースごとに同じ構成ファイルをコピーするのではなく、構成引数ごとにバージョンの「範囲」を設定できます。 これは、ファイルが少なくなり、コードの重複が少なくなり、新しいOpenJDKバージョンの準備をしているときに問題が発生する可能性のあるものの数も減ることを意味します。

build-jdkアクションを実装しようとしたとき、 readmeから開始し、makejdk-any-platform.shを使用してjdkをビルドしました。これは、プラットフォーム固有の構成が表示されないことを意味し

プラットフォーム固有の構成でファイルをbuild.shと同じレベルに移動して、jenkins、git-hubアクション、jdkをネイティブにビルドするユーザーなどを、ビルドシステム環境に関係なく使用できるかどうか疑問に思いました。それ? これらのプラットフォーム固有の構成はプラットフォーム固有であり、ジェンキンス固有ではないと思います。

Groovyスクリプトはjenkins固有のビルドスクリプトであり、個別のリポジトリに分割されますhttps://github.com/AdoptOpenJDK/openjdk-build/issues/1108?

Groovy jenkinsパラメーターは、 https: //github.com/AdoptOpenJDK/ci-jenkins-pipelines/pull/67を介してjenkinsリポジトリのREADME.mdで明確にされてい

私は今、この(openjdk-build)リポジトリのFAQを調整して、jenkins固有のパラメーターをhttps://github.com/AdoptOpenJDK/ci-jenkins-pipelines/pull/67で実行する必要があることを明確にするつもりです。およびグローバルパラメータは、それぞれプラットフォームファイルとbuild.shで実行する必要があります

https://github.com/AdoptOpenJDK/openjdk-build/pull/2518がマージされ、ドキュメントの変更が完了しました。 これは、プロジェクトに新しいパラメータを追加したい人を処理する必要があります。 この問題の最後の部分は、既存のパラメータと場所を調べ、現在の場所での適切性についてそれぞれを評価し、この評価に基づいて、別の場所に移動する必要があるかどうかを評価することです。 ただし、これは大変な作業であり、現在処理している優先度の高い複数のタスクを考慮すると、妥当な期間内にこのタスクを完了する時間はないでしょう。

そのため、割り当てを削除し、他の誰かに任せて既存のパラメータを再評価します。

このページは役に立ちましたか?
0 / 5 - 0 評価