@@ -156,6 +156,10 @@ install: build
156
156
clean :
157
157
rm -rf $(BUILDDIR ) /bin/
158
158
rm -rf $(CURDIR ) /rpmbuild
159
+ rm -rf $(BUILDDIR ) /build/
160
+ rm -f $(BUILDDIR ) /go.local.*
161
+ rm -f $(BUILDDIR ) /container_worker_built.info
162
+ rm -f $(BUILDDIR ) /container_composer_built.info
159
163
160
164
.PHONY : push-check
161
165
push-check : build unit-tests srpm man
@@ -275,3 +279,71 @@ scratch: $(RPM_SPECFILE) $(RPM_TARBALL)
275
279
--nocheck \
276
280
$(RPM_SPECFILE )
277
281
282
+
283
+ # either "docker" or "sudo podman"
284
+ # podman needs to build as root as it also needs to run as root afterwards
285
+ CONTAINER_EXECUTABLE ?= sudo podman
286
+
287
+ DOCKER_IMAGE_WORKER := osbuild-worker_devel
288
+ DOCKERFILE_WORKER := distribution/Dockerfile-worker_srcinstall
289
+
290
+ DOCKER_IMAGE_COMPOSER := osbuild-composer_devel
291
+ DOCKERFILE_COMPOSER := distribution/Dockerfile-composer
292
+
293
+ GOPROXY ?= https://proxy.golang.org,direct
294
+
295
+ # source where the other repos are locally
296
+ # has to end with a trailing slash
297
+ SRC_DEPS_EXTERNAL_CHECKOUT_DIR ?= ../
298
+
299
+ # names of folder that have to be git-cloned additionally to be able
300
+ # to build all code
301
+ SRC_DEPS_EXTERNAL_NAMES := images pulp-client
302
+ SRC_DEPS_EXTERNAL_DIRS := $(addprefix $(SRC_DEPS_EXTERNAL_CHECKOUT_DIR ) ,$(SRC_DEPS_EXTERNAL_NAMES ) )
303
+
304
+ $(SRC_DEPS_EXTERNAL_DIRS ) :
305
+ @for DIR in $@ ; do if ! [ -d $$ DIR ]; then echo " Please checkout $$ DIR so it is available at $$ DIR" ; exit 1; fi ; done
306
+
307
+
308
+ SRC_DEPS_DIRS := internal cmd pkg repositories
309
+
310
+ # All files to check for rebuild!
311
+ SRC_DEPS := $(shell find $(SRC_DEPS_DIRS ) -name * .go -or -name * .json)
312
+ SRC_DEPS_EXTERNAL := $(shell find $(SRC_DEPS_EXTERNAL_DIRS ) -name * .go)
313
+
314
+ # dependencies to rebuild worker
315
+ WORKER_SRC_DEPS := $(SRC_DEPS )
316
+ # dependencies to rebuild composer
317
+ COMPOSER_SRC_DEPS := $(SRC_DEPS )
318
+
319
+ GOMODARGS ?= -modfile=go.local.mod
320
+
321
+ USE_BTRFS ?= yes
322
+
323
+ go.local.mod go.local.sum : $(SRC_DEPS_EXTERNAL_DIRS ) go.mod $(SRC_DEPS_EXTERNAL ) $(WORKER_SRC_DEPS ) $(COMPOSER_SRC_DEPS ) Makefile
324
+ cp go.mod go.local.mod
325
+ cp go.sum go.local.sum
326
+
327
+ go mod edit $(GOMODARGS) -replace github.com/osbuild/images=$(SRC_DEPS_EXTERNAL_CHECKOUT_DIR)images
328
+ go mod edit $(GOMODARGS) -replace github.com/osbuild/pulp-client=$(SRC_DEPS_EXTERNAL_CHECKOUT_DIR)pulp-client
329
+ go mod edit $(GOMODARGS) -replace github.com/osbuild/osbuild-composer/pkg/splunk_logger=./pkg/splunk_logger
330
+ env GOPROXY=$(GOPROXY) go mod tidy $(GOMODARGS)
331
+ env GOPROXY=$(GOPROXY) go mod vendor $(GOMODARGS)
332
+
333
+ container_worker_built.info : go.local.mod $(WORKER_SRC_DEPS ) $(DOCKERFILE_WORKER )
334
+ $(CONTAINER_EXECUTABLE ) build -t $(DOCKER_IMAGE_WORKER ) -f $(DOCKERFILE_WORKER ) --build-arg GOMODARGS=$(GOMODARGS ) --build-arg USE_BTRFS=$(USE_BTRFS ) .
335
+ echo " Worker last built on" > $@
336
+ date >> $@
337
+
338
+ container_composer_built.info : go.local.mod $(COMPOSER_SRC_DEPS ) $(DOCKERFILE_COMPOSER )
339
+ $(CONTAINER_EXECUTABLE ) build -t $(DOCKER_IMAGE_COMPOSER ) -f $(DOCKERFILE_COMPOSER ) --build-arg GOMODARGS=$(GOMODARGS ) .
340
+ echo " Composer last built on" > $@
341
+ date >> $@
342
+
343
+ # build a container with a worker from full source
344
+ .PHONY : container_worker
345
+ container_worker : container_worker_built.info
346
+
347
+ # build a container with the composer from full source
348
+ .PHONY : container_composer
349
+ container_composer : container_composer_built.info
0 commit comments