poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: broken build environment - explanation and fix


From: Arsen Arsenović
Subject: Re: broken build environment - explanation and fix
Date: Sun, 19 Feb 2023 13:26:47 +0100

Hi Bruno.

The fix LGTM.  Thanks.

Bruno Haible <bruno@clisp.org> writes:

> Hi,
>
> Today, I was stuck for a while with a broken build environment: Even after
> doing "make distclean", then bootstrap, then a fresh build, the build stopped
> with this error:
>
> make[3]: Entering directory '/media/develdata/devel/POKE/poke/libpoke'
> /bin/bash ../libtool --tag=CC --mode=compile gcc -ftrapv -DHAVE_CONFIG_H
> -I. -I../poke -I../gl-libpoke -I../gl-libpoke -I../common -DPKL_DEBUG
> -DPKGINFODIR=\"/media/develdata/devel/inst-x86_64-64/share/info\"
> -DLOCALEDIR=\"/media/develdata/devel/inst-x86_64-64/share/locale\"
> -fvisibility=hidden -DBUILDING_LIBPOKE -DJITTER_DISPATCH_NO_THREADING=1 -I
> /media/develdata/devel/POKE/poke/jitter -I
> /media/develdata/devel/POKE/poke/jitter -I
> /media/develdata/devel/POKE/poke/jitter/machine/x86_64 -I
> /media/develdata/devel/inst-x86_64-64/include
> -I/media/develdata/devel/inst-x86_64-64/include -Wall -Wall
> -I/arch/x86_64-linux-gnu/gnu-inst-gc/8.0.6/include -g -O2 -MT
> libpoke_la-pvm-program.lo -MD -MP -MF .deps/libpoke_la-pvm-program.Tpo -c -o
> libpoke_la-pvm-program.lo `test -f 'pvm-program.c' || echo './'`pvm-program.c
> libtool: compile: gcc -ftrapv -DHAVE_CONFIG_H -I. -I../poke -I../gl-libpoke
> -I../gl-libpoke -I../common -DPKL_DEBUG
> -DPKGINFODIR=\"/media/develdata/devel/inst-x86_64-64/share/info\"
> -DLOCALEDIR=\"/media/develdata/devel/inst-x86_64-64/share/locale\"
> -fvisibility=hidden -DBUILDING_LIBPOKE -DJITTER_DISPATCH_NO_THREADING=1 -I
> /media/develdata/devel/POKE/poke/jitter -I
> /media/develdata/devel/POKE/poke/jitter -I
> /media/develdata/devel/POKE/poke/jitter/machine/x86_64 -I
> /media/develdata/devel/inst-x86_64-64/include
> -I/media/develdata/devel/inst-x86_64-64/include -Wall -Wall
> -I/arch/x86_64-linux-gnu/gnu-inst-gc/8.0.6/include -g -O2 -MT
> libpoke_la-pvm-program.lo -MD -MP -MF .deps/libpoke_la-pvm-program.Tpo -c
> pvm-program.c -fPIC -DPIC -o .libs/libpoke_la-pvm-program.o
> pvm-program.c: In function 'pvm_program_parse_from_string':
> pvm-program.c:366:7: error: void value not ignored as it ought to be
>   366 |   err = pvm_parse_mutable_routine_from_string (str, program->routine);
>       |       ^
> pvm-program.c:369:41: error: invalid use of undefined type 'struct 
> pvm_routine_parse_error'
>   369 |       char *invalid_token = xstrdup (err->error_token_text);
>       |                                         ^~
> pvm-program.c:370:7: warning: implicit declaration of function
> 'pvm_routine_parse_error_destroy'; did you mean
> 'jitter_routine_parse_error_destroy'? [-Wimplicit-function-declaration]
>   370 |       pvm_routine_parse_error_destroy (err);
>       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       |       jitter_routine_parse_error_destroy
> make[3]: *** [Makefile:3017: libpoke_la-pvm-program.lo] Error 1
>
> A "make maintainer-clean" step then fixed the issue. Why? The three files
> libpoke/pvm-vm.h, libpoke/pvm-vm1.c, libpoke/pvm-vm2.c were out of date.
> The Makefile did not rebuild these files, because their time stamps were
> in the right order:
>   pvm.jitter <= pvm-vm.h <= pvm-vm1.c <= pvm-vm2.c
>
> $ ls -l --full-time pvm.jitter pvm-vm.h pvm-vm1.c pvm-vm2.c
> -rw-rw-r-- 1 bruno bruno  188225 2023-02-18 17:42:16.742881188 +0100 
> pvm.jitter
> -rw-rw-r-- 1 bruno bruno  708623 2023-02-18 17:57:33.705849628 +0100 pvm-vm1.c
> -rw-rw-r-- 1 bruno bruno 4920902 2023-02-18 17:57:33.745849492 +0100 pvm-vm2.c
> -rw-rw-r-- 1 bruno bruno  166074 2023-02-18 17:57:33.705849628 +0100 pvm-vm.h
>
> What was the problem then? I had
>   1. done a "git pull" in poke,
>   2. done a "git checkout master && git pull" in jitter,
>   3. done a build (bootstrap --no-git && configure && make), which failed but
>      generated libpoke/pvm-vm.h, libpoke/pvm-vm1.c, libpoke/pvm-vm2.c.
>   4. done a build with the correct jitter version this time
>      (make distclean, then bootstrap && configure && make)
> but in step 4 the broken libpoke/pvm-vm.h, libpoke/pvm-vm1.c, 
> libpoke/pvm-vm2.c
> persisted there.
>
> I see two possible fixes:
>   A) erase libpoke/pvm-vm.h, libpoke/pvm-vm1.c, libpoke/pvm-vm2.c already
>      during "make distclean", not "make maintainer-clean".
>   B) add a dependency, to make sure that these files get rebuilt when jitter
>      is rebuilt.
>
> (B) seems more correct to me, so here's a proposed fix in that direction.

(A) is definitely wrong in either case, since these files are dist
files.  IIRC, the JITTER executable is not built in the cross case from
dists.  Do you know if this still work with this dependency added?
(i.e. run distcheck and build a cross-compiled poke from the new dist)

> [2. text/x-patch; 
> 0001-build-Regenerate-pvm-vm.h-pvm-vm1.c-pvm-vm2.c-when-j.patch]...

Thanks again.
-- 
Arsen Arsenović

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]