Skip to content

Commit 6e9f6b2

Browse files
phlogistonjohnmergify[bot]
authored andcommitted
Makefile: replace swathes of makefile with use of hack/build-image
Signed-off-by: John Mulligan <[email protected]>
1 parent 45634e8 commit 6e9f6b2

File tree

1 file changed

+33
-188
lines changed

1 file changed

+33
-188
lines changed

Makefile

Lines changed: 33 additions & 188 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,14 @@ SELF = $(lastword $(MAKEFILE_LIST))
22
ROOT_DIR = $(realpath $(dir $(SELF)))
33

44
CONTAINER_CMD ?=
5-
ifeq ($(CONTAINER_CMD),)
6-
CONTAINER_CMD:=$(shell podman version >/dev/null 2>&1 && echo podman)
7-
endif
8-
ifeq ($(CONTAINER_CMD),)
9-
CONTAINER_CMD:=$(shell docker version >/dev/null 2>&1 && echo docker)
10-
endif
11-
# handle the case where podman is present but is (defaulting) to remote and is
12-
# not not functioning correctly. Example: mac platform but no 'podman machine'
13-
# vms are ready
14-
ifeq ($(CONTAINER_CMD),)
15-
CONTAINER_CMD:=$(shell podman --version >/dev/null 2>&1 && echo podman)
16-
ifneq ($(CONTAINER_CMD),)
17-
$(warning podman detected but 'podman version' failed. \
18-
this may mean your podman is set up for remote use, but is not working)
19-
endif
20-
endif
21-
22-
BUILD_CMD:=$(CONTAINER_CMD) build $(BUILD_OPTS)
23-
PUSH_CMD:=$(CONTAINER_CMD) push $(PUSH_OPTS)
245

256
ALT_BIN=$(CURDIR)/.bin
267
SHELLCHECK=$(shell command -v shellcheck || echo $(ALT_BIN)/shellcheck)
278
GITLINT=$(shell command -v gitlint || echo $(ALT_BIN)/gitlint)
289
YAMLLINT_CMD=$(shell command -v yamllint || echo $(ALT_BIN)/yamllint)
29-
COMMON_DIR:=images/common
10+
BUILD_IMAGE=$(ROOT_DIR)/hack/build-image --debug --without-repo-bases
11+
12+
3013
SERVER_DIR:=images/server
3114
AD_SERVER_DIR:=images/ad-server
3215
CLIENT_DIR:=images/client
@@ -47,72 +30,17 @@ AD_SERVER_SOURCES=\
4730
CLIENT_SRC_FILE=$(CLIENT_DIR)/Containerfile.$(SRC_OS_NAME)
4831
TOOLBOX_SRC_FILE=$(TOOLBOX_DIR)/Containerfile.$(SRC_OS_NAME)
4932

50-
5133
BUILDFILE_PREFIX=.build
52-
BUILDFILE_SERVER:=$(BUILDFILE_PREFIX).server
53-
BUILDFILE_NIGHTLY_SERVER:=$(BUILDFILE_PREFIX).nightly-server
54-
BUILDFILE_AD_SERVER:=$(BUILDFILE_PREFIX).ad-server
55-
BUILDFILE_NIGHTLY_AD_SERVER:=$(BUILDFILE_PREFIX).nightly-ad-server
56-
BUILDFILE_CLIENT:=$(BUILDFILE_PREFIX).client
57-
BUILDFILE_TOOLBOX:=$(BUILDFILE_PREFIX).toolbox
58-
OS_PREFIX=$(addsuffix -,$(OS_NAME))
59-
TAG=$(OS_PREFIX)latest
60-
NIGHTLY_TAG=$(OS_PREFIX)nightly
61-
62-
63-
SERVER_NAME=samba-server:$(TAG)
64-
NIGHTLY_SERVER_NAME=samba-server:$(NIGHTLY_TAG)
65-
AD_SERVER_NAME= samba-ad-server:$(TAG)
66-
NIGHTLY_AD_SERVER_NAME=samba-ad-server:$(NIGHTLY_TAG)
67-
CLIENT_NAME=samba-client:$(TAG)
68-
NIGHTLY_CLIENT_NAME=samba-client:$(NIGHTLY_TAG)
69-
TOOLBOX_NAME=samba-toolbox:$(TAG)
70-
NIGHTLY_TOOLBOX_NAME=samba-toolbox:$(NIGHTLY_TAG)
34+
BUILDFILE_SERVER=$(shell $(call _BUILD_KP,server,default,--print-buildfile))
35+
BUILDFILE_NIGHTLY_SERVER=$(shell $(call _BUILD_KP,server,nightly,--print-buildfile))
36+
BUILDFILE_AD_SERVER=$(shell $(call _BUILD_KP,ad-server,default,--print-buildfile))
37+
BUILDFILE_NIGHTLY_AD_SERVER=$(shell $(call _BUILD_KP,ad-server,nightly,--print-buildfile))
38+
BUILDFILE_CLIENT=$(shell $(call _BUILD_KP,client,default,--print-buildfile))
39+
BUILDFILE_TOOLBOX=$(shell $(call _BUILD_KP,toolbox,default,--print-buildfile))
7140

7241
REPO_BASE=quay.io/samba.org/
73-
SERVER_REPO_NAME=$(REPO_BASE)$(SERVER_NAME)
74-
NIGHTLY_SERVER_REPO_NAME=$(REPO_BASE)$(NIGHTLY_SERVER_NAME)
75-
AD_SERVER_REPO_NAME=$(REPO_BASE)$(AD_SERVER_NAME)
76-
NIGHTLY_AD_SERVER_REPO_NAME=$(REPO_BASE)$(NIGHTLY_AD_SERVER_NAME)
77-
CLIENT_REPO_NAME=$(REPO_BASE)$(CLIENT_NAME)
78-
NIGHTLY_CLIENT_REPO_NAME=$(REPO_BASE)$(NIGHTLY_CLIENT_NAME)
79-
TOOLBOX_REPO_NAME=$(REPO_BASE)$(TOOLBOX_NAME)
80-
NIGHTLY_TOOLBOX_REPO_NAME=$(REPO_BASE)$(NIGHTLY_TOOLBOX_NAME)
8142

82-
BUILDFILE_PREFIX=.build
83-
BUILDFILE_SERVER=$(BUILDFILE_PREFIX).$(OS_PREFIX)server
84-
BUILDFILE_NIGHTLY_SERVER=$(BUILDFILE_PREFIX).$(OS_PREFIX)nightly-server
85-
BUILDFILE_AD_SERVER=$(BUILDFILE_PREFIX).$(OS_PREFIX)ad-server
86-
BUILDFILE_NIGHTLY_AD_SERVER=$(BUILDFILE_PREFIX).$(OS_PREFIX)nightly-ad-server
87-
BUILDFILE_CLIENT=$(BUILDFILE_PREFIX).$(OS_PREFIX)client
88-
BUILDFILE_NIGHTLY_CLIENT=$(BUILDFILE_PREFIX).$(OS_PREFIX)nightly-client
89-
BUILDFILE_TOOLBOX=$(BUILDFILE_PREFIX).$(OS_PREFIX)toolbox
90-
BUILDFILE_NIGHTLY_TOOLBOX=$(BUILDFILE_PREFIX).$(OS_PREFIX)nightly-toolbox
91-
92-
HOST_ARCH:=$(shell arch)
93-
HOST_ARCH:=$(subst x86_64,amd64,$(HOST_ARCH))
94-
HOST_ARCH:=$(subst aarch64,arm64,$(HOST_ARCH))
95-
96-
# build_fqin is a function macro for building a "Fully Qualified Image Name".
97-
# Usage: $(call build_fqin,<base-name>,<pkg-source>,<os-name>,<arch>,[<extra>])
98-
# base-name: the last part of the repo name eg. 'samba-server'
99-
# pkg-source: source for samba packages (default or nightly)
100-
# os-name: base os name
101-
# arch: architecture of image (amd64, arm64, etc.)
102-
# extra: (optional) an additional unique suffix for the tag
103-
# typically meant for use by devs building custom images
104-
build_fqin=$(REPO_BASE)$(1):$(2)-$(3)-$(4)$(if $(5),-$(5))
105-
106-
# get_imagename is a function macro for getting only the base image name
107-
# without the tag part.
108-
# Usage: $(call get_imagename,<image-name>)
109-
get_imagename=$(firstword $(subst :, ,$1))
110-
111-
# get_pkgsource is a function macro that, given an images name returns
112-
# the name of the package source. Currently only understands the
113-
# difference between default (os packages) and nightly (SIT packages).
114-
# Usage: $(call, get_pkgsource,<image-name>)
115-
get_pkgsource=$(if $(findstring nightly,$1),nightly,default)
43+
_BUILD_KP=$(BUILD_IMAGE) $(if $(CONTAINER_CMD),--container-engine=$(CONTAINER_CMD)) $(BI_PREFIX_ARGS) --kind=$1 --package-source=$2 --distro-base=$(SRC_OS_NAME) --repo-base=$(REPO_BASE) $(if $(BUILD_ARCH),--arch=$(BUILD_ARCH)) $3
11644

