diff --git a/.gitignore b/.gitignore index 0b42d2d..940ee54 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /target +/build diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2b7c4b7 --- /dev/null +++ b/Makefile @@ -0,0 +1,52 @@ +PACKAGE_NAME := fwa +VERSION := 1.0 +ARCH := armhf +BUILD_DIR := build +DEB_DIR := $(BUILD_DIR)/$(PACKAGE_NAME)-$(VERSION) +BIN_DIR := $(DEB_DIR)/usr/local/bin +SERVICE_DIR := $(DEB_DIR)/lib/systemd/system +CONFIG_DIR := $(DEB_DIR)/etc +PM3_DIR := $(DEB_DIR)/usr/share/pm3 + +.PHONY: all build clean package prepare_package binary + +all: build + +$(BUILD_DIR)/fwa: + cross build --release --target arm-unknown-linux-gnueabihf + cp ./target/arm-unknown-linux-gnueabihf/release/fw-anwesenheit $@ + +prepare_package: $(DEB_DIR)/DEBIAN $(BIN_DIR)/fwa + mkdir -p $(SERVICE_DIR) + cp ./service/fwa.service $(SERVICE_DIR)/ + cp ./service/fwa-fail.service $(SERVICE_DIR)/ + + mkdir -p $(CONFIG_DIR) + cp ./service/fwa.env $(CONFIG_DIR)/ + + mkdir -p $(PM3_DIR) + cp -r ./pre-compiled/* $(PM3_DIR)/ + + mkdir -p $(DEB_DIR)/var/lib/fwa/ + +$(BIN_DIR)/fwa: $(BUILD_DIR)/fwa + mkdir -p $(BIN_DIR) + cp $< $@ + +$(DEB_DIR)/DEBIAN: + mkdir -p $(DEB_DIR)/DEBIAN + echo "Package: $(PACKAGE_NAME)" > $(DEB_DIR)/DEBIAN/control + echo "Version: $(VERSION)" >> $(DEB_DIR)/DEBIAN/control + echo "Section: utils" >> $(DEB_DIR)/DEBIAN/control + echo "Priority: optional" >> $(DEB_DIR)/DEBIAN/control + echo "Architecture: $(ARCH)" >> $(DEB_DIR)/DEBIAN/control + echo "Depends: libc6 (>= 2.28)" >> $(DEB_DIR)/DEBIAN/control + echo "Maintainer: Niklas Kapelle " >> $(DEB_DIR)/DEBIAN/control + echo "Description: Feuerwehr anwesenheit" >> $(DEB_DIR)/DEBIAN/control + +package: prepare_package + dpkg-deb --build $(DEB_DIR) + +clean: + cargo clean + rm -rf $(BUILD_DIR) diff --git a/README.md b/README.md index 146ca20..72588b0 100644 --- a/README.md +++ b/README.md @@ -26,3 +26,7 @@ Systemd: The service is run as a systemd service. There are two service `fwa.service` and `fwa-fail.service`. They read their config from a env file located at `/etc/fwa.env`. See example [env file](service/fwa.env). + +# Building + +Run `make package` to create `.deb` file. [Cross](https://github.com/cross-rs/cross) is used for building the rust code. diff --git a/service/fwa.env b/service/fwa.env index b10338d..c85e0d3 100644 --- a/service/fwa.env +++ b/service/fwa.env @@ -1,4 +1,4 @@ -PM3_BIN=/usr/local/bin/pm3/pm3 +PM3_BIN=/usr/share/pm3/pm3 LOG_LEVEL=warn HOTSPOT_IDS=578B5DF2;c1532b57 HOTSPOT_SSID=fwa