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()
++                                            );
++                                        }
+                                     }
+                                 }
+                             }

Reply via email to