Eraden / amdgpud

MIT License
192 stars 11 forks source link

Build fails on Arch Linux #62

Closed ThatOneCalculator closed 5 months ago

ThatOneCalculator commented 1 year ago

Given the AUR package has GPG key issues, I decided to try building from source, so I cloned the repository, ran rustup target add x86_64-unknown-linux-musl, and ./scripts/build.sh. However, I got this compilation error:

error[E0432]: unresolved imports `crate::app::ImageStorage`, `crate::app::ImageType`
  --> amdguid/src/backend/glium_backend.rs:10:26
   |
10 | use crate::app::{AmdGui, ImageStorage, ImageType};
   |                          ^^^^^^^^^^^^  ^^^^^^^^^ no `ImageType` in `app`
   |                          |
   |                          no `ImageStorage` in `app`

warning: unused import: `std::collections::HashMap`
 --> amdguid/src/backend/glium_backend.rs:1:5
  |
1 | use std::collections::HashMap;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `std::rc::Rc`
 --> amdguid/src/backend/glium_backend.rs:2:5
  |
2 | use std::rc::Rc;
  |     ^^^^^^^^^^^

warning: unused import: `image::RgbaImage`
 --> amdguid/src/backend/glium_backend.rs:6:5
  |
6 | use image::RgbaImage;
  |     ^^^^^^^^^^^^^^^^

warning: use of deprecated associated function `glium::glutin::event_loop::EventLoop::<T>::with_user_event`: Use `EventLoopBuilder::<T>::with_user_event().build()` instead.
  --> amdguid/src/backend/glium_backend.rs:32:53
   |
32 |     let event_loop = glutin::event_loop::EventLoop::with_user_event();
   |                                                     ^^^^^^^^^^^^^^^
   |
   = note: `#[warn(deprecated)]` on by default

error[E0308]: mismatched types
  --> amdguid/src/backend/glium_backend.rs:35:47
   |
35 |     let mut egui = egui_glium::EguiGlium::new(&display);
   |                    -------------------------- ^^^^^^^^ expected struct `glium::backend::glutin::Display`, found struct `glium::Display`
   |                    |
   |                    arguments to this function are incorrect
   |
   = note: struct `glium::Display` and struct `glium::backend::glutin::Display` have similar names, but are actually distinct types
note: struct `glium::Display` is defined in crate `glium`
  --> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/glium-0.32.1/src/backend/glutin/mod.rs:36:1
   |
