From: Wolfgang Bumiller <w.bumiller@proxmox.com>
To: Hannes Laimer <h.laimer@proxmox.com>
Cc: pve-devel@lists.proxmox.com
Subject: Re: [PATCH pve-cluster 01/10] buildsys: add rust workspace under src/rust
Date: Fri, 25 Sep 2026 14:48:30 +0200 [thread overview]
Message-ID: <f2szdi6edvtquwuwu6qvoyptxv754t6752bx2p4kpqwcyclbqa@sht2yhw3tnkj> (raw)
In-Reply-To: <20260918144152.575163-2-h.laimer@proxmox.com>
On Fri, Sep 18, 2026 at 04:41:43PM +0200, Hannes Laimer wrote:
> Add a Cargo workspace under src/rust, next to the C and Perl trees, for
> the Rust code that goes into pmxcfs, a server crate and a small C ABI
> crate. Their dependencies resolve through the Debian cargo registry as
> pve-rs does, and cargo hooks into the src/Makefile recursion ahead of
> pmxcfs so a static library built here is linked into the daemon.
>
> Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
> ---
> .gitignore | 2 ++
> Makefile | 1 +
> debian/control | 16 +++++++++++++++-
> debian/rules | 16 ++++++++++++++++
> src/Makefile | 2 +-
> src/rust/.cargo/config.toml | 8 ++++++++
> src/rust/Cargo.toml | 22 ++++++++++++++++++++++
> src/rust/Makefile | 18 ++++++++++++++++++
> src/rust/pmxcfs-notify/Cargo.toml | 11 +++++++++++
> src/rust/pmxcfs-notify/src/lib.rs | 1 +
> src/rust/rustfmt.toml | 2 ++
> 11 files changed, 97 insertions(+), 2 deletions(-)
> create mode 100644 src/rust/.cargo/config.toml
> create mode 100644 src/rust/Cargo.toml
> create mode 100644 src/rust/Makefile
> create mode 100644 src/rust/pmxcfs-notify/Cargo.toml
> create mode 100644 src/rust/pmxcfs-notify/src/lib.rs
> create mode 100644 src/rust/rustfmt.toml
>
> diff --git a/.gitignore b/.gitignore
> index 84bb09a..bb6e54b 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -5,3 +5,5 @@
> /*.dsc
> /*.tar*
> /pve-cluster-*/
> +/src/rust/target/
> +/src/rust/Cargo.lock
> diff --git a/Makefile b/Makefile
> index 5fa96ab..3e1c5b9 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -23,6 +23,7 @@ tidy:
> $(BUILDDIR):
> rm -rf $@ $@.tmp
> cp -a src $@.tmp
> + rm -rf $@.tmp/rust/target $@.tmp/rust/Cargo.lock
> cp -a debian $@.tmp/
> echo "git clone git://git.proxmox.com/git/pve-cluster.git\\ngit checkout $(GITVERSION)" > $@.tmp/debian/SOURCE
> mv $@.tmp $@
> diff --git a/debian/control b/debian/control
> index 995e2d8..c3cb27a 100644
> --- a/debian/control
> +++ b/debian/control
> @@ -2,8 +2,10 @@ Source: pve-cluster
> Section: admin
> Priority: optional
> Maintainer: Proxmox Support Team <support@proxmox.com>
> -Build-Depends: check,
> +Build-Depends: cargo:native,
> + check,
> debhelper-compat (= 13),
> + dh-cargo (>= 25),
> libcmap-dev (>= 0.17.1),
> libcorosync-common-dev,
> libcpg-dev (>= 2.3.4),
> @@ -17,11 +19,23 @@ Build-Depends: check,
> libquorum-dev (>= 2.3.4),
> librrd-dev,
> librrds-perl,
> + librust-anyhow-1+default-dev,
> + librust-libc-0.2+default-dev,
> + librust-log-0.4+default-dev,
> + librust-nix-0.29+default-dev,
> + librust-nix-0.29+event-dev,
> + librust-nix-0.29+poll-dev,
> + librust-nix-0.29+socket-dev,
> + librust-serde-1+default-dev,
> + librust-serde-1+derive-dev,
> + librust-serde-json-1+default-dev,
> libsqlite3-dev,
> + libstd-rust-dev,
> libtest-mockmodule-perl,
> libuuid-perl,
> pve-doc-generator (>= 6.0-9~),
> rrdcached,
> + rustc:native (>= 1.88),
> sqlite3,
> Standards-Version: 4.6.2
>
> diff --git a/debian/rules b/debian/rules
> index 01efb49..0717d86 100755
> --- a/debian/rules
> +++ b/debian/rules
> @@ -1,12 +1,28 @@
> #!/usr/bin/make -f
> # -*- makefile -*-
>
> +include /usr/share/dpkg/pkg-info.mk
> +include /usr/share/rustc/architecture.mk
> +
> # Uncomment this to turn on verbose mode.
> #export DH_VERBOSE=1
>
> +CARGO=/usr/share/cargo/bin/cargo
> +
> +export CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
> +export DEB_HOST_RUST_TYPE DEB_HOST_GNU_TYPE
> +export CARGO_HOME = $(CURDIR)/debian/cargo_home
> +
> +export DEB_CARGO_CRATE=pmxcfs-notify_$(DEB_VERSION_UPSTREAM)
> +export DEB_CARGO_PACKAGE=pmxcfs-notify
> +
> %:
> dh $@
>
> +override_dh_auto_configure:
> + $(CARGO) prepare-debian $(CURDIR)/debian/cargo_registry --link-from-system
> + dh_auto_configure
> +
> override_dh_installinit:
>
> override_dh_missing:
> diff --git a/src/Makefile b/src/Makefile
> index 50dd6aa..ac78c89 100644
> --- a/src/Makefile
> +++ b/src/Makefile
> @@ -1,4 +1,4 @@
> -SUBDIRS := PVE pmxcfs test
> +SUBDIRS := PVE rust pmxcfs test
I don't think adding rust/ here this way is useful. pmxcfs can just
depend on it: `cargo build` writes out make-compatible dependency
information. I've played around a bit with including that on a local
branch if you want to take a look.
>
> export LD_LIBRARY_PATH+=$(CURDIR)/PVE
> export PERLLIB+=$(CURDIR)/PVE
> diff --git a/src/rust/.cargo/config.toml b/src/rust/.cargo/config.toml
> new file mode 100644
> index 0000000..7b442dc
> --- /dev/null
> +++ b/src/rust/.cargo/config.toml
> @@ -0,0 +1,8 @@
> +[source]
> +[source.debian-packages]
> +directory = "/usr/share/cargo/registry"
> +[source.crates-io]
> +replace-with = "debian-packages"
> +
> +[profile.release]
> +debug = true
> diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml
> new file mode 100644
> index 0000000..6de0ab8
> --- /dev/null
> +++ b/src/rust/Cargo.toml
> @@ -0,0 +1,22 @@
> +[workspace]
> +members = [
> + "pmxcfs-notify",
> +]
> +resolver = "3"
> +
> +[workspace.package]
> +authors = ["Proxmox Support Team <support@proxmox.com>"]
> +edition = "2024"
> +license = "AGPL-3"
> +homepage = "https://proxmox.com"
> +rust-version = "1.88"
> +
> +[workspace.dependencies]
> +anyhow = "1.0"
> +libc = "0.2"
> +log = "0.4"
> +nix = { version = "0.29", features = ["event", "poll", "socket"] }
> +serde = { version = "1.0", features = ["derive"] }
> +serde_json = "1.0"
> +
> +pmxcfs-notify = { path = "pmxcfs-notify" }
> diff --git a/src/rust/Makefile b/src/rust/Makefile
> new file mode 100644
> index 0000000..aba5cb9
> --- /dev/null
> +++ b/src/rust/Makefile
> @@ -0,0 +1,18 @@
> +all:
> + cargo build --release
In our other repos we use a `BUILD_MODE` and have that set
`CARGO_BUILD_ARGS`.
We also use $(CARGO) (with a `CARGO ?= cargo` line at the top) and have
d/rules `export` the CARGO variable (as well as BUILD_MODE).
(I included this change in the mentioned test branch.)
> +
> +.PHONY: check
> +check:
> + cargo test --release
> +
> +.PHONY: fmt
> +fmt:
> + cargo fmt
> +
> +.PHONY: install
> +install:
> +
> +.PHONY: clean
> +clean:
> + cargo clean
> + rm -f Cargo.lock
> diff --git a/src/rust/pmxcfs-notify/Cargo.toml b/src/rust/pmxcfs-notify/Cargo.toml
> new file mode 100644
> index 0000000..3de30b5
> --- /dev/null
> +++ b/src/rust/pmxcfs-notify/Cargo.toml
> @@ -0,0 +1,11 @@
> +[package]
> +name = "pmxcfs-notify"
> +version = "0.1.0"
> +description = "Change notification socket server for pmxcfs"
> +authors.workspace = true
> +edition.workspace = true
> +license.workspace = true
> +homepage.workspace = true
> +rust-version.workspace = true
> +
> +[dependencies]
> diff --git a/src/rust/pmxcfs-notify/src/lib.rs b/src/rust/pmxcfs-notify/src/lib.rs
> new file mode 100644
> index 0000000..8b13789
> --- /dev/null
> +++ b/src/rust/pmxcfs-notify/src/lib.rs
> @@ -0,0 +1 @@
> +
> diff --git a/src/rust/rustfmt.toml b/src/rust/rustfmt.toml
> new file mode 100644
> index 0000000..f3e454b
> --- /dev/null
> +++ b/src/rust/rustfmt.toml
> @@ -0,0 +1,2 @@
> +edition = "2024"
> +style_edition = "2024"
> --
> 2.47.3
>
>
>
>
>
--
next prev parent reply other threads:[~2026-09-25 12:48 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-18 14:41 [RFC cluster/manager 00/10] pmxcfs: add a change notification socket Hannes Laimer
2026-09-18 14:41 ` [PATCH pve-cluster 01/10] buildsys: add rust workspace under src/rust Hannes Laimer
2026-09-25 12:48 ` Wolfgang Bumiller [this message]
2026-09-18 14:41 ` [PATCH pve-cluster 02/10] rust: notify: add change notification socket server Hannes Laimer
2026-09-25 15:18 ` Wolfgang Bumiller
2026-09-18 14:41 ` [PATCH pve-cluster 03/10] rust: ffi: add C ABI staticlib for pmxcfs Hannes Laimer
2026-09-21 9:57 ` Robert Obkircher
2026-09-18 14:41 ` [PATCH pve-cluster 04/10] pmxcfs: memdb: add change notification hook Hannes Laimer
2026-09-18 14:41 ` [PATCH pve-cluster 05/10] buildsys: link pmxcfs against the rust notify staticlib Hannes Laimer
2026-09-18 14:41 ` [PATCH pve-cluster 06/10] pmxcfs: notify: emit change events over the notification socket Hannes Laimer
2026-09-18 14:41 ` [PATCH pve-cluster 07/10] cfs: add perl client for the change " Hannes Laimer
2026-09-18 14:41 ` [PATCH pve-cluster 08/10] cfs: add hook registry for change notification consumers Hannes Laimer
2026-09-18 14:41 ` [PATCH pve-manager 09/10] hooks: add runner executing cluster change hooks in children Hannes Laimer
2026-09-18 14:41 ` [PATCH pve-manager 10/10] pvescheduler: run cluster change hooks from a listener child Hannes Laimer
2026-09-25 12:01 ` [RFC cluster/manager 00/10] pmxcfs: add a change notification socket Wolfgang Bumiller
2026-09-25 12:18 ` Hannes Laimer
2026-09-25 12:38 ` Wolfgang Bumiller
2026-09-25 12:23 ` Hannes Laimer
2026-09-25 12:43 ` Wolfgang Bumiller
2026-09-25 12:48 ` Hannes Laimer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f2szdi6edvtquwuwu6qvoyptxv754t6752bx2p4kpqwcyclbqa@sht2yhw3tnkj \
--to=w.bumiller@proxmox.com \
--cc=h.laimer@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox