Skip to content

Commit 607ec83

Browse files
committed
Makefile: implement "fully source containers" HMS-3883
1 parent d6031ae commit 607ec83

12 files changed

+729
-6
lines changed

.gitignore

+7-2
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,16 @@ __pycache__
1414

1515
/docs/osbuild-composer.7
1616
.cache
17-
container_composer_golangci_built.info
1817
processed-templates
1918

2019
coverage.txt
2120
coverage.html
22-
2321
coverage_splunk_logger.txt
2422
coverage_splunk_logger.html
23+
24+
go.local.mod
25+
go.local.sum
26+
container_worker_built.info
27+
container_composer_built.info
28+
container_composer_golangci_built.info
29+

Makefile

+95
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ clean:
169169
rm -rf $(CURDIR)/rpmbuild
170170
rm -rf container_composer_golangci_built.info
171171
rm -rf $(BUILDDIR)/$(PROCESSED_TEMPLATE_DIR)
172+
rm -rf $(BUILDDIR)/build/
173+
rm -f $(BUILDDIR)/go.local.*
174+
rm -f $(BUILDDIR)/container_worker_built.info
175+
rm -f $(BUILDDIR)/container_composer_built.info
172176

173177
.PHONY: push-check
174178
push-check: lint build unit-tests srpm man
@@ -326,3 +330,94 @@ $(PROCESSED_TEMPLATE_DIR)/%.yml: $(PROCESSED_TEMPLATE_DIR) $(OPENSHIFT_TEMPLATES
326330
.PHONY: process-templates
327331
process-templates: $(addprefix $(PROCESSED_TEMPLATE_DIR)/, $(OPENSHIFT_TEMPLATES))
328332

333+
CONTAINER_EXECUTABLE ?= podman
334+
335+
CONTAINER_IMAGE_WORKER ?= osbuild-worker_dev
336+
CONTAINERFILE_WORKER := distribution/Dockerfile-worker.dev
337+
338+
CONTAINER_IMAGE_COMPOSER ?= osbuild-composer_dev
339+
CONTAINERFILE_COMPOSER := distribution/Dockerfile-composer.dev
340+
341+
GOPROXY ?= https://proxy.golang.org,direct
342+
343+
# source where the other repos are locally
344+
# has to end with a trailing slash
345+
SRC_DEPS_EXTERNAL_CHECKOUT_DIR ?= ../
346+
347+
# names of folder that have to be git-cloned additionally to be able
348+
# to build all code
349+
SRC_DEPS_EXTERNAL_NAMES := images pulp-client
350+
SRC_DEPS_EXTERNAL_DIRS := $(addprefix $(SRC_DEPS_EXTERNAL_CHECKOUT_DIR),$(SRC_DEPS_EXTERNAL_NAMES))
351+
352+
$(SRC_DEPS_EXTERNAL_DIRS):
353+
@for DIR in $@; do if ! [ -d $$DIR ]; then echo "Please checkout $$DIR so it is available at $$DIR"; exit 1; fi; done
354+
355+
356+
SRC_DEPS_DIRS := internal cmd pkg repositories
357+
358+
# All files to check for rebuild!
359+
SRC_DEPS := $(shell find $(SRC_DEPS_DIRS) -name *.go -or -name *.json)
360+
SRC_DEPS_EXTERNAL := $(shell find $(SRC_DEPS_EXTERNAL_DIRS) -name *.go)
361+
362+
# dependencies to rebuild worker
363+
WORKER_SRC_DEPS := $(SRC_DEPS)
364+
# dependencies to rebuild composer
365+
COMPOSER_SRC_DEPS := $(SRC_DEPS)
366+
367+
GOMODARGS ?= -modfile=go.local.mod
368+
# gcflags "-N -l" for golang to allow debugging
369+
GCFLAGS ?= -gcflags=all=-N -gcflags=all=-l
370+
371+
CONTAINER_DEPS_COMPOSER := ./containers/osbuild-composer/entrypoint.py
372+
CONTAINER_DEPS_WORKER := ./distribution/osbuild-worker-entrypoint.sh
373+
374+
USE_BTRFS ?= yes
375+
376+
377+
# source where the other repos are locally
378+
# has to end with a trailing slash
379+
SRC_DEPS_EXTERNAL_CHECKOUT_DIR ?= ../
380+
381+
COMMON_SRC_DEPS_NAMES := osbuild
382+
COMMON_SRC_DEPS_ORIGIN := $(addprefix $(SRC_DEPS_EXTERNAL_CHECKOUT_DIR),$(COMMON_SRC_DEPS_NAMES))
383+
384+
OSBUILD_CONTAINER_INDICATOR := $(SRC_DEPS_EXTERNAL_CHECKOUT_DIR)/osbuild/container_built.info
385+
386+
MAKE_SUB_CALL := make CONTAINER_EXECUTABLE="$(CONTAINER_EXECUTABLE)"
387+
388+
$(COMMON_SRC_DEPS_ORIGIN):
389+
@for DIR in $@; do if ! [ -d $$DIR ]; then echo "Please checkout $$DIR so it is available at $$DIR"; exit 1; fi; done
390+
391+
# we'll trigger the sub-make for osbuild with "osbuild-container"
392+
# and use OSBUILD_CONTAINER_INDICATOR to check if we need to rebuild our containers here
393+
.PHONY: osbuild-container.dev
394+
$(OSBUILD_CONTAINER_INDICATOR) osbuild-container.dev:
395+
$(MAKE_SUB_CALL) -C $(SRC_DEPS_EXTERNAL_CHECKOUT_DIR)osbuild container.dev
396+
397+
go.local.mod go.local.sum: $(SRC_DEPS_EXTERNAL_DIRS) go.mod $(SRC_DEPS_EXTERNAL) $(WORKER_SRC_DEPS) $(COMPOSER_SRC_DEPS) Makefile
398+
cp go.mod go.local.mod
399+
cp go.sum go.local.sum
400+
401+
go mod edit $(GOMODARGS) -replace github.com/osbuild/images=$(SRC_DEPS_EXTERNAL_CHECKOUT_DIR)images
402+
go mod edit $(GOMODARGS) -replace github.com/osbuild/pulp-client=$(SRC_DEPS_EXTERNAL_CHECKOUT_DIR)pulp-client
403+
go mod edit $(GOMODARGS) -replace github.com/osbuild/osbuild-composer/pkg/splunk_logger=./pkg/splunk_logger
404+
env GOPROXY=$(GOPROXY) go mod tidy $(GOMODARGS)
405+
env GOPROXY=$(GOPROXY) go mod vendor $(GOMODARGS)
406+
407+
container_worker_built.info: go.local.mod $(WORKER_SRC_DEPS) CONTAINER_WORKER $(CONTAINER_DEPS_WORKER) $(OSBUILD_CONTAINER_INDICATOR)
408+
$(CONTAINER_EXECUTABLE) build -t $(CONTAINER_IMAGE_WORKER) -f $(CONTAINERFILE_WORKER) --build-arg GOMODARGS="$(GOMODARGS)" --build-arg GCFLAGS="$(GCFLAGS)" --build-arg USE_BTRFS=$(USE_BTRFS) .
409+
echo "Worker last built on" > $@
410+
date >> $@
411+
412+
container_composer_built.info: go.local.mod $(COMPOSER_SRC_DEPS) $(CONTAINERFILE_COMPOSER) $(CONTAINER_DEPS_COMPOSER) $(OSBUILD_CONTAINER_INDICATOR)
413+
$(CONTAINER_EXECUTABLE) build -t $(CONTAINER_IMAGE_COMPOSER) -f $(CONTAINERFILE_COMPOSER) --build-arg GOMODARGS="$(GOMODARGS)" --build-arg GCFLAGS="$(GCFLAGS)" .
414+
echo "Composer last built on" > $@
415+
date >> $@
416+
417+
# build a container with a worker from full source
418+
.PHONY: container_worker.dev
419+
container_worker.dev: osbuild-container.dev container_worker_built.info
420+
421+
# build a container with the composer from full source
422+
.PHONY: container_composer.dev
423+
container_composer.dev: osbuild-container.dev container_composer_built.info

0 commit comments

Comments
 (0)