-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
90 lines (77 loc) · 3.29 KB
/
Makefile
File metadata and controls
90 lines (77 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# Variables
DESTDIR ?= $(PWD)/bin
BINARY_NAME ?= aztui
VERSION ?= 0.0.1
RELEASE ?= 1
ARCH ?= $(shell uname -m)
RPMBUILD_DIR ?= $(PWD)/rpmbuild
TARBALL ?= $(BINARY_NAME)-$(VERSION).tar.gz
SRC_DIR ?= $(PWD)/src
# Directories
BINDIR ?= /usr/bin
SPECDIR ?= $(RPMBUILD_DIR)/SPECS
SOURCEDIR ?= $(RPMBUILD_DIR)/SOURCES
BUILDDIR ?= $(RPMBUILD_DIR)/BUILD
# Runtime
AZTUI_CONFIG_PATH ?= $(PWD)/conf/default.yaml
$(DESTDIR):
mkdir -p $(DESTDIR)
$(DESTDIR)/$(BINARY_NAME): $(DESTDIR) $(shell find . -name "*.go")
cd $(SRC_DIR) && \
go build -o $(DESTDIR)/$(BINARY_NAME) cmd/main.go && \
cd ..
clean:
rm -rf $(DESTDIR)
run:
cd $(SRC_DIR) && \
AZTUI_CONFIG_PATH=$(AZTUI_CONFIG_PATH) go run cmd/main.go && \
cd ..
all: $(DESTDIR)/$(BINARY_NAME)
# RPM target (binary RPM)
rpm: prepare_rpm_structure
# Build the binary from source
rpmbuild --define "_topdir $(RPMBUILD_DIR)" -bb $(SPECDIR)/$(BINARY_NAME).spec
# Source RPM target
srpm: prepare_rpm_structure tarball
# Copy tarball to SOURCEDIR
cp $(TARBALL) $(SOURCEDIR)/
# Build the source RPM
rpmbuild --define "_topdir $(RPMBUILD_DIR)" -bs $(SPECDIR)/$(BINARY_NAME).spec
# Create tarball for source RPM
tarball:
@mkdir -p $(SOURCEDIR)
# Create source tarball including current directory (SRC_DIR)
tar czf $(SOURCEDIR)/$(TARBALL) --transform "s,^,$(BINARY_NAME)-$(VERSION)/," -C $(SRC_DIR) .
# Prepare RPM directories and .spec file
prepare_rpm_structure: tarball
@mkdir -p $(SPECDIR) $(SOURCEDIR) $(BUILDDIR)
# Create SPEC file using echo to avoid any target pattern issues
@echo "Name: $(BINARY_NAME)" > $(SPECDIR)/$(BINARY_NAME).spec
@echo "Version: $(VERSION)" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "Release: $(RELEASE)" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "Summary: A text UI for managing Azure resources" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "License: Apache2" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "URL: http://github.com/brendank310/aztui" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "Source0: $(TARBALL)" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "BuildArch: $(ARCH)" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "%description" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "A text UI for managing Azure resources." >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "%prep" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "%setup -q" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "%build" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "go build -o $(BINARY_NAME) $(SRC_DIR)/cmd/main.go" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "%install" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "install -D -m 0755 $(BINARY_NAME) %{buildroot}$(BINDIR)/$(BINARY_NAME)" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "%files" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "$(BINDIR)/$(BINARY_NAME)" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "%changelog" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "* $(shell date +"%a %b %d %Y") Brendan Kerrigan <bkerrig1@binghamton.edu> - $(VERSION)-$(RELEASE)" >> $(SPECDIR)/$(BINARY_NAME).spec
@echo "- Initial package" >> $(SPECDIR)/$(BINARY_NAME).spec
format:
gofmt -s -w ./src/