On Wed Jun 26, 2024 at 2:15 PM CEST, Stefan Hanreich wrote: > Since we now have a standalone repository for Proxmox VE related > crates, add the required files for packaging the crates contained in > this repository. > > Signed-off-by: Stefan Hanreich <s.hanre...@proxmox.com> > --- > .cargo/config.toml | 5 ++ > .gitignore | 8 +++ > Cargo.toml | 17 +++++++ > Makefile | 69 ++++++++++++++++++++++++++ > build.sh | 35 +++++++++++++ > bump.sh | 44 ++++++++++++++++ > proxmox-ve-config/Cargo.toml | 16 +++--- > proxmox-ve-config/debian/changelog | 5 ++ > proxmox-ve-config/debian/control | 43 ++++++++++++++++ > proxmox-ve-config/debian/copyright | 19 +++++++ > proxmox-ve-config/debian/debcargo.toml | 4 ++ > 11 files changed, 255 insertions(+), 10 deletions(-) > create mode 100644 .cargo/config.toml > create mode 100644 .gitignore > create mode 100644 Cargo.toml > create mode 100644 Makefile > create mode 100755 build.sh > create mode 100755 bump.sh > create mode 100644 proxmox-ve-config/debian/changelog > create mode 100644 proxmox-ve-config/debian/control > create mode 100644 proxmox-ve-config/debian/copyright > create mode 100644 proxmox-ve-config/debian/debcargo.toml > > diff --git a/.cargo/config.toml b/.cargo/config.toml > new file mode 100644 > index 0000000..3b5b6e4 > --- /dev/null > +++ b/.cargo/config.toml > @@ -0,0 +1,5 @@ > +[source] > +[source.debian-packages] > +directory = "/usr/share/cargo/registry" > +[source.crates-io] > +replace-with = "debian-packages" > diff --git a/.gitignore b/.gitignore > new file mode 100644 > index 0000000..d72b68b > --- /dev/null > +++ b/.gitignore > @@ -0,0 +1,8 @@ > +/target > +/*/target > +Cargo.lock > +**/*.rs.bk > +/*.buildinfo > +/*.changes > +/build > +/*-deb > diff --git a/Cargo.toml b/Cargo.toml > new file mode 100644 > index 0000000..ab23d89 > --- /dev/null > +++ b/Cargo.toml > @@ -0,0 +1,17 @@ > +[workspace] > +members = [ > + "proxmox-ve-config", > +] > +exclude = [ > + "build", > +] > +resolver = "2" > + > +[workspace.package] > +authors = ["Proxmox Support Team <supp...@proxmox.com>"] > +edition = "2021" > +license = "AGPL-3" > +homepage = "https://proxmox.com" > +exclude = [ "debian" ] > +rust-version = "1.70" > + > diff --git a/Makefile b/Makefile > new file mode 100644 > index 0000000..0da9b74 > --- /dev/null > +++ b/Makefile > @@ -0,0 +1,69 @@ > +# Shortcut for common operations: > + > +CRATES != echo proxmox-*/Cargo.toml | sed -e 's|/Cargo.toml||g' > + > +# By default we just run checks: > +.PHONY: all > +all: check > + > +.PHONY: deb > +deb: $(foreach c,$(CRATES), $c-deb) > + echo $(foreach c,$(CRATES), $c-deb) > + lintian build/*.deb > + > +.PHONY: dsc > +dsc: $(foreach c,$(CRATES), $c-dsc) > + echo $(foreach c,$(CRATES), $c-dsc) > + lintian build/*.dsc > + > +.PHONY: autopkgtest > +autopkgtest: $(foreach c,$(CRATES), $c-autopkgtest) > + > +.PHONY: dinstall > +dinstall: > + $(MAKE) clean > + $(MAKE) deb > + sudo -k dpkg -i build/librust-*.deb > + > +%-deb: > + ./build.sh $* > + touch $@ > + > +%-dsc: > + BUILDCMD='dpkg-buildpackage -S -us -uc -d' ./build.sh $* > + touch $@ > + > +%-autopkgtest: > + autopkgtest build/$* build/*.deb -- null > + touch $@ > + > +.PHONY: check > +check: > + cargo test > + > +# Prints a diff between the current code and the one rustfmt would produce > +.PHONY: fmt > +fmt: > + cargo +nightly fmt -- --check > + > +# Doc without dependencies > +.PHONY: doc > +doc: > + cargo doc --no-deps > + > +.PHONY: clean > +clean: > + cargo clean > + rm -rf build/ > + rm -f -- *-deb *-dsc *-autopkgtest *.build *.buildinfo *.changes > + > +.PHONY: update > +update: > + cargo update > + > +%-upload: %-deb > + cd build; \ > + dcmd --deb rust-$*_*.changes \ > + | grep -v '.changes$$' \ > + | tar -cf "$@.tar" -T-; \ > + cat "$@.tar" | ssh -X repo...@repo.proxmox.com upload --product > devel --dist bookworm > diff --git a/build.sh b/build.sh > new file mode 100755 > index 0000000..39a8302 > --- /dev/null > +++ b/build.sh > @@ -0,0 +1,35 @@ > +#!/bin/sh > + > +set -eux > + > +export CARGO=/usr/bin/cargo > +export RUSTC=/usr/bin/rustc > + > +CRATE=$1 > +BUILDCMD=${BUILDCMD:-"dpkg-buildpackage -b -uc -us"} > + > +mkdir -p build > +echo system >build/rust-toolchain > +rm -rf "build/${CRATE}" > + > +CONTROL="$PWD/${CRATE}/debian/control" > + > +if [ -e "$CONTROL" ]; then > + # check but only warn, debcargo fails anyway if crates are missing > + dpkg-checkbuilddeps $PWD/${CRATE}/debian/control || true > + # rm -f "$PWD/${CRATE}/debian/control" > +fi > + > +debcargo package \ > + --config "$PWD/${CRATE}/debian/debcargo.toml" \ > + --changelog-ready \ > + --no-overlay-write-back \ > + --directory "$PWD/build/${CRATE}" \ > + "${CRATE}" \ > + "$(dpkg-parsechangelog -l "${CRATE}/debian/changelog" -SVersion | sed -e > 's/-.*//')" > + > +cd "build/${CRATE}" > +rm -f debian/source/format.debcargo.hint > +${BUILDCMD} > + > +cp debian/control "$CONTROL" > diff --git a/bump.sh b/bump.sh > new file mode 100755 > index 0000000..08ad119 > --- /dev/null > +++ b/bump.sh > @@ -0,0 +1,44 @@ > +#!/bin/bash > + > +package=$1 > + > +if [[ -z "$package" ]]; then > + echo "USAGE:" > + echo -e "\t bump.sh <crate> [patch|minor|major|<version>]" > + echo "" > + echo "Defaults to bumping patch version by 1" > + exit 0 > +fi > + > +cargo_set_version="$(command -v cargo-set-version)" > +if [[ -z "$cargo_set_version" || ! -x "$cargo_set_version" ]]; then > + echo 'bump.sh requires "cargo set-version", provided by "cargo-edit".' > + exit 1 > +fi > + > +if [[ ! -e "$package/Cargo.toml" ]]; then > + echo "Invalid crate '$package'" > + exit 1 > +fi > + > +version=$2 > +if [[ -z "$version" ]]; then > + version="patch" > +fi > + > +case "$version" in > + patch|minor|major) > + bump="--bump" > + ;; > + *) > + bump= > + ;; > +esac > + > +cargo_toml="$package/Cargo.toml" > +changelog="$package/debian/changelog" > + > +cargo set-version -p "$package" $bump "$version" > +version="$(cargo metadata --format-version=1 | jq ".packages[] | > select(.name == \"$package\").version" | sed -e 's/\"//g')" > +DEBFULLNAME="Proxmox Support Team" DEBEMAIL="supp...@proxmox.com" dch > --no-conf --changelog "$changelog" --newversion "$version-1" --distribution > stable > +git commit --edit -sm "bump $package to $version-1" Cargo.toml "$cargo_toml" > "$changelog" > diff --git a/proxmox-ve-config/Cargo.toml b/proxmox-ve-config/Cargo.toml > index cc689c8..ab8a7a0 100644 > --- a/proxmox-ve-config/Cargo.toml > +++ b/proxmox-ve-config/Cargo.toml > @@ -1,14 +1,10 @@ > [package] > name = "proxmox-ve-config" > version = "0.1.0" > -edition = "2021" > -authors = [ > - "Wolfgang Bumiller <w.bumil...@proxmox.com>", > - "Stefan Hanreich <s.hanre...@proxmox.com>", > - "Proxmox Support Team <supp...@proxmox.com>", > -] > -description = "Proxmox VE config parsing" > -license = "AGPL-3" > +authors.workspace = true > +edition.workspace = true > +license.workspace = true > +exclude.workspace = true > > [dependencies] > log = "0.4" > @@ -20,6 +16,6 @@ serde_json = "1" > serde_plain = "1" > serde_with = "2.3.3" > > -proxmox-schema = "3.1.0" > -proxmox-sys = "0.5.3" > +proxmox-schema = "3.1.1" > +proxmox-sys = "0.5.8" > proxmox-sortable-macro = "0.1.3"
I know it's been a while, but proxmox-sys and serde_with both need a bump, so leaving this here for your convenience: serde_with = "3.8.1" proxmox-sys = "0.6.2" > diff --git a/proxmox-ve-config/debian/changelog > b/proxmox-ve-config/debian/changelog > new file mode 100644 > index 0000000..0dfd399 > --- /dev/null > +++ b/proxmox-ve-config/debian/changelog > @@ -0,0 +1,5 @@ > +proxmox-ve-config (0.1.0) UNRELEASED; urgency=medium > + > + * Initial release. > + > + -- Proxmox Support Team <supp...@proxmox.com> Mon, 03 Jun 2024 10:51:11 > +0200 > diff --git a/proxmox-ve-config/debian/control > b/proxmox-ve-config/debian/control > new file mode 100644 > index 0000000..97f5e54 > --- /dev/null > +++ b/proxmox-ve-config/debian/control > @@ -0,0 +1,43 @@ > +Source: proxmox-ve-config > +Section: rust > +Priority: optional > +Maintainer: Proxmox Support Team <supp...@proxmox.com> > +Build-Depends: cargo:native, > + librust-anyhow-1+default-dev, > + librust-log-0.4+default-dev (>= 0.4.17-~~), > + librust-nix-0.26+default-dev (>= 0.26.1-~~), > + librust-proxmox-schema-3+default-dev, > + librust-proxmox-sortable-macro-dev, > + librust-proxmox-sys-dev, > + librust-serde-1+default-dev, > + librust-serde-1+derive-dev, > + librust-serde-json-1+default-dev, > + librust-serde-plain-1+default-dev, > + librust-serde-with+default-dev, > + libstd-rust-dev, > + netbase, > + python3, > + rustc:native, > +Standards-Version: 4.6.2 > +Homepage: https://www.proxmox.com > + > +Package: librust-proxmox-ve-config-dev > +Architecture: any > +Multi-Arch: same > +Depends: > + ${misc:Depends}, > + librust-anyhow-1+default-dev, > + librust-log-0.4+default-dev (>= 0.4.17-~~), > + librust-nix-0.26+default-dev (>= 0.26.1-~~), > + librust-proxmox-schema-3+default-dev, > + librust-proxmox-sortable-macro-dev, > + librust-proxmox-sys-dev, > + librust-serde-1+default-dev, > + librust-serde-1+derive-dev, > + librust-serde-json-1+default-dev, > + librust-serde-plain-1+default-dev, > + librust-serde-with+default-dev, > + libstd-rust-dev, > +Description: Proxmox's nftables-based firewall written in rust > + This package contains a nftables-based implementation of the Proxmox VE > + Firewall > diff --git a/proxmox-ve-config/debian/copyright > b/proxmox-ve-config/debian/copyright > new file mode 100644 > index 0000000..2d3374f > --- /dev/null > +++ b/proxmox-ve-config/debian/copyright > @@ -0,0 +1,19 @@ > +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ > + > +Files: > + * > +Copyright: 2019 - 2024 Proxmox Server Solutions GmbH <supp...@proxmox.com> > +License: AGPL-3.0-or-later > + This program is free software: you can redistribute it and/or modify it > under > + the terms of the GNU Affero General Public License as published by the Free > + Software Foundation, either version 3 of the License, or (at your option) > any > + later version. > + . > + This program is distributed in the hope that it will be useful, but WITHOUT > + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > FITNESS > + FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more > + details. > + . > + You should have received a copy of the GNU Affero General Public License > along > + with this program. If not, see <https://www.gnu.org/licenses/>. > + > diff --git a/proxmox-ve-config/debian/debcargo.toml > b/proxmox-ve-config/debian/debcargo.toml > new file mode 100644 > index 0000000..27510eb > --- /dev/null > +++ b/proxmox-ve-config/debian/debcargo.toml > @@ -0,0 +1,4 @@ > +overlay = "." > +crate_src_path = ".." > +maintainer = "Proxmox Support Team <supp...@proxmox.com>" > + _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel