uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
71
pkgs/development/tools/rust/rust-analyzer/default.nix
Normal file
71
pkgs/development/tools/rust/rust-analyzer/default.nix
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, callPackage
|
||||
, fetchFromGitHub
|
||||
, rustPlatform
|
||||
, CoreServices
|
||||
, cmake
|
||||
, libiconv
|
||||
, useMimalloc ? false
|
||||
, doCheck ? true
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "rust-analyzer-unwrapped";
|
||||
version = "2022-05-17";
|
||||
cargoSha256 = "sha256-H0nuS56mvo5YUAUOsEnR4Cv3iFKixoHK83BcM1PFMA8=";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rust-lang";
|
||||
repo = "rust-analyzer";
|
||||
rev = version;
|
||||
sha256 = "sha256-vrVpgQYUuJPgK1NMb1nxlCdxjoYo40YkUbZpH2Z2mwM=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Code format and git history check require more dependencies but don't really matter for packaging.
|
||||
# So just ignore them.
|
||||
./ignore-git-and-rustfmt-tests.patch
|
||||
];
|
||||
|
||||
buildAndTestSubdir = "crates/rust-analyzer";
|
||||
|
||||
nativeBuildInputs = lib.optional useMimalloc cmake;
|
||||
|
||||
buildInputs = lib.optionals stdenv.isDarwin [
|
||||
CoreServices
|
||||
libiconv
|
||||
];
|
||||
|
||||
buildFeatures = lib.optional useMimalloc "mimalloc";
|
||||
|
||||
RUST_ANALYZER_REV = version;
|
||||
|
||||
inherit doCheck;
|
||||
preCheck = lib.optionalString doCheck ''
|
||||
export RUST_SRC_PATH=${rustPlatform.rustLibSrc}
|
||||
'';
|
||||
|
||||
doInstallCheck = true;
|
||||
installCheckPhase = ''
|
||||
runHook preInstallCheck
|
||||
versionOutput="$($out/bin/rust-analyzer --version)"
|
||||
echo "'rust-analyzer --version' returns: $versionOutput"
|
||||
[[ "$versionOutput" == "rust-analyzer ${version}" ]]
|
||||
runHook postInstallCheck
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = ./update.sh;
|
||||
# FIXME: Pass overrided `rust-analyzer` once `buildRustPackage` also implements #119942
|
||||
tests.neovim-lsp = callPackage ./test-neovim-lsp.nix { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "A modular compiler frontend for the Rust language";
|
||||
homepage = "https://rust-analyzer.github.io";
|
||||
license = with licenses; [ mit asl20 ];
|
||||
maintainers = with maintainers; [ oxalica ];
|
||||
mainProgram = "rust-analyzer";
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
--- a/crates/rust-analyzer/tests/slow-tests/tidy.rs
|
||||
+++ b/crates/rust-analyzer/tests/slow-tests/tidy.rs
|
||||
@@ -6,6 +6,7 @@ use std::{
|
||||
use xshell::{cmd, pushd, pushenv, read_file};
|
||||
|
||||
#[test]
|
||||
+#[ignore]
|
||||
fn check_code_formatting() {
|
||||
let _dir = pushd(sourcegen::project_root()).unwrap();
|
||||
let _e = pushenv("RUSTUP_TOOLCHAIN", "stable");
|
||||
@@ -138,6 +139,7 @@ fn check_cargo_toml(path: &Path, text: String) -> () {
|
||||
}
|
||||
|
||||
#[test]
|
||||
+#[ignore]
|
||||
fn check_merge_commits() {
|
||||
let stdout = cmd!("git rev-list --merges --invert-grep --author 'bors\\[bot\\]' HEAD~19..")
|
||||
.read()
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
{ runCommand, cargo, neovim, rust-analyzer, rustc }:
|
||||
runCommand "test-neovim-rust-analyzer" {
|
||||
nativeBuildInputs = [ cargo neovim rust-analyzer rustc ];
|
||||
|
||||
testRustSrc = /* rust */ ''
|
||||
fn main() {
|
||||
let mut var = vec![None];
|
||||
var.push(Some("hello".to_owned()));
|
||||
}
|
||||
'';
|
||||
|
||||
nvimConfig = /* lua */ ''
|
||||
vim.lsp.buf_attach_client(vim.api.nvim_get_current_buf(), vim.lsp.start_client({
|
||||
cmd = { "rust-analyzer" },
|
||||
handlers = {
|
||||
["$/progress"] = function(_, msg, ctx)
|
||||
if msg.token == "rustAnalyzer/Indexing" and msg.value.kind == "end" then
|
||||
vim.cmd("goto 23") -- let mut |var =...
|
||||
vim.lsp.buf.hover()
|
||||
end
|
||||
end,
|
||||
["textDocument/hover"] = function(_, msg, ctx)
|
||||
-- Keep newlines.
|
||||
io.write(msg.contents.value)
|
||||
vim.cmd("q")
|
||||
end,
|
||||
},
|
||||
on_error = function(code)
|
||||
print("error: " .. code)
|
||||
vim.cmd("q")
|
||||
end
|
||||
}))
|
||||
'';
|
||||
|
||||
} ''
|
||||
# neovim requires a writable HOME.
|
||||
export HOME="$(pwd)"
|
||||
|
||||
cargo new --bin test-rust-analyzer
|
||||
cd test-rust-analyzer
|
||||
cat <<<"$testRustSrc" >src/main.rs
|
||||
cat <<<"$nvimConfig" >script.lua
|
||||
|
||||
# `-u` doesn't work
|
||||
result="$(nvim --headless +'lua dofile("script.lua")' src/main.rs)"
|
||||
echo "$result"
|
||||
[[ "$result" == *"var: Vec<Option<String>>"* ]]
|
||||
touch $out
|
||||
''
|
||||
36
pkgs/development/tools/rust/rust-analyzer/update.sh
Executable file
36
pkgs/development/tools/rust/rust-analyzer/update.sh
Executable file
|
|
@ -0,0 +1,36 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl jq nix-prefetch libarchive
|
||||
# shellcheck shell=bash
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")"
|
||||
owner=rust-lang
|
||||
repo=rust-analyzer
|
||||
nixpkgs=../../../../..
|
||||
|
||||
# Update lsp
|
||||
|
||||
ver=$(
|
||||
curl -s "https://api.github.com/repos/$owner/$repo/releases" |
|
||||
jq 'map(select(.prerelease | not)) | .[0].tag_name' --raw-output
|
||||
)
|
||||
old_ver=$(sed -nE 's/.*\bversion = "(.*)".*/\1/p' ./default.nix)
|
||||
if grep -q 'cargoSha256 = ""' ./default.nix; then
|
||||
old_ver='broken'
|
||||
fi
|
||||
if [[ "$ver" == "$old_ver" ]]; then
|
||||
echo "Up to date: $ver"
|
||||
exit
|
||||
fi
|
||||
echo "$old_ver -> $ver"
|
||||
|
||||
sha256=$(nix-prefetch -f "$nixpkgs" rust-analyzer-unwrapped.src --rev "$ver")
|
||||
# Clear cargoSha256 to avoid inconsistency.
|
||||
sed -e "s#version = \".*\"#version = \"$ver\"#" \
|
||||
-e "/fetchFromGitHub/,/}/ s#sha256 = \".*\"#sha256 = \"$sha256\"#" \
|
||||
-e "s#cargoSha256 = \".*\"#cargoSha256 = \"sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"#" \
|
||||
--in-place ./default.nix
|
||||
|
||||
echo "Prebuilding for cargoSha256"
|
||||
cargo_sha256=$(nix-prefetch "{ sha256 }: (import $nixpkgs {}).rust-analyzer-unwrapped.cargoDeps.overrideAttrs (_: { outputHash = sha256; })")
|
||||
sed "s#cargoSha256 = \".*\"#cargoSha256 = \"$cargo_sha256\"#" \
|
||||
--in-place ./default.nix
|
||||
15
pkgs/development/tools/rust/rust-analyzer/wrapper.nix
Normal file
15
pkgs/development/tools/rust/rust-analyzer/wrapper.nix
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{ lib, rustPlatform, runCommand, makeWrapper, rust-analyzer-unwrapped
|
||||
, pname ? "rust-analyzer"
|
||||
, version ? rust-analyzer-unwrapped.version
|
||||
# Use name from `RUST_SRC_PATH`
|
||||
, rustSrc ? rustPlatform.rustLibSrc
|
||||
}:
|
||||
runCommand "${pname}-${version}" {
|
||||
inherit pname version;
|
||||
inherit (rust-analyzer-unwrapped) src meta;
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
} ''
|
||||
mkdir -p $out/bin
|
||||
makeWrapper ${rust-analyzer-unwrapped}/bin/rust-analyzer $out/bin/rust-analyzer \
|
||||
--set-default RUST_SRC_PATH "${rustSrc}"
|
||||
''
|
||||
Loading…
Add table
Add a link
Reference in a new issue