36 | pub struct Display {
   | ^^^^^^^^^^^^^^^^^^
note: struct `glium::backend::glutin::Display` is defined in crate `glium`
  --> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/glium-0.31.0/src/backend/glutin/mod.rs:36:1
   |
36 | pub struct Display {
   | ^^^^^^^^^^^^^^^^^^
   = note: perhaps two different versions of crate `glium` are being used?
note: associated function defined here
  --> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/egui_glium-0.18.0/src/lib.rs:28:12
   |
28 |     pub fn new(display: &glium::Display) -> Self {
   |            ^^^

error[E0599]: no method named `begin_frame` found for struct `EguiGlium` in the current scope
  --> amdguid/src/backend/glium_backend.rs:50:18
   |
50 |             egui.begin_frame(&display);
   |                  ^^^^^^^^^^^ method not found in `EguiGlium`
   |
help: one of the expressions' fields has a method of the same name
   |
50 |             egui.egui_ctx.begin_frame(&display);
   |                  +++++++++

error[E0599]: no method named `ctx` found for struct `EguiGlium` in the current scope
  --> amdguid/src/backend/glium_backend.rs:52:45
   |
52 |             create_ui(amd_gui.clone(), egui.ctx());
   |                                             ^^^ method not found in `EguiGlium`

error[E0599]: no method named `end_frame` found for struct `EguiGlium` in the current scope
  --> amdguid/src/backend/glium_backend.rs:54:48
   |
54 |             let (needs_repaint, shapes) = egui.end_frame(&display);
   |                                                ^^^^^^^^^ method not found in `EguiGlium`
   |
help: one of the expressions' fields has a method of the same name
   |
54 |             let (needs_repaint, shapes) = egui.egui_ctx.end_frame(&display);
   |                                                +++++++++

error[E0277]: the trait bound `glium::Frame: glium::Surface` is not satisfied
  --> amdguid/src/backend/glium_backend.rs:69:38
   |
69 |                 egui.paint(&display, &mut target, shapes);
   |                      -----           ^^^^^^^^^^^ the trait `glium::Surface` is not implemented for `glium::Frame`
   |                      |
   |                      required by a bound introduced by this call
   |
   = help: the following other types implement trait `glium::Surface`:
             glium::Frame
             glium::framebuffer::EmptyFrameBuffer
             glium::framebuffer::MultiOutputFrameBuffer<'a>
             glium::framebuffer::SimpleFrameBuffer<'a>
             glium::framebuffer::default_fb::DefaultFramebuffer
note: required by a bound in `EguiGlium::paint`
  --> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/egui_glium-0.18.0/src/lib.rs:79:21
   |
79 |     pub fn paint<T: glium::Surface>(&mut self, display: &glium::Display, target: &mut T) {
   |                     ^^^^^^^^^^^^^^ required by this bound in `EguiGlium::paint`

error[E0061]: this method takes 2 arguments but 3 arguments were supplied
  --> amdguid/src/backend/glium_backend.rs:69:22
   |
69 |                 egui.paint(&display, &mut target, shapes);
   |                      ^^^^^ -------- argument of type `&glium::Display` unexpected
   |
note: associated function defined here
  --> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/egui_glium-0.18.0/src/lib.rs:79:12
   |
79 |     pub fn paint<T: glium::Surface>(&mut self, display: &glium::Display, target: &mut T) {
   |            ^^^^^
help: remove the extra argument
   |
69 |                 egui.paint(shapes, &mut target);
   |                           ~~~~~~~~~~~~~~~~~~~~~

error[E0599]: no method named `is_quit_event` found for struct `EguiGlium` in the current scope
  --> amdguid/src/backend/glium_backend.rs:79:25
   |
79 |                 if egui.is_quit_event(&event) {
   |                         ^^^^^^^^^^^^^ method not found in `EguiGlium`

error[E0308]: mismatched types
   --> amdguid/src/backend/glium_backend.rs:83:31
    |
83  |                 egui.on_event(&event);
    |                      -------- ^^^^^^ expected enum `egui_glium::egui_winit::winit::event::WindowEvent`, found enum `glium::glutin::event::WindowEvent`
    |                      |
    |                      arguments to this method are incorrect
    |
    = note: enum `glium::glutin::event::WindowEvent` and enum `egui_glium::egui_winit::winit::event::WindowEvent` have similar names, but are actually distinct types
note: enum `glium::glutin::event::WindowEvent` is defined in crate `winit`
   --> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.27.2/src/event.rs:319:1
    |
319 | pub enum WindowEvent<'a> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^
note: enum `egui_glium::egui_winit::winit::event::WindowEvent` is defined in crate `winit`
   --> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/winit-0.26.1/src/event.rs:211:1
    |
211 | pub enum WindowEvent<'a> {
    | ^^^^^^^^^^^^^^^^^^^^^^^^
    = note: perhaps two different versions of crate `winit` are being used?
note: associated function defined here
   --> /home/kainoa/.cargo/registry/src/github.com-1ecc6299db9ec823/egui_glium-0.18.0/src/lib.rs:48:12
    |
48  |     pub fn on_event(&mut self, event: &glium::glutin::event::WindowEvent<'_>) -> bool {
    |            ^^^^^^^^

Some errors have detailed explanations: E0061, E0277, E0308, E0432, E0599.
For more information about an error, try `rustc --explain E0061`.
warning: `amdguid` (bin "amdguid") generated 4 warnings
error: could not compile `amdguid` due to 9 previous errors; 4 warnings emitted
Eraden commented 11 months ago

Hi, please check after latest updates

ThatOneCalculator commented 11 months ago

I'll be able to try tomorrow

ThatOneCalculator commented 11 months ago

Also, the CI test failing compilation doesn't seem like a good sign... https://drone.ita-prog.pl/Eraden/amdgpud/65/1/3

ThatOneCalculator commented 11 months ago

GPG key import fails from AUR.

:: (1/3) Parsing SRCINFO: amdgpud-git
:: (2/3) Parsing SRCINFO: amdguid-wayland-bin
:: (3/3) Parsing SRCINFO: amdfand-bin
gpg: error reading key: No public key

 :: PGP keys need importing:
 -> 0768AEEA335417256AEEA0910012845A89C7352B, required by: amdgpud-git
:: Import? [Y/n] 
:: Importing keys with gpg...
gpg: keyserver receive failed: No data
 -> problem importing keys
ThatOneCalculator commented 11 months ago

And, as sadly expected, the build fails.

rustc version:

nightly-x86_64-unknown-linux-gnu (environment override by RUSTUP_TOOLCHAIN)
rustc 1.76.0-nightly (1e9dda77b 2023-11-22)

Compilation errors:

   Compiling origin v0.14.0
error[E0425]: cannot find function `statx` in crate `libc`
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/fs/mod.rs:47:17
    |
47  |     libc!(libc::statx(dirfd_, path, flags, mask, checked_cast!(stat_)));
    |                 ^^^^^
    |
   ::: /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.150/src/unix/mod.rs:747:5
    |
747 |     pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;
    |     ----------------------------------------------------------- similarly named function `stat` defined here
    |
help: a function with a similar name exists
    |
47  |     libc!(libc::stat(dirfd_, path, flags, mask, checked_cast!(stat_)));
    |                 ~~~~
help: consider importing one of these items
    |
29  + use crate::fs::statx;
    |
29  + use rustix::fs::statx;
    |
help: if you import `statx`, refer to it directly
    |
47  -     libc!(libc::statx(dirfd_, path, flags, mask, checked_cast!(stat_)));
47  +     libc!(statx(dirfd_, path, flags, mask, checked_cast!(stat_)));
    |

error[E0425]: cannot find value `PTHREAD_KEYS_MAX` in this scope
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/key.rs:17:65
   |
17 |     destructors: [Option<unsafe extern "C" fn(_: *mut c_void)>; PTHREAD_KEYS_MAX as usize],
   |                                                                 ^^^^^^^^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `PTHREAD_KEYS_MAX` in this scope
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/key.rs:17:65
   |
17 |     destructors: [Option<unsafe extern "C" fn(_: *mut c_void)>; PTHREAD_KEYS_MAX as usize],
   |                                                                 ^^^^^^^^^^^^^^^^ not found in this scope
   |
help: you might be missing a const parameter
   |
15 | struct KeyData<const PTHREAD_KEYS_MAX: /* Type */> {
   |               ++++++++++++++++++++++++++++++++++++

error[E0425]: cannot find value `PTHREAD_KEYS_MAX` in this scope
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/key.rs:37:25
   |
37 |     destructors: [None; PTHREAD_KEYS_MAX as usize],
   |                         ^^^^^^^^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `PTHREAD_KEYS_MAX` in this scope
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/key.rs:40:28
   |
40 | static EPOCHS: [AtomicU32; PTHREAD_KEYS_MAX as usize] =
   |                            ^^^^^^^^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `PTHREAD_KEYS_MAX` in this scope
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/key.rs:41:35
   |
41 |     [const { AtomicU32::new(0) }; PTHREAD_KEYS_MAX as usize];
   |                                   ^^^^^^^^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `PTHREAD_KEYS_MAX` in this scope
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/key.rs:46:39
   |
46 | static VALUES: [Cell<ValueWithEpoch>; PTHREAD_KEYS_MAX as usize] =
   |                                       ^^^^^^^^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `PTHREAD_KEYS_MAX` in this scope
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/key.rs:47:50
   |
47 |     [const { Cell::new(ValueWithEpoch::new()) }; PTHREAD_KEYS_MAX as usize];
   |                                                  ^^^^^^^^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `PTHREAD_KEYS_MAX` in this scope
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/key.rs:80:29
   |
80 |                 for i in 0..PTHREAD_KEYS_MAX {
   |                             ^^^^^^^^^^^^^^^^ not found in this scope
   |
help: you might have meant to write `.` instead of `..`
   |
80 -                 for i in 0..PTHREAD_KEYS_MAX {
80 +                 for i in 0.PTHREAD_KEYS_MAX {
   |

error[E0425]: cannot find value `PTHREAD_KEYS_MAX` in this scope
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/key.rs:138:19
    |
138 |     if next_key < PTHREAD_KEYS_MAX {
    |                   ^^^^^^^^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `PTHREAD_KEYS_MAX` in this scope
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/key.rs:159:24
    |
159 |         if next_key >= PTHREAD_KEYS_MAX {
    |                        ^^^^^^^^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `statx` in crate `libc`
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process_.rs:162:31
    |
162 |             b"statx" => libc::statx as _,
    |                               ^^^^^
    |
   ::: /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.150/src/unix/mod.rs:747:5
    |
747 |     pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;
    |     ----------------------------------------------------------- similarly named function `stat` defined here
    |
help: a function with a similar name exists
    |
162 |             b"statx" => libc::stat as _,
    |                               ~~~~
help: consider importing this function
    |
1   + use rustix::fs::statx;
    |
help: if you import `statx`, refer to it directly
    |
162 -             b"statx" => libc::statx as _,
162 +             b"statx" => statx as _,
    |

error[E0425]: cannot find function `getentropy` in crate `libc`
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/rand_.rs:32:17
   |
32 |     libc!(libc::getentropy(buf, buflen));
   |                 ^^^^^^^^^^ not found in `libc`
   |
help: consider importing this function
   |
1  + use crate::rand_::getentropy;
   |
help: if you import `getentropy`, refer to it directly
   |
32 -     libc!(libc::getentropy(buf, buflen));
32 +     libc!(getentropy(buf, buflen));
   |

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/io/mod.rs:71:35
    |
71  |             libc!(libc::ioctl(fd, libc::FICLONE, src_fd));
    |                   -----------     ^^^^^^^^^^^^^ expected `i32`, found `u64`
    |                   |
    |                   arguments to this function are incorrect
    |
note: function defined here
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.150/src/unix/linux_like/linux/musl/mod.rs:739:12
    |
739 |     pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
    |            ^^^^^
help: you can convert a `u64` to an `i32` and panic if the converted value doesn't fit
    |
71  |             libc!(libc::ioctl(fd, libc::FICLONE.try_into().unwrap(), src_fd));
    |                                                ++++++++++++++++++++

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/priority.rs:8:29
    |
8   |     libc!(libc::getpriority(which, who));
    |           ----------------- ^^^^^ expected `i32`, found `u32`
    |           |
    |           arguments to this function are incorrect
    |
note: function defined here
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.150/src/unix/linux_like/linux/musl/mod.rs:742:12
    |
742 |     pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int;
    |            ^^^^^^^^^^^
help: you can convert a `u32` to an `i32` and panic if the converted value doesn't fit
    |
8   |     libc!(libc::getpriority(which.try_into().unwrap(), who));
    |                                  ++++++++++++++++++++

error[E0308]: mismatched types
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/priority.rs:11:9
   |
10 |     let result = match which {
   |                        ----- this expression has type `u32`
11 |         libc::PRIO_PROCESS => rustix::process::getpriority_process(Pid::from_raw(who as pid_t)),
   |         ^^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/priority.rs:12:9
   |
10 |     let result = match which {
   |                        ----- this expression has type `u32`
11 |         libc::PRIO_PROCESS => rustix::process::getpriority_process(Pid::from_raw(who as pid_t)),
12 |         libc::PRIO_PGRP => rustix::process::getpriority_pgrp(Pid::from_raw(who as pid_t)),
   |         ^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/priority.rs:13:9
   |
10 |     let result = match which {
   |                        ----- this expression has type `u32`
...
13 |         libc::PRIO_USER => rustix::process::getpriority_user(Uid::from_raw(who)),
   |         ^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/priority.rs:28:29
    |
28  |     libc!(libc::setpriority(which, who, prio));
    |           ----------------- ^^^^^ expected `i32`, found `u32`
    |           |
    |           arguments to this function are incorrect
    |
note: function defined here
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.150/src/unix/linux_like/linux/musl/mod.rs:743:12
    |
743 |     pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int;
    |            ^^^^^^^^^^^
help: you can convert a `u32` to an `i32` and panic if the converted value doesn't fit
    |
28  |     libc!(libc::setpriority(which.try_into().unwrap(), who, prio));
    |                                  ++++++++++++++++++++

error[E0308]: mismatched types
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/priority.rs:31:9
   |
30 |     let result = match which {
   |                        ----- this expression has type `u32`
31 |         libc::PRIO_PROCESS => {
   |         ^^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/priority.rs:34:9
   |
30 |     let result = match which {
   |                        ----- this expression has type `u32`
...
34 |         libc::PRIO_PGRP => rustix::process::setpriority_pgrp(Pid::from_raw(who as pid_t), prio),
   |         ^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/priority.rs:35:9
   |
30 |     let result = match which {
   |                        ----- this expression has type `u32`
...
35 |         libc::PRIO_USER => rustix::process::setpriority_user(Uid::from_raw(who), prio),
   |         ^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:7:27
    |
7   |     libc!(libc::getrlimit(resource, old_limit));
    |           --------------- ^^^^^^^^ expected `i32`, found `u32`
    |           |
    |           arguments to this function are incorrect
    |
note: function defined here
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.150/src/unix/linux_like/linux/musl/mod.rs:731:12
    |
731 |     pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;
    |            ^^^^^^^^^
help: you can convert a `u32` to an `i32` and panic if the converted value doesn't fit
    |
7   |     libc!(libc::getrlimit(resource.try_into().unwrap(), old_limit));
    |                                   ++++++++++++++++++++

error[E0308]: mismatched types
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:22:29
   |
22 |     libc!(libc::getrlimit64(resource, old_limit));
   |           ----------------- ^^^^^^^^ expected `i32`, found `u32`
   |           |
   |           arguments to this function are incorrect
   |
note: function defined here
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.150/src/unix/linux_like/linux/musl/lfs64.rs:85:26
   |
85 | pub unsafe extern "C" fn getrlimit64(resource: ::c_int, rlim: *mut ::rlimit64) -> ::c_int {
   |                          ^^^^^^^^^^^
help: you can convert a `u32` to an `i32` and panic if the converted value doesn't fit
   |
22 |     libc!(libc::getrlimit64(resource.try_into().unwrap(), old_limit));
   |                                     ++++++++++++++++++++

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:37:27
    |
37  |     libc!(libc::setrlimit(resource, new_limit));
    |           --------------- ^^^^^^^^ expected `i32`, found `u32`
    |           |
    |           arguments to this function are incorrect
    |
note: function defined here
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.150/src/unix/linux_like/linux/musl/mod.rs:732:12
    |
732 |     pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;
    |            ^^^^^^^^^
help: you can convert a `u32` to an `i32` and panic if the converted value doesn't fit
    |
37  |     libc!(libc::setrlimit(resource.try_into().unwrap(), new_limit));
    |                                   ++++++++++++++++++++

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:52:29
    |
52  |     libc!(libc::setrlimit64(resource, new_limit));
    |           ----------------- ^^^^^^^^ expected `i32`, found `u32`
    |           |
    |           arguments to this function are incorrect
    |
note: function defined here
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.150/src/unix/linux_like/linux/musl/lfs64.rs:214:26
    |
214 | pub unsafe extern "C" fn setrlimit64(resource: ::c_int, rlim: *const ::rlimit64) -> ::c_int {
    |                          ^^^^^^^^^^^
help: you can convert a `u32` to an `i32` and panic if the converted value doesn't fit
    |
52  |     libc!(libc::setrlimit64(resource.try_into().unwrap(), new_limit));
    |                                     ++++++++++++++++++++

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:72:30
    |
72  |     libc!(libc::prlimit(pid, resource, new_limit, old_limit));
    |           -------------      ^^^^^^^^ expected `i32`, found `u32`
    |           |
    |           arguments to this function are incorrect
    |
note: function defined here
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.150/src/unix/linux_like/linux/musl/mod.rs:733:12
    |
733 |     pub fn prlimit(
    |            ^^^^^^^
help: you can convert a `u32` to an `i32` and panic if the converted value doesn't fit
    |
72  |     libc!(libc::prlimit(pid, resource.try_into().unwrap(), new_limit, old_limit));
    |                                      ++++++++++++++++++++

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:98:32
    |
98  |     libc!(libc::prlimit64(pid, resource, new_limit, old_limit));
    |           ---------------      ^^^^^^^^ expected `i32`, found `u32`
    |           |
    |           arguments to this function are incorrect
    |
note: function defined here
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.150/src/unix/linux_like/linux/musl/lfs64.rs:160:26
    |
160 | pub unsafe extern "C" fn prlimit64(
    |                          ^^^^^^^^^
help: you can convert a `u32` to an `i32` and panic if the converted value doesn't fit
    |
98  |     libc!(libc::prlimit64(pid, resource.try_into().unwrap(), new_limit, old_limit));
    |                                        ++++++++++++++++++++

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:119:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
119 |         libc::RLIMIT_CPU => Resource::Cpu,
    |         ^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:120:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
119 |         libc::RLIMIT_CPU => Resource::Cpu,
120 |         libc::RLIMIT_FSIZE => Resource::Fsize,
    |         ^^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:121:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
121 |         libc::RLIMIT_DATA => Resource::Data,
    |         ^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:122:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
122 |         libc::RLIMIT_STACK => Resource::Stack,
    |         ^^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:123:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
123 |         libc::RLIMIT_CORE => Resource::Core,
    |         ^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:124:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
124 |         libc::RLIMIT_RSS => Resource::Rss,
    |         ^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:125:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
125 |         libc::RLIMIT_NPROC => Resource::Nproc,
    |         ^^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:126:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
126 |         libc::RLIMIT_NOFILE => Resource::Nofile,
    |         ^^^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:127:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
127 |         libc::RLIMIT_MEMLOCK => Resource::Memlock,
    |         ^^^^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:128:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
128 |         libc::RLIMIT_AS => Resource::As,
    |         ^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:129:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
129 |         libc::RLIMIT_LOCKS => Resource::Locks,
    |         ^^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:130:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
130 |         libc::RLIMIT_SIGPENDING => Resource::Sigpending,
    |         ^^^^^^^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:131:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
131 |         libc::RLIMIT_MSGQUEUE => Resource::Msgqueue,
    |         ^^^^^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:132:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
132 |         libc::RLIMIT_NICE => Resource::Nice,
    |         ^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:133:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
133 |         libc::RLIMIT_RTPRIO => Resource::Rtprio,
    |         ^^^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/process/rlimit.rs:134:9
    |
118 |     Some(match resource {
    |                -------- this expression has type `u32`
...
134 |         libc::RLIMIT_RTTIME => Resource::Rttime,
    |         ^^^^^^^^^^^^^^^^^^^ expected `u32`, found `i32`

error[E0609]: no field `c_ispeed` on type `&libc::termios`
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/termios_/mod.rs:251:36
    |
251 |     result.set_input_speed(termios.c_ispeed).unwrap();
    |                                    ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
251 |     result.set_input_speed(termios.__c_ispeed).unwrap();
    |                                    ~~~~~~~~~~

error[E0609]: no field `c_ospeed` on type `&libc::termios`
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/termios_/mod.rs:252:37
    |
252 |     result.set_output_speed(termios.c_ospeed).unwrap();
    |                                     ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
252 |     result.set_output_speed(termios.__c_ospeed).unwrap();
    |                                     ~~~~~~~~~~

error[E0560]: struct `libc::termios` has no field named `c_ispeed`
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/termios_/mod.rs:275:9
    |
275 |         c_ispeed: to_libc_speed(termios.input_speed()),
    |         ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
275 |         __c_ispeed: to_libc_speed(termios.input_speed()),
    |         ~~~~~~~~~~

error[E0560]: struct `libc::termios` has no field named `c_ospeed`
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/termios_/mod.rs:276:9
    |
276 |         c_ospeed: to_libc_speed(termios.output_speed()),
    |         ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
276 |         __c_ospeed: to_libc_speed(termios.output_speed()),
    |         ~~~~~~~~~~

error[E0061]: this method takes 1 argument but 0 arguments were supplied
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/key.rs:57:63
   |
57 |     let ValueWithEpoch { epoch, data } = VALUES[key as usize].get();
   |                                                               ^^^-- an argument is missing
   |
note: method defined here
  --> /rustc/1e9dda77b5b8e690c7e21871bbd2dcf182e1a841/library/core/src/slice/mod.rs:601:12
help: provide the argument
   |
57 |     let ValueWithEpoch { epoch, data } = VALUES[key as usize].get(/* index */);
   |                                                                  ~~~~~~~~~~~~~

error[E0308]: mismatched types
  --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/key.rs:57:9
   |
57 |     let ValueWithEpoch { epoch, data } = VALUES[key as usize].get();
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   -------------------------- this expression has type `Option<&_>`
   |         |
   |         expected `Option<&_>`, found `ValueWithEpoch`
   |
   = note: expected enum `Option<&_>`
            found struct `ValueWithEpoch`

error[E0512]: cannot transmute between types of different sizes, or dependently-sized types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/use_libc.rs:22:17
    |
22  |                 core::mem::transmute(crate::use_libc::Pad::new(core::ptr::read(src_ptr)));
    |                 ^^^^^^^^^^^^^^^^^^^^
    |
   ::: /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/mod.rs:591:9
    |
591 |         checked_cast!(rwlockattr)
    |         ------------------------- in this macro invocation
    |
    = note: source type: `Pad<PthreadRwlockattrT>` (128 bits)
    = note: target type: `Pad<pthread_rwlockattr_t>` (96 bits)
    = note: this error originates in the macro `checked_cast` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0512]: cannot transmute between types of different sizes, or dependently-sized types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/use_libc.rs:22:17
    |
22  |                 core::mem::transmute(crate::use_libc::Pad::new(core::ptr::read(src_ptr)));
    |                 ^^^^^^^^^^^^^^^^^^^^
    |
   ::: /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/mod.rs:616:41
    |
616 |     libc!(libc::pthread_rwlockattr_init(checked_cast!(attr)));
    |                                         ------------------- in this macro invocation
    |
    = note: source type: `Pad<PthreadRwlockattrT>` (128 bits)
    = note: target type: `Pad<pthread_rwlockattr_t>` (96 bits)
    = note: this error originates in the macro `checked_cast` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0512]: cannot transmute between types of different sizes, or dependently-sized types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/use_libc.rs:22:17
    |
22  |                 core::mem::transmute(crate::use_libc::Pad::new(core::ptr::read(src_ptr)));
    |                 ^^^^^^^^^^^^^^^^^^^^
    |
   ::: /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/thread/mod.rs:627:44
    |
627 |     libc!(libc::pthread_rwlockattr_destroy(checked_cast!(_attr)));
    |                                            -------------------- in this macro invocation
    |
    = note: source type: `Pad<PthreadRwlockattrT>` (128 bits)
    = note: target type: `Pad<pthread_rwlockattr_t>` (96 bits)
    = note: this error originates in the macro `checked_cast` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0308]: mismatched types
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.16/src/time/mod.rs:92:33
    |
92  |     libc!(libc::gettimeofday(t, _tz));
    |           ------------------    ^^^ expected `*mut c_void`, found `*mut timezone`
    |           |
    |           arguments to this function are incorrect
    |
    = note: expected raw pointer `*mut c_void`
               found raw pointer `*mut timezone`
note: function defined here
   --> /home/kainoa/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.150/src/unix/linux_like/linux/musl/mod.rs:740:12
    |
740 |     pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;
    |            ^^^^^^^^^^^^

Some errors have detailed explanations: E0061, E0308, E0425, E0512, E0560, E0609.
For more information about an error, try `rustc --explain E0061`.
error: could not compile `c-scape` (lib) due to 54 previous errors
warning: build failed, waiting for other jobs to finish...
GIJack commented 8 months ago

Still getting this error in Arch

Eraden commented 7 months ago

Hi, I upgraded dependencies for entire project. Please check if anything changed.

Major change:

The reason behind this is I don't have enough time to maintain 3 and egui changed to such degree porting my old code is impossible.

I hope I fixed all issues, at least for some time

dreirund commented 6 months ago

Still getting compilation errors:

[...]
   Compiling num-integer v0.1.46
error[E0425]: cannot find function `from_exposed_addr_mut` in module `ptr`
   --> /var/cache/makepkg/build/amdgpud-git/src/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.43/src/thread/mod.rs:125:16
    |
125 |     libc!(ptr::from_exposed_addr_mut(libc::pthread_self() as _));
    |                ^^^^^^^^^^^^^^^^^^^^^ not found in `ptr`

error[E0425]: cannot find function `from_exposed_addr_mut` in module `ptr`
   --> /var/cache/makepkg/build/amdgpud-git/src/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.43/src/process_.rs:173:16
    |
173 |     libc!(ptr::from_exposed_addr_mut(libc::getauxval(type_) as _));
    |                ^^^^^^^^^^^^^^^^^^^^^ not found in `ptr`

   Compiling glutin v0.31.3
   Compiling num-rational v0.4.1
   Compiling eyra v0.16.10
   Compiling atspi-common v0.3.0
   Compiling signal-hook v0.3.17
   Compiling iana-time-zone v0.1.60
error[E0599]: no method named `expose_addr` found for raw pointer `*mut c_void` in the current scope
   --> /var/cache/makepkg/build/amdgpud-git/src/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.43/src/thread/mod.rs:132:16
    |
132 |         thread.expose_addr() as _,
    |                ^^^^^^^^^^^ method not found in `*mut c_void`

   Compiling tz-rs v0.6.14
   Compiling chrono v0.4.37
error[E0599]: no method named `expose_addr` found for raw pointer `*mut c_void` in the current scope
   --> /var/cache/makepkg/build/amdgpud-git/src/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.43/src/thread/mod.rs:744:40
    |
744 |     libc!(libc::pthread_detach(pthread.expose_addr() as _));
    |                                        ^^^^^^^^^^^ method not found in `*mut c_void`

error[E0599]: no method named `expose_addr` found for raw pointer `*mut c_void` in the current scope
   --> /var/cache/makepkg/build/amdgpud-git/src/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.43/src/thread/mod.rs:751:38
    |
751 |     libc!(libc::pthread_join(pthread.expose_addr() as _, retval));
    |                                      ^^^^^^^^^^^ method not found in `*mut c_void`

error[E0599]: no method named `expose_addr` found for raw pointer `*mut c_void` in the current scope
   --> /var/cache/makepkg/build/amdgpud-git/src/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.43/src/thread/mod.rs:855:17
    |
855 |         pthread.expose_addr() as _,
    |                 ^^^^^^^^^^^ method not found in `*mut c_void`

error[E0599]: no method named `expose_addr` found for raw pointer `*mut c_void` in the current scope
   --> /var/cache/makepkg/build/amdgpud-git/src/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.43/src/thread/mod.rs:912:44
    |
912 |     libc!(libc::pthread_setname_np(pthread.expose_addr() as _, name));
    |                                            ^^^^^^^^^^^ method not found in `*mut c_void`

error[E0599]: no method named `expose_addr` found for raw pointer `*const c_void` in the current scope
   --> /var/cache/makepkg/build/amdgpud-git/src/.cargo/registry/src/index.crates.io-6f17d22bba15001f/c-scape-0.15.43/src/process_.rs:217:49
    |
217 |         dlpi_addr: addr_of!(__executable_start).expose_addr() as _,
    |                                                 ^^^^^^^^^^^ method not found in `*const c_void`

   Compiling flate2 v1.0.28
   Compiling fdeflate v0.3.4
   Compiling glutin-winit v0.4.2
Some errors have detailed explanations: E0425, E0599.
For more information about an error, try `rustc --explain E0425`.
error: could not compile `c-scape` (lib) due to 8 previous errors
warning: build failed, waiting for other jobs to finish...
dataprolet commented 5 months ago

Just FYI, I'm now maintaining the amdfand-git and amdfan packages in the AUR. Also here's an updated PKGBUILD for amdfand-bin. All of them compile/install successfully. This obviously doesn't solve compiling issues on the whole project, but party and maybe helps someone.

EDIT: amdfand-bin just got updated to 1.0.14.

dreirund commented 5 months ago

So maybe this isse can then be closed now?