2020-05-15 09:39:16 +00:00
|
|
|
PREFIX?="/tmp/crowdsec/"
|
|
|
|
CFG_PREFIX = $(PREFIX)"/etc/crowdsec/"
|
|
|
|
BIN_PREFIX = $(PREFIX)"/usr/local/bin/"
|
|
|
|
DATA_PREFIX = $(PREFIX)"/var/run/crowdsec/"
|
|
|
|
|
|
|
|
PLUGIN_FOLDER="./plugins"
|
|
|
|
PID_DIR = $(PREFIX)"/var/run/"
|
|
|
|
CROWDSEC_FOLDER = "./cmd/crowdsec"
|
|
|
|
CSCLI_FOLDER = "./cmd/crowdsec-cli/"
|
|
|
|
CROWDSEC_BIN = "crowdsec"
|
|
|
|
CSCLI_BIN = "cscli"
|
|
|
|
BUILD_CMD="build"
|
|
|
|
|
|
|
|
GOARCH=amd64
|
|
|
|
GOOS=linux
|
|
|
|
REQUIRE_GOVERSION="1.13"
|
|
|
|
|
|
|
|
|
|
|
|
#Current versioning information from env
|
2020-06-03 13:59:13 +00:00
|
|
|
export BUILD_VERSION="$(shell git for-each-ref --sort=-v:refname --count=1 --format '%(refname)' | cut -d '/' -f3)"
|
2020-05-15 09:39:16 +00:00
|
|
|
export BUILD_GOVERSION="$(shell go version | cut -d " " -f3 | sed -r 's/[go]+//g')"
|
|
|
|
export BUILD_CODENAME=$(shell cat RELEASE.json | jq -r .CodeName)
|
|
|
|
export BUILD_TIMESTAMP=$(shell date +%F"_"%T)
|
|
|
|
export BUILD_TAG="$(shell git rev-parse HEAD)"
|
|
|
|
export LD_OPTS=-ldflags "-X github.com/crowdsecurity/crowdsec/pkg/cwversion.Version=$(BUILD_VERSION) \
|
|
|
|
-X github.com/crowdsecurity/crowdsec/pkg/cwversion.BuildDate=$(BUILD_TIMESTAMP) \
|
|
|
|
-X github.com/crowdsecurity/crowdsec/pkg/cwversion.Codename=$(BUILD_CODENAME) \
|
|
|
|
-X github.com/crowdsecurity/crowdsec/pkg/cwversion.Tag=$(BUILD_TAG) \
|
|
|
|
-X github.com/crowdsecurity/crowdsec/pkg/cwversion.GoVersion=$(BUILD_GOVERSION)"
|
|
|
|
RELDIR = crowdsec-$(BUILD_VERSION)
|
|
|
|
|
|
|
|
all: clean test build
|
|
|
|
|
|
|
|
build: clean goversion crowdsec cscli
|
|
|
|
|
|
|
|
static: goversion crowdsec_static cscli_static
|
|
|
|
|
|
|
|
goversion:
|
|
|
|
CURRENT_GOVERSION="$(shell go version | cut -d " " -f3 | sed -r 's/[go]+//g')"
|
|
|
|
RESPECT_VERSION="$(shell echo "$(CURRENT_GOVERSION),$(REQUIRE_GOVERSION)" | tr ',' '\n' | sort -V)"
|
|
|
|
|
|
|
|
clean:
|
|
|
|
@make -C $(CROWDSEC_FOLDER) clean --no-print-directory
|
|
|
|
@make -C $(CSCLI_FOLDER) clean --no-print-directory
|
|
|
|
@rm -f $(CROWDSEC_BIN)
|
|
|
|
@rm -f $(CSCLI_BIN)
|
|
|
|
@rm -f *.log
|
|
|
|
|
|
|
|
cscli:
|
|
|
|
ifeq ($(lastword $(RESPECT_VERSION)), $(CURRENT_GOVERSION))
|
|
|
|
@make -C $(CSCLI_FOLDER) build --no-print-directory
|
|
|
|
else
|
|
|
|
@echo "Required golang version is $(REQUIRE_GOVERSION). The current one is $(CURRENT_GOVERSION). Exiting.."
|
|
|
|
@exit 1;
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
crowdsec:
|
|
|
|
ifeq ($(lastword $(RESPECT_VERSION)), $(CURRENT_GOVERSION))
|
|
|
|
@make -C $(CROWDSEC_FOLDER) build --no-print-directory
|
|
|
|
else
|
|
|
|
@echo "Required golang version is $(REQUIRE_GOVERSION). The current one is $(CURRENT_GOVERSION). Exiting.."
|
|
|
|
@exit 1;
|
|
|
|
endif
|
2020-05-27 10:37:04 +00:00
|
|
|
@bash ./scripts/build_plugins.sh
|
2020-05-15 09:39:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
cscli_static:
|
|
|
|
ifeq ($(lastword $(RESPECT_VERSION)), $(CURRENT_GOVERSION))
|
|
|
|
@make -C $(CSCLI_FOLDER) static --no-print-directory
|
|
|
|
else
|
|
|
|
@echo "Required golang version is $(REQUIRE_GOVERSION). The current one is $(CURRENT_GOVERSION). Exiting.."
|
|
|
|
@exit 1;
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
crowdsec_static:
|
|
|
|
ifeq ($(lastword $(RESPECT_VERSION)), $(CURRENT_GOVERSION))
|
|
|
|
@make -C $(CROWDSEC_FOLDER) static --no-print-directory
|
|
|
|
else
|
|
|
|
@echo "Required golang version is $(REQUIRE_GOVERSION). The current one is $(CURRENT_GOVERSION). Exiting.."
|
|
|
|
@exit 1;
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
#.PHONY: test
|
|
|
|
test:
|
|
|
|
ifeq ($(lastword $(RESPECT_VERSION)), $(CURRENT_GOVERSION))
|
|
|
|
@make -C $(CROWDSEC_FOLDER) test --no-print-directory
|
|
|
|
else
|
|
|
|
@echo "Required golang version is $(REQUIRE_GOVERSION). The current one is $(CURRENT_GOVERSION). Exiting.."
|
|
|
|
@exit 1;
|
|
|
|
endif
|
|
|
|
|
|
|
|
.PHONY: uninstall
|
|
|
|
uninstall:
|
|
|
|
@rm -rf "$(CFG_PREFIX)" || exit
|
|
|
|
@rm -rf "$(DATA_PREFIX)" || exit
|
|
|
|
@rm -rf "$(SYSTEMD_PATH_FILE)" || exit
|
|
|
|
|
|
|
|
.PHONY: check_release
|
|
|
|
check_release:
|
|
|
|
@if [ -d $(RELDIR) ]; then echo "$(RELDIR) already exists, abort" ; exit 1 ; fi
|
|
|
|
|
|
|
|
.PHONY:
|
|
|
|
release: check_release build
|
|
|
|
@echo Building Release to dir $(RELDIR)
|
|
|
|
@mkdir -p $(RELDIR)/cmd/crowdsec
|
|
|
|
@mkdir -p $(RELDIR)/cmd/crowdsec-cli
|
|
|
|
@cp $(CROWDSEC_FOLDER)/$(CROWDSEC_BIN) $(RELDIR)/cmd/crowdsec
|
|
|
|
@cp $(CSCLI_FOLDER)/$(CSCLI_BIN) $(RELDIR)/cmd/crowdsec-cli
|
|
|
|
@cp -R ./config/ $(RELDIR)
|
|
|
|
@cp -R ./data/ $(RELDIR)
|
|
|
|
@cp wizard.sh $(RELDIR)
|
|
|
|
@cp scripts/test_env.sh $(RELDIR)
|
|
|
|
@bash ./scripts/build_plugins.sh
|
|
|
|
@mkdir -p "$(RELDIR)/plugins/backend"
|
|
|
|
@find ./plugins -type f -name "*.so" -exec install -Dm 644 {} "$(RELDIR)/{}" \; || exiting
|
|
|
|
@tar cvzf crowdsec-release.tgz $(RELDIR)
|