Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Patching wlroots-sys
Members
Links to what we did
Repository
Reflection & Contribution document
Pull request
Passing build
Proposal
Patch the crate wlroots-sys belonging to the deprecated wlroots-rs (rust bindings for wlroots) library to suit it for use in other projects directly.
A new crate would preferably be published on a separate GitHub repository, although a fork+merge request could also work. The original author would of course be given full credit regardless.
I think a new repo would be better since I only want to keep the wlroots-sys part of the repo.
Some suggestions for tangible changes to the crate:
Make sure that the automatic building work in an self-contained manner as much as possible
Update the library dependencies to the latest versions
Refactor deprecated function calls (such as 'bindgen::builder::whitelisted_type(...)')
Remove references to protocols that no longer exists (such as 'wlroots/protocol/screenshooter.xml')
Change it so that the building of the crate always is fully self-contained unless explicitly indicated by the user otherwise (maybe)
Add compilation messages to communicate what libraries must be installed if some dependency libraries are referenced dynamically
Make sure that the library's api is sound (exposing the correct data structures)
Add a README / documentation page
Motivation
The project was deprecated due to the author giving up on it. There is however interest in the the project (see stars on GitHub) since the project (including it's subcrates) is a useful resource for developing Wayland-compositors in the Rust-language. Patching wlroots-sys would make it possible to interface with the wl-roots c-library directly without dependencies to deprecated bindings.
Ties to DevOps
The project would involve the following:
Configure an automatic building script for the underlying C-library
Configuration of the packaging of the library
Making it as self-contained as possible (containerization)
Context
Rust: a programming language
Crate: A packaged library or binary in Rust
Wayland-compositor: ~a window manager (usually for Linux)
wlroots: A library written in C for developing Wayland-compositors
wlroots-rs: A deprecated library with Rust-bindings for Wlroots.
wlroots-sys: A deprecated library within wlroots-rs that offers auto-generation of "raw" bindings from C to Rust.
Project: wlroots-sys
A fork intended for standalone use of the wlroots-sys subcrate (that generates "raw" Rust bindings for wlroots via bindgen). This means that the development is contained only within the wlroots-sys directory. Note that this is not an attempt to revive wlroots-rs - hence the largely untouched repository root. The motivation for this fork is the benefit of being able to write Wayland-compositors based on wlroots in Rust without relying on outdated protocols, dependencies etc.... See below if you are interested in writing one yourself.
Changes
The following changes have been merged into master:
Usage
git clone https://github.com/perfah/wlroots-rs.git
cd wlroots-rs
git submodule update --init
cp ./wlroots-sys <path_to_your_project>/wlroots-sys
Include a crate dependency to your project's
cargo.toml
-file:Replace "..." with the optional dependencies you would like.
Dependencies
Required dependencies:
Optional dependencies (that can be added as features):
systemd
- support for logindelogind
- support for logind without systemd installedlibcap
- capabilities