Svetlitski / fcp

A significantly faster alternative to the classic Unix cp(1) command, copying large files and directories in a fraction of the time.
BSD 3-Clause "New" or "Revised" License
767 stars 19 forks source link

Request for musl build? #7

Closed mathomp4 closed 3 years ago

mathomp4 commented 3 years ago

I recently discovered this cool program and thought I'd try it out on the one non-laptop SSD system I have. Unfortunately:

$ fcp
fcp: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by fcp)

In the past when I've seen things like this with Rust projects, I've asked if the developers could make a musl build instead of (or in addition to) a glibc build. Do you think fcp could have a musl build? Or perhaps it requires glibc?

(Of course, it might be "I should update my OS", but it's a government system so OS updates are...let's call it deliberate in pace.)

Svetlitski commented 3 years ago

Sure. I built this binary (attached below) inside a VM running Alpine Linux (which uses musl as its libc) using the stable-x86_64-unknown-linux-musl Rust toolchain. It works well within my VM (passes the tests), but just to be safe try it out yourself and make sure it works (the binary is statically linked, so I see no reason why it shouldn't). If you can confirm it works for you, I'll add it alongside the other binaries in the releases.

fcp-0.1.0-x86_64-unknown-linux-musl.zip

mathomp4 commented 3 years ago

@Svetlitski It seems to work!

One question: do you think it can be stripped?

$ ls -ltr fcp-0.1.0-x86_64-unknown-linux-musl
-rwxr-xr-x. 1 mathomp4 users 4010488 Jun 25 16:20 fcp-0.1.0-x86_64-unknown-linux-musl*
$ strip fcp-0.1.0-x86_64-unknown-linux-musl
$ ls -ltr fcp-0.1.0-x86_64-unknown-linux-musl
-rwxr-xr-x. 1 mathomp4 users 530592 Jun 25 19:15 fcp-0.1.0-x86_64-unknown-linux-musl*

Unless you are still at the stages where the symbols are useful?

Svetlitski commented 3 years ago

Good catch, but I'd actually like to leave it as is for the present release. For context as to why, I realized only after the initial v0.1.0 release (by perusing the GitHub actions definitions of other open-source Rust projects) that I should've been stripping the binaries so they aren't huge, but the binaries were already up and it felt strange to change them without another release. So to keep things uniform between platforms, I intend to keep this musl binary unstripped. For all future releases, all binaries for all platforms will indeed be stripped.

mathomp4 commented 3 years ago

@Svetlitski Sounds good. And it's not like 4 MB is huge. I mean, the project I work on can make 1 GB binaries 😄

Now I'm wondering if they ever fixed up cargo to build stripped binaries. Haven't looked at that in a while...

Svetlitski commented 3 years ago

1 GB binaries, that's quite a feat! I've gone ahead and added the musl binary to the releases page, thanks for bringing this up!