2017-08-08 11 views
1

私は私は、それにいくつかのファイルを変更し、非Bazelは、zipファイルを生成取るしようとしているだけではそれらのほとんどを維持して、最終的に〜オリジナルコンテンツ(プラス、私の変更)と新しいtarballを作るアーカイブの再パッケージ化時に1つのファイルを変更するにはどうすればよいですか?

よ私のルールをきれいに指定するのに問題があり、それを行う方法についての提案があれば素晴らしいだろう。

元のzipファイルを 'new_http_archive' WORKSPACEルールでインポートしています。これはかなりうまくいく。私はビルドファイルをルートの下の1レベルのパッケージに入れました。これを 'foo_repackage'としましょう。 foo_repackage/BUILD.root_archiveで

:大きな問題はfoo_repackage/BUILDファイルである

package(default_visibility = ["//visibility:public"]) 

filegroup(
    name = "all_files", 
    srcs = glob(
     ["**"], 
     exclude = ["*", "share/doc/api/**"] 
    ), 
) 

、私は上記のall_filesグループからのすべてのファイルを利用したいと思い、ため除きますそのうちのいくつかは私が修正するでしょう。私は簡単にこれを行う方法を見ることができません。上記のグロブから除外して、そのファイルを指定する新しいルールを作成する必要があります。これは、グローバルall_files除外ルールを変更し続ける必要があることを意味します。

いくつかのファイルが除外されている上記のファイルのすべてである新しいファイルグループを作成することができれば理想的です。

私は最後のステップは、結果を再パッケージするpkg_tarを使用することはもちろんであることを言及する必要があります - これはfoo_repackageである/

pkg_tar(
    name = "OutputTarball", 
    files = ["@root_archive//:all_files"], 
    deps = [":layers_of_modified_files"], 
    strip_prefix = "/../root_archive", 
) 

を構築誰もがこれを行うには良い方法がありますか?ショーン

+0

これは私にとっては妥当と思われます。あなたの主な関心事は何ですか?除外リストは非常に長くなるだろうか? (zipからの)ファイルシステム上に存在するものと同じ名前のファイルを生成しようとすると、問題が発生する可能性があります。バゼルはそれを好まないでしょう。 – zlalanne

答えて

1

はあなたのような変数を使用することができ

おかげで、:

MODIFIABLE_FILES = [ 
    "some/file", 
    "another/file", 
    ... 
] 

filegroup(
    name = "static-files", 
    srcs = glob(["**"], exclude = MODIFIABLE_FILES) 
) 

filegroup(
    name = "modifiable-files", 
    srcs = MODIFIABLE_FILES, 
) 

そして、静的ファイルおよび変更可能なファイルのリストは、同期が維持され、あなた場合は、誤って、ビルドエラーが発生します存在しない変更可能なファイルを指定してください。

+0

これは完璧です。私は可変的な解決策は考えていませんでした。メンテナンスが容易で、特に、2つ目のファイルグループに含まれないため、静的ファイルの変更にエラーが発生する可能性は低いです。 –

関連する問題