...
1OBJDIR ?= $(shell pwd)/bin
2DESTDIR ?= /usr/local/bin
3ARCHIVEDIR ?= /tmp
4
5VERSION ?= 1.0.0
6EPOCH ?= 1
7MAINTAINER ?= "Community"
8
9CMDS = $(shell find ./cmd -maxdepth 1 -mindepth 1 -type d | grep -v testdata)
10CMD_BASENAMES = $(shell echo $(CMDS) | xargs -n1 basename)
11CMD_BINS = $(addprefix bin/, $(CMD_BASENAMES) )
12OBJECTS = $(CMD_BINS)
13
14# Build environment variables (referencing core/util.go)
15COMMIT_ID = $(shell git rev-parse --short=8 HEAD)
16
17BUILD_ID = $(shell git symbolic-ref --short=8 HEAD 2>/dev/null) +$(COMMIT_ID)
18BUILD_ID_VAR = github.com/letsencrypt/boulder/core.BuildID
19
20BUILD_HOST = $(shell whoami)@$(shell hostname)
21BUILD_HOST_VAR = github.com/letsencrypt/boulder/core.BuildHost
22
23BUILD_TIME = $(shell date -u)
24BUILD_TIME_VAR = github.com/letsencrypt/boulder/core.BuildTime
25
26GO_BUILD_FLAGS = -ldflags "-X \"$(BUILD_ID_VAR)=$(BUILD_ID)\" -X \"$(BUILD_TIME_VAR)=$(BUILD_TIME)\" -X \"$(BUILD_HOST_VAR)=$(BUILD_HOST)\""
27
28.PHONY: all build build_cmds rpm deb tar
29all: build
30
31build: $(OBJECTS)
32
33$(OBJDIR):
34 @mkdir -p $(OBJDIR)
35
36$(CMD_BINS): build_cmds
37
38build_cmds: | $(OBJDIR)
39 echo $(OBJECTS)
40 GOBIN=$(OBJDIR) GO111MODULE=on go install -mod=vendor $(GO_BUILD_FLAGS) ./...
41 ./link.sh
42
43# Building an RPM requires `fpm` from https://github.com/jordansissel/fpm
44# which you can install with `gem install fpm`.
45# It is recommended that maintainers use environment overrides to specify
46# Version and Epoch, such as:
47#
48# VERSION=0.1.9 EPOCH=52 MAINTAINER="$(whoami)" ARCHIVEDIR=/tmp make build rpm
49rpm: build
50 fpm -f -s dir -t rpm --rpm-digest sha256 --name "boulder" \
51 --license "Mozilla Public License v2.0" --vendor "ISRG" \
52 --url "https://github.com/letsencrypt/boulder" --prefix=/opt/boulder \
53 --version "$(VERSION)" --iteration "$(COMMIT_ID)" --epoch "$(EPOCH)" \
54 --package "$(ARCHIVEDIR)/boulder-$(VERSION)-$(COMMIT_ID).x86_64.rpm" \
55 --description "Boulder is an ACME-compatible X.509 Certificate Authority" \
56 --maintainer "$(MAINTAINER)" \
57 test/config/ sa/db data/ $(OBJECTS)
58
59deb: build
60 fpm -f -s dir -t deb --name "boulder" \
61 --license "Mozilla Public License v2.0" --vendor "ISRG" \
62 --url "https://github.com/letsencrypt/boulder" --prefix=/opt/boulder \
63 --version "$(VERSION)" --iteration "$(COMMIT_ID)" --epoch "$(EPOCH)" \
64 --package "$(ARCHIVEDIR)/boulder-$(VERSION)-$(COMMIT_ID).x86_64.deb" \
65 --description "Boulder is an ACME-compatible X.509 Certificate Authority" \
66 --maintainer "$(MAINTAINER)" \
67 test/config/ sa/db data/ $(OBJECTS) bin/ct-test-srv
68
69tar: build
70 fpm -f -s dir -t tar --name "boulder" --prefix=/opt/boulder \
71 --package "$(ARCHIVEDIR)/boulder-$(VERSION)-$(COMMIT_ID).amd64.tar" \
72 test/config/ sa/db data/ $(OBJECTS)
73 gzip -f "$(ARCHIVEDIR)/boulder-$(VERSION)-$(COMMIT_ID).amd64.tar"
View as plain text