Continue to work on packaging
This commit is contained in:
parent
0fe6e259ea
commit
8b557d45dd
@ -1,4 +1,7 @@
|
||||
FROM ubuntu:noble
|
||||
ARG DISTRO=ubuntu
|
||||
ARG RELEASE=noble
|
||||
|
||||
FROM ${DISTRO}:${RELEASE}
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
dpkg-dev \
|
||||
|
||||
15
Dockerfile.el7
Normal file
15
Dockerfile.el7
Normal file
@ -0,0 +1,15 @@
|
||||
# Dockerfile.rpm
|
||||
|
||||
ARG DISTRO=oraclelinux
|
||||
ARG RELEASE=7
|
||||
|
||||
FROM ${DISTRO}:${RELEASE}
|
||||
|
||||
RUN yum install -y \
|
||||
rpm-build \
|
||||
make \
|
||||
oracle-epel-release-el7 \
|
||||
&& yum clean all
|
||||
|
||||
WORKDIR /src
|
||||
CMD ["make", "package-rpm"]
|
||||
@ -1,5 +1,9 @@
|
||||
# Dockerfile.rpm
|
||||
FROM rockylinux:9
|
||||
|
||||
ARG DISTRO=rockylinux
|
||||
ARG RELEASE=9
|
||||
|
||||
FROM ${DISTRO}:${RELEASE}
|
||||
|
||||
RUN dnf install -y \
|
||||
rpm-build \
|
||||
|
||||
115
Makefile
115
Makefile
@ -8,8 +8,15 @@ RPM_IMAGE := rpm-package-builder
|
||||
|
||||
SCRIPT := src/$(PACKAGE_NAME).py
|
||||
|
||||
# Top-level targets
|
||||
.PHONY: all clean deb rpm test
|
||||
INSTALL_TEST_DEBIAN := 11
|
||||
INSTALL_TEST_REDHAT := 9
|
||||
INSTALL_TEST_UBUNTU := 24.04
|
||||
|
||||
##
|
||||
# These targets are the main ones to use for most things.
|
||||
##
|
||||
|
||||
.PHONY: all clean deb rpm test install install-tests
|
||||
|
||||
all: deb rpm
|
||||
|
||||
@ -18,6 +25,7 @@ deb:
|
||||
docker run --rm \
|
||||
-v .:/src:ro \
|
||||
-v ./$(BUILD_DIR)/deb:/output \
|
||||
--user $(shell id -u):$(shell i -g) \
|
||||
$(DEB_IMAGE)
|
||||
|
||||
rpm:
|
||||
@ -25,47 +33,21 @@ rpm:
|
||||
docker run --rm \
|
||||
-v .:/src:ro \
|
||||
-v ./$(BUILD_DIR)/rpm:/output \
|
||||
--user $(shell id -u):$(shell i -g) \
|
||||
$(RPM_IMAGE)
|
||||
|
||||
tgz:
|
||||
rm -rf $(BUILD_DIR)/tgz/root
|
||||
mkdir -p $(BUILD_DIR)/tgz/root
|
||||
$(MAKE) install DESTDIR=$(BUILD_DIR)/tgz/root
|
||||
tar -cz -f $(BUILD_DIR)/tgz/$(PACKAGE_NAME)-$(VERSION).tgz -C $(BUILD_DIR)/tgz/root .
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
|
||||
test:
|
||||
cd src ; python3 -m unittest
|
||||
|
||||
# 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)' \
|
||||
-bb /output/SPECS/$(PACKAGE_NAME).spec
|
||||
cp /output/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/local/bin
|
||||
@ -86,3 +68,66 @@ install:
|
||||
|
||||
# Install systemd unit files
|
||||
cp systemd/* $(DESTDIR)/lib/systemd/system/
|
||||
|
||||
install-tests: debian-install-test rocky-install-test ubuntu-install-test
|
||||
|
||||
debian-install-test:
|
||||
docker run --rm \
|
||||
-v ./$(BUILD_DIR)/deb:/output \
|
||||
debian:$(INSTALL_TEST_DEBIAN) \
|
||||
bash -c 'apt-get update && apt-get install -y /output/$(PACKAGE_NAME)_$(VERSION).deb'
|
||||
|
||||
rocky-install-test:
|
||||
docker run --rm \
|
||||
-v ./$(BUILD_DIR)/rpm:/output \
|
||||
rockylinux:$(INSTALL_TEST_REDHAT) \
|
||||
bash -c 'yum makecache && yum install -y /output/$(PACKAGE_NAME)-$(VERSION)-1.el$(INSTALL_TEST_REDHAT).noarch.rpm'
|
||||
|
||||
ubuntu-install-test:
|
||||
docker run --rm \
|
||||
-v ./$(BUILD_DIR)/deb:/output \
|
||||
ubuntu:$(INSTALL_TEST_UBUNTU) \
|
||||
bash -c 'apt-get update && apt-get install -y /output/$(PACKAGE_NAME)_$(VERSION).deb'
|
||||
|
||||
|
||||
##
|
||||
# Inside-container targets
|
||||
#
|
||||
# These targets are used inside containers. They expect the repo to be mounted
|
||||
# at /src and the package manager specific build directory to be mounted at
|
||||
# /output.
|
||||
##
|
||||
|
||||
.PHONY: package-deb package-rpm
|
||||
|
||||
# Debian package creation logic
|
||||
package-deb:
|
||||
$(MAKE) install DESTDIR=/output
|
||||
cp -r DEBIAN /output/
|
||||
dpkg-deb -Zgzip --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)' \
|
||||
-bb /output/SPECS/$(PACKAGE_NAME).spec
|
||||
cp /output/RPMS/noarch/*.rpm /output/
|
||||
|
||||
|
||||
##
|
||||
# Container targets
|
||||
#
|
||||
# These targets build the docker images used to create packages
|
||||
##
|
||||
|
||||
.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 .
|
||||
|
||||
@ -5,8 +5,8 @@ Summary: A bridge to sit between monitoring tools and PostgreSQL
|
||||
|
||||
License: MIT
|
||||
URL: https://www.commandprompt.com
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
|
||||
BuildArch: noarch
|
||||
Requires: python3, python3-psycopg2, systemd
|
||||
|
||||
%description
|
||||
|
||||
Loading…
Reference in New Issue
Block a user