Skip to content

rustdesk-ppc-agent: new port, and the minicargo fix it needs - #202

Open
danifunker wants to merge 1 commit into
macos-powerpc:mainfrom
danifunker:rustdesk-ppc-agent
Open

rustdesk-ppc-agent: new port, and the minicargo fix it needs#202
danifunker wants to merge 1 commit into
macos-powerpc:mainfrom
danifunker:rustdesk-ppc-agent

Conversation

@danifunker

Copy link
Copy Markdown

A RustDesk agent -- the controlled side -- for PowerPC Macs: screen, keyboard, mouse and clipboard served to a standard RustDesk client, over a direct connection or a rendezvous server. There is no GUI client here. The protocol is reimplemented against RustDesk's own .proto files rather than ported from upstream's tokio-based tree, which is what keeps the graph at 32 crates and inside the subset of Rust mrustc handles.

Built and run with mrustc at d0fffe5b plus this tree's 0001-0025 and the 0026 added here, against rustc 1.90 libstd with debug assertions on. The whole crate graph builds -- protobuf, sodiumoxide, sha2, libc, five C shims and 36 MB of generated C -- and the resulting binary serves a full display probe on a Power Mac G5 and G4: framebuffer capture, ARGB conversion, VP8 encode, clipboard.

One crate needs patching. protobuf 3.0.0-alpha.2's BufReadIter reserves capacity and then indexes past the end of a zero-length slice, on a length taken mrustc needs 0026: minicargo parses a semver +build suffix but not -prerelease, so CARGO_PKG_VERSION reaches protobuf's build script as plain 3.0.0 -- it emits VERSION_3_0_0 while the crate's own generated code references VERSION_3_0_0_ALPHA_2, and the name fails to resolve. Submitted upstream as well; it applies above the CARGO_PKG_* block 0012 adds. revision bumped accordingly.

Also confirms 0002 subsumes the niche-enum alignment fix I had been carrying locally: protobuf's ReflectValueRef, the type that needed it, now compiles with no sizeof_assert failures.

A RustDesk agent -- the controlled side -- for PowerPC Macs: screen, keyboard,
mouse and clipboard served to a standard RustDesk client, over a direct
connection or a rendezvous server. There is no GUI client here. The protocol is
reimplemented against RustDesk's own .proto files rather than ported from
upstream's tokio-based tree, which is what keeps the graph at 32 crates and
inside the subset of Rust mrustc handles.

Built and run with mrustc at d0fffe5b plus this tree's 0001-0025 and the 0026
added here, against rustc 1.90 libstd with debug assertions on. The whole crate
graph builds -- protobuf, sodiumoxide, sha2, libc, five C shims and 36 MB of
generated C -- and the resulting binary serves a full display probe on a Power
Mac G5 and G4: framebuffer capture, ARGB conversion, VP8 encode, clipboard.

One crate needs patching. protobuf 3.0.0-alpha.2's BufReadIter reserves
capacity and then indexes past the end of a zero-length slice, on a length taken
mrustc needs 0026: minicargo parses a semver `+build` suffix but not
`-prerelease`, so CARGO_PKG_VERSION reaches protobuf's build script as plain
3.0.0 -- it emits VERSION_3_0_0 while the crate's own generated code references
VERSION_3_0_0_ALPHA_2, and the name fails to resolve. Submitted upstream as
well; it applies above the CARGO_PKG_* block 0012 adds. revision bumped
accordingly.

Also confirms 0002 subsumes the niche-enum alignment fix I had been carrying
locally: protobuf's ReflectValueRef, the type that needed it, now compiles with
no sizeof_assert failures.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant