[coreboot] [LinuxBIOS] [PATCH] buildrom: add extract and busybox-config, uclibc-config targets

Ward Vandewege ward at gnu.org
Sat Jan 26 06:08:29 CET 2008


All right, third try.

On Fri, Jan 11, 2008 at 04:07:37PM -0700, Myles Watson wrote:
> This patch breaks the dependencies somehow.  Before your patch, I could
> remove the work/uclibc directory and only uclibc would get rebuilt.  Now it
> rebuilds mkelfimage, the kernel, etc.
> 
> I looked for the problem, but didn't see it right away.

It was a little tricky - apparently adding some of those directories as
prerequisites confused messed things up a bit. The 'stamp' directory
timestamp ended up newer than the stamp/_unpacked file thus forcing a rebuild.
This was presumably because stamp/_configured was created after stamp and
stamp/_unpacked. 

Anyway, I fixed the problem by turning the directory prerequisites into
order-only prerequisites.

Thanks,
Ward.

-- 
Ward Vandewege <ward at fsf.org>
Free Software Foundation - Senior System Administrator
-------------- next part --------------
This patch adds extract targets, as well as the first of a a bunch of config
targets: busybox-config and uclibc-config.

The extract targets will just extract the component(s) under work.

The config targets will run a configure command for the component, and then
copy the resulting config file to packages/component/conf/customconfig. That
config file will then be used to build the image when 'make' is issued,
overriding the default buildrom config for that package/payload.

Signed-off-by: Ward Vandewege <ward at gnu.org>

Index: Makefile
===================================================================
--- Makefile	(revision 100)
+++ Makefile	(working copy)
@@ -21,7 +21,7 @@
 config-targets := 1
 endif
 
-ifneq ($(filter config %config,$(MAKECMDGOALS)),)
+ifneq ($(filter textconfig oldconfig defconfig menuconfig,$(MAKECMDGOALS)),)
 config-targets := 1
 dot-config := 0
 endif
@@ -60,6 +60,7 @@
 
 PKG_clean=$(patsubst %, %-clean, $(PKGLIST))
 PKG_distclean=$(patsubst %, %-distclean, $(PKGLIST))
+PKG_extract=$(patsubst %, %-extract, $(PKGLIST))
 
 # This is the top level target - for v2, the final deliverable is built
 # by coreboot, for v3 it is built by us, so we have ifdef magic here
@@ -78,6 +79,8 @@
 
 payload: $(PAYLOAD_TARGET)
 
+extract: $(PKG_extract)
+
 clean: $(PKG_clean)
 	@ rm -rf $(INITRD_DIR) $(OUTPUT_DIR)
 
Index: packages/kernel/kernel.inc
===================================================================
--- packages/kernel/kernel.inc	(revision 100)
+++ packages/kernel/kernel.inc	(working copy)
@@ -25,7 +25,7 @@
 KERNEL_INSTALL_LOG=$(KERNEL_LOG_DIR)/install.log
 endif
 
-$(KERNEL_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(KERNEL_SOURCE)
+$(KERNEL_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(KERNEL_SOURCE) | $(KERNEL_STAMP_DIR)
 	@ mkdir -p $(KERNEL_DIR)
 	@ echo "Unpacking kernel..."
 	@ tar -C $(KERNEL_DIR) -jxf $(SOURCE_DIR)/$(KERNEL_SOURCE)
@@ -50,7 +50,7 @@
 $(KERNEL_SRC_DIR)/.config: $(KERNEL_STAMP_DIR)/.patched
 	@ cat $(KERNEL_CONFIG) | sed -e s:^CONFIG_LOCALVERSION=.*:CONFIG_LOCALVERSION=\"$(ROM_VERSION)\": > $(KERNEL_SRC_DIR)/.config
 
-$(KERNEL_BZIMAGE): $(KERNEL_SRC_DIR)/.config
+$(KERNEL_BZIMAGE): $(KERNEL_SRC_DIR)/.config | $(KERNEL_LOG_DIR)
 	@ echo "Building kernel..."
 	@ $(MAKE) $(PARALLEL_MAKE) -C $(KERNEL_SRC_DIR) ARCH=$(KERNEL_BUILD_ARCH) \
 	KERNEL_CC="$(CC)" KERNEL_LD="$(LD)" > $(KERNEL_BUILD_LOG) 2>&1
@@ -63,7 +63,7 @@
 	@ install -d $(OUTPUT_DIR)
 	@ install -m 0644 $(KERNEL_SRC_DIR)/vmlinux $@
 	
-$(KERNEL_STAMP_DIR)/.headers: $(KERNEL_SRC_DIR)/.config $(STAGING_DIR)/host/bin/unifdef
+$(KERNEL_STAMP_DIR)/.headers: $(KERNEL_SRC_DIR)/.config $(STAGING_DIR)/host/bin/unifdef | $(KERNEL_LOG_DIR)
 	@ echo "Installing kernel headers..."
 	@( export PATH=$(PATH):$(STAGING_DIR)/host/bin; \
 	$(MAKE) -C $(KERNEL_SRC_DIR) ARCH=$(KERNEL_BUILD_ARCH) \
@@ -73,7 +73,7 @@
 $(KERNEL_STAMP_DIR) $(KERNEL_LOG_DIR):
 	@ mkdir -p $@
 
-generic-kernel: $(KERNEL_STAMP_DIR) $(KERNEL_LOG_DIR) $(OUTPUT_DIR)/bzImage $(OUTPUT_DIR)/vmlinux $(KERNEL_STAMP_DIR)/.headers
+generic-kernel: $(OUTPUT_DIR)/bzImage $(OUTPUT_DIR)/vmlinux $(KERNEL_STAMP_DIR)/.headers
 
 generic-kernel-clean:
 	@ echo "Cleaning kernel..."
@@ -83,3 +83,6 @@
 
 generic-kernel-distclean:
 	@ rm -rf $(KERNEL_DIR)
+
+kernel-extract: $(KERNEL_STAMP_DIR)/.patched
+
Index: packages/unifdef/unifdef.mk
===================================================================
--- packages/unifdef/unifdef.mk	(revision 100)
+++ packages/unifdef/unifdef.mk	(working copy)
@@ -17,7 +17,7 @@
 	@ mkdir -p $(SOURCE_DIR)
 	@ wget -P $(SOURCE_DIR) $(UNIFDEF_URL)/$(UNIFDEF_SOURCE)
 
-$(UNIFDEF_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(UNIFDEF_SOURCE)
+$(UNIFDEF_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(UNIFDEF_SOURCE) $(UNIFDEF_STAMP_DIR)
 	@ tar -C $(UNIFDEF_DIR) -zxf $(SOURCE_DIR)/$(UNIFDEF_SOURCE)
 	@ rm -f $(UNIFDEF_SRC_DIR)/unifdef 
 	@ rm -f $(UNIFDEF_SRC_DIR)/unifdef.o
@@ -49,3 +49,5 @@
 	echo ""
 
 .PHONY: unifdef
+
+unifdef-extract: $(UNIFDEF_STAMP_DIR)/.unpacked
Index: packages/filo/filo.mk
===================================================================
--- packages/filo/filo.mk	(revision 100)
+++ packages/filo/filo.mk	(working copy)
@@ -31,7 +31,7 @@
 	$(FILO_TAG) $(SOURCE_DIR)/$(FILO_TARBALL) \
 	> $(FILO_FETCH_LOG) 2>&1
 
-$(FILO_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(FILO_TARBALL)
+$(FILO_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(FILO_TARBALL) $(FILO_STAMP_DIR) $(FILO_DIR)
 	@ echo "Unpacking filo..."
 	@ tar -C $(FILO_DIR) -zxf $(SOURCE_DIR)/$(FILO_TARBALL)
 	@ touch $@      
@@ -64,3 +64,5 @@
 filo-distclean:
 	@ rm -rf $(FILO_DIR)/*
 
+filo-extract: $(FILO_STAMP_DIR)/.patched
+
Index: packages/busybox/busybox.mk
===================================================================
--- packages/busybox/busybox.mk	(revision 100)
+++ packages/busybox/busybox.mk	(working copy)
@@ -17,11 +17,18 @@
 
 BUSYBOX_CONFIG ?= defconfig
 
+ifeq ($(BUSYBOX_CONFIG),defconfig)
+ifeq ($(shell if [ -f $(PACKAGE_DIR)/busybox/conf/customconfig ]; then echo 1; fi),1)
+	BUSYBOX_CONFIG = customconfig
+endif
+endif
+
 $(SOURCE_DIR)/$(BUSYBOX_SOURCE):
+	@ echo "Downloading busybox..."
 	@ mkdir -p $(SOURCE_DIR)
 	@ wget -P $(SOURCE_DIR) $(BUSYBOX_URL)/$(BUSYBOX_SOURCE)
 
-$(BUSYBOX_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(BUSYBOX_SOURCE)
+$(BUSYBOX_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(BUSYBOX_SOURCE) | $(BUSYBOX_STAMP_DIR) $(BUSYBOX_DIR)
 	@ echo "Unpacking busybox..."
 	@ tar -C $(BUSYBOX_DIR) -jxf $(SOURCE_DIR)/$(BUSYBOX_SOURCE)
 	@ touch $@	
@@ -32,9 +39,9 @@
 	@ touch $@
 
 $(BUSYBOX_SRC_DIR)/.config: $(BUSYBOX_STAMP_DIR)/.patched
-	@ cp $(PACKAGE_DIR)/busybox/conf/$(BUSYBOX_CONFIG) $@
+	@ cp -f $(PACKAGE_DIR)/busybox/conf/$(BUSYBOX_CONFIG) $@
 
-$(BUSYBOX_SRC_DIR)/busybox: $(BUSYBOX_SRC_DIR)/.config
+$(BUSYBOX_SRC_DIR)/busybox: $(BUSYBOX_SRC_DIR)/.config | $(BUSYBOX_LOG_DIR)
 	@ echo "Building busybox..."
 	@ ( unset CFLAGS; unset LDFLAGS; \
 	export EXTRA_CFLAGS="$(CFLAGS)";\
@@ -42,14 +49,14 @@
 	$(MAKE) -C $(BUSYBOX_SRC_DIR) VERBOSE=y \
 	LIBRARIES="$(LIBS)" all > $(BUSYBOX_BUILD_LOG) 2>&1)
 
-$(INITRD_DIR)/bin/busybox: $(BUSYBOX_SRC_DIR)/busybox
+$(INITRD_DIR)/bin/busybox: $(BUSYBOX_SRC_DIR)/busybox | $(BUSYBOX_LOG_DIR)
 	@ $(MAKE) -C $(BUSYBOX_SRC_DIR) \
 	PREFIX=$(INITRD_DIR) install > $(BUSYBOX_INSTALL_LOG) 2>&1
 
-$(BUSYBOX_STAMP_DIR) $(BUSYBOX_LOG_DIR):
+$(BUSYBOX_STAMP_DIR) $(BUSYBOX_LOG_DIR) $(BUSYBOX_DIR):
 	@ mkdir -p $@
 
-busybox: $(BUSYBOX_STAMP_DIR) $(BUSYBOX_LOG_DIR) $(INITRD_DIR)/bin/busybox
+busybox: $(INITRD_DIR)/bin/busybox
 
 busybox-clean:
 	@ echo "Cleaning busybox..."
@@ -57,8 +64,17 @@
 
 busybox-distclean:
 	@ rm -rf $(BUSYBOX_DIR)/*
+	@ rm -f $(PACKAGE_DIR)/busybox/conf/customconfig
 
 busybox-bom:
 	@ echo "Package: busybox"
 	@ echo "Source: $(BUSYBOX_URL)/$(BUSYBOX_SOURCE)"
 	@ echo ""
+
+busybox-extract: $(BUSYBOX_STAMP_DIR)/.patched
+
+busybox-config: $(BUSYBOX_STAMP_DIR)/.patched
+	@ echo "Configure busybox..."
+	@ $(MAKE) -C $(BUSYBOX_SRC_DIR) menuconfig
+	@ cp -f $(BUSYBOX_SRC_DIR)/.config $(PACKAGE_DIR)/busybox/conf/customconfig
+
Index: packages/mkelfimage/mkelfimage.mk
===================================================================
--- packages/mkelfimage/mkelfimage.mk	(revision 100)
+++ packages/mkelfimage/mkelfimage.mk	(working copy)
@@ -15,11 +15,14 @@
 MKELFIMAGE_CONFIG_LOG=$(MKELFIMAGE_LOG_DIR)/config.log
 endif
 
+$(MKELFIMAGE_STAMP_DIR) $(MKELFIMAGE_LOG_DIR):
+	@ mkdir -p $@
+
 $(SOURCE_DIR)/$(MKELFIMAGE_SOURCE):
 	@ mkdir -p $(SOURCE_DIR)
 	@ wget -P $(SOURCE_DIR) $(MKELFIMAGE_URL)/$(MKELFIMAGE_SOURCE)
 
-$(MKELFIMAGE_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(MKELFIMAGE_SOURCE)
+$(MKELFIMAGE_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(MKELFIMAGE_SOURCE) | $(MKELFIMAGE_STAMP_DIR) $(MKELFIMAGE_LOG_DIR) 
 	@ echo "Unpacking mkelfimage..."
 	@ tar -C $(MKELFIMAGE_DIR) -zxf $(SOURCE_DIR)/$(MKELFIMAGE_SOURCE)
 	@ touch $@	
@@ -45,11 +48,8 @@
 	@ install -d $(STAGING_DIR)/sbin
 	@ install -m 0755 $< $@
 
-$(MKELFIMAGE_STAMP_DIR) $(MKELFIMAGE_LOG_DIR):
-	@ mkdir -p $@
+mkelfimage: $(STAGING_DIR)/sbin/mkelfImage
 
-mkelfimage: $(MKELFIMAGE_STAMP_DIR) $(MKELFIMAGE_LOG_DIR) $(STAGING_DIR)/sbin/mkelfImage
-
 mkelfimage-clean:
 	$(MAKE) -C $(MKELFIMAGE_SRC_DIR) clean 
 
@@ -60,3 +60,6 @@
 	echo "Package: mkelfimage"
 	echo "Source: $(MKELFIMAGE_URL)/$(MKELFIMAGE_SOURCE)"
 	echo ""
+
+mkelfimage-extract: $(MKELFIMAGE_STAMP_DIR)/.patched
+
Index: packages/coreboot-v2/coreboot.inc
===================================================================
--- packages/coreboot-v2/coreboot.inc	(revision 100)
+++ packages/coreboot-v2/coreboot.inc	(working copy)
@@ -58,7 +58,7 @@
 $(CBV2_PAYLOAD_TARGET): $(PAYLOAD_TARGET)
 	@ cp $< $@
 
-$(CBV2_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(CBV2_TARBALL)
+$(CBV2_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(CBV2_TARBALL) $(CBV2_STAMP_DIR) $(CBV2_LOG_DIR)
 	@ echo "Unpacking coreboot..."
 	@ tar -C $(CBV2_DIR) -zxf $(SOURCE_DIR)/$(CBV2_TARBALL)
 	@ touch $@	
@@ -98,3 +98,6 @@
 	fi	
 
 	@ rm -rf $(CBV2_DIR)/*
+
+coreboot-extract: $(CBV2_STAMP_DIR)/.patched
+
Index: packages/uclibc/uclibc.mk
===================================================================
--- packages/uclibc/uclibc.mk	(revision 100)
+++ packages/uclibc/uclibc.mk	(working copy)
@@ -7,8 +7,15 @@
 UCLIBC_VER ?= 0.9.28
 UCLIBC_ARCH ?= i386
 UCLIBC_CONFIG ?= defconfig
+
+ifeq ($(UCLIBC_CONFIG),defconfig)
+ifeq ($(shell if [ -f $(PACKAGE_DIR)/ucblic/conf/customconfig ]; then echo 1; fi),1)
+	UCLIBC_CONFIG = customconfig
 endif
+endif
 
+endif
+
 UCLIBC_URL=http://www.uclibc.org/downloads
 UCLIBC_SOURCE=uClibc-$(UCLIBC_VER).tar.bz2
 UCLIBC_DIR=$(BUILD_DIR)/uclibc
@@ -25,10 +32,11 @@
 endif
 
 $(SOURCE_DIR)/$(UCLIBC_SOURCE):
+	@ echo "Downloading uclibc..." 
 	@ mkdir -p $(SOURCE_DIR)
 	@ wget -P $(SOURCE_DIR) $(UCLIBC_URL)/$(UCLIBC_SOURCE)
 
-$(UCLIBC_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(UCLIBC_SOURCE)
+$(UCLIBC_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(UCLIBC_SOURCE) $(UCLIBC_STAMP_DIR) $(UCLIBC_DIR)
 	@ echo "Unpacking uclibc..." 
 	@ tar -C $(UCLIBC_DIR) -jxf $(SOURCE_DIR)/$(UCLIBC_SOURCE)
 	@ touch $@	
@@ -61,7 +69,7 @@
 	@ install -m 755 -d $(STAGING_DIR)/bin
 	@ install -m 755 $< $@
 
-$(UCLIBC_STAMP_DIR) $(UCLIBC_LOG_DIR):
+$(UCLIBC_STAMP_DIR) $(UCLIBC_LOG_DIR) $(UCLIBC_DIR):
 	@ mkdir -p $@
 
 uclibc: $(UCLIBC_STAMP_DIR) $(UCLIBC_LOG_DIR) $(STAGING_DIR)/lib/libc.a
@@ -77,3 +85,11 @@
 	@ echo "Package: uclibc"
 	@ echo "Source: $(UCLIBC_URL)/$(UCLIBC_SOURCE)"
 	@ echo ""
+
+uclibc-extract: $(UCLIBC_STAMP_DIR)/.unpacked
+
+uclibc-config: $(UCLIBC_STAMP_DIR)/.unpacked
+	@ echo "Configure uclibc..."
+	@ $(MAKE) -C $(UCLIBC_SRC_DIR) menuconfig
+	@ cp -f $(UCLIBC_SRC_DIR)/.config $(PACKAGE_DIR)/uclibc/conf/customconfig
+
Index: packages/lzma/lzma.mk
===================================================================
--- packages/lzma/lzma.mk	(revision 100)
+++ packages/lzma/lzma.mk	(working copy)
@@ -17,7 +17,7 @@
 	@ mkdir -p $(SOURCE_DIR)
 	@ wget -P $(SOURCE_DIR) $(LZMA_URL)/$(LZMA_SOURCE)
 
-$(LZMA_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(LZMA_SOURCE)
+$(LZMA_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(LZMA_SOURCE) $(LZMA_STAMP_DIR)
 	@ mkdir -p $(LZMA_SRC_DIR)
 	@ tar -C $(LZMA_SRC_DIR) -jxf $(SOURCE_DIR)/$(LZMA_SOURCE)
 	@ touch $@
@@ -44,3 +44,6 @@
 
 lzma-distclean:
 	@ rm -rf $(LZMA_DIR)/*
+
+lzma-extract: $(LZMA_STAMP_DIR)/.unpacked
+


More information about the coreboot mailing list