patch cargo-xbuild to ensure copied Cargo.lock is writable
https://github.com/rust-osdev/cargo-xbuild/issues/96
This commit is contained in:
parent
34a63d7732
commit
56c94b0855
|
@ -8,7 +8,9 @@ let
|
||||||
src = ./.;
|
src = ./.;
|
||||||
cargoSha256 = "1f2psa1g41pl2j8n60hhik2s2pqdfjhr5capimvajf81kxrnn2ck";
|
cargoSha256 = "1f2psa1g41pl2j8n60hhik2s2pqdfjhr5capimvajf81kxrnn2ck";
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgs.cargo-xbuild ];
|
nativeBuildInputs = [
|
||||||
|
(pkgs.cargo-xbuild.overrideAttrs(oa: { patches = oa.patches ++ [ ./xbuild_writable_lockfile.diff ]; } ))
|
||||||
|
];
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
export XARGO_RUST_SRC="${rustPlatform.rust.rustc.src}/library"
|
export XARGO_RUST_SRC="${rustPlatform.rust.rustc.src}/library"
|
||||||
export CARGO_HOME=$(mktemp -d cargo-home.XXX)
|
export CARGO_HOME=$(mktemp -d cargo-home.XXX)
|
||||||
|
|
|
@ -8,7 +8,7 @@ in
|
||||||
rustPlatform.rust.rustc
|
rustPlatform.rust.rustc
|
||||||
rustPlatform.rust.cargo
|
rustPlatform.rust.cargo
|
||||||
pkgs.cacert
|
pkgs.cacert
|
||||||
pkgs.cargo-xbuild
|
(pkgs.cargo-xbuild.overrideAttrs(oa: { patches = oa.patches ++ [ ./xbuild_writable_lockfile.diff ]; } ))
|
||||||
|
|
||||||
pkgs.openocd pkgs.gdb
|
pkgs.openocd pkgs.gdb
|
||||||
pkgs.openssh pkgs.rsync
|
pkgs.openssh pkgs.rsync
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
diff --git a/src/sysroot.rs b/src/sysroot.rs
|
||||||
|
index 1f3c8d1..422d3d0 100644
|
||||||
|
--- a/src/sysroot.rs
|
||||||
|
+++ b/src/sysroot.rs
|
||||||
|
@@ -85,10 +85,20 @@ fn build_crate(
|
||||||
|
}
|
||||||
|
|
||||||
|
util::write(&td.join("Cargo.toml"), &stoml)?;
|
||||||
|
- fs::copy(lockfile, &td.join("Cargo.lock")).chain_err(||
|
||||||
|
+ let dst_file = td.join("Cargo.lock");
|
||||||
|
+ fs::copy(lockfile, &dst_file).chain_err(||
|
||||||
|
format!("failed to copy Cargo.lock from `{}` to `{}`",
|
||||||
|
- lockfile.display(), &td.join("Cargo.lock").display())
|
||||||
|
+ lockfile.display(), &dst_file.display())
|
||||||
|
)?;
|
||||||
|
+ let mut perms = fs::metadata(&dst_file).chain_err(||
|
||||||
|
+ format!("failed to retrieve permissions for `{}`",
|
||||||
|
+ dst_file.display())
|
||||||
|
+ )?.permissions();
|
||||||
|
+ perms.set_readonly(false);
|
||||||
|
+ fs::set_permissions(&dst_file, perms).chain_err(||
|
||||||
|
+ format!("failed to update permissions for `{}`",
|
||||||
|
+ dst_file.display())
|
||||||
|
+ );
|
||||||
|
util::mkdir(&td.join("src"))?;
|
||||||
|
util::write(&td.join("src/lib.rs"), "")?;
|
||||||
|
|
Loading…
Reference in New Issue