Browse Source

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 8 years ago
parent
commit
263bba08cb
7 changed files with 28 additions and 32 deletions
  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)
+prepare:
-	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-modules-compile.. "
+compile: $(LINUX_DIR)/$(KERNEL_FILE)
-	${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} -j${ADK_MAKE_JOBS} modules $(MAKE_TRACE)
+install:
-	$(CMD_TRACE) " done"
+ifneq ($(KERNEL_MODULES_USED),)
-	$(END_TRACE)
 	$(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)
+ifeq ($(ADK_RUNTIME_DEV_UDEV),)
-	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-create-packages.. "
+	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-modules-create-packages.. "
-	@mkdir -p ${PACKAGE_DIR}
+	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
-
+	$(START_TRACE) "target/${ADK_TARGET_ARCH}-kernel-modules-install-packages.. "
-prepare:
+	for pkg in $(PACKAGE_DIR)/kmod-*; do \
-ifneq ($(KERNEL_MODULES_USED),)
+		[[ -e "$$pkg" ]] && $(PKG_INSTALL) $$pkg; \
-compile: $(LINUX_BUILD_DIR)/modules
+	done
-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
 	$(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