espressif / qemu

Fork of QEMU with Espressif patches. See Wiki for details.
https://github.com/espressif/esp-toolchain-docs/blob/main/qemu/README.md
Other
230 stars 61 forks source link

block: fix compile error with curl 7.85.0 or later (QEMU-100) #65

Closed listout closed 1 year ago

listout commented 1 year ago

CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS were deprecated. Use CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR instead.

CURLINFO_CONTENT_LENGTH_DOWNLOAD was deprecated. Use CURLINFO_CONTENT_LENGTH_DOWNLOAD_T instead.

Please refer: https://gitlab.com/qemu-project/qemu/-/issues/1440, and https://lists.gnu.org/archive/html/qemu-devel/2023-01/msg05146.html

listout commented 1 year ago

Currently it is not possible to build from the esp-develop tag. Build fails with the following error message:

ninja: Entering directory `build'
[9/38] Compiling C object libblock.fa.p/block_curl.c.o
FAILED: libblock.fa.p/block_curl.c.o 
cc -m64 -mcx16 -Ilibblock.fa.p -I. -I.. -Iqapi -Itrace -Iui -Iui/shader -Iblock -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -fdiagnostics-color=auto -Wall -Winvalid-pch -Werror -std=gnu11 -O0 -g -isystem /home/listout/Documents/w/qemu/linux-headers -isystem linux-headers -iquote . -iquote /home/listout/Documents/w/qemu -iquote /home/listout/Documents/w/qemu/include -iquote /home/listout/Documents/w/qemu/tcg/i386 -pthread -fsanitize=address -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wold-style-declaration -Wold-style-definition -Wtype-limits -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wempty-body -Wnested-externs -Wendif-labels -Wexpansion-to-defined -Wimplicit-fallthrough=2 -Wno-missing-include-dirs -Wno-shift-negative-value -Wno-psabi -fstack-protector-strong -fPIE -MD -MQ libblock.fa.p/block_curl.c.o -MF libblock.fa.p/block_curl.c.o.d -o libblock.fa.p/block_curl.c.o -c ../block/curl.c
../block/curl.c: In function ‘curl_init_state’:
../block/curl.c:515:9: error: ‘CURLOPT_PROTOCOLS’ is deprecated: since 7.85.0. Use CURLOPT_PROTOCOLS_STR [-Werror=deprecated-declarations]
  515 |         if (curl_easy_setopt(state->curl, CURLOPT_PROTOCOLS, PROTOCOLS) ||
      |         ^~
In file included from ../block/curl.c:34:
/usr/include/curl/curl.h:1749:3: note: declared here
 1749 |   CURLOPTDEPRECATED(CURLOPT_PROTOCOLS, CURLOPTTYPE_LONG, 181,
      |   ^~~~~~~~~~~~~~~~~
../block/curl.c:516:13: error: ‘CURLOPT_REDIR_PROTOCOLS’ is deprecated: since 7.85.0. Use CURLOPT_REDIR_PROTOCOLS_STR [-Werror=deprecated-declarations]
  516 |             curl_easy_setopt(state->curl, CURLOPT_REDIR_PROTOCOLS, PROTOCOLS)) {
      |             ^~~~~~~~~~~~~~~~
/usr/include/curl/curl.h:1755:3: note: declared here
 1755 |   CURLOPTDEPRECATED(CURLOPT_REDIR_PROTOCOLS, CURLOPTTYPE_LONG, 182,
      |   ^~~~~~~~~~~~~~~~~
../block/curl.c: In function ‘curl_open’:
../block/curl.c:799:5: error: ‘CURLINFO_CONTENT_LENGTH_DOWNLOAD’ is deprecated: since 7.55.0. Use CURLINFO_CONTENT_LENGTH_DOWNLOAD_T [-Werror=deprecated-declarations]
  799 |     if (curl_easy_getinfo(state->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &d)) {
      |     ^~
/usr/include/curl/curl.h:2853:3: note: declared here
 2853 |   CURLINFO_CONTENT_LENGTH_DOWNLOAD
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
[14/38] Compiling C object libcommon.fa.p/softmmu_vl.c.o
ninja: build stopped: subcommand failed.

With curl 7.87.0

curl 7.87.0 (x86_64-pc-linux-gnu) libcurl/7.87.0 OpenSSL/1.1.1t zlib/1.2.13 c-ares/1.18.1 nghttp2/1.51.0
Release-Date: 2022-12-21
Protocols: dict file ftp ftps http https imap imaps mqtt pop3 pop3s rtsp smtp smtps tftp
Features: AsynchDNS HTTP2 HTTPS-proxy IPv6 Largefile libz NTLM SSL threadsafe TLS-SRP UnixSockets

If devs think it's not possible to merge the changes then please add the --disable-werror option to .configure script.

listout commented 1 year ago

ping