diff options
-rw-r--r-- | platforms/image-root-ext.in | 4 | ||||
-rw-r--r-- | rules/image-root-ext.make | 14 |
2 files changed, 14 insertions, 4 deletions
diff --git a/platforms/image-root-ext.in b/platforms/image-root-ext.in index e5e8ba766..903bdf33d 100644 --- a/platforms/image-root-ext.in +++ b/platforms/image-root-ext.in @@ -14,10 +14,12 @@ if IMAGE_ROOT_EXT config IMAGE_ROOT_EXT_SIZE string - default "20M" + default "125%" prompt "image size" help The image size in bytes or with unit, e.g. 42M, 23G, etc. + or as a percentage of the content, e.g. 200% will result in a + filesystem with about 50% free space. choice prompt "ext2fs type " diff --git a/rules/image-root-ext.make b/rules/image-root-ext.make index 20b2bfe33..20a417fbd 100644 --- a/rules/image-root-ext.make +++ b/rules/image-root-ext.make @@ -21,14 +21,22 @@ IMAGE_ROOT_EXT_DIR := $(BUILDDIR)/$(IMAGE_ROOT_EXT) IMAGE_ROOT_EXT_IMAGE := $(IMAGEDIR)/root.ext2 IMAGE_ROOT_EXT_FILES := $(IMAGEDIR)/root.tgz IMAGE_ROOT_EXT_CONFIG := ext.config +IMAGE_ROOT_EXT_SIZE := $(call remove_quotes,$(PTXCONF_IMAGE_ROOT_EXT_SIZE)) # ---------------------------------------------------------------------------- # Image # ---------------------------------------------------------------------------- -IMAGE_ROOT_EXT_ENV := \ - SIZE=$(PTXCONF_IMAGE_ROOT_EXT_SIZE) \ - EXT_TYPE=$(PTXCONF_IMAGE_ROOT_EXT_TYPE) +IMAGE_ROOT_EXT_ENV = EXT_TYPE=$(PTXCONF_IMAGE_ROOT_EXT_TYPE) +ifeq ($(filter %%,$(IMAGE_ROOT_EXT_SIZE)),) +IMAGE_ROOT_EXT_ENV += SIZE=$(PTXCONF_IMAGE_ROOT_EXT_SIZE) +else +IMAGE_ROOT_EXT_BASE := $$(tar -xOf $(IMAGE_ROOT_EXT_FILES) | wc -c) +# 80 seems to be a good number to take fs overhead into account +IMAGE_ROOT_EXT_SCALE := $(subst %,,$(IMAGE_ROOT_EXT_SIZE))/80/1024/1024 +IMAGE_ROOT_EXT_ENV += \ + SIZE="$(shell echo $$(($(IMAGE_ROOT_EXT_BASE)*$(IMAGE_ROOT_EXT_SCALE)+1))M)" +endif ifdef PTXCONF_IMAGE_ROOT_EXT $(IMAGE_ROOT_EXT_IMAGE): |