Rollup merge of #126856 - onur-ozkan:remove-rls, r=clubby789

remove deprecated tool `rls`

This tool has been deprecated for two years and now it only gives warning without doing anything useful.

Zulip discussion: https://rust-lang.zulipchat.com/#narrow/stream/241545-t-release/topic/excluding.20rls.20from.20the.20release

try-job: x86_64-gnu-distcheck
This commit is contained in:
Matthias Krüger 2025-03-13 10:58:13 +01:00 committed by GitHub
commit 3b1776dc29
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 7 additions and 189 deletions

View file

@ -386,7 +386,6 @@ impl Builder {
// NOTE: this profile is effectively deprecated; do not add new components to it.
let mut complete = default;
complete.extend([
Rls,
RustAnalyzer,
RustSrc,
LlvmTools,
@ -475,7 +474,6 @@ impl Builder {
// but might be marked as unavailable if they weren't built.
PkgType::Clippy
| PkgType::Miri
| PkgType::Rls
| PkgType::RustAnalyzer
| PkgType::Rustfmt
| PkgType::LlvmTools

View file

@ -51,7 +51,6 @@ pkg_type! {
Cargo = "cargo",
HtmlDocs = "rust-docs",
RustAnalysis = "rust-analysis",
Rls = "rls"; preview = true,
RustAnalyzer = "rust-analyzer"; preview = true,
Clippy = "clippy"; preview = true,
Rustfmt = "rustfmt"; preview = true,
@ -77,7 +76,6 @@ impl PkgType {
fn should_use_rust_version(&self) -> bool {
match self {
PkgType::Cargo => false,
PkgType::Rls => false,
PkgType::RustAnalyzer => false,
PkgType::Clippy => false,
PkgType::Rustfmt => false,
@ -118,7 +116,6 @@ impl PkgType {
HtmlDocs => HOSTS,
JsonDocs => HOSTS,
RustSrc => &["*"],
Rls => HOSTS,
RustAnalyzer => HOSTS,
Clippy => HOSTS,
Miri => HOSTS,

View file

@ -1,8 +0,0 @@
[package]
name = "rls"
version = "2.0.0"
edition = "2021"
license = "Apache-2.0/MIT"
[dependencies]
serde_json = "1.0.83"

View file

@ -1,6 +0,0 @@
# RLS Stub
RLS has been replaced with [rust-analyzer](https://rust-analyzer.github.io/).
This directory contains a stub which replaces RLS with a simple LSP server
which only displays an alert to the user that RLS is no longer available.

View file

@ -1,102 +0,0 @@
//! RLS stub.
//!
//! This is a small stub that replaces RLS to alert the user that RLS is no
//! longer available.
use std::error::Error;
use std::io::{BufRead, Write};
use serde_json::Value;
const ALERT_MSG: &str = "\
RLS is no longer available as of Rust 1.65.
Consider migrating to rust-analyzer instead.
See https://rust-analyzer.github.io/ for installation instructions.
";
fn main() {
if let Err(e) = run() {
eprintln!("error: {e}");
std::process::exit(1);
}
}
struct Message {
method: Option<String>,
}
fn run() -> Result<(), Box<dyn Error>> {
let mut stdin = std::io::stdin().lock();
let mut stdout = std::io::stdout().lock();
let init = read_message(&mut stdin)?;
if init.method.as_deref() != Some("initialize") {
return Err(format!("expected initialize, got {:?}", init.method).into());
}
// No response, the LSP specification says that `showMessageRequest` may
// be posted before during this phase.
// message_type 1 is "Error"
let alert = serde_json::json!({
"jsonrpc": "2.0",
"id": 1,
"method": "window/showMessageRequest",
"params": {
"message_type": "1",
"message": ALERT_MSG
}
});
write_message_raw(&mut stdout, serde_json::to_string(&alert).unwrap())?;
loop {
let message = read_message(&mut stdin)?;
if message.method.as_deref() == Some("shutdown") {
std::process::exit(0);
}
}
}
fn read_message_raw<R: BufRead>(reader: &mut R) -> Result<String, Box<dyn Error>> {
let mut content_length: usize = 0;
// Read headers.
loop {
let mut line = String::new();
reader.read_line(&mut line)?;
if line.is_empty() {
return Err("remote disconnected".into());
}
if line == "\r\n" {
break;
}
if line.to_lowercase().starts_with("content-length:") {
let value = &line[15..].trim();
content_length = usize::from_str_radix(value, 10)?;
}
}
if content_length == 0 {
return Err("no content-length".into());
}
let mut buffer = vec![0; content_length];
reader.read_exact(&mut buffer)?;
let content = String::from_utf8(buffer)?;
Ok(content)
}
fn read_message<R: BufRead>(reader: &mut R) -> Result<Message, Box<dyn Error>> {
let m = read_message_raw(reader)?;
match serde_json::from_str::<Value>(&m) {
Ok(message) => Ok(Message {
method: message.get("method").and_then(|value| value.as_str().map(String::from)),
}),
Err(e) => Err(format!("failed to parse message {m}\n{e}").into()),
}
}
fn write_message_raw<W: Write>(mut writer: W, output: String) -> Result<(), Box<dyn Error>> {
write!(writer, "Content-Length: {}\r\n\r\n{}", output.len(), output)?;
writer.flush()?;
Ok(())
}

View file

@ -32,8 +32,6 @@ pub fn filter_dirs(path: &Path) -> bool {
"src/doc/rustc-dev-guide",
"src/doc/reference",
"src/gcc",
// Filter RLS output directories
"target/rls",
"src/bootstrap/target",
"vendor",
];