VERSION := 0.13.0
BUILD_REV ?= $(shell git rev-parse --short HEAD)
BUILD_DATE ?= $(shell date +%s)
export BUILD_DATE
CARGO ?= cargo
APP := evebox
WEBAPP_SRCS := $(shell find webapp -type f | grep -v node_modules)
all: public evebox
clean:
rm -rf dist target resources/public
find . -name \*~ -exec rm -f {} \;
$(MAKE) -C webapp clean
.PHONY: dist rpm deb
resources/public/_done: $(WEBAPP_SRCS)
cd webapp && $(MAKE)
touch $@
public: resources/public/_done
CARGO_BUILD_ARGS :=
ifdef TARGET
CARGO_BUILD_ARGS += --target $(TARGET)
endif
evebox:
$(CARGO) build $(RELEASE) $(CARGO_BUILD_ARGS)
HOST_TARGET := $(shell rustc -Vv| awk '/^host/ { print $$2 }')
TARGET ?= $(HOST_TARGET)
OS := $(shell rustc --target $(TARGET) --print cfg | awk -F'"' '/target_os/ { print $$2 }')
ifeq ($(OS),windows)
APP_EXT := .exe
endif
ifneq ($(VERSION_SUFFIX),)
DIST_VERSION := latest
else
DIST_VERSION := $(VERSION)
endif
DIST_ARCH := $(shell rustc --target $(TARGET) --print cfg | \
awk -F'"' '/target_arch/ { print $$2 }' | \
sed -e 's/x86_64/x64/')
DIST_NAME ?= $(APP)-$(DIST_VERSION)-$(OS)-$(DIST_ARCH)
EVEBOX_BIN := target/$(TARGET)/release/$(APP)$(APP_EXT)
dist: DIST_DIR ?= dist/$(DIST_NAME)
dist: public
echo "Building $(DIST_NAME)..."
$(CARGO) build --release $(CARGO_BUILD_ARGS)
mkdir -p $(DIST_DIR)
cp $(EVEBOX_BIN) $(DIST_DIR)/
cp agent.yaml.example $(DIST_DIR)/
cp evebox.yaml.example $(DIST_DIR)/
cd dist && zip -r $(DIST_NAME).zip $(DIST_NAME)
deb: EPOCH := 1
ifneq ($(VERSION_SUFFIX),)
deb: TILDE := ~$(VERSION_SUFFIX)$(BUILD_DATE)
deb: OUTPUT := dist/evebox-latest-amd64.deb
else
deb: OUTPUT := dist/
endif
deb: STAGE_DIR := dist/_stage-deb
deb:
rm -rf $(STAGE_DIR) && mkdir -p $(STAGE_DIR)
install -m 0644 \
evebox.yaml.example \
agent.yaml.example \
deb/evebox.default \
deb/evebox.service \
deb/evebox-agent.service \
$(STAGE_DIR)
install -m 0755 $(EVEBOX_BIN) $(STAGE_DIR)
fpm --force -s dir \
-t deb \
-p $(OUTPUT) \
-n evebox \
--epoch $(EPOCH) \
-v $(VERSION)$(TILDE) \
--after-install=deb/after-install.sh \
--after-upgrade=deb/after-upgrade.sh \
--deb-no-default-config-files \
--config-files /etc/default/evebox \
$(STAGE_DIR)/evebox=/usr/bin/evebox \
$(STAGE_DIR)/evebox.yaml.example=/etc/evebox/evebox.yaml.example \
$(STAGE_DIR)/agent.yaml.example=/etc/evebox/agent.yaml.example \
$(STAGE_DIR)/evebox.default=/etc/default/evebox \
$(STAGE_DIR)/evebox.service=/lib/systemd/system/evebox.service \
$(STAGE_DIR)/evebox-agent.service=/lib/systemd/system/evebox-agent.service
rm -rf $(STAGE_DIR)
ar p dist/*.deb data.tar.gz | tar ztvf -
ifneq ($(VERSION_SUFFIX),)
rpm: RPM_ITERATION := 0.$(VERSION_SUFFIX)$(BUILD_DATE)
rpm: OUTPUT := dist/evebox-latest-x86_64.rpm
else
rpm: RPM_ITERATION := 1
rpm: OUTPUT := dist/
endif
rpm:
fpm --force -s dir \
-t rpm \
-p $(OUTPUT) \
-n evebox \
-v $(VERSION) \
--iteration $(RPM_ITERATION) \
--before-install=rpm/before-install.sh \
--after-upgrade=rpm/after-upgrade.sh \
--config-files /etc/sysconfig/evebox \
--rpm-attr 0644,root,root:/lib/systemd/system/evebox.service \
--rpm-attr 0644,root,root:/lib/systemd/system/evebox-agent.service \
--rpm-attr 0755,root,root:/usr/bin/evebox \
--rpm-attr 0644,root,root:/etc/evebox/evebox.yaml.example \
--rpm-attr 0644,root,root:/etc/evebox/agent.yaml.example \
--rpm-attr 0644,root,root:/etc/sysconfig/evebox.service \
${EVEBOX_BIN}=/usr/bin/evebox \
evebox.yaml.example=/etc/evebox/evebox.yaml.example \
agent.yaml.example=/etc/evebox/agent.yaml.example \
rpm/evebox.sysconfig=/etc/sysconfig/evebox \
rpm/evebox.service=/lib/systemd/system/evebox.service \
rpm/evebox-agent.service=/lib/systemd/system/evebox-agent.service