独自のリポジトリを作成して、いくつかの git ソースをフェッチします。
# packages.nix
with (import <nixpkgs> {});
rec {
rustcSource = fetchgit {
url = https://github.com/rust-lang/rust;
rev = "3191fbae9da539442351f883bdabcad0d72efcb6";
sha256 = "0w1l14kz9kxyj5dw3w9xxk1fzww5xqs3sf8saay0mh7nkmvrdb59";
};
}
それから私は構築しますrustcSource
、
sudo nix-env -f package.nix -A rustcSource
のストア パスが表示され/nix/store/096fpy9qjbz5r14aadjnq9d2md9ql9cg-rust-3191fba
ます。問題は、サブモジュールをダウンロードするのを忘れていたので、式を変更してサブモジュールを含めることです。
with (import <nixpkgs> {});
rec {
rustcSource = fetchgit {
url = https://github.com/rust-lang/rust;
rev = "3191fbae9da539442351f883bdabcad0d72efcb6";
sha256 = "0w1l14kz9kxyj5dw3w9xxk1fzww5xqs3sf8saay0mh7nkmvrdb59";
leaveDotGit = true;
fetchSubmodules = true;
};
}
しかし、nix-build
ハッシュが再計算されず、パスが構築されていることがわかりました。そのため、サブモジュールをダウンロードしないことになります。
Q: nix バグですか? リポジトリを「再構築」または再ダウンロードするにはどうすればよいですか?
PS実際にはfetchgitを使用して派生を作成しますが、サブモジュールがダウンロードされていないため失敗します。したがって、上記のケースは私の問題を単純化します。