Skip to content

Commit

Permalink
cmd: rework "license" command
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Simon Glass <[email protected]>
  • Loading branch information
masahir0y authored and trini committed Feb 8, 2017
1 parent 61304db commit d726f22
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 66 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1425,7 +1425,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'
Expand Down
3 changes: 3 additions & 0 deletions cmd/.gitignore
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions cmd/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ config CMD_CPU

config CMD_LICENSE
bool "license"
select BUILD_BIN2C
help
Print GPL license text

Expand Down
15 changes: 15 additions & 0 deletions cmd/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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)
31 changes: 18 additions & 13 deletions cmd/license.c
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
1 change: 0 additions & 1 deletion include/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,3 @@
/bmp_logo.h
/bmp_logo_data.h
/config.h
/license.h
11 changes: 1 addition & 10 deletions tools/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -233,10 +232,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
Expand All @@ -251,18 +246,14 @@ 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) > $@

$(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

Expand Down
41 changes: 0 additions & 41 deletions tools/bin2header.c

This file was deleted.

0 comments on commit d726f22

Please sign in to comment.