sudipghimire533 / ytui-music

Youtube client in terminal for music ( lightweight youtube client )
GNU General Public License v2.0
467 stars 19 forks source link

Failed to load libmpv.so.1 #23

Open amad3v opened 1 year ago

amad3v commented 1 year ago

Error on run

RUST_BACKTRACE=full ytui-music run outuput

ytui-music: error while loading shared libraries: libmpv.so.1: 
cannot open shared object file: No such file or directory

Creating a link to libmpv.so.2 doesn't work.

RUST_BACKTRACE=full ytui-music run outuput

__   ___         _                           _
\ \ / / |_ _   _(_)      _ __ ___  _   _ ___(_) ___
 \ V /| __| | | | |_____| '_ ` _ \| | | / __| |/ __|
  | | | |_| |_| | |_____| | | | | | |_| \__ \ | (__ 
  |_|  \__|\__,_|_|     |_| |_| |_|\__,_|___/_|\___|

Author(s): Sudip Ghimire <sudipghimire533@gmail.com>

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value:
VersionMismatch { linked: 65644, loaded: 131072 }', front-end/src/ui/utils.rs:496:38
stack backtrace:
   0:     0x56464ed437bb - <unknown>
   1:     0x56464ec3b50c - <unknown>
   2:     0x56464ed17209 - <unknown>
   3:     0x56464ed44652 - <unknown>
   4:     0x56464ed456ac - <unknown>
   5:     0x56464ed45102 - <unknown>
   6:     0x56464ed45076 - <unknown>
   7:     0x56464ed45032 - <unknown>
   8:     0x56464ebeffa2 - <unknown>
   9:     0x56464ebf02f2 - <unknown>
  10:     0x56464ed8b6ad - <unknown>
  11:     0x56464ed87a33 - <unknown>
  12:     0x56464ed88f56 - main
  13:     0x7f16c7007290 - <unknown>
  14:     0x7f16c700734a - __libc_start_main
  15:     0x56464ebfed0e - <unknown>
  16:                0x0 - <unknown>
[1]    76881 IOT instruction (core dumped)  RUST_BACKTRACE=full ytui-music run
$ mpv --version
mpv 0.35.0 Copyright © 2000-2022 mpv/MPlayer/mplayer2 projects
 built on UNKNOWN
FFmpeg library versions:
   libavutil       57.28.100
   libavcodec      59.37.100
   libavformat     59.27.100
   libswscale      6.7.100
   libavfilter     8.44.100
   libswresample   4.7.100
FFmpeg version: n5.1.2
mark2185 commented 1 year ago

ldd /path/to/ytui-music will give you the list of shared library dependencies so you'll see where it's looking for libmpv.so.1, and then you can put the symlink there.

amad3v commented 1 year ago

ldd won't provide a path if it doesn't exist and I believe it should be in /usr/lib like the other libs.

The installed version (from AUR):

$ ldd $(which ytui-music)                    
        linux-vdso.so.1 (0x00007ffdf42fd000)
        libmpv.so.1 => not found
        libssl.so.1.1 => /usr/lib/libssl.so.1.1 (0x00007fa9aeccb000)
        libcrypto.so.1.1 => /usr/lib/libcrypto.so.1.1 (0x00007fa9ae600000)
        libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0x00007fa9ae4b3000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fa9aecab000)
        libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fa9ae9fb000)
        libm.so.6 => /usr/lib/libm.so.6 (0x00007fa9ae913000)
        libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fa9ae90e000)
        libc.so.6 => /usr/lib/libc.so.6 (0x00007fa9ae2cc000)
        /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fa9aed99000)

and

$ ldd -v $(which ytui-music) | grep -i libmpv
        libmpv.so.1 => not found

The compiled version:

$ ldd ./ytui_music | grep -i libmpv
        libmpv.so.2 => /usr/lib/libmpv.so.2 (0x00007fb646c00000)
mark2185 commented 1 year ago

Yeah, the latest 2.0.0-beta depends on libmpv.so.1 which doesn't exist on arch anymore, mpv v1:0.35.0-2 provides libmpv.so.2.

I guess the AUR package is marked out of date for a reason. I suggest you use the manually built binary.

I did link libmpv in /usr/lib, as well as libcrypto and libssl, but it still complains about their versions, so I don't think it's worth trying to hack it.

amad3v commented 1 year ago

In that case even the the already built one won't work as it still require the shared librarylibmpv.so.1. I guess will wait for an update.

mark2185 commented 1 year ago

I meant the prebuilt one from the releases page doesn't work, if you build it manually, it'll depend on libmpv.so.2, which is fine.

amad3v commented 1 year ago

I already tried that as shown in the first post, I didn't post the error as it is the same as the binary one.

Here its log:

