Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Put bundled steamworks sdk behind feature #34

Closed
tbillington opened this issue Feb 24, 2024 · 4 comments
Closed

Put bundled steamworks sdk behind feature #34

tbillington opened this issue Feb 24, 2024 · 4 comments

Comments

@tbillington
Copy link

The bundling of the steamworks dynamic libraries with releases is very convenient, however it should be possible to opt-out if the user so chooses.

My suggestion would be a bundled feature that is on by default, but could be disabled through the use of "no default features" in Cargo.toml.

Reasons users may opt-out

Supply chain best practice

There's no "easy" way to verify the library files are the originals from Valve. Made especially difficult because they are not included in the repository, understandably.

Users should be able to provide the libraries themselves for full certainty they're legitimate.

Patch updates without relying on bevy_steamworks

Users can update the steamworks dynamic libs if they're semver compliant on their own without requiring an upstream patch by bevy_steamworks.


Prior art in bundling binary libraries: Rusqlite (sqlite).

@tbillington
Copy link
Author

Another option, though I don't know how preferable this is, is either a build.rs step or shell script in the repo that would fetch from the official steamworks servers eg (https://partner.steamgames.com/downloads/steamworks_sdk_159.zip) and unpack the libraries locally.

That could be a separate feature ("download_sdk"?) that users could use in addition to disabling "bundled" to automate the process of acquiring the steamworks sdk.

@james7132
Copy link
Member

james7132 commented Feb 24, 2024

This is probably something worth filing an issue with steamworks-rs. This crate/repo is merely an integration between it and Bevy.

With that said, steamworks-sys uses bindgen, which adds additional build requirements (i.e. Clang) to building new bindings from scratch, and those bindings may or may not be compatible with the version of steamworks if Valve makes any breaking changes.

@tbillington
Copy link
Author

Makes sense, I've opened an issue upstream Noxime/steamworks-rs#160.

@james7132
Copy link
Member

If or when the feature is upstream, we'll mirror it in this integration crate. Closing this out for now.

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

No branches or pull requests

2 participants