--- a/target/imagebuilder/Makefile +++ b/target/imagebuilder/Makefile @@ -38,13 +38,15 @@ $(BIN_DIR)/$(IB_NAME).tar.xz: clean ./files/repositories.conf \ $(TMP_DIR)/.targetinfo \ $(TMP_DIR)/.packageinfo \ - $(PKG_BUILD_DIR)/ + $(TOPDIR)/files \ + $(PKG_BUILD_DIR)/ || true -ifeq ($(CONFIG_IB_STANDALONE),) echo '## Remote package repositories' >> $(PKG_BUILD_DIR)/repositories.conf $(call FeedSourcesAppend,$(PKG_BUILD_DIR)/repositories.conf) $(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories.conf -endif + $(SED) 's/^src\/gz \(.*\) https.*top\/\(packages.*\)/src \1 file:\/\/www\/wwwroot\/op.supes.top\/\2/' $(PKG_BUILD_DIR)/repositories.conf + $(SED) 's/^src\/gz \(.*\) https.*top\/\(targets.*\)/src \1 file:\/\/www\/wwwroot\/op.supes.top\/releases\/\2/' $(PKG_BUILD_DIR)/repositories.conf + $(SED) 's/\/kiddin9//' $(PKG_BUILD_DIR)/repositories.conf $(INSTALL_DIR) $(PKG_BUILD_DIR)/packages # create an empty package index so `opkg` doesn't report an error --- a/target/imagebuilder/files/Makefile +++ b/target/imagebuilder/files/Makefile @@ -115,17 +115,32 @@ BUILD_PACKAGES:=$(filter-out $(filter -%,$(BUILD_PACKAGES)) $(patsubst -%,%,$(fi PACKAGES:= _call_image: staging_dir/host/.prereq-build + [ "$(DATE)" ] && DATE="$(DATE)" || DATE="`date +'%m.%d.%Y'`"; \ + mkdir -p $(USER_FILES)/etc/uci-defaults || true; \ + echo -e " \ + sed -i \"s/[0-9]\+.[0-9]\+.[0-9]\{4\}/$$DATE/\" /etc/openwrt_release \n \ + sed -i \"s/DISTRIB_ID=.*/DISTRIB_ID='$(PARTSIZE)'/\" /etc/openwrt_release \n \ + sed -i \"s/OpenWrt .* by/OpenWrt $$DATE by/\" /etc/banner \n \ + echo \"$$DATE\" >/etc/openwrt_version \n \ + "> $(USER_FILES)/etc/uci-defaults/99-version; \ echo 'Building images for $(BOARD)$(if $($(USER_PROFILE)_NAME), - $($(USER_PROFILE)_NAME))' echo 'Packages: $(BUILD_PACKAGES)' echo rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG) mkdir -p $(TARGET_DIR) $(BIN_DIR) $(TMP_DIR) $(DL_DIR) + 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 \ + echo "src/gz openwrt_smflash https://op.supes.top/packages/mipsel_24kc/small_flash" >>$(TOPDIR)/repositories.conf; \ + else \ + sed -i "/smflash/d" $(TOPDIR)/repositories.conf; \ + fi $(MAKE) package_reload $(MAKE) package_install $(MAKE) -s prepare_rootfs $(MAKE) -s build_image $(MAKE) -s json_overview_image_info $(MAKE) -s checksum + rm -rf $(KERNEL_BUILD_DIR)/tmp + rm -rf $(KERNEL_BUILD_DIR)/root.* _call_manifest: FORCE rm -rf $(TARGET_DIR) @@ -166,7 +181,14 @@ package_install: FORCE @echo Installing packages... $(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/libc_*.ipk $(PACKAGE_DIR)/libc_*.ipk)) $(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/kernel_*.ipk $(PACKAGE_DIR)/kernel_*.ipk)) - $(OPKG) install $(BUILD_PACKAGES) + for p in $(BUILD_PACKAGES); do \ + if [[ $$p == luci-app-* && "`$(OPKG) list | grep luci-i18n-\`echo $$p | cut -d - -f 3-\`-zh-cn`" ]]; then \ + packages+="luci-i18n-`echo $$p | cut -d - -f 3-`-zh-cn "; \ + fi \ + done; \ + $(OPKG) install --force-overwrite --force-checksum --force-depends $(BUILD_PACKAGES) luci-i18n-base-zh-cn luci-i18n-base-en; \ + $(OPKG) install $$packages || true + $(OPKG) install --force-overwrite --force-checksum --force-depends --force-maintainer --force-reinstall my-default-settings prepare_rootfs: FORCE @echo @@ -180,12 +202,15 @@ prepare_rootfs: FORCE ) \ ) $(call prepare_rootfs,$(TARGET_DIR),$(USER_FILES),$(DISABLED_SERVICES)) + 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 \ + echo "src/gz openwrt_smflash https://op.supes.top/packages/mipsel_24kc/small_flash" >>$(BUILD_DIR)/root-ramips/etc/opkg/distfeeds.conf; \ + fi build_image: FORCE @echo @echo Building images... rm -rf $(BUILD_DIR)/json_info_files/ - $(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \ + nice -n 19 $(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \ $(if $(USER_PROFILE),PROFILE="$(USER_PROFILE)") $(BIN_DIR)/profiles.json: FORCE --- a/include/image.mk +++ b/include/image.mk @@ -300,6 +300,44 @@ ifdef CONFIG_TARGET_ROOTFS_TARGZ endef endif +define Device/Build/targz + $$(_TARGET): $(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \ + $(BUILD_DIR)/json_info_files/$$(ROOTFSTZ).json, \ + $(BIN_DIR)/$$(ROOTFSTZ)) + + $(call Device/Export,$(BUILD_DIR)/json_info_files/$$(ROOTFSTZ).json,$(1)) + + $(BUILD_DIR)/json_info_files/$$(ROOTFSTZ).json: $(BIN_DIR)/$$(ROOTFSTZ) + @mkdir -p $$(shell dirname $$@) + DEVICE_ID="$(1)" \ + SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \ + FILE_NAME="$$(notdir $$^)" \ + FILE_DIR="$(BIN_DIR)" \ + FILE_TYPE="rootfs" \ + FILE_FILESYSTEM="rootfs" \ + DEVICE_IMG_PREFIX="$$(DEVICE_IMG_PREFIX)" \ + DEVICE_VENDOR="$$(DEVICE_VENDOR)" \ + DEVICE_MODEL="$$(DEVICE_MODEL)" \ + DEVICE_VARIANT="$$(DEVICE_VARIANT)" \ + DEVICE_ALT0_VENDOR="$$(DEVICE_ALT0_VENDOR)" \ + DEVICE_ALT0_MODEL="$$(DEVICE_ALT0_MODEL)" \ + DEVICE_ALT0_VARIANT="$$(DEVICE_ALT0_VARIANT)" \ + DEVICE_ALT1_VENDOR="$$(DEVICE_ALT1_VENDOR)" \ + DEVICE_ALT1_MODEL="$$(DEVICE_ALT1_MODEL)" \ + DEVICE_ALT1_VARIANT="$$(DEVICE_ALT1_VARIANT)" \ + DEVICE_ALT2_VENDOR="$$(DEVICE_ALT2_VENDOR)" \ + DEVICE_ALT2_MODEL="$$(DEVICE_ALT2_MODEL)" \ + DEVICE_ALT2_VARIANT="$$(DEVICE_ALT2_VARIANT)" \ + DEVICE_TITLE="$$(DEVICE_TITLE)" \ + DEVICE_PACKAGES="$$(DEVICE_PACKAGES)" \ + TARGET="$(BOARD)" \ + SUBTARGET="$(if $(SUBTARGET),$(SUBTARGET),generic)" \ + VERSION_NUMBER="$(VERSION_NUMBER)" \ + VERSION_CODE="$(VERSION_CODE)" \ + SUPPORTED_DEVICES="$$(SUPPORTED_DEVICES)" \ + $(TOPDIR)/scripts/json_add_image_info.py $$@ +endef + ifdef CONFIG_TARGET_ROOTFS_CPIOGZ define Image/Build/cpiogz ( cd $(TARGET_DIR); find . | $(STAGING_DIR_HOST)/bin/cpio -o -H newc -R 0:0 | gzip -9n >$(BIN_DIR)/$(IMG_ROOTFS).cpio.gz ) @@ -367,6 +405,7 @@ define Device/Init DEVICE_IMG_PREFIX := $(IMG_PREFIX)-$(1) DEVICE_IMG_NAME = $$(DEVICE_IMG_PREFIX)-$$(1)-$$(2) IMAGE_SIZE := + ROOTFSTZ = $$(DEVICE_IMG_PREFIX)-rootfs.tar.gz KERNEL_PREFIX = $$(DEVICE_IMG_PREFIX) KERNEL_SUFFIX := -kernel.bin KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX) @@ -567,7 +606,7 @@ define Device/Build/kernel endef define Device/Build/image - GZ_SUFFIX := $(if $(filter %dtb %gz,$(2)),,$(if $(and $(findstring ext4,$(1)),$(CONFIG_TARGET_IMAGES_GZIP)),.gz)) + GZ_SUFFIX := $(if $(filter %dtb %gz,$(2)),,$(if $(and $(findstring ext4,$(1)),$(findstring img,$(2)),$(CONFIG_TARGET_IMAGES_GZIP)),.gz)) $$(_TARGET): $(if $(CONFIG_JSON_OVERVIEW_IMAGE_INFO), \ $(BUILD_DIR)/json_info_files/$(call DEVICE_IMG_NAME,$(1),$(2)).json, \ $(BIN_DIR)/$(call DEVICE_IMG_NAME,$(1),$(2))$$(GZ_SUFFIX)) @@ -677,6 +716,8 @@ define Device/Build $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$(call Device/Build/initramfs,$(1))) $(call Device/Build/kernel,$(1)) + $(if $(CONFIG_TARGET_ROOTFS_TARGZ),$(call Device/Build/targz,$(PROFILE_SANITIZED))) + $$(eval $$(foreach compile,$$(COMPILE), \ $$(call Device/Build/compile,$$(compile),$(1)))) --- a/scripts/json_overview_image_info.py +++ b/scripts/json_overview_image_info.py @@ -47,7 +47,7 @@ def get_initial_output(image_info): if output: - default_packages, output["arch_packages"] = run( + default_packages, output["arch_packages"], output["kernel_version"], output["initramfs"] = run( [ "make", "--no-print-directory", @@ -55,6 +55,8 @@ def get_initial_output(image_info): "target/linux/", "val.DEFAULT_PACKAGES", "val.ARCH_PACKAGES", + "val.LINUX_VERSION", + "val.KERNEL_INITRAMFS", ], stdout=PIPE, stderr=PIPE, --- a/rules.mk +++ b/rules.mk @@ -59,6 +59,7 @@ _SINGLE=export MAKEFLAGS=$(space); CFLAGS:= ARCH:=$(subst i486,i386,$(subst i586,i386,$(subst i686,i386,$(call qstrip,$(CONFIG_ARCH))))) ARCH_PACKAGES:=$(call qstrip,$(CONFIG_TARGET_ARCH_PACKAGES)) +KERNEL_INITRAMFS:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_INITRAMFS)) BOARD:=$(call qstrip,$(CONFIG_TARGET_BOARD)) SUBTARGET:=$(call qstrip,$(CONFIG_TARGET_SUBTARGET)) TARGET_OPTIMIZATION:=$(call qstrip,$(CONFIG_TARGET_OPTIMIZATION))