__   ___         _                           _
\ \ / / |_ _   _(_)      _ __ ___  _   _ ___(_) ___
 \ V /| __| | | | |_____| '_ ` _ \| | | / __| |/ __|
  | | | |_| |_| | |_____| | | | | | |_| \__ \ | (__ 
  |_|  \__|\__,_|_|     |_| |_| |_|\__,_|___/_|\___|

Author(s): Sudip Ghimire <sudipghimire533@gmail.com>

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: VersionMismatch { linked: 65644, loaded: 131072 }', front-end/src/ui/utils.rs:496:38
stack backtrace:
   0:     0x5599766d3dff - std::backtrace_rs::backtrace::libunwind::trace::he615646ea344481f
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x5599766d3dff - std::backtrace_rs::backtrace::trace_unsynchronized::h6ea8eaac68705b9c
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x5599766d3dff - std::sys_common::backtrace::_print_fmt::h7ac486a935ce0bf7
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x5599766d3dff - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h1b5a095d3db2e28f
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x5599765cfe8e - core::fmt::write::h445545b92224a1cd
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/fmt/mod.rs:1209:17
   5:     0x5599766a9052 - std::io::Write::write_fmt::h55a43474c6520b00
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/io/mod.rs:1682:15
   6:     0x5599766d4f2f - std::sys_common::backtrace::_print::h65d20526fdb736b0
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x5599766d4f2f - std::sys_common::backtrace::print::h6555fbe12a1cc41b
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x5599766d4b2d - std::panicking::default_hook::{{closure}}::hbdf58083140e7ac6
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:267:22
   9:     0x5599766d5b71 - std::panicking::default_hook::haef8271c56b74d85
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:286:9
  10:     0x5599766d5b71 - std::panicking::rust_panic_with_hook::hfd45b6b6c12d9fa5
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:688:13
  11:     0x5599766d5662 - std::panicking::begin_panic_handler::{{closure}}::hf591e8609a75bd4b
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:579:13
  12:     0x5599766d55ce - std::sys_common::backtrace::__rust_end_short_backtrace::h81899558795e4ff7
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:137:18
  13:     0x5599766d55a1 - rust_begin_unwind
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:575:5
  14:     0x55997658ea52 - core::panicking::panic_fmt::h4235fa9b4675b332
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/panicking.rs:65:14
  15:     0x55997658ecf2 - core::result::unwrap_failed::ha17dbf463031a5e1
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/result.rs:1791:5
  16:     0x5599765b39f2 - ytui_music::main::h16da9c18381e226d
  17:     0x5599765a10a3 - std::sys_common::backtrace::__rust_begin_short_backtrace::h2327e09819c3047d
  18:     0x55997670d769 - std::rt::lang_start::{{closure}}::hf9aaf19e366b42c2
  19:     0x5599766a8e74 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h072eb4cd8da964ba
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/ops/function.rs:286:13
  20:     0x5599766a8e74 - std::panicking::try::do_call::h8eca204fe9266946
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:483:40
  21:     0x5599766a8e74 - std::panicking::try::h12574e1b7b2cbacb
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:447:19
  22:     0x5599766a8e74 - std::panic::catch_unwind::hf71522d4448329d6
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panic.rs:137:14
  23:     0x5599766a8e74 - std::rt::lang_start_internal::{{closure}}::h65b66ac9bff580f8
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/rt.rs:148:48
  24:     0x5599766a8e74 - std::panicking::try::do_call::hfff61e33ca3db9f1
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:483:40
  25:     0x5599766a8e74 - std::panicking::try::he48c8ecead279cad
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:447:19
  26:     0x5599766a8e74 - std::panic::catch_unwind::hd510a26bfc950ccc
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panic.rs:137:14
  27:     0x5599766a8e74 - std::rt::lang_start_internal::hc680b25eab888da9
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/rt.rs:148:20
  28:     0x5599765b4774 - main
  29:     0x7f82274ef290 - <unknown>
  30:     0x7f82274ef34a - __libc_start_main
  31:     0x5599765a0fa5 - _start
                               at /build/glibc/src/glibc/csu/../sysdeps/x86_64/start.S:115
  32:                0x0 - <unknown>
[1]    13227 IOT instruction (core dumped)  RUST_BACKTRACE=full ./ytui_music run

The error originated from a version check:

let mpv = libmpv::Mpv::new().unwrap();

which is a call to

Mpv::with_initializer(|_| Ok(()))

that checks the libmpv version

let api_version = unsafe { libmpv_sys::mpv_client_api_version() };
        if crate::MPV_CLIENT_API_MAJOR != api_version >> 16 {
            return Err(Error::VersionMismatch {
                linked: crate::MPV_CLIENT_API_VERSION,
                loaded: api_version,
            });
        }

It works if I comment the last bit of the code and recompile but the sound is bit off... image

larrasket commented 1 year ago

Same issue here (starting from libmpv), I tried to build from source and getting


thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: VersionMismatch { linked: 65644, loaded: 131072 }', front-end/src/ui/utils.rs:496:38
stack backtrace:
   0:     0x55e697f7f8e6 - std::backtrace_rs::backtrace::libunwind::trace::h6982528d5cca6f90
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x55e697f7f8e6 - std::backtrace_rs::backtrace::trace_unsynchronized::h061c47d064ba9746
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x55e697f7f8e6 - std::sys_common::backtrace::_print_fmt::h340e5b18fcf1338e
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x55e697f7f8e6 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h411b55ca01d935c2
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x55e697e7497c - core::fmt::write::hd3958a6cee3e08c1
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/fmt/mod.rs:1209:17
   5:     0x55e697f54564 - std::io::Write::write_fmt::hf48b1a8a092a15e1
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/io/mod.rs:1682:15
   6:     0x55e697f80e9b - std::sys_common::backtrace::_print::h47b4320fc34f81e5
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x55e697f80e9b - std::sys_common::backtrace::print::h69fe66b3b80a68d1
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x55e697f8066f - std::panicking::default_hook::{{closure}}::h4332630e65e37bf3
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:267:22
   9:     0x55e697f8170c - std::panicking::default_hook::h3433d803896c8bd9
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:286:9
  10:     0x55e697f8170c - std::panicking::rust_panic_with_hook::he522607577f60554
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:688:13
  11:     0x55e697f811c2 - std::panicking::begin_panic_handler::{{closure}}::ha5dcf4cab1a8dbd6
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:579:13
  12:     0x55e697f81136 - std::sys_common::backtrace::__rust_end_short_backtrace::hd6b58a543a780286
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:137:18
  13:     0x55e697f81120 - rust_begin_unwind
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:575:5
  14:     0x55e697e32872 - core::panicking::panic_fmt::h13f856077d656cf7
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/panicking.rs:65:14
  15:     0x55e697e32b12 - core::result::unwrap_failed::h0d4235e70e5f68f4
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/result.rs:1791:5
  16:     0x55e697e568cc - ytui_music::main::h12b17e0dcca333ca
  17:     0x55e697e45ed3 - std::sys_common::backtrace::__rust_begin_short_backtrace::hf09f10fa5861dd02
  18:     0x55e697e57af7 - main
  19:     0x7fb732354290 - <unknown>
  20:     0x7fb73235434a - __libc_start_main
  21:     0x55e697e440c5 - _start
                               at /build/glibc/src/glibc/csu/../sysdeps/x86_64/start.S:115
  22:                0x0 - <unknown>
Aborted (core dumped)
Junker commented 1 year ago

same problem, core dumped. Builded from source. OS: ArchLinux

$> mpv --version
mpv 0.35.0 Copyright © 2000-2022 mpv/MPlayer/mplayer2 projects
 built on UNKNOWN
FFmpeg library versions:
   libavutil       57.28.100
   libavcodec      59.37.100
   libavformat     59.27.100
   libswscale      6.7.100
   libavfilter     8.44.100
   libswresample   4.7.100
FFmpeg version: n5.1.2
$> ldd -r /usr/bin/ytui-music|grep mpv
    libmpv.so.2 => /usr/lib/libmpv.so.2 (0x00007f25f4800000)
mark2185 commented 1 year ago

@Junker does pacman -Ql | grep lib list libmpv.so somewhere?

Junker commented 1 year ago
$> pacman -Ql | grep libmpv
mpv /usr/lib/libmpv.so
mpv /usr/lib/libmpv.so.2
mpv /usr/lib/libmpv.so.2.0.0
$> pacman -Ql mpv | grep lib   
mpv /usr/lib/
mpv /usr/lib/libmpv.so
mpv /usr/lib/libmpv.so.2
mpv /usr/lib/libmpv.so.2.0.0
...
defdefred commented 1 year ago

Same problem with Debian testing, libmpv no more available.

elliot0319 commented 1 year ago

I'm not sure if my issue is on the same context here, but I'm reporting anyways. I'm using MacOS, and downloaded the prebuilt version from https://github.com/sudipghimire533/ytui-music/releases/tag/v2.0.0-beta.

When I launch, it says "dyld[76289]: Library not loaded: /usr/local/opt/mpv/lib/libmpv.2.dylib Referenced from: /Users/Jake/Downloads/ytui_music-macos Reason: tried: '/usr/local/opt/mpv/lib/libmpv.2.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/mpv/lib/libmpv.2.dylib' (no such file), '/usr/local/opt/mpv/lib/libmpv.2.dylib' (no such file), '/usr/local/lib/libmpv.2.dylib' (no such file), '/usr/lib/libmpv.2.dylib' (no such file, not in dyld cache) [1] 76289 abort ./ytui_music-macos"

st3iny commented 1 year ago

It seems like libmpv-rs is a bit outdated and its last release was over 2 years ago.

This issue can be fixed by building libmpv-rs from git. I tested by playing some music and it seems to work fine.

Patch

--- a/front-end/Cargo.toml
+++ b/front-end/Cargo.toml
@@ -10,7 +10,7 @@
 tui = { version = "0.16", features = ["crossterm"], default-features = false }
 serde = { version = "1.0", features = ["derive"] }
 serde_json = "1.0"
-libmpv = "2.0"
+libmpv = { git = "https://github.com/ParadoxSpiral/libmpv-rs.git" }
 fetcher = { path = "../fetcher" }
 lazy_static = "1.4.0"
 config = { path = "../config" }
ManveerBhullar commented 1 year ago

M1 Max

✦ ❯ ytui_music-macos

dyld[97120]: Library not loaded: '/usr/local/opt/mpv/lib/libmpv.2.dylib'
  Referenced from: '/usr/local/bin/ytui_music-macos'
  Reason: tried: '/usr/local/opt/mpv/lib/libmpv.2.dylib' (no such file), '/usr/local/lib/libmpv.2.dylib' (no such file), '/usr/lib/libmpv.2.dylib' (no such file)
Abort trap: 6

I couldn't figure out where the problem is coming from, looking at the open issues on the mpv github.

vitaly-zdanevich commented 1 year ago

I am on Gentoo, mpv is emerged with libmpv flag, but

$ ldd ytui_music-linux-amd64 
    linux-vdso.so.1 (0x00007fff53ed0000)
    libmpv.so.1 => not found
    libssl.so.3 => not found
    libcrypto.so.3 => not found
    libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/12/libgcc_s.so.1 (0x00007f27dddd0000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f27ddcf5000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f27ddb20000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f27de245000)
chriselrod commented 1 year ago

I cannot build from source.

$ ls /usr/lib64/ | rg mpv
libmpv.so.2
libmpv.so.2.0.0

but

   Compiling ytui_music v2.0.0-beta (/home/chriselrod/Documents/libraries/ytui-music/front-end)
error: linking with `cc` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/usr/lib/rustlib/x86_64-unknown-linux-gnu/bin:/home/chriselrod/.local/bin/:/usr/local/bin/:/home/chriselrod/.cargo/bin/:/home/chriselrod/Documents/spack/bin/:/bin/:/usr/bin/" VSLANG="1033" "cc" "-m64" "/tmp/rustc73Eurx/symbols.o" "/home/chriselrod/Documents/libraries/ytui-music/target/release/deps/ytui_music-306af0a3c6719b27.ytui_music.aee20eee-cgu.7.rcgu.o" "-Wl,--as-needed" "-L" "/home/chriselrod/Documents/libraries/ytui-music/target/release/deps" "-L" "/usr/lib64/" "-L" "/home/chriselrod/Documents/libraries/ytui-music/target/release/build/libsqlite3-sys-b0b7e50ad01a63c7/out" "-L" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/tmp/rustc73Eurx/liblibsqlite3_sys-67b94b592e8a0d6f.rlib" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-9ecb324617e98731.rlib" "-Wl,-Bdynamic" "-lmpv" "-lssl" "-lcrypto" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/home/chriselrod/Documents/libraries/ytui-music/target/release/deps/ytui_music-306af0a3c6719b27" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,-O1" "-nodefaultlibs"
  = note: /bin/ld: cannot find -lmpv: No such file or directory
          collect2: error: ld returned 1 exit status

I tried

RUSTFLAGS="$RUSTFLAGS -L /usr/lib64/" cargo build --all --release

Not the exact same problem -- reports seem to be about finding libmpv with built binaries. But still about not finding libmpv.so. I'm on latest main.

Also

ldconfig -p | grep libmpv.so
(standard input):       libmpv.so.2 (libc6,x86-64) => /usr/lib64/libmpv.so.2

Applying the patch

--- a/front-end/Cargo.toml
+++ b/front-end/Cargo.toml
@@ -10,7 +10,7 @@ crossterm = { version = "0.20", features = ["event-stream"] }
 tui = { version = "0.16", features = ["crossterm"], default-features = false }
 serde = { version = "1.0", features = ["derive"] }
 serde_json = "1.0"
-libmpv = { version = "2.0.1" }
+libmpv = { git = "https://github.com/ParadoxSpiral/libmpv-rs.git" }
 fetcher = { path = "../fetcher" }
 lazy_static = "1.4.0"
 config = { path = "../config" }

did not fix it for me.