%global rustflags_debuginfo 0 %global toolchain clang %global zed_app_id dev.zed.Zed %global zed_icon_name zed Name: zed Version: 1.15.1 Release: %autorelease Summary: A high-performance, multiplayer code editor from the creators of Atom and Tree-sitter License: Apache-2.0 AND GPL-3.0-or-later URL: https://github.com/zed-industries/zed Source0: %{url}/archive/refs/tags/v%{version}.tar.gz Patch0: zed-remove-standard-rpath.patch BuildRequires: alsa-lib-devel BuildRequires: cargo-rpm-macros >= 24 BuildRequires: clang BuildRequires: cmake BuildRequires: fontconfig-devel BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: gettext-envsubst BuildRequires: libcurl-devel BuildRequires: libxkbcommon-x11-devel BuildRequires: libzstd-devel BuildRequires: mold BuildRequires: openssl-devel BuildRequires: perl-FindBin BuildRequires: perl-File-Compare BuildRequires: perl-File-Copy BuildRequires: perl-IPC-Cmd BuildRequires: perl-lib BuildRequires: vulkan-loader BuildRequires: wayland-devel %if !0%{?fedora} BuildRequires: curl %endif %if 0%{?fedora} %ifarch x86_64 BuildRequires: libedit(x86-64) %endif %endif %description %{summary}. %prep %autosetup -n %{name}-%{version} -p1 %if !0%{?fedora} __SYSTEM_RUST_VERSION="$(rustc --version | sed -E 's/^rustc ([0-9]+(\.[0-9]+){1,2}).*/\1/')" __REQUIRED_RUST_VERSION="$(sed -nE 's/^[[:space:]]*channel[[:space:]]*=[[:space:]]*"([0-9]+(\.[0-9]+){1,2})".*/\1/p' rust-toolchain.toml)" __REQUIRED_RUST_VERSION="$(printf '%s\n' "$__REQUIRED_RUST_VERSION" | awk -F. ' NF == 2 { print $0 ".0" } NF == 3 { print $0 } ')" if [ -z "$__SYSTEM_RUST_VERSION" ] || [ -z "$__REQUIRED_RUST_VERSION" ]; then echo "Unable to determine the Rust versions" exit 1 fi if [ "$(printf '%s\n%s\n' "$__SYSTEM_RUST_VERSION" "$__REQUIRED_RUST_VERSION" | sort -V | tail -n1)" = "$__SYSTEM_RUST_VERSION" ]; then echo "Skipping Rust download. Required ${__REQUIRED_RUST_VERSION}, Installed: ${__SYSTEM_RUST_VERSION}" else echo "Downloading Rust ${__REQUIRED_RUST_VERSION} ..." curl --fail --location --output rustup-init \ "https://static.rust-lang.org/rustup/dist/$(uname --machine)-unknown-linux-gnu/rustup-init" chmod +x rustup-init ./rustup-init --verbose --profile minimal --default-toolchain "$__REQUIRED_RUST_VERSION" -y rm -f rustup-init fi %endif export DO_STARTUP_NOTIFY="true" export APP_ICON="%{zed_icon_name}" export APP_NAME="Zed" export APP_CLI="zed" export APP_ID="%{zed_app_id}" export APP_ARGS="%U" envsubst < "crates/zed/resources/zed.desktop.in" > %{zed_app_id}.desktop sed -i "s|@release_info@||g" "crates/zed/resources/flatpak/zed.metainfo.xml.in" envsubst < "crates/zed/resources/flatpak/zed.metainfo.xml.in" > %{zed_app_id}.metainfo.xml %build %if !0%{?fedora} if [ -x "${HOME}/.cargo/bin/rustc" ]; then export PATH="${HOME}/.cargo/bin:${PATH}" fi rustc --version cargo --version %endif export CARGO_HOME="$PWD/.cargo-rpm" mkdir -p "$CARGO_HOME" cat > "$CARGO_HOME/config.toml" < crates/zed/RELEASE_CHANNEL cargo build --profile rpm --locked --package zed --package cli ALLOW_MISSING_LICENSES=1 script/generate-licenses %install install -D --mode=0755 target/rpm/cli "%{buildroot}%{_bindir}/zed" install -D --mode=0755 target/rpm/zed "%{buildroot}%{_libexecdir}/zed-editor" install -D --mode=0644 %{zed_app_id}.desktop "%{buildroot}%{_datadir}/applications/%{zed_app_id}.desktop" install -D --mode=0644 %{zed_app_id}.metainfo.xml "%{buildroot}%{_metainfodir}/%{zed_app_id}.metainfo.xml" install -D --mode=0644 crates/zed/resources/app-icon.png "%{buildroot}%{_datadir}/icons/hicolor/512x512/apps/%{zed_icon_name}.png" %files %license LICENSE-APACHE LICENSE-GPL %license assets/licenses.md %{_bindir}/zed %{_libexecdir}/zed-editor %{_datadir}/applications/%{zed_app_id}.desktop %{_datadir}/icons/hicolor/512x512/apps/%{zed_icon_name}.png %{_metainfodir}/%{zed_app_id}.metainfo.xml %changelog %autochangelog