diff --git a/SPECS/listmonk.spec b/SPECS/listmonk.spec new file mode 100644 index 0000000..6788873 --- /dev/null +++ b/SPECS/listmonk.spec @@ -0,0 +1,92 @@ +%global _hardened_build 1 +%define user listmonk +%define group listmonk +%define homedir /var/lib/listmonk/ +%define logdir /var/log/listmonk/ + +Name : listmonk +Version : 2.3.0 +Release : 1%{dist} +License : AGPLv3 +Summary : High performance, self-hosted, newsletter and mailing list manager with a modern dashboard. +URL : https://listmonk.app +Source0 : listmonk.service +BuildRequires: golang +BuildRequires: git + + +%description +listmonk is a standalone, self-hosted, newsletter and mailing list manager. +It is fast, feature-rich, and packed into a single binary. +It uses a PostgreSQL database as its data store. + + +%prep +%setup -T -q -c %{name}-%{version} +export GOPATH=`pwd` +mkdir -p go/src/github.com/knadh/ +cd go/src/github.com/knadh/ +git clone https://github.com/knadh/listmonk + + +%build +export GOPATH=`pwd` +cd go/src/github.com/knadh/listmonk/ +git checkout tags/v%{version} +export SHORTCOMMIT=$(git rev-parse --short HEAD) +export GO111MODULE=on +export CGO_ENABLED=0 +# frontend +export VUE_APP_VERSION="v%{version}" +pushd frontend +yarnpkg install +touch --no-create frontend/node_modules +yarnpkg build +popd +# backend +go build -v -trimpath -ldflags="-extldflags -s -w -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n') -X 'main.buildString="%{version}" - "${BUILDSTR}"' -X 'main.versionString="%{version}"' -X 'main.frontendDir=/usr/share/listmonk/theme/'" -o listmonk cmd/*.go + + +%install +install -p -D -m 0644 %{SOURCE0} %{buildroot}%{_unitdir}/%{name}.service +mkdir -p %{buildroot}/%{homedir}/ +install -p -D -m 0555 go/src/github.com/knadh/listmonk/listmonk %{buildroot}%{homedir}/listmonk +install -p -D -m 0644 go/src/github.com/knadh/listmonk/config.toml.sample %{buildroot}%{homedir}/config.toml +install -p -D -m 0644 go/src/github.com/knadh/listmonk/config.toml.sample %{buildroot}%{homedir}/config.toml.sample +cp -r go/src/github.com/knadh/listmonk/*.sql %{buildroot}%{homedir}/ +cp -r go/src/github.com/knadh/listmonk/static/ %{buildroot}%{homedir}/ +mkdir -p %{buildroot}%{_datadir}/%{name}/ +cp -r go/src/github.com/knadh/listmonk/frontend/dist/ %{buildroot}%{_datadir}/%{name}/theme/ +cp -r go/src/github.com/knadh/listmonk/i18n/ %{buildroot}%{_datadir}/%{name}/ + + +%pre +getent group %{group} > /dev/null || groupadd -r %{group} +getent passwd %{user} > /dev/null || useradd -r -d %{homedir} -g %{group} -s /bin/bash -c "%{name} user" %{user} +exit 0 + + +%post +%systemd_post %{name}.service + + +%preun +%systemd_preun %{name}.service + + +%postun +%systemd_postun %{name}.service + + +%files +%config(noreplace) %{homedir}/config.toml +%{homedir}/listmonk +%{homedir}/*.sql +%{homedir}/config.toml.sample +%{homedir}/static/ +%{_unitdir}/listmonk.service +%{_datadir}/%{name}/theme/ +%{_datadir}/%{name}/i18n/ + + +%changelog