slint-ui / slint

Slint is a declarative GUI toolkit to build native user interfaces for Rust, C++, or JavaScript apps.
https://slint.dev
Other
17.54k stars 600 forks source link

cargo can't resolve dependencies #1720

Closed dilawar closed 2 years ago

dilawar commented 2 years ago

I am on Windows 10 and using rust-stable (1.64). The same issue occurs with nightly as well. I am using msys2 as development environment but I don't think it is an issue.

[dilaw@Dilawar-SUBCOM agent]$ rustup.exe toolchain  list
stable-x86_64-pc-windows-msvc (default)
nightly-x86_64-pc-windows-msvc

I think the following is the main issue.

 `the package `i-slint-backend-winit` depends on `servo-fontconfig`, with features: `force_system_lib` but `servo-fontconfig`  does not have these features.`

Here is the log.

error: failed to select a version for `servo-fontconfig`.
    ... required by package `i-slint-backend-winit v0.3.0 (https://github.com/slint-ui/slint?tag=v0.3.0#b8271087)`
    ... which satisfies git dependency `i-slint-backend-winit` of package `i-slint-backend-selector v0.3.0 (https://github.
com/slint-ui/slint?tag=v0.3.0#b8271087)`
    ... which satisfies git dependency `i-slint-backend-selector` of package `slint v0.3.0 (https://github.com/slint-ui/sli
nt?tag=v0.3.0#b8271087)`
    ... which satisfies git dependency `slint` of package `agent v0.3.2-rc.1 (C:\tools\msys64\home\dilaw\Work\SUBCOM\agent)
`
versions that meet the requirements `^0.5` are: 0.5.1, 0.5.0

the package `servo-fontconfig` links to the native library `fontconfig`, but it conflicts with a previous package which lin
ks to `fontconfig` as well:
package `i-slint-compiler v0.3.1 (https://github.com/slint-ui/slint?branch=master#b1b4a443)`
    ... which satisfies git dependency `i-slint-compiler` of package `slint-build v0.3.1 (https://github.com/slint-ui/slint
?branch=master#b1b4a443)`
    ... which satisfies git dependency `slint-build` of package `agent v0.3.2-rc.1 (C:\tools\msys64\home\dilaw\Work\SUBCOM\
agent)`
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 ='servo-fon
tconfig' value. For more information, see https://doc.rust-lang.org/cargo/reference/resolver.html#links.

the package `i-slint-backend-winit` depends on `servo-fontconfig`, with features: `force_system_lib` but `servo-fontconfig`
 does not have these features.

failed to select a version for `servo-fontconfig` which could resolve this conflict

When I use the latest commit, this problem goes away. So I guess that it has been fixed but I can't use the latest commit because due to some regression my UI code is panicking with current master.

I am not sure what is the best forward here. My UI code has become complex and I am out of bandwidth to produce a MWE that shows the regression. I'd like to use the previous working version but can't due to this build issue.

tronical commented 2 years ago

Hi! When exactly do you see this? Are you using the Slint Interpreter by chance? I'm wondering why i-slint-compiler is in your dependency chain.

tronical commented 2 years ago

Perhaps we can also help with the panic even without a minimal example. What's the panic you're seeing?

dilawar commented 2 years ago

Hi! When exactly do you see this? Are you using the Slint Interpreter by chance? I'm wondering why i-slint-compiler is in your dependency chain.

I don't think we are using Slint interpreter but we are using slint-build

[dilaw@Dilawar-SUBCOM agent]$ cat Cargo.toml | grep slint
slint = {git="https://github.com/slint-ui/slint", tag="v0.3.0", optional=true}
gui = ["dep:slint", "dep:systray2", "dep:tray-item", "dep:image"]
slint-build={git="https://github.com/slint-ui/slint", branch="master"}

And I see the following in the lock file.

name = "slint-build"
version = "0.3.1"
source = "git+https://github.com/slint-ui/slint?branch=master#b1b4a443a47b16aeae5cac0bf06a05da7a932a21"
dependencies = [
 "i-slint-compiler",
 "spin_on",
 "thiserror",
 "toml_edit",
]
tronical commented 2 years ago

Ah yes, right. My bad. And slint-build is under your [build-dependencies], right?

What's the Rust edition of your create? If it's edition 2018, try adding the line resolver = "2" underneath the edition line. Otherwise I think upgrading to edition 2021 might help (but may require further changes, so resolver = "2" is likely the least impact fix)

dilawar commented 2 years ago

Perhaps we can also help with the panic even without a minimal example. What's the panic you're seeing?

Thanks. Here you go.

