forked from pydio/cells
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
150 lines (123 loc) · 4.56 KB
/
Copy pathMakefile
File metadata and controls
150 lines (123 loc) · 4.56 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
DEV_VERSION=5.0.3-dev
ENV=env GOOS=linux
TODAY:=$(shell date -u +%Y-%m-%dT%H:%M:%S)
TIMESTAMP:=$(shell date -u +%Y%m%d%H%M%S)
GITREV?=$(shell git rev-parse HEAD)
CELLS_VERSION?=${DEV_VERSION}.${TIMESTAMP}
GOBIN?=go
# Set FORCE_REBUILD=1 to pass -a and rebuild packages instead of reusing Go's build cache.
FORCE_REBUILD ?=
REBUILD_FLAGS := $(if $(FORCE_REBUILD),-a,)
GO_BUILD_FLAGS := $(REBUILD_FLAGS) -trimpath
.PHONY: all clean build main dev darwin arm win docker docker-image start ds licenses
GO_TOOLCHAIN := $(shell awk '/^toolchain/ {sub("go","",$$2); print $$2}' go.mod)
DOCKER_IMAGE ?= pydio/cells
DOCKER_TAG ?= $(CELLS_VERSION)
DOCKER_ENTRYPOINT_SRC_DIR ?= ./tools/docker/images/cells
## Historic Aliases
all: clean main
build: main
main: linux-amd64
darwin: darwin-arm64
arm64: linux-arm64
arm: linux-arm
win: windows-amd64
## Standard names
linux-amd64:
env CGO_ENABLED=0 ${GOBIN} build $(GO_BUILD_FLAGS)\
-ldflags "-X github.com/pydio/cells/v5/common.version=${CELLS_VERSION}\
-X github.com/pydio/cells/v5/common.BuildStamp=${TODAY}\
-X github.com/pydio/cells/v5/common.BuildRevision=${GITREV}"\
-o cells\
.
linux-arm64:
env CGO_ENABLED=0 GOOS=linux GOARCH=arm64 ${GOBIN} build $(GO_BUILD_FLAGS)\
-ldflags "-X github.com/pydio/cells/v5/common.version=${CELLS_VERSION}\
-X github.com/pydio/cells/v5/common.BuildStamp=${TODAY}\
-X github.com/pydio/cells/v5/common.BuildRevision=${GITREV}"\
-o cells\
.
linux-arm:
env CGO_ENABLED=0 GOOS=linux GOARM=7 GOARCH=arm ${GOBIN} build $(GO_BUILD_FLAGS)\
-ldflags "-X github.com/pydio/cells/v5/common.version=${CELLS_VERSION}\
-X github.com/pydio/cells/v5/common.BuildStamp=${TODAY}\
-X github.com/pydio/cells/v5/common.BuildRevision=${GITREV}"\
-o cells\
.
darwin-arm64:
env CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 ${GOBIN} build $(GO_BUILD_FLAGS)\
-ldflags "-X github.com/pydio/cells/v5/common.version=${CELLS_VERSION}\
-X github.com/pydio/cells/v5/common.BuildStamp=${TODAY}\
-X github.com/pydio/cells/v5/common.BuildRevision=${GITREV}"\
-o cells\
.
darwin-amd64:
env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 ${GOBIN} build $(GO_BUILD_FLAGS)\
-ldflags "-X github.com/pydio/cells/v5/common.version=${CELLS_VERSION}\
-X github.com/pydio/cells/v5/common.BuildStamp=${TODAY}\
-X github.com/pydio/cells/v5/common.BuildRevision=${GITREV}"\
-o cells\
.
windows-amd64:
env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ${GOBIN} build $(GO_BUILD_FLAGS)\
-ldflags "-X github.com/pydio/cells/v5/common.version=${CELLS_VERSION}\
-X github.com/pydio/cells/v5/common.BuildStamp=${TODAY}\
-X github.com/pydio/cells/v5/common.BuildRevision=${GITREV}"\
-o cells.exe\
.
dev:
env CGO_ENABLED=0 ${GOBIN} build\
-tags dev\
-gcflags "all=-N -l"\
-ldflags "-X github.com/pydio/cells/v5/common.version=${DEV_VERSION}\
-X github.com/pydio/cells/v5/common.BuildStamp=${TODAY}\
-X github.com/pydio/cells/v5/common.BuildRevision=dev\
-X github.com/pydio/cells/v5/common.LogFileDefaultValue=false\
-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"\
-o cells\
.
docker:
GOARCH=amd64 GOOS=linux ${GOBIN} build -trimpath\
-ldflags "-X github.com/pydio/cells/v5/common.version=${CELLS_VERSION}\
-X github.com/pydio/cells/v5/common.BuildStamp=${TODAY}\
-X github.com/pydio/cells/v5/common.BuildRevision=${GITREV}"\
-o cells-linux\
.
dockercp:
docker stop ${CONTAINER}; docker cp ./cells-linux ${CONTAINER}:/bin/cells; docker start ${CONTAINER}
docker-image-compile:
docker buildx build \
--build-arg BUILD_MODE=compile \
--build-arg GO_VERSION=$(GO_TOOLCHAIN) \
--build-arg VERSION=$(CELLS_VERSION) \
--build-arg GIT_REV=$(GITREV) \
--build-arg BUILD_STAMP=$(TODAY) \
--build-arg DOCKER_ENTRYPOINT_SRC_DIR=$(DOCKER_ENTRYPOINT_SRC_DIR) \
-f tools/docker/images/cells/buildx-dockerfile \
-t $(DOCKER_IMAGE):$(DOCKER_TAG) \
--load \
.
docker-image-local:
docker buildx build \
--build-arg BUILD_MODE=local \
--build-arg DOCKER_ENTRYPOINT_SRC_DIR=$(DOCKER_ENTRYPOINT_SRC_DIR) \
-f tools/docker/images/cells/buildx-dockerfile \
-t $(DOCKER_IMAGE):$(DOCKER_TAG) \
--load \
.
docker-image-download:
docker buildx build \
--build-arg BUILD_MODE=download \
--build-arg VERSION=$(CELLS_VERSION) \
--build-arg DOCKER_ENTRYPOINT_SRC_DIR=$(DOCKER_ENTRYPOINT_SRC_DIR) \
-f tools/docker/images/cells/buildx-dockerfile \
-t $(DOCKER_IMAGE):$(DOCKER_TAG) \
--load \
.
start:
./cells start
ds: dev start
licenses:
go-licenses report . --template ${GOPATH}/src/github.com/google/go-licenses/testdata/modules/hello01/licenses.tpl > DEPENDENCIES
clean:
rm -f cells cells-*