On 11/02/08 14:56 -0500, Ward Vandewege wrote:
> The attached patch stores build information in a new deploy/config directory,
> which can be saved with a generated image to help with potential
> reconstruction of that image at a later point in time.
> 
> There's probably some more information that could be stored - suggestions
> welcome.
> 
> THanks,
> Ward.

Awesome work 

Acked-by: Jordan Crouse <[EMAIL PROTECTED]>

> -- 
> Ward Vandewege <[EMAIL PROTECTED]>
> Free Software Foundation - Senior System Administrator

> 
> This patch aims to store as much information about the build environment as
> possible during the building of a coreboot image, in order to make it easy to
> recreate coreboot images at a later point in time.
> 
> It logs a number of things in the new deploy/config directory:
> * the buildrom .config file
> * config files used for compiling various packages (filo, kernel, uclibc, 
> busybox)
> * the output of 'svn diff', 'svn info', 'svn status'
> * the output of 'uname -a'
> * a copy of /etc/lsb-release, /etc/debian-version, /etc/redhat-version if 
> they exist
> * the output of '$(CC) --version', '$(MAKE) --version', '$(LD) --version'
> 
> The logging of SVN output can be disabled in kconfig because it means internet
> access must be available on the machine used for building the coreboot image.
> This setting defaults to on because we already try to download a lot of code 
> if
> we don't have the necessary source packages in sources/.
> 
> Signed-off-by: Ward Vandewege <[EMAIL PROTECTED]>
> 
> Index: Config.in
> ===================================================================
> --- Config.in (revision 111)
> +++ Config.in (working copy)
> @@ -32,6 +32,16 @@
>         See the entire build output on stdout. Otherwise, it will
>         be saved off in a series of logs
>  
> +config STORE_SVN_INFO
> +     bool "Store svn tree information in deployment directory."
> +     default y
> +     help
> +       Store the output of 'svn diff', 'svn status' and 'svn info' in the
> +       deploy/config/svn/ directory. This means the machine used to build 
> +       the coreboot image will need to have internet access during the build.
> +             
> +       If you are not sure, say yes.
> +
>  config MAKE_JOBS
>       int "Number of make jobs to run simultaneously (experimental)"
>       default 1
> Index: packages/kernel/kernel.inc
> ===================================================================
> --- packages/kernel/kernel.inc        (revision 111)
> +++ packages/kernel/kernel.inc        (working copy)
> @@ -63,6 +63,8 @@
>  endif
>       @ $(MAKE) $(PARALLEL_MAKE) -C $(KERNEL_SRC_DIR) 
> ARCH=$(KERNEL_BUILD_ARCH) \
>       KERNEL_CC="$(CC)" KERNEL_LD="$(LD)" > $(KERNEL_BUILD_LOG) 2>&1
> +     @ mkdir -p $(OUTPUT_DIR)/config/kernel
> +     @ cp $(KERNEL_SRC_DIR)/.config $(OUTPUT_DIR)/config/kernel/
>  
>  $(OUTPUT_DIR)/bzImage: $(KERNEL_BZIMAGE)
>       @ install -d $(OUTPUT_DIR)
> Index: packages/filo/filo.mk
> ===================================================================
> --- packages/filo/filo.mk     (revision 111)
> +++ packages/filo/filo.mk     (working copy)
> @@ -56,6 +56,8 @@
>       @ echo "Using custom config $(PACKAGE_DIR)/filo/conf/$(FILO_CONFIG)"
>  endif
>       @ make -C $(FILO_SRC_DIR) filo.elf > $(FILO_BUILD_LOG) 2>&1
> +     @ mkdir -p $(OUTPUT_DIR)/config/filo
> +     @ cp $(FILO_SRC_DIR)/Config $(OUTPUT_DIR)/config/filo/
>  
>  $(FILO_STAMP_DIR) $(FILO_LOG_DIR):
>       @ mkdir -p $@
> Index: packages/busybox/busybox.mk
> ===================================================================
> --- packages/busybox/busybox.mk       (revision 111)
> +++ packages/busybox/busybox.mk       (working copy)
> @@ -51,7 +51,10 @@
>       export LDFLAGS="$(LDFLAGS_orig)";\
>       $(MAKE) -C $(BUSYBOX_SRC_DIR) VERBOSE=y \
>       LIBRARIES="$(LIBS)" all > $(BUSYBOX_BUILD_LOG) 2>&1)
> +     @ mkdir -p $(OUTPUT_DIR)/config/busybox
> +     @ cp $(BUSYBOX_SRC_DIR)/.config $(OUTPUT_DIR)/config/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
> Index: packages/coreboot-v2/coreboot.inc
> ===================================================================
> --- packages/coreboot-v2/coreboot.inc (revision 111)
> +++ packages/coreboot-v2/coreboot.inc (working copy)
> @@ -81,6 +81,30 @@
>       @ echo "Building coreboot..."
>       @ (export CPU_OPT="$(STACKPROTECT)"; \
>       make -C $(CBV2_BUILD_DIR) > $(CBV2_BUILD_LOG) 2>&1)
> +     @ mkdir -p $(OUTPUT_DIR)/config/coreboot-v2/
> +     @ cp $(CBV2_BUILD_DIR)/../$(CBV2_CONFIG) 
> $(OUTPUT_DIR)/config/coreboot-v2/
> +     @ cp $(BASE_DIR)/.config $(OUTPUT_DIR)/config/
> +     @ mkdir -p $(OUTPUT_DIR)/config/system/
> +     @ uname -a >$(OUTPUT_DIR)/config/system/uname-a
> +     @ if [ -f /etc/lsb-release ]; then \
> +     cp /etc/lsb-release $(OUTPUT_DIR)/config/system/; \
> +     fi      
> +     @ if [ -f /etc/debian-version ]; then \
> +     cp /etc/debian-version $(OUTPUT_DIR)/config/system/; \
> +     fi
> +     @ if [ -f /etc/redhat-version ]; then \
> +     cp /etc/redhat-version $(OUTPUT_DIR)/config/system/; \
> +     fi
> +     @ mkdir -p $(OUTPUT_DIR)/config/toolchain/
> +     @ $(MAKE) --version >$(OUTPUT_DIR)/config/toolchain/$(MAKE)-version
> +     @ $(CC) --version >$(OUTPUT_DIR)/config/toolchain/$(CC)-version
> +     @ $(LD) --version >$(OUTPUT_DIR)/config/toolchain/$(LD)-version
> +ifeq ($(CONFIG_STORE_SVN_INFO),y)
> +     @ mkdir -p $(OUTPUT_DIR)/config/svn/
> +     @ svn diff > $(OUTPUT_DIR)/config/svn/svn.diff
> +     @ svn info > $(OUTPUT_DIR)/config/svn/svn.info
> +     @ svn status > $(OUTPUT_DIR)/config/svn/svn.status
> +endif
>  
>  generic-coreboot-clean:
>       @ echo "Cleaning coreboot..."
> Index: packages/uclibc/uclibc.mk
> ===================================================================
> --- packages/uclibc/uclibc.mk (revision 111)
> +++ packages/uclibc/uclibc.mk (working copy)
> @@ -56,6 +56,8 @@
>       SHARED_LIB_LOADER_PATH="/lib" \
>       SHARED_LIB_LOADER_PREFIX="/lib" \
>       all > $(UCLIBC_BUILD_LOG) 2>&1)
> +     @ mkdir -p $(OUTPUT_DIR)/config/uclibc
> +     @ cp $(UCLIBC_SRC_DIR)/.config $(OUTPUT_DIR)/config/uclibc/
>  
>  $(STAGING_DIR)/lib/libc.a: $(UCLIBC_SRC_DIR)/lib/libc.a
>       @ $(MAKE) -C $(UCLIBC_SRC_DIR) \

> -- 
> coreboot mailing list
> [email protected]
> http://www.coreboot.org/mailman/listinfo/coreboot

-- 
Jordan Crouse
Systems Software Development Engineer 
Advanced Micro Devices, Inc.



-- 
coreboot mailing list
[email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to