diff options
Diffstat (limited to 'README-DEV')
-rw-r--r-- | README-DEV | 94 |
1 files changed, 59 insertions, 35 deletions
@@ -28,11 +28,11 @@ Debian and Fedora distributions. The configuration options defining these sets are specified in the Debian's rules and Fedora's RPM .spec files. These files can be obtained as follows: -$ wget http://deb.debian.org/debian/pool/main/c/curl/curl_7.67.0-2.debian.tar.xz -$ tar xf curl_7.67.0-2.debian.tar.xz debian/rules +$ wget http://deb.debian.org/debian/pool/main/c/curl/curl_8.3.0-3.debian.tar.xz +$ tar xf curl_8.3.0-3.debian.tar.xz -$ wget https://kojipkgs.fedoraproject.org//packages/curl/7.67.0/2.fc32/src/curl-7.67.0-2.fc32.src.rpm -$ rpm2cpio curl-7.67.0-2.fc32.src.rpm | cpio -civ '*.spec' +$ wget https://kojipkgs.fedoraproject.org/packages/curl/8.4.0/1.fc40/src/curl-8.4.0-1.fc40.src.rpm +$ rpm2cpio curl-8.4.0-1.fc40.src.rpm | cpio -civ '*.spec' As a side note, on Debian and Fedora the source, library, headers, and tools are packaged as follows: @@ -42,49 +42,64 @@ Debian/Ubuntu: curl libcurl4 libcurl4-openssl-dev curl Fedora/RHEL: curl libcurl libcurl-devel curl Search for the Debian and Fedora packages at https://packages.debian.org/search -and https://apps.fedoraproject.org/packages/. +and https://src.fedoraproject.org/. Here are the discovered configuration options. Debian: - --disable-symbol-hiding --enable-versioned-symbols - --enable-threaded-resolver --with-lber-lib=lber - --with-gssapi=/usr --with-libssh2 --with-nghttp2 + --disable-dependency-tracking --disable-symbol-hiding + --enable-versioned-symbols --enable-threaded-resolver --with-lber-lib=lber + --with-gssapi=/usr --with-nghttp2 --with-zsh-functions-dir=/usr/share/zsh/vendor-completions + --without-libssh --with-libssh2 + --with-openssl --with-gnutls --with-ca-path=/etc/ssl/certs + --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt Fedora: - --disable-static --enable-symbol-hiding --enable-ipv6 - --enable-threaded-resolver --with-gssapi --with-nghttp2 --with-ssl - --with-ca-bundle=/etc/pki/tls/certs/ca-bundle.crt - --enable-ldap --enable-ldaps --enable-manual --with-brotli --with-libidn2 - --with-libmetalink --with-libpsl --with-libssh + --disable-static --enable-hsts --enable-ipv6 --enable-symbol-hiding + --enable-threaded-resolver --without-zstd --with-gssapi --with-libidn2 + --with-nghttp2 --with-ssl --with-ca-bundle=/etc/pki/tls/certs/ca-bundle.crt + --enable-dict --enable-gopher --enable-imap --enable-ldap --enable-ldaps + --enable-manual --enable-mqtt --enable-ntlm --enable-ntlm-wb --enable-pop3 + --enable-rtsp --enable-smb --enable-smtp --enable-telnet --enable-tftp + --enable-tls-srp --enable-websockets --with-brotli --with-libpsl + --with-libssh The union of these feature sets translates into the following options: --enable-symbol-hiding --enable-versioned-symbols --enable-threaded-resolver --with-lber-lib=lber --with-gssapi --with-libssh2 --with-nghttp2 --with-zsh-functions-dir=<path> --with-ca-path=<path> - --with-ca-bundle=<path> --enable-ipv6 --with-ssl --enable-ldap + --with-ca-bundle=<path> --enable-ipv6 --with-openssl --enable-ldap --enable-ldaps --enable-manual --with-brotli --with-libidn2 - --with-libmetalink --with-libpsl --with-libssh + --with-libpsl --with-libssh --with-gnutls + --enable-hsts --enable-dict --enable-gopher --enable-imap + --enable-mqtt --enable-ntlm --enable-ntlm-wb --enable-pop3 --enable-rtsp + --enable-smb --enable-smtp --enable-telnet --enable-tftp --enable-tls-srp + --enable-websockets We, however, drop the external dependencies that are not packaged for build2, disable default CA bundle/directory and use --with-ca-fallback instead, explicitly request to use zlib and end up with the following options: --enable-symbol-hiding --enable-versioned-symbols --enable-threaded-resolve - --enable-ipv6 --with-ssl --with-zlib --disable-ldap --disable-ldaps + --enable-ipv6 --with-openssl --with-zlib --disable-ldap --disable-ldaps --disable-ares --disable-esni --disable-manual --without-lber-lib --without-gssapi --without-libssh --without-libssh2 --without-nghttp2 --without-zsh-functions-dir --without-brotli --without-libidn2 - --without-libmetalink --without-libpsl --without-ca-bundle --without-ca-path - --with-ca-fallback + --without-libpsl --without-bearssl --without-libgsasl --without-hyper + --without-rustls --without-wolfssh --without-gnutls + --without-ca-bundle --without-ca-path --with-ca-fallback + --enable-hsts --enable-dict --enable-gopher --enable-imap + --enable-mqtt --enable-ntlm --enable-ntlm-wb --enable-pop3 --enable-rtsp + --enable-smb --enable-smtp --enable-telnet --enable-tftp --enable-tls-srp + --enable-websockets See the configuration options description at the "Install from source" page -(https://curl.haxx.se/docs/install.html). +(https://curl.se/docs/install.html). On Windows and MacOS we also enable the SSL backend provided by the system and make it a default one. On MacOS we add the following configuration options: @@ -93,7 +108,7 @@ make it a default one. On MacOS we add the following configuration options: Note, though, that on MacOS building curl with GCC fails for the Secure Transport backend enabled (see curl issue 4821 for details). Thus, we disable -it for GCC on MacOS. +it for GCC on MacOS (see libcurl/curl_config.h for details). For MSVC there is no easy way to request that via the configuration script, so we apply the following patch to winbuild/MakefileBuild.vc: @@ -111,27 +126,36 @@ we apply the following patch to winbuild/MakefileBuild.vc: Normally, when packaging a project, we need to replace some auto-generated headers with our own implementations and deduce compilation/linking options. -For cURL we can rely for that on m4/curl-compilers.m4, {lib,src}/Makefile.am, -and winbuild/MakefileBuild.vc. In practice, however, that can be uneasy and -error prone, so you may also need to see the auto-generated files and the -actual compiler and linker command lines in the build log. If that's the case, -you can configure/build the upstream package on the platform of interest -running the following commands in the upstream project root directory. - -On POSIX and for MinGW GCC (add --with-secure-transport ---with-default-ssl-backend=secure-transport for MacOS and --with-schannel ---with-default-ssl-backend=schannel for MinGW GCC): - -$ ./buildconf +For cURL we can rely for that on configure.ac, m4/curl-compilers.m4, +{lib,src}/Makefile.am, and winbuild/MakefileBuild.vc. In practice, however, +that can be uneasy and error prone, so you may also need to see the +auto-generated files and the actual compiler and linker command lines in the +build log. If that's the case, you can configure/build the upstream package on +the platform of interest running the following commands in the upstream +project root directory. + +On POSIX and for MinGW GCC (add +--with-secure-transport --with-default-ssl-backend=secure-transport for MacOS +and +--with-schannel --with-default-ssl-backend=schannel for MinGW GCC): + +$ autoreconf -fi $ mkdir build $ cd build $ ../configure --enable-symbol-hiding --enable-versioned-symbols \ - --enable-threaded-resolve --enable-ipv6 --with-ssl --with-zlib \ + --enable-threaded-resolve --enable-ipv6 --with-openssl --with-zlib \ --disable-ldap --disable-ldaps --disable-ares --disable-esni \ --disable-manual --without-lber-lib --without-gssapi --without-libssh \ --without-libssh2 --without-nghttp2 --without-zsh-functions-dir \ - --without-brotli --without-libidn2 --without-libmetalink --without-libpsl \ - --without-ca-bundle --without-ca-path --with-ca-fallback >build.log 2>&1 + --without-brotli --without-libidn2 --without-libpsl \ + --without-bearssl --without-libgsasl --without-hyper \ + --without-rustls --without-wolfssh \ + --without-ca-bundle --without-ca-path --with-ca-fallback \ + --enable-hsts --enable-dict --enable-gopher --enable-imap \ + --enable-mqtt --enable-ntlm --enable-ntlm-wb --enable-pop3 --enable-rtsp \ + --enable-smb --enable-smtp --enable-telnet --enable-tftp --enable-tls-srp \ + --enable-websockets \ + >build.log 2>&1 $ make V=1 >>build.log 2>&1 For MSVC: |