From 24ac9e0c97ff9f20d096b4d93663276bc8bb2de1 Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Wed, 13 Feb 2019 23:26:54 +0000 Subject: deprecation: ensure we GIT_EXTERN deprecated funcs Although the error functions were deprecated, we did not properly mark them as deprecated. We need to include the `deprecated.h` file in order to ensure that the functions get their export attributes. Similarly, do not define `GIT_DEPRECATE_HARD` within the library, or those functions will also not get their export attributes. Define that only on the tests and examples. --- CMakeLists.txt | 3 --- examples/CMakeLists.txt | 3 +++ src/common.h | 6 ++++++ tests/CMakeLists.txt | 3 +++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e0f296a2..73702ee1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,9 +105,6 @@ SET(LIBGIT2_VERSION_STRING "${LIBGIT2_VERSION_MAJOR}.${LIBGIT2_VERSION_MINOR}.${ FILE(STRINGS "${libgit2_SOURCE_DIR}/include/git2/version.h" GIT2_HEADER_SOVERSION REGEX "^#define LIBGIT2_SOVERSION [0-9]+$") STRING(REGEX REPLACE "^.*LIBGIT2_SOVERSION ([0-9]+)$" "\\1" LIBGIT2_SOVERSION "${GIT2_HEADER_SOVERSION}") -# Ensure that we do not use deprecated functions internally -ADD_DEFINITIONS(-DGIT_DEPRECATE_HARD) - # Platform specific compilation flags IF (MSVC) IF (STDCALL) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 49edaec0f..e631b96f2 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -5,6 +5,9 @@ FILE(GLOB_RECURSE SRC_EXAMPLE_GIT2 network/*.c network/*.h common.?) ADD_EXECUTABLE(cgit2 ${SRC_EXAMPLE_GIT2}) SET_TARGET_PROPERTIES(cgit2 PROPERTIES C_STANDARD 90) +# Ensure that we do not use deprecated functions internally +ADD_DEFINITIONS(-DGIT_DEPRECATE_HARD) + IF(WIN32 OR ANDROID) TARGET_LINK_LIBRARIES(cgit2 git2) ELSE() diff --git a/src/common.h b/src/common.h index 6e1eac834..18ba72dd1 100644 --- a/src/common.h +++ b/src/common.h @@ -79,6 +79,12 @@ #include "thread-utils.h" #include "integer.h" +/* + * Include the declarations for deprecated functions; this ensures + * that they're decorated with the proper extern/visibility attributes. + */ +#include "git2/deprecated.h" + #include #define DEFAULT_BUFSIZE 65536 diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6ce5ae0af..aaa8ed109 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -11,6 +11,9 @@ ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\") ADD_DEFINITIONS(-DCLAR_TMPDIR=\"libgit2_tests\") ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64) +# Ensure that we do not use deprecated functions internally +ADD_DEFINITIONS(-DGIT_DEPRECATE_HARD) + INCLUDE_DIRECTORIES(${CLAR_PATH} ${libgit2_BINARY_DIR}/src) FILE(GLOB_RECURSE SRC_TEST ${CLAR_PATH}/*/*.c ${CLAR_PATH}/*/*.h) SET(SRC_CLAR "main.c" "clar_libgit2.c" "clar_libgit2_trace.c" "clar_libgit2_timer.c" "clar.c") -- cgit v1.2.1 From dcf81cdbcc1b8be991433c53e6e1b12c94ef782b Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Wed, 13 Feb 2019 23:56:40 +0000 Subject: deprecation: optionally enable hard deprecation Add a CMake option to enable hard deprecation; the resultant library will _not_ include any deprecated functions. This may be useful for internal CI builds that create libraries that are not shared with end-users to ensure that we do not use deprecated bits internally. --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 73702ee1e..88eb9ec10 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,6 +64,7 @@ OPTION(USE_EXT_HTTP_PARSER "Use system HTTP_Parser if available" ON) OPTION(DEBUG_POOL "Enable debug pool allocator" OFF) OPTION(ENABLE_WERROR "Enable compilation with -Werror" OFF) OPTION(USE_BUNDLED_ZLIB "Use the bundled version of zlib" OFF) +OPTION(DEPRECATE_HARD "Do not include deprecated functions in the library" OFF) IF (UNIX AND NOT APPLE) OPTION(ENABLE_REPRODUCIBLE_BUILDS "Enable reproducible builds" OFF) @@ -105,6 +106,10 @@ SET(LIBGIT2_VERSION_STRING "${LIBGIT2_VERSION_MAJOR}.${LIBGIT2_VERSION_MINOR}.${ FILE(STRINGS "${libgit2_SOURCE_DIR}/include/git2/version.h" GIT2_HEADER_SOVERSION REGEX "^#define LIBGIT2_SOVERSION [0-9]+$") STRING(REGEX REPLACE "^.*LIBGIT2_SOVERSION ([0-9]+)$" "\\1" LIBGIT2_SOVERSION "${GIT2_HEADER_SOVERSION}") +IF (DEPRECATE_HARD) + ADD_DEFINITIONS(-DGIT_DEPRECATE_HARD) +ENDIF() + # Platform specific compilation flags IF (MSVC) IF (STDCALL) -- cgit v1.2.1 From 3f823c2bd852f7ec1d1d0bc7f172626cb7645556 Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Thu, 14 Feb 2019 00:00:06 +0000 Subject: ci: enable hard deprecation Enable hard deprecation in our builds to ensure that we do not call deprecated functions internally. --- azure-pipelines.yml | 18 +++++++++--------- azure-pipelines/nightly.yml | 26 +++++++++++++------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index bd14dac8d..a37319adf 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -16,7 +16,7 @@ jobs: imageName: 'libgit2/trusty-amd64:latest' environmentVariables: | CC=gcc - CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL + CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON LEAK_CHECK=valgrind - job: linux_amd64_trusty_gcc_mbedtls @@ -29,7 +29,7 @@ jobs: imageName: 'libgit2/trusty-amd64:latest' environmentVariables: | CC=gcc - CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS + CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS -DDEPRECATE_HARD=ON LEAK_CHECK=valgrind - job: linux_amd64_trusty_clang_openssl @@ -42,7 +42,7 @@ jobs: imageName: 'libgit2/trusty-amd64:latest' environmentVariables: | CC=clang - CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL + CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON LEAK_CHECK=valgrind - job: linux_amd64_trusty_clang_mbedtls @@ -55,7 +55,7 @@ jobs: imageName: 'libgit2/trusty-amd64:latest' environmentVariables: | CC=clang - CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS + CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS -DDEPRECATE_HARD=ON LEAK_CHECK=valgrind - job: macos @@ -71,7 +71,7 @@ jobs: TMPDIR: $(Agent.TempDirectory) PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig LEAK_CHECK: leaks - CMAKE_OPTIONS: -G Ninja + CMAKE_OPTIONS: -G Ninja -DDEPRECATE_HARD=ON SKIP_SSH_TESTS: true - job: windows_vs_amd64 @@ -81,7 +81,7 @@ jobs: - template: azure-pipelines/powershell.yml parameters: environmentVariables: - CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013 Win64" + CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013 Win64" -DDEPRECATE_HARD=ON - job: windows_vs_x86 displayName: 'Windows (x86; Visual Studio)' @@ -90,7 +90,7 @@ jobs: - template: azure-pipelines/powershell.yml parameters: environmentVariables: - CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013" + CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013" -DDEPRECATE_HARD=ON - job: windows_mingw_amd64 displayName: 'Windows (amd64; MinGW)' @@ -104,7 +104,7 @@ jobs: - template: azure-pipelines/powershell.yml parameters: environmentVariables: - CMAKE_OPTIONS: -G"MinGW Makefiles" + CMAKE_OPTIONS: -G"MinGW Makefiles" -DDEPRECATE_HARD=ON PATH: $(Agent.TempDirectory)\mingw64\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin - job: windows_mingw_x86 @@ -120,7 +120,7 @@ jobs: - template: azure-pipelines/powershell.yml parameters: environmentVariables: - CMAKE_OPTIONS: -G"MinGW Makefiles" + CMAKE_OPTIONS: -G"MinGW Makefiles" -DDEPRECATE_HARD=ON PATH: $(Agent.TempDirectory)\mingw32\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin - job: documentation diff --git a/azure-pipelines/nightly.yml b/azure-pipelines/nightly.yml index 9f2430e5f..fd76b97a8 100644 --- a/azure-pipelines/nightly.yml +++ b/azure-pipelines/nightly.yml @@ -12,7 +12,7 @@ jobs: imageName: 'libgit2/trusty-amd64:latest' environmentVariables: | CC=gcc - CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL + CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON LEAK_CHECK=valgrind RUN_INVASIVE_TESTS=true @@ -26,7 +26,7 @@ jobs: imageName: 'libgit2/trusty-amd64:latest' environmentVariables: | CC=gcc - CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS + CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS -DDEPRECATE_HARD=ON LEAK_CHECK=valgrind RUN_INVASIVE_TESTS=true @@ -40,7 +40,7 @@ jobs: imageName: 'libgit2/trusty-amd64:latest' environmentVariables: | CC=clang - CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL + CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON LEAK_CHECK=valgrind RUN_INVASIVE_TESTS=true @@ -54,7 +54,7 @@ jobs: imageName: 'libgit2/trusty-amd64:latest' environmentVariables: | CC=clang - CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS + CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DSHA1_BACKEND=mbedTLS -DDEPRECATE_HARD=ON LEAK_CHECK=valgrind RUN_INVASIVE_TESTS=true @@ -71,7 +71,7 @@ jobs: TMPDIR: $(Agent.TempDirectory) PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig LEAK_CHECK: leaks - CMAKE_OPTIONS: -G Ninja + CMAKE_OPTIONS: -G Ninja -DDEPRECATE_HARD=ON RUN_INVASIVE_TESTS: true SKIP_SSH_TESTS: true @@ -82,7 +82,7 @@ jobs: - template: powershell.yml parameters: environmentVariables: - CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013 Win64" + CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013 Win64" -DDEPRECATE_HARD=ON RUN_INVASIVE_TESTS: true - job: windows_vs_x86 @@ -92,7 +92,7 @@ jobs: - template: powershell.yml parameters: environmentVariables: - CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013" + CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -G"Visual Studio 12 2013" -DDEPRECATE_HARD=ON RUN_INVASIVE_TESTS: true - job: windows_mingw_amd64 @@ -107,7 +107,7 @@ jobs: - template: powershell.yml parameters: environmentVariables: - CMAKE_OPTIONS: -G"MinGW Makefiles" + CMAKE_OPTIONS: -G"MinGW Makefiles" -DDEPRECATE_HARD=ON PATH: $(Agent.TempDirectory)\mingw64\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin RUN_INVASIVE_TESTS: true @@ -124,7 +124,7 @@ jobs: - template: powershell.yml parameters: environmentVariables: - CMAKE_OPTIONS: -G"MinGW Makefiles" + CMAKE_OPTIONS: -G"MinGW Makefiles" -DDEPRECATE_HARD=ON PATH: $(Agent.TempDirectory)\mingw32\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\CMake\bin RUN_INVASIVE_TESTS: true @@ -139,7 +139,7 @@ jobs: imageName: 'libgit2/bionic-x86:latest' environmentVariables: | CC=gcc - CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL + CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON LEAK_CHECK=valgrind RUN_INVASIVE_TESTS=true @@ -154,7 +154,7 @@ jobs: imageName: 'libgit2/bionic-x86:latest' environmentVariables: | CC=clang - CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL + CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON LEAK_CHECK=valgrind RUN_INVASIVE_TESTS=true @@ -169,7 +169,7 @@ jobs: imageName: 'libgit2/bionic-arm32:latest' environmentVariables: | CC=gcc - CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL + CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON RUN_INVASIVE_TESTS=true SKIP_PROXY_TESTS=true @@ -184,6 +184,6 @@ jobs: imageName: 'libgit2/bionic-arm64:latest' environmentVariables: | CC=gcc - CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL + CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON RUN_INVASIVE_TESTS=true SKIP_PROXY_TESTS=true -- cgit v1.2.1