From patchwork Sun Jan 29 14:24:58 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 92786 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp1051987qgi; Sun, 29 Jan 2017 06:26:36 -0800 (PST) X-Received: by 10.28.0.2 with SMTP id 2mr10707371wma.141.1485699996153; Sun, 29 Jan 2017 06:26:36 -0800 (PST) Return-Path: Received: from theia.denx.de (theia.denx.de. [85.214.87.163]) by mx.google.com with ESMTP id v11si9836273wmg.13.2017.01.29.06.26.35; Sun, 29 Jan 2017 06:26:36 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 85.214.87.163 as permitted sender) client-ip=85.214.87.163; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@nifty.com; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 85.214.87.163 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 6BE15B38CD; Sun, 29 Jan 2017 15:26:21 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Uht3v5ydPJvZ; Sun, 29 Jan 2017 15:26:21 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B7061B38CF; Sun, 29 Jan 2017 15:26:11 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 145DDA75B7 for ; Sun, 29 Jan 2017 15:26:00 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ha2s9agF9aTJ for ; Sun, 29 Jan 2017 15:25:59 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from conuserg-09.nifty.com (conuserg-09.nifty.com [210.131.2.76]) by theia.denx.de (Postfix) with ESMTPS id 5CB2AB384A for ; Sun, 29 Jan 2017 15:25:55 +0100 (CET) Received: from grover.sesame (FL1-111-169-71-157.osk.mesh.ad.jp [111.169.71.157]) (authenticated) by conuserg-09.nifty.com with ESMTP id v0TEPEc3004042; Sun, 29 Jan 2017 23:25:19 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-09.nifty.com v0TEPEc3004042 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1485699919; bh=3/882Z/LF60aswRVLkwI0Puu0yk9T2cd9ecuOcsFiVc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vjaTuCF+3BKG17Od1d/zvMbDaSMOGrYV5ulDNK9rYMUxpQ+iEHsuXdVwvSC8POLB3 KYa52oEPwa3FuOhmJklVhOdl55io/l7zomS3m4ar3rvXByRKxmoIoZIEjHa4YExmiA ibDq8JE5NJ1j+WoD04Y2bavEbHOca2/aONUR9oIb46cwkShzpIR4ynZ0JDO3npheaO SXH/QrQ7ardflD+63DjFX72Zr/sQ1OcIURHb3aS1au2NAdHfGZeHnAAo1R5FKpMKp3 3QTU9HaBl8NMFYNH+vwvIAs7976UPDLcFqjclDokQXdqGn+3orVLvFqCGKoBPEST4m XhG1vJtA1HvTg== X-Nifty-SrcIP: [111.169.71.157] From: Masahiro Yamada To: u-boot@lists.denx.de Date: Sun, 29 Jan 2017 23:24:58 +0900 Message-Id: <1485699900-20464-2-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1485699900-20464-1-git-send-email-yamada.masahiro@socionext.com> References: <1485699900-20464-1-git-send-email-yamada.masahiro@socionext.com> Cc: Tom Rini Subject: [U-Boot] [PATCH 1/3] scripts: import bin2c.c from Linux 4.10-rc5 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Import scripts/basic/bin2header.c of Linux. In Linux Kernel, this file was moved to scripts/basic directory by commit 8370edea81e3 ("bin2c: move bin2c in scripts/basic"). In U-boot, we do not need to follow that commit. Just put it in the original directory "scripts". Signed-off-by: Masahiro Yamada --- scripts/bin2c.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 scripts/bin2c.c -- 2.7.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot diff --git a/scripts/bin2c.c b/scripts/bin2c.c new file mode 100644 index 0000000..c3d7eef --- /dev/null +++ b/scripts/bin2c.c @@ -0,0 +1,36 @@ +/* + * Unloved program to convert a binary on stdin to a C include on stdout + * + * Jan 1999 Matt Mackall + * + * This software may be used and distributed according to the terms + * of the GNU General Public License, incorporated herein by reference. + */ + +#include + +int main(int argc, char *argv[]) +{ + int ch, total = 0; + + if (argc > 1) + printf("const char %s[] %s=\n", + argv[1], argc > 2 ? argv[2] : ""); + + do { + printf("\t\""); + while ((ch = getchar()) != EOF) { + total++; + printf("\\x%02x", ch); + if (total % 16 == 0) + break; + } + printf("\"\n"); + } while (ch != EOF); + + if (argc > 1) + printf("\t;\n\n#include \n\nconst size_t %s_size = %d;\n", + argv[1], total); + + return 0; +} From patchwork Sun Jan 29 14:24:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 92785 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp1051943qgi; Sun, 29 Jan 2017 06:26:25 -0800 (PST) X-Received: by 10.28.35.65 with SMTP id j62mr9693942wmj.31.1485699985204; Sun, 29 Jan 2017 06:26:25 -0800 (PST) Return-Path: Received: from theia.denx.de (theia.denx.de. [85.214.87.163]) by mx.google.com with ESMTP id c129si9772248wmh.166.2017.01.29.06.26.24; Sun, 29 Jan 2017 06:26:25 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 85.214.87.163 as permitted sender) client-ip=85.214.87.163; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@nifty.com; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 85.214.87.163 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id C2CF3B38B0; Sun, 29 Jan 2017 15:26:15 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id q6AOetZxp0PH; Sun, 29 Jan 2017 15:26:15 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 9863CB38A4; Sun, 29 Jan 2017 15:26:09 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B07DFB387E for ; Sun, 29 Jan 2017 15:25:59 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FppwEM3H7vxs for ; Sun, 29 Jan 2017 15:25:59 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from conuserg-09.nifty.com (conuserg-09.nifty.com [210.131.2.76]) by theia.denx.de (Postfix) with ESMTPS id 0C115A75B7 for ; Sun, 29 Jan 2017 15:25:55 +0100 (CET) Received: from grover.sesame (FL1-111-169-71-157.osk.mesh.ad.jp [111.169.71.157]) (authenticated) by conuserg-09.nifty.com with ESMTP id v0TEPEc4004042; Sun, 29 Jan 2017 23:25:19 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-09.nifty.com v0TEPEc4004042 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1485699920; bh=cUH8xJf0/kcn7DDjFDz8mDj7ZpQWhD0CkI/v0KMtLCQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kMe9T9FIqUG5lR64NAZrcIc+eFyhhtifgEeG4fw34XOW1KokA2aTb9DspEj+lFnTt qCgF5hNTpAA4LAqb31OsEp6a9MvWbM/Qf7ZAKScpEkCPzUIKA+vhAHEZFDtquITR3r RQQ/PdDELl3IJxfBEkj8CbYdis8eQ69is589Vuz8FwkWLOgaAx5r/n6/c5pn0+c67M iooI0IA+038y0Uky29Itomu9Z4OQ7Wu2rk3dRhvlBvh+foOujJl5KjJOvyqmrxqx6b FcufXb0V7qgp3eaqO+sOHQG7KxBP4LOYRNzvmT/rxWwf0uKCAlNLR8c+qtJQJ0xO6N vTHWAar2mUh6Q== X-Nifty-SrcIP: [111.169.71.157] From: Masahiro Yamada To: u-boot@lists.denx.de Date: Sun, 29 Jan 2017 23:24:59 +0900 Message-Id: <1485699900-20464-3-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1485699900-20464-1-git-send-email-yamada.masahiro@socionext.com> References: <1485699900-20464-1-git-send-email-yamada.masahiro@socionext.com> Cc: Tom Rini Subject: [U-Boot] [PATCH 2/3] cmd: add a new command "config" to show .config contents X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" This feature is inspired by /proc/config.gz of Linux. In Linux, if CONFIG_IKCONFIG is enabled, the ".config" file contents are embedded in the kernel image. If CONFIG_IKCONFIG_PROC is also enabled, the ".config" contents are exposed to /proc/config.gz. Users can do "zcat /proc/config.gz" to check which config options are enabled on the running kernel image. The idea is almost the same here; if CONFIG_CMD_CONFIG is enabled, the ".config" contents are compressed and saved in the U-Boot image, then printed by the new command "config". The usage is quite simple. Enable CONFIG_CMD_CONFIG, then run > config from the command line interface. The .config will be printed on the console. This feature increases the U-Boot image size by about 4KB (this is due to the gzip-compressed .config file). By default, it is enabled only for Sandbox because we do not care about the memory footprint on it. Of course, this feature is architecture agnostic, so you can enable it on any board if the image size increase is acceptable for you. Signed-off-by: Masahiro Yamada --- Kconfig | 2 ++ Makefile | 12 +++++++----- cmd/.gitignore | 3 +++ cmd/Kconfig | 12 ++++++++++++ cmd/Makefile | 22 ++++++++++++++++++++++ cmd/config.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ scripts/.gitignore | 1 + scripts/Kconfig | 2 ++ scripts/Makefile | 4 ++++ 9 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 cmd/.gitignore create mode 100644 cmd/config.c create mode 100644 scripts/Kconfig -- 2.7.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot diff --git a/Kconfig b/Kconfig index cb19ce6..09c11ab 100644 --- a/Kconfig +++ b/Kconfig @@ -322,3 +322,5 @@ source "fs/Kconfig" source "lib/Kconfig" source "test/Kconfig" + +source "scripts/Kconfig" diff --git a/Makefile b/Makefile index 262df7c..fb1ec20 100644 --- a/Makefile +++ b/Makefile @@ -482,6 +482,13 @@ else # Build targets only - this includes vmlinux, arch specific targets, clean # targets and others. In general all targets except *config targets. +# Additional helpers built in scripts/ +# Carefully list dependencies so we do not try to build scripts twice +# in parallel +PHONY += scripts +scripts: scripts_basic include/config/auto.conf + $(Q)$(MAKE) $(build)=$(@) + ifeq ($(dot-config),1) # Read in config -include include/config/auto.conf @@ -1537,11 +1544,6 @@ tests: $(Q)$(MAKE) $(build)=scripts build_docproc $(Q)$(MAKE) $(build)=doc/DocBook $@ -# Dummies... -PHONY += prepare scripts -prepare: ; -scripts: ; - endif #ifeq ($(config-targets),1) endif #ifeq ($(mixed-targets),1) diff --git a/cmd/.gitignore b/cmd/.gitignore new file mode 100644 index 0000000..7800586 --- /dev/null +++ b/cmd/.gitignore @@ -0,0 +1,3 @@ +config_data.gz +config_data_gz.h +config_data_size.h diff --git a/cmd/Kconfig b/cmd/Kconfig index 91bd3fb..942470b 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -126,6 +126,18 @@ config CMD_BDI help Print board info +config CMD_CONFIG + bool "config" + select BUILD_BIN2C + default SANDBOX + help + Print ".config" contents. + + If this option is enabled, the ".config" file contents are embedded + in the U-Boot image and can be printed on the console by the "config" + command. This provides information of which options are enabled on + the running U-Boot. + config CMD_CONSOLE bool "coninfo" default y diff --git a/cmd/Makefile b/cmd/Makefile index 566fed9..1a04e7e 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -31,6 +31,7 @@ obj-$(CONFIG_CMD_BOOTI) += booti.o obj-$(CONFIG_CMD_CACHE) += cache.o obj-$(CONFIG_CMD_CBFS) += cbfs.o obj-$(CONFIG_CMD_CLK) += clk.o +obj-$(CONFIG_CMD_CONFIG) += config.o obj-$(CONFIG_CMD_CONSOLE) += console.o obj-$(CONFIG_CMD_CPLBINFO) += cplbinfo.o obj-$(CONFIG_CMD_CPU) += cpu.o @@ -165,3 +166,24 @@ obj-$(CONFIG_CMD_BLOB) += blob.o obj-y += nvedit.o obj-$(CONFIG_ARCH_MVEBU) += mvebu/ + +filechk_data_gz = (echo "static const char data_gz[] ="; cat $< | scripts/bin2c; echo ";") + +filechk_data_size = \ + (echo "static const size_t data_size = "; \ + cat $< | wc -c; echo ";") + +# "config" command +$(obj)/config.o: $(obj)/config_data_gz.h $(obj)/config_data_size.h + +targets += config_data.gz +$(obj)/config_data.gz: $(KCONFIG_CONFIG) FORCE + $(call if_changed,gzip) + +targets += config_data_gz.h +$(obj)/config_data_gz.h: $(obj)/config_data.gz FORCE + $(call filechk,data_gz) + +targets += config_data_size.h +$(obj)/config_data_size.h: $(KCONFIG_CONFIG) FORCE + $(call filechk,data_size) diff --git a/cmd/config.c b/cmd/config.c new file mode 100644 index 0000000..0c7f4e0 --- /dev/null +++ b/cmd/config.c @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2017 Masahiro Yamada + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include + +#include "config_data_gz.h" +#include "config_data_size.h" + +static int do_config(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + char *dst; + unsigned long len = data_size; + int ret = CMD_RET_SUCCESS; + + dst = malloc(data_size + 1); + if (!dst) + return CMD_RET_FAILURE; + + ret = gunzip(dst, data_size, (unsigned char *)data_gz, &len); + if (ret) { + printf("failed to uncompress .config data\n"); + ret = CMD_RET_FAILURE; + goto free; + } + + dst[data_size] = 0; + puts(dst); + +free: + free(dst); + + return ret; +} + +U_BOOT_CMD( + config, 1, 1, do_config, + "print .config", + "" +); diff --git a/scripts/.gitignore b/scripts/.gitignore index 82bc06e..17b903b 100644 --- a/scripts/.gitignore +++ b/scripts/.gitignore @@ -1,4 +1,5 @@ # # Generated files # +bin2c docproc diff --git a/scripts/Kconfig b/scripts/Kconfig new file mode 100644 index 0000000..2a2c18e --- /dev/null +++ b/scripts/Kconfig @@ -0,0 +1,2 @@ +config BUILD_BIN2C + bool diff --git a/scripts/Makefile b/scripts/Makefile index 2f081f7..3e10c16 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -7,6 +7,10 @@ # SPDX-License-Identifier: GPL-2.0 # +hostprogs-$(CONFIG_BUILD_BIN2C) += bin2c + +always := $(hostprogs-y) + # The following hostprogs-y programs are only build on demand hostprogs-y += docproc From patchwork Sun Jan 29 14:25:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 92784 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp1051888qgi; Sun, 29 Jan 2017 06:26:14 -0800 (PST) X-Received: by 10.28.143.5 with SMTP id r5mr10706238wmd.141.1485699974499; Sun, 29 Jan 2017 06:26:14 -0800 (PST) Return-Path: Received: from theia.denx.de (theia.denx.de. [85.214.87.163]) by mx.google.com with ESMTP id v204si9830644wmg.18.2017.01.29.06.26.14; Sun, 29 Jan 2017 06:26:14 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 85.214.87.163 as permitted sender) client-ip=85.214.87.163; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@nifty.com; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 85.214.87.163 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id CCD42B38C4; Sun, 29 Jan 2017 15:26:09 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2Y2xaOr86Zln; Sun, 29 Jan 2017 15:26:09 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 904BBB38B7; Sun, 29 Jan 2017 15:26:06 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id E1997B387E for ; Sun, 29 Jan 2017 15:25:58 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RcklTfygwfbJ for ; Sun, 29 Jan 2017 15:25:58 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from conuserg-09.nifty.com (conuserg-09.nifty.com [210.131.2.76]) by theia.denx.de (Postfix) with ESMTPS id 2CC06A75B7 for ; Sun, 29 Jan 2017 15:25:55 +0100 (CET) Received: from grover.sesame (FL1-111-169-71-157.osk.mesh.ad.jp [111.169.71.157]) (authenticated) by conuserg-09.nifty.com with ESMTP id v0TEPEc5004042; Sun, 29 Jan 2017 23:25:20 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-09.nifty.com v0TEPEc5004042 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1485699920; bh=hcdlWux92CrdQr9aA6TpwieYPpK0FN84CdEZdHGz2M8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=G0EPXlVGE0Q95Wbf399ov+yYkJHlCOGmwsQlvOO+2Utuj2ASUd/drB7u82+ITAwUh hheYQQzF+IWpXQIwipjf2Y/q62uT6bww6kM38W1JB2BvsGmXxxRKJ83JWIvaaBbJVM FbLieGGPy76tsc6C3/mDx97iGfMUMi/2FZpPN5PEKMAHV/Pd2SJUvVoNwzqWsQVCTG /xHTcSzy1bo6BvvbsocroUgd1CXGku6eVJtxtkKZDyK6obgIF78OsP8+vyHql49T0H HWc2DwFyaicd528XiQKEoAwpFUX7FR+zCLXcA7BPhPnDIa2T85WBtp0/Wy0eDralzT ksntVENZ1fGEw== X-Nifty-SrcIP: [111.169.71.157] From: Masahiro Yamada To: u-boot@lists.denx.de Date: Sun, 29 Jan 2017 23:25:00 +0900 Message-Id: <1485699900-20464-4-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1485699900-20464-1-git-send-email-yamada.masahiro@socionext.com> References: <1485699900-20464-1-git-send-email-yamada.masahiro@socionext.com> Cc: Tom Rini Subject: [U-Boot] [PATCH 3/3] cmd: rework "license" command X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" The previous commit ("add a new command to show .config contents") improves the basic infrastructure of "embed a compressed file into the U-Boot image, and print it by a command". The same pattern for the "license" command. This commit reworks the command to improve the following: [1] Improve log style Kbuild style log GZIP cmd/license_data.gz CHK cmd/license_data_gz.h UPD cmd/license_data_gz.h CHK cmd/license_data_size.h UPD cmd/license_data_size.h instead of the bare Make log: cat ./Licenses/gpl-2.0.txt | gzip -9 -c | \ tools/bin2header license_gzip > ./include/license.h [2] Collect related files into the "cmd" directory Prior to this commit, the license.h was created by tools/Makefile, placed under the "include" directory, included from cmd/license.c, and deleted by the top-level Makefile. It is not a good idea to scatter related code. With this commit, the related code are self-contained under the "cmd" directory. [3] Drop the fixed-malloc size LICENSE_MAX Just allocate the minimum required size of buffer because we know the size of the original gpl-2.0.txt. [4] Fix more issues Terminate the buffer with zero to prevent puts() from over-running. Add "static" to do_license. Signed-off-by: Masahiro Yamada --- Makefile | 2 +- cmd/.gitignore | 3 +++ cmd/Kconfig | 1 + cmd/Makefile | 15 +++++++++++++++ cmd/license.c | 31 ++++++++++++++++++------------- include/.gitignore | 1 - tools/Makefile | 11 +---------- tools/bin2header.c | 41 ----------------------------------------- 8 files changed, 39 insertions(+), 66 deletions(-) delete mode 100644 tools/bin2header.c -- 2.7.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot diff --git a/Makefile b/Makefile index fb1ec20..00ff9b5 100644 --- a/Makefile +++ b/Makefile @@ -1423,7 +1423,7 @@ CLEAN_DIRS += $(MODVERDIR) \ $(foreach d, spl tpl, $(patsubst %,$d/%, \ $(filter-out include, $(shell ls -1 $d 2>/dev/null)))) -CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h include/license.h \ +CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \ boot* u-boot* MLO* SPL System.map # Directories & files removed with 'make mrproper' diff --git a/cmd/.gitignore b/cmd/.gitignore index 7800586..bab889f 100644 --- a/cmd/.gitignore +++ b/cmd/.gitignore @@ -1,3 +1,6 @@ config_data.gz config_data_gz.h config_data_size.h +license_data.gz +license_data_gz.h +license_data_size.h diff --git a/cmd/Kconfig b/cmd/Kconfig index 942470b..2ab8454 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -154,6 +154,7 @@ config CMD_CPU config CMD_LICENSE bool "license" + select BUILD_BIN2C help Print GPL license text diff --git a/cmd/Makefile b/cmd/Makefile index 1a04e7e..f13bb8c 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -187,3 +187,18 @@ $(obj)/config_data_gz.h: $(obj)/config_data.gz FORCE targets += config_data_size.h $(obj)/config_data_size.h: $(KCONFIG_CONFIG) FORCE $(call filechk,data_size) + +# "license" command +$(obj)/license.o: $(obj)/license_data_gz.h $(obj)/license_data_size.h + +targets += license_data.gz +$(obj)/license_data.gz: $(srctree)/Licenses/gpl-2.0.txt FORCE + $(call if_changed,gzip) + +targets += license_data_gz.h +$(obj)/license_data_gz.h: $(obj)/license_data.gz FORCE + $(call filechk,data_gz) + +targets += license_data_size.h +$(obj)/license_data_size.h: $(srctree)/Licenses/gpl-2.0.txt FORCE + $(call filechk,data_size) diff --git a/cmd/license.c b/cmd/license.c index 5ee57f8..29fc8aa 100644 --- a/cmd/license.c +++ b/cmd/license.c @@ -6,31 +6,36 @@ */ #include - -/* Licenses/gpl-2.0.txt is currently 18092 bytes in size */ -#define LICENSE_MAX 20480 - #include #include -#include -int do_license(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +#include "license_data_gz.h" +#include "license_data_size.h" + +static int do_license(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { - char *dst = malloc(LICENSE_MAX); - unsigned long len = LICENSE_MAX; + char *dst; + unsigned long len = data_size; + int ret = CMD_RET_SUCCESS; + dst = malloc(data_size + 1); if (!dst) - return -1; + return CMD_RET_FAILURE; - if (gunzip(dst, LICENSE_MAX, license_gzip, &len) != 0) { + ret = gunzip(dst, data_size, (unsigned char *)data_gz, &len); + if (ret) { printf("Error uncompressing license text\n"); - free(dst); - return -1; + ret = CMD_RET_FAILURE; + goto free; } + + dst[data_size] = 0; puts(dst); + +free: free(dst); - return 0; + return ret; } U_BOOT_CMD( diff --git a/include/.gitignore b/include/.gitignore index 75be527..8e41a95 100644 --- a/include/.gitignore +++ b/include/.gitignore @@ -2,4 +2,3 @@ /bmp_logo.h /bmp_logo_data.h /config.h -/license.h diff --git a/tools/Makefile b/tools/Makefile index cefcedf..38ca4cb 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -32,7 +32,6 @@ CONFIG_BUILD_ENVCRC ?= $(ENVCRC-y) hostprogs-$(CONFIG_SPL_GENERATE_ATMEL_PMECC_HEADER) += atmel_pmecc_params -hostprogs-$(CONFIG_CMD_LICENSE) += bin2header hostprogs-$(CONFIG_LCD_LOGO) += bmp_logo hostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo HOSTCFLAGS_bmp_logo.o := -pedantic @@ -229,10 +228,6 @@ endif endif # !LOGO_BMP -# Generated gziped GPL-2.0 license text -LICENSE_H = $(objtree)/include/license.h -LICENSE-$(CONFIG_CMD_LICENSE) += $(LICENSE_H) - # # Use native tools and options # Define __KERNEL_STRICT_NAMES to prevent typedef overlaps @@ -247,7 +242,7 @@ HOST_EXTRACFLAGS += -include $(srctree)/include/libfdt_env.h \ -D__KERNEL_STRICT_NAMES \ -D_GNU_SOURCE -__build: $(LOGO-y) $(LICENSE-y) +__build: $(LOGO-y) $(LOGO_H): $(obj)/bmp_logo $(LOGO_BMP) $(obj)/bmp_logo --gen-info $(LOGO_BMP) > $@ @@ -255,10 +250,6 @@ $(LOGO_H): $(obj)/bmp_logo $(LOGO_BMP) $(LOGO_DATA_H): $(obj)/bmp_logo $(LOGO_BMP) $(obj)/bmp_logo --gen-data $(LOGO_BMP) > $@ -$(LICENSE_H): $(obj)/bin2header $(srctree)/Licenses/gpl-2.0.txt - cat $(srctree)/Licenses/gpl-2.0.txt | gzip -9 -c | \ - $(obj)/bin2header license_gzip > $(LICENSE_H) - # Let clean descend into subdirs subdir- += env diff --git a/tools/bin2header.c b/tools/bin2header.c deleted file mode 100644 index 6c2c23f..0000000 --- a/tools/bin2header.c +++ /dev/null @@ -1,41 +0,0 @@ -/* bin2header.c - program to convert binary file into a C structure - * definition to be included in a header file. - * - * (C) Copyright 2008 by Harald Welte - * - * SPDX-License-Identifier: GPL-2.0+ - */ - -#include -#include -#include - -int main(int argc, char **argv) -{ - if (argc < 2) { - fprintf(stderr, "%s needs one argument: the structure name\n", - argv[0]); - exit(1); - } - - printf("/* bin2header output - automatically generated */\n"); - printf("unsigned char %s[] = {\n", argv[1]); - - while (1) { - int i, nread; - unsigned char buf[10]; - nread = read(0, buf, sizeof(buf)); - if (nread <= 0) - break; - - printf("\t"); - for (i = 0; i < nread - 1; i++) - printf("0x%02x, ", buf[i]); - - printf("0x%02x,\n", buf[nread-1]); - } - - printf("};\n"); - - exit(0); -}