All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2 0/3] cmd: add "config" command, rework "license" command
@ 2017-01-30  2:12 Masahiro Yamada
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6 Masahiro Yamada
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Masahiro Yamada @ 2017-01-30  2:12 UTC (permalink / raw)
  To: u-boot



Changes in v2:
  - Fix a typo in git-log.  bin2header -> bin2c

Masahiro Yamada (3):
  scripts: import bin2c.c from Linux 4.10-rc6
  cmd: add a new command "config" to show .config contents
  cmd: rework "license" command

 Kconfig            |  2 ++
 Makefile           | 14 ++++++++------
 cmd/.gitignore     |  6 ++++++
 cmd/Kconfig        | 13 +++++++++++++
 cmd/Makefile       | 37 +++++++++++++++++++++++++++++++++++++
 cmd/config.c       | 44 ++++++++++++++++++++++++++++++++++++++++++++
 cmd/license.c      | 31 ++++++++++++++++++-------------
 include/.gitignore |  1 -
 scripts/.gitignore |  1 +
 scripts/Kconfig    |  2 ++
 scripts/Makefile   |  4 ++++
 scripts/bin2c.c    | 36 ++++++++++++++++++++++++++++++++++++
 tools/Makefile     | 11 +----------
 tools/bin2header.c | 41 -----------------------------------------
 14 files changed, 172 insertions(+), 71 deletions(-)
 create mode 100644 cmd/.gitignore
 create mode 100644 cmd/config.c
 create mode 100644 scripts/Kconfig
 create mode 100644 scripts/bin2c.c
 delete mode 100644 tools/bin2header.c

-- 
2.7.4

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6
  2017-01-30  2:12 [U-Boot] [PATCH v2 0/3] cmd: add "config" command, rework "license" command Masahiro Yamada
@ 2017-01-30  2:12 ` Masahiro Yamada
  2017-02-06 15:33   ` Simon Glass
                     ` (2 more replies)
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 2/3] cmd: add a new command "config" to show .config contents Masahiro Yamada
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 3/3] cmd: rework "license" command Masahiro Yamada
  2 siblings, 3 replies; 14+ messages in thread
From: Masahiro Yamada @ 2017-01-30  2:12 UTC (permalink / raw)
  To: 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 <yamada.masahiro@socionext.com>
---

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

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 <mpm@selenic.com>
+ *
+ * This software may be used and distributed according to the terms
+ * of the GNU General Public License, incorporated herein by reference.
+ */
+
+#include <stdio.h>
+
+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 <linux/types.h>\n\nconst size_t %s_size = %d;\n",
+		       argv[1], total);
+
+	return 0;
+}
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [U-Boot] [PATCH v2 2/3] cmd: add a new command "config" to show .config contents
  2017-01-30  2:12 [U-Boot] [PATCH v2 0/3] cmd: add "config" command, rework "license" command Masahiro Yamada
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6 Masahiro Yamada
@ 2017-01-30  2:12 ` Masahiro Yamada
  2017-02-06 15:33   ` Simon Glass
  2017-02-09  3:01   ` [U-Boot] [U-Boot, v2, " Tom Rini
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 3/3] cmd: rework "license" command Masahiro Yamada
  2 siblings, 2 replies; 14+ messages in thread
From: Masahiro Yamada @ 2017-01-30  2:12 UTC (permalink / raw)
  To: 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 <yamada.masahiro@socionext.com>
---

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

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 <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <malloc.h>
+
+#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
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [U-Boot] [PATCH v2 3/3] cmd: rework "license" command
  2017-01-30  2:12 [U-Boot] [PATCH v2 0/3] cmd: add "config" command, rework "license" command Masahiro Yamada
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6 Masahiro Yamada
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 2/3] cmd: add a new command "config" to show .config contents Masahiro Yamada
@ 2017-01-30  2:12 ` Masahiro Yamada
  2017-02-06 15:33   ` Simon Glass
  2017-02-09  3:01   ` [U-Boot] [U-Boot,v2,3/3] " Tom Rini
  2 siblings, 2 replies; 14+ messages in thread
From: Masahiro Yamada @ 2017-01-30  2:12 UTC (permalink / raw)
  To: 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 <yamada.masahiro@socionext.com>
---

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

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 <common.h>
-
-/* Licenses/gpl-2.0.txt is currently 18092 bytes in size */
-#define LICENSE_MAX	20480
-
 #include <command.h>
 #include <malloc.h>
-#include <license.h>
 
-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 <laforge@openmoko.org>
- *
- * SPDX-License-Identifier:	GPL-2.0+
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-
-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);
-}
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6 Masahiro Yamada
@ 2017-02-06 15:33   ` Simon Glass
  2017-02-07  2:38   ` Bin Meng
  2017-02-09  3:01   ` [U-Boot] [U-Boot, v2, " Tom Rini
  2 siblings, 0 replies; 14+ messages in thread
From: Simon Glass @ 2017-02-06 15:33 UTC (permalink / raw)
  To: u-boot

On 29 January 2017 at 18:12, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> 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 <yamada.masahiro@socionext.com>
> ---
>
> 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

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] [PATCH v2 2/3] cmd: add a new command "config" to show .config contents
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 2/3] cmd: add a new command "config" to show .config contents Masahiro Yamada
@ 2017-02-06 15:33   ` Simon Glass
  2017-02-06 15:59     ` Masahiro Yamada
  2017-02-09  3:01   ` [U-Boot] [U-Boot, v2, " Tom Rini
  1 sibling, 1 reply; 14+ messages in thread
From: Simon Glass @ 2017-02-06 15:33 UTC (permalink / raw)
  To: u-boot

Hi Masahiro,

On 29 January 2017 at 18:12, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> 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 <yamada.masahiro@socionext.com>
> ---
>
> 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

Reviewed-by: Simon Glass <sjg@chromium.org>

But I wonder why we shouldn't use a mechanism like cmd_dt_S_dtb in
Makefile.lib to embed the file?

Regards,
Simon

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] [PATCH v2 3/3] cmd: rework "license" command
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 3/3] cmd: rework "license" command Masahiro Yamada
@ 2017-02-06 15:33   ` Simon Glass
  2017-02-09  3:01   ` [U-Boot] [U-Boot,v2,3/3] " Tom Rini
  1 sibling, 0 replies; 14+ messages in thread
From: Simon Glass @ 2017-02-06 15:33 UTC (permalink / raw)
  To: u-boot

On 29 January 2017 at 18:12, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> 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 <yamada.masahiro@socionext.com>
> ---
>
> 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

Reviewed-by: Simon Glass <sjg@chromium.org>

It also drops bin2header.c

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] [PATCH v2 2/3] cmd: add a new command "config" to show .config contents
  2017-02-06 15:33   ` Simon Glass
@ 2017-02-06 15:59     ` Masahiro Yamada
  0 siblings, 0 replies; 14+ messages in thread
From: Masahiro Yamada @ 2017-02-06 15:59 UTC (permalink / raw)
  To: u-boot

Hi Simon,

2017-02-07 0:33 GMT+09:00 Simon Glass <sjg@chromium.org>:
> Hi Masahiro,
>
> On 29 January 2017 at 18:12, Masahiro Yamada
> <yamada.masahiro@socionext.com> wrote:
>> 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 <yamada.masahiro@socionext.com>
>> ---
>>
>> 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
>
> Reviewed-by: Simon Glass <sjg@chromium.org>
>
> But I wonder why we shouldn't use a mechanism like cmd_dt_S_dtb in
> Makefile.lib to embed the file?

I thought of this when I saw the implementation
of kernel/configs.c of Linux.

My first guess was, they wanted to implement it
in an arch-independent way.

The cmd_dt_S_dtb mechanism also seems
(mostly) arch-independent, but I am not 100% sure.

For example, underscore must the added/stripped
for conversion between C and assembly for Blackfin architecture.

One more reason is, I think, kernel/configs.c was added
in older days than the Device Tree.

-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6 Masahiro Yamada
  2017-02-06 15:33   ` Simon Glass
@ 2017-02-07  2:38   ` Bin Meng
  2017-02-07 12:23     ` Masahiro Yamada
  2017-02-09  3:01   ` [U-Boot] [U-Boot, v2, " Tom Rini
  2 siblings, 1 reply; 14+ messages in thread
From: Bin Meng @ 2017-02-07  2:38 UTC (permalink / raw)
  To: u-boot

On Mon, Jan 30, 2017 at 10:12 AM, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> 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

Sorry for jumping out late, but one nits:

U-boot -> U-Boot

> original directory "scripts".
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---
>
> 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
>

[snip]

Regards,
Bin

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6
  2017-02-07  2:38   ` Bin Meng
@ 2017-02-07 12:23     ` Masahiro Yamada
  2017-02-07 12:26       ` Tom Rini
  0 siblings, 1 reply; 14+ messages in thread
From: Masahiro Yamada @ 2017-02-07 12:23 UTC (permalink / raw)
  To: u-boot

Hi Bin,

