firewall: add files for debian packaging

Suggested-By: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
 [ TL: squash in various fixes and clean-ups ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Stefan Hanreich 2024-03-29 10:53:08 +01:00 committed by Thomas Lamprecht
parent 924905955a
commit 6734077b14
10 changed files with 188 additions and 0 deletions

3
.gitignore vendored
View File

@ -2,5 +2,8 @@
/Cargo.lock /Cargo.lock
proxmox-firewall-*/ proxmox-firewall-*/
*.deb *.deb
*.dsc
*.tar*
*.build
*.buildinfo *.buildinfo
*.changes *.changes

69
Makefile Normal file
View File

@ -0,0 +1,69 @@
include /usr/share/dpkg/default.mk
include defines.mk
PACKAGE=proxmox-firewall
BUILDDIR ?= $(PACKAGE)-$(DEB_VERSION_UPSTREAM)
CARGO ?= cargo
DEB=$(PACKAGE)_$(DEB_VERSION_UPSTREAM_REVISION)_$(DEB_HOST_ARCH).deb
DBG_DEB=$(PACKAGE)-dbgsym_$(DEB_VERSION_UPSTREAM_REVISION)_$(DEB_HOST_ARCH).deb
DSC=$(PACKAGE)_$(DEB_VERSION_UPSTREAM_REVISION).dsc
DEBS = $(DEB) $(DBG_DEB)
ifeq ($(BUILD_MODE), release)
CARGO_BUILD_ARGS += --release
COMPILEDIR := target/release
else
COMPILEDIR := target/debug
endif
all: cargo-build
.PHONY: cargo-build
cargo-build:
$(CARGO) build $(CARGO_BUILD_ARGS)
.PHONY: build
build: $(BUILDDIR)
$(BUILDDIR):
rm -rf $@ $@.tmp; mkdir $@.tmp
cp -a proxmox-firewall proxmox-nftables proxmox-ve-config debian Cargo.toml Makefile defines.mk $@.tmp/
mv $@.tmp $@
.PHONY: deb
deb: $(DEB)
$(HELPER_DEB) $(DBG_DEB) $(HELPER_DBG_DEB) $(DOC_DEB): $(DEB)
$(DEB): $(BUILDDIR)
cd $(BUILDDIR); dpkg-buildpackage -b -us -uc
lintian $(DEB) $(DOC_DEB) $(HELPER_DEB)
.PHONY: test
test:
$(CARGO) test
.PHONY: dsc
dsc:
rm -rf $(BUILDDIR) $(DSC)
$(MAKE) $(DSC)
lintian $(DSC)
$(DSC): $(BUILDDIR)
cd $(BUILDDIR); dpkg-buildpackage -S -us -uc -d
sbuild: $(DSC)
sbuild $<
.PHONY: dinstall
dinstall: $(DEB)
dpkg -i $(DEB) $(DBG_DEB) $(DOC_DEB)
.PHONY: distclean
distclean: clean
.PHONY: clean
clean:
$(CARGO) clean
rm -f *.deb *.build *.buildinfo *.changes *.dsc $(PACKAGE)*.tar*
rm -rf $(PACKAGE)-[0-9]*/
find . -name '*~' -exec rm {} ';'

5
debian/changelog vendored Normal file
View File

@ -0,0 +1,5 @@
proxmox-firewall (0.1.0) bookworm; urgency=medium
* Initial release.
-- Proxmox Support Team <support@proxmox.com> Thu, 18 Apr 2024 21:07:32 +0200

35
debian/control vendored Normal file
View File

@ -0,0 +1,35 @@
Source: proxmox-firewall
Section: admin
Priority: optional
Maintainer: Proxmox Support Team <support@proxmox.com>
Build-Depends: cargo:native,
debhelper-compat (= 13),
librust-anyhow-1+default-dev,
librust-env-logger-0.10+default-dev,
librust-libc-0.2+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,
librust-signal-hook-dev,
librust-thiserror-dev,
libstd-rust-dev,
netbase,
python3,
rustc:native,
Standards-Version: 4.6.2
Homepage: https://www.proxmox.com
Package: proxmox-firewall
Architecture: any
Conflicts: ulogd,
Depends: netbase, nftables, pve-firewall, ${misc:Depends}, ${shlibs:Depends},
Description: Proxmox's nftables-based firewall written in rust
This package contains a nftables-based implementation of the Proxmox VE
Firewall

16
debian/copyright vendored Normal file
View File

@ -0,0 +1,16 @@
Copyright (C) 2018-2024 Proxmox Server Solutions GmbH
This software is written by Proxmox Server Solutions GmbH <support@proxmox.com>
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/>.

1
debian/proxmox-firewall.install vendored Normal file
View File

@ -0,0 +1 @@
target/x86_64-unknown-linux-gnu/release/proxmox-firewall usr/libexec/proxmox

14
debian/proxmox-firewall.service vendored Normal file
View File

@ -0,0 +1,14 @@
[Unit]
Description=Proxmox nftables firewall
Wants=pve-cluster.service pvefw-logger.service
After=pvefw-logger.service pve-cluster.service network.target systemd-modules-load.service
[Service]
ExecStart=/usr/libexec/proxmox/proxmox-firewall
PIDFile=/run/proxmox-firewall.pid
Environment="RUST_LOG_STYLE=SYSTEMD"
Environment="RUST_LOG=warn"
[Install]
WantedBy=multi-user.target

31
debian/rules vendored Executable file
View File

@ -0,0 +1,31 @@
#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
# export DH_VERBOSE=1
include /usr/share/dpkg/pkg-info.mk
include /usr/share/rustc/architecture.mk
export BUILD_MODE=release
export CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
export DEB_HOST_RUST_TYPE DEB_HOST_GNU_TYPE
export CARGO=/usr/share/cargo/bin/cargo
export CARGO_HOME = $(CURDIR)/debian/cargo_home
export DEB_CARGO_CRATE=proxmox-firewall$(DEB_VERSION_UPSTREAM)
export DEB_CARGO_PACKAGE=proxmox-firewall
%:
dh $@
override_dh_auto_configure:
@perl -ne 'if (/^version\s*=\s*"(\d+(?:\.\d+)+)"/) { my $$v_cargo = $$1; my $$v_deb = "$(DEB_VERSION_UPSTREAM)"; \
die "ERROR: d/changelog <-> Cargo.toml version mismatch: $$v_cargo != $$v_deb\n" if $$v_cargo ne $$v_deb; exit(0); }' proxmox-firewall/Cargo.toml
$(CARGO) prepare-debian $(CURDIR)/debian/cargo_registry --link-from-system
dh_auto_configure
override_dh_installsystemd:
dh_installsystemd proxmox-firewall.service

1
debian/source/format vendored Normal file
View File

@ -0,0 +1 @@
3.0 (native)

13
defines.mk Normal file
View File

@ -0,0 +1,13 @@
PREFIX = /usr
BINDIR = $(PREFIX)/bin
SBINDIR = $(PREFIX)/sbin
LIBDIR = $(PREFIX)/lib
LIBEXECDIR = $(LIBDIR)
DATAROOTDIR = $(PREFIX)/share
MAN1DIR = $(PREFIX)/share/man/man1
MAN5DIR = $(PREFIX)/share/man/man5
SYSCONFDIR = /etc
# For local overrides
-include local.mak