[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