linux make install (#12870)

Release Notes:

- N/A
This commit is contained in:
Conrad Irwin 2024-06-10 20:43:13 -06:00 committed by GitHub
parent 44a58647e4
commit ef84ce76e3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 60 additions and 25 deletions

View File

@ -305,9 +305,6 @@ jobs:
exit 1
fi
- name: Generate license file
run: script/generate-licenses
- name: Create and upload Linux .tar.gz bundle
run: script/bundle-linux

View File

@ -40,32 +40,42 @@ docker compose up -d
Once you have the dependencies installed, you can build Zed using [Cargo](https://doc.rust-lang.org/cargo/).
For a debug build:
For a debug build of the editor:
```
cargo run
```
For a release build:
```
cargo run --release
```
For a release package:
```
cargo build --release
```
the binary can be found in `target/release` folder.
And to run the tests:
```
cargo test --workspace
```
In release mode, the primary user interface is the `cli` crate. You can run it in development with:
```
cargo run -p cli
```
## Installing a development build
You can install a local build on your machine with:
```
./script/install-linux
```
This will build zed and the cli in release mode and make them available at `~/.local/bin/zed`, installing .desktop files to `~/.local/share`.
If you'd like to install things to a different prefix you can use:
```
./script/install-linux /usr/
```
In this case the binary will be `/usr/bin/zed` and the `.desktop` file in `/usr/share`. The script should prompt for sudo as required so that the rust build runs as the current user.
## Wayland & X11
Zed has basic support for both modes. The mode is selected at runtime. If you're on wayland and want to run in X11 mode, you can set `WAYLAND_DISPLAY='' cargo run` to do so.

View File

@ -95,14 +95,12 @@ mkdir -p "${zed_dir}/share/applications"
envsubst < "crates/zed/resources/zed.desktop.in" > "${zed_dir}/share/applications/zed$suffix.desktop"
# Licenses
script/generate-licenses
cp "assets/licenses.md" "${zed_dir}/licenses.md"
# Create archive out of everything that's in the temp directory
target="linux-$(uname -m)"
if [[ "$channel" == "nightly" ]]; then
archive="zed-${target}.tar.gz"
elif [[ "$channel" == "dev" ]]; then
if [[ "$channel" == "dev" ]]; then
archive="zed-${commit}-${target}.tar.gz"
else
archive="zed-${target}.tar.gz"

26
script/install-linux Executable file
View File

@ -0,0 +1,26 @@
#!/usr/bin/env bash
set -euxo pipefail
if [[ $# -gt 0 ]]; then
echo "
Usage: ${0##*/}
Builds and installs zed onto your system into ~/.local, making it available as ~/.local/bin/zed.
Before running this you should ensure you have all the build dependencies installed with `./script/linux`.
"
exit 1
fi
export ZED_CHANNEL=$(<crates/zed/RELEASE_CHANNEL)
export ZED_UPDATE_EXPLANATION="You need to fetch and rebuild zed in $(pwd)"
script/bundle-linux
target="linux-$(uname -m)"
commit=$(git rev-parse HEAD | cut -c 1-7)
if [[ "$ZED_CHANNEL" == "dev" ]]; then
archive="zed-${commit}-${target}.tar.gz"
else
archive="zed-${target}.tar.gz"
fi
export ZED_BUNDLE_PATH="target/release/${archive}"
script/install.sh

View File

@ -43,8 +43,12 @@ main() {
}
linux() {
echo "Downloading Zed"
curl "https://zed.dev/api/releases/$channel/latest/zed-linux-$arch.tar.gz" > "$temp/zed-linux-$arch.tar.gz"
if [[ -n "${ZED_BUNDLE_PATH:-}" ]]; then
cp "$ZED_BUNDLE_PATH" "$temp/zed-linux-$arch.tar.gz"
else
echo "Downloading Zed"
curl "https://zed.dev/api/releases/$channel/latest/zed-linux-$arch.tar.gz" > "$temp/zed-linux-$arch.tar.gz"
fi
suffix=""
if [[ $channel != "stable" ]]; then
@ -91,7 +95,7 @@ linux() {
desktop_file_path="$HOME/.local/share/applications/${appid}.desktop"
cp ~/.local/zed$suffix.app/share/applications/zed$suffix.desktop "${desktop_file_path}"
sed -i "s|Icon=zed|Icon=$HOME/.local/zed$suffix.app/share/icons/hicolor/512x512/apps/zed.png|g" "${desktop_file_path}"
sed -i "s|Exec=zed|Exec=$HOME/.local/zed$suffix.app/bin/zed|g" "${desktop_file_path}"
sed -i "s|Exec=zed|Exec=$HOME/.local/zed$suffix.app/libexec/zed-editor|g" "${desktop_file_path}"
if which "zed" >/dev/null 2>&1; then
echo "Zed has been installed. Run with 'zed'"