Repository navigation
Expand file tree
/
Copy pathCargo.toml
More file actions
99 lines (95 loc) · 4.9 KB
/
Copy pathCargo.toml
File metadata and controls
99 lines (95 loc) · 4.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
[workspace]
resolver = "2"
members = ["crates/core", "crates/launcher-cli", "crates/launcher-gui"]
[workspace.package]
version = "1.0.0-beta.7"
edition = "2021"
rust-version = "1.90"
license = "GPL-3.0-or-later"
repository = "https://git.tuxcore.pro/kenny/lightforge.git"
# The public mirror rather than the line above: the Forgejo instance upstream
# lives on wants a login for anything but `git clone`, and a homepage that
# sends a stranger to a sign-in form is worse than no homepage. This is what
# the packages print as the project's address.
homepage = "https://github.com/LightforgeProject/lightforge"
[workspace.dependencies]
lightforge-core = { path = "crates/core" }
anyhow = "1"
clap = { version = "4", features = ["derive"] }
directories = "5"
flate2 = "1"
# Proton-CachyOS ships .tar.xz. Builds the reference liblzma from vendored
# source, so no system library is needed at run time.
liblzma = { version = "0.4", features = ["static"] }
futures-util = { version = "0.3", default-features = false, features = ["std"] }
# Gamepads, read straight from the kernel. Steam Input only turns a pad into
# keys under a keyboard layout; under its usual gamepad one a non-Steam game
# gets a virtual Xbox pad and nothing else. Default features stay on: `wgi`
# only pulls anything in for Windows, and turning it off is a compile error
# on every target. On Linux this links libudev.so.1, the one library the
# release adds to libc and libgcc_s; every systemd distro ships it, SteamOS
# included.
gilrs = "0.11"
# `sysinfo` is for `iced::system::information`: the renderer's own adapter
# and backend, which a bug report about a game that will not draw needs and
# which nothing outside the renderer can answer.
#
# `image-without-codecs` rather than `image`: the latter turns on every codec
# of iced's own image 0.25, an AVIF encoder and OpenEXR among them, and was
# 1.9 MB of the stripped release. iced never decodes for us, so it needs none
# of them; it keeps 0.25 itself, codec-free, for its own types.
iced = { version = "0.14", features = ["tokio", "image-without-codecs", "advanced", "lazy", "canvas", "sysinfo"] }
# The GUI's one decoder: every picture goes through `art.rs` into an RGBA
# handle. Not the 0.25 iced carries, because only 0.24's JPEG decoder can
# decode at a DCT scale. JPEG and PNG are all the asset manifest and
# Battle.net's marks serve; `ico` (which brings `bmp`) and `webp`
# are for the report's screenshot picker, which offers them. None of the
# four pulls in a crate of its own.
image = { version = "0.24", default-features = false, features = ["jpeg", "png", "ico", "webp"] }
libc = "0.2"
md5 = "0.8"
open = "5"
# The file picker: the XDG desktop portal, spoken directly. `async-std` rather
# than the default `tokio` feature only to leave zbus exactly as iced already
# builds it, so this adds no second D-Bus stack.
ashpd = { version = "0.12", default-features = false, features = ["async-std"] }
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json", "stream"] }
sha2 = "0.10"
# Default features are deliberately off, and **no transport feature at all**:
# the launcher implements sentry's `Transport` over its own `core::net::Http`
# (see `report.rs`). `sentry/reqwest` wants reqwest 0.13 beside our 0.12, and
# its `rustls` feature switches the *shared* rustls onto `aws-lc-rs`, so the
# release was building a second HTTP client, a platform certificate verifier
# and a whole second crypto provider in C for a client we already had.
# `panic` would install a panic hook, and a report is only ever sent with
# someone's explicit consent; `release-health` sends a session envelope per
# launch that GlitchTip has no use for.
sentry = { version = "0.49", default-features = false, features = ["backtrace", "contexts"] }
sysinfo = { version = "0.36", default-features = false, features = ["system"] }
# For the screenshot a report carries: GlitchTip drops envelope attachments,
# so the image travels inside the event as a data URI.
base64 = "0.22"
blte = "0.4"
ngdp-crypto = "0.4"
tact-parser = "0.4"
tar = "0.4"
tempfile = "3"
tokio = { version = "1", default-features = false }
# Release ordering for the update check. Already in the lock as a build
# dependency of `sentry-contexts`, pulls nothing of its own, and knows the
# prerelease precedence rules a string compare gets wrong: `beta.10` is newer
# than `beta.2`, and `1.0.0` is newer than both.
semver = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
toml = "0.8"
# Addon packages are plain deflate zips; nothing else is needed, and the
# default feature set drags in bzip2/zstd/aes for formats WoW never uses.
zip = { version = "2", default-features = false, features = ["deflate"] }
# WTF backups. The C library, not a pure-Rust port: the backup before a launch
# blocks Play, and only the reference encoder is fast at a useful ratio.
zstd = { version = "0.14", default-features = false }
[profile.release]
lto = "thin"
codegen-units = 1