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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.