error: failed to run custom build command for `agent v0.3.2-rc.1 (C:\tools\msys64\home\dilaw\Work\SUBCOM\agent)`

Caused by:
  process didn't exit successfully: `C:/tools/msys64/home/dilaw/.cache/cargobuild\debug\build\agent-f9af26c9f48f703c\build-
script-build` (exit code: 101)
  --- stdout
  cargo:rerun-if-changed=./packaging/windows/installer-script.nsis.in
  Using codepage 65001 as default
  Creating C:/tools/msys64/home/dilaw/.cache/cargobuild\debug\build\agent-765710662c3a1748\out\icons.res.lib

  ui/icons.rc.
  Writing ICON:1,       lang:0x409,     size 1128
  Writing ICON:2,       lang:0x409,     size 4392
  Writing ICON:3,       lang:0x409,     size 9832
  Writing GROUP_ICON:GID,       lang:0x409,     size 48.
  Writing ICON:4,       lang:0x409,     size 1128
  Writing ICON:5,       lang:0x409,     size 4392
  Writing ICON:6,       lang:0x409,     size 9832
  Writing GROUP_ICON:FAVICON,   lang:0x409,     size 48
  cargo:rustc-link-search=native=C:/tools/msys64/home/dilaw/.cache/cargobuild\debug\build\agent-765710662c3a1748\out
  cargo:rustc-link-lib=icons.res
  cargo:rerun-if-changed=ui/icons.rc

  --- stderr
  thread 'main' panicked at 'The element is not in the component pointed at by the path (..msg / root.msgs-blocked)', C:\Us
ers\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analysis.rs:89:17
  stack backtrace:
     0: std::panicking::begin_panic_handler
               at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library\std\src\panicking.rs:584
     1: core::panicking::panic_fmt
               at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library\core\src\panicking.rs:142
     2: i_slint_compiler::passes::binding_analysis::PropertyPath::relative
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:89
     3: i_slint_compiler::passes::binding_analysis::analyse_binding::closure$4
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:237
     4: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:337
     5: i_slint_compiler::passes::binding_analysis::recurse_expression::closure$0<i_slint_compiler::passes::binding_analysi
s::analyse_binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:334
     6: enum$<i_slint_compiler::expression_tree::Expression>::visit<i_slint_compiler::passes::binding_analysis::recurse_exp
ression::closure_env$0<i_slint_compiler::passes::binding_analysis::analyse_binding::closure_env$4> >
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\expression_tree.rs:6
58
     7: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:334
     8: i_slint_compiler::passes::binding_analysis::analyse_binding
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:250
     9: i_slint_compiler::passes::binding_analysis::process_property
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:310
    10: i_slint_compiler::passes::binding_analysis::analyse_binding::closure$4
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:237
    11: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:337
    12: i_slint_compiler::passes::binding_analysis::recurse_expression::closure$0<i_slint_compiler::passes::binding_analysi
s::analyse_binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:334
    13: enum$<i_slint_compiler::expression_tree::Expression>::visit<i_slint_compiler::passes::binding_analysis::recurse_exp
ression::closure_env$0<i_slint_compiler::passes::binding_analysis::analyse_binding::closure_env$4> >
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\expression_tree.rs:6
56
    14: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:334
    15: i_slint_compiler::passes::binding_analysis::analyse_binding
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:250
    16: i_slint_compiler::passes::binding_analysis::process_property
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:310
    17: i_slint_compiler::passes::binding_analysis::analyse_binding::closure$4
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:237
    18: i_slint_compiler::passes::binding_analysis::visit_implicit_layout_info_dependencies<i_slint_compiler::passes::bindi
ng_analysis::analyse_binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:427
    19: i_slint_compiler::passes::binding_analysis::visit_layout_items_dependencies<core::slice::iter::Iter<i_slint_compile
r::layout::LayoutItem>,i_slint_compiler::passes::binding_analysis::analyse_binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:403
    20: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:352
    21: i_slint_compiler::passes::binding_analysis::analyse_binding
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:250
    22: i_slint_compiler::passes::binding_analysis::process_property
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:310
    23: i_slint_compiler::passes::binding_analysis::analyse_binding::closure$4
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:237
    24: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:337
    25: i_slint_compiler::passes::binding_analysis::recurse_expression::closure$0<i_slint_compiler::passes::binding_analysi
s::analyse_binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:334
    26: enum$<i_slint_compiler::expression_tree::Expression>::visit<i_slint_compiler::passes::binding_analysis::recurse_exp
ression::closure_env$0<i_slint_compiler::passes::binding_analysis::analyse_binding::closure_env$4> >
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\expression_tree.rs:6
83
    27: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:334
    28: i_slint_compiler::passes::binding_analysis::analyse_binding
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:250
    29: i_slint_compiler::passes::binding_analysis::process_property
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:310
    30: i_slint_compiler::passes::binding_analysis::analyse_binding::closure$4
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:237
    31: i_slint_compiler::passes::binding_analysis::visit_layout_items_dependencies<core::slice::iter::Iter<i_slint_compile
r::layout::LayoutItem>,i_slint_compiler::passes::binding_analysis::analyse_binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:397
    32: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:352
    33: i_slint_compiler::passes::binding_analysis::analyse_binding
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:250
    34: i_slint_compiler::passes::binding_analysis::process_property
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:310
    35: i_slint_compiler::passes::binding_analysis::analyse_binding::closure$4
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:237
    36: i_slint_compiler::passes::binding_analysis::visit_layout_items_dependencies<core::slice::iter::Iter<i_slint_compile
r::layout::LayoutItem>,i_slint_compiler::passes::binding_analysis::analyse_binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:397
    37: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:352
    38: i_slint_compiler::passes::binding_analysis::analyse_binding
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:250
    39: i_slint_compiler::passes::binding_analysis::process_property
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:310
    40: i_slint_compiler::passes::binding_analysis::analyse_binding::closure$4
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:237
    41: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:337
    42: i_slint_compiler::passes::binding_analysis::recurse_expression::closure$0<i_slint_compiler::passes::binding_analysi
s::analyse_binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:334
    43: enum$<i_slint_compiler::expression_tree::Expression>::visit<i_slint_compiler::passes::binding_analysis::recurse_exp
ression::closure_env$0<i_slint_compiler::passes::binding_analysis::analyse_binding::closure_env$4> >
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\expression_tree.rs:6
56
    44: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:334
    45: i_slint_compiler::passes::binding_analysis::analyse_binding
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:250
    46: i_slint_compiler::passes::binding_analysis::process_property
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:310
    47: i_slint_compiler::passes::binding_analysis::analyse_binding::closure$4
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:237
    48: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:337
    49: i_slint_compiler::passes::binding_analysis::recurse_expression::closure$0<i_slint_compiler::passes::binding_analysi
s::analyse_binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:334
    50: enum$<i_slint_compiler::expression_tree::Expression>::visit<i_slint_compiler::passes::binding_analysis::recurse_exp
ression::closure_env$0<i_slint_compiler::passes::binding_analysis::analyse_binding::closure_env$4> >
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\expression_tree.rs:7
07
    51: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:334
    52: i_slint_compiler::passes::binding_analysis::recurse_expression::closure$0<i_slint_compiler::passes::binding_analysi
s::analyse_binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:334
    53: core::slice::iter::impl$181::for_each<enum$<i_slint_compiler::expression_tree::Expression>,i_slint_compiler::passes
::binding_analysis::recurse_expression::closure_env$0<i_slint_compiler::passes::binding_analysis::analyse_binding::closure_
env$4> >
               at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\core\src\slice\iter\macros.rs:211
    54: enum$<i_slint_compiler::expression_tree::Expression>::visit<i_slint_compiler::passes::binding_analysis::recurse_exp
ression::closure_env$0<i_slint_compiler::passes::binding_analysis::analyse_binding::closure_env$4> >
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\expression_tree.rs:6
65
    55: i_slint_compiler::passes::binding_analysis::recurse_expression<i_slint_compiler::passes::binding_analysis::analyse_
binding::closure_env$4>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:334
    56: i_slint_compiler::passes::binding_analysis::analyse_binding
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:250
    57: i_slint_compiler::passes::binding_analysis::process_property
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:310
    58: i_slint_compiler::passes::binding_analysis::analyse_binding
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:226
    59: i_slint_compiler::passes::binding_analysis::analyze_element
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:153
    60: i_slint_compiler::passes::binding_analysis::perform_binding_analysis::closure$0
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:139
    61: i_slint_compiler::object_tree::recurse_elem_including_sub_components_no_borrow::closure$0<tuple$<>,i_slint_compiler
::passes::binding_analysis::perform_binding_analysis::closure_env$0>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\object_tree.rs:1501
    62: i_slint_compiler::object_tree::recurse_elem_no_borrow<tuple$<>,i_slint_compiler::object_tree::recurse_elem_includin
g_sub_components_no_borrow::closure_env$0<tuple$<>,i_slint_compiler::passes::binding_analysis::perform_binding_analysis::cl
osure_env$0> >
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\object_tree.rs:1475
    63: i_slint_compiler::object_tree::recurse_elem_including_sub_components_no_borrow<tuple$<>,i_slint_compiler::passes::b
inding_analysis::perform_binding_analysis::closure_env$0>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\object_tree.rs:1488
    64: i_slint_compiler::passes::binding_analysis::perform_binding_analysis
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:136
    65: i_slint_compiler::passes::binding_analysis::perform_binding_analysis
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:132
    66: i_slint_compiler::passes::binding_analysis::binding_analysis
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes\binding_analy
sis.rs:36
    67: i_slint_compiler::passes::run_passes::async_fn$0
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\passes.rs:188
    68: core::future::from_generator::impl$1::poll<enum$<i_slint_compiler::passes::run_passes::async_fn_env$0> >
               at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\core\src\future\mod.rs:91
    69: i_slint_compiler::compile_syntax_node::async_fn$0
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\internal\compiler\lib.rs:175
    70: core::future::from_generator::impl$1::poll<enum$<i_slint_compiler::compile_syntax_node::async_fn_env$0> >
               at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\core\src\future\mod.rs:91
    71: spin_on::spin_on<core::future::from_generator::GenFuture<enum$<i_slint_compiler::compile_syntax_node::async_fn_env$
0> > >
               at C:\Users\dilaw\.cargo\registry\src\github.com-1ecc6299db9ec823\spin_on-0.1.1\src\lib.rs:78
    72: slint_build::compile_with_config<str>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\api\rs\build\lib.rs:313
    73: slint_build::compile<str>
               at C:\Users\dilaw\.cargo\git\checkouts\slint-8153123e5dffa129\b1b4a44\api\rs\build\lib.rs:270
    74: build_script_build::main
               at .\build.rs:18
    75: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
               at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\core\src\ops\function.rs:248
  note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
warning: build failed, waiting for other jobs to finish...
dilawar commented 2 years ago

Ah yes, right. My bad. And slint-build is under your [build-dependencies], right?

What's the Rust edition of your create? If it's edition 2018, try adding the line resolver = "2" underneath the edition line. Otherwise I think upgrading to edition 2021 might help (but may require further changes, so resolver = "2" is likely the least impact fix)

We are using 2018. I changed edition = "2021" as well but ran into the same servo-fontconfig related issue. (A few other dependencies didn't compile as well).

Following -- edition 2018, resolver = 2 -- also didn't work.

edition = "2018"
resolver = "2"
build = "build.rs"
dilawar commented 2 years ago

I pinned the version of slint and slint-build (build dependencies) to version 0.2.5 and my project compiled fine again. I'll keep you posted after I port a few dependencies to edition = "2021" and upgrade slint to 0.3.

tronical commented 2 years ago

Hmm, the other odd thing that's puzzling is that you're targeting stable-x86_64-pc-windows-msvc and you're getting fontconfig as a dependency, which really shouldn't happen. That's for Linux only.

This is the condition being used in Cargo.toml:

[target.'cfg(not(any(target_family = "windows", target_os = "macos", target_os = "ios", target_arch = "wasm32")))'.dependencies]

What "should" happen is that target_family = "windows" is true and thus the entire condition is not met.

dilawar commented 2 years ago

Hmm, the other odd thing that's puzzling is that you're targeting stable-x86_64-pc-windows-msvc and you're getting fontconfig as a dependency, which really shouldn't happen. That's for Linux only.

This is the condition being used in Cargo.toml:

[target.'cfg(not(any(target_family = "windows", target_os = "macos", target_os = "ios", target_arch = "wasm32")))'.dependencies]

What "should" happen is that target_family = "windows" is true and thus the entire condition is not met.

I see. I am inside msys2 environment (https://www.msys2.org/). It's a Linux like layer for Windows; I get to use my familiar cli tools from linux. Looks like these complications may be due to msys2. Though cargo and rustup were installed using choco.exe (https://chocolatey.org/) -- native windows app.

I'll try to dig a bit deeper over the weekend and keep you posted.

ogoffart commented 2 years ago
slint = {git="https://github.com/slint-ui/slint", tag="v0.3.0", optional=true}
slint-build={git="https://github.com/slint-ui/slint", branch="master"}

Notice the use of branch="master" for slint-build, and tag="v0.3.0" for slint. It is important that slint and slint-build actually resolve to the same version, and the master branch is ahead of 0.3.0. (In particular, it uses a different crate to resolve font, which is why you get this error)

dilawar commented 2 years ago

Just tried with release 0.3 (made sure that slint-build and slint are pinned to the same version), and everything worked as expected.