2017-02-07 11:38 GMT+09:00 Bin Meng <bmeng.cn@gmail.com>:
> On Mon, Jan 30, 2017 at 10:12 AM, Masahiro Yamada
> <yamada.masahiro@socionext.com> wrote:
>> 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
>
> Sorry for jumping out late, but one nits:
>
> U-boot -> U-Boot

Thanks for pointing this out.


Tom,
Could you fix s/U-boot/U-Boot/ when this patch is applied, please?





-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6
  2017-02-07 12:23     ` Masahiro Yamada
@ 2017-02-07 12:26       ` Tom Rini
  0 siblings, 0 replies; 14+ messages in thread
From: Tom Rini @ 2017-02-07 12:26 UTC (permalink / raw)
  To: u-boot

On Tue, Feb 07, 2017 at 09:23:38PM +0900, Masahiro Yamada wrote:
> Hi Bin,
> 
> 2017-02-07 11:38 GMT+09:00 Bin Meng <bmeng.cn@gmail.com>:
> > On Mon, Jan 30, 2017 at 10:12 AM, Masahiro Yamada
> > <yamada.masahiro@socionext.com> wrote:
> >> 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
> >
> > Sorry for jumping out late, but one nits:
> >
> > U-boot -> U-Boot
> 
> Thanks for pointing this out.
> 
> 
> Tom,
> Could you fix s/U-boot/U-Boot/ when this patch is applied, please?

I'll endeavor to remember :)

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170207/a5ebb5cf/attachment.sig>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] [U-Boot, v2, 2/3] cmd: add a new command "config" to show .config contents
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 2/3] cmd: add a new command "config" to show .config contents Masahiro Yamada
  2017-02-06 15:33   ` Simon Glass
@ 2017-02-09  3:01   ` Tom Rini
  1 sibling, 0 replies; 14+ messages in thread
From: Tom Rini @ 2017-02-09  3:01 UTC (permalink / raw)
  To: u-boot

On Mon, Jan 30, 2017 at 11:12:07AM +0900, Masahiro Yamada wrote:

> 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 <yamada.masahiro@socionext.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170208/9084c70c/attachment.sig>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] [U-Boot,v2,3/3] cmd: rework "license" command
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 3/3] cmd: rework "license" command Masahiro Yamada
  2017-02-06 15:33   ` Simon Glass
@ 2017-02-09  3:01   ` Tom Rini
  1 sibling, 0 replies; 14+ messages in thread
From: Tom Rini @ 2017-02-09  3:01 UTC (permalink / raw)
  To: u-boot

On Mon, Jan 30, 2017 at 11:12:08AM +0900, Masahiro Yamada wrote:

> 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 <yamada.masahiro@socionext.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170208/1aea0f64/attachment-0001.sig>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [U-Boot] [U-Boot, v2, 1/3] scripts: import bin2c.c from Linux 4.10-rc6
  2017-01-30  2:12 ` [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6 Masahiro Yamada
  2017-02-06 15:33   ` Simon Glass
  2017-02-07  2:38   ` Bin Meng
@ 2017-02-09  3:01   ` Tom Rini
  2 siblings, 0 replies; 14+ messages in thread
From: Tom Rini @ 2017-02-09  3:01 UTC (permalink / raw)
  To: u-boot

On Mon, Jan 30, 2017 at 11:12:06AM +0900, Masahiro Yamada wrote:

> 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 <yamada.masahiro@socionext.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170208/070b5040/attachment.sig>

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-02-09  3:01 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-30  2:12 [U-Boot] [PATCH v2 0/3] cmd: add "config" command, rework "license" command Masahiro Yamada
2017-01-30  2:12 ` [U-Boot] [PATCH v2 1/3] scripts: import bin2c.c from Linux 4.10-rc6 Masahiro Yamada
2017-02-06 15:33   ` Simon Glass
2017-02-07  2:38   ` Bin Meng
2017-02-07 12:23     ` Masahiro Yamada
2017-02-07 12:26       ` Tom Rini
2017-02-09  3:01   ` [U-Boot] [U-Boot, v2, " Tom Rini
2017-01-30  2:12 ` [U-Boot] [PATCH v2 2/3] cmd: add a new command "config" to show .config contents Masahiro Yamada
2017-02-06 15:33   ` Simon Glass
2017-02-06 15:59     ` Masahiro Yamada
2017-02-09  3:01   ` [U-Boot] [U-Boot, v2, " Tom Rini
2017-01-30  2:12 ` [U-Boot] [PATCH v2 3/3] cmd: rework "license" command Masahiro Yamada
2017-02-06 15:33   ` Simon Glass
2017-02-09  3:01   ` [U-Boot] [U-Boot,v2,3/3] " Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.