@@ -448,6 +448,34 @@ else
448
448
$(info SONiC Build System for $(CONFIGURED_PLATFORM ) :$(CONFIGURED_ARCH ) )
449
449
endif
450
450
451
+ # Definition of SONIC_RFS_TARGETS
452
+ define rfs_get_installer_dependencies
453
+ $(call rfs_build_target_name,$(1 ) ,$($(1 ) _MACHINE) )
454
+ endef
455
+
456
+ define rfs_build_target_name
457
+ $(1 ) __$(2 ) __rfs.squashfs
458
+ endef
459
+
460
+ define rfs_define_target
461
+ $(eval rfs_target=$(call rfs_build_target_name,$(1 ) ,$($(1 ) _MACHINE) ) )
462
+ $(eval $(rfs_target ) _INSTALLER=$(1 ) )
463
+ $(eval $(rfs_target ) _MACHINE=$($(1 ) _MACHINE) )
464
+ $(eval SONIC_RFS_TARGETS+=$(rfs_target ) )
465
+
466
+ $(if $($(1 ) _DEPENDENT_MACHINE) ,\
467
+ $(eval dependent_rfs_target=$(call rfs_build_target_name,$(1 ) ,$($(1 ) _DEPENDENT_MACHINE) ) )
468
+ $(eval $(dependent_rfs_target ) _INSTALLER=$(1 ) )
469
+ $(eval $(dependent_rfs_target ) _MACHINE=$($(1 ) _DEPENDENT_MACHINE) )
470
+ $(eval SONIC_RFS_TARGETS+=$(dependent_rfs_target ) )
471
+ $(eval $(rfs_target ) _DEPENDENT_RFS=$(dependent_rfs_target ) ) )
472
+ endef
473
+
474
+ $(foreach installer,$(SONIC_INSTALLERS),$(eval $(call rfs_define_target,$(installer))))
475
+ $(foreach installer, $(SONIC_INSTALLERS), $(eval $(installer)_RFS_DEPENDS=$(call rfs_get_installer_dependencies,$(installer))))
476
+
477
+ SONIC_TARGET_LIST += $(addprefix $(TARGET_PATH ) /, $(SONIC_RFS_TARGETS ) )
478
+
451
479
# Overwrite the buildinfo in slave container
452
480
ifeq ($(filter clean,$(MAKECMDGOALS ) ) ,)
453
481
$(shell DBGOPT='$(DBGOPT)' scripts/prepare_slave_container_buildinfo.sh $(SLAVE_DIR) $(CONFIGURED_ARCH) $(BLDENV))
@@ -1210,6 +1238,62 @@ $(DOCKER_LOAD_TARGETS) : $(TARGET_PATH)/%.gz-load : .platform docker-start $$(TA
1210
1238
# # Installers
1211
1239
# ##############################################################################
1212
1240
1241
+ $(addprefix $(TARGET_PATH ) /, $(SONIC_RFS_TARGETS ) ) : $(TARGET_PATH ) /% : \
1242
+ .platform \
1243
+ build_debian.sh \
1244
+ $(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(INITRAMFS_TOOLS) $(LINUX_KERNEL)) \
1245
+ $(addsuffix -install,$(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(DEBOOTSTRAP))) \
1246
+ $$(addprefix $(TARGET_PATH)/,$$($$*_DEPENDENT_RFS)) \
1247
+ $(call dpkg_depend,$(TARGET_PATH)/%.dep)
1248
+ $(HEADER)
1249
+
1250
+ $(call LOAD_CACHE,$*,$@)
1251
+
1252
+ # Skip building the target if it is already loaded from cache
1253
+ if [ -z '$($*_CACHE_LOADED)' ] ; then
1254
+
1255
+ $(eval installer=$($*_INSTALLER))
1256
+ $(eval machine=$($*_MACHINE))
1257
+
1258
+ export debs_path="$(IMAGE_DISTRO_DEBS_PATH)"
1259
+ export initramfs_tools="$(IMAGE_DISTRO_DEBS_PATH)/$(INITRAMFS_TOOLS)"
1260
+ export linux_kernel="$(IMAGE_DISTRO_DEBS_PATH)/$(LINUX_KERNEL)"
1261
+ export kversion="$(KVERSION)"
1262
+ export image_type="$($(installer)_IMAGE_TYPE)"
1263
+ export sonicadmin_user="$(USERNAME)"
1264
+ export sonic_asic_platform="$(patsubst %-$(CONFIGURED_ARCH),%,$(CONFIGURED_PLATFORM))"
1265
+ export RFS_SPLIT_FIRST_STAGE=y
1266
+ export RFS_SPLIT_LAST_STAGE=n
1267
+
1268
+ j2 -f env files/initramfs-tools/union-mount.j2 onie-image.conf > files/initramfs-tools/union-mount
1269
+ j2 -f env files/initramfs-tools/arista-convertfs.j2 onie-image.conf > files/initramfs-tools/arista-convertfs
1270
+
1271
+ RFS_SQUASHFS_NAME=$* \
1272
+ USERNAME="$(USERNAME)" \
1273
+ PASSWORD="$(PASSWORD)" \
1274
+ CHANGE_DEFAULT_PASSWORD="$(CHANGE_DEFAULT_PASSWORD)" \
1275
+ TARGET_MACHINE=$(machine) \
1276
+ IMAGE_TYPE=$($(installer)_IMAGE_TYPE) \
1277
+ TARGET_PATH=$(TARGET_PATH) \
1278
+ TRUSTED_GPG_URLS=$(TRUSTED_GPG_URLS) \
1279
+ SONIC_ENABLE_SECUREBOOT_SIGNATURE="$(SONIC_ENABLE_SECUREBOOT_SIGNATURE)" \
1280
+ SIGNING_KEY="$(SIGNING_KEY)" \
1281
+ SIGNING_CERT="$(SIGNING_CERT)" \
1282
+ PACKAGE_URL_PREFIX=$(PACKAGE_URL_PREFIX) \
1283
+ DBGOPT='$(DBGOPT)' \
1284
+ SONIC_VERSION_CACHE=$(SONIC_VERSION_CACHE) \
1285
+ MULTIARCH_QEMU_ENVIRON=$(MULTIARCH_QEMU_ENVIRON) \
1286
+ CROSS_BUILD_ENVIRON=$(CROSS_BUILD_ENVIRON) \
1287
+ MASTER_KUBERNETES_VERSION=$(MASTER_KUBERNETES_VERSION) \
1288
+ MASTER_CRI_DOCKERD=$(MASTER_CRI_DOCKERD) \
1289
+ ./build_debian.sh $(LOG)
1290
+
1291
+ $(call SAVE_CACHE,$*,$@)
1292
+
1293
+ fi
1294
+
1295
+ $(FOOTER)
1296
+
1213
1297
# targets for building installers with base image
1214
1298
$(addprefix $(TARGET_PATH ) /, $(SONIC_INSTALLERS ) ) : $(TARGET_PATH ) /% : \
1215
1299
.platform \
@@ -1264,7 +1348,9 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \
1264
1348
$(addprefix $(FILES_PATH)/,$($(SONIC_CTRMGRD)_FILES)) \
1265
1349
$(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_YANG_MGMT_PY3)) \
1266
1350
$(addprefix $(PYTHON_WHEELS_PATH)/,$(SYSTEM_HEALTH)) \
1267
- $(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_HOST_SERVICES_PY3))
1351
+ $(addprefix $(PYTHON_WHEELS_PATH)/,$(SONIC_HOST_SERVICES_PY3)) \
1352
+ $$(addprefix $(TARGET_PATH)/,$$($$*_RFS_DEPENDS))
1353
+
1268
1354
$(HEADER)
1269
1355
# Pass initramfs and linux kernel explicitly. They are used for all platforms
1270
1356
export debs_path="$(IMAGE_DISTRO_DEBS_PATH)"
@@ -1420,13 +1506,17 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \
1420
1506
chmod +x sonic_debian_extension.sh,
1421
1507
)
1422
1508
1509
+ export RFS_SPLIT_FIRST_STAGE=n
1510
+ export RFS_SPLIT_LAST_STAGE=y
1511
+
1423
1512
# Build images for the MACHINE, DEPENDENT_MACHINE defined.
1424
1513
$(foreach dep_machine, $($*_MACHINE) $($*_DEPENDENT_MACHINE), \
1425
1514
DEBUG_IMG="$(INSTALL_DEBUG_TOOLS)" \
1426
1515
DEBUG_SRC_ARCHIVE_DIRS="$(DBG_SRC_ARCHIVE)" \
1427
1516
DEBUG_SRC_ARCHIVE_FILE="$(DBG_SRC_ARCHIVE_FILE)" \
1428
1517
scripts/dbg_files.sh
1429
1518
1519
+ RFS_SQUASHFS_NAME=$*__$(dep_machine)__rfs.squashfs \
1430
1520
DEBUG_IMG="$(INSTALL_DEBUG_TOOLS)" \
1431
1521
DEBUG_SRC_ARCHIVE_FILE="$(DBG_SRC_ARCHIVE_FILE)" \
1432
1522
USERNAME="$(USERNAME)" \
@@ -1521,7 +1611,9 @@ SONIC_CLEAN_TARGETS += $(addsuffix -clean,$(addprefix $(TARGET_PATH)/, \
1521
1611
$(SONIC_DOCKER_IMAGES ) \
1522
1612
$(SONIC_DOCKER_DBG_IMAGES ) \
1523
1613
$(SONIC_SIMPLE_DOCKER_IMAGES ) \
1524
- $(SONIC_INSTALLERS ) ) )
1614
+ $(SONIC_INSTALLERS ) \
1615
+ $(SONIC_RFS_TARGETS ) ) )
1616
+
1525
1617
$(SONIC_CLEAN_TARGETS ) :: $(TARGET_PATH ) /% -clean : .platform
1526
1618
$(Q ) rm -rf $(TARGET_PATH ) /$* target/versions/dockers/$(subst .gz,,$* )
1527
1619
0 commit comments