@@ -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) \
@@ -415,87 +498,75 @@ SONIC_BUILD_INSTRUCTION := make \
415
498
416
499
.PHONY: sonic-slave-build sonic-slave-bash init reset
417
500
501
+
502
+ ifeq ($(filter clean,$(MAKECMDGOALS)),)
503
+ COLLECT_BUILD_VERSION = { DBGOPT='$(DBGOPT)' scripts/collect_build_version_files.sh $$?; }
504
+ endif
505
+
506
+ ifdef SOURCE_FOLDER
507
+ DOCKER_RUN += -v $(SOURCE_FOLDER):/var/$(USER)/src
508
+ endif
509
+
510
+ ifeq "$(KEEP_SLAVE_ON)" "yes"
511
+ SLAVE_SHELL={ /bin/bash; }
512
+ endif
513
+
418
514
.DEFAULT_GOAL := all
419
515
420
- %::
516
+ %:: | sonic-build-hooks
421
517
ifneq ($(filter y, $(MULTIARCH_QEMU_ENVIRON) $(CROSS_BUILD_ENVIRON)),)
422
- @ $(DOCKER_MULTIARCH_CHECK)
518
+ $(Q) $(DOCKER_MULTIARCH_CHECK)
423
519
ifneq ($(BLDENV), )
424
- @$(DOCKER_SERVICE_MULTIARCH_CHECK)
425
- @$(DOCKER_SERVICE_DOCKERFS_CHECK)
426
- endif
427
- endif
428
- @$(OVERLAY_MODULE_CHECK)
429
-
430
- @pushd src/sonic-build-hooks; TRUSTED_GPG_URLS=$(TRUSTED_GPG_URLS) make all; popd
431
- @cp src/sonic-build-hooks/buildinfo/sonic-build-hooks* $(SLAVE_DIR)/buildinfo
432
- @docker inspect --type image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) &> /dev/null || \
433
- { [ $(ENABLE_DOCKER_BASE_PULL) == y ] && { echo Image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) not found. Pulling...; } && \
434
- $(DOCKER_BASE_PULL) && \
435
- { docker tag $(REGISTRY_SERVER):$(REGISTRY_PORT)/$(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) && \
436
- scripts/collect_docker_version_files.sh $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) target ; } } || \
437
- { echo Image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) not found. Building... ; \
438
- $(DOCKER_BASE_BUILD) ; \
439
- scripts/collect_docker_version_files.sh $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) target ; }
440
- @docker inspect --type image $(SLAVE_IMAGE):$(SLAVE_TAG) &> /dev/null || \
441
- { echo Image $(SLAVE_IMAGE):$(SLAVE_TAG) not found. Building... ; \
442
- $(DOCKER_BUILD) ; }
443
- ifeq "$(KEEP_SLAVE_ON)" "yes"
444
- ifdef SOURCE_FOLDER
445
- @$(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"
446
- else
447
- @$(DOCKER_RUN) $(SLAVE_IMAGE):$(SLAVE_TAG) bash -c "$(SONIC_BUILD_INSTRUCTION) $@; scripts/collect_build_version_files.sh \$$?; /bin/bash"
448
- endif
449
- else
450
- @$(DOCKER_RUN) $(SLAVE_IMAGE):$(SLAVE_TAG) bash -c "$(SONIC_BUILD_INSTRUCTION) $@; scripts/collect_build_version_files.sh \$$?"
520
+ $(Q)$(DOCKER_SERVICE_MULTIARCH_CHECK)
521
+ $(Q)$(DOCKER_SERVICE_DOCKERFS_CHECK)
522
+ endif
451
523
endif
524
+ $(Q)$(OVERLAY_MODULE_CHECK)
525
+ $(Q)$(SONIC_SLAVE_BASE_BUILD)
526
+ $(Q)$(SONIC_SLAVE_USER_BUILD)
527
+
528
+ $(Q)$(DOCKER_RUN) \
529
+ $(SLAVE_IMAGE):$(SLAVE_TAG) \
530
+ bash -c "$(SONIC_BUILD_INSTRUCTION) $@;$(COLLECT_BUILD_VERSION); $(SLAVE_SHELL)"
531
+ $(Q)$(docker-image-cleanup)
452
532
453
533
docker-cleanup:
454
- $(docker-image-cleanup)
534
+ $(Q)$( docker-image-cleanup)
455
535
536
+ .PHONY: sonic-build-hooks
456
537
sonic-build-hooks:
457
- @pushd src/sonic-build-hooks; TRUSTED_GPG_URLS=$(TRUSTED_GPG_URLS) make all; popd
458
- @cp src/sonic-build-hooks/buildinfo/sonic-build-hooks* $(SLAVE_DIR)/buildinfo
538
+ $(Q)pushd src/sonic-build-hooks; TRUSTED_GPG_URLS=$(TRUSTED_GPG_URLS) $(MAKE) all; popd
539
+ $(Q)mkdir -p $(SLAVE_DIR)/buildinfo
540
+ $(Q)cp src/sonic-build-hooks/buildinfo/sonic-build-hooks* $(SLAVE_DIR)/buildinfo
459
541
460
- sonic-slave-base-build : sonic-build-hooks
542
+ sonic-slave-base-build : | sonic-build-hooks
461
543
ifeq ($(MULTIARCH_QEMU_ENVIRON), y)
462
- @$(DOCKER_MULTIARCH_CHECK)
463
- endif
464
- @$(OVERLAY_MODULE_CHECK)
465
- @echo Checking sonic-slave-base image: $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG)
466
- @docker inspect --type image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) &> /dev/null || \
467
- { [ $(ENABLE_DOCKER_BASE_PULL) == y ] && { echo Image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) not found. Pulling...; } && \
468
- $(DOCKER_BASE_PULL) && \
469
- { docker tag $(REGISTRY_SERVER):$(REGISTRY_PORT)/$(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) && \
470
- scripts/collect_docker_version_files.sh $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) target ; } } || \
471
- { echo Image $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) not found. Building... ; \
472
- $(DOCKER_BASE_BUILD) ; \
473
- scripts/collect_docker_version_files.sh $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) target ; }
544
+ $(Q)$(DOCKER_MULTIARCH_CHECK)
545
+ endif
546
+ $(Q)$(OVERLAY_MODULE_CHECK)
547
+ $(Q)$(SONIC_SLAVE_BASE_BUILD)
474
548
475
549
sonic-slave-build : sonic-slave-base-build
476
- @echo Checking sonic-slave image: $(SLAVE_IMAGE):$(SLAVE_TAG)
477
- @docker inspect --type image $(SLAVE_IMAGE):$(SLAVE_TAG) &> /dev/null || \
478
- { echo Image $(SLAVE_IMAGE):$(SLAVE_TAG) not found. Building... ; \
479
- $(DOCKER_BUILD) ; }
550
+ $(Q)$(SONIC_SLAVE_USER_BUILD)
480
551
481
552
sonic-slave-bash : sonic-slave-build
482
- @ $(DOCKER_RUN) -t $(SLAVE_IMAGE):$(SLAVE_TAG) bash
553
+ $(Q) $(DOCKER_RUN) -t $(SLAVE_IMAGE):$(SLAVE_TAG) bash
483
554
484
555
sonic-slave-run : sonic-slave-build
485
- @ $(DOCKER_RUN) $(SLAVE_IMAGE):$(SLAVE_TAG) bash -c "$(SONIC_RUN_CMDS)"
556
+ $(Q) $(DOCKER_RUN) $(SLAVE_IMAGE):$(SLAVE_TAG) bash -c "$(SONIC_RUN_CMDS)"
486
557
487
558
showtag:
488
- @ echo $(SLAVE_IMAGE):$(SLAVE_TAG)
489
- @ echo $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG)
559
+ $(Q) echo $(SLAVE_IMAGE):$(SLAVE_TAG)
560
+ $(Q) echo $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG)
490
561
491
562
init :
492
- @ git submodule update --init --recursive
493
- @ git submodule foreach --recursive '[ -f .git ] && echo "gitdir: $$(realpath --relative-to=. $$(cut -d" " -f2 .git))" > .git'
563
+ $(Q) git submodule update --init --recursive
564
+ $(Q) git submodule foreach --recursive '[ -f .git ] && echo "gitdir: $$(realpath --relative-to=. $$(cut -d" " -f2 .git))" > .git'
494
565
495
566
.ONESHELL : reset
496
567
reset :
497
- @ echo && echo -n "Warning! All local changes will be lost. Proceed? [y/N]: "
498
- @ read ans && (
568
+ $(Q) echo && echo -n "Warning! All local changes will be lost. Proceed? [y/N]: "
569
+ $(Q) read ans && (
499
570
if [ $$ans == y ]; then
500
571
echo "Resetting local repository. Please wait...";
501
572
sudo rm -rf fsroot*;
0 commit comments