From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 676021FF168 for ; Tue, 12 Nov 2024 13:26:37 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A73671F262; Tue, 12 Nov 2024 13:26:11 +0100 (CET) From: Stefan Hanreich To: pve-devel@lists.proxmox.com Date: Tue, 12 Nov 2024 13:25:39 +0100 Message-Id: <20241112122602.88598-2-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20241112122602.88598-1-s.hanreich@proxmox.com> References: <20241112122602.88598-1-s.hanreich@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.254 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RDNS_NONE 0.793 Delivered to internal network by a host with no rDNS SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record Subject: [pve-devel] [PATCH proxmox-ve-rs v3 01/24] debian: add files for packaging X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" 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 --- .cargo/config.toml | 5 ++ .gitignore | 8 +++ Cargo.toml | 17 +++++++ Makefile | 69 ++++++++++++++++++++++++++ build.sh | 35 +++++++++++++ bump.sh | 44 ++++++++++++++++ proxmox-ve-config/Cargo.toml | 19 +++---- proxmox-ve-config/debian/changelog | 5 ++ proxmox-ve-config/debian/control | 46 +++++++++++++++++ proxmox-ve-config/debian/copyright | 19 +++++++ proxmox-ve-config/debian/debcargo.toml | 4 ++ 11 files changed, 260 insertions(+), 11 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..dc7f312 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,17 @@ +[workspace] +members = [ + "proxmox-ve-config", +] +exclude = [ + "build", +] +resolver = "2" + +[workspace.package] +authors = ["Proxmox Support Team "] +edition = "2021" +license = "AGPL-3" +homepage = "https://proxmox.com" +exclude = [ "debian" ] +rust-version = "1.82" + 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 repoman@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 [patch|minor|major|]" + 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="support@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..8639d7c 100644 --- a/proxmox-ve-config/Cargo.toml +++ b/proxmox-ve-config/Cargo.toml @@ -1,25 +1,22 @@ [package] name = "proxmox-ve-config" version = "0.1.0" -edition = "2021" -authors = [ - "Wolfgang Bumiller ", - "Stefan Hanreich ", - "Proxmox Support Team ", -] -description = "Proxmox VE config parsing" -license = "AGPL-3" +authors.workspace = true +edition.workspace = true +license.workspace = true +exclude.workspace = true [dependencies] log = "0.4" anyhow = "1" nix = "0.26" +thiserror = "1.0.59" serde = { version = "1", features = [ "derive" ] } serde_json = "1" serde_plain = "1" -serde_with = "2.3.3" +serde_with = "3" -proxmox-schema = "3.1.0" -proxmox-sys = "0.5.3" +proxmox-schema = "3.1.2" +proxmox-sys = "0.6.4" proxmox-sortable-macro = "0.1.3" 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 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..f5a9993 --- /dev/null +++ b/proxmox-ve-config/debian/control @@ -0,0 +1,46 @@ +Source: proxmox-ve-config +Section: rust +Priority: optional +Maintainer: Proxmox Support Team +Build-Depends: cargo:native, + debhelper-compat (= 13), + dh-sequence-cargo, + librust-anyhow-1+default-dev, + librust-log-0.4+default-dev (>= 0.4.17-~~), + librust-nix-0.26+default-dev (>= 0.26.1-~~), + librust-thiserror-dev (>= 1.0.59-~~), + 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 (>= 1.82), +Standards-Version: 4.7.0 +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-thiserror-dev (>= 1.0.59-~~), + 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: Library for reading and writing the configuration files of Proxmox + Virtual Enviroment. 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 +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 . + 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 " + -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel