mirror of
https://github.com/libgit2/libgit2.git
synced 2026-06-22 06:26:26 +00:00
OpenSSL doesn't initialize bytes on purpose in order to generate
additional entropy. Valgrind isn't too happy about that though, causing
it to generate warninings about various issues regarding use of
uninitialized bytes.
We traditionally had some infrastructure to silence these errors in our
OpenSSL stream implementation, where we invoke the Valgrind macro
`VALGRIND_MAKE_MEMDEFINED` in various callbacks that we provide to
OpenSSL. Naturally, we only include these instructions if a preprocessor
define "VALGRIND" is set, and that in turn is only set if passing
"-DVALGRIND" to CMake. We do that in our usual Azure pipelines, but we
in fact forgot to do this in our nightly build. As a result, we get a
slew of warnings for these nightly builds, but not for our normal
builds.
To fix this, we could just add "-DVALGRIND" to our nightly builds. But
starting with commit d827b11b6 (tests: execute leak checker via CTest
directly, 2019-06-28), we do have a secondary variable that directs
whether we want to use memory sanitizers for our builds. As such, every
user wishing to use Valgrind for our tests needs to pass both options
"VALGRIND" and "USE_LEAK_CHECKER", which is cumbersome and error prone,
as can be seen by our own builds.
Instead, let's consolidate this into a single option, removing the old
"-DVALGRIND" one. Instead, let's just add the preprocessor directive if
USE_LEAK_CHECKER equals "valgrind" and remove "-DVALGRIND" from our own
pipelines.
187 lines
6.2 KiB
YAML
187 lines
6.2 KiB
YAML
resources:
|
|
- repo: self
|
|
|
|
trigger:
|
|
- master
|
|
- maint/*
|
|
|
|
jobs:
|
|
- job: linux_amd64_xenial_gcc_openssl
|
|
displayName: 'Linux (amd64; Xenial; GCC; OpenSSL)'
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
steps:
|
|
- template: azure-pipelines/docker.yml
|
|
parameters:
|
|
docker:
|
|
image: xenial
|
|
base: ubuntu:xenial
|
|
environmentVariables: |
|
|
CC=gcc
|
|
CMAKE_GENERATOR=Ninja
|
|
CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL -DREGEX_BACKEND=builtin -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON
|
|
GITTEST_NEGOTIATE_PASSWORD=${{ variables.GITTEST_NEGOTIATE_PASSWORD }}
|
|
|
|
- job: linux_amd64_xenial_gcc_mbedtls
|
|
displayName: 'Linux (amd64; Xenial; GCC; mbedTLS)'
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
steps:
|
|
- template: azure-pipelines/docker.yml
|
|
parameters:
|
|
docker:
|
|
image: xenial
|
|
base: ubuntu:xenial
|
|
environmentVariables: |
|
|
CC=gcc
|
|
CMAKE_GENERATOR=Ninja
|
|
CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON
|
|
GITTEST_NEGOTIATE_PASSWORD=${{ variables.GITTEST_NEGOTIATE_PASSWORD }}
|
|
|
|
- job: linux_amd64_xenial_clang_openssl
|
|
displayName: 'Linux (amd64; Xenial; Clang; OpenSSL)'
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
steps:
|
|
- template: azure-pipelines/docker.yml
|
|
parameters:
|
|
docker:
|
|
image: xenial
|
|
base: ubuntu:xenial
|
|
environmentVariables: |
|
|
CC=clang
|
|
CMAKE_GENERATOR=Ninja
|
|
CMAKE_OPTIONS=-DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON
|
|
GITTEST_NEGOTIATE_PASSWORD=${{ variables.GITTEST_NEGOTIATE_PASSWORD }}
|
|
|
|
- job: linux_amd64_xenial_clang_mbedtls
|
|
displayName: 'Linux (amd64; Xenial; Clang; mbedTLS)'
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
steps:
|
|
- template: azure-pipelines/docker.yml
|
|
parameters:
|
|
docker:
|
|
image: xenial
|
|
base: ubuntu:xenial
|
|
environmentVariables: |
|
|
CC=clang
|
|
CMAKE_GENERATOR=Ninja
|
|
CMAKE_OPTIONS=-DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON
|
|
GITTEST_NEGOTIATE_PASSWORD=${{ variables.GITTEST_NEGOTIATE_PASSWORD }}
|
|
|
|
- job: macos
|
|
displayName: 'macOS'
|
|
pool:
|
|
vmImage: 'macOS 10.13'
|
|
steps:
|
|
- bash: . '$(Build.SourcesDirectory)/azure-pipelines/setup-osx.sh'
|
|
displayName: Setup
|
|
- template: azure-pipelines/bash.yml
|
|
parameters:
|
|
environmentVariables:
|
|
TMPDIR: $(Agent.TempDirectory)
|
|
PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
|
|
CMAKE_GENERATOR: Ninja
|
|
CMAKE_OPTIONS: -DREGEX_BACKEND=regcomp_l -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=leaks -DUSE_GSSAPI=ON
|
|
SKIP_SSH_TESTS: true
|
|
GITTEST_NEGOTIATE_PASSWORD: ${{ variables.GITTEST_NEGOTIATE_PASSWORD }}
|
|
|
|
- job: windows_vs_amd64
|
|
displayName: 'Windows (amd64; Visual Studio)'
|
|
pool: Hosted
|
|
steps:
|
|
- template: azure-pipelines/bash.yml
|
|
parameters:
|
|
environmentVariables:
|
|
CMAKE_GENERATOR: Visual Studio 12 2013 Win64
|
|
CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -DDEPRECATE_HARD=ON
|
|
SKIP_SSH_TESTS: true
|
|
SKIP_NEGOTIATE_TESTS: true
|
|
|
|
- job: windows_vs_x86
|
|
displayName: 'Windows (x86; Visual Studio)'
|
|
pool: Hosted
|
|
steps:
|
|
- template: azure-pipelines/bash.yml
|
|
parameters:
|
|
environmentVariables:
|
|
CMAKE_GENERATOR: Visual Studio 12 2013
|
|
CMAKE_OPTIONS: -DMSVC_CRTDBG=ON -DDEPRECATE_HARD=ON -DUSE_SHA1=HTTPS
|
|
SKIP_SSH_TESTS: true
|
|
SKIP_NEGOTIATE_TESTS: true
|
|
|
|
- job: windows_mingw_amd64
|
|
displayName: 'Windows (amd64; MinGW)'
|
|
pool: Hosted
|
|
steps:
|
|
- bash: . '$(Build.SourcesDirectory)\azure-pipelines\setup-mingw.sh'
|
|
displayName: Setup
|
|
env:
|
|
TEMP: $(Agent.TempDirectory)
|
|
ARCH: amd64
|
|
- template: azure-pipelines/bash.yml
|
|
parameters:
|
|
environmentVariables:
|
|
BUILD_PATH: $(Agent.TempDirectory)\mingw64\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\CMake\bin
|
|
CMAKE_GENERATOR: MinGW Makefiles
|
|
CMAKE_OPTIONS: -DDEPRECATE_HARD=ON
|
|
SKIP_SSH_TESTS: true
|
|
SKIP_NEGOTIATE_TESTS: true
|
|
|
|
- job: windows_mingw_x86
|
|
displayName: 'Windows (x86; MinGW)'
|
|
pool: Hosted
|
|
steps:
|
|
- bash: . '$(Build.SourcesDirectory)\azure-pipelines\setup-mingw.sh'
|
|
displayName: Setup
|
|
workingDirectory: '$(Build.BinariesDirectory)'
|
|
env:
|
|
TEMP: $(Agent.TempDirectory)
|
|
ARCH: x86
|
|
- template: azure-pipelines/bash.yml
|
|
parameters:
|
|
environmentVariables:
|
|
BUILD_PATH: $(Agent.TempDirectory)\mingw32\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\CMake\bin
|
|
CMAKE_GENERATOR: MinGW Makefiles
|
|
CMAKE_OPTIONS: -DDEPRECATE_HARD=ON
|
|
SKIP_SSH_TESTS: true
|
|
SKIP_NEGOTIATE_TESTS: true
|
|
|
|
- job: documentation
|
|
displayName: 'Generate Documentation'
|
|
pool:
|
|
vmImage: 'Ubuntu 16.04'
|
|
steps:
|
|
- script: |
|
|
cd $(Build.SourcesDirectory)/azure-pipelines/docker
|
|
docker build -t libgit2/docurium --build-arg BASE=ubuntu:trusty -f docurium .
|
|
displayName: 'Build Docker image'
|
|
- script: |
|
|
git config user.name 'Documentation Generation'
|
|
git config user.email 'libgit2@users.noreply.github.com'
|
|
git branch gh-pages origin/gh-pages
|
|
docker run --rm -v $(Build.SourcesDirectory):/home/libgit2/source -w /home/libgit2/source libgit2/docurium:latest cm doc api.docurium
|
|
git checkout gh-pages
|
|
cp -R * '$(Build.BinariesDirectory)'
|
|
displayName: 'Generate Documentation'
|
|
- task: archivefiles@2
|
|
displayName: 'Archive Documentation'
|
|
inputs:
|
|
rootFolderOrFile: '$(Build.BinariesDirectory)'
|
|
includeRootFolder: false
|
|
archiveFile: '$(Build.ArtifactStagingDirectory)/api-documentation.zip'
|
|
- task: publishbuildartifacts@1
|
|
displayName: 'Upload Documentation Artifact'
|
|
inputs:
|
|
pathToPublish: '$(Build.ArtifactStagingDirectory)'
|
|
artifactName: 'docs'
|
|
- script: |
|
|
git remote -v
|
|
echo 'machine github.com' > ~/.netrc
|
|
echo 'login $(GITHUB_USERNAME)' >> ~/.netrc
|
|
echo 'password $(GITHUB_PAT)' >> ~/.netrc
|
|
git push origin gh-pages
|
|
displayName: 'Publish Documentation'
|
|
condition: and(eq(variables['Build.Repository.Name'], 'libgit2/libgit2'), eq(variables['Build.Reason'], 'IndividualCI'))
|