From patchwork Mon Jan 30 02:12:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 92792 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp1238866qgi; Sun, 29 Jan 2017 18:13:26 -0800 (PST) X-Received: by 10.28.8.213 with SMTP id 204mr12154269wmi.100.1485742405923; Sun, 29 Jan 2017 18:13:25 -0800 (PST) Return-Path: Received: from theia.denx.de (theia.denx.de. [85.214.87.163]) by mx.google.com with ESMTP id u66si14601229wrc.269.2017.01.29.18.13.25; Sun, 29 Jan 2017 18:13: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 755074AC0C; Mon, 30 Jan 2017 03:13: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 GV7XZsiseWhO; Mon, 30 Jan 2017 03:13:21 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id A8C664ACF9; Mon, 30 Jan 2017 03:13:15 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 12F474AAD2 for ; Mon, 30 Jan 2017 03:13:07 +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 I3pFWSlxGJDF for ; Mon, 30 Jan 2017 03:13:06 +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-10.nifty.com (conuserg-10.nifty.com [210.131.2.77]) by theia.denx.de (Postfix) with ESMTPS id 39F9E4AA22 for ; Mon, 30 Jan 2017 03:13:01 +0100 (CET) Received: from pug.jp.socionext.com (p14092-ipngnfx01kyoto.kyoto.ocn.ne.jp [153.142.97.92]) (authenticated) by conuserg-10.nifty.com with ESMTP id v0U2CAlr012402; Mon, 30 Jan 2017 11:12:11 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-10.nifty.com v0U2CAlr012402 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1485742331; bh=IGm9PlIsv+EI4bRD13aW1YHVeIXoEubPahL8Dg95bVM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Zy0ij+DzV3txLtii53OHfKO+GycD7cbQsO0IAv3v/BWlQNZ1aHDMU4wbBzNu2nS4Q JCYYTRftYttphCUGIoGy5JxNE0ynJDiwZ7XNNHI/cr9BXmztzYK6n0CfLgbKdvcbgz uT3ScFMQV3Ir/qz6N3mexmVJAYJ3HWF2mDQ/9x0W3emk5wyl6G8AQ8B3wD2/PkcsR4 f0yDpjEqZToA2bBWAyqVEdY9G/1nIs4CRAF0EG833joqjQWSVjClfuDgy4K8DJ1vlp 5PhW1ETUNYxecSSA7vr31pLGqBTpllNM55Buw7TwTx6Ruih4z1RvamCHefRuaySZm3 cD8qmu+QopTHw== X-Nifty-SrcIP: [153.142.97.92] From: Masahiro Yamada To: u-boot@lists.denx.de Date: Mon, 30 Jan 2017 11:12:06 +0900 Message-Id: <1485742328-32398-2-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1485742328-32398-1-git-send-email-yamada.masahiro@socionext.com> References: <1485742328-32398-1-git-send-email-yamada.masahiro@socionext.com> Cc: Tom Rini Subject: [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6 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/bin2c.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 --- Changes in v2: - Fix a typo in git-log. bin2header -> bin2c 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 Reviewed-by: Simon Glass 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 Mon Jan 30 02:12:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 92794 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp1238943qgi; Sun, 29 Jan 2017 18:13:45 -0800 (PST) X-Received: by 10.28.138.147 with SMTP id m141mr6164580wmd.57.1485742425818; Sun, 29 Jan 2017 18:13:45 -0800 (PST) Return-Path: Received: from theia.denx.de (theia.denx.de. [85.214.87.163]) by mx.google.com with ESMTP id l187si3411749wml.83.2017.01.29.18.13.45; Sun, 29 Jan 2017 18:13:45 -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 AA23C4B105; Mon, 30 Jan 2017 03:13:33 +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 dI80A5tt6E0A; Mon, 30 Jan 2017 03:13:33 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 127644AC55; Mon, 30 Jan 2017 03:13:20 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D2E4C4AACE for ; Mon, 30 Jan 2017 03:13:06 +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 3zC-gYrDuZ88 for ; Mon, 30 Jan 2017 03:13:06 +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-10.nifty.com (conuserg-10.nifty.com [210.131.2.77]) by theia.denx.de (Postfix) with ESMTPS id A74314A997 for ; Mon, 30 Jan 2017 03:13:01 +0100 (CET) Received: from pug.jp.socionext.com (p14092-ipngnfx01kyoto.kyoto.ocn.ne.jp [153.142.97.92]) (authenticated) by conuserg-10.nifty.com with ESMTP id v0U2CAls012402; Mon, 30 Jan 2017 11:12:12 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-10.nifty.com v0U2CAls012402 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1485742332; bh=WAKCysbq/DaTjEgw1kyV2EtooO0AdVQ7go2/NQBJD9U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=0aVpb1tiE1IV19nN4nelPg/Fw8r7dp8skoR7mwItjuIKb7rQcu+nlwlYSK14lhQR5 a1DnkpwT2e6MYxJf57wGxlMNhkWka0Gu3q8QBXsLYDNbdPwEbVIYkonhukM5NJH95r uS3DBF1S7xgEeiVk/qXbhngNvtoRXdJzxmmm7+655GRH+OfH3Ex+d1cHduEA0/KPj9 obLIwz+XOwZu2c6i/QAdivnlhd0DbJYy3S1xVzITWwJnwbb02Pd24wiamQvDUiDkwx +uIUtVW1VrIcG7NAJIjJpDka7SGn/mUgH45Uv7X4FBiAtPuT8LSYBkC3u7l50fRf1+ jLubR+2/NPivw== X-Nifty-SrcIP: [153.142.97.92] From: Masahiro Yamada To: u-boot@lists.denx.de Date: Mon, 30 Jan 2017 11:12:07 +0900 Message-Id: <1485742328-32398-3-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1485742328-32398-1-git-send-email-yamada.masahiro@socionext.com> References: <1485742328-32398-1-git-send-email-yamada.masahiro@socionext.com> Cc: Tom Rini Subject: [U-Boot] [PATCH v2 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" contents will be printed on the console. This feature increases the U-Boot image size by about 4KB (this is mostly 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 --- Changes in v2: None 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 Reviewed-by: Simon Glass diff --git a/Kconfig b/Kconfig index 8f9ea97..0dd21df 100644 --- a/Kconfig +++ b/Kconfig @@ -325,3 +325,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 4a0d489..57e8e42 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 Mon Jan 30 02:12:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 92793 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp1238901qgi; Sun, 29 Jan 2017 18:13:35 -0800 (PST) X-Received: by 10.223.172.17 with SMTP id v17mr16258519wrc.115.1485742415626; Sun, 29 Jan 2017 18:13:35 -0800 (PST) Return-Path: Received: from theia.denx.de (theia.denx.de. [85.214.87.163]) by mx.google.com with ESMTP id q187si8959007wma.7.2017.01.29.18.13.35; Sun, 29 Jan 2017 18:13:35 -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 490284B027; Mon, 30 Jan 2017 03:13:27 +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 SMXwm5NsQX-w; Mon, 30 Jan 2017 03:13:27 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id EEBCA4AD1F; Mon, 30 Jan 2017 03:13:17 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 59A8E4A99B for ; Mon, 30 Jan 2017 03:13:07 +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 nONcLIq9pL_D for ; Mon, 30 Jan 2017 03:13:07 +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-10.nifty.com (conuserg-10.nifty.com [210.131.2.77]) by theia.denx.de (Postfix) with ESMTPS id 3E5D14AAA7 for ; Mon, 30 Jan 2017 03:13:01 +0100 (CET) Received: from pug.jp.socionext.com (p14092-ipngnfx01kyoto.kyoto.ocn.ne.jp [153.142.97.92]) (authenticated) by conuserg-10.nifty.com with ESMTP id v0U2CAlt012402; Mon, 30 Jan 2017 11:12:12 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conuserg-10.nifty.com v0U2CAlt012402 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.com; s=dec2015msa; t=1485742332; bh=BkAw1YvR9SEC/1SHqIL9FKUZ7iGf1v8oo3V3fdUj/D4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KwFGnRaQWQm1DD+BHsnBJU/5RNNnjkYJ8HVe/9OcrvTj1gxPPyGOzyzcR/pYCIAEV mb4H3AWRL6HZMME+ZUhv8RERJ02bvzPdjpI+3s3d6zNJmh7sqHELmR0eS2rvp+wY87 B/rNEqxIwweJyxJFO1/i4bRjkGcS43pIrITSC7hXTII7M5qG+kfo62tcr1w/CrNXL6 Jz8jRP+7zd7ot3VU+w3lgzCXT3wUfcm0wuavMIT3enFttxhgfOOpK8sGrGq+yi47Aj XMe5G9+Es/gaK39WimXdPgWj9MXsIqeHdsWF3RmdUb+wPktwqYnYyIHtdri+Oi54Qj gz640yLhCYe7w== X-Nifty-SrcIP: [153.142.97.92] From: Masahiro Yamada To: u-boot@lists.denx.de Date: Mon, 30 Jan 2017 11:12:08 +0900 Message-Id: <1485742328-32398-4-git-send-email-yamada.masahiro@socionext.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1485742328-32398-1-git-send-email-yamada.masahiro@socionext.com> References: <1485742328-32398-1-git-send-email-yamada.masahiro@socionext.com> Cc: Tom Rini Subject: [U-Boot] [PATCH v2 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 code 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. [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 --- Changes in v2: None 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 Reviewed-by: Simon Glass 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 57e8e42..25ac895 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); -}