diff --git a/.gitignore b/.gitignore index c155004c..d75f1ee2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ miniflux-* miniflux -*.rpm \ No newline at end of file +*.rpm +*.deb diff --git a/Makefile b/Makefile index bac90089..9ca469c9 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,7 @@ BUILD_DATE := `date +%FT%T%z` LD_FLAGS := "-s -w -X 'miniflux.app/version.Version=$(VERSION)' -X 'miniflux.app/version.Commit=$(COMMIT)' -X 'miniflux.app/version.BuildDate=$(BUILD_DATE)'" PKG_LIST := $(shell go list ./... | grep -v /vendor/) DB_URL := postgres://postgres:postgres@localhost/miniflux_test?sslmode=disable +DEB_IMG_ARCH := amd64 export PGPASSWORD := postgres @@ -35,7 +36,9 @@ export PGPASSWORD := postgres clean-integration-test \ docker-image \ docker-images \ - rpm + rpm \ + debian \ + debian-packages generate: @ go generate @@ -95,7 +98,7 @@ run: generate @ LOG_DATE_TIME=1 go run main.go -debug clean: - @ rm -f $(APP)-* $(APP) $(APP)*.rpm + @ rm -f $(APP)-* $(APP) $(APP)*.rpm $(APP)*.deb test: go test -cover -race -count=1 ./... @@ -135,5 +138,19 @@ rpm: clean -f packaging/rpm/Dockerfile \ . @ docker run --rm \ - -v ${PWD}:/root/rpmbuild/RPMS/x86_64/ miniflux-rpm-builder \ + -v ${PWD}:/root/rpmbuild/RPMS/x86_64 miniflux-rpm-builder \ rpmbuild -bb --define "_miniflux_version $(VERSION)" /root/rpmbuild/SPECS/miniflux.spec + +debian: + @ docker build \ + --build-arg BASE_IMAGE_ARCH=$(DEB_IMG_ARCH) \ + -t $(DEB_IMG_ARCH)/miniflux-deb-builder \ + -f packaging/debian/Dockerfile \ + . + @ docker run --rm \ + -v ${PWD}:/pkg $(DEB_IMG_ARCH)/miniflux-deb-builder + +debian-packages: clean + $(MAKE) debian DEB_IMG_ARCH=amd64 + $(MAKE) debian DEB_IMG_ARCH=arm64v8 + $(MAKE) debian DEB_IMG_ARCH=arm32v7 diff --git a/packaging/debian/Dockerfile b/packaging/debian/Dockerfile new file mode 100644 index 00000000..6b42696b --- /dev/null +++ b/packaging/debian/Dockerfile @@ -0,0 +1,13 @@ +ARG BASE_IMAGE_ARCH="amd64" + +FROM ${BASE_IMAGE_ARCH}/golang:buster AS build + +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get update -q && \ + apt-get install -y -qq build-essential devscripts dh-make dh-systemd && \ + mkdir -p /build/debian + +ADD . /src + +CMD ["/src/packaging/debian/build.sh"] diff --git a/packaging/debian/build.sh b/packaging/debian/build.sh new file mode 100755 index 00000000..00940b59 --- /dev/null +++ b/packaging/debian/build.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +PKG_ARCH=`dpkg --print-architecture` +PKG_DATE=`date -R` +PKG_VERSION=`cd /src && git describe --abbrev=0` + +echo "PKG_VERSION=$PKG_VERSION" +echo "PKG_ARCH=$PKG_ARCH" +echo "PKG_DATE=$PKG_DATE" + +cd /src && \ + make miniflux && \ + mkdir -p /build/debian && \ + cd /build && \ + cp /src/miniflux /build/ && \ + cp /src/miniflux.1 /build/ && \ + cp /src/LICENSE /build/ && \ + cp /src/packaging/miniflux.conf /build/ && \ + cp /src/packaging/systemd/miniflux.service /build/debian/ && \ + cp /src/packaging/debian/compat /build/debian/compat && \ + cp /src/packaging/debian/copyright /build/debian/copyright && \ + cp /src/packaging/debian/miniflux.manpages /build/debian/miniflux.manpages && \ + cp /src/packaging/debian/rules /build/debian/rules && \ + echo "miniflux ($PKG_VERSION) experimental; urgency=low" > /build/debian/changelog && \ + echo " * Miniflux version $PKG_VERSION" >> /build/debian/changelog && \ + echo " -- Frédéric Guillot $PKG_DATE" >> /build/debian/changelog && \ + sed "s/__PKG_ARCH__/${PKG_ARCH}/g" /src/packaging/debian/control > /build/debian/control && \ + dpkg-buildpackage -us -uc -b && \ + lintian --check --color always ../*.deb && \ + cp ../*.deb /pkg/ diff --git a/packaging/debian/compat b/packaging/debian/compat new file mode 100644 index 00000000..ec635144 --- /dev/null +++ b/packaging/debian/compat @@ -0,0 +1 @@ +9 diff --git a/packaging/debian/control b/packaging/debian/control new file mode 100644 index 00000000..e4e9a651 --- /dev/null +++ b/packaging/debian/control @@ -0,0 +1,12 @@ +Source: miniflux +Maintainer: Frédéric Guillot +Build-Depends: debhelper (>= 9), dh-systemd + +Package: miniflux +Architecture: __PKG_ARCH__ +Section: web +Priority: optional +Description: Minimalist Feed Reader + Miniflux is a minimalist and opinionated feed reader +Homepage: https://miniflux.app +Depends: ${misc:Depends}, ${shlibs:Depends}, adduser diff --git a/packaging/debian/copyright b/packaging/debian/copyright new file mode 100644 index 00000000..7fa0168b --- /dev/null +++ b/packaging/debian/copyright @@ -0,0 +1,3 @@ +Files: * +Copyright: 2017-2020 Frédéric Guillot +License: Apache \ No newline at end of file diff --git a/packaging/debian/miniflux.manpages b/packaging/debian/miniflux.manpages new file mode 100644 index 00000000..a202644b --- /dev/null +++ b/packaging/debian/miniflux.manpages @@ -0,0 +1 @@ +miniflux.1 \ No newline at end of file diff --git a/packaging/debian/miniflux.postinst b/packaging/debian/miniflux.postinst new file mode 100755 index 00000000..a0d1c329 --- /dev/null +++ b/packaging/debian/miniflux.postinst @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +case "$1" in + configure) + adduser --system --disabled-password --disabled-login --home /var/empty \ + --no-create-home --quiet --force-badname --group miniflux + ;; +esac + +#DEBHELPER# + +exit 0 diff --git a/packaging/debian/rules b/packaging/debian/rules new file mode 100755 index 00000000..f0845039 --- /dev/null +++ b/packaging/debian/rules @@ -0,0 +1,18 @@ +#!/usr/bin/make -f + +DESTDIR=debian/miniflux + +%: + dh $@ --with=systemd + +override_dh_auto_clean: +override_dh_auto_test: +override_dh_auto_build: +override_dh_auto_install: + mkdir -p $(DESTDIR)/etc + mkdir -p $(DESTDIR)/usr/bin + cp miniflux.conf $(DESTDIR)/etc/miniflux.conf + cp miniflux $(DESTDIR)/usr/bin/miniflux + +override_dh_installinit: + dh_installinit --noscripts