I'm trying to build and flash a gui demo onto an esp32s3.
cargo +esp build -p printerdemo_mcu --target xtensa-esp32s3-none-elf --no-default-features --features=mcu-board-support/esp32-s3-box --release --config examples/mcu-board-support/esp32_s3_box/cargo-config.toml
results in
Updating crates.io index error: failed to select a version for `skia-bindings`. ... required by package `skia-safe v0.60.0` ... which satisfies dependency`skia-safe = "^0.60"`of package`i-slint-renderer-skia v1.0.0` ... which satisfies dependency`i-slint-renderer-skia = "=1.0.0"`of package`i-slint-backend-winit v1.0.0` ... which satisfies dependency`i-slint-backend-winit = "=1.0.0"`of package`i-slint-backend-selector v1.0.0` ... which satisfies dependency`i-slint-backend-selector = "=1.0.0"`of package`slint v1.0.0` ... which satisfies dependency`slint = "^1.0.0"`of package`printerdemo_mcu v1.0.3 (/home/user/slint/examples/printerdemo_mcu)`versions that meet the requirements`=0.60.0\` are: 0.60.0
the package `skia-bindings` links to the native library `skia`, but it conflicts with a previous package which links to `skia` as well:
package `skia-bindings v0.62.0`
... which satisfies dependency `skia-bindings = "=0.62.0"` (locked to 0.62.0) of package `skia-safe v0.62.0`
... which satisfies dependency `skia-safe = "^0.62"` (locked to 0.62.0) of package `i-slint-renderer-skia v1.0.3 (/home/user/slint/internal/renderers/skia)`
... which satisfies path dependency `i-slint-renderer-skia` (locked to 1.0.3) of package `i-slint-backend-winit v1.0.3 (/home/user/slint/internal/backends/winit)`
... which satisfies path dependency `i-slint-backend-winit` (locked to 1.0.3) of package `i-slint-backend-selector v1.0.3 (/home/user/slint/internal/backends/selector)`
... which satisfies path dependency `i-slint-backend-selector` (locked to 1.0.3) of package `slint v1.0.3 (/home/user/slint/api/rs/slint)`
... which satisfies path dependency `slint` (locked to 1.0.3) of package `_7guis v1.0.3 (/home/user/slint/examples/7guis)`
Only one package in the dependency graph may specify the same links value. This helps ensure that only one copy of a native library is linked in the final binary. Try to adjust your dependencies so that only one package uses the links ='skia-bindings' value. For more information, see https://doc.rust-lang.org/cargo/reference/resolver.html#links.
failed to select a version for `skia-bindings` which could resolve this conflict\
I tried to set dependencies for skia-safe and skia-bindings;
skia-bindings = {version = "=0.62.0", default-features = false} skia-safe = {version = "=0.60.0", default-features = false}`
which leads to the same error but with a different output;
`Updating crates.io index error: failed to select a version for `skia-bindings`. ... required by package `skia-safe v0.60.0` ... which satisfies dependency`skia-safe = "=0.60.0"`of package`mcu-board-support v1.0.3 (/home/user/slint/examples/mcu-board-support)` ... which satisfies path dependency`mcu-board-support`(locked to 1.0.3) of package`carousel v1.0.3 (/home/user/slint/examples/carousel/rust)`versions that meet the requirements`=0.60.0\` are: 0.60.0
the package `skia-bindings` links to the native library `skia`, but it conflicts with a previous package which links to `skia` as well:
package `skia-bindings v0.62.0`
... which satisfies dependency `skia-bindings = "=0.62.0"` of package `mcu-board-support v1.0.3 (/home/user/slint/examples/mcu-board-support)`
... which satisfies path dependency `mcu-board-support` (locked to 1.0.3) of package `carousel v1.0.3 (/home/user/slint/examples/carousel/rust)`
Only one package in the dependency graph may specify the same links value. This helps ensure that only one copy of a native library is linked in the final binary. Try to adjust your dependencies so that only one package uses the links ='skia-bindings' value. For more information, see https://doc.rust-lang.org/cargo/reference/resolver.html#links.
failed to select a version for `skia-bindings` which could resolve this conflict\
Any ideas on how I can resolve this dependency conflict or why it is happening in the first place? Complete Cargo.toml;
\# Copyright © SixtyFPS GmbH <mailto:info@slint-ui.com>
# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-commercial
\[package\]
name = "mcu-board-support"
version = "1.0.3"
authors = \["Slint Developers <mailto:info@slint-ui.com>"\]
edition = "2021"
license = "GPL-3.0-only OR LicenseRef-Slint-commercial"
publish = false
description = "Internal helper that includes support for different MCUs, for use in Slint examples"
repository = "https://github.com/slint-ui/slint"
homepage = "https://slint-ui.com"
links = "mcu_board_support" # just so we can pass metadata to the slint build crate
\[lib\]
path = "lib.rs"
\[features\]
pico-st7789 = \["slint/unsafe-single-threaded", "rp-pico", "embedded-hal", "cortex-m-rt", "embedded-alloc", "fugit", "cortex-m", "display-interface", "st7789", "defmt", "defmt-rtt", "shared-bus", "slint/libm", "embedded-dma", "embedded-graphics", "euclid/libm"\]
stm32h735g = \["slint/unsafe-single-threaded", "embedded-hal", "cortex-m/critical-section-single-core", "cortex-m-rt","embedded-alloc", "embedded-time", "cortex-m", "stm32h7xx-hal/stm32h735", "defmt", "defmt-rtt", "embedded-display-controller", "ft5336", "panic-probe", "slint/libm", "getrandom"\]
esp32-s2-kaluga-1 = \["slint/unsafe-single-threaded", "esp32s2-hal", "embedded-hal", "xtensa-lx-rt/esp32s2", "esp-alloc", "esp-println/esp32s2", "display-interface", "display-interface-spi", "st7789", "slint/libm"\]
esp32-s3-box = \["slint/unsafe-single-threaded", "esp32s3-hal", "embedded-hal", "xtensa-lx-rt/esp32s3", "esp-alloc", "esp-println/esp32s3", "esp-backtrace/esp32s3", "display-interface", "display-interface-spi", "mipidsi", "embedded-graphics", "slint/libm", "tt21100"\]
\[dependencies\]
skia-bindings = {version = "=0.62.0", default-features = false}
skia-safe = {version = "=0.60.0", default-features = false}
slint = { version = "=1.0.3", path = "../../api/rs/slint", default-features = false, features = \["compat-1-0"\] }
i-slint-core-macros = { version = "=1.0.3", path = "../../internal/core-macros" }
derive_more = "0.99.5"
embedded-graphics = { version = "0.7.1", optional = true }
once_cell = { version = "1.9", default-features = false, features = \["alloc", "atomic-polyfill"\] }
pin-weak = { version = "1", default-features = false }
rgb = "0.8.27"
cfg-if = "1"
embedded-alloc = { version = "0.5", optional = true }
cortex-m-rt = { version = "0.7", optional = true }
cortex-m = { version = "0.7.2", optional = true }
display-interface = { version = "0.4.1", optional = true }
embedded-hal = { version = "0.2.5", optional = true }
embedded-dma = { version = "0.2.0", optional = true }
# Use a git branch that has DMA support
rp-pico = { version = "0.7.0", optional = true }
fugit = { version = "0.3.6", optional = true }
shared-bus = { version = "0.2", optional = true }
st7789 = { version = "0.7.0", optional = true }
euclid = { version = "0.22", default-features = false, optional = true }
stm32h7xx-hal = { version = "0.13.0", optional = true, features = \["log-rtt", "ltdc", "xspi"\] }
getrandom = { version = "0.2", optional = true, default-features = false, features = \["custom"\] }
embedded-time = { version = "0.12.0", optional = true }
embedded-display-controller = { version = "0.1.0", optional = true }
# Use upstream git version to enable use of panic-probe (released version enforced panic-semihosting)
ft5336 = { version = "0.1", git = "https://github.com/bobgates/ft5336", rev = "293730a225a68b6364857602f8fb62fd0beb8a26", optional = true }
esp32s2-hal = { version = "0.7", optional = true }
esp32s3-hal = { version = "0.7", optional = true }
xtensa-lx-rt = { version = "0.15", optional = true }
display-interface-spi = { version = "0.4", optional = true }
esp-alloc = { version = "0.2", optional = true, features = \["oom-handler"\] }
esp-println = { version = "0.4.0", optional = true }
esp-backtrace = { version = "0.6.0", optional = true, features = \["panic-handler", "print-uart"\] }
tt21100 = { version = "0.1", optional = true }
mipidsi = { version = "0.6.0", optional = true }
defmt-rtt = { version = "0.4.0", optional = true }
defmt = { version = "0.3.0", optional = true }
panic-probe = { version = "0.3.0", optional = true, features = \["print-defmt"\] }
\[build-dependencies\]
cfg-if = "1.0.0"\