38 / d4-format

The D4 Quantitative Data Format
MIT License
150 stars 20 forks source link

Dockerfile no longer works with edition = "2021" #45

Open udincer opened 2 years ago

udincer commented 2 years ago

It looks like the base image for rust is too old. https://github.com/38/d4-format/blob/151f27cb06a32880f7e8d6e256b94d60361adf32/Dockerfile#L1 Changing FROM rust:1.50 as builder to FROM rust:latest as builder results in a mismatched types error:

#11 83.35 error[E0308]: mismatched types
#11 83.35    --> d4-hts/src/alignment/bamfile.rs:102:52
#11 83.35     |
#11 83.35 102 |             let raw_name = unsafe { CStr::from_ptr(*raw_name as *const i8) };
#11 83.35     |                                                    ^^^^^^^^^^^^^^^^^^^^^^ expected `u8`, found `i8`
#11 83.35     |
#11 83.35     = note: expected raw pointer `*const u8`
#11 83.35                found raw pointer `*const i8`
#11 83.35

Which is strange because I don't get this error when compiling not in a container. After changing i8 to u8, it compiles, but gives me a libssl linking error, which I resolved by adding openssl to dependencies (see https://github.com/38/d4-format/issues/42#issuecomment-1027573276). This could also potentially be resolved by using an image that has libssl installed.

At this point I get a /lib/aarch64-linux-gnu/libm.so.6: version GLIBC_2.29' not found error, but I think this has to do with Docker on arm vs x86 and this is getting way too complicated so I think I'll stop going down the rabbit hole at this point. Surprisingly simply running cargo install d4tools on an ARM Macbook without Docker works just fine.