X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=include%2Fimage.mk;h=26da4d68193ea6653b0cc74562a56d4e5991a58f;hb=bc3783d22185513b0882fd3eb0530041bc8f0c7a;hp=771f5b2c76e2cd176acc5d7f8d9672650795a253;hpb=5862f01ef71e7ec75394e877e74e781b7d08a4d3;p=oweals%2Fopenwrt.git diff --git a/include/image.mk b/include/image.mk index 771f5b2c76..26da4d6819 100644 --- a/include/image.mk +++ b/include/image.mk @@ -30,7 +30,7 @@ param_get_default = $(firstword $(call param_get,$(1),$(2)) $(3)) param_mangle = $(subst $(space),_,$(strip $(1))) param_unmangle = $(subst _,$(space),$(1)) -mkfs_packages_id = $(shell echo $(sort $(1)) | mkhash md5 | head -c 8) +mkfs_packages_id = $(shell echo $(sort $(1)) | mkhash md5 | cut -b1-8) mkfs_target_dir = $(if $(call param_get,pkg,$(1)),$(KDIR)/target-dir-$(call param_get,pkg,$(1)),$(TARGET_DIR)) KDIR=$(KERNEL_BUILD_DIR) @@ -42,6 +42,9 @@ 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 +IMG_PART_SIGNATURE:=$(shell echo $(SOURCE_DATE_EPOCH)$(LINUX_VERMAGIC) | mkhash md5 | cut -b1-8) MKFS_DEVTABLE_OPT := -D $(INCLUDE_DIR)/device_table.txt @@ -104,7 +107,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, \ @@ -140,6 +143,7 @@ endef define Image/BuildKernel/MkFIT $(TOPDIR)/scripts/mkits.sh \ -D $(1) -o $(KDIR)/fit-$(1).its -k $(2) $(if $(3),-d $(3)) -C $(4) -a $(5) -e $(6) \ + -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config@1") \ -A $(LINUX_KARCH) -v $(LINUX_VERSION) PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/fit-$(1).its $(KDIR)/fit-$(1)$(7).itb endef @@ -151,6 +155,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 @@ -163,7 +204,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 @@ -202,8 +243,7 @@ define Image/mkfs/squashfs $(STAGING_DIR_HOST)/bin/mksquashfs4 $(call mkfs_target_dir,$(1)) $@ \ -nopad -noappend -root-owned \ -comp $(SQUASHFSCOMP) $(SQUASHFSOPT) \ - -processors 1 \ - $(if $(SOURCE_DATE_EPOCH),-fixed-time $(SOURCE_DATE_EPOCH)) + -processors 1 endef # $(1): board name @@ -247,11 +287,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) \ + $(STAGING_DIR_HOST)/bin/make_ext4fs -L rootfs \ + -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)) \ @@ -263,9 +301,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 @@ -273,13 +328,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 = \ @@ -307,7 +362,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 @@ -320,6 +390,7 @@ define Device/Init CMDLINE:= IMAGES := + ARTIFACTS := IMAGE_PREFIX := $(IMG_PREFIX)-$(1) IMAGE_NAME = $$(IMAGE_PREFIX)-$$(1)-$$(2) KERNEL_PREFIX = $$(IMAGE_PREFIX) @@ -347,7 +418,9 @@ define Device/Init FS_OPTIONS/ubifs = $$(MKUBIFS_OPTS) DEVICE_DTS := + DEVICE_DTS_CONFIG := DEVICE_DTS_DIR := + SOC := BOARD_NAME := UIMAGE_NAME := @@ -355,15 +428,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_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 SOC 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)) @@ -391,6 +471,7 @@ endef define Device/Check/Common _PROFILE_SET = $$(strip $$(foreach profile,$$(PROFILES) DEVICE_$(1),$$(call DEVICE_CHECK_PROFILE,$$(profile)))) + DEVICE_PACKAGES += $$(call extra_packages,$$(DEVICE_PACKAGES)) ifdef TARGET_PER_DEVICE_ROOTFS $$(eval $$(call merge_packages,_PACKAGES,$$(DEVICE_PACKAGES) $$(call DEVICE_EXTRA_PACKAGES,$(1)))) ROOTFS_ID/$(1) := $$(if $$(_PROFILE_SET),$$(call mkfs_packages_id,$$(_PACKAGES))) @@ -492,10 +573,52 @@ 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))) + + .IGNORE: $(BIN_DIR)/$(IMAGE_PREFIX)-$(1) + + $(BIN_DIR)/$(IMAGE_PREFIX)-$(1): $(KDIR)/tmp/$(IMAGE_PREFIX)-$(1) + cp $$^ $$@ 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)) @@ -505,19 +628,43 @@ define Device/Build $$(eval $$(foreach image,$$(IMAGES), \ $$(foreach fs,$$(filter $(TARGET_FILESYSTEMS),$$(FILESYSTEMS)), \ $$(call Device/Build/image,$$(fs),$$(image),$(1))))) + + $$(eval $$(foreach artifact,$$(ARTIFACTS), \ + $$(call Device/Build/artifact,$$(artifact)))) + 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 @@ -560,7 +707,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: @@ -584,7 +731,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)