Fix Rust-Analyzer conflicts with build targets and other compile speed issues

This commit is contained in:
Keavon Chambers 2024-07-15 15:55:04 -07:00
parent 212f08c6c8
commit 857bc772de
4 changed files with 40 additions and 37 deletions

View file

@ -32,10 +32,8 @@
"editor.formatOnSave": false
},
// Rust Analyzer config
"rust-analyzer.cargo.target": "wasm32-unknown-unknown",
"rust-analyzer.cargo.allTargets": false,
"rust-analyzer.check.command": "clippy",
"rust-analyzer.cargo.buildScripts.overrideCommand": ["cargo", "check", "--quiet", "--message-format=json", "--all-targets", "-p", "graphite-wasm"], // Build scripts for Tauri aren't compatible with wasm32-unknown-unknown, so this restricts it to just our code entry point
"rust-analyzer.diagnostics.disabled": ["unresolved-macro-call"], // Remove when https://github.com/rust-lang/rust-analyzer/issues/6835 is fixed
// ESLint config
"eslint.format.enable": true,
"eslint.workingDirectories": ["./frontend", "./website/other/bezier-rs-demos", "./website"],

View file

@ -93,30 +93,22 @@ kurbo = { git = "https://github.com/linebender/kurbo.git", features = [
"serde",
] }
[profile.dev.package.graphite-editor]
opt-level = 1
[profile.dev.package.graphene-core]
opt-level = 1
[profile.dev.package.graphene-std]
opt-level = 1
[profile.dev.package.interpreted-executor]
opt-level = 1 # This is a mitigation for https://github.com/rustwasm/wasm-pack/issues/981 which is needed because the node_registry function is too large
[profile.dev.package.autoquant]
opt-level = 3
[profile.dev.package.image]
opt-level = 3
[profile.dev.package.rustc-hash]
opt-level = 3
[profile.dev]
opt-level = 1
[profile.dev.package]
graphite-editor = { opt-level = 1 }
graphene-core = { opt-level = 1 }
graphene-std = { opt-level = 1 }
interpreted-executor = { opt-level = 1 } # This is a mitigation for https://github.com/rustwasm/wasm-pack/issues/981 which is needed because the node_registry function is too large
graphite-proc-macros = { opt-level = 3 }
autoquant = { opt-level = 3 }
image = { opt-level = 3 }
rustc-hash = { opt-level = 3 }
serde_derive = { opt-level = 3 }
specta-macros = { opt-level = 3 }
syn = { opt-level = 3 }
[profile.release]
lto = "thin"

View file

@ -1,8 +1,8 @@
# This is a helper file for people using NixOs as their Operating System
# > If you don't know what this file does you can safely ignore it :D
# This is a helper file for people using NixOS as their operating system.
# If you don't know what this file does, you can safely ignore it.
# If you are using nix as your package manager, you can run 'nix-shell'
# in the root directory of the project and nix will open a bash shell
# If you are using Nix as your package manager, you can run 'nix-shell'
# in the root directory of the project and Nix will open a bash shell
# with all the packages needed to build and run Graphite installed.
# A shell.nix file is used in the Nix ecosystem to define a development
# environment with specific dependencies. When you enter a Nix shell using
@ -10,8 +10,10 @@
# available regardless of the host system's configuration. This provides
# a reproducible development environment across different machines and developers.
# If you don't need the shell, you can build Graphite using this command:
# nix-shell --command "npm start"
# You can enter the Nix shell and run Graphite like normal with:
# > npm start
# Or you can run it like this without needing to first enter the Nix shell:
# > nix-shell --command "npm start"
let
# Get oxalica's Rust overlay for better Rust integration
@ -50,25 +52,25 @@ in
pkgs.llvm
pkgs.gcc-unwrapped.lib
pkgs.llvmPackages.libcxxStdenv
pkgs.pkg-config
# For Tauri
pkgs.openssl
pkgs.glib
pkgs.gtk3
pkgs.libsoup
pkgs.webkitgtk
pkgs.pkg-config
pkgs.openssl
# For Raw-rs tests
pkgs.libraw
# Use Mold as a Linke
# Use Mold as a linker
pkgs.mold
];
# Hacky way to run cago through Mold
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [pkgs.openssl pkgs.vulkan-loader pkgs.libxkbcommon pkgs.llvmPackages.libcxxStdenv pkgs.gcc-unwrapped.lib pkgs.llvm];
# Hacky way to run Cargo through Mold
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [pkgs.openssl pkgs.vulkan-loader pkgs.libxkbcommon pkgs.llvmPackages.libcxxStdenv pkgs.gcc-unwrapped.lib pkgs.llvm pkgs.libraw];
shellHook = ''
alias cargo='mold --run cargo'
'';
}

View file

@ -29,16 +29,27 @@ You'll likely get faster build times if you manually install this specific versi
cargo install -f wasm-bindgen-cli@0.2.92
```
<!-- THESE INSTRUCTIONS ARE HIDDEN UNTIL WE NEED THEM AGAIN FOR TAURI DEVELOPMENT ONCE THAT HAS BEEN MERGED INTO MASTER -->
<!--
On Linux, you may need to install this set of additional packages if you run into issues:
<details>
<summary>Click to view</summary>
```sh
# On Debian-based (Ubuntu, Mint, etc.) distributions:
sudo apt install libgtk-3-dev libsoup2.4-dev libjavascriptcoregtk-4.0-dev libwebkit2gtk-4.0-dev
# On Fedora-based (RHEL, CentOS, etc.) distributions:
sudo dnf install gtk3-devel libsoup-devel javascriptcoregtk4.0-devel webkit2gtk4.0-devel
# On NixOS or when using the Nix package manager:
nix-shell
```
</details>
-->
## Repository
Clone the project to a convenient location: