@@ -169,6 +169,10 @@ clean:
169
169
rm -rf $(CURDIR ) /rpmbuild
170
170
rm -rf container_composer_golangci_built.info
171
171
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
172
176
173
177
.PHONY : push-check
174
178
push-check : lint build unit-tests srpm man
@@ -326,3 +330,94 @@ $(PROCESSED_TEMPLATE_DIR)/%.yml: $(PROCESSED_TEMPLATE_DIR) $(OPENSHIFT_TEMPLATES
326
330
.PHONY : process-templates
327
331
process-templates : $(addprefix $(PROCESSED_TEMPLATE_DIR ) /, $(OPENSHIFT_TEMPLATES ) )
328
332
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