From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 618B61FF164 for <inbox@lore.proxmox.com>; Fri, 28 Mar 2025 18:12:25 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 0F5947FA9; Fri, 28 Mar 2025 18:12:17 +0100 (CET) From: Max Carrara <m.carrara@proxmox.com> To: pve-devel@lists.proxmox.com Date: Fri, 28 Mar 2025 18:12:09 +0100 Message-Id: <20250328171209.503132-2-m.carrara@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250328171209.503132-1-m.carrara@proxmox.com> References: <20250328171209.503132-1-m.carrara@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.027 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_SHORT 0.001 Use of a URL Shortener for very short URL PROLO_LEO1 0.1 Meta Catches all Leo drug variations so far SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [RFC v1 pve-storage 2/2] (rfc) example: sshfs plugin: package SSHFSPlugin.pm X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> Note that the Makefile this commit adds currently isn't being called by the top-level one in the repository root. This is because I'm not 100% sure on how to structure this yet. Since third-party developers will most likely package their plugin as well, a separate debian/ directory seems sensible. It contains only what's required for the custom plugin, thus mimicking what someone would do in a dedicated repository. At the same time, it would be more convenient for us to just have it within the rest of the tree, building from the same source as for libpve-storage-perl. Because I wanted to get some early impressions on this, everything is built in the example/sshfs-plugin directory. Signed-off-by: Max Carrara <m.carrara@proxmox.com> --- example/sshfs-plugin/Makefile | 71 +++++++++++++++++++++++ example/sshfs-plugin/debian/changelog | 5 ++ example/sshfs-plugin/debian/control | 22 +++++++ example/sshfs-plugin/debian/copyright | 21 +++++++ example/sshfs-plugin/debian/rules | 26 +++++++++ example/sshfs-plugin/debian/source/format | 1 + example/sshfs-plugin/debian/triggers | 1 + 7 files changed, 147 insertions(+) create mode 100644 example/sshfs-plugin/Makefile create mode 100644 example/sshfs-plugin/debian/changelog create mode 100644 example/sshfs-plugin/debian/control create mode 100644 example/sshfs-plugin/debian/copyright create mode 100755 example/sshfs-plugin/debian/rules create mode 100644 example/sshfs-plugin/debian/source/format create mode 100644 example/sshfs-plugin/debian/triggers diff --git a/example/sshfs-plugin/Makefile b/example/sshfs-plugin/Makefile new file mode 100644 index 0000000..cbd0691 --- /dev/null +++ b/example/sshfs-plugin/Makefile @@ -0,0 +1,71 @@ +# Makes useful Debian-specific variables available +include /usr/share/dpkg/default.mk + +# --- Useful variables for convenience + +# Note that variables can be overridden, e.g. `make install DESTDIR='./foo'` +DESTDIR= +PACKAGE=pve-storage-sshfs-plugin + +BINDIR=${DESTDIR}/usr/bin +PERLLIBDIR=${DESTDIR}/usr/share/perl5 +MAN1DIR=${DESTDIR}/usr/share/man/man1 +MAN8DIR=${DESTDIR}/usr/share/man/man8 +CRONDAILYDIR=${DESTDIR}/etc/cron.daily +INITDBINDIR=${DESTDIR}/etc/init.d +SERVICEDIR=${DESTDIR}/lib/systemd/system +BASHCOMPLDIR=${DESTDIR}/usr/share/bash-completion/completions/ +ZSHCOMPLDIR=${DESTDIR}/usr/share/zsh/vendor-completions/ +HARADIR=${DESTDIR}/usr/share/cluster +DOCDIR=${DESTDIR}/usr/share/doc/${PACKAGE} +PODDIR=${DESTDIR}/usr/share/doc/${PACKAGE}/pod +USRSHARE=${DESTDIR}/usr/share/${PACKAGE} + +# Directory where our custom plugin has to go +PLUGINDIR=${PERLLIBDIR}/PVE/Storage/Custom + +export VERSION = $(DEB_VERSION_UPSTREAM_REVISION) + +BUILDDIR = $(PACKAGE)-$(DEB_VERSION_UPSTREAM) + +DSC=$(PACKAGE)_$(DEB_VERSION).dsc +DEB=$(PACKAGE)_$(DEB_VERSION)_$(DEB_HOST_ARCH).deb + +# --- Targets + +$(BUILDDIR): + rm -rf $@ $@.tmp + mkdir $@.tmp + rsync -a * $@.tmp + # You can add additional commands instead of this comment if you need to + # e.g. create additional files inside the build directory etc. + mv $@.tmp $@ + +# Creates a .deb package for installation +.PHONY: deb +deb: $(DEB) +$(DEB): $(BUILDDIR) + cd $(BUILDDIR); dpkg-buildpackage -b -us -uc + lintian $(DEB) + +# Creates a .dsc (Debian source) package +.PHONY: dsc +dsc: + rm -rf $(BUILDDIR) $(DSC) + $(MAKE) $(DSC) + lintian $(DSC) + +$(DSC): $(BUILDDIR) + cd $(BUILDDIR); dpkg-buildpackage -S -us -uc -d + +# Target used to place files and directories at expected locations, with expected permissions +.PHONY: install +install: + install -D -m 0644 lib/PVE/Storage/Custom/SSHFSPlugin.pm $(PLUGINDIR)/SSHFSPlugin.pm + +# Used to clean up your builds +.PHONY: clean +clean: + rm -f $(PACKAGE)*.tar* *.deb *.dsc *.build *.buildinfo *.changes + rm -rf dest $(PACKAGE)-[0-9]*/ + diff --git a/example/sshfs-plugin/debian/changelog b/example/sshfs-plugin/debian/changelog new file mode 100644 index 0000000..ad4df86 --- /dev/null +++ b/example/sshfs-plugin/debian/changelog @@ -0,0 +1,5 @@ +pve-storage-sshfs-plugin (1.0.0) UNRELEASED; urgency=medium + + * Initial release. + + -- Proxmox Support Team <support@proxmox.com> Thu, 27 Oct 2025 12:23:58 +0100 diff --git a/example/sshfs-plugin/debian/control b/example/sshfs-plugin/debian/control new file mode 100644 index 0000000..5732cd6 --- /dev/null +++ b/example/sshfs-plugin/debian/control @@ -0,0 +1,22 @@ +Source: pve-storage-sshfs-plugin +Section: perl +Priority: optional +Maintainer: Proxmox Support Team <support@proxmox.com> +Rules-Requires-Root: no +Build-Depends: + debhelper-compat (= 13), + libpve-storage-perl (>= 8.3.3), + lintian, + perl, + rsync, +Standards-Version: 4.6.2 + +Package: pve-storage-sshfs-plugin +Architecture: any +Depends: + ${misc:Depends}, + ${perl:Depends}, + libpve-storage-perl (>= 8.3.3), + sshfs (>= 3.7.3), +Description: SSHFS storage plugin for Proxmox Virtual Environment. + Used to demonstrate plugin development. diff --git a/example/sshfs-plugin/debian/copyright b/example/sshfs-plugin/debian/copyright new file mode 100644 index 0000000..c26ed02 --- /dev/null +++ b/example/sshfs-plugin/debian/copyright @@ -0,0 +1,21 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Source: https://git.proxmox.com/?p=pve-storage.git + +Files: + * +Copyright: + 2025 Proxmox Server Solutions GmbH <support@proxmox.com> +License: AGPL-3.0+ + 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 <http://www.gnu.org/licenses/>. + diff --git a/example/sshfs-plugin/debian/rules b/example/sshfs-plugin/debian/rules new file mode 100755 index 0000000..f1d1d25 --- /dev/null +++ b/example/sshfs-plugin/debian/rules @@ -0,0 +1,26 @@ +#!/usr/bin/make -f + +# See debhelper(7) (uncomment to enable). +# Output every command that modifies files on the build system. +#export DH_VERBOSE = 1 + + +# See FEATURE AREAS in dpkg-buildflags(1). +#export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +# See ENVIRONMENT in dpkg-buildflags(1). +# Package maintainers to append CFLAGS. +#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic +# Package maintainers to append LDFLAGS. +#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed + + +%: + dh $@ + + +# dh_make generated override targets. +# This is an example for Cmake (see <https://bugs.debian.org/641051>). +#override_dh_auto_configure: +# dh_auto_configure -- \ +# -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH) diff --git a/example/sshfs-plugin/debian/source/format b/example/sshfs-plugin/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/example/sshfs-plugin/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/example/sshfs-plugin/debian/triggers b/example/sshfs-plugin/debian/triggers new file mode 100644 index 0000000..59dd688 --- /dev/null +++ b/example/sshfs-plugin/debian/triggers @@ -0,0 +1 @@ +activate-noawait pve-api-updates -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel