Release Engineering Is Exhausting So Here's cargo-dist!

Helping your Rust projects ship prebuilt binaries that others can actually use without you having to become a Github CI Expert (or Rust Toolchain Expert) ((or OS integration expert)) (((or...)))

https://blog.axo.dev/2023/02/cargo-dist

axo blog - Release Engineering Is Exhausting So Here's cargo-dist

Release Announcement for cargo-dist, a tool to help you package up binaries for a Rust application.

@Gankra Congrats on the release! Btw did you see my treatise on DWP? https://github.com/rust-lang/rust/issues/105991
Are dwp files the right choice for split-debuginfo=packed on Linux? · Issue #105991 · rust-lang/rust

@davidtwco @bjorn3 @philipc @Gankra @khuey Hi all, I was reading up on split dwarf and DWP files and came away rather confused. What is a situation in which using split dwarf + DWP is preferable ov...

GitHub

@mstange yes! i agree dwp isn't ready for primetime, but am mostly waiting for

https://github.com/rust-lang/cargo/pull/11572

before re-evaluating ...which in grabbing that link I just saw landed like, yesterday!

Make cargo aware of dwp files. by khuey · Pull Request #11572 · rust-lang/cargo

When using -Csplit-debuginfo=packed on Linux, rustc will produce a dwp file. Unlike the dwo files, whose paths are embedded into the binary, there's no information in the binary to help a debugger ...

GitHub
@Gankra Ah nice, I'm curious to see your evaluation once you get a chance.

@mstange my main concern is getting this stuff uploaded at all to a level where, even if it's not useful *today*, someone can come back later and process the uploaded artifacts into a more useful form

i'm pretty confident I'm doing this for pdbs (I don't grab any ids but they should be embedded in the binaries and the naming scheme indicates they pair)

i'm less clear on dsym/dwp, if I need to make sure to grab anything extra.

@Gankra Ah I see, that makes sense.

Ok so if you just grab the dSYM bundle and the dwp file and upload those as extra artifacts, that should be all that’s needed. And don’t strip the Linux binary; it contains debug info which is not in the dwp.

A dSYM is quite similar to a pdb. It’s a self contained unit with all debug info. It is paired with its corresponding binary by virtue of having the same mach-O UUID. This UUID is written down in the files and is usually not spelled out in the filename.

@mstange perfect, thanks for confirming my assumptions!