Add .rpm and .tar.gz builds.

This commit is contained in:
Orne Brocaar 2022-04-23 20:47:39 +01:00
parent 54e1cb5e66
commit f5de67a817
9 changed files with 92 additions and 6 deletions

3
.gitignore vendored
View File

@ -5,7 +5,7 @@
*.log
# Binary packages
*.deb
/dist
# Rust target directory
**/target
@ -29,5 +29,4 @@
*.bb
# Exclude from gitignore
!/chirpstack/.rpm
!/.github

View File

@ -21,6 +21,7 @@ RUN apt-get update && \
clang \
yarnpkg \
golang-cfssl \
jq \
&& rm -rf /var/lib/apt/lists/*
RUN ln -s /usr/bin/yarnpkg /usr/bin/yarn

View File

@ -1,3 +1,5 @@
.PHONY: dist
# Builds a debug / development binary.
build-debug:
docker-compose run --rm chirpstack make debug
@ -6,9 +8,9 @@ build-debug:
build-release:
docker-compose run --rm chirpstack make release
# Builds a .deb release package.
build-release-deb:
docker-compose run --rm chirpstack make release-deb
# Build distributable binaries.
dist:
docker-compose run --rm chirpstack make dist
# Builds the UI.
build-ui:

View File

@ -119,3 +119,18 @@ depends = "$auto, golang-cfssl"
suggests = "postgresql, mosquitto, redis"
maintainer-scripts = "debian/"
systemd-units = { enable = true }
[package.metadata.rpm]
package = "chirpstack"
config = "rpm"
[package.metadata.rpm.files]
"configuration/" = { path = "/etc/chirpstack/" }
"chirpstack.service" = { path = "/lib/systemd/system/chirpstack.service" }
"chirpstack.env" = { path = "/etc/systemd/system/chirpstack.service.d/environment" }
[package.metadata.rpm.cargo]
buildflags = ["--release"]
[package.metadata.rpm.targets]
chirpstack = { path = "/usr/bin/chirpstack" }

View File

@ -1,4 +1,7 @@
.PHONY: debug release release-deb test test-server dbshell
.PHONY: debug release release-deb test test-server dbshell dist
TARGET_ARCH := $(shell rustc --print cfg |grep target_arch |sed 's/target_arch="\(.*\)"/\1/')
PKG_VERSION := $(shell cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].version')
debug:
cargo build
@ -6,8 +9,20 @@ debug:
release:
cargo build --release
dist: release-deb release-rpm release-targz
release-deb:
mkdir -p /chirpstack/dist/deb
cargo deb
cp /target/debian/*.deb /chirpstack/dist/deb
release-rpm:
mkdir -p /chirpstack/dist/rpm
cargo rpm build
find /target/release/rpmbuild/RPMS -type f -exec cp {} /chirpstack/dist/rpm \;
release-targz:
tar -czvf /chirpstack/dist/chirpstack_$(PKG_VERSION)_$(TARGET_ARCH).tar.gz -C /target/release chirpstack
test:
cargo fmt --check

View File

@ -0,0 +1,4 @@
[Service]
Environment="MQTT_BROKER_HOST=localhost"
Environment="POSTGRESQL_HOST=localhost"
Environment="REDIS_HOST=localhost"

View File

@ -0,0 +1,14 @@
[Unit]
Description=ChirpStack open-source LoRaWAN Network Server
Documentation=https://www.chirpstack.io/
Wants=network-online.target
After=network-online.target
[Service]
User=chirpstack
Group=chirpstack
ExecStart=/usr/bin/chirpstack -c /etc/chirpstack/
Restart=on-failure
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,35 @@
%define __spec_install_post %{nil}
%define __os_install_post %{_dbpath}/brp-compress
%define debug_package %{nil}
Name: chirpstack
Summary: ChirpStack is an open-source LoRaWAN(TM) Network Server
Version: @@VERSION@@
Release: @@RELEASE@@%{?dist}
License: MIT
Group: Applications/System
Source0: %{name}-%{version}.tar.gz
URL: https://www.chirpstack.io/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
%description
%{summary}
%prep
%setup -q
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}
cp -a * %{buildroot}
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%{_bindir}/*
/lib/systemd/system/chirpstack.service
%config /etc/chirpstack/*
%config /etc/systemd/system/chirpstack.service.d/*

View File

@ -0,0 +1 @@
../configuration