build: replace the deprecated find argument -perm +0100 with /0100 (#19480)
[openwrt/svn-archive/archive.git] / include / image.mk
index cdb1e48540c01be749ce0e771fe0a1a9ac2e1ab4..31689c7e6b8756baf2751a3cac7a8fec5a313199 100644 (file)
@@ -244,8 +244,8 @@ 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 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
@@ -268,6 +268,8 @@ define BuildImage/mkfs
   .PHONY: mkfs-$(1)
   mkfs-$(1): mkfs_prepare
        $(Image/mkfs/$(1))
+       $(call Build/mkfs/default,$(1))
+       $(call Build/mkfs/$(1),$(1))
   $(KDIR)/root.$(1): mkfs-$(1)
 
 endef
@@ -304,7 +306,18 @@ define Build/append-rootfs
 endef
 
 define Build/pad-rootfs
-       $(call prepare_generic_squashfs,$@)
+       $(call prepare_generic_squashfs,$@ $(1))
+endef
+
+define Build/pad-offset
+       let \
+               size="$$(stat -c%s $@)" \
+               pad="$(word 1, $(1))" \
+               offset="$(word 2, $(1))" \
+               pad="(pad - ((size + offset) % pad)) % pad" \
+               newsize='size + pad'; \
+               dd if=$@ of=$@.new bs=$$newsize count=1 conv=sync
+       mv $@.new $@
 endef
 
 define Build/check-size
@@ -322,18 +335,27 @@ define Device/Init
   KERNEL_SIZE:=
   CMDLINE:=
 
-  IMAGE_PREFIX := $(BIN_DIR)/$(IMG_PREFIX)-$(1)
+  IMAGE_PREFIX := $(IMG_PREFIX)-$(1)
   IMAGE_NAME = $$(IMAGE_PREFIX)-$$(1)-$$(2)
-  KERNEL_PREFIX = $$(if $$(KERNEL_INSTALL),$$(IMAGE_PREFIX),$(KDIR)/$(1))
-  KERNEL_INITRAMFS_PREFIX = $$(IMAGE_PREFIX)-initramfs
+  KERNEL_PREFIX = $(1)
   KERNEL_SUFFIX := -kernel.bin
   KERNEL_IMAGE = $$(KERNEL_PREFIX)$$(KERNEL_SUFFIX)
+  KERNEL_INITRAMFS_PREFIX = $$(IMAGE_PREFIX)-initramfs
+  KERNEL_INITRAMFS_IMAGE = $$(KERNEL_INITRAMFS_PREFIX)$$(KERNEL_SUFFIX)
   KERNEL_INSTALL :=
+  KERNEL_NAME := vmlinux
   KERNEL_SIZE :=
 
   FILESYSTEMS := $(TARGET_FILESYSTEMS)
+endef
 
-  BIN_KERNEL_IMAGE = $$(patsubst $$(KERNEL_PREFIX)%,$$(IMAGE_PREFIX)%,$$(KERNEL_IMAGE))
+define Device/ExportVar
+  $(1) : $(2):=$$($(2))
+
+endef
+define Device/Export
+  $(foreach var,$(DEVICE_VARS) KERNEL KERNEL_INITRAMFS,$(call Device/ExportVar,$(1),$(var)))
+  $(1) : FILESYSTEM:=$(2)
 endef
 
 define Device/Check
@@ -341,12 +363,12 @@ define Device/Check
 endef
 
 define Device/Build/initramfs
-  $$(_TARGET): $$(KERNEL_INITRAMFS_PREFIX)$$(KERNEL_SUFFIX)
+  $$(_TARGET): $(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE)
 
-  $$(KERNEL_INITRAMFS_PREFIX)$$(KERNEL_SUFFIX): $$(KERNEL_PREFIX)-initramfs$$(KERNEL_SUFFIX)
+  $(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/$$(KERNEL_INITRAMFS_IMAGE)
        cp $$^ $$@
 
-  $$(KERNEL_PREFIX)-initramfs$$(KERNEL_SUFFIX): $(KDIR)/vmlinux-initramfs
+  $(KDIR)/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/$$(KERNEL_NAME)-initramfs
        @rm -f $$@
        $$(call concat_cmd,$$(KERNEL_INITRAMFS))
 endef
@@ -359,22 +381,30 @@ define Device/Build/check_size
 endef
 
 define Device/Build/kernel
-  $$(_TARGET): $$(if $$(KERNEL_INSTALL),$$(BIN_KERNEL_IMAGE))
-  $$(BIN_KERNEL_IMAGE): $$(KERNEL_IMAGE)
+  $(KDIR)/$$(KERNEL_NAME): image_prepare
+  $$(_TARGET): $$(if $$(KERNEL_INSTALL),$(BIN_DIR)/$$(KERNEL_IMAGE))
+  $(BIN_DIR)/$$(KERNEL_IMAGE): $(KDIR)/$$(KERNEL_IMAGE)
        cp $$^ $$@
-  $$(KERNEL_IMAGE): $(KDIR)/vmlinux
+  $(KDIR)/$$(KERNEL_IMAGE): $(KDIR)/$$(KERNEL_NAME)
        @rm -f $$@
        $$(call concat_cmd,$$(KERNEL))
        $$(if $$(KERNEL_SIZE),$$(call Device/Build/check_size,$$(KERNEL_SIZE)))
 endef
 
 define Device/Build/image
-  $$(_TARGET): $(call IMAGE_NAME,$(1),$(2))
-  $(call IMAGE_NAME,$(1),$(2)): $$(KERNEL_IMAGE) $(KDIR)/root.$(1)
+  $$(_TARGET): $(BIN_DIR)/$(call IMAGE_NAME,$(1),$(2))
+  $(eval $(call Device/Export,$(KDIR)/$(KERNEL_IMAGE),$(1)))
+  $(eval $(call Device/Export,$(KDIR)/$(KERNEL_INITRAMFS_IMAGE),$(1)))
+  $(eval $(call Device/Export,$(KDIR)/$(call IMAGE_NAME,$(1),$(2)),$(1)))
+  $(KDIR)/$(call IMAGE_NAME,$(1),$(2)): $(KDIR)/$$(KERNEL_IMAGE) $(KDIR)/root.$(1)
        @rm -f $$@
        [ -f $$(word 1,$$^) -a -f $$(word 2,$$^) ]
        $$(call concat_cmd,$(if $(IMAGE/$(2)/$(1)),$(IMAGE/$(2)/$(1)),$(IMAGE/$(2))))
 
+  .IGNORE: $(BIN_DIR)/$(call IMAGE_NAME,$(1),$(2))
+  $(BIN_DIR)/$(call IMAGE_NAME,$(1),$(2)): $(KDIR)/$(call IMAGE_NAME,$(1),$(2))
+       cp $$^ $$@
+
 endef
 
 define Device/Build
@@ -383,7 +413,7 @@ define Device/Build
 
   $$(eval $$(foreach image,$$(IMAGES), \
     $$(foreach fs,$$(filter $(TARGET_FILESYSTEMS),$$(FILESYSTEMS)), \
-      $$(call Device/Build/image,$$(fs),$$(image)))))
+      $$(call Device/Build/image,$$(fs),$$(image),$(1)))))
 endef
 
 define Device