<div dir="ltr">Source: rust-apr<br>Version: 0.1.9-1<br>Severity: serious<br>Tags: FTBFS, patch<br>User: <a href="mailto:debian-riscv@lists.debian.org" target="_blank">debian-riscv@lists.debian.org</a><br>Usertags: riscv64<br>X-Debbugs-Cc: <a href="mailto:debian-riscv@lists.debian.org" target="_blank">debian-riscv@lists.debian.org</a><br><div><br></div><div>Dear rust-apr Maintainer,</div><div>The package rust-apr build failed on arch riscv64,arm64,ppc64el and s490x caused by incorrect arguments.The crucial buildd log below:</div><div>```</div><div><pre style="color:rgb(0,0,0)">     Running `CARGO=/usr/bin/cargo CARGO_CRATE_NAME=apr CARGO_MANIFEST_DIR=/<<PKGBUILDDIR>> CARGO_PKG_AUTHORS='Jelmer Vernooij <<a href="mailto:jelmer@apache.org">jelmer@apache.org</a>>' CARGO_PKG_DESCRIPTION='Rust bindings for Apache Portable Runtime' CARGO_PKG_HOMEPAGE='<a href="https://github.com/jelmer/apr-rs">https://github.com/jelmer/apr-rs</a>' CARGO_PKG_LICENSE=Apache-2.0 CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=apr CARGO_PKG_REPOSITORY='<a href="https://github.com/jelmer/apr-rs.git">https://github.com/jelmer/apr-rs.git</a>' CARGO_PKG_RUST_VERSION='' CARGO_PKG_VERSION=0.1.9 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=1 CARGO_PKG_VERSION_PATCH=9 CARGO_PKG_VERSION_PRE='' CARGO_PRIMARY_PACKAGE=1 LD_LIBRARY_PATH='/<<PKGBUILDDIR>>/target/debug/deps:/usr/lib' OUT_DIR=/<<PKGBUILDDIR>>/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out rustc --crate-name apr --edition=2021 src/<a href="http://lib.rs">lib.rs</a> --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=5bed62fa808055ec -C extra-filename=-5bed62fa808055ec --out-dir /<<PKGBUILDDIR>>/target/riscv64gc-unknown-linux-gnu/debug/deps --target riscv64gc-unknown-linux-gnu -C incremental=/<<PKGBUILDDIR>>/target/riscv64gc-unknown-linux-gnu/debug/incremental -L dependency=/<<PKGBUILDDIR>>/target/riscv64gc-unknown-linux-gnu/debug/deps -L dependency=/<<PKGBUILDDIR>>/target/debug/deps --extern ctor=/<<PKGBUILDDIR>>/target/debug/deps/libctor-bd244608a47cb8e3.so -C debuginfo=2 --cap-lints warn -C linker=riscv64-linux-gnu-gcc -C link-arg=-Wl,-z,relro --remap-path-prefix /<<PKGBUILDDIR>>=/usr/share/cargo/registry/apr-0.1.9 --remap-path-prefix /<<PKGBUILDDIR>>/debian/cargo_registry=/usr/share/cargo/registry -L native=/usr/lib/riscv64-linux-gnu -l apr-1 -l aprutil-1 -l ldap -l lber -l apr-1 --cfg system_deps_have_apr_1 --cfg system_deps_have_apr_util_1`
error[E0308]: arguments to this function are incorrect
 --> src/date.rs:5:14
  |
5 |     unsafe { apr_date_checkmask(data.as_ptr() as *const i8, mask.as_ptr() as *const i8) != 0 }
  |              ^^^^^^^^^^^^^^^^^^
  |
note: expected `*const u8`, found `*const i8`
 --> src/date.rs:5:33
  |
5 |     unsafe { apr_date_checkmask(data.as_ptr() as *const i8, mask.as_ptr() as *const i8) != 0 }
  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
  = note: expected raw pointer `*const u8`
             found raw pointer `*const i8`
note: expected `*const u8`, found `*const i8`
 --> src/date.rs:5:61
  |
5 |     unsafe { apr_date_checkmask(data.as_ptr() as *const i8, mask.as_ptr() as *const i8) != 0 }
  |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  = note: expected raw pointer `*const u8`
             found raw pointer `*const i8`
note: function defined here
 --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:152799
  |
3 | ...r\n @return 1 if the string matches, 0 otherwise"] pub fn apr_date_checkmask (data : * const :: std :: os :: raw :: c_char , mask : * ...
  |                                                              ^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
 --> src/date.rs:9:61
  |
9 |     let rv = unsafe { crate::generated::apr_date_parse_http(data.as_ptr() as *const i8) };
  |                       ------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `*const u8`, found `*const i8`
  |                       |
  |                       arguments to this function are incorrect
  |
  = note: expected raw pointer `*const u8`
             found raw pointer `*const i8`
note: function defined here
 --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:153452
  |
3 | ...ould be out of range or if the date is invalid."] pub fn apr_date_parse_http (date : * const :: std :: os :: raw :: c_char) -> apr_tim...
  |                                                             ^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
  --> src/date.rs:18:60
   |
18 |     let rv = unsafe { crate::generated::apr_date_parse_rfc(data.as_ptr() as *const i8) };
   |                       ------------------------------------ ^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `*const u8`, found `*const i8`
   |                       |
   |                       arguments to this function are incorrect
   |
   = note: expected raw pointer `*const u8`
              found raw pointer `*const i8`
note: function defined here
  --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:154709
   |
3  | ...would be out of range or if the date is invalid."] pub fn apr_date_parse_rfc (date : * const :: std :: os :: raw :: c_char) -> apr_tim...
   |                                                              ^^^^^^^^^^^^^^^^^^

error[E0308]: arguments to this function are incorrect
   --> src/getopt.rs:186:13
    |
186 |             crate::generated::apr_getopt(
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
note: expected `*const u8`, found `*const i8`
   --> src/getopt.rs:188:17
    |
188 |                 opts.as_slice().as_ptr(),
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^
    = note: expected raw pointer `*const u8`
               found raw pointer `*const i8`
note: expected `*mut *const u8`, found `&mut *const i8`
   --> src/getopt.rs:190:17
    |
190 |                 &mut option_arg,
    |                 ^^^^^^^^^^^^^^^
    = note:    expected raw pointer `*mut *const u8`
            found mutable reference `&mut *const i8`
note: function defined here
   --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:141847
    |
3   | ...APR_SUCCESS  --  The next option was found.\n </PRE>"] pub fn apr_getopt (os : * mut apr_getopt_t , opts : * const :: std :: os :: raw...
    |                                                                  ^^^^^^^^^^

error[E0308]: mismatched types
   --> src/getopt.rs:201:59
    |
201 |                         unsafe { std::ffi::CStr::from_ptr(option_arg) }
    |                                  ------------------------ ^^^^^^^^^^ expected `*const u8`, found `*const i8`
    |                                  |
    |                                  arguments to this function are incorrect
    |
    = note: expected raw pointer `*const u8`
               found raw pointer `*const i8`
note: associated function defined here
   --> /usr/src/rustc-1.70.0/library/core/src/ffi/c_str.rs:260:25

error[E0308]: mismatched types
   --> src/getopt.rs:237:17
    |
233 |             crate::generated::apr_getopt_long(
    |             --------------------------------- arguments to this function are incorrect
...
237 |                 &mut option_arg,
    |                 ^^^^^^^^^^^^^^^ expected `*mut *const u8`, found `&mut *const i8`
    |
    = note:    expected raw pointer `*mut *const u8`
            found mutable reference `&mut *const i8`
note: function defined here
   --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:143529
    |
3   | ...s\n at the end (the original argv is unaffected)."] pub fn apr_getopt_long (os : * mut apr_getopt_t , opts : * const apr_getopt_option...
    |                                                               ^^^^^^^^^^^^^^^

error[E0308]: mismatched types
   --> src/getopt.rs:247:59
    |
247 |                         unsafe { std::ffi::CStr::from_ptr(option_arg) }
    |                                  ------------------------ ^^^^^^^^^^ expected `*const u8`, found `*const i8`
    |                                  |
    |                                  arguments to this function are incorrect
    |
    = note: expected raw pointer `*const u8`
               found raw pointer `*const i8`
note: associated function defined here
   --> /usr/src/rustc-1.70.0/library/core/src/ffi/c_str.rs:260:25

error[E0308]: mismatched types
   --> src/hash.rs:218:48
    |
218 |         crate::generated::apr_hashfunc_default(key.as_ptr() as *const i8, &mut len)
    |         -------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^ expected `*const u8`, found `*const i8`
    |         |
    |         arguments to this function are incorrect
    |
    = note: expected raw pointer `*const u8`
               found raw pointer `*const i8`
note: function defined here
   --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:78199
    |
3   | ...ern "C" { # [doc = " The default hash function."] pub fn apr_hashfunc_default (key : * const :: std :: os :: raw :: c_char , klen : * ...
    |                                                             ^^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
  --> src/pool.rs:70:45
   |
70 |             generated::apr_pool_tag(self.0, tag.as_ptr() as *const i8);
   |             -----------------------         ^^^^^^^^^^^^^^^^^^^^^^^^^ expected `*const u8`, found `*const i8`
   |             |
   |             arguments to this function are incorrect
   |
   = note: expected raw pointer `*const u8`
              found raw pointer `*const i8`
note: function defined here
  --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:38668
   |
3  | ...n @param pool The pool to tag\n @param tag  The tag"] pub fn apr_pool_tag (pool : * mut apr_pool_t , tag : * const :: std :: os :: raw...
   |                                                                 ^^^^^^^^^^^^

error[E0308]: mismatched types
  --> src/status.rs:76:17
   |
74 |             crate::generated::apr_strerror(
   |             ------------------------------ arguments to this function are incorrect
75 |                 *self as crate::generated::apr_status_t,
76 |                 buf.as_mut_ptr() as *mut i8,
   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `*mut u8`, found `*mut i8`
   |
   = note: expected raw pointer `*mut u8`
              found raw pointer `*mut i8`
note: function defined here
  --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:21091
   |
3  | ...aram bufsize Size of the buffer to hold the string."] pub fn apr_strerror (statcode : apr_status_t , buf : * mut :: std :: os :: raw :...
   |                                                                 ^^^^^^^^^^^^

error[E0308]: mismatched types
  --> src/time.rs:16:41
   |
16 |             crate::generated::apr_ctime(buf.as_mut_ptr() as *mut i8, self.0);
   |             --------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `*mut u8`, found `*mut i8`
   |             |
   |             arguments to this function are incorrect
   |
   = note: expected raw pointer `*mut u8`
              found raw pointer `*mut i8`
note: function defined here
  --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:54136
   |
3  | ...r String to write to.\n @param t the time to convert"] pub fn apr_ctime (date_str : * mut :: std :: os :: raw :: c_char , t : apr_time...
   |                                                                  ^^^^^^^^^

error[E0308]: mismatched types
  --> src/time.rs:27:47
   |
27 |             crate::generated::apr_rfc822_date(buf.as_mut_ptr() as *mut i8, self.0);
   |             --------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `*mut u8`, found `*mut i8`
   |             |
   |             arguments to this function are incorrect
   |
   = note: expected raw pointer `*mut u8`
              found raw pointer `*mut i8`
note: function defined here
  --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:53650
   |
3  | ...tring to write to.\n @param t the time to convert"] pub fn apr_rfc822_date (date_str : * mut :: std :: os :: raw :: c_char , t : apr_t...
   |                                                               ^^^^^^^^^^^^^^^

error[E0308]: mismatched types
   --> src/uri.rs:134:17
    |
132 |             let status = crate::generated::apr_uri_parse_hostinfo(
    |                          ---------------------------------------- arguments to this function are incorrect
133 |                 pool.as_mut_ptr(),
134 |                 hostinfo.as_ptr() as *const i8,
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `*const u8`, found `*const i8`
    |
    = note: expected raw pointer `*const u8`
               found raw pointer `*const i8`
note: function defined here
   --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:152200
    |
3   | ... @return APR_SUCCESS for success or error code"] pub fn apr_uri_parse_hostinfo (p : * mut apr_pool_t , hostinfo : * const :: std :: os...
    |                                                            ^^^^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
   --> src/uri.rs:152:17
    |
150 |             let status = crate::generated::apr_uri_parse(
    |                          ------------------------------- arguments to this function are incorrect
151 |                 pool.as_mut_ptr(),
152 |                 url.as_ptr() as *const i8,
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^ expected `*const u8`, found `*const i8`
    |
    = note: expected raw pointer `*const u8`
               found raw pointer `*const i8`
note: function defined here
   --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:151794
    |
3   | ...ut\n @return APR_SUCCESS for success or error code"] pub fn apr_uri_parse (p : * mut apr_pool_t , uri : * const :: std :: os :: raw ::...
    |                                                                ^^^^^^^^^^^^^

error[E0308]: mismatched types
   --> src/uri.rs:176:55
    |
176 |     unsafe { crate::generated::apr_uri_port_of_scheme(scheme.as_ptr() as *const i8) }
    |              ---------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `*const u8`, found `*const i8`
    |              |
    |              arguments to this function are incorrect
    |
    = note: expected raw pointer `*const u8`
               found raw pointer `*const i8`
note: function defined here
   --> /usr/share/cargo/registry/apr-0.1.9/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out/generated.rs:3:150380
    |
3   | ...eme\n @return The default port for this scheme"] pub fn apr_uri_port_of_scheme (scheme_str : * const :: std :: os :: raw :: c_char) ->...
    |                                                            ^^^^^^^^^^^^^^^^^^^^^^

For more information about this error, try `rustc --explain E0308`.
error: could not compile `apr` due to 15 previous errors

Caused by:
  process didn't exit successfully: `CARGO=/usr/bin/cargo CARGO_CRATE_NAME=apr CARGO_MANIFEST_DIR=/<<PKGBUILDDIR>> CARGO_PKG_AUTHORS='Jelmer Vernooij <<a href="mailto:jelmer@apache.org">jelmer@apache.org</a>>' CARGO_PKG_DESCRIPTION='Rust bindings for Apache Portable Runtime' CARGO_PKG_HOMEPAGE='<a href="https://github.com/jelmer/apr-rs">https://github.com/jelmer/apr-rs</a>' CARGO_PKG_LICENSE=Apache-2.0 CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=apr CARGO_PKG_REPOSITORY='<a href="https://github.com/jelmer/apr-rs.git">https://github.com/jelmer/apr-rs.git</a>' CARGO_PKG_RUST_VERSION='' CARGO_PKG_VERSION=0.1.9 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=1 CARGO_PKG_VERSION_PATCH=9 CARGO_PKG_VERSION_PRE='' CARGO_PRIMARY_PACKAGE=1 LD_LIBRARY_PATH='/<<PKGBUILDDIR>>/target/debug/deps:/usr/lib' OUT_DIR=/<<PKGBUILDDIR>>/target/riscv64gc-unknown-linux-gnu/debug/build/apr-b417133e16d63cef/out rustc --crate-name apr --edition=2021 src/<a href="http://lib.rs">lib.rs</a> --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=5bed62fa808055ec -C extra-filename=-5bed62fa808055ec --out-dir /<<PKGBUILDDIR>>/target/riscv64gc-unknown-linux-gnu/debug/deps --target riscv64gc-unknown-linux-gnu -C incremental=/<<PKGBUILDDIR>>/target/riscv64gc-unknown-linux-gnu/debug/incremental -L dependency=/<<PKGBUILDDIR>>/target/riscv64gc-unknown-linux-gnu/debug/deps -L dependency=/<<PKGBUILDDIR>>/target/debug/deps --extern ctor=/<<PKGBUILDDIR>>/target/debug/deps/libctor-bd244608a47cb8e3.so -C debuginfo=2 --cap-lints warn -C linker=riscv64-linux-gnu-gcc -C link-arg=-Wl,-z,relro --remap-path-prefix /<<PKGBUILDDIR>>=/usr/share/cargo/registry/apr-0.1.9 --remap-path-prefix /<<PKGBUILDDIR>>/debian/cargo_registry=/usr/share/cargo/registry -L native=/usr/lib/riscv64-linux-gnu -l apr-1 -l aprutil-1 -l ldap -l lber -l apr-1 --cfg system_deps_have_apr_1 --cfg system_deps_have_apr_util_1` (exit status: 1)
dh_auto_test: error: /usr/share/cargo/bin/cargo test --all returned exit code 101
make[1]: *** [debian/rules:6: override_dh_auto_test] Error 25
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:3: binary-arch] Error 2
dpkg-buildpackage: error: debian/rules binary-arch subprocess returned exit status 2</pre></div><div>```</div><div>The full buildd log is here:</div><div><a href="https://buildd.debian.org/status/fetch.php?pkg=rust-apr&arch=riscv64&ver=0.1.9-1&stamp=1699404678&raw=0">https://buildd.debian.org/status/fetch.php?pkg=rust-apr&arch=riscv64&ver=0.1.9-1&stamp=1699404678&raw=0</a><br></div><div><br></div><div>My solution to this issue:</div><div>The error message indicates a type mismatch in the Rust code, where a *const i8 is being passed instead of the expected *const u8. This is due to differences in type definitions in C and Rust. Specifically, in C, char is often defined as i8 in Rust, while in Rust u8 is used for unsigned 8-bit integers.I can create a patch to replace `i8` with 'u8'.I have tested that on local and it works well.The patch is in the attachment, please let me know wheather this solution can be accepted.<br></div><div><br></div><div>Gui-Yue</div><div>Best Regards</div></div>