mirror of
https://github.com/curl/curl.git
synced 2025-09-12 15:12:42 +03:00
krb5: add Linux/macOS CI tests, fix cmake GSS detection
- GHA/macos: enable GSS krb5 in a cmake job. Uses CMake-native detection. - GHA/linux: enable GSS krb5 in autotools job and add a cmake job to match. CMake uses `pkg-config`-based detection. - GHA/linux: add step to dump configure logs. - fix and simplify logic digesting FindGSS output. - cmake: add `heimdal-gssapi` to `libcurl.pc`. Closes #14447
This commit is contained in:
parent
e042073f9d
commit
d3f6b2ffa7
16
.github/workflows/linux.yml
vendored
16
.github/workflows/linux.yml
vendored
|
@ -126,10 +126,16 @@ jobs:
|
||||||
configure: CPPFLAGS=-DCURL_WARN_SIGN_CONVERSION CFLAGS=-O3 LDFLAGS="-Wl,-rpath,$HOME/openssl3/lib" --with-openssl=$HOME/openssl3 --enable-debug --enable-websockets
|
configure: CPPFLAGS=-DCURL_WARN_SIGN_CONVERSION CFLAGS=-O3 LDFLAGS="-Wl,-rpath,$HOME/openssl3/lib" --with-openssl=$HOME/openssl3 --enable-debug --enable-websockets
|
||||||
singleuse: --unit
|
singleuse: --unit
|
||||||
|
|
||||||
- name: openssl3-clang
|
- name: openssl3-clang krb5
|
||||||
install_packages: zlib1g-dev clang
|
install_packages: zlib1g-dev libkrb5-dev clang
|
||||||
install_steps: openssl3
|
install_steps: openssl3
|
||||||
configure: CC=clang LDFLAGS="-Wl,-rpath,$HOME/openssl3/lib" --with-openssl=$HOME/openssl3 --enable-debug --enable-websockets
|
configure: CC=clang LDFLAGS="-Wl,-rpath,$HOME/openssl3/lib" --with-openssl=$HOME/openssl3 --with-gssapi --enable-debug --enable-websockets
|
||||||
|
singleuse: --unit
|
||||||
|
|
||||||
|
- name: openssl3-clang krb5
|
||||||
|
install_packages: zlib1g-dev libkrb5-dev clang
|
||||||
|
install_steps: openssl3
|
||||||
|
generate: -DOPENSSL_ROOT_DIR=$HOME/openssl3 -DCURL_USE_GSSAPI=ON -DENABLE_DEBUG=ON -DENABLE_WEBSOCKETS=ON
|
||||||
singleuse: --unit
|
singleuse: --unit
|
||||||
|
|
||||||
- name: address-sanitizer
|
- name: address-sanitizer
|
||||||
|
@ -435,6 +441,10 @@ jobs:
|
||||||
if: ${{ matrix.build.generate }}
|
if: ${{ matrix.build.generate }}
|
||||||
name: 'configure (cmake)'
|
name: 'configure (cmake)'
|
||||||
|
|
||||||
|
- name: 'configure log'
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
run: cat config.log CMakeFiles/CMakeConfigureLog.yaml 2>/dev/null || true
|
||||||
|
|
||||||
- name: 'test configs'
|
- name: 'test configs'
|
||||||
run: |
|
run: |
|
||||||
cat tests/config || true
|
cat tests/config || true
|
||||||
|
|
6
.github/workflows/macos.yml
vendored
6
.github/workflows/macos.yml
vendored
|
@ -291,9 +291,9 @@ jobs:
|
||||||
install: wolfssl
|
install: wolfssl
|
||||||
generate: -DCURL_USE_WOLFSSL=ON -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
|
generate: -DCURL_USE_WOLFSSL=ON -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
|
||||||
macos-version-min: '10.15'
|
macos-version-min: '10.15'
|
||||||
- name: 'GnuTLS !ldap'
|
- name: 'GnuTLS !ldap krb5'
|
||||||
install: gnutls nettle
|
install: gnutls nettle krb5
|
||||||
generate: -DCURL_USE_GNUTLS=ON -DCURL_USE_OPENSSL=OFF -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
|
generate: -DCURL_USE_GNUTLS=ON -DCURL_USE_OPENSSL=OFF -DCURL_USE_GSSAPI=ON -DGSS_ROOT_DIR=$(brew --prefix krb5) -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
|
||||||
macos-version-min: '10.15'
|
macos-version-min: '10.15'
|
||||||
exclude:
|
exclude:
|
||||||
- { compiler: llvm@15, build: { macos-version-min: '10.15' } }
|
- { compiler: llvm@15, build: { macos-version-min: '10.15' } }
|
||||||
|
|
|
@ -1074,12 +1074,19 @@ if(CURL_USE_GSSAPI)
|
||||||
message(STATUS "Found ${GSS_FLAVOUR} GSSAPI version: \"${GSS_VERSION}\"")
|
message(STATUS "Found ${GSS_FLAVOUR} GSSAPI version: \"${GSS_VERSION}\"")
|
||||||
|
|
||||||
list(APPEND CMAKE_REQUIRED_INCLUDES ${GSS_INCLUDE_DIR})
|
list(APPEND CMAKE_REQUIRED_INCLUDES ${GSS_INCLUDE_DIR})
|
||||||
check_include_file_concat("gssapi/gssapi.h" HAVE_GSSAPI_GSSAPI_H)
|
|
||||||
|
string(REPLACE ";" " " GSS_COMPILER_FLAGS "${GSS_COMPILER_FLAGS}")
|
||||||
|
string(REPLACE ";" " " GSS_LINKER_FLAGS "${GSS_LINKER_FLAGS}")
|
||||||
|
|
||||||
|
foreach(_dir IN LISTS GSS_LINK_DIRECTORIES)
|
||||||
|
set(GSS_LINKER_FLAGS "${GSS_LINKER_FLAGS} -L\"${_dir}\"")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
check_include_file_concat("gssapi/gssapi.h" HAVE_GSSAPI_GSSAPI_H)
|
||||||
check_include_file_concat("gssapi/gssapi_generic.h" HAVE_GSSAPI_GSSAPI_GENERIC_H)
|
check_include_file_concat("gssapi/gssapi_generic.h" HAVE_GSSAPI_GSSAPI_GENERIC_H)
|
||||||
check_include_file_concat("gssapi/gssapi_krb5.h" HAVE_GSSAPI_GSSAPI_KRB5_H)
|
check_include_file_concat("gssapi/gssapi_krb5.h" HAVE_GSSAPI_GSSAPI_KRB5_H)
|
||||||
|
|
||||||
if(NOT GSS_FLAVOUR STREQUAL "Heimdal")
|
if(GSS_FLAVOUR STREQUAL "MIT")
|
||||||
# MIT
|
|
||||||
set(_include_list "")
|
set(_include_list "")
|
||||||
if(HAVE_GSSAPI_GSSAPI_H)
|
if(HAVE_GSSAPI_GSSAPI_H)
|
||||||
list(APPEND _include_list "gssapi/gssapi.h")
|
list(APPEND _include_list "gssapi/gssapi.h")
|
||||||
|
@ -1091,15 +1098,8 @@ if(CURL_USE_GSSAPI)
|
||||||
list(APPEND _include_list "gssapi/gssapi_krb5.h")
|
list(APPEND _include_list "gssapi/gssapi_krb5.h")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
string(REPLACE ";" " " _compiler_flags_str "${GSS_COMPILER_FLAGS}")
|
|
||||||
string(REPLACE ";" " " _linker_flags_str "${GSS_LINKER_FLAGS}")
|
|
||||||
|
|
||||||
foreach(_dir IN LISTS GSS_LINK_DIRECTORIES)
|
|
||||||
set(_linker_flags_str "${_linker_flags_str} -L\"${_dir}\"")
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
if(NOT DEFINED HAVE_GSS_C_NT_HOSTBASED_SERVICE)
|
if(NOT DEFINED HAVE_GSS_C_NT_HOSTBASED_SERVICE)
|
||||||
set(CMAKE_REQUIRED_FLAGS "${_compiler_flags_str} ${_linker_flags_str}")
|
set(CMAKE_REQUIRED_FLAGS "${GSS_COMPILER_FLAGS} ${GSS_LINKER_FLAGS}")
|
||||||
set(CMAKE_REQUIRED_LIBRARIES ${GSS_LIBRARIES})
|
set(CMAKE_REQUIRED_LIBRARIES ${GSS_LIBRARIES})
|
||||||
check_symbol_exists("GSS_C_NT_HOSTBASED_SERVICE" ${_include_list} HAVE_GSS_C_NT_HOSTBASED_SERVICE)
|
check_symbol_exists("GSS_C_NT_HOSTBASED_SERVICE" ${_include_list} HAVE_GSS_C_NT_HOSTBASED_SERVICE)
|
||||||
unset(CMAKE_REQUIRED_LIBRARIES)
|
unset(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
@ -1112,12 +1112,13 @@ if(CURL_USE_GSSAPI)
|
||||||
include_directories(${GSS_INCLUDE_DIR})
|
include_directories(${GSS_INCLUDE_DIR})
|
||||||
link_directories(${GSS_LINK_DIRECTORIES})
|
link_directories(${GSS_LINK_DIRECTORIES})
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GSS_COMPILER_FLAGS}")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GSS_COMPILER_FLAGS}")
|
||||||
string(REPLACE ";" " " GSS_LINKER_FLAGS "${GSS_LINKER_FLAGS}")
|
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GSS_LINKER_FLAGS}")
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GSS_LINKER_FLAGS}")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GSS_LINKER_FLAGS}")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GSS_LINKER_FLAGS}")
|
||||||
list(APPEND CURL_LIBS ${GSS_LIBRARIES})
|
list(APPEND CURL_LIBS ${GSS_LIBRARIES})
|
||||||
if(GSS_FLAVOUR STREQUAL "MIT")
|
if(GSS_FLAVOUR STREQUAL "MIT")
|
||||||
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "mit-krb5-gssapi")
|
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "mit-krb5-gssapi")
|
||||||
|
else() # Heimdal
|
||||||
|
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "heimdal-gssapi")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
message(WARNING "GSSAPI support has been requested but no supporting libraries found. Skipping.")
|
message(WARNING "GSSAPI support has been requested but no supporting libraries found. Skipping.")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user