Skip to content

Compilation for wasm32-unknown-emscripten fails #1618

@raphaelmenges

Description

@raphaelmenges

Hello 👋,

I am trying to use tract in a project that compiles to the target wasm32-unknown-emscripten. This target seems not to be covered by the CI but I found a pull request that indicates compatibility.

When I try to compile tract, its tar dependency throws following error:

error[E0428]: the name `symlink` is defined multiple times
   --> /Users/raphael/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tar-0.4.43/src/entry.rs:607:13
    |
597 |             fn symlink(src: &Path, dst: &Path) -> io::Result<()> {
    |             ---------------------------------------------------- previous definition of the value `symlink` here
...
607 |             fn symlink(src: &Path, dst: &Path) -> io::Result<()> {
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `symlink` redefined here
    |
    = note: `symlink` must be defined only once in the value namespace of this block

error[E0428]: the name `_set_ownerships` is defined multiple times
   --> /Users/raphael/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tar-0.4.43/src/entry.rs:774:9
    |
733 | /         fn _set_ownerships(
734 | |             dst: &Path,
735 | |             f: &Option<&mut std::fs::File>,
736 | |             uid: u64,
...   |
769 | |             }
770 | |         }
    | |_________- previous definition of the value `_set_ownerships` here
...
774 | /         fn _set_ownerships(
775 | |             _: &Path,
776 | |             _: &Option<&mut std::fs::File>,
777 | |             _: u64,
...   |
780 | |             Ok(())
781 | |         }
    | |_________^ `_set_ownerships` redefined here
    |
    = note: `_set_ownerships` must be defined only once in the value namespace of this block

error[E0428]: the name `_set_perms` is defined multiple times
   --> /Users/raphael/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tar-0.4.43/src/entry.rs:849:9
    |
804 | /         fn _set_perms(
805 | |             dst: &Path,
806 | |             f: Option<&mut std::fs::File>,
807 | |             mode: u32,
...   |
819 | |             }
820 | |         }
    | |_________- previous definition of the value `_set_perms` here
...
849 | /         fn _set_perms(
850 | |             dst: &Path,
851 | |             f: Option<&mut std::fs::File>,
852 | |             mode: u32,
...   |
856 | |             Err(io::Error::new(io::ErrorKind::Other, "Not implemented"))
857 | |         }
    | |_________^ `_set_perms` redefined here
    |
    = note: `_set_perms` must be defined only once in the value namespace of this block

error[E0428]: the name `set_xattrs` is defined multiple times
   --> /Users/raphael/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tar-0.4.43/src/entry.rs:898:9
    |
860 | ...   fn set_xattrs(me: &mut EntryFields, dst: &Path) -> io::Result<()> {
    |       ----------------------------------------------------------------- previous definition of the value `set_xattrs` here
...
898 | ...   fn set_xattrs(_: &mut EntryFields, _: &Path) -> io::Result<()> {
    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `set_xattrs` redefined here
    |
    = note: `set_xattrs` must be defined only once in the value namespace of this block

error[E0428]: the name `ends_with_slash` is defined multiple times
    --> /Users/raphael/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tar-0.4.43/src/header.rs:1602:1
     |
1591 | fn ends_with_slash(p: &Path) -> bool {
     | ------------------------------------ previous definition of the value `ends_with_slash` here
...
1602 | fn ends_with_slash(p: &Path) -> bool {
     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `ends_with_slash` redefined here
     |
     = note: `ends_with_slash` must be defined only once in the value namespace of this module

error[E0428]: the name `path2bytes` is defined multiple times
    --> /Users/raphael/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tar-0.4.43/src/header.rs:1630:1
     |
1607 | pub fn path2bytes(p: &Path) -> io::Result<Cow<[u8]>> {
     | ---------------------------------------------------- previous definition of the value `path2bytes` here
...
1630 | pub fn path2bytes(p: &Path) -> io::Result<Cow<[u8]>> {
     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `path2bytes` redefined here
     |
     = note: `path2bytes` must be defined only once in the value namespace of this module

error[E0428]: the name `bytes2path` is defined multiple times
    --> /Users/raphael/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tar-0.4.43/src/header.rs:1669:1
     |
1659 | pub fn bytes2path(bytes: Cow<[u8]>) -> io::Result<Cow<Path>> {
     | ------------------------------------------------------------ previous definition of the value `bytes2path` here
...
1669 | pub fn bytes2path(bytes: Cow<[u8]>) -> io::Result<Cow<Path>> {
     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `bytes2path` redefined here
     |
     = note: `bytes2path` must be defined only once in the value namespace of this module

error[E0592]: duplicate definitions with name `fill_platform_from`
   --> /Users/raphael/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tar-0.4.43/src/header.rs:754:5
    |
749 |     fn fill_platform_from(&mut self, meta: &fs::Metadata, mode: HeaderMode...
    |     ----------------------------------------------------------------------- other definition for `fill_platform_from`
...
754 |     fn fill_platform_from(&mut self, meta: &fs::Metadata, mode: HeaderMode...
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ duplicate definitions for `fill_platform_from`

   Compiling ug v0.0.2
Some errors have detailed explanations: E0428, E0592.
For more information about an error, try `rustc --explain E0428`.
error: could not compile `tar` (lib) due to 8 previous errors

The people at tar seem to have a related pending pull request. Yet, I am not sure whether tar must be a required dependency for tract at all.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions