1
0
Jelajahi Sumber

rework kernel build process, changes to kernelconfig are reflected now

Cleanup the package directory which is always used as intermediate step
to build in the default some xz compressed archives with all package
data. While reconfiguring the kernel mini.config or custom config
changes to the firmware did not happen always.
Some targets where redundant and the install step tries to compile, too.

Be more quiet with any cpio usage.
Waldemar Brodkorb 9 tahun lalu
induk
melakukan
263bba08cb
7 mengubah file dengan 28 tambahan dan 32 penghapusan
  1. 5 1
      mk/build.mk
  2. 2 2
      mk/image.mk
  3. 15 26
      mk/kernel-build.mk
  4. 1 1
      mk/package.mk
  5. 3 0
      scripts/make-module-ipkgs.sh
  6. 1 1
      target/Makefile
  7. 1 1
      target/arm/Makefile

+ 5 - 1
mk/build.mk

@@ -176,7 +176,7 @@ ifeq ($(ADK_TARGET_OS_BAREMETAL),y)
 	$(MAKE) -f mk/build.mk package/hostcompile toolchain/final
 	$(MAKE) -f mk/build.mk package/hostcompile toolchain/final
 endif
 endif
 ifeq ($(ADK_TARGET_OS_LINUX),y)
 ifeq ($(ADK_TARGET_OS_LINUX),y)
-	$(MAKE) -f mk/build.mk package/hostcompile toolchain/final target/config-prepare target/compile package/compile root_clean package/install target/install package_index
+	$(MAKE) -f mk/build.mk package/hostcompile toolchain/final target/config-prepare target/compile package_clean package/compile root_clean package/install target/install package_index
 endif
 endif
 endif
 endif
 
 
@@ -252,6 +252,10 @@ newpackage:
 	$(SED) 's#@VER@#$(VER)#' $(ADK_TOPDIR)/package/$(PKG)/Makefile
 	$(SED) 's#@VER@#$(VER)#' $(ADK_TOPDIR)/package/$(PKG)/Makefile
 	@echo "Edit package/$(PKG)/Makefile to complete"
 	@echo "Edit package/$(PKG)/Makefile to complete"
 
 
+package_clean:
+	rm -rf $(PACKAGE_DIR)
+	mkdir -p $(PACKAGE_DIR)
+
 root_clean:
 root_clean:
 	rm -rf $(TARGET_DIR)
 	rm -rf $(TARGET_DIR)
 	mkdir -p $(TARGET_DIR)
 	mkdir -p $(TARGET_DIR)

+ 2 - 2
mk/image.mk

@@ -146,14 +146,14 @@ endif
 
 
 ${FW_DIR}/${ROOTFSTARBALL}: ${TARGET_DIR}/.adk kernel-package
 ${FW_DIR}/${ROOTFSTARBALL}: ${TARGET_DIR}/.adk kernel-package
 	cd ${TARGET_DIR}; find . | sed -n '/^\.\//s///p' | sort | \
 	cd ${TARGET_DIR}; find . | sed -n '/^\.\//s///p' | sort | \
-		$(CPIO) -o -Hustar --owner=0:0 | $(XZ) -c >$@
+		$(CPIO) --quiet -o -Hustar --owner=0:0 | $(XZ) -c >$@
 ifeq ($(ADK_TARGET_QEMU),y)
 ifeq ($(ADK_TARGET_QEMU),y)
 	@cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
 	@cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
 endif
 endif
 
 
 ${FW_DIR}/${ROOTFSUSERTARBALL}: ${TARGET_DIR}/.adk
 ${FW_DIR}/${ROOTFSUSERTARBALL}: ${TARGET_DIR}/.adk
 	cd ${TARGET_DIR}; find . | grep -v ./boot/ | sed -n '/^\.\//s///p' | sort | \
 	cd ${TARGET_DIR}; find . | grep -v ./boot/ | sed -n '/^\.\//s///p' | sort | \
-		$(CPIO) -o -Hustar --owner=0:0 | $(XZ) -c >$@
+		$(CPIO) --quiet -o -Hustar --owner=0:0 | $(XZ) -c >$@
 
 
 ${STAGING_TARGET_DIR}/${INITRAMFS}_list: ${TARGET_DIR}/.adk
 ${STAGING_TARGET_DIR}/${INITRAMFS}_list: ${TARGET_DIR}/.adk
 	env PATH='${HOST_PATH}' $(BASH) ${LINUX_DIR}/scripts/gen_initramfs_list.sh -u squash -g squash \
 	env PATH='${HOST_PATH}' $(BASH) ${LINUX_DIR}/scripts/gen_initramfs_list.sh -u squash -g squash \

+ 15 - 26
mk/kernel-build.mk

@@ -31,6 +31,10 @@ KERNEL_FILE:=vmlinux
 KERNEL_TARGET:=$(ADK_TARGET_KERNEL)
 KERNEL_TARGET:=$(ADK_TARGET_KERNEL)
 endif
 endif
 
 
+ifneq ($(KERNEL_MODULES_USED),)
+KERNEL_TARGET+=modules
+endif
+
 ifeq ($(ADK_RUNTIME_DEV_UDEV),y)
 ifeq ($(ADK_RUNTIME_DEV_UDEV),y)
 ADK_DEPMOD:=$(STAGING_HOST_DIR)/usr/bin/depmod
 ADK_DEPMOD:=$(STAGING_HOST_DIR)/usr/bin/depmod
 else
 else
@@ -53,7 +57,6 @@ endif
 
 
 $(LINUX_DIR)/.config: $(LINUX_DIR)/.prepared
 $(LINUX_DIR)/.config: $(LINUX_DIR)/.prepared
 	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-configure.. "
 	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-configure.. "
-	-for f in $(TARGETS);do if [ -f $$f ];then rm $$f;fi;done
 	echo "-${KERNEL_RELEASE}" >${LINUX_DIR}/localversion
 	echo "-${KERNEL_RELEASE}" >${LINUX_DIR}/localversion
 ifeq ($(ADK_TARGET_KERNEL_USE_DEFCONFIG),y)
 ifeq ($(ADK_TARGET_KERNEL_USE_DEFCONFIG),y)
 	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} $(ADK_TARGET_KERNEL_DEFCONFIG) $(MAKE_TRACE)
 	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} $(ADK_TARGET_KERNEL_DEFCONFIG) $(MAKE_TRACE)
@@ -67,22 +70,19 @@ else
 	$(CP) $(BUILD_DIR)/.kernelconfig $(LINUX_DIR)/mini.config
 	$(CP) $(BUILD_DIR)/.kernelconfig $(LINUX_DIR)/mini.config
 	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} KCONFIG_ALLCONFIG=mini.config allnoconfig $(MAKE_TRACE)
 	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} KCONFIG_ALLCONFIG=mini.config allnoconfig $(MAKE_TRACE)
 endif
 endif
-	touch -c $(LINUX_DIR)/.config
 	$(CMD_TRACE) " done"
 	$(CMD_TRACE) " done"
 	$(END_TRACE)
 	$(END_TRACE)
 
 
 $(LINUX_DIR)/$(KERNEL_FILE): $(LINUX_DIR)/.config
 $(LINUX_DIR)/$(KERNEL_FILE): $(LINUX_DIR)/.config
 	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-compile.. "
 	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-compile.. "
 	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} -j${ADK_MAKE_JOBS} $(KERNEL_TARGET) $(MAKE_TRACE)
 	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} -j${ADK_MAKE_JOBS} $(KERNEL_TARGET) $(MAKE_TRACE)
-	touch -c $(LINUX_DIR)/$(KERNEL_FILE)
 	$(CMD_TRACE) " done"
 	$(CMD_TRACE) " done"
 	$(END_TRACE)
 	$(END_TRACE)
 
 
-$(LINUX_BUILD_DIR)/modules: $(LINUX_DIR)/$(KERNEL_FILE)
-	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-modules-compile.. "
-	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} -j${ADK_MAKE_JOBS} modules $(MAKE_TRACE)
-	$(CMD_TRACE) " done"
-	$(END_TRACE)
+prepare:
+compile: $(LINUX_DIR)/$(KERNEL_FILE)
+install:
+ifneq ($(KERNEL_MODULES_USED),)
 	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-modules-install.. "
 	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-modules-install.. "
 	rm -rf $(LINUX_BUILD_DIR)/modules
 	rm -rf $(LINUX_BUILD_DIR)/modules
 	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} \
 	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} \
@@ -91,9 +91,9 @@ $(LINUX_BUILD_DIR)/modules: $(LINUX_DIR)/$(KERNEL_FILE)
 		modules_install $(MAKE_TRACE)
 		modules_install $(MAKE_TRACE)
 	$(CMD_TRACE) " done"
 	$(CMD_TRACE) " done"
 	$(END_TRACE)
 	$(END_TRACE)
-ifneq ($(ADK_RUNTIME_DEV_UDEV),y)
-	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-create-packages.. "
-	@mkdir -p ${PACKAGE_DIR}
+ifeq ($(ADK_RUNTIME_DEV_UDEV),)
+	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-modules-create-packages.. "
+	rm -f ${PACKAGE_DIR}/kmod-*
 	PATH='${HOST_PATH}' ${BASH} ${SCRIPT_DIR}/make-module-ipkgs.sh \
 	PATH='${HOST_PATH}' ${BASH} ${SCRIPT_DIR}/make-module-ipkgs.sh \
 		"${ADK_TARGET_CPU_ARCH}" \
 		"${ADK_TARGET_CPU_ARCH}" \
 		"${KERNEL_VERSION}" \
 		"${KERNEL_VERSION}" \
