From 4e08c225cad1c8aaebb46d730ac9ca8822ea1f8f Mon Sep 17 00:00:00 2001 From: LEAN-ESX Date: Sat, 19 Oct 2019 11:35:16 -0700 Subject: [PATCH] build: allow overriding default selection state for devices --- include/image.mk | 167 ++++++++++++++++++++++++++---- scripts/metadata.pm | 4 +- scripts/target-metadata.pl | 2 +- target/linux/rb532/image/Makefile | 1 + 4 files changed, 150 insertions(+), 24 deletions(-) diff --git a/include/image.mk b/include/image.mk index f0d3379bb..3e6c9adc6 100644 --- a/include/image.mk +++ b/include/image.mk @@ -42,6 +42,8 @@ IMG_PREFIX_VERNUM:=$(if $(CONFIG_VERSION_FILENAMES),$(call sanitize,$(VERSION_NU IMG_PREFIX_VERCODE:=$(if $(CONFIG_VERSION_CODE_FILENAMES),$(call sanitize,$(VERSION_CODE))-) IMG_PREFIX:=$(VERSION_DIST_SANITIZED)-$(IMG_PREFIX_VERNUM)$(IMG_PREFIX_VERCODE)$(IMG_PREFIX_EXTRA)$(BOARD)$(if $(SUBTARGET),-$(SUBTARGET)) +IMG_ROOTFS:=$(IMG_PREFIX)-rootfs +IMG_COMBINED:=$(IMG_PREFIX)-combined MKFS_DEVTABLE_OPT := -D $(INCLUDE_DIR)/device_table.txt @@ -104,7 +106,7 @@ define add_jffs2_mark echo -ne '\xde\xad\xc0\xde' >> $(1) endef -PROFILE_SANITIZED := $(call sanitize,$(PROFILE)) +PROFILE_SANITIZED := $(call tolower,$(subst DEVICE_,,$(subst $(space),-,$(PROFILE)))) define split_args $(foreach data, \ @@ -152,6 +154,43 @@ ifdef CONFIG_TARGET_IMAGES_GZIP endef endif + +# Disable noisy checks by default as in upstream +ifeq ($(strip $(call kernel_patchver_ge,4.7.0)),1) + DTC_FLAGS += -Wno-unit_address_vs_reg +endif +ifeq ($(strip $(call kernel_patchver_ge,4.12.0)),1) + DTC_FLAGS += \ + -Wno-unit_address_vs_reg \ + -Wno-simple_bus_reg \ + -Wno-unit_address_format \ + -Wno-pci_bridge \ + -Wno-pci_device_bus_num \ + -Wno-pci_device_reg +endif +ifeq ($(strip $(call kernel_patchver_ge,4.17.0)),1) + DTC_FLAGS += \ + -Wno-avoid_unnecessary_addr_size \ + -Wno-alias_paths +endif +ifeq ($(strip $(call kernel_patchver_ge,4.18.0)),1) + DTC_FLAGS += \ + -Wno-graph_child_address \ + -Wno-graph_port \ + -Wno-unique_unit_address +endif + +define Image/pad-to + dd if=$(1) of=$(1).new bs=$(2) conv=sync + mv $(1).new $(1) +endef + +ROOTFS_PARTSIZE=$(shell echo $$(($(CONFIG_TARGET_ROOTFS_PARTSIZE)*1024*1024))) + +define Image/pad-root-squashfs + $(call Image/pad-to,$(KDIR)/root.squashfs,$(if $(1),$(1),$(ROOTFS_PARTSIZE))) +endef + # $(1) source dts file # $(2) target dtb file # $(3) extra CPP flags @@ -164,7 +203,7 @@ define Image/BuildDTB -undef -D__DTS__ $(3) \ -o $(2).tmp $(1) $(LINUX_DIR)/scripts/dtc/dtc -O dtb \ - -i$(dir $(1)) $(4) \ + -i$(dir $(1)) $(DTC_FLAGS) $(4) \ -o $(2) $(2).tmp $(RM) $(2).tmp endef @@ -203,8 +242,7 @@ define Image/mkfs/squashfs $(STAGING_DIR_HOST)/bin/mksquashfs4 $(call mkfs_target_dir,$(1)) $@ \ -nopad -noappend -root-owned \ -comp $(SQUASHFSCOMP) $(SQUASHFSOPT) \ - -processors 16 \ - $(if $(SOURCE_DATE_EPOCH),-fixed-time $(SOURCE_DATE_EPOCH)) + -processors 1 endef # $(1): board name @@ -248,11 +286,9 @@ define Image/mkfs/ubifs -o $@ -d $(call mkfs_target_dir,$(1)) endef -E2SIZE=$(shell echo $$(($(CONFIG_TARGET_ROOTFS_PARTSIZE)*1024*1024))) - define Image/mkfs/ext4 $(STAGING_DIR_HOST)/bin/make_ext4fs \ - -l $(E2SIZE) -b $(CONFIG_TARGET_EXT4_BLOCKSIZE) \ + -l $(ROOTFS_PARTSIZE) -b $(CONFIG_TARGET_EXT4_BLOCKSIZE) \ $(if $(CONFIG_TARGET_EXT4_RESERVED_PCT),-m $(CONFIG_TARGET_EXT4_RESERVED_PCT)) \ $(if $(CONFIG_TARGET_EXT4_JOURNAL),,-J) \ $(if $(SOURCE_DATE_EPOCH),-T $(SOURCE_DATE_EPOCH)) \ @@ -264,9 +300,26 @@ define Image/Manifest $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).manifest endef +define Image/gzip-ext4-padded-squashfs + + define Image/Build/squashfs + $(call Image/pad-root-squashfs) + endef + + ifneq ($(CONFIG_TARGET_IMAGES_GZIP),) + define Image/Build/gzip/ext4 + $(call Image/Build/gzip,ext4) + endef + define Image/Build/gzip/squashfs + $(call Image/Build/gzip,squashfs) + endef + endif + +endef + ifdef CONFIG_TARGET_ROOTFS_TARGZ define Image/Build/targz - $(TAR) -cp --numeric-owner --owner=0 --group=0 --sort=name \ + $(TAR) -cp --numeric-owner --owner=0 --group=0 --mode=a-s --sort=name \ $(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \ -C $(TARGET_DIR)/ . | gzip -9n > $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))-rootfs.tar.gz endef @@ -274,13 +327,13 @@ endif ifdef CONFIG_TARGET_ROOTFS_CPIOGZ define Image/Build/cpiogz - ( cd $(TARGET_DIR); find . | cpio -o -H newc -R root:root | gzip -9n >$(BIN_DIR)/$(IMG_PREFIX)-rootfs.cpio.gz ) + ( cd $(TARGET_DIR); find . | cpio -o -H newc -R root:root | gzip -9n >$(BIN_DIR)/$(IMG_ROOTFS).cpio.gz ) endef endif mkfs_packages = $(filter-out @%,$(PACKAGES_$(call param_get,pkg,pkg=$(target_params)))) -mkfs_packages_add = $(filter-out -%,$(mkfs_packages)) -mkfs_packages_remove = $(patsubst -%,%,$(filter -%,$(mkfs_packages))) +mkfs_packages_add = $(foreach pkg,$(filter-out -%,$(mkfs_packages)),$(pkg)$(call GetABISuffix,$(pkg))) +mkfs_packages_remove = $(foreach pkg,$(patsubst -%,%,$(filter -%,$(mkfs_packages))),$(pkg)$(call GetABISuffix,$(pkg))) mkfs_cur_target_dir = $(call mkfs_target_dir,pkg=$(target_params)) opkg_target = \ @@ -308,7 +361,22 @@ $(KDIR)/root.%: kernel_prepare define Device/InitProfile PROFILES := $(PROFILE) - DEVICE_TITLE := + DEVICE_TITLE = $$(DEVICE_VENDOR) $$(DEVICE_MODEL)$$(if $$(DEVICE_VARIANT), $$(DEVICE_VARIANT)) + DEVICE_ALT0_TITLE = $$(DEVICE_ALT0_VENDOR) $$(DEVICE_ALT0_MODEL)$$(if $$(DEVICE_ALT0_VARIANT), $$(DEVICE_ALT0_VARIANT)) + DEVICE_ALT1_TITLE = $$(DEVICE_ALT1_VENDOR) $$(DEVICE_ALT1_MODEL)$$(if $$(DEVICE_ALT1_VARIANT), $$(DEVICE_ALT1_VARIANT)) + DEVICE_ALT2_TITLE = $$(DEVICE_ALT2_VENDOR) $$(DEVICE_ALT2_MODEL)$$(if $$(DEVICE_ALT2_VARIANT), $$(DEVICE_ALT2_VARIANT)) + DEVICE_VENDOR := + DEVICE_MODEL := + DEVICE_VARIANT := + DEVICE_ALT0_VENDOR := + DEVICE_ALT0_MODEL := + DEVICE_ALT0_VARIANT := + DEVICE_ALT1_VENDOR := + DEVICE_ALT1_MODEL := + DEVICE_ALT1_VARIANT := + DEVICE_ALT2_VENDOR := + DEVICE_ALT2_MODEL := + DEVICE_ALT2_VARIANT := DEVICE_PACKAGES := DEVICE_DESCRIPTION = Build firmware images for $$(DEVICE_TITLE) endef @@ -358,15 +426,22 @@ define Device/Init IMAGE_METADATA := FILESYSTEMS := $(TARGET_FILESYSTEMS) + + UBOOT_PATH := $(STAGING_DIR_IMAGE)/uboot-$(1) + + DEFAULT := endef DEFAULT_DEVICE_VARS := \ - DEVICE_NAME KERNEL KERNEL_INITRAMFS KERNEL_SIZE KERNEL_INITRAMFS_IMAGE \ - KERNEL_LOADADDR DEVICE_DTS DEVICE_DTS_CONFIG DEVICE_DTS_DIR BOARD_NAME \ - CMDLINE UBOOTENV_IN_UBI KERNEL_IN_UBI \ - BLOCKSIZE PAGESIZE SUBPAGESIZE VID_HDR_OFFSET \ - UBINIZE_OPTS UIMAGE_NAME UBINIZE_PARTS \ - SUPPORTED_DEVICES IMAGE_METADATA + DEVICE_NAME KERNEL KERNEL_INITRAMFS KERNEL_INITRAMFS_IMAGE KERNEL_SIZE \ + CMDLINE UBOOTENV_IN_UBI KERNEL_IN_UBI BLOCKSIZE PAGESIZE SUBPAGESIZE \ + VID_HDR_OFFSET UBINIZE_OPTS UBINIZE_PARTS MKUBIFS_OPTS DEVICE_DTS \ + DEVICE_DTS_CONFIG DEVICE_DTS_DIR BOARD_NAME UIMAGE_NAME SUPPORTED_DEVICES \ + IMAGE_METADATA KERNEL_ENTRY KERNEL_LOADADDR UBOOT_PATH DEVICE_VENDOR \ + DEVICE_MODEL DEVICE_VARIANT \ + DEVICE_ALT0_VENDOR DEVICE_ALT0_MODEL DEVICE_ALT0_VARIANT \ + DEVICE_ALT1_VENDOR DEVICE_ALT1_MODEL DEVICE_ALT1_VARIANT \ + DEVICE_ALT2_VENDOR DEVICE_ALT2_MODEL DEVICE_ALT2_VARIANT define Device/ExportVar $(1) : $(2):=$$($(2)) @@ -496,11 +571,37 @@ define Device/Build/image $(BIN_DIR)/$(call IMAGE_NAME,$(1),$(2)): $(KDIR)/tmp/$(call IMAGE_NAME,$(1),$(2)) cp $$^ $$@ - + $(if $(CONFIG_JSON_ADD_IMAGE_INFO), \ + DEVICE_ID="$(DEVICE_NAME)" \ + BIN_DIR="$(BIN_DIR)" \ + IMAGE_NAME="$(IMAGE_NAME)" \ + IMAGE_TYPE=$(word 1,$(subst ., ,$(2))) \ + IMAGE_PREFIX="$(IMAGE_PREFIX)" \ + DEVICE_VENDOR="$(DEVICE_VENDOR)" \ + DEVICE_MODEL="$(DEVICE_MODEL)" \ + DEVICE_VARIANT="$(DEVICE_VARIANT)" \ + DEVICE_ALT0_VENDOR="$(DEVICE_ALT0_VENDOR)" \ + DEVICE_ALT0_MODEL="$(DEVICE_ALT0_MODEL)" \ + DEVICE_ALT0_VARIANT="$(DEVICE_ALT0_VARIANT)" \ + DEVICE_ALT1_VENDOR="$(DEVICE_ALT1_VENDOR)" \ + DEVICE_ALT1_MODEL="$(DEVICE_ALT1_MODEL)" \ + DEVICE_ALT1_VARIANT="$(DEVICE_ALT1_VARIANT)" \ + DEVICE_ALT2_VENDOR="$(DEVICE_ALT2_VENDOR)" \ + DEVICE_ALT2_MODEL="$(DEVICE_ALT2_MODEL)" \ + DEVICE_ALT2_VARIANT="$(DEVICE_ALT2_VARIANT)" \ + DEVICE_TITLE="$(DEVICE_TITLE)" \ + TARGET="$(BOARD)" \ + SUBTARGET="$(SUBTARGET)" \ + VERSION_NUMBER="$(VERSION_NUMBER)" \ + VERSION_CODE="$(VERSION_CODE)" \ + SUPPORTED_DEVICES="$(SUPPORTED_DEVICES)" \ + $(TOPDIR)/scripts/json_add_image_info.py \ + ) endef define Device/Build/artifact $$(_TARGET): $(BIN_DIR)/$(IMAGE_PREFIX)-$(1) + $(eval $(call Device/Export,$(KDIR)/tmp/$(IMAGE_PREFIX)-$(1))) $(KDIR)/tmp/$(IMAGE_PREFIX)-$(1): $$(KDIR_KERNEL_IMAGE) @rm -f $$@ $$(call concat_cmd,$(ARTIFACT/$(1))) @@ -513,6 +614,8 @@ define Device/Build/artifact endef define Device/Build + $(shell rm -f $(BIN_DIR)/$(IMG_PREFIX)-$(1).json) + $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$(call Device/Build/initramfs,$(1))) $(call Device/Build/kernel,$(1)) @@ -530,15 +633,35 @@ endef define Device/DumpInfo Target-Profile: DEVICE_$(1) -Target-Profile-Name: $(DEVICE_TITLE) +Target-Profile-Name: $(DEVICE_DISPLAY) Target-Profile-Packages: $(DEVICE_PACKAGES) +Target-Profile-hasImageMetadata: $(if $(foreach image,$(IMAGES),$(findstring append-metadata,$(IMAGE/$(image)))),1,0) +Target-Profile-SupportedDevices: $(SUPPORTED_DEVICES) +$(if $(DEFAULT),Target-Profile-Default: $(DEFAULT)) Target-Profile-Description: $(DEVICE_DESCRIPTION) +$(if $(strip $(DEVICE_ALT0_TITLE)),Alternative device titles: +- $(DEVICE_ALT0_TITLE)) +$(if $(strip $(DEVICE_ALT1_TITLE)),- $(DEVICE_ALT1_TITLE)) +$(if $(strip $(DEVICE_ALT2_TITLE)),- $(DEVICE_ALT2_TITLE)) @@ endef define Device/Dump +ifneq ($$(strip $$(DEVICE_ALT0_TITLE)),) +DEVICE_DISPLAY = $$(DEVICE_ALT0_TITLE) ($$(DEVICE_TITLE)) +$$(info $$(call Device/DumpInfo,$(1))) +endif +ifneq ($$(strip $$(DEVICE_ALT1_TITLE)),) +DEVICE_DISPLAY = $$(DEVICE_ALT1_TITLE) ($$(DEVICE_TITLE)) +$$(info $$(call Device/DumpInfo,$(1))) +endif +ifneq ($$(strip $$(DEVICE_ALT2_TITLE)),) +DEVICE_DISPLAY = $$(DEVICE_ALT2_TITLE) ($$(DEVICE_TITLE)) +$$(info $$(call Device/DumpInfo,$(1))) +endif +DEVICE_DISPLAY = $$(DEVICE_TITLE) $$(eval $$(if $$(DEVICE_TITLE),$$(info $$(call Device/DumpInfo,$(1))))) endef @@ -581,7 +704,7 @@ define BuildImage $(call Image/Prepare) legacy-images-prepare-make: image_prepare - $(MAKE) legacy-images-prepare + $(MAKE) legacy-images-prepare BIN_DIR="$(BIN_DIR)" else image_prepare: @@ -605,7 +728,7 @@ define BuildImage legacy-images-make: install-images $(call Image/mkfs/ubifs/legacy) - $(MAKE) legacy-images + $(MAKE) legacy-images BIN_DIR="$(BIN_DIR)" install: install-images $(call Image/Manifest) diff --git a/scripts/metadata.pm b/scripts/metadata.pm index 4a5464edc..8ca963e75 100644 --- a/scripts/metadata.pm +++ b/scripts/metadata.pm @@ -140,7 +140,8 @@ sub parse_target_metadata($) { id => $1, name => $1, priority => 999, - packages => [] + packages => [], + default => "y if TARGET_ALL_PROFILES" }; $1 =~ /^DEVICE_/ and $target->{has_devices} = 1; push @{$target->{profiles}}, $profile; @@ -152,6 +153,7 @@ sub parse_target_metadata($) { }; /^Target-Profile-Packages:\s*(.*)\s*$/ and $profile->{packages} = [ split(/\s+/, $1) ]; /^Target-Profile-Description:\s*(.*)\s*/ and $profile->{desc} = get_multiline(*FILE); + /^Target-Profile-Default:\s*(.+)\s*$/ and $profile->{default} = $1; } close FILE; foreach my $target (@target) { diff --git a/scripts/target-metadata.pl b/scripts/target-metadata.pl index 47f489567..b4613a75d 100755 --- a/scripts/target-metadata.pl +++ b/scripts/target-metadata.pl @@ -292,7 +292,7 @@ EOF menuconfig TARGET_DEVICE_$target->{conf}_$profile->{id} bool "$profile->{name}" depends on TARGET_$target->{conf} - default y if TARGET_ALL_PROFILES + default $profile->{default} EOF my @pkglist = merge_package_lists($target->{packages}, $profile->{packages}); foreach my $pkg (@pkglist) { diff --git a/target/linux/rb532/image/Makefile b/target/linux/rb532/image/Makefile index 12265fe2c..195bb78a8 100644 --- a/target/linux/rb532/image/Makefile +++ b/target/linux/rb532/image/Makefile @@ -39,6 +39,7 @@ define Device/nand CMDLINE := ubi.mtd=1 ubi.block=0,rootfs root=/dev/ubiblock0_1 BOARD_NAME := rb532 SUPPORTED_DEVICES := rb532 + DEVICE_TITLE := rb532 NAND KERNEL_INITRAMFS := append-kernel | patch-cmdline | lzma | lzma-loader-elf KERNEL := $$(KERNEL_INITRAMFS) | kernel2minor -s 2048 -i 0 -c IMAGES := sysupgrade.bin