Squashed 'libs/libzmq/' content from commit 2b2fb9c7

git-subtree-dir: libs/libzmq
git-subtree-split: 2b2fb9c7082dbc16c1323b97040a4edcfa2b997b
This commit is contained in:
Henry Winkel
2022-10-22 14:31:55 +02:00
commit e988fee167
1118 changed files with 149390 additions and 0 deletions

48
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,48 @@
# Pull Request Notice
Before sending a pull request make sure each commit solves one clear, minimal,
plausible problem. Further each commit should have the following format:
```
Problem: X is broken
Solution: do Y and Z to fix X
```
Please try to have the code changes conform to our coding style. For your
convenience, you can install clang-format (at least version 5.0) and then
run ```make clang-format-check```. Don't fix existing issues, if any - just
make sure your changes are compliant. ```make clang-format-diff``` will
automatically apply the required changes.
To set a specific clang-format binary with autotools, you can for example
run: ```./configure CLANG_FORMAT=clang-format-5.0```
Please avoid sending a pull request with recursive merge nodes, as they
are impossible to fix once merged. Please rebase your branch on
zeromq/libzmq master instead of merging it.
```
git remote add upstream git@github.com:zeromq/libzmq.git
git fetch upstream
git rebase upstream/master
git push -f
```
In case you already merged instead of rebasing you can drop the merge commit.
```
git rebase -i HEAD~10
```
Now, find your merge commit and mark it as drop and save. Finally rebase!
If you are a new contributor please have a look at our contributing guidelines:
[CONTRIBUTING](http://zeromq.org/docs:contributing)
# FIRST TIME CONTRIBUTORS PLEASE NOTE
Please add an additional commit with a relicensing grant.
[Example](https://github.com/zeromq/libzmq/commit/fecbd42dbe45455fff3b6456350ceca047b82050)
[More information on RELICENSING effort](https://github.com/zeromq/libzmq/tree/master/RELICENSE/README.md)

22
.github/issue_template.md vendored Normal file
View File

@@ -0,0 +1,22 @@
*Please use this template for reporting suspected bugs or requests for help.*
# Issue description
# Environment
* libzmq version (commit hash if unreleased):
* OS:
# Minimal test code / Steps to reproduce the issue
1.
# What's the actual result? (include assertion message & call stack if applicable)
# What's the expected result?

19
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 365
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 56
# Issues with these labels will never be considered stale
exemptLabels:
- "Help Request"
- "Feature Request"
- "Problem reproduced"
- Critical
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
activity for 365 days. It will be closed if no further activity occurs within
56 days. Thank you for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

243
.github/workflows/CI.yaml vendored Normal file
View File

@@ -0,0 +1,243 @@
name: CI
on:
push:
pull_request:
schedule:
- cron: "0 9 * * 5"
jobs:
build:
if: github.event_name == 'pull_request' || github.event_name == 'push'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- platform: x64
configuration: release
os: windows-2019
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
CMAKE_GENERATOR: Visual Studio 16 2019
MSVCVERSION: v142
MSVCYEAR: vs2019
ARTIFACT_NAME: v142-x64
ENABLE_DRAFTS: ON
- platform: x64
configuration: Release
os: windows-2016
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
CMAKE_GENERATOR: "Visual Studio 15 2017 Win64"
MSVCVERSION: "v141"
MSVCYEAR: "vs2017"
ARTIFACT_NAME: v141-x64
ENABLE_DRAFTS: ON
- os: ubuntu-latest
BUILD_TYPE: default
PACKAGES: asciidoc xmlto
CURVE: tweetnacl
DRAFT: disabled
POLLER: select
- os: ubuntu-latest
BUILD_TYPE: default
CURVE: tweetnacl
DRAFT: disabled
POLLER: poll
- os: ubuntu-latest
BUILD_TYPE: android
CURVE: tweetnacl
DRAFT: disabled
- os: ubuntu-latest
BUILD_TYPE: coverage
PACKAGES: libkrb5-dev libnorm-dev libpgm-dev libgnutls28-dev lcov
CURVE: tweetnacl
DRAFT: enabled
GSSAPI: enabled
PGM: enabled
NORM: enabled
TIPC: enabled
TLS: enabled
VMCI: enabled
- os: ubuntu-latest
BUILD_TYPE: valgrind
PACKAGES: valgrind libgnutls28-dev
CURVE: tweetnacl
DRAFT: enabled
- os: ubuntu-latest
BUILD_TYPE: cmake
CURVE: libsodium
DRAFT: enabled
PACKAGES: cmake libsodium-dev
TLS: enabled
- os: ubuntu-latest
BUILD_TYPE: cmake
DRAFT: enabled
PACKAGES: cmake clang-format-11
DO_CLANG_FORMAT_CHECK: 1
- os: ubuntu-latest
BUILD_TYPE: default
PACKAGES: libkrb5-dev libnorm-dev libpgm-dev libgnutls28-dev libsodium-dev libnss3-dev libbsd-dev
CURVE: libsodium
ADDRESS_SANITIZER: enabled
DRAFT: enabled
- os: ubuntu-latest
BUILD_TYPE: default
PACKAGES: libkrb5-dev libnorm-dev libpgm-dev libgnutls28-dev libsodium-dev libnss3-dev libbsd-dev
CURVE: libsodium
GSSAPI: enabled
PGM: enabled
NORM: enabled
TIPC: enabled
IPv6: ON
TLS: enabled
USE_NSS: yes
VMCI: enabled
DRAFT: enabled
- os: ubuntu-latest
BUILD_TYPE: default
PACKAGES: libkrb5-dev libnorm-dev libpgm-dev libgnutls28-dev libsodium-dev libnss3-dev
CURVE: libsodium
GSSAPI: enabled
PGM: enabled
NORM: enabled
TIPC: enabled
IPv6: ON
TLS: enabled
USE_NSS: yes
VMCI: enabled
DRAFT: enabled
FORCE_98: enabled
CXX: clang++
- os: ubuntu-latest
BUILD_TYPE: abi-compliance-checker
PACKAGES: abi-dumper abi-compliance-checker
CURVE: tweetnacl
DRAFT: disabled
- os: ubuntu-latest
BUILD_TYPE: cmake
PACKAGES: clang-tidy clang-tools
CURVE: tweetnacl
DRAFT: enabled
CXX: clang++
- os: macos-latest
BUILD_TYPE: default
PACKAGES: automake autoconf
CURVE: tweetnacl
DRAFT: enabled
- os: macos-latest
BUILD_TYPE: default
PACKAGES: automake autoconf libsodium
CURVE: libsodium
DRAFT: disabled
env:
platform: ${{ matrix.platform }}
configuration: ${{ matrix.configuration }}
WITH_LIBSODIUM: ${{ matrix.WITH_LIBSODIUM }}
ENABLE_CURVE: ${{ matrix.ENABLE_CURVE }}
CMAKE_GENERATOR: ${{ matrix.CMAKE_GENERATOR }}
MSVCVERSION: ${{ matrix.MSVCVERSION }}
MSVCYEAR: ${{ matrix.MSVCYEAR }}
ARTIFACT_NAME: ${{ matrix.ARTIFACT_NAME }}
ENABLE_DRAFTS: ${{ matrix.ENABLE_DRAFTS }}
SODIUM_INCLUDE_DIR: ${{ github.workspace }}\libsodium\src\libsodium\include"
SODIUM_LIBRARY_DIR: ${{ github.workspace }}\libsodium\bin\${{ matrix.platform }}\${{ matrix.configuration }}\${{ matrix.MSVCVERSION }}\dynamic"
LIBZMQ_SRCDIR: ${{ github.workspace }}\libzmq
BUILD_TYPE: ${{ matrix.BUILD_TYPE }}
CURVE: ${{ matrix.CURVE }}
DRAFT: ${{ matrix.DRAFT }}
ADDRESS_SANITIZER: ${{ matrix.ADDRESS_SANITIZER }}
DO_CLANG_FORMAT_CHECK: ${{ matrix.DO_CLANG_FORMAT_CHECK }}
FORCE_98: ${{ matrix.FORCE_98 }}
CXX: ${{ matrix.CXX }}
GSSAPI: ${{ matrix.GSSAPI }}
PGM: ${{ matrix.PGM }}
NORM: ${{ matrix.NORM }}
TIPC: ${{ matrix.TIPC }}
IPv6: ${{ matrix.IPv6 }}
TLS: ${{ matrix.TLS }}
USE_NSS: ${{ matrix.USE_NSS }}
VMCI: ${{ matrix.VMCI }}
POLLER: ${{ matrix.POLLER }}
steps:
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
if: matrix.os == 'windows-2019'
- name: Add msbuild to PATH 2016
uses: microsoft/setup-msbuild@v1.0.2
with:
vs-version: '[15.0,16.0)'
if: matrix.os == 'windows-2016'
- uses: actions/checkout@v2
if: matrix.WITH_LIBSODIUM == 'ON'
with:
repository: jedisct1/libsodium
ref: stable
path: libsodium
- name: Compile libsodium
if: matrix.WITH_LIBSODIUM == 'ON' && (matrix.os == 'windows-2019' || matrix.os == 'windows-2016')
shell: cmd
working-directory: libsodium
run: msbuild /v:minimal /p:Configuration=%Configuration%DLL builds\msvc\%MSVCYEAR%\libsodium\libsodium.vcxproj
- name: Copy libsodium
if: matrix.WITH_LIBSODIUM == 'ON' && (matrix.os == 'windows-2019' || matrix.os == 'windows-2016')
shell: powershell
working-directory: libsodium
run: Copy-Item "bin\${env:Platform}\${env:Configuration}\${env:MSVCVERSION}\dynamic\libsodium.lib" -Destination "bin\${env:Platform}\${env:Configuration}\${env:MSVCVERSION}\dynamic\sodium.lib"
- uses: actions/checkout@v2
with:
path: libzmq
- run: md build_libzmq
shell: cmd
if: matrix.os == 'windows-2019' || matrix.os == 'windows-2016'
- name: build-win
if: matrix.os == 'windows-2019' || matrix.os == 'windows-2016'
shell: cmd
working-directory: build_libzmq
run: |
cmake -D CMAKE_INCLUDE_PATH="%SODIUM_INCLUDE_DIR%" -D CMAKE_LIBRARY_PATH="%SODIUM_LIBRARY_DIR%" -D WITH_LIBSODIUM="%WITH_LIBSODIUM%" -D ENABLE_DRAFTS="%ENABLE_DRAFTS%" -D ENABLE_ANALYSIS="%ENABLE_ANALYSIS%" -D ENABLE_CURVE="%ENABLE_CURVE%" -D API_POLLER="%API_POLLER%" -D POLLER="%POLLER%" %EXTRA_FLAGS% -D WITH_LIBSODIUM="%WITH_LIBSODIUM%" -D LIBZMQ_WERROR="%LIBZMQ_WERROR%" -G "%CMAKE_GENERATOR%" "%LIBZMQ_SRCDIR%"
cmake --build . --config %configuration% --target install -- -verbosity:Minimal -maxcpucount
- name: test
if: matrix.os == 'windows-2019' || matrix.os == 'windows-2016'
shell: cmd
working-directory: build_libzmq
run: ctest -C "%Configuration%"
- name: Add debian packages
if: matrix.os == 'ubuntu-latest' && (matrix.BUILD_TYPE != 'coverage' || github.repository == 'zeromq/libzmq')
uses: myci-actions/add-deb-repo@10
with:
repo-name: obs
repo: deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_20.04/ ./
keys-asc: https://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_20.04/Release.key
install: ${{ matrix.PACKAGES }}
- name: Add brew packages
if: matrix.os == 'macos-latest'
shell: bash
run: brew install ${{ matrix.PACKAGES }}
- name: build
if: (matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest') && (matrix.BUILD_TYPE != 'coverage' || github.repository == 'zeromq/libzmq')
shell: bash
working-directory: libzmq
run: ./ci_build.sh
- name: coveralls
if: matrix.BUILD_TYPE == 'coverage' && github.repository == 'zeromq/libzmq'
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: /home/runner/work/libzmq/libzmq/libzmq/lcov.info
cron:
runs-on: ubuntu-latest
if: github.event_name == 'schedule'
strategy:
fail-fast: false
env:
BUILD_TYPE: cmake
CXX: clang++
CLANG_TIDY: clang-tidy
steps:
- name: Add debian packages
run: apt-get install --yes clang-tidy clang-tools
- name: build
shell: bash
working-directory: libzmq
run: ./ci_build.sh

35
.github/workflows/Fuzzers.yaml vendored Normal file
View File

@@ -0,0 +1,35 @@
name: Fuzzers
on:
push:
branches:
- master
pull_request:
paths:
- '.github/workflows/Fuzzers.yaml'
- 'src/*'
- 'tests/*fuzzer.cpp'
jobs:
Fuzzing:
runs-on: ubuntu-latest
if: github.repository == 'zeromq/libzmq'
strategy:
matrix:
san: [address, memory, undefined]
steps:
- name: Build Fuzzers (${{ matrix.san }})
id: build
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
with:
sanitizer: ${{ matrix.san }}
oss-fuzz-project-name: 'libzmq'
allowed-broken-targets-percentage: 0
dry-run: false
- name: Run Fuzzers (${{ matrix.san }})
id: run
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
with:
sanitizer: ${{ matrix.san }}
oss-fuzz-project-name: 'libzmq'
allowed-broken-targets-percentage: 0
dry-run: false
fuzz-seconds: 300