# # 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)