diff mbox series

[v1,07/10] configure: fix check for libzstd

Message ID 20200302181907.32110-8-alex.bennee@linaro.org
State New
Headers show
Series testing/next updates (tweaks and re-greening) | expand

Commit Message

Alex Bennée March 2, 2020, 6:19 p.m. UTC
Fixes: 3a67848134d0
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 configure | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Alex Bennée March 2, 2020, 10:02 p.m. UTC | #1
Alex Bennée <alex.bennee@linaro.org> writes:

> Fixes: 3a67848134d0
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
>  configure | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index 7b373bc0bb8..caa65f58831 100755
> --- a/configure
> +++ b/configure
> @@ -2464,7 +2464,7 @@ fi
>  # zstd check
>  
>  if test "$zstd" != "no" ; then
> -    if $pkg_config --exist libzstd ; then
> +    if $pkg_config --exists libzstd ; then

Dropping this patch as it breaks the build even more!

  CC      migration/block.o

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:24:5: error: unknown type name ‘ZSTD_CStream’

     ZSTD_CStream *zcs;

     ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:26:5: error: unknown type name ‘ZSTD_DStream’

     ZSTD_DStream *zds;

     ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:28:5: error: unknown type name ‘ZSTD_inBuffer’

     ZSTD_inBuffer in;

     ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:29:5: error: unknown type name ‘ZSTD_outBuffer’

     ZSTD_outBuffer out;

     ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c: In function ‘zstd_send_setup’:

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:55:14: error: implicit declaration of function ‘ZSTD_createCStream’ [-Werror=implicit-function-declaration]

     z->zcs = ZSTD_createCStream();

              ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:55:5: error: nested extern declaration of ‘ZSTD_createCStream’ [-Werror=nested-externs]

     z->zcs = ZSTD_createCStream();

     ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:55:12: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]

     z->zcs = ZSTD_createCStream();

            ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:62:11: error: implicit declaration of function ‘ZSTD_initCStream’ [-Werror=implicit-function-declaration]

     res = ZSTD_initCStream(z->zcs, migrate_multifd_zstd_level());

           ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:62:5: error: nested extern declaration of ‘ZSTD_initCStream’ [-Werror=nested-externs]

     res = ZSTD_initCStream(z->zcs, migrate_multifd_zstd_level());

     ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:64:9: error: implicit declaration of function ‘ZSTD_freeCStream’ [-Werror=implicit-function-declaration]

         ZSTD_freeCStream(z->zcs);

         ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:64:9: error: nested extern declaration of ‘ZSTD_freeCStream’ [-Werror=nested-externs]

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c: In function ‘zstd_send_prepare’:

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:120:11: error: request for member ‘dst’ in something not a structure or union

     z->out.dst = z->zbuff;

           ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:121:11: error: request for member ‘size’ in something not a structure or union

     z->out.size = z->zbuff_len;

           ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:122:11: error: request for member ‘pos’ in something not a structure or union

     z->out.pos = 0;

           ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:125:9: error: unknown type name ‘ZSTD_EndDirective’

         ZSTD_EndDirective flush = ZSTD_e_continue;

         ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:125:35: error: ‘ZSTD_e_continue’ undeclared (first use in this function)

         ZSTD_EndDirective flush = ZSTD_e_continue;

                                   ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:125:35: note: each undeclared identifier is reported only once for each function it appears in

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:128:21: error: ‘ZSTD_e_flush’ undeclared (first use in this function)

             flush = ZSTD_e_flush;

                     ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:130:14: error: request for member ‘src’ in something not a structure or union

         z->in.src = iov[i].iov_base;

              ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:131:14: error: request for member ‘size’ in something not a structure or union

         z->in.size = iov[i].iov_len;

              ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:132:14: error: request for member ‘pos’ in something not a structure or union

         z->in.pos = 0;

              ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:143:19: error: implicit declaration of function ‘ZSTD_compressStream2’ [-Werror=implicit-function-declaration]

             ret = ZSTD_compressStream2(z->zcs, &z->out, &z->in, flush);

                   ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:143:13: error: nested extern declaration of ‘ZSTD_compressStream2’ [-Werror=nested-externs]

             ret = ZSTD_compressStream2(z->zcs, &z->out, &z->in, flush);

             ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:144:35: error: request for member ‘size’ in something not a structure or union

         } while (ret > 0 && (z->in.size - z->in.pos > 0)

                                   ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:144:48: error: request for member ‘pos’ in something not a structure or union

         } while (ret > 0 && (z->in.size - z->in.pos > 0)

                                                ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:145:36: error: request for member ‘size’ in something not a structure or union

                          && (z->out.size - z->out.pos > 0));

                                    ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:145:50: error: request for member ‘pos’ in something not a structure or union

                          && (z->out.size - z->out.pos > 0));

                                                  ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:146:30: error: request for member ‘size’ in something not a structure or union

         if (ret > 0 && (z->in.size - z->in.pos > 0)) {

                              ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:146:43: error: request for member ‘pos’ in something not a structure or union

         if (ret > 0 && (z->in.size - z->in.pos > 0)) {

                                           ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:157:33: error: request for member ‘pos’ in something not a structure or union

     p->next_packet_size = z->out.pos;

                                 ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c: In function ‘zstd_recv_setup’:

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:199:14: error: implicit declaration of function ‘ZSTD_createDStream’ [-Werror=implicit-function-declaration]

     z->zds = ZSTD_createDStream();

              ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:199:5: error: nested extern declaration of ‘ZSTD_createDStream’ [-Werror=nested-externs]

     z->zds = ZSTD_createDStream();

     ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:199:12: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]

     z->zds = ZSTD_createDStream();

            ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:206:11: error: implicit declaration of function ‘ZSTD_initDStream’ [-Werror=implicit-function-declaration]

     ret = ZSTD_initDStream(z->zds);

           ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:206:5: error: nested extern declaration of ‘ZSTD_initDStream’ [-Werror=nested-externs]

     ret = ZSTD_initDStream(z->zds);

     ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:208:9: error: implicit declaration of function ‘ZSTD_freeDStream’ [-Werror=implicit-function-declaration]

         ZSTD_freeDStream(z->zds);

         ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:208:9: error: nested extern declaration of ‘ZSTD_freeDStream’ [-Werror=nested-externs]

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c: In function ‘zstd_recv_pages’:

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:281:10: error: request for member ‘src’ in something not a structure or union

     z->in.src = z->zbuff;

          ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:282:10: error: request for member ‘size’ in something not a structure or union

     z->in.size = in_size;

          ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:283:10: error: request for member ‘pos’ in something not a structure or union

     z->in.pos = 0;

          ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:288:15: error: request for member ‘dst’ in something not a structure or union

         z->out.dst = iov->iov_base;

               ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:289:15: error: request for member ‘size’ in something not a structure or union

         z->out.size = iov->iov_len;

               ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:290:15: error: request for member ‘pos’ in something not a structure or union

         z->out.pos = 0;

               ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:301:19: error: implicit declaration of function ‘ZSTD_decompressStream’ [-Werror=implicit-function-declaration]

             ret = ZSTD_decompressStream(z->zds, &z->out, &z->in);

                   ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:301:13: error: nested extern declaration of ‘ZSTD_decompressStream’ [-Werror=nested-externs]

             ret = ZSTD_decompressStream(z->zds, &z->out, &z->in);

             ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:302:35: error: request for member ‘size’ in something not a structure or union

         } while (ret > 0 && (z->in.size - z->in.pos > 0)

                                   ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:302:48: error: request for member ‘pos’ in something not a structure or union

         } while (ret > 0 && (z->in.size - z->in.pos > 0)

                                                ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:303:36: error: request for member ‘pos’ in something not a structure or union

                          && (z->out.pos < iov->iov_len));

                                    ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:304:31: error: request for member ‘pos’ in something not a structure or union

         if (ret > 0 && (z->out.pos < iov->iov_len)) {

                               ^

/home/travis/build/stsquad/qemu/migration/multifd-zstd.c:314:27: error: request for member ‘pos’ in something not a structure or union

         out_size += z->out.pos;

                           ^

cc1: all warnings being treated as errors

/home/travis/build/stsquad/qemu/rules.mak:69: recipe for target 'migration/multifd-zstd.o' failed

make: *** [migration/multifd-zstd.o] Error 1

make: *** Waiting for unfinished jobs....

rm tests/qemu-iotests/socket_scm_helper.o

>          zstd_cflags="$($pkg_config --cflags libzstd)"
>          zstd_libs="$($pkg_config --libs libzstd)"
>          LIBS="$zstd_libs $LIBS"
Juan Quintela March 5, 2020, 9:43 a.m. UTC | #2
Alex Bennée <alex.bennee@linaro.org> wrote:
> Alex Bennée <alex.bennee@linaro.org> writes:
>
>> Fixes: 3a67848134d0
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>>  configure | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/configure b/configure
>> index 7b373bc0bb8..caa65f58831 100755
>> --- a/configure
>> +++ b/configure
>> @@ -2464,7 +2464,7 @@ fi
>>  # zstd check
>>  
>>  if test "$zstd" != "no" ; then
>> -    if $pkg_config --exist libzstd ; then
>> +    if $pkg_config --exists libzstd ; then

Hi

several things:

a- I found why I didn't get the error.  Fedora pkg-config is really
"smart":

b- I have tried (with this patch), the following configurations:
   * --enable-zstd
   * --disable-zstd
   with both libzstd-devel installed and not installed. Everything
   worked as expected.
   (BTW, I tested that before submmiting the patch in the first place, I
   thought that I had done all testing needed for such a check).

Can you told me what architecture/distro/os are you using.


> Dropping this patch as it breaks the build even more!
>
>   CC      migration/block.o
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:24:5: error: unknown type name ‘ZSTD_CStream’
>
>      ZSTD_CStream *zcs;
>
>      ^

This is really weird.  if you arrive here, that means:
- you have zstd devel installed (whatever is that called for your
  os/distro/whatever).

- pkg-config has found zstd devel packages and configured them (that
  file depends on CONFiG_ZSTD beoing defined)

- gcc has found <zstd.h> (i.e. it don't give one error about that
  include file not found).

And zstd don't have ZSTD_CStream defined?  What is going on here?
Can you post/show what is on your zstd.h file?
What zstd library version do you have?

I thought that zstd was a new library, and that we didn't need to check
for versions.  It appears that I was wrong.  And no, the include file
don't show what features are new/old.

Sorry for the inconveniences.

Later, Juan.

>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:26:5: error: unknown type name ‘ZSTD_DStream’
>
>      ZSTD_DStream *zds;
>
>      ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:28:5: error: unknown type name ‘ZSTD_inBuffer’
>
>      ZSTD_inBuffer in;
>
>      ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:29:5: error: unknown type name ‘ZSTD_outBuffer’
>
>      ZSTD_outBuffer out;
>
>      ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c: In function ‘zstd_send_setup’:
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:55:14: error: implicit declaration of function ‘ZSTD_createCStream’ [-Werror=implicit-function-declaration]
>
>      z->zcs = ZSTD_createCStream();
>
>               ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:55:5: error: nested extern declaration of ‘ZSTD_createCStream’ [-Werror=nested-externs]
>
>      z->zcs = ZSTD_createCStream();
>
>      ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:55:12: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
>
>      z->zcs = ZSTD_createCStream();
>
>             ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:62:11: error: implicit declaration of function ‘ZSTD_initCStream’ [-Werror=implicit-function-declaration]
>
>      res = ZSTD_initCStream(z->zcs, migrate_multifd_zstd_level());
>
>            ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:62:5: error: nested extern declaration of ‘ZSTD_initCStream’ [-Werror=nested-externs]
>
>      res = ZSTD_initCStream(z->zcs, migrate_multifd_zstd_level());
>
>      ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:64:9: error: implicit declaration of function ‘ZSTD_freeCStream’ [-Werror=implicit-function-declaration]
>
>          ZSTD_freeCStream(z->zcs);
>
>          ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:64:9: error: nested extern declaration of ‘ZSTD_freeCStream’ [-Werror=nested-externs]
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c: In function ‘zstd_send_prepare’:
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:120:11: error: request for member ‘dst’ in something not a structure or union
>
>      z->out.dst = z->zbuff;
>
>            ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:121:11: error: request for member ‘size’ in something not a structure or union
>
>      z->out.size = z->zbuff_len;
>
>            ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:122:11: error: request for member ‘pos’ in something not a structure or union
>
>      z->out.pos = 0;
>
>            ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:125:9: error: unknown type name ‘ZSTD_EndDirective’
>
>          ZSTD_EndDirective flush = ZSTD_e_continue;
>
>          ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:125:35: error: ‘ZSTD_e_continue’ undeclared (first use in this function)
>
>          ZSTD_EndDirective flush = ZSTD_e_continue;
>
>                                    ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:125:35: note: each undeclared identifier is reported only once for each function it appears in
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:128:21: error: ‘ZSTD_e_flush’ undeclared (first use in this function)
>
>              flush = ZSTD_e_flush;
>
>                      ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:130:14: error: request for member ‘src’ in something not a structure or union
>
>          z->in.src = iov[i].iov_base;
>
>               ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:131:14: error: request for member ‘size’ in something not a structure or union
>
>          z->in.size = iov[i].iov_len;
>
>               ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:132:14: error: request for member ‘pos’ in something not a structure or union
>
>          z->in.pos = 0;
>
>               ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:143:19: error: implicit declaration of function ‘ZSTD_compressStream2’ [-Werror=implicit-function-declaration]
>
>              ret = ZSTD_compressStream2(z->zcs, &z->out, &z->in, flush);
>
>                    ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:143:13: error: nested extern declaration of ‘ZSTD_compressStream2’ [-Werror=nested-externs]
>
>              ret = ZSTD_compressStream2(z->zcs, &z->out, &z->in, flush);
>
>              ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:144:35: error: request for member ‘size’ in something not a structure or union
>
>          } while (ret > 0 && (z->in.size - z->in.pos > 0)
>
>                                    ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:144:48: error: request for member ‘pos’ in something not a structure or union
>
>          } while (ret > 0 && (z->in.size - z->in.pos > 0)
>
>                                                 ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:145:36: error: request for member ‘size’ in something not a structure or union
>
>                           && (z->out.size - z->out.pos > 0));
>
>                                     ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:145:50: error: request for member ‘pos’ in something not a structure or union
>
>                           && (z->out.size - z->out.pos > 0));
>
>                                                   ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:146:30: error: request for member ‘size’ in something not a structure or union
>
>          if (ret > 0 && (z->in.size - z->in.pos > 0)) {
>
>                               ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:146:43: error: request for member ‘pos’ in something not a structure or union
>
>          if (ret > 0 && (z->in.size - z->in.pos > 0)) {
>
>                                            ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:157:33: error: request for member ‘pos’ in something not a structure or union
>
>      p->next_packet_size = z->out.pos;
>
>                                  ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c: In function ‘zstd_recv_setup’:
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:199:14: error: implicit declaration of function ‘ZSTD_createDStream’ [-Werror=implicit-function-declaration]
>
>      z->zds = ZSTD_createDStream();
>
>               ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:199:5: error: nested extern declaration of ‘ZSTD_createDStream’ [-Werror=nested-externs]
>
>      z->zds = ZSTD_createDStream();
>
>      ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:199:12: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
>
>      z->zds = ZSTD_createDStream();
>
>             ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:206:11: error: implicit declaration of function ‘ZSTD_initDStream’ [-Werror=implicit-function-declaration]
>
>      ret = ZSTD_initDStream(z->zds);
>
>            ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:206:5: error: nested extern declaration of ‘ZSTD_initDStream’ [-Werror=nested-externs]
>
>      ret = ZSTD_initDStream(z->zds);
>
>      ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:208:9: error: implicit declaration of function ‘ZSTD_freeDStream’ [-Werror=implicit-function-declaration]
>
>          ZSTD_freeDStream(z->zds);
>
>          ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:208:9: error: nested extern declaration of ‘ZSTD_freeDStream’ [-Werror=nested-externs]
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c: In function ‘zstd_recv_pages’:
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:281:10: error: request for member ‘src’ in something not a structure or union
>
>      z->in.src = z->zbuff;
>
>           ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:282:10: error: request for member ‘size’ in something not a structure or union
>
>      z->in.size = in_size;
>
>           ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:283:10: error: request for member ‘pos’ in something not a structure or union
>
>      z->in.pos = 0;
>
>           ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:288:15: error: request for member ‘dst’ in something not a structure or union
>
>          z->out.dst = iov->iov_base;
>
>                ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:289:15: error: request for member ‘size’ in something not a structure or union
>
>          z->out.size = iov->iov_len;
>
>                ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:290:15: error: request for member ‘pos’ in something not a structure or union
>
>          z->out.pos = 0;
>
>                ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:301:19: error: implicit declaration of function ‘ZSTD_decompressStream’ [-Werror=implicit-function-declaration]
>
>              ret = ZSTD_decompressStream(z->zds, &z->out, &z->in);
>
>                    ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:301:13: error: nested extern declaration of ‘ZSTD_decompressStream’ [-Werror=nested-externs]
>
>              ret = ZSTD_decompressStream(z->zds, &z->out, &z->in);
>
>              ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:302:35: error: request for member ‘size’ in something not a structure or union
>
>          } while (ret > 0 && (z->in.size - z->in.pos > 0)
>
>                                    ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:302:48: error: request for member ‘pos’ in something not a structure or union
>
>          } while (ret > 0 && (z->in.size - z->in.pos > 0)
>
>                                                 ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:303:36: error: request for member ‘pos’ in something not a structure or union
>
>                           && (z->out.pos < iov->iov_len));
>
>                                     ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:304:31: error: request for member ‘pos’ in something not a structure or union
>
>          if (ret > 0 && (z->out.pos < iov->iov_len)) {
>
>                                ^
>
> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:314:27: error: request for member ‘pos’ in something not a structure or union
>
>          out_size += z->out.pos;
>
>                            ^
>
> cc1: all warnings being treated as errors
>
> /home/travis/build/stsquad/qemu/rules.mak:69: recipe for target 'migration/multifd-zstd.o' failed
>
> make: *** [migration/multifd-zstd.o] Error 1
>
> make: *** Waiting for unfinished jobs....
>
> rm tests/qemu-iotests/socket_scm_helper.o
>
>>          zstd_cflags="$($pkg_config --cflags libzstd)"
>>          zstd_libs="$($pkg_config --libs libzstd)"
>>          LIBS="$zstd_libs $LIBS"
Alex Bennée March 5, 2020, 10:09 a.m. UTC | #3
Juan Quintela <quintela@redhat.com> writes:

> Alex Bennée <alex.bennee@linaro.org> wrote:
>> Alex Bennée <alex.bennee@linaro.org> writes:
>>
>>> Fixes: 3a67848134d0
>>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>>> ---
>>>  configure | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/configure b/configure
>>> index 7b373bc0bb8..caa65f58831 100755
>>> --- a/configure
>>> +++ b/configure
>>> @@ -2464,7 +2464,7 @@ fi
>>>  # zstd check
>>>  
>>>  if test "$zstd" != "no" ; then
>>> -    if $pkg_config --exist libzstd ; then
>>> +    if $pkg_config --exists libzstd ; then
>
> Hi
>
> several things:
>
> a- I found why I didn't get the error.  Fedora pkg-config is really
> "smart":
>
> b- I have tried (with this patch), the following configurations:
>    * --enable-zstd
>    * --disable-zstd
>    with both libzstd-devel installed and not installed. Everything
>    worked as expected.
>    (BTW, I tested that before submmiting the patch in the first place, I
>    thought that I had done all testing needed for such a check).
>
> Can you told me what architecture/distro/os are you using.

It broke on the CI setup - it could be another issue with the ageing
Travis images (Ubuntu 16.04).

>> Dropping this patch as it breaks the build even more!
>>
>>   CC      migration/block.o
>>
>> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:24:5: error: unknown type name ‘ZSTD_CStream’
>>
>>      ZSTD_CStream *zcs;
>>
>>      ^
>
> This is really weird.  if you arrive here, that means:
> - you have zstd devel installed (whatever is that called for your
>   os/distro/whatever).

Well it detected it:

  zstd support      yes

>
> - pkg-config has found zstd devel packages and configured them (that
>   file depends on CONFiG_ZSTD beoing defined)
>
> - gcc has found <zstd.h> (i.e. it don't give one error about that
>   include file not found).
>
> And zstd don't have ZSTD_CStream defined?  What is going on here?
> Can you post/show what is on your zstd.h file?
> What zstd library version do you have?
>
> I thought that zstd was a new library, and that we didn't need to check
> for versions.  It appears that I was wrong.  And no, the include file
> don't show what features are new/old.

Obviously not that new but has changed since it first got introduced.
Juan Quintela March 5, 2020, 10:28 a.m. UTC | #4
Alex Bennée <alex.bennee@linaro.org> wrote:
> Juan Quintela <quintela@redhat.com> writes:
>
>> Alex Bennée <alex.bennee@linaro.org> wrote:
>>> Alex Bennée <alex.bennee@linaro.org> writes:
>>>

>>
>> Can you told me what architecture/distro/os are you using.
>
> It broke on the CI setup - it could be another issue with the ageing
> Travis images (Ubuntu 16.04).
>
>>> Dropping this patch as it breaks the build even more!
>>>
>>>   CC      migration/block.o
>>>
>>> /home/travis/build/stsquad/qemu/migration/multifd-zstd.c:24:5: error: unknown type name ‘ZSTD_CStream’
>>>
>>>      ZSTD_CStream *zcs;
>>>
>>>      ^
>>
>> This is really weird.  if you arrive here, that means:
>> - you have zstd devel installed (whatever is that called for your
>>   os/distro/whatever).
>
> Well it detected it:
>
>   zstd support      yes
>
>>
>> - pkg-config has found zstd devel packages and configured them (that
>>   file depends on CONFiG_ZSTD beoing defined)
>>
>> - gcc has found <zstd.h> (i.e. it don't give one error about that
>>   include file not found).
>>
>> And zstd don't have ZSTD_CStream defined?  What is going on here?
>> Can you post/show what is on your zstd.h file?
>> What zstd library version do you have?
>>
>> I thought that zstd was a new library, and that we didn't need to check
>> for versions.  It appears that I was wrong.  And no, the include file
>> don't show what features are new/old.
>
> Obviously not that new but has changed since it first got introduced.

I put my archeology hat, and went digging.

Streaming API was introduced on this commit:

commit 5a0c8e24395079f8e8cdc90aa1659cd5ab1b7427
Author: Yann Collet <yann.collet.73@gmail.com>
Date:   Fri Aug 12 01:20:36 2016 +0200

    new streaming API (compression)

And it first appears on v0.8.1 version.

Posting a better fix on toplevel.  If you want to try, I have changed it
to:

diff --git a/configure b/configure
index 7b373bc0bb..1bf48df1ef 100755
--- a/configure
+++ b/configure
@@ -2464,7 +2464,8 @@ fi
 # zstd check
 
 if test "$zstd" != "no" ; then
-    if $pkg_config --exist libzstd ; then
+    libzstd_minver="0.8.1"
+    if $pkg_config --atleast-version=$libzstd_minver libzstd ; then
         zstd_cflags="$($pkg_config --cflags libzstd)"
         zstd_libs="$($pkg_config --libs libzstd)"
         LIBS="$zstd_libs $LIBS"


If you can check that this works for you, thanks.
diff mbox series

Patch

diff --git a/configure b/configure
index 7b373bc0bb8..caa65f58831 100755
--- a/configure
+++ b/configure
@@ -2464,7 +2464,7 @@  fi
 # zstd check
 
 if test "$zstd" != "no" ; then
-    if $pkg_config --exist libzstd ; then
+    if $pkg_config --exists libzstd ; then
         zstd_cflags="$($pkg_config --cflags libzstd)"
         zstd_libs="$($pkg_config --libs libzstd)"
         LIBS="$zstd_libs $LIBS"