11745

11846
arch_flag=$(strip $(if $(filter docker,$(CONTAINER_CMD)),\
@@ -128,34 +56,18 @@ build: build-server build-nightly-server build-ad-server build-client \
12856
.PHONY: debug-vars
12957
debug-vars:
13058
@echo OS_NAME: $(OS_NAME)
131-
@echo OS_PREFIX: $(OS_PREFIX)
13259
@echo TAG: $(TAG)
13360
@echo NIGHTLY_TAG: $(NIGHTLY_TAG)
13461
@echo SERVER_NAME: $(SERVER_NAME)
135-
@echo SERVER_REPO_NAME: $(SERVER_REPO_NAME)
136-
@echo NIGHTLY_SERVER_REPO_NAME: $(NIGHTLY_SERVER_REPO_NAME)
13762
@echo NIGHTLY_SERVER_NAME: $(NIGHTLY_SERVER_NAME)
13863
@echo AD_SERVER_NAME: $(AD_SERVER_NAME)
139-
@echo AD_SERVER_REPO_NAME: $(AD_SERVER_REPO_NAME)
140-
@echo NIGHTLY_AD_SERVER_NAME: $(NIGHTLY_AD_SERVER_NAME)
141-
@echo NIGHTLY_AD_SERVER_NAME: $(NIGHTLY_AD_SERVER_NAME)
142-
@echo NIGHTLY_AD_SERVER_REPO_NAME: $(NIGHTLY_AD_SERVER_REPO_NAME)
143-
@echo CLIENT_NAME: $(CLIENT_NAME)
144-
@echo CLIENT_REPO_NAME: $(CLIENT_REPO_NAME)
145-
@echo NIGHTLY_CLIENT_NAME: $(NIGHTLY_CLIENT_NAME)
146-
@echo NIGHTLY_CLIENT_REPO_NAME: $(NIGHTLY_CLIENT_REPO_NAME)
147-
@echo TOOLBOX_NAME: $(TOOLBOX_NAME)
148-
@echo TOOLBOX_REPO_NAME: $(TOOLBOX_REPO_NAME)
149-
@echo NIGHTLY_TOOLBOX_NAME: $(NIGHTLY_TOOLBOX_NAME)
150-
@echo NIGHTLY_TOOLBOX_REPO_NAME: $(NIGHTLY_TOOLBOX_REPO_NAME)
15164

15265
@echo BUILDFILE_SERVER: $(BUILDFILE_SERVER)
15366
@echo BUILDFILE_AD_SERVER: $(BUILDFILE_AD_SERVER)
15467
@echo BUILDFILE_NIGHTLY_AD_SERVER: $(BUILDFILE_iNIGHTLY_AD_SERVER)
15568
@echo BUILDFILE_NIGHTLY_SERVER: $(BUILDFILE_NIGHTLY_SERVER)
15669
@echo BUILDFILE_CLIENT: $(BUILDFILE_CLIENT)
15770
@echo BUILDFILE_TOOLBOX: $(BUILDFILE_TOOLBOX)
158-
@echo BUILDFILE_NIGHTLY_TOOLBOX: $(BUILDFILE_NIGHTLY_TOOLBOX)
15971

16072
@echo SERVER_SRC_FILE: $(SERVER_SRC_FILE)
16173
@echo AD_SERVER_SRC_FILE: $(AD_SERVER_SRC_FILE)
@@ -168,97 +80,55 @@ debug-vars:
16880
build-server: $(BUILDFILE_SERVER)
16981
.PHONY: build-server
17082
$(BUILDFILE_SERVER): Makefile $(SERVER_SRC_FILE) $(SERVER_SOURCES)
171-
$(MAKE) _img_build \
172-
BUILD_ARGS="" \
173-
EXTRA_BUILD_ARGS="$(EXTRA_BUILD_ARGS)" \
174-
SHORT_NAME=$(SERVER_NAME) \
175-
REPO_NAME=$(SERVER_REPO_NAME) \
176-
SRC_FILE=$(SERVER_SRC_FILE) \
177-
DIR=$(SERVER_DIR) \
178-
BUILDFILE=$(BUILDFILE_SERVER)
83+
$(call _BUILD_KP,server,default) $(EXTRA_BUILD_ARGS)
17984

18085
push-server: build-server
181-
$(PUSH_CMD) $(SERVER_REPO_NAME)
86+
$(call _BUILD_KP,server,default,--push)
18287
.PHONY: push-server
18388

18489
build-nightly-server: $(BUILDFILE_NIGHTLY_SERVER)
18590
.PHONY: build-nightly-server
18691
$(BUILDFILE_NIGHTLY_SERVER): Makefile $(SERVER_SRC_FILE) $(SERVER_SOURCES)
187-
$(MAKE) _img_build \
188-
BUILD_ARGS="--build-arg=INSTALL_PACKAGES_FROM='samba-nightly'" \
189-
EXTRA_BUILD_ARGS="$(EXTRA_BUILD_ARGS)" \
190-
SHORT_NAME=$(NIGHTLY_SERVER_NAME) \
191-
REPO_NAME=$(NIGHTLY_SERVER_REPO_NAME) \
192-
SRC_FILE=$(SERVER_SRC_FILE) \
193-
DIR=$(SERVER_DIR) \
194-
BUILDFILE=$(BUILDFILE_NIGHTLY_SERVER)
92+
$(call _BUILD_KP,server,nightly) $(EXTRA_BUILD_ARGS)
19593

19694
push-nightly-server: build-nightly-server
197-
$(PUSH_CMD) $(NIGHTLY_SERVER_REPO_NAME)
95+
$(call _BUILD_KP,server,nightly,--push)
19896
.PHONY: push-nightly-server
19997

20098
build-ad-server: $(BUILDFILE_AD_SERVER)
20199
.PHONY: build-ad-server
202100
$(BUILDFILE_AD_SERVER): Makefile $(AD_SERVER_SRC_FILE) $(AD_SERVER_SOURCES)
203-
$(MAKE) _img_build \
204-
BUILD_ARGS="" \
205-
EXTRA_BUILD_ARGS="$(EXTRA_BUILD_ARGS)" \
206-
SHORT_NAME=$(AD_SERVER_NAME) \
207-
REPO_NAME=$(AD_SERVER_REPO_NAME) \
208-
SRC_FILE=$(AD_SERVER_SRC_FILE) \
209-
DIR=$(AD_SERVER_DIR) \
210-
BUILDFILE=$(BUILDFILE_AD_SERVER)
101+
$(call _BUILD_KP,ad-server,default) $(EXTRA_BUILD_ARGS)
211102

212103
push-ad-server: build-ad-server
213-
$(PUSH_CMD) $(AD_SERVER_REPO_NAME)
104+
$(call _BUILD_KP,ad-server,default,--push)
214105
.PHONY: push-ad-server
215106

216107
build-nightly-ad-server: $(BUILDFILE_NIGHTLY_AD_SERVER)
217108
.PHONY: build-nightly-ad-server
218109
$(BUILDFILE_NIGHTLY_AD_SERVER): Makefile $(AD_SERVER_SRC_FILE) $(AD_SERVER_SOURCES)
219-
$(MAKE) _img_build \
220-
BUILD_ARGS="--build-arg=INSTALL_PACKAGES_FROM='samba-nightly'" \
221-
EXTRA_BUILD_ARGS="$(EXTRA_BUILD_ARGS)" \
222-
SHORT_NAME=$(NIGHTLY_AD_SERVER_NAME) \
223-
REPO_NAME=$(NIGHTLY_AD_SERVER_REPO_NAME) \
224-
SRC_FILE=$(AD_SERVER_SRC_FILE) \
225-
DIR=$(AD_SERVER_DIR) \
226-
BUILDFILE=$(BUILDFILE_NIGHTLY_AD_SERVER)
110+
$(call _BUILD_KP,ad-server,nightly) $(EXTRA_BUILD_ARGS)
227111

228112
push-nightly-ad-server: build-nightly-ad-server
229-
$(PUSH_CMD) $(NIGHTLY_AD_SERVER_REPO_NAME)
113+
$(call _BUILD_KP,ad-server,nightly,--push)
230114
.PHONY: push-nightly-ad-server
231115

232116
build-client: $(BUILDFILE_CLIENT)
233117
.PHONY: build-client
234118
$(BUILDFILE_CLIENT): Makefile $(CLIENT_SRC_FILE)
235-
$(MAKE) _img_build \
236-
BUILD_ARGS="" \
237-
EXTRA_BUILD_ARGS="$(EXTRA_BUILD_ARGS)" \
238-
SHORT_NAME=$(CLIENT_NAME) \
239-
REPO_NAME=$(CLIENT_REPO_NAME) \
240-
SRC_FILE=$(CLIENT_SRC_FILE) \
241-
DIR=$(CLIENT_DIR) \
242-
BUILDFILE=$(BUILDFILE_CLIENT)
119+
$(call _BUILD_KP,client,default) $(EXTRA_BUILD_ARGS)
243120

244121
push-client: build-client
245-
$(PUSH_CMD) $(CLIENT_REPO_NAME)
122+
$(call _BUILD_KP,client,default,--push)
246123
.PHONY: push-client
247124

248125
build-toolbox: $(BUILDFILE_TOOLBOX)
249126
.PHONY: build-toolbox
250127
$(BUILDFILE_TOOLBOX): Makefile $(TOOLBOX_SRC_FILE)
251-
$(MAKE) _img_build \
252-
BUILD_ARGS="" \
253-
EXTRA_BUILD_ARGS="$(EXTRA_BUILD_ARGS)" \
254-
SHORT_NAME=$(TOOLBOX_NAME) \
255-
REPO_NAME=$(TOOLBOX_REPO_NAME) \
256-
SRC_FILE=$(TOOLBOX_SRC_FILE) \
257-
DIR=$(TOOLBOX_DIR) \
258-
BUILDFILE=$(BUILDFILE_TOOLBOX)
128+
$(call _BUILD_KP,toolbox,default) $(EXTRA_BUILD_ARGS)
259129

260130
push-toolbox: build-toolbox
261-
$(PUSH_CMD) $(TOOLBOX_REPO_NAME)
131+
$(call _BUILD_KP,toolbox,default,--push)
262132
.PHONY: push-toolbox
263133

264134

@@ -268,11 +138,15 @@ test: test-server test-nightly-server
268138
.PHONY: test
269139

270140
test-server: build-server
271-
CONTAINER_CMD=$(CONTAINER_CMD) LOCAL_TAG=$(SERVER_NAME) tests/test-samba-container.sh
141+
CONTAINER_CMD=$(CONTAINER_CMD) \
142+
LOCAL_TAG=$(shell cat $(BUILDFILE_SERVER) |cut -d' ' -f2) \
143+
tests/test-samba-container.sh
272144
.PHONY: test-server
273145

274-
test-nightly-server: build-nightly-server
275-
CONTAINER_CMD=$(CONTAINER_CMD) LOCAL_TAG=$(NIGHTLY_SERVER_NAME) tests/test-samba-container.sh
146+
test-nightly-server: $(BUILDFILE_NIGHTLY_SERVER)
147+
CONTAINER_CMD=$(CONTAINER_CMD) \
148+
LOCAL_TAG=$(shell cat $(BUILDFILE_NIGHTLY_SERVER) |cut -d' ' -f2) \
149+
tests/test-samba-container.sh
276150
.PHONY: test-nightly-server
277151

278152

@@ -295,48 +169,19 @@ check-gitlint: $(filter $(ALT_BIN)%,$(GITLINT))
295169
$(GITLINT) -C .gitlint --commits origin/master.. lint
296170
.PHONY: check-gitlint
297171

298-
# _img_build is an "internal" rule to make the building of samba-container
299-
# images regular and more "self documenting". A makefile.foo that includes
300-
# this Makefile can add build rules using _img_build as a building block.
301-
#
302-
# The following arguments are expected to be supplied when "calling" this rule:
303-
# BUILD_ARGS: the default build arguments
304-
# EXTRA_BUILD_ARGS: build args supplied by the user at "runtime"
305-
# SHORT_NAME: a local name for the image
306-
# REPO_NAME: a global name for the image
307-
# SRC_FILE: path to the Containerfile (Dockerfile)
308-
# DIR: path to the directory holding image contents
309-
# BUILDFILE: path to a temporary file tracking build state
310-
_img_build: $(DIR)/.common
311-
$(BUILD_CMD) \
312-
$(BUILD_ARGS) \
313-
$(call arch_flag) \
314-
$(EXTRA_BUILD_ARGS) \
315-
--tag $(SHORT_NAME) \
316-
--tag $(REPO_NAME) \
317-
--tag $(call build_fqin,$(call get_imagename,$(SHORT_NAME)),$(call get_pkgsource,$(SHORT_NAME)),$(SRC_OS_NAME),$(if $(BUILD_ARCH),$(BUILD_ARCH),$(HOST_ARCH)),$(EXTRA_TAG)) \
318-
-f $(SRC_FILE) \
319-
$(DIR)
320-
$(CONTAINER_CMD) inspect -f '{{.Id}}' $(SHORT_NAME) > $(BUILDFILE)
321-
.PHONY: _img_build
322-
323-
$(DIR)/.common: $(COMMON_DIR)
324-
$(RM) -r $(DIR)/.common
325-
cp -r $(COMMON_DIR) $(DIR)/.common
172+
173+
### Misc. Rules ###
326174

327175
$(ALT_BIN)/%:
328176
$(CURDIR)/hack/install-tools.sh --$* $(ALT_BIN)
329177

330-
331-
332-
### Misc. Rules ###
333-
334178
clean: clean-buildfiles clean-altbin
335179
.PHONY: clean
180+
336181
clean-buildfiles:
337182
$(RM) $(BUILDFILE_PREFIX)*
338183
.PHONY: clean-buildfiles
184+
339185
clean-altbin:
340186
$(RM) -r $(ALT_BIN)
341187
.PHONY: clean-altbin
342-

0 commit comments

Comments
 (0)