imagebuilder.patch 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. --- a/target/imagebuilder/Makefile
  2. +++ b/target/imagebuilder/Makefile
  3. @@ -38,13 +38,15 @@ $(BIN_DIR)/$(IB_NAME).tar.xz: clean
  4. ./files/repositories.conf \
  5. $(TMP_DIR)/.targetinfo \
  6. $(TMP_DIR)/.packageinfo \
  7. - $(PKG_BUILD_DIR)/
  8. + $(TOPDIR)/files \
  9. + $(PKG_BUILD_DIR)/ || true
  10. -ifeq ($(CONFIG_IB_STANDALONE),)
  11. echo '## Remote package repositories' >> $(PKG_BUILD_DIR)/repositories.conf
  12. $(call FeedSourcesAppend,$(PKG_BUILD_DIR)/repositories.conf)
  13. $(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories.conf
  14. -endif
  15. + $(SED) 's/^src\/gz \(.*\) https.*top\/\(packages.*\)/src \1 file:\/\/www\/wwwroot\/op.supes.top\/\2/' $(PKG_BUILD_DIR)/repositories.conf
  16. + $(SED) 's/^src\/gz \(.*\) https.*top\/\(targets.*\)/src \1 file:\/\/www\/wwwroot\/op.supes.top\/releases\/\2/' $(PKG_BUILD_DIR)/repositories.conf
  17. + $(SED) 's/\/kiddin9//' $(PKG_BUILD_DIR)/repositories.conf
  18. $(INSTALL_DIR) $(PKG_BUILD_DIR)/packages
  19. # create an empty package index so `opkg` doesn't report an error
  20. --- a/target/imagebuilder/files/Makefile
  21. +++ b/target/imagebuilder/files/Makefile
  22. @@ -115,17 +115,32 @@ BUILD_PACKAGES:=$(filter-out $(filter -%,$(BUILD_PACKAGES)) $(patsubst -%,%,$(fi
  23. PACKAGES:=
  24. _call_image: staging_dir/host/.prereq-build
  25. + [ "$(DATE)" ] && DATE="$(DATE)" || DATE="`date +'%m.%d.%Y'`"; \
  26. + mkdir -p $(USER_FILES)/etc/uci-defaults || true; \
  27. + echo -e " \
  28. + sed -i \"s/[0-9]\+.[0-9]\+.[0-9]\{4\}/$$DATE/\" /etc/openwrt_release \n \
  29. + sed -i \"s/DISTRIB_ID=.*/DISTRIB_ID='$(PARTSIZE)'/\" /etc/openwrt_release \n \
  30. + sed -i \"s/OpenWrt .* by/OpenWrt $$DATE by/\" /etc/banner \n \
  31. + echo \"$$DATE\" >/etc/openwrt_version \n \
  32. + "> $(USER_FILES)/etc/uci-defaults/99-version; \
  33. echo 'Building images for $(BOARD)$(if $($(USER_PROFILE)_NAME), - $($(USER_PROFILE)_NAME))'
  34. echo 'Packages: $(BUILD_PACKAGES)'
  35. echo
  36. rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG)
  37. mkdir -p $(TARGET_DIR) $(BIN_DIR) $(TMP_DIR) $(DL_DIR)
  38. + if [[ "$(USER_PROFILE)" =~ (DEVICE_phicomm_k2p|DEVICE_asus_rt-n56u-b1|DEVICE_thunder_timecloud|DEVICE_youku_yk-l2|DEVICE_youhua_wr1200js|DEVICE_oraybox_x3a|DEVICE_netgear_wndr3700-v5|DEVICE_xiaomi_mi-router-4a-gigabit|DEVICE_xiaomi_mi-router-3g-v2|DEVICE_jcg_y2|DEVICE_glinet_gl-mt300a|DEVICE_glinet_gl-mt750|DEVICE_hiwifi_hc5661|DEVICE_hiwifi_hc5761|DEVICE_hiwifi_hc5861|DEVICE_lenovo_newifi-y1|DEVICE_lenovo_newifi-y1s|DEVICE_xiaomi_miwifi-mini|DEVICE_youku_yk-l1c|DEVICE_jdcloud_luban|DEVICE_zte_e8820v2) || "$(TARGETID)" == "ramips/mt76x8" ]]; then \
  39. + echo "src/gz openwrt_smflash https://op.supes.top/packages/mipsel_24kc/small_flash" >>$(TOPDIR)/repositories.conf; \
  40. + else \
  41. + sed -i "/smflash/d" $(TOPDIR)/repositories.conf; \
  42. + fi
  43. $(MAKE) package_reload
  44. $(MAKE) package_install
  45. $(MAKE) -s prepare_rootfs
  46. $(MAKE) -s build_image
  47. $(MAKE) -s json_overview_image_info
  48. $(MAKE) -s checksum
  49. + rm -rf $(KERNEL_BUILD_DIR)/tmp
  50. + rm -rf $(KERNEL_BUILD_DIR)/root.*
  51. _call_manifest: FORCE
  52. rm -rf $(TARGET_DIR)
  53. @@ -166,7 +181,14 @@ package_install: FORCE
  54. @echo Installing packages...
  55. $(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/libc_*.ipk $(PACKAGE_DIR)/libc_*.ipk))
  56. $(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/kernel_*.ipk $(PACKAGE_DIR)/kernel_*.ipk))
  57. - $(OPKG) install $(BUILD_PACKAGES)
  58. + for p in $(BUILD_PACKAGES); do \
  59. + if [[ $$p == luci-app-* && "`$(OPKG) list | grep luci-i18n-\`echo $$p | cut -d - -f 3-\`-zh-cn`" ]]; then \
  60. + packages+="luci-i18n-`echo $$p | cut -d - -f 3-`-zh-cn "; \
  61. + fi \
  62. + done; \
  63. + $(OPKG) install --force-overwrite --force-checksum --force-depends $(BUILD_PACKAGES) luci-i18n-base-zh-cn luci-i18n-base-en; \
  64. + $(OPKG) install $$packages || true
  65. + $(OPKG) install --force-overwrite --force-checksum --force-depends --force-maintainer --force-reinstall my-default-settings
  66. prepare_rootfs: FORCE
  67. @echo
  68. @@ -180,12 +202,15 @@ prepare_rootfs: FORCE
  69. ) \
  70. )
  71. $(call prepare_rootfs,$(TARGET_DIR),$(USER_FILES),$(DISABLED_SERVICES))
  72. + if [[ "$(USER_PROFILE)" =~ (DEVICE_phicomm_k2p|DEVICE_asus_rt-n56u-b1|DEVICE_thunder_timecloud|DEVICE_youku_yk-l2|DEVICE_youhua_wr1200js|DEVICE_oraybox_x3a|DEVICE_netgear_wndr3700-v5|DEVICE_xiaomi_mi-router-4a-gigabit|DEVICE_xiaomi_mi-router-3g-v2|DEVICE_jcg_y2|DEVICE_glinet_gl-mt300a|DEVICE_glinet_gl-mt750|DEVICE_hiwifi_hc5661|DEVICE_hiwifi_hc5761|DEVICE_hiwifi_hc5861|DEVICE_lenovo_newifi-y1|DEVICE_lenovo_newifi-y1s|DEVICE_xiaomi_miwifi-mini|DEVICE_youku_yk-l1c|DEVICE_jdcloud_luban) || "$(TARGETID)" == "ramips/mt76x8" ]]; then \
  73. + echo "src/gz openwrt_smflash https://op.supes.top/packages/mipsel_24kc/small_flash" >>$(BUILD_DIR)/root-ramips/etc/opkg/distfeeds.conf; \
  74. + fi
  75. build_image: FORCE
  76. @echo
  77. @echo Building images...
  78. rm -rf $(BUILD_DIR)/json_info_files/
  79. - $(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
  80. + nice -n 19 $(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
  81. $(if $(USER_PROFILE),PROFILE="$(USER_PROFILE)")
  82. $(BIN_DIR)/profiles.json: FORCE
  83. --- a/include/image.mk
  84. +++ b/include/image.mk
  85. @@ -300,6 +300,44 @@ ifdef CONFIG_TARGET_ROOTFS_TARGZ
  86. endef
  87. endif
  88. +define Device/Build/targz
  89. + $$(_TARGET): $(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \
  90. + $(BUILD_DIR)/json_info_files/$$(ROOTFSTZ).json, \
  91. + $(BIN_DIR)/$$(ROOTFSTZ))
  92. +
  93. + $(call Device/Export,$(BUILD_DIR)/json_info_files/$$(ROOTFSTZ).json,$(1))
  94. +
  95. + $(BUILD_DIR)/json_info_files/$$(ROOTFSTZ).json: $(BIN_DIR)/$$(ROOTFSTZ)
  96. + @mkdir -p $$(shell dirname $$@)
  97. + DEVICE_ID="$(1)" \
  98. + SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \
  99. + FILE_NAME="$$(notdir $$^)" \
  100. + FILE_DIR="$(BIN_DIR)" \
  101. + FILE_TYPE="rootfs" \
  102. + FILE_FILESYSTEM="rootfs" \
  103. + DEVICE_IMG_PREFIX="$$(DEVICE_IMG_PREFIX)" \
  104. + DEVICE_VENDOR="$$(DEVICE_VENDOR)" \
  105. + DEVICE_MODEL="$$(DEVICE_MODEL)" \
  106. + DEVICE_VARIANT="$$(DEVICE_VARIANT)" \
  107. + DEVICE_ALT0_VENDOR="$$(DEVICE_ALT0_VENDOR)" \
  108. + DEVICE_ALT0_MODEL="$$(DEVICE_ALT0_MODEL)" \
  109. + DEVICE_ALT0_VARIANT="$$(DEVICE_ALT0_VARIANT)" \
  110. + DEVICE_ALT1_VENDOR="$$(DEVICE_ALT1_VENDOR)" \
  111. + DEVICE_ALT1_MODEL="$$(DEVICE_ALT1_MODEL)" \
  112. + DEVICE_ALT1_VARIANT="$$(DEVICE_ALT1_VARIANT)" \
  113. + DEVICE_ALT2_VENDOR="$$(DEVICE_ALT2_VENDOR)" \
  114. + DEVICE_ALT2_MODEL="$$(DEVICE_ALT2_MODEL)" \
  115. + DEVICE_ALT2_VARIANT="$$(DEVICE_ALT2_VARIANT)" \
  116. + DEVICE_TITLE="$$(DEVICE_TITLE)" \
  117. + DEVICE_PACKAGES="$$(DEVICE_PACKAGES)" \
  118. + TARGET="$(BOARD)" \
  119. + SUBTARGET="$(if $(SUBTARGET),$(SUBTARGET),generic)" \
  120. + VERSION_NUMBER="$(VERSION_NUMBER)" \
  121. + VERSION_CODE="$(VERSION_CODE)" \
  122. + SUPPORTED_DEVICES="$$(SUPPORTED_DEVICES)" \
  123. + $(TOPDIR)/scripts/json_add_image_info.py $$@
  124. +endef
  125. +
  126. ifdef CONFIG_TARGET_ROOTFS_CPIOGZ
  127. define Image/Build/cpiogz
  128. ( cd $(TARGET_DIR); find . | $(STAGING_DIR_HOST)/bin/cpio -o -H newc -R 0:0 | gzip -9n >$(BIN_DIR)/$(IMG_ROOTFS).cpio.gz )
  129. @@ -367,6 +405,7 @@ define Device/Init
  130. DEVICE_IMG_PREFIX := $(IMG_PREFIX)-$(1)
  131. DEVICE_IMG_NAME = $$(DEVICE_IMG_PREFIX)-$$(1)-$$(2)
  132. IMAGE_SIZE :=
  133. + ROOTFSTZ = $$(DEVICE_IMG_PREFIX)-rootfs.tar.gz
  134. KERNEL_PREFIX = $$(DEVICE_IMG_PREFIX)
  135. KERNEL_SUFFIX := -kernel.bin
  136. KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX)
  137. @@ -567,7 +606,7 @@ define Device/Build/kernel
  138. endef
  139. define Device/Build/image
  140. - GZ_SUFFIX := $(if $(filter %dtb %gz,$(2)),,$(if $(and $(findstring ext4,$(1)),$(CONFIG_TARGET_IMAGES_GZIP)),.gz))
  141. + GZ_SUFFIX := $(if $(filter %dtb %gz,$(2)),,$(if $(and $(findstring ext4,$(1)),$(findstring img,$(2)),$(CONFIG_TARGET_IMAGES_GZIP)),.gz))
  142. $$(_TARGET): $(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \
  143. $(BUILD_DIR)/json_info_files/$(call DEVICE_IMG_NAME,$(1),$(2)).json, \
  144. $(BIN_DIR)/$(call DEVICE_IMG_NAME,$(1),$(2))$$(GZ_SUFFIX))
  145. @@ -677,6 +716,8 @@ define Device/Build
  146. $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$(call Device/Build/initramfs,$(1)))
  147. $(call Device/Build/kernel,$(1))
  148. + $(if $(CONFIG_TARGET_ROOTFS_TARGZ),$(call Device/Build/targz,$(PROFILE_SANITIZED)))
  149. +
  150. $$(eval $$(foreach compile,$$(COMPILE), \
  151. $$(call Device/Build/compile,$$(compile),$(1))))
  152. --- a/scripts/json_overview_image_info.py
  153. +++ b/scripts/json_overview_image_info.py
  154. @@ -47,7 +47,7 @@ def get_initial_output(image_info):
  155. if output:
  156. - default_packages, output["arch_packages"] = run(
  157. + default_packages, output["arch_packages"], output["kernel_version"], output["initramfs"] = run(
  158. [
  159. "make",
  160. "--no-print-directory",
  161. @@ -55,6 +55,8 @@ def get_initial_output(image_info):
  162. "target/linux/",
  163. "val.DEFAULT_PACKAGES",
  164. "val.ARCH_PACKAGES",
  165. + "val.LINUX_VERSION",
  166. + "val.KERNEL_INITRAMFS",
  167. ],
  168. stdout=PIPE,
  169. stderr=PIPE,
  170. --- a/rules.mk
  171. +++ b/rules.mk
  172. @@ -59,6 +59,7 @@ _SINGLE=export MAKEFLAGS=$(space);
  173. CFLAGS:=
  174. ARCH:=$(subst i486,i386,$(subst i586,i386,$(subst i686,i386,$(call qstrip,$(CONFIG_ARCH)))))
  175. ARCH_PACKAGES:=$(call qstrip,$(CONFIG_TARGET_ARCH_PACKAGES))
  176. +KERNEL_INITRAMFS:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_INITRAMFS))
  177. BOARD:=$(call qstrip,$(CONFIG_TARGET_BOARD))
  178. SUBTARGET:=$(call qstrip,$(CONFIG_TARGET_SUBTARGET))
  179. TARGET_OPTIMIZATION:=$(call qstrip,$(CONFIG_TARGET_OPTIMIZATION))