@@ -103,21 +103,10 @@ ifneq ($(ADK_RUNTIME_DEV_UDEV),y)
 	$(CMD_TRACE) " done"
 	$(CMD_TRACE) " done"
 	$(END_TRACE)
 	$(END_TRACE)
 endif
 endif
-
-prepare:
-ifneq ($(KERNEL_MODULES_USED),)
-compile: $(LINUX_BUILD_DIR)/modules
-else
-compile: $(LINUX_DIR)/$(KERNEL_FILE)
-endif
-install: compile
-ifneq ($(KERNEL_MODULES_USED),)
-	$(START_TRACE) "target/${ADK_TARGET_ARCH}-modules-install.. "
-ifeq ($(ADK_TARGET_PACKAGE_IPKG)$(ADK_TARGET_PACKAGE_OPKG),y)
-	$(PKG_INSTALL) $(wildcard ${PACKAGE_DIR}/kmod-*) $(MAKE_TRACE)
-else
-	$(foreach pkg,$(wildcard ${PACKAGE_DIR}/kmod-*),$(shell $(PKG_INSTALL) $(pkg)))
-endif
+	$(START_TRACE) "target/${ADK_TARGET_ARCH}-kernel-modules-install-packages.. "
+	for pkg in $(PACKAGE_DIR)/kmod-*; do \
+		[[ -e "$$pkg" ]] && $(PKG_INSTALL) $$pkg; \
+	done
 	$(CMD_TRACE) " done"
 	$(CMD_TRACE) " done"
 	$(END_TRACE)
 	$(END_TRACE)
 endif
 endif

+ 1 - 1
mk/package.mk

@@ -273,7 +273,7 @@ endif
 
 
 ifeq (,$(filter devonly,$(7)))
 ifeq (,$(filter devonly,$(7)))
 	$${PKG_BUILD} $${IDIR_$(1)} $${PACKAGE_DIR} $(MAKE_TRACE)
 	$${PKG_BUILD} $${IDIR_$(1)} $${PACKAGE_DIR} $(MAKE_TRACE)
-ifneq ($(ADK_DEBUG),y)
+ifneq ($(ADK_DEBUG),)
 	$${PKG_BUILD} $${IDIR_$(1)_DBG} $${PACKAGE_DIR} $(MAKE_TRACE)
 	$${PKG_BUILD} $${IDIR_$(1)_DBG} $${PACKAGE_DIR} $(MAKE_TRACE)
 endif
 endif
 endif
 endif

+ 3 - 0
scripts/make-module-ipkgs.sh

@@ -65,6 +65,9 @@ done
 #done
 #done
 #echo
 #echo
 
 
+# start with empty directory, avoid leftovers after version change
+rm -rf ${BUILD_DIR}/linux-modules
+
 for modname in ${!modpaths[@]}; do
 for modname in ${!modpaths[@]}; do
 	find_modlevel $modname
 	find_modlevel $modname
 
 

+ 1 - 1
target/Makefile

@@ -176,7 +176,7 @@ endif
 %-compile: %-prepare
 %-compile: %-prepare
 	$(MAKE) -C $(patsubst %-compile,%,$@) compile
 	$(MAKE) -C $(patsubst %-compile,%,$@) compile
 
 
-%-install: %-compile
+%-install:
 	$(MAKE) -C $(patsubst %-install,%,$@) install
 	$(MAKE) -C $(patsubst %-install,%,$@) install
 
 
 %-targethelp:
 %-targethelp:

+ 1 - 1
target/arm/Makefile

@@ -138,7 +138,7 @@ endif
 kernel-strip:
 kernel-strip:
 ifeq ($(ADK_TARGET_KERNEL_GIT_REPO_NAME),rpi)
 ifeq ($(ADK_TARGET_KERNEL_GIT_REPO_NAME),rpi)
 	@echo adding DT trailer to kernel $(MAKE_TRACE)
 	@echo adding DT trailer to kernel $(MAKE_TRACE)
-	PATH='$(HOST_PATH)' perl $(LINUX_DIR)/scripts/mkknlimg $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
+	PATH='$(HOST_PATH)' perl $(LINUX_DIR)/scripts/mkknlimg $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL) $(MAKE_TRACE)
 else
 else
 	@cp $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
 	@cp $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
 endif
 endif