X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=include%2Fimage.mk;h=8cc6e38cad672fb6fadff018c38cfaf2e1ddcfa8;hb=d27bce8d28eb129af0abd9c80a7756301b7d588a;hp=5970e58e1aaebe06f445f3eb3ed0f5364b97f574;hpb=c0dceae4bbb3aab0c4fcaf229925e8916d286797;p=openwrt%2Fstaging%2Fdedeckeh.git diff --git a/include/image.mk b/include/image.mk index 5970e58e1a..8cc6e38cad 100644 --- a/include/image.mk +++ b/include/image.mk @@ -11,17 +11,30 @@ include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/host.mk include $(INCLUDE_DIR)/version.mk include $(INCLUDE_DIR)/image-commands.mk + +ifndef IB + ifdef CONFIG_TARGET_PER_DEVICE_ROOTFS + TARGET_PER_DEVICE_ROOTFS := 1 + endif +endif + include $(INCLUDE_DIR)/image-legacy.mk +ifdef TARGET_PER_DEVICE_ROOTFS + include $(INCLUDE_DIR)/rootfs.mk +endif + override MAKE:=$(_SINGLE)$(SUBMAKE) override NO_TRACE_MAKE:=$(_SINGLE)$(NO_TRACE_MAKE) target_params = $(subst +,$(space),$*) param_get = $(patsubst $(1)=%,%,$(filter $(1)=%,$(2))) +param_get_default = $(firstword $(call param_get,$(1),$(2)) $(3)) param_mangle = $(subst $(space),_,$(strip $(1))) param_unmangle = $(subst _,$(space),$(1)) -mkfs_target_dir = $(TARGET_DIR) +mkfs_packages_id = $(shell echo $(sort $(1)) | md5sum | head -c 8) +mkfs_target_dir = $(if $(call param_get,pkg,$(1)),$(KDIR)/target-dir-$(call param_get,pkg,$(1)),$(TARGET_DIR)) KDIR=$(KERNEL_BUILD_DIR) KDIR_TMP=$(KDIR)/tmp @@ -240,22 +253,23 @@ endef define Image/mkfs/prepare/default # Use symbolic permissions to avoid clobbering SUID/SGID/sticky bits - - $(FIND) $(TARGET_DIR) -type f -not -perm /0100 -not -name 'ssh_host*' -not -name 'shadow' -print0 | $(XARGS) -0 chmod u+rw,g+r,o+r - - $(FIND) $(TARGET_DIR) -type f -perm /0100 -print0 | $(XARGS) -0 chmod u+rwx,g+rx,o+rx - - $(FIND) $(TARGET_DIR) -type d -print0 | $(XARGS) -0 chmod u+rwx,g+rx,o+rx - $(INSTALL_DIR) $(TARGET_DIR)/tmp $(TARGET_DIR)/overlay - chmod 1777 $(TARGET_DIR)/tmp + - $(FIND) $(1) -type f -not -perm /0100 -not -name 'ssh_host*' -not -name 'shadow' -print0 | $(XARGS) -0 chmod u+rw,g+r,o+r + - $(FIND) $(1) -type f -perm /0100 -print0 | $(XARGS) -0 chmod u+rwx,g+rx,o+rx + - $(FIND) $(1) -type d -print0 | $(XARGS) -0 chmod u+rwx,g+rx,o+rx + $(INSTALL_DIR) $(1)/tmp $(1)/overlay + chmod 1777 $(1)/tmp endef define Image/mkfs/prepare - $(call Image/mkfs/prepare/default) + $(call Image/mkfs/prepare/default,$(1)) endef - -define Image/Checksum - ( cd ${BIN_DIR} ; \ - $(FIND) -maxdepth 1 -type f \! -name 'md5sums' -printf "%P\n" | sort | xargs $1 > $2 \ - ) +define Image/Manifest + $(STAGING_DIR_HOST)/bin/opkg \ + --offline-root $(TARGET_DIR) \ + --add-arch all:100 \ + --add-arch $(if $(ARCH_PACKAGES),$(ARCH_PACKAGES),$(BOARD)):200 list-installed > \ + $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).manifest endef ifdef CONFIG_TARGET_ROOTFS_TARGZ @@ -272,6 +286,35 @@ ifdef CONFIG_TARGET_ROOTFS_CPIOGZ 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_cur_target_dir = $(call mkfs_target_dir,pkg=$(target_params)) + +opkg_target = \ + $(call opkg,$(mkfs_cur_target_dir)) \ + -f $(mkfs_cur_target_dir).conf \ + -l $(mkfs_cur_target_dir).tmp + +target-dir-%: FORCE + rm -rf $(mkfs_cur_target_dir) $(mkfs_cur_target_dir).opkg + $(CP) $(TARGET_DIR) $(mkfs_cur_target_dir) + mv $(mkfs_cur_target_dir)/etc/opkg $(mkfs_cur_target_dir).opkg + echo 'src default file://$(PACKAGE_DIR_ALL)' > $(mkfs_cur_target_dir).conf + $(if $(call opkg_package_files,$(mkfs_packages_add)), \ + $(opkg_target) update && \ + $(opkg_target) install \ + $(call opkg_package_files,$(mkfs_packages_add))) + $(if $(mkfs_packages_remove), \ + $(call opkg,$(mkfs_cur_target_dir)) remove \ + $(mkfs_packages_remove)) + $(call Image/mkfs/prepare,$(mkfs_cur_target_dir)) + $(call prepare_rootfs,$(mkfs_cur_target_dir)) + mv $(mkfs_cur_target_dir).opkg $(mkfs_cur_target_dir)/etc/opkg + rm -rf \ + $(mkfs_cur_target_dir).conf \ + $(mkfs_cur_target_dir).tmp + $(KDIR)/root.%: kernel_prepare $(call Image/mkfs/$(word 1,$(target_params)),$(target_params)) @@ -310,7 +353,8 @@ define Device/Init PAGESIZE := SUBPAGESIZE := VID_HDR_OFFSET := - UBINIZE_OPTS := -E 5 + UBINIZE_OPTS := + UBINIZE_PARTS := MKUBIFS_OPTS := FS_OPTIONS/ubifs = $$(MKUBIFS_OPTS) @@ -319,16 +363,17 @@ define Device/Init DEVICE_DTS_DIR := BOARD_NAME := + UIMAGE_NAME := FILESYSTEMS := $(TARGET_FILESYSTEMS) endef DEFAULT_DEVICE_VARS := \ DEVICE_NAME KERNEL KERNEL_INITRAMFS KERNEL_INITRAMFS_IMAGE \ - DEVICE_DTS DEVICE_DTS_DIR BOARD_NAME \ + DEVICE_DTS DEVICE_DTS_DIR BOARD_NAME CMDLINE \ UBOOTENV_IN_UBI KERNEL_IN_UBI \ BLOCKSIZE PAGESIZE SUBPAGESIZE VID_HDR_OFFSET \ - UBINIZE_OPTS + UBINIZE_OPTS UIMAGE_NAME UBINIZE_PARTS define Device/ExportVar $(1) : $(2):=$$($(2)) @@ -347,6 +392,10 @@ endif define Device/Check/Common _PROFILE_SET = $$(strip $$(foreach profile,$$(PROFILES) DEVICE_$(1),$$(call DEVICE_CHECK_PROFILE,$$(profile)))) + ifdef TARGET_PER_DEVICE_ROOTFS + ROOTFS_ID/$(1) := $$(if $$(_PROFILE_SET),$$(call mkfs_packages_id,$$(DEVICE_PACKAGES))) + PACKAGES_$$(ROOTFS_ID/$(1)) := $$(DEVICE_PACKAGES) + endif endef define Device/Check @@ -389,7 +438,6 @@ define Device/Build/compile endef define Device/Build/kernel - _KERNEL_IMAGES += $$(KDIR_KERNEL_NAME) $(KDIR)/$$(KERNEL_NAME):: image_prepare $$(_TARGET): $$(if $$(KERNEL_INSTALL),$(BIN_DIR)/$$(KERNEL_IMAGE)) $(call Device/Export,$$(KDIR_KERNEL_IMAGE),$(1)) @@ -409,7 +457,16 @@ endef define Device/Build/image $$(_TARGET): $(BIN_DIR)/$(call IMAGE_NAME,$(1),$(2)) $(eval $(call Device/Export,$(KDIR)/tmp/$(call IMAGE_NAME,$(1),$(2)),$(1))) - $(KDIR)/tmp/$(call IMAGE_NAME,$(1),$(2)): $$(KDIR_KERNEL_IMAGE) $(KDIR)/root.$(1)$$(if $$(FS_OPTIONS/$(1)),+fs=$$(call param_mangle,$$(FS_OPTIONS/$(1)))) + ROOTFS/$(1)/$(3) := \ + $(KDIR)/root.$(1)$$(strip \ + $$(if $$(FS_OPTIONS/$(1)),+fs=$$(call param_mangle,$$(FS_OPTIONS/$(1)))) \ + )$$(strip \ + $(if $(TARGET_PER_DEVICE_ROOTFS),+pkg=$$(ROOTFS_ID/$(3))) \ + ) + ifndef IB + $$(ROOTFS/$(1)/$(3)): $(if $(TARGET_PER_DEVICE_ROOTFS),target-dir-$$(ROOTFS_ID/$(3))) + endif + $(KDIR)/tmp/$(call IMAGE_NAME,$(1),$(2)): $$(KDIR_KERNEL_IMAGE) $$(ROOTFS/$(1)/$(3)) @rm -f $$@ [ -f $$(word 1,$$^) -a -f $$(word 2,$$^) ] $$(call concat_cmd,$(if $(IMAGE/$(2)/$(1)),$(IMAGE/$(2)/$(1)),$(IMAGE/$(2)))) @@ -493,7 +550,7 @@ define BuildImage endif mkfs_prepare: image_prepare - $(call Image/mkfs/prepare) + $(call Image/mkfs/prepare,$(TARGET_DIR)) kernel_prepare: mkfs_prepare $(call Image/Build/targz) @@ -515,7 +572,6 @@ define BuildImage $(MAKE) legacy-images install: install-images - $(call Image/Checksum,md5sum --binary,md5sums) - $(call Image/Checksum,openssl dgst -sha256,sha256sums) + $(call Image/Manifest) endef