Date: Tuesday, November 15, 2022 @ 21:03:59
Author: polyzen
Revision: 1348996
upgpkg: rust-analyzer 20221114-3: Support standalone server in both lib and
libexec
Thanks to @heftig for the new patch and Akatsuki Rui (akiirui) for their
testing.
Fixes FS#76568
Upstream issue: rust-lang/rust-analyzer#13589
Added:
rust-analyzer/trunk/rust-analyzer-support_standalone_server_in_lib.patch
Modified:
rust-analyzer/trunk/PKGBUILD
Deleted:
rust-analyzer/trunk/rust-analyzer-fix_unsupportedabi.patch
------------------------------------------------------+
PKGBUILD | 8 +-
rust-analyzer-fix_unsupportedabi.patch | 39 ----------
rust-analyzer-support_standalone_server_in_lib.patch | 64 +++++++++++++++++
3 files changed, 68 insertions(+), 43 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2022-11-15 21:03:24 UTC (rev 1348995)
+++ PKGBUILD 2022-11-15 21:03:59 UTC (rev 1348996)
@@ -4,7 +4,7 @@
pkgname=rust-analyzer
_pkgver=2022-11-14
pkgver=${_pkgver//-}
-pkgrel=2
+pkgrel=3
pkgdesc='Rust compiler front-end for IDEs'
arch=('x86_64')
url=https://rust-analyzer.github.io/
@@ -12,15 +12,15 @@
depends=('gcc-libs' 'rust-src')
makedepends=('git')
source=("git+https://github.com/rust-lang/$pkgname.git#tag=$_pkgver"
- 'rust-analyzer-fix_unsupportedabi.patch')
+ 'rust-analyzer-support_standalone_server_in_lib.patch')
b2sums=('SKIP'
-
'cda286154536f73b7f069d352b7010819d722e14448f2581ea1c4911c7dba667daebf95f2d98f680c85667502cc6de1fb2d11194a74ff7325e91897a25273018')
+
'48ddf95953a94fb701b240903fb8e6ebb275933fe1e3f023cab06b10abd3a8d307babfb172ea8b93f7fbebf3e61d2fe1c4bb45ca66e406dd823c4895d515432b')
prepare() {
cd $pkgname
cargo fetch --locked --target "$CARCH-unknown-linux-gnu"
- patch --forward --strip=1 --input=../rust-analyzer-fix_unsupportedabi.patch
+ patch --forward --strip=1
--input=../rust-analyzer-support_standalone_server_in_lib.patch
}
build() {
Deleted: rust-analyzer-fix_unsupportedabi.patch
===================================================================
--- rust-analyzer-fix_unsupportedabi.patch 2022-11-15 21:03:24 UTC (rev
1348995)
+++ rust-analyzer-fix_unsupportedabi.patch 2022-11-15 21:03:59 UTC (rev
1348996)
@@ -1,39 +0,0 @@
-From 84837229b441cee84391f5f26594f9642b439208 Mon Sep 17 00:00:00 2001
-From: Akatsuki Rui <[email protected]>
-Date: Tue, 15 Nov 2022 01:18:25 +0800
-Subject: [PATCH] fix: UnsupportedABI on Arch Linux
-
----
- crates/rust-analyzer/src/cli/load_cargo.rs | 2 +-
- crates/rust-analyzer/src/reload.rs | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/crates/rust-analyzer/src/cli/load_cargo.rs
b/crates/rust-analyzer/src/cli/load_cargo.rs
-index 5dba545b8..befaeb9e7 100644
---- a/crates/rust-analyzer/src/cli/load_cargo.rs
-+++ b/crates/rust-analyzer/src/cli/load_cargo.rs
-@@ -69,7 +69,7 @@ pub fn load_workspace(
- if let Some(sysroot) = sysroot.as_ref() {
- let standalone_server_name =
- format!("rust-analyzer-proc-macro-srv{}",
std::env::consts::EXE_SUFFIX);
-- let server_path =
sysroot.root().join("libexec").join(&standalone_server_name);
-+ let server_path =
sysroot.root().join("lib").join(&standalone_server_name);
- if std::fs::metadata(&server_path).is_ok() {
- path = server_path;
- args = vec![];
-diff --git a/crates/rust-analyzer/src/reload.rs
b/crates/rust-analyzer/src/reload.rs
-index aa0510a4e..097684295 100644
---- a/crates/rust-analyzer/src/reload.rs
-+++ b/crates/rust-analyzer/src/reload.rs
-@@ -329,7 +329,7 @@ impl GlobalState {
- if let Some(sysroot) = sysroot.as_ref() {
- let server_path = sysroot
- .root()
-- .join("libexec")
-+ .join("lib")
- .join(&standalone_server_name);
- if
std::fs::metadata(&server_path).is_ok() {
- tracing::debug!(
---
-2.38.1
-
Added: rust-analyzer-support_standalone_server_in_lib.patch
===================================================================
--- rust-analyzer-support_standalone_server_in_lib.patch
(rev 0)
+++ rust-analyzer-support_standalone_server_in_lib.patch 2022-11-15
21:03:59 UTC (rev 1348996)
@@ -0,0 +1,64 @@
+diff --git c/crates/rust-analyzer/src/cli/load_cargo.rs
i/crates/rust-analyzer/src/cli/load_cargo.rs
+index 5dba545b8..c9faeaa6b 100644
+--- c/crates/rust-analyzer/src/cli/load_cargo.rs
++++ i/crates/rust-analyzer/src/cli/load_cargo.rs
+@@ -69,10 +69,13 @@ pub fn load_workspace(
+ if let Some(sysroot) = sysroot.as_ref() {
+ let standalone_server_name =
+ format!("rust-analyzer-proc-macro-srv{}",
std::env::consts::EXE_SUFFIX);
+- let server_path =
sysroot.root().join("libexec").join(&standalone_server_name);
+- if std::fs::metadata(&server_path).is_ok() {
+- path = server_path;
+- args = vec![];
++ for dir in ["libexec", "lib"] {
++ let server_path =
sysroot.root().join(dir).join(&standalone_server_name);
++ if std::fs::metadata(&server_path).is_ok() {
++ path = server_path;
++ args = vec![];
++ break;
++ }
+ }
+ }
+ }
+diff --git c/crates/rust-analyzer/src/reload.rs
i/crates/rust-analyzer/src/reload.rs
+index aa0510a4e..d7cf69c3a 100644
+--- c/crates/rust-analyzer/src/reload.rs
++++ i/crates/rust-analyzer/src/reload.rs
+@@ -327,21 +327,22 @@ impl GlobalState {
+ | ProjectWorkspace::Json { sysroot, .. } = ws
+ {
+ if let Some(sysroot) = sysroot.as_ref() {
+- let server_path = sysroot
+- .root()
+- .join("libexec")
+- .join(&standalone_server_name);
+- if
std::fs::metadata(&server_path).is_ok() {
+- tracing::debug!(
+- "Sysroot proc-macro server exists
at {}",
+- server_path.display()
+- );
+- sysroot_server = Some(server_path);
+- } else {
+- tracing::debug!(
+- "Sysroot proc-macro server does
not exist at {}",
+- server_path.display()
+- );
++ for dir in ["libexec", "lib"] {
++ let server_path =
++
sysroot.root().join(dir).join(&standalone_server_name);
++ if
std::fs::metadata(&server_path).is_ok() {
++ tracing::debug!(
++ "Sysroot proc-macro server
exists at {}",
++ server_path.display()
++ );
++ sysroot_server =
Some(server_path);
++ break;
++ } else {
++ tracing::debug!(
++ "Sysroot proc-macro server
does not exist at {}",
++ server_path.display()
++ );
++ }
+ }
+ }
+ }