birdwatcher/Makefile

134 lines
2.7 KiB
Makefile

#
# Birdseye Makefile
#
PROG=birdwatcher
ARCH=amd64
APP_VERSION=$(shell cat VERSION)
VERSION=$(APP_VERSION)_$(shell git rev-parse --short HEAD)
BUILD_SERVER=''
SYSTEM_INIT=systemd
DIST=DIST/
REMOTE_DIST=$(PROG)-$(DIST)
RPM=$(PROG)-$(VERSION)-1.x86_64.rpm
LOCAL_RPMS=RPMS
# OS Detection
UNAME=$(shell uname)
ifeq ($(UNAME), Darwin)
TARGET=osx
endif
ifeq ($(UNAME), FreeBSD)
TARGET=freebsd
endif
ifeq ($(UNAME), Linux)
TARGET=linux
endif
ifneq ($(UNAME),$(filter $(UNAME),Darwin FreeBSD Linux))
$(error error: Unkown OS )
endif
LDFLAGS_STATIC=-ldflags="-extldflags '-static'"
all: $(TARGET)
@echo "Built $(VERSION) @ $(TARGET)"
osx:
GO111MODULE=on GOARCH=$(ARCH) GOOS=darwin go build -o $(PROG)-osx-$(ARCH)
linux:
GO111MODULE=on GOARCH=$(ARCH) GOOS=linux go build -o $(PROG)-linux-$(ARCH)
freebsd:
GO111MODULE=on GOARCH=$(ARCH) GOOS=freebsd go build -o $(PROG)-freebsd-$(ARCH)
linux_static:
CGO_ENABLED=0 GOOS=linux GOARCH=$(ARCH) \
go build $(CFLAGS) \
-a $(LDFLAGS_STATIC) \
-o $(PROG)-linux-$(ARCH)
build_server:
ifeq ($(BUILD_SERVER), '')
$(error BUILD_SERVER not configured)
endif
dist: clean linux
mkdir -p $(DIST)opt/birdwatcher/birdwatcher/bin
mkdir -p $(DIST)etc/birdwatcher
ifeq ($(SYSTEM_INIT), systemd)
# Installing systemd services
mkdir -p $(DIST)usr/lib/systemd/system/
cp install/systemd/* $(DIST)usr/lib/systemd/system/.
else
# Installing upstart configuration
mkdir -p $(DIST)/etc/init/
cp install/upstart/init/* $(DIST)etc/init/.
endif
# Copy config and startup script
cp etc/birdwatcher/* DIST/etc/birdwatcher/.
rm -f DIST/etc/birdwatcher/*.local.*
# Copy bin
cp $(PROG)-linux-$(ARCH) DIST/opt/birdwatcher/birdwatcher/bin/.
release: linux
mkdir -p ../birdseye-static/birdwatcher-builds/$(APP_VERSION)/
cp birdwatcher-linux-amd64 ../birdseye-static/birdwatcher-builds/$(APP_VERSION)/
rm -f ../birdseye-static/birdwatcher-builds/latest
cd ../birdseye-static/birdwatcher-builds && ln -s $(APP_VERSION) latest
rpm: dist
# Clear tmp failed build (if any)
mkdir -p $(LOCAL_RPMS)
# Create RPM from dist
fpm -s dir -t rpm -n $(PROG) -v $(VERSION) -C $(DIST) \
--config-files /etc/birdwatcher/birdwatcher.conf \
opt/ etc/
mv $(RPM) $(LOCAL_RPMS)
remote_rpm: build_server dist
mkdir -p $(LOCAL_RPMS)
# Copy distribution to build server
ssh $(BUILD_SERVER) -- rm -rf $(REMOTE_DIST)
scp -r $(DIST) $(BUILD_SERVER):$(REMOTE_DIST)
ssh $(BUILD_SERVER) -- fpm -s dir -t rpm -n $(PROG) -v $(VERSION) -C $(REMOTE_DIST) \
--config-files /etc/birdwatcher/birdwatcher.conf \
opt/ etc/
# Get rpm from server
scp $(BUILD_SERVER):$(RPM) $(LOCAL_RPMS)/.
.PHONY: test clean
test:
go test -v
cd endpoints/ && go test -v
cd bird/ && go test -v
clean:
rm -f $(PROG)-osx-$(ARCH)
rm -f $(PROG)-linux-$(ARCH)
rm -rf $(DIST)