summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorent Michel <56166507+FlorentCLMichel@users.noreply.github.com>2024-08-11 21:16:40 +0100
committerGitHub <noreply@github.com>2024-08-11 20:16:40 +0000
commit70931ac1f6f68f013e25fe5437e23ad148ce23e1 (patch)
treec3399d64683c8c25c133bbdd8781a3edd8d1a06e
parentd06f3f180cd06d11f45c439180027f57287f4f84 (diff)
Fix crash when local package is missing and make OpenSSL optional in typst-kit (#4720)
-rw-r--r--crates/typst-kit/Cargo.toml4
-rw-r--r--crates/typst-kit/src/package.rs8
2 files changed, 7 insertions, 5 deletions
diff --git a/crates/typst-kit/Cargo.toml b/crates/typst-kit/Cargo.toml
index 9c13ceed..770722c6 100644
--- a/crates/typst-kit/Cargo.toml
+++ b/crates/typst-kit/Cargo.toml
@@ -28,7 +28,7 @@ ureq = { workspace = true, optional = true }
# Explicitly depend on OpenSSL if applicable, so that we can add the
# `openssl/vendored` feature to it if `vendor-openssl` is enabled.
[target.'cfg(not(any(target_os = "windows", target_os = "macos", target_os = "ios", target_os = "watchos", target_os = "tvos")))'.dependencies]
-openssl = { workspace = true }
+openssl = { workspace = true, optional = true }
[features]
default = ["fonts", "packages"]
@@ -37,7 +37,7 @@ default = ["fonts", "packages"]
fonts = ["dep:fontdb", "fontdb/memmap", "fontdb/fontconfig"]
# Add generic downloading utilities
-downloads = ["dep:env_proxy", "dep:native-tls", "dep:ureq"]
+downloads = ["dep:env_proxy", "dep:native-tls", "dep:ureq", "dep:openssl"]
# Add package downloading utilities, implies `downloads`
packages = ["downloads", "dep:dirs", "dep:flate2", "dep:tar"]
diff --git a/crates/typst-kit/src/package.rs b/crates/typst-kit/src/package.rs
index ad69df01..3c9e6529 100644
--- a/crates/typst-kit/src/package.rs
+++ b/crates/typst-kit/src/package.rs
@@ -85,9 +85,11 @@ impl PackageStorage {
}
// Download from network if it doesn't exist yet.
- self.download_package(spec, &dir, progress)?;
- if dir.exists() {
- return Ok(dir);
+ if spec.namespace == "preview" {
+ self.download_package(spec, &dir, progress)?;
+ if dir.exists() {
+ return Ok(dir);
+ }
}
}