@@ -124,7 +124,7 @@ endif
124
124
# Define a do-nothing target for rules/config.user so that when
125
125
# the file is missing, make won't try to rebuld everything.
126
126
rules/config.user:
127
- @ echo -n ""
127
+ $(Q) echo -n ""
128
128
129
129
include rules/config
130
130
-include rules/config.user
@@ -173,21 +173,59 @@ endif
173
173
endif
174
174
175
175
# Generate the version control build info
176
- $(shell SONIC_VERSION_CONTROL_COMPONENTS=$(SONIC_VERSION_CONTROL_COMPONENTS) \
177
- TRUSTED_GPG_URLS=$(TRUSTED_GPG_URLS) PACKAGE_URL_PREFIX=$(PACKAGE_URL_PREFIX) \
178
- scripts/generate_buildinfo_config.sh)
176
+ $(shell \
177
+ SONIC_VERSION_CONTROL_COMPONENTS=$(SONIC_VERSION_CONTROL_COMPONENTS) \
178
+ TRUSTED_GPG_URLS=$(TRUSTED_GPG_URLS) \
179
+ PACKAGE_URL_PREFIX=$(PACKAGE_URL_PREFIX) \
180
+ scripts/generate_buildinfo_config.sh)
179
181
180
182
# Generate the slave Dockerfile, and prepare build info for it
181
- $(shell CONFIGURED_ARCH=$(CONFIGURED_ARCH) MULTIARCH_QEMU_ENVIRON=$(MULTIARCH_QEMU_ENVIRON) CROSS_BUILD_ENVIRON=$(CROSS_BUILD_ENVIRON) ENABLE_FIPS_FEATURE=$(ENABLE_FIPS_FEATURE) DOCKER_EXTRA_OPTS=$(DOCKER_EXTRA_OPTS) DEFAULT_CONTAINER_REGISTRY=$(DEFAULT_CONTAINER_REGISTRY) j2 $(SLAVE_DIR)/Dockerfile.j2 > $(SLAVE_DIR)/Dockerfile)
182
- $(shell CONFIGURED_ARCH=$(CONFIGURED_ARCH) MULTIARCH_QEMU_ENVIRON=$(MULTIARCH_QEMU_ENVIRON) CROSS_BUILD_ENVIRON=$(CROSS_BUILD_ENVIRON) j2 $(SLAVE_DIR)/Dockerfile.user.j2 > $(SLAVE_DIR)/Dockerfile.user)
183
- $(shell BUILD_SLAVE=y DEFAULT_CONTAINER_REGISTRY=$(DEFAULT_CONTAINER_REGISTRY) scripts/prepare_docker_buildinfo.sh $(SLAVE_BASE_IMAGE) $(SLAVE_DIR)/Dockerfile $(CONFIGURED_ARCH) "" $(BLDENV))
183
+ $(shell CONFIGURED_ARCH=$(CONFIGURED_ARCH) \
184
+ MULTIARCH_QEMU_ENVIRON=$(MULTIARCH_QEMU_ENVIRON) \
185
+ CROSS_BUILD_ENVIRON=$(CROSS_BUILD_ENVIRON) \
186
+ ENABLE_FIPS_FEATURE=$(ENABLE_FIPS_FEATURE) \
187
+ DOCKER_EXTRA_OPTS=$(DOCKER_EXTRA_OPTS) \
188
+ DEFAULT_CONTAINER_REGISTRY=$(DEFAULT_CONTAINER_REGISTRY) \
189
+ j2 $(SLAVE_DIR)/Dockerfile.j2 > $(SLAVE_DIR)/Dockerfile)
190
+
191
+ $(shell CONFIGURED_ARCH=$(CONFIGURED_ARCH) \
192
+ MULTIARCH_QEMU_ENVIRON=$(MULTIARCH_QEMU_ENVIRON) \
193
+ CROSS_BUILD_ENVIRON=$(CROSS_BUILD_ENVIRON) \
194
+ j2 $(SLAVE_DIR)/Dockerfile.user.j2 > $(SLAVE_DIR)/Dockerfile.user)
195
+
196
+ PREPARE_DOCKER=BUILD_SLAVE=y \
197
+ DEFAULT_CONTAINER_REGISTRY=$(DEFAULT_CONTAINER_REGISTRY) \
198
+ scripts/prepare_docker_buildinfo.sh \
199
+ $(SLAVE_BASE_IMAGE) \
200
+ $(SLAVE_DIR)/Dockerfile \
201
+ $(CONFIGURED_ARCH) \
202
+ "" \
203
+ $(BLDENV)
204
+
205
+ $(shell $(PREPARE_DOCKER) )
184
206
185
207
# Add the versions in the tag, if the version change, need to rebuild the slave
186
- SLAVE_BASE_TAG = $(shell cat $(SLAVE_DIR)/Dockerfile $(SLAVE_DIR)/buildinfo/versions/versions-* src/sonic-build-hooks/hooks/* | sha1sum | awk '{print substr($$1,0,11);}')
187
- # Calculate the slave TAG based on $(USER)/$(PWD)/$(CONFIGURED_PLATFORM) to get unique SHA ID
188
- SLAVE_TAG = $(shell (cat $(SLAVE_DIR)/Dockerfile.user $(SLAVE_DIR)/Dockerfile $(SLAVE_DIR)/buildinfo/versions/versions-* .git/HEAD && echo $(USER)/$(PWD)/$(CONFIGURED_PLATFORM)) \
189
- | sha1sum | awk '{print substr($$1,0,11);}')
208
+ SLAVE_BASE_TAG = $(shell \
209
+ cat $(SLAVE_DIR)/Dockerfile \
210
+ $(SLAVE_DIR)/buildinfo/versions/versions-* \
211
+ src/sonic-build-hooks/hooks/* 2>/dev/null \
212
+ | sha1sum \
213
+ | awk '{print substr($$1,0,11);}')
190
214
215
+ # Calculate the slave TAG based on $(USER)/$(PWD)/$(CONFIGURED_PLATFORM) to get unique SHA ID
216
+ SLAVE_TAG = $(shell \
217
+ (cat $(SLAVE_DIR)/Dockerfile.user \
218
+ $(SLAVE_DIR)/Dockerfile \
219
+ $(SLAVE_DIR)/buildinfo/versions/versions-* \
220
+ .git/HEAD \
221
+ && echo $(USER)/$(PWD)/$(CONFIGURED_PLATFORM)) \
222
+ | sha1sum \
223
+ | awk '{print substr($$1,0,11);}')
224
+
225
+ COLLECT_DOCKER=DEFAULT_CONTAINER_REGISTRY=$(DEFAULT_CONTAINER_REGISTRY) \
226
+ scripts/collect_docker_version_files.sh \
227
+ $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) \
228
+ target
191
229
OVERLAY_MODULE_CHECK := \
192
230
lsmod | grep -q "^overlay " &>/dev/null || \
193
231
zgrep -q 'CONFIG_OVERLAY_FS=y' /proc/config.gz &>/dev/null || \
@@ -329,7 +367,7 @@ DOCKER_BASE_LOG = $(SLAVE_DIR)/$(SLAVE_BASE_IMAGE)_$(SLAVE_BASE_TAG).log
329
367
DOCKER_LOG = $(SLAVE_DIR)/$(SLAVE_IMAGE)_$(SLAVE_TAG).log
330
368
331
369
332
- DOCKER_BASE_BUILD = docker build --no-cache \
370
+ DOCKER_SLAVE_BASE_BUILD = docker build --no-cache \
333
371
-t $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) \
334
372
--build-arg http_proxy=$(http_proxy) \
335
373
--build-arg https_proxy=$(https_proxy) \
@@ -339,7 +377,7 @@ DOCKER_BASE_BUILD = docker build --no-cache \
339
377
DOCKER_BASE_PULL = docker pull \
340
378
$(REGISTRY_SERVER):$(REGISTRY_PORT)/$(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG)
341
379
342
- DOCKER_BUILD = docker build --no-cache \
380
+ DOCKER_USER_BUILD = docker build --no-cache \
343
381
--build-arg user=$(USER) \
344
382
--build-arg uid=$(shell id -u) \
345
383
--build-arg guid=$(shell id -g) \
@@ -349,7 +387,52 @@ DOCKER_BUILD = docker build --no-cache \
349
387
-f $(SLAVE_DIR)/Dockerfile.user \
350
388
$(SLAVE_DIR) $(SPLIT_LOG) $(DOCKER_LOG)
351
389
352
- SONIC_BUILD_INSTRUCTION := make \
390
+
391
+ DOCKER_SLAVE_BASE_INSPECT = \
392
+ { \
393
+ echo Checking sonic-slave-base image: $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG); \
394
+ docker inspect --type image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) &> /dev/null; \
395
+ }
396
+
397
+ DOCKER_SLAVE_BASE_PULL_REGISTRY = \
398
+ [ $(ENABLE_DOCKER_BASE_PULL) == y ] && \
399
+ { \
400
+ echo Image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) not found. Pulling...; \
401
+ $(DOCKER_BASE_PULL); \
402
+ } && \
403
+ { \
404
+ docker tag $(REGISTRY_SERVER):$(REGISTRY_PORT)/$(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) && \
405
+ $(COLLECT_DOCKER); \
406
+ }\
407
+
408
+ SONIC_SLAVE_BASE_BUILD = \
409
+ { \
410
+ $(DOCKER_SLAVE_BASE_INSPECT); \
411
+ } || \
412
+ { \
413
+ $(DOCKER_SLAVE_BASE_PULL_REGISTRY); \
414
+ } || \
415
+ { \
416
+ echo Image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) not found. Building... ; \
417
+ $(PREPARE_DOCKER) ; \
418
+ $(DOCKER_SLAVE_BASE_BUILD) ; \
419
+ $(COLLECT_DOCKER) ; \
420
+ }
421
+
422
+ DOCKER_SLAVE_USER_INSPECT = \
423
+ { \
424
+ echo Checking sonic-slave-user image: $(SLAVE_IMAGE):$(SLAVE_TAG); \
425
+ docker inspect --type image $(SLAVE_IMAGE):$(SLAVE_TAG) &> /dev/null; \
426
+ }
427
+
428
+ SONIC_SLAVE_USER_BUILD = \
429
+ { $(DOCKER_SLAVE_USER_INSPECT) } || \
430
+ { \
431
+ echo Image $(SLAVE_IMAGE):$(SLAVE_TAG) not found. Building... ; \
432
+ $(DOCKER_USER_BUILD) ; \
433
+ }
434
+
435
+ SONIC_BUILD_INSTRUCTION := $(MAKE) \
353
436
-f slave.mk \
354
437
PLATFORM=$(PLATFORM) \
355
438
PLATFORM_ARCH=$(PLATFORM_ARCH) \
@@ -417,87 +500,75 @@ SONIC_BUILD_INSTRUCTION := make \
417
500
418
501
.PHONY: sonic-slave-build sonic-slave-bash init reset
419
502
503
+
504
+ ifeq ($(filter clean,$(MAKECMDGOALS)),)
505
+ COLLECT_BUILD_VERSION = { DBGOPT='$(DBGOPT)' scripts/collect_build_version_files.sh $$?; }
506
+ endif
507
+
508
+ ifdef SOURCE_FOLDER
509
+ DOCKER_RUN += -v $(SOURCE_FOLDER):/var/$(USER)/src
510
+ endif
511
+
512
+ ifeq "$(KEEP_SLAVE_ON)" "yes"
513
+ SLAVE_SHELL={ /bin/bash; }
514
+ endif
515
+
420
516
.DEFAULT_GOAL := all
421
517
422
- %::
518
+ %:: | sonic-build-hooks
423
519
ifneq ($(filter y, $(MULTIARCH_QEMU_ENVIRON) $(CROSS_BUILD_ENVIRON)),)
424
- @ $(DOCKER_MULTIARCH_CHECK)
520
+ $(Q) $(DOCKER_MULTIARCH_CHECK)
425
521
ifneq ($(BLDENV), )
426
- @$(DOCKER_SERVICE_MULTIARCH_CHECK)
427
- @$(DOCKER_SERVICE_DOCKERFS_CHECK)
428
- endif
429
- endif
430
- @$(OVERLAY_MODULE_CHECK)
431
-
432
- @pushd src/sonic-build-hooks; TRUSTED_GPG_URLS=$(TRUSTED_GPG_URLS) make all; popd
433
- @cp src/sonic-build-hooks/buildinfo/sonic-build-hooks* $(SLAVE_DIR)/buildinfo
434
- @docker inspect --type image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) &> /dev/null || \
435
- { [ $(ENABLE_DOCKER_BASE_PULL) == y ] && { echo Image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) not found. Pulling...; } && \
436
- $(DOCKER_BASE_PULL) && \
437
- { docker tag $(REGISTRY_SERVER):$(REGISTRY_PORT)/$(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) && \
438
- scripts/collect_docker_version_files.sh $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) target ; } } || \
439
- { echo Image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) not found. Building... ; \
440
- $(DOCKER_BASE_BUILD) ; \
441
- scripts/collect_docker_version_files.sh $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) target ; }
442
- @docker inspect --type image $(SLAVE_IMAGE):$(SLAVE_TAG) &> /dev/null || \
443
- { echo Image $(SLAVE_IMAGE):$(SLAVE_TAG) not found. Building... ; \
444
- $(DOCKER_BUILD) ; }
445
- ifeq "$(KEEP_SLAVE_ON)" "yes"
446
- ifdef SOURCE_FOLDER
447
- @$(DOCKER_RUN) -v $(SOURCE_FOLDER):/var/$(USER)/src $(SLAVE_IMAGE):$(SLAVE_TAG) bash -c "$(SONIC_BUILD_INSTRUCTION) $@; scripts/collect_build_version_files.sh \$$?; /bin/bash"
448
- else
449
- @$(DOCKER_RUN) $(SLAVE_IMAGE):$(SLAVE_TAG) bash -c "$(SONIC_BUILD_INSTRUCTION) $@; scripts/collect_build_version_files.sh \$$?; /bin/bash"
450
- endif
451
- else
452
- @$(DOCKER_RUN) $(SLAVE_IMAGE):$(SLAVE_TAG) bash -c "$(SONIC_BUILD_INSTRUCTION) $@; scripts/collect_build_version_files.sh \$$?"
522
+ $(Q)$(DOCKER_SERVICE_MULTIARCH_CHECK)
523
+ $(Q)$(DOCKER_SERVICE_DOCKERFS_CHECK)
524
+ endif
453
525
endif
526
+ $(Q)$(OVERLAY_MODULE_CHECK)
527
+ $(Q)$(SONIC_SLAVE_BASE_BUILD)
528
+ $(Q)$(SONIC_SLAVE_USER_BUILD)
529
+
530
+ $(Q)$(DOCKER_RUN) \
531
+ $(SLAVE_IMAGE):$(SLAVE_TAG) \
532
+ bash -c "$(SONIC_BUILD_INSTRUCTION) $@;$(COLLECT_BUILD_VERSION); $(SLAVE_SHELL)"
533
+ $(Q)$(docker-image-cleanup)
454
534
455
535
docker-cleanup:
456
- $(docker-image-cleanup)
536
+ $(Q)$( docker-image-cleanup)
457
537
538
+ .PHONY: sonic-build-hooks
458
539
sonic-build-hooks:
459
- @pushd src/sonic-build-hooks; TRUSTED_GPG_URLS=$(TRUSTED_GPG_URLS) make all; popd
460
- @cp src/sonic-build-hooks/buildinfo/sonic-build-hooks* $(SLAVE_DIR)/buildinfo
540
+ $(Q)pushd src/sonic-build-hooks; TRUSTED_GPG_URLS=$(TRUSTED_GPG_URLS) $(MAKE) all; popd
541
+ $(Q)mkdir -p $(SLAVE_DIR)/buildinfo
542
+ $(Q)cp src/sonic-build-hooks/buildinfo/sonic-build-hooks* $(SLAVE_DIR)/buildinfo
461
543
462
- sonic-slave-base-build : sonic-build-hooks
544
+ sonic-slave-base-build : | sonic-build-hooks
463
545
ifeq ($(MULTIARCH_QEMU_ENVIRON), y)
464
- @$(DOCKER_MULTIARCH_CHECK)
465
- endif
466
- @$(OVERLAY_MODULE_CHECK)
467
- @echo Checking sonic-slave-base image: $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG)
468
- @docker inspect --type image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) &> /dev/null || \
469
- { [ $(ENABLE_DOCKER_BASE_PULL) == y ] && { echo Image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) not found. Pulling...; } && \
470
- $(DOCKER_BASE_PULL) && \
471
- { docker tag $(REGISTRY_SERVER):$(REGISTRY_PORT)/$(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) && \
472
- scripts/collect_docker_version_files.sh $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) target ; } } || \
473
- { echo Image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) not found. Building... ; \
474
- $(DOCKER_BASE_BUILD) ; \
475
- scripts/collect_docker_version_files.sh $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) target ; }
546
+ $(Q)$(DOCKER_MULTIARCH_CHECK)
547
+ endif
548
+ $(Q)$(OVERLAY_MODULE_CHECK)
549
+ $(Q)$(SONIC_SLAVE_BASE_BUILD)
476
550
477
551
sonic-slave-build : sonic-slave-base-build
478
- @echo Checking sonic-slave image: $(SLAVE_IMAGE):$(SLAVE_TAG)
479
- @docker inspect --type image $(SLAVE_IMAGE):$(SLAVE_TAG) &> /dev/null || \
480
- { echo Image $(SLAVE_IMAGE):$(SLAVE_TAG) not found. Building... ; \
481
- $(DOCKER_BUILD) ; }
552
+ $(Q)$(SONIC_SLAVE_USER_BUILD)
482
553
483
554
sonic-slave-bash : sonic-slave-build
484
- @ $(DOCKER_RUN) -t $(SLAVE_IMAGE):$(SLAVE_TAG) bash
555
+ $(Q) $(DOCKER_RUN) -t $(SLAVE_IMAGE):$(SLAVE_TAG) bash
485
556
486
557
sonic-slave-run : sonic-slave-build
487
- @ $(DOCKER_RUN) $(SLAVE_IMAGE):$(SLAVE_TAG) bash -c "$(SONIC_RUN_CMDS)"
558
+ $(Q) $(DOCKER_RUN) $(SLAVE_IMAGE):$(SLAVE_TAG) bash -c "$(SONIC_RUN_CMDS)"
488
559
489
560
showtag:
490
- @ echo $(SLAVE_IMAGE):$(SLAVE_TAG)
491
- @ echo $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG)
561
+ $(Q) echo $(SLAVE_IMAGE):$(SLAVE_TAG)
562
+ $(Q) echo $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG)
492
563
493
564
init :
494
- @ git submodule update --init --recursive
495
- @ git submodule foreach --recursive '[ -f .git ] && echo "gitdir: $$(realpath --relative-to=. $$(cut -d" " -f2 .git))" > .git'
565
+ $(Q) git submodule update --init --recursive
566
+ $(Q) git submodule foreach --recursive '[ -f .git ] && echo "gitdir: $$(realpath --relative-to=. $$(cut -d" " -f2 .git))" > .git'
496
567
497
568
.ONESHELL : reset
498
569
reset :
499
- @ echo && echo -n "Warning! All local changes will be lost. Proceed? [y/N]: "
500
- @ read ans && (
570
+ $(Q) echo && echo -n "Warning! All local changes will be lost. Proceed? [y/N]: "
571
+ $(Q) read ans && (
501
572
if [ $$ans == y ]; then
502
573
echo "Resetting local repository. Please wait...";
503
574
sudo rm -rf fsroot*;
0 commit comments