imagebuilder.patch 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. --- a/include/image.mk
  2. +++ b/include/image.mk
  3. @@ -761,6 +761,7 @@ define Device/DumpInfo
  4. Target-Profile: DEVICE_$(1)
  5. Target-Profile-Name: $(DEVICE_DISPLAY)
  6. Target-Profile-Packages: $(DEVICE_PACKAGES)
  7. +Target-Profile-ImageSize: $(IMAGE_SIZE)
  8. Target-Profile-hasImageMetadata: $(if $(foreach image,$(IMAGES),$(findstring append-metadata,$(IMAGE/$(image)))),1,0)
  9. Target-Profile-SupportedDevices: $(SUPPORTED_DEVICES)
  10. $(if $(BROKEN),Target-Profile-Broken: $(BROKEN))
  11. --- a/scripts/target-metadata.pl
  12. +++ b/scripts/target-metadata.pl
  13. @@ -437,6 +437,7 @@ ()
  14. print "PROFILE_NAMES = ".join(" ", @profile_ids_unique)."\n";
  15. foreach my $profile (@{$cur->{profiles}}) {
  16. print $profile->{id}.'_NAME:='.$profile->{name}."\n";
  17. + print $profile->{id}.'_IMAGE_SIZE:='.$profile->{image_size}."\n";
  18. print $profile->{id}.'_HAS_IMAGE_METADATA:='.$profile->{has_image_metadata}."\n";
  19. if (defined($profile->{supported_devices}) and @{$profile->{supported_devices}} > 0) {
  20. print $profile->{id}.'_SUPPORTED_DEVICES:='.join(' ', @{$profile->{supported_devices}})."\n";
  21. --- a/scripts/metadata.pm
  22. +++ b/scripts/metadata.pm
  23. @@ -150,6 +150,7 @@ sub parse_target_metadata($) {
  24. push @{$target->{profiles}}, $profile;
  25. };
  26. /^Target-Profile-Name:\s*(.+)\s*$/ and $profile->{name} = $1;
  27. + /^Target-Profile-ImageSize:\s*(.*)\s*/ and $profile->{image_size} = $1;
  28. /^Target-Profile-hasImageMetadata:\s*(\d+)\s*$/ and $profile->{has_image_metadata} = $1;
  29. /^Target-Profile-SupportedDevices:\s*(.+)\s*$/ and $profile->{supported_devices} = [ split(/\s+/, $1) ];
  30. /^Target-Profile-Priority:\s*(\d+)\s*$/ and do {
  31. --- a/target/imagebuilder/Makefile
  32. +++ b/target/imagebuilder/Makefile
  33. @@ -38,13 +38,15 @@ $(BIN_DIR)/$(IB_NAME).tar.xz: clean
  34. ./files/repositories.conf \
  35. $(TMP_DIR)/.targetinfo \
  36. $(TMP_DIR)/.packageinfo \
  37. - $(PKG_BUILD_DIR)/
  38. + $(TOPDIR)/files \
  39. + $(PKG_BUILD_DIR)/ || true
  40. -ifeq ($(CONFIG_IB_STANDALONE),)
  41. echo '## Remote package repositories' >> $(PKG_BUILD_DIR)/repositories.conf
  42. $(call FeedSourcesAppend,$(PKG_BUILD_DIR)/repositories.conf)
  43. $(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories.conf
  44. -endif
  45. + $(SED) 's/^src\/gz \(.*\) https.*ai\/\(.*packages.*\)/src \1 file:\/\/www\/wwwroot\/dl.openwrt.ai\/\2/' $(PKG_BUILD_DIR)/repositories.conf
  46. + $(SED) 's/^src\/gz \(.*\) https.*ai\/\(.*targets.*\)/src \1 file:\/\/www\/wwwroot\/dl.openwrt.ai\/\2/' $(PKG_BUILD_DIR)/repositories.conf
  47. + $(SED) '/openwrt_core/d' $(PKG_BUILD_DIR)/repositories.conf
  48. $(INSTALL_DIR) $(PKG_BUILD_DIR)/packages
  49. # create an empty package index so `opkg` doesn't report an error
  50. --- a/target/imagebuilder/files/Makefile
  51. +++ b/target/imagebuilder/files/Makefile
  52. @@ -131,21 +131,47 @@ BUILD_PACKAGES:=$(sort $(DEFAULT_PACKAGES) $($(USER_PROFILE)_PACKAGES) kernel)
  53. # "-pkgname" in the package list means remove "pkgname" from the package list
  54. BUILD_PACKAGES:=$(filter-out $(filter -%,$(BUILD_PACKAGES)) $(patsubst -%,%,$(filter -%,$(BUILD_PACKAGES))),$(BUILD_PACKAGES))
  55. BUILD_PACKAGES:=$(USER_PACKAGES) $(BUILD_PACKAGES)
  56. +IMAGE_SIZE:="$(shell echo $$(echo $($(USER_PROFILE)_IMAGE_SIZE) | cut -d k -f1))"
  57. +BUILD_PACKAGES:=$(shell if [[ "$(IMAGE_SIZE)" && ! "`echo "$(IMAGE_SIZE)" | grep "m"`" && $(IMAGE_SIZE) -lt 20480 ]]; then \
  58. +echo "$(BUILD_PACKAGES) -coremark -htop -bash -openssh-sftp-server "; \
  59. +else \
  60. +echo "$(BUILD_PACKAGES)"; \
  61. +fi \
  62. +)
  63. BUILD_PACKAGES:=$(filter-out $(filter -%,$(BUILD_PACKAGES)) $(patsubst -%,%,$(filter -%,$(BUILD_PACKAGES))),$(BUILD_PACKAGES))
  64. PACKAGES:=
  65. _call_image: staging_dir/host/.prereq-build
  66. - echo 'Building images for $(BOARD)$(if $($(USER_PROFILE)_NAME), - $($(USER_PROFILE)_NAME))'
  67. + [ "$(DATE)" ] && DATE="$(DATE)" || DATE="`date +'%m.%d.%Y'`"; \
  68. + mkdir -p $(USER_FILES)/etc/uci-defaults || true; \
  69. + echo -e " \
  70. + sed -i \"s/[0-9]\+.[0-9]\+.[0-9]\{4\}/$$DATE/\" /etc/openwrt_release \n \
  71. + sed -i \"s/DISTRIB_ID=.*/DISTRIB_ID='$(ROOTFS_PARTSIZE)'/\" /etc/openwrt_release \n \
  72. + sed -i \"s/OpenWrt .* by/OpenWrt $$DATE by/\" /etc/banner \n \
  73. + echo \"$$DATE\" >/etc/openwrt_version \n \
  74. + "> $(USER_FILES)/etc/uci-defaults/99-version; \
  75. + echo 'Building images for $(BOARD)$(if $($(USER_PROFILE)_NAME), - $($(USER_PROFILE)_NAME))'; \
  76. echo 'Packages: $(BUILD_PACKAGES)'
  77. echo
  78. rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG)
  79. mkdir -p $(TARGET_DIR) $(BIN_DIR) $(TMP_DIR) $(DL_DIR)
  80. + if [[ "$(IMAGE_SIZE)" && ! "`echo "$(IMAGE_SIZE)" | grep "m"`" ]]; then \
  81. + if [[ $(IMAGE_SIZE) -lt 20480 ]]; then \
  82. + if [[ ! "`grep "small_flash" $(TOPDIR)/repositories.conf`" ]]; then \
  83. + echo "`grep openwrt_kiddin9 $(TOPDIR)/repositories.conf | sed -e 's/kiddin9/small_flash/g'`" >>$(TOPDIR)/repositories.conf; \
  84. + fi \
  85. + else \
  86. + sed -i "/small_flash/d" $(TOPDIR)/repositories.conf; \
  87. + fi \
  88. + fi
  89. $(MAKE) package_reload
  90. $(MAKE) package_install
  91. $(MAKE) -s prepare_rootfs
  92. $(MAKE) -s build_image
  93. $(MAKE) -s json_overview_image_info
  94. $(MAKE) -s checksum
  95. + rm -rf $(KERNEL_BUILD_DIR)/tmp
  96. + rm -rf $(KERNEL_BUILD_DIR)/root.*
  97. _call_manifest: FORCE
  98. rm -rf $(TARGET_DIR)
  99. @@ -186,7 +212,17 @@ package_install: FORCE
  100. @echo Installing packages...
  101. $(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/libc_*.ipk $(PACKAGE_DIR)/libc_*.ipk))
  102. $(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/kernel_*.ipk $(PACKAGE_DIR)/kernel_*.ipk))
  103. - $(OPKG) install $(BUILD_PACKAGES)
  104. + for p in $(BUILD_PACKAGES); do \
  105. + if [[ $$p == luci-app-* && "`$(OPKG) list | grep luci-i18n-\`echo $$p | cut -d - -f 3-\`-zh-cn`" ]]; then \
  106. + packages+="luci-i18n-`echo $$p | cut -d - -f 3-`-zh-cn "; \
  107. + fi \
  108. + done; \
  109. + if [[ "`echo "$(BUILD_PACKAGES)" | grep "usb"`" ]]; then \
  110. + packages+="automount "; \
  111. + fi; \
  112. + $(OPKG) install $(BUILD_PACKAGES) luci-i18n-base-zh-cn luci-i18n-base-en; \
  113. + $(OPKG) install $$packages || true
  114. + $(OPKG) install --force-maintainer --force-reinstall my-default-settings
  115. prepare_rootfs: FORCE
  116. @echo
  117. @@ -200,12 +236,15 @@ prepare_rootfs: FORCE
  118. ) \
  119. )
  120. $(call prepare_rootfs,$(TARGET_DIR),$(USER_FILES),$(DISABLED_SERVICES))
  121. + if [[ "$(IMAGE_SIZE)" && ! "`echo "$(IMAGE_SIZE)" | grep "m"`" && $(IMAGE_SIZE) -lt 20480 ]]; then \
  122. + echo "`grep openwrt_kiddin9 $(TOPDIR)/repositories.conf | sed -e 's/kiddin9/small_flash/g'`" >>$(BUILD_DIR)/root-*/etc/opkg/distfeeds.conf; \
  123. + fi
  124. build_image: FORCE
  125. @echo
  126. @echo Building images...
  127. rm -rf $(BUILD_DIR)/json_info_files/
  128. - $(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
  129. + nice -n 19 $(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
  130. $(if $(USER_PROFILE),PROFILE="$(USER_PROFILE)")
  131. $(BIN_DIR)/profiles.json: FORCE