On Mon, Feb 21, 2022 at 3:02 PM HAGIO KAZUHITO(萩尾 一仁) <k-hagio-ab@nec.com> wrote:
Hi all,

We are thinking about changing crash's make commandline interface
as below, in order to make good use of Sven's patch [1] and avoid
errors or duplicated jobs by multiple targets, e.g. "make -j 8 warn lzo".

If someone has any concerns or comments, please let us know.

[1] https://github.com/crash-utility/crash/commit/74ac929712416705a758f14a3506991bbfdc869c

Thank you for the comment, Kazu.
 
I just discussed with Tao, maybe he has an idea and that doesn't need to change crash's make command line interface.

Tao, Could you please add your draft patch here?

Thanks.
Lianbo


Lianbo, thanks for writing the patch.

-----Original Message-----
> Currently, crash has multiple targets such as warn, Warn, nowarn,
> lzo, snappy, zstd and valgrind in the top Makefile, and they will
> always execute "make gdb_merge", if users use multiple targets to
> build crash such as "make warn lzo zstd", it indicates that the
> build process will run three times for "make gdb_merge", it was
> not a problem in the past because the compilation process was not
> concurrent.
>
> But for now, crash has supported the "make -j jobs" option, the
> compilation process is concurrent, if users still compile crash
> as before with the "make -j jobs" option, it may fail with the
> following errors, for example:

A little too long sentences.  Could you split these moderately?

>
> $ make -j24 warn lzo
> ...
> mv: cannot stat 'Makefile.new': No such file or directory
> Makefile: cannot create new Makefile
> please copy Makefile.new to Makefile
> make: *** [Makefile:321: lzo] Error 1
> make: *** Waiting for unfinished jobs....
> TARGET: X86_64
>  CRASH: 8.0.0++
>    GDB: 10.2
> ...
>
> To avoid the current issue, need to do a minor improvement for
> building crash, therefore, add several macros USELZO, USESANPPY,
> USEZSTD and USEVALGRIND in the top Makefile. Also update the
> documentation accordingly.

Rethinking these variable names, which I suggested as a test patch,
they are the same as makedumpfile's ones and thought it's not bad.

But crash already has "target" variable i.e. "make target=xxx".  And
personally I do not like USELZO etc. very much, they are not needed
to be uppercase.  So how about these lowercase names?

  $ make warn target=xxx lzo=1 snappy=1 zstd=1

Thanks,
Kazu


>
> Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
> Signed-off-by: Kazuhito Hagio <k-hagio-ab@nec.com>
> ---
>  Makefile | 35 +++++++++++++++++++----------------
>  README   |  7 ++++---
>  help.c   |  7 ++++---
>  3 files changed, 27 insertions(+), 22 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index ede87a1029c8..f578fd8366dd 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -223,6 +223,25 @@ ifneq ($(target),)
>  CONF_TARGET_FLAG="-t$(target)"
>  endif
>
> +
> +# To build crash with any or all of those libraries, need add these macroes
> +# to the make commandline, for example:
> +# make USELZO=on USESNAPPY=on USEZSTD=on
> +# otherwise crash will lack support for these features
> +# make
> +ifeq ($(USELZO),on)
> +CONF_TARGET_FLAG+=-x lzo
> +endif
> +ifeq ($(USESNAPPY),on)
> +CONF_TARGET_FLAG+=-x snappy
> +endif
> +ifeq ($(USEZSTD),on)
> +CONF_TARGET_FLAG+=-x zstd
> +endif
> +ifeq ($(USEVALGRIND),on)
> +CONF_TARGET_FLAG+=-x valgrind
> +endif
> +
>  # To build the extensions library by default, uncomment the third command
>  # line below.  Otherwise they can be built by entering "make extensions".
>
> @@ -317,22 +336,6 @@ nowarn: make_configure
>       @./configure ${CONF_TARGET_FLAG} -n -b
>       @$(MAKE) gdb_merge
>
> -lzo: make_configure
> -     @./configure -x lzo ${CONF_TARGET_FLAG} -w -b
> -     @$(MAKE) gdb_merge
> -
> -snappy: make_configure
> -     @./configure -x snappy ${CONF_TARGET_FLAG} -w -b
> -     @$(MAKE) gdb_merge
> -
> -zstd: make_configure
> -     @./configure -x zstd ${CONF_TARGET_FLAG} -w -b
> -     @$(MAKE) gdb_merge
> -
> -valgrind: make_configure
> -     @./configure -x valgrind ${CONF_TARGET_FLAG} -w -b
> -     @$(MAKE) gdb_merge
> -
>  main.o: ${GENERIC_HFILES} main.c
>       ${CC} -c ${CRASH_CFLAGS} main.c ${WARNING_OPTIONS} ${WARNING_ERROR}
>
> diff --git a/README b/README
> index 02aef58fa28c..ddc1e7d20bd2 100644
> --- a/README
> +++ b/README
> @@ -103,11 +103,12 @@
>    the libz compression library is used, and by default the crash utility
>    only supports libz.  Recently makedumpfile has been enhanced to optionally
>    use the LZO, snappy or zstd compression libraries.  To build crash with any
> -  or all of those libraries, type "make lzo", "make snappy" or "make zstd".
> +  or all of those libraries, type "make USELZO=on", "make USESNAPPY=on" or
> +  "make USEZSTD=on".
>
>    crash supports valgrind Memcheck tool on the crash's custom memory allocator.
> -  To build crash with this feature enabled, type "make valgrind" and then run
> -  crash with valgrind as "valgrind crash vmlinux vmcore".
> +  To build crash with this feature enabled, type "make USEVALGRIND=on" and
> +  then run crash with valgrind as "valgrind crash vmlinux vmcore".
>
>    All of the alternate build commands above are "sticky" in that the
>    special "make" targets only have to be entered one time; all subsequent
> diff --git a/help.c b/help.c
> index e57ed72f51d9..b33f090b2f21 100644
> --- a/help.c
> +++ b/help.c
> @@ -9441,11 +9441,12 @@ README_ENTER_DIRECTORY,
>  "  the libz compression library is used, and by default the crash utility",
>  "  only supports libz.  Recently makedumpfile has been enhanced to optionally",
>  "  use the LZO, snappy or zstd compression libraries.  To build crash with any",
> -"  or all of those libraries, type \"make lzo\", \"make snappy\" or \"make zstd\".",
> +"  or all of those libraries, type \"make USELZO=on\", \"make USESNAPPY=on\" or",
> +"  \"make USEZSTD=on\".",
>  "",
>  "  crash supports valgrind Memcheck tool on the crash's custom memory allocator.",
> -"  To build crash with this feature enabled, type \"make valgrind\" and then run",
> -"  crash with valgrind as \"valgrind crash vmlinux vmcore\".",
> +"  To build crash with this feature enabled, type \"make USEVALGRIND=on\" and",
> +"  then run, crash with valgrind as \"valgrind crash vmlinux vmcore\".",
>  "",
>  "  All of the alternate build commands above are \"sticky\" in that the",
>  "  special \"make\" targets only have to be entered one time; all subsequent",
> --
> 2.20.1