Restructure for packaging
This commit is contained in:
parent
2ad9158cfe
commit
a21a4355e5
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,3 +7,4 @@ install-sh
|
|||||||
missing
|
missing
|
||||||
__pycache__
|
__pycache__
|
||||||
venv
|
venv
|
||||||
|
build
|
||||||
|
|||||||
9
DEBIAN/control
Normal file
9
DEBIAN/control
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
Package: pgmon
|
||||||
|
Version: 1.0
|
||||||
|
Section: utils
|
||||||
|
Priority: optional
|
||||||
|
Architecture: all
|
||||||
|
Depends: python3, python3-psycopg2, systemd
|
||||||
|
Maintainer: James Campbell <james@commandprompt.com>
|
||||||
|
Homepage: https://www.commandprompt.com
|
||||||
|
Description: A bridge to sit between monitoring tools and PostgreSQL
|
||||||
11
Dockerfile.deb
Normal file
11
Dockerfile.deb
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
FROM ubuntu:noble
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
dpkg-dev \
|
||||||
|
build-essential \
|
||||||
|
fakeroot \
|
||||||
|
make \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
WORKDIR /src
|
||||||
|
CMD ["make", "package-deb"]
|
||||||
10
Dockerfile.rpm
Normal file
10
Dockerfile.rpm
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Dockerfile.rpm
|
||||||
|
FROM rockylinux:9
|
||||||
|
|
||||||
|
RUN dnf install -y \
|
||||||
|
rpm-build \
|
||||||
|
make \
|
||||||
|
&& dnf clean all
|
||||||
|
|
||||||
|
WORKDIR /src
|
||||||
|
CMD ["make", "package-rpm"]
|
||||||
84
Makefile
Normal file
84
Makefile
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
PACKAGE_NAME := pgmon
|
||||||
|
VERSION := 1.0
|
||||||
|
BUILD_DIR := build
|
||||||
|
DEB_IMAGE := debian-package-builder
|
||||||
|
RPM_IMAGE := rpm-package-builder
|
||||||
|
|
||||||
|
SCRIPT := src/$(PACKAGE_NAME).py
|
||||||
|
|
||||||
|
# Top-level targets
|
||||||
|
.PHONY: all clean deb rpm
|
||||||
|
|
||||||
|
all: deb rpm
|
||||||
|
|
||||||
|
deb:
|
||||||
|
mkdir -p $(BUILD_DIR)/deb
|
||||||
|
docker run --rm \
|
||||||
|
-v .:/src:ro \
|
||||||
|
-v ./$(BUILD_DIR)/deb:/output \
|
||||||
|
$(DEB_IMAGE)
|
||||||
|
|
||||||
|
rpm:
|
||||||
|
mkdir -p $(BUILD_DIR)/rpm
|
||||||
|
docker run --rm \
|
||||||
|
-v .:/src:ro \
|
||||||
|
-v ./$(BUILD_DIR)/rpm:/output \
|
||||||
|
$(RPM_IMAGE)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf $(BUILD_DIR)
|
||||||
|
|
||||||
|
|
||||||
|
# Container targets
|
||||||
|
.PHONY: docker deb-package-image rpm-package-image
|
||||||
|
|
||||||
|
docker: deb-package-image rpm-package-image
|
||||||
|
|
||||||
|
deb-package-image: Dockerfile.deb
|
||||||
|
docker build -t $(DEB_IMAGE) -f Dockerfile.deb .
|
||||||
|
|
||||||
|
rpm-package-image: Dockerfile.rpm
|
||||||
|
docker build -t $(RPM_IMAGE) -f Dockerfile.rpm .
|
||||||
|
|
||||||
|
|
||||||
|
# Inside-container targets
|
||||||
|
.PHONY: package-deb package-rpm
|
||||||
|
|
||||||
|
# Debian package creation logic
|
||||||
|
package-deb:
|
||||||
|
$(MAKE) install DESTDIT=/output
|
||||||
|
cp -r DEBIAN /output/
|
||||||
|
dpkg-deb --build /output /output/$(PACKAGE_NAME)_$(VERSION).deb
|
||||||
|
|
||||||
|
# RPM package creation logic
|
||||||
|
package-rpm:
|
||||||
|
mkdir -p /output/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
||||||
|
cp RPM/$(PACKAGE_NAME).spec /output/SPECS/
|
||||||
|
rpmbuild --define '_topdir /output' \
|
||||||
|
--define 'version $(VERSION)' \
|
||||||
|
-ba /output/SPECS/$(PACKAGE_NAME).spec
|
||||||
|
cp /output/rpm/RPMS/x86_64/*.rpm /output/
|
||||||
|
|
||||||
|
# Install into the specified destination directory (used inside the packaging systems)
|
||||||
|
.PHONY: install
|
||||||
|
|
||||||
|
install:
|
||||||
|
# Set up directories
|
||||||
|
mkdir -p $(DESTDIR)/usr/bin
|
||||||
|
mkdir -p $(DESTDIR)/usr/share/man/man1
|
||||||
|
mkdir -p $(DESTDIR)/etc/$(PACKAGE_NAME)
|
||||||
|
mkdir -p $(DESTDIR)/lib/systemd/system
|
||||||
|
|
||||||
|
# Install script
|
||||||
|
cp script.py $(DESTDIR)/usr/bin/$(PACKAGE_NAME)
|
||||||
|
chmod 755 $(DESTDIR)/usr/bin/$(PACKAGE_NAME)
|
||||||
|
|
||||||
|
# Install manpage
|
||||||
|
cp manpages/* $(DESTDIR)/usr/share/man/man1/
|
||||||
|
gzip -9 $(DESTDIR)/usr/share/man/man1/$(PACKAGE_NAME).1
|
||||||
|
|
||||||
|
# Install sample config
|
||||||
|
cp sample-config/* $(DESTDIR)/etc/$(PACKAGE_NAME)/
|
||||||
|
|
||||||
|
# Install systemd unit files
|
||||||
|
cp systemd/* $(DESTDIR)/lib/systemd/system/
|
||||||
32
RPM/pgmon.spec
Normal file
32
RPM/pgmon.spec
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
Name: pgmon
|
||||||
|
Version: 1.0
|
||||||
|
Release: 1%{?dist}
|
||||||
|
Summary: A bridge to sit between monitoring tools and PostgreSQL
|
||||||
|
|
||||||
|
License: MIT
|
||||||
|
URL: https://www.commandprompt.com
|
||||||
|
Source0: %{name}-%{version}.tar.gz
|
||||||
|
|
||||||
|
Requires: python3, python3-psycopg2, systemd
|
||||||
|
|
||||||
|
%description
|
||||||
|
A bridge to sit between monitoring tools and PostgreSQL
|
||||||
|
|
||||||
|
%prep
|
||||||
|
|
||||||
|
%build
|
||||||
|
|
||||||
|
%install
|
||||||
|
make -C /src install DESTDIR=%{buildroot}
|
||||||
|
|
||||||
|
%files
|
||||||
|
/usr/local/bin/pgmon
|
||||||
|
/usr/share/man/man1/pgmon.1.gz
|
||||||
|
/etc/pgmon/pgmon.yml
|
||||||
|
/etc/pgmon/pgmon-metrics.yml
|
||||||
|
/lib/systemd/system/pgmon.service
|
||||||
|
/lib/systemd/system/pgmon@.service
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Wed Jan 08 2025 James Campbell <james@commandprompt.com> - 1.0-1
|
||||||
|
- Initial RPM release.
|
||||||
Loading…
Reference in New Issue
Block a user