amdgpud icon indicating copy to clipboard operation
amdgpud copied to clipboard

Build fails on Arch Linux

Open ThatOneCalculator opened this issue 2 years ago • 8 comments

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

ThatOneCalculator avatar Jun 13 '23 17:06 ThatOneCalculator

Hi, please check after latest updates

Eraden avatar Nov 22 '23 21:11 Eraden

I'll be able to try tomorrow

ThatOneCalculator avatar Nov 22 '23 21:11 ThatOneCalculator

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

ThatOneCalculator avatar Nov 22 '23 21:11 ThatOneCalculator

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 avatar Nov 23 '23 06:11 ThatOneCalculator

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...

ThatOneCalculator avatar Nov 23 '23 06:11 ThatOneCalculator

Still getting this error in Arch

NetworkJack2 avatar Feb 12 '24 18:02 NetworkJack2

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

Major change:

  • now there's only one GUI client called agc.

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

Eraden avatar Apr 07 '24 09:04 Eraden

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...

dreirund avatar Apr 19 '24 18:04 dreirund

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.

dataprolet avatar May 13 '24 17:05 dataprolet

So maybe this isse can then be closed now?

dreirund avatar Jun 03 '24 15:06 dreirund