Skip to content

Commit 7ca0fa4

Browse files
Merge branch 'master' into prebuild
2 parents 7d52f66 + f4bd7c2 commit 7ca0fa4

2,178 files changed

Lines changed: 152011 additions & 74985 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/FUNDING.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# These are supported funding model platforms
2+
3+
github: [aleks-f]
4+
patreon: # Replace with a single Patreon username
5+
open_collective: # Replace with a single Open Collective username
6+
ko_fi: # Replace with a single Ko-fi username
7+
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9+
liberapay: # Replace with a single Liberapay username
10+
issuehunt: # Replace with a single IssueHunt username
11+
otechie: # Replace with a single Otechie username
12+
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13+
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
name: Bug report
3+
about: Create a report to help us improve
4+
title: ''
5+
labels: 'bug'
6+
assignees: ''
7+
8+
---
9+
10+
**Describe the bug**
11+
A clear and concise description of what the bug is.
12+
13+
**To Reproduce**
14+
Steps to reproduce the behavior. If feasible, please provide a [SSCCE](http://www.sscce.org/) - usually, it will make the process much easier and faster.
15+
16+
**Expected behavior**
17+
A clear and concise description of what you expected to happen.
18+
19+
**Logs**
20+
If applicable, add logs to help explain your problem.
21+
22+
**Screenshots**
23+
If applicable, add screenshots to help explain your problem.
24+
25+
**Please add relevant environment information:**
26+
- OS Type and Version
27+
- POCO Version
28+
- Third-party product (eg. database or library) type and version
29+
30+
**Additional context**
31+
Add any other context about the problem here.

.github/ISSUE_TEMPLATE/custom.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
name: Something else
3+
about: An issue that is neither a bug report, nor a feature request.
4+
title: ''
5+
labels: ''
6+
assignees: ''
7+
8+
---
9+
10+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: Feature request
3+
about: Suggest an idea for this project
4+
title: ''
5+
labels: 'feature'
6+
assignees: ''
7+
8+
---
9+
10+
**Is your feature request related to a problem? Please describe.**
11+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12+
13+
**Describe the solution you'd like**
14+
A clear and concise description of what you want to happen.
15+
16+
**Describe alternatives you've considered**
17+
A clear and concise description of any alternative solutions or features you've considered.
18+
19+
**Additional context**
20+
Add any other context or screenshots about the feature request here.

.github/workflows/ci.yml

Lines changed: 110 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,65 @@
11
name: poco-ci
2-
on: [push]
2+
on: [push, pull_request]
33
jobs:
44
linux-gcc-make:
55
runs-on: ubuntu-20.04
6+
services:
7+
mysql:
8+
image: mysql:latest
9+
env:
10+
MYSQL_ALLOW_EMPTY_PASSWORD: yes
11+
MYSQL_USER: pocotest
12+
MYSQL_PASSWORD: pocotest
13+
MYSQL_DATABASE: pocotest
14+
ports:
15+
- 3306:3306
616
steps:
717
- uses: actions/checkout@v2
8-
- run: sudo apt update && sudo apt install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
18+
- run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev redis-server libmysqlclient-dev
919
- run: ./configure --everything --omit=PDF && make all -s -j4 && sudo make install
1020
- run: >-
1121
sudo -s
12-
EXCLUDE_TESTS="Data/MySQL Data/ODBC Data/PostgreSQL MongoDB"
22+
EXCLUDE_TESTS="Data/ODBC Data/PostgreSQL MongoDB"
23+
./ci/runtests.sh
24+
25+
linux-gcc-make-cxx20:
26+
runs-on: ubuntu-22.04
27+
steps:
28+
- uses: actions/checkout@v2
29+
- run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev redis-server libmysqlclient-dev
30+
- run: ./configure --config=Linux-c++20 --everything --omit=PDF && make all -s -j4 && sudo make install
31+
- run: >-
32+
sudo -s
33+
EXCLUDE_TESTS="Data/ODBC Data/MySQL Data/PostgreSQL MongoDB"
1334
./ci/runtests.sh
1435
1536
linux-gcc-make-asan:
1637
runs-on: ubuntu-20.04
38+
services:
39+
mysql:
40+
image: mysql:latest
41+
env:
42+
MYSQL_ALLOW_EMPTY_PASSWORD: yes
43+
MYSQL_USER: pocotest
44+
MYSQL_PASSWORD: pocotest
45+
MYSQL_DATABASE: pocotest
46+
ports:
47+
- 3306:3306
1748
steps:
1849
- uses: actions/checkout@v2
19-
- run: sudo apt update && sudo apt install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
20-
- run: ./configure --everything --omit=PDF && make all -s -j4 SANITIZEFLAGS=-fsanitize=address && sudo make install
50+
- run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
51+
- run: ./configure --everything --no-samples --omit=PDF && make all -s -j4 SANITIZEFLAGS=-fsanitize=address && sudo make install
52+
- run: >-
53+
sudo -s
54+
EXCLUDE_TESTS="Data/ODBC Data/PostgreSQL MongoDB"
55+
./ci/runtests.sh
56+
57+
linux-gcc-make-asan-no-soo:
58+
runs-on: ubuntu-20.04
59+
steps:
60+
- uses: actions/checkout@v2
61+
- run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
62+
- run: ./configure --everything --no-samples --omit=PDF --no-soo && make all -s -j4 SANITIZEFLAGS=-fsanitize=address && sudo make install
2163
- run: >-
2264
sudo -s
2365
EXCLUDE_TESTS="Data/MySQL Data/ODBC Data/PostgreSQL MongoDB"
@@ -27,18 +69,28 @@ jobs:
2769
runs-on: ubuntu-20.04
2870
steps:
2971
- uses: actions/checkout@v2
30-
- run: sudo apt update && sudo apt install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
31-
- run: ./configure --everything --omit=PDF && make all -s -j4 SANITIZEFLAGS=-fsanitize=undefined && sudo make install
72+
- run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
73+
- run: ./configure --everything --no-samples --omit=PDF && make all -s -j4 SANITIZEFLAGS=-fsanitize=undefined && sudo make install
3274
- run: >-
3375
sudo -s
3476
EXCLUDE_TESTS="Data/MySQL Data/ODBC Data/PostgreSQL MongoDB"
3577
./ci/runtests.sh
3678
79+
linux-gcc-make-tsan:
80+
runs-on: ubuntu-20.04
81+
steps:
82+
- uses: actions/checkout@v2
83+
- run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev libmysqlclient-dev redis-server
84+
- run: ./configure --everything --no-samples --omit=CppParser,Encodings,Data/MySQL,Data/ODBC,Data/PostgreSQL,MongoDB,PageCompiler,PDF,PocoDoc,ProGen,Redis,SevenZip && make all -s -j4 SANITIZEFLAGS=-fsanitize=thread && sudo make install
85+
- run: >-
86+
sudo -s
87+
./ci/runtests.sh TSAN
88+
3789
linux-gcc-cmake:
3890
runs-on: ubuntu-20.04
3991
steps:
4092
- uses: actions/checkout@v2
41-
- run: sudo apt update && sudo apt install cmake ninja-build libssl-dev unixodbc-dev libmysqlclient-dev redis-server
93+
- run: sudo apt -y update && sudo apt -y install cmake ninja-build libssl-dev unixodbc-dev libmysqlclient-dev redis-server
4294
- run: cmake -H. -Bcmake-build -GNinja -DENABLE_PDF=OFF -DENABLE_TESTS=ON && cmake --build cmake-build --target all
4395
- run: >-
4496
cd cmake-build &&
@@ -51,14 +103,14 @@ jobs:
51103
steps:
52104
- uses: actions/checkout@v2
53105
- run: >-
54-
sudo apt-get update &&
55-
sudo apt-get install crossbuild-essential-armhf
106+
sudo apt-get -y update &&
107+
sudo apt-get -y install crossbuild-essential-armhf
56108
- run: >-
57109
./configure --config=ARM-Linux --everything --omit=PDF,Crypto,NetSSL_OpenSSL,JWT,Data/MySQL,Data/ODBC,Data/PostgreSQL,PageCompiler,PageCompiler/File2Page &&
58110
make all -s -j4 ARCHFLAGS="-mcpu=cortex-a8 -mfloat-abi=hard -mfpu=neon" TOOL=arm-linux-gnueabihf
59111
60112
macos-clang-make:
61-
runs-on: macos-10.15
113+
runs-on: macos-11
62114
steps:
63115
- uses: actions/checkout@v2
64116
- run: brew install openssl@1.1 mysql-client unixodbc libpq
@@ -70,7 +122,7 @@ jobs:
70122
./ci/runtests.sh
71123
72124
macos-clang-cmake:
73-
runs-on: macos-10.15
125+
runs-on: macos-11
74126
steps:
75127
- uses: actions/checkout@v2
76128
- run: brew install openssl@1.1 mysql-client unixodbc libpq
@@ -83,7 +135,7 @@ jobs:
83135
ctest --output-on-failure -E "(DataMySQL)|(DataODBC)|(PostgreSQL)|(MongoDB)|(Redis)"
84136
85137
macos-clang-cmake-openssl3:
86-
runs-on: macos-10.15
138+
runs-on: macos-11
87139
steps:
88140
- uses: actions/checkout@v2
89141
- run: brew install openssl@3 mysql-client unixodbc libpq
@@ -106,6 +158,38 @@ jobs:
106158
- run: >-
107159
cd cmake-build;
108160
ctest --output-on-failure -E "(DataMySQL)|(DataODBC)|(Redis)|(MongoDB)" -C Release
161+
162+
windows-2019-msvc-buildwin-x64:
163+
runs-on: windows-2019
164+
env:
165+
CPPUNIT_IGNORE: class CppUnit::TestCaller<class PathTest>.testFind,class CppUnit::TestCaller<class ICMPSocketTest>.testSendToReceiveFrom,class CppUnit::TestCaller<class ICMPClientTest>.testPing,class CppUnit::TestCaller<class ICMPClientTest>.testBigPing,class CppUnit::TestCaller<class ICMPSocketTest>.testMTU,class CppUnit::TestCaller<class HTTPSClientSessionTest>.testProxy,class CppUnit::TestCaller<class HTTPSStreamFactoryTest>.testProxy
166+
steps:
167+
- uses: actions/checkout@v2
168+
- run: .\buildwin.ps1 -poco_base . -vs 160 -action build -linkmode all -config release -platform x64 -samples -tests -omit "Crypto,NetSSL_OpenSSL,Data/MySQL,Data/PostgreSQL,JWT"
169+
170+
# windows-2019-msvc-buildwin-win32:
171+
# runs-on: windows-2019
172+
# env:
173+
# CPPUNIT_IGNORE: class CppUnit::TestCaller<class PathTest>.testFind,class CppUnit::TestCaller<class ICMPSocketTest>.testSendToReceiveFrom,class CppUnit::TestCaller<class ICMPClientTest>.testPing,class CppUnit::TestCaller<class ICMPClientTest>.testBigPing,class CppUnit::TestCaller<class ICMPSocketTest>.testMTU,class CppUnit::TestCaller<class HTTPSClientSessionTest>.testProxy,class CppUnit::TestCaller<class HTTPSStreamFactoryTest>.testProxy
174+
# steps:
175+
# - uses: actions/checkout@v2
176+
# - run: .\buildwin.ps1 -poco_base . -vs 160 -action build -linkmode all -config release -platform Win32 -samples -tests -omit "Crypto,NetSSL_OpenSSL,Data/MySQL,Data/PostgreSQL,JWT"
177+
178+
windows-2022-msvc-buildwin-x64:
179+
runs-on: windows-2022
180+
env:
181+
CPPUNIT_IGNORE: class CppUnit::TestCaller<class PathTest>.testFind,class CppUnit::TestCaller<class ICMPSocketTest>.testSendToReceiveFrom,class CppUnit::TestCaller<class ICMPClientTest>.testPing,class CppUnit::TestCaller<class ICMPClientTest>.testBigPing,class CppUnit::TestCaller<class ICMPSocketTest>.testMTU,class CppUnit::TestCaller<class HTTPSClientSessionTest>.testProxy,class CppUnit::TestCaller<class HTTPSStreamFactoryTest>.testProxy
182+
steps:
183+
- uses: actions/checkout@v2
184+
- run: .\buildwin.ps1 -poco_base . -vs 170 -action build -linkmode all -config release -platform x64 -samples -tests -omit "Crypto,NetSSL_OpenSSL,Data/MySQL,Data/PostgreSQL,JWT"
185+
186+
# windows-2022-msvc-buildwin-win32:
187+
# runs-on: windows-2022
188+
# env:
189+
# CPPUNIT_IGNORE: class CppUnit::TestCaller<class PathTest>.testFind,class CppUnit::TestCaller<class ICMPSocketTest>.testSendToReceiveFrom,class CppUnit::TestCaller<class ICMPClientTest>.testPing,class CppUnit::TestCaller<class ICMPClientTest>.testBigPing,class CppUnit::TestCaller<class ICMPSocketTest>.testMTU,class CppUnit::TestCaller<class HTTPSClientSessionTest>.testProxy,class CppUnit::TestCaller<class HTTPSStreamFactoryTest>.testProxy
190+
# steps:
191+
# - uses: actions/checkout@v2
192+
# - run: .\buildwin.ps1 -poco_base . -vs 170 -action build -linkmode all -config release -platform Win32 -samples -tests -omit "Crypto,NetSSL_OpenSSL,Data/MySQL,Data/PostgreSQL,JWT"
109193

110194
windows-2022-msvc-cmake-2022:
111195
runs-on: windows-2022
@@ -118,3 +202,16 @@ jobs:
118202
- run: >-
119203
cd cmake-build;
120204
ctest --output-on-failure -E "(DataMySQL)|(DataODBC)|(Redis)|(MongoDB)" -C Release
205+
206+
# missing asan dll path
207+
# windows-2022-msvc-cmake-2022-asan:
208+
# runs-on: windows-2022
209+
# env:
210+
# CPPUNIT_IGNORE: class CppUnit::TestCaller<class PathTest>.testFind,class CppUnit::TestCaller<class ICMPSocketTest>.testSendToReceiveFrom,class CppUnit::TestCaller<class ICMPClientTest>.testPing,class CppUnit::TestCaller<class ICMPClientTest>.testBigPing,class CppUnit::TestCaller<class ICMPSocketTest>.testMTU,class CppUnit::TestCaller<class HTTPSClientSessionTest>.testProxy,class CppUnit::TestCaller<class HTTPSStreamFactoryTest>.testProxy
211+
# steps:
212+
# - uses: actions/checkout@v2
213+
# - run: cmake -S. -Bcmake-build -DPOCO_SANITIZE_ASAN=ON -DENABLE_NETSSL_WIN=ON -DENABLE_NETSSL=OFF -DENABLE_CRYPTO=OFF -DENABLE_JWT=OFF -DENABLE_DATA=ON -DENABLE_DATA_ODBC=ON -DENABLE_DATA_MYSQL=OFF -DENABLE_DATA_POSTGRESQL=OFF -DENABLE_TESTS=ON
214+
# - run: cmake --build cmake-build --config Debug
215+
# - run: >-
216+
# cd cmake-build;
217+
# ctest --output-on-failure -E "(DataMySQL)|(DataODBC)|(Redis)|(MongoDB)" -C Debug
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
name: Publish Release
2+
on:
3+
workflow_dispatch:
4+
inputs:
5+
channel:
6+
description: 'Release Channel'
7+
required: true
8+
default: 'releases'
9+
type: choice
10+
options:
11+
- releases
12+
- releases-staging
13+
14+
jobs:
15+
mkdoc:
16+
runs-on: ubuntu-latest
17+
steps:
18+
-
19+
name: Checkout
20+
uses: actions/checkout@v2
21+
-
22+
name: Install packages
23+
run: sudo apt -y update && sudo apt -y install libssl-dev unixodbc-dev redis-server libmysqlclient-dev libpq-dev
24+
-
25+
name: Install SSH key
26+
run: |
27+
mkdir -p ~/.ssh
28+
echo '${{ secrets.POCOPROJECT_ORG_SSH_HOST_KEY }}' >~/.ssh/known_hosts
29+
echo '${{ secrets.POCO_SSH_KEY }}' >~/.ssh/id_rsa
30+
chmod go-rwx ~/.ssh/id_rsa
31+
-
32+
name: Build documentation
33+
run: |
34+
export POCO_BASE=`pwd`
35+
export PATH=$POCO_BASE/release/script:$PATH
36+
export LD_LIBRARY_PATH=$POCO_BASE/stage/tools/lib/Linux/x86_64
37+
mkdoc all
38+
-
39+
name: Copy to web server
40+
run: |
41+
read VERSION <VERSION
42+
ssh poco@pocoproject.org mkdir -p staging/releases/poco-$VERSION
43+
scp releases/poco-*-doc.tar.gz releases/poco-*-doc.zip poco@pocoproject.org:staging/releases/poco-$VERSION
44+
45+
mkrelease_win:
46+
runs-on: ubuntu-latest
47+
steps:
48+
-
49+
name: Checkout
50+
uses: actions/checkout@v2
51+
-
52+
name: Install packages
53+
run: sudo apt-get update && sudo apt-get -y install dos2unix
54+
-
55+
name: Install SSH key
56+
run: |
57+
mkdir -p ~/.ssh
58+
echo '${{ secrets.POCOPROJECT_ORG_SSH_HOST_KEY }}' >~/.ssh/known_hosts
59+
echo '${{ secrets.POCO_SSH_KEY }}' >~/.ssh/id_rsa
60+
chmod go-rwx ~/.ssh/id_rsa
61+
-
62+
name: Build release package
63+
run: |
64+
export POCO_BASE=`pwd`
65+
export PATH=$POCO_BASE/release/script:$PATH
66+
mkrel -c unix2dos
67+
mkrel -c unix2dos all
68+
-
69+
name: Copy to web server
70+
run: |
71+
read VERSION <VERSION
72+
ssh poco@pocoproject.org mkdir -p staging/releases/poco-$VERSION
73+
scp releases/poco-*.zip poco@pocoproject.org:staging/releases/poco-$VERSION
74+
75+
mkrelease:
76+
runs-on: ubuntu-latest
77+
steps:
78+
-
79+
name: Checkout
80+
uses: actions/checkout@v2
81+
-
82+
name: Install SSH key
83+
run: |
84+
mkdir -p ~/.ssh
85+
echo '${{ secrets.POCOPROJECT_ORG_SSH_HOST_KEY }}' >~/.ssh/known_hosts
86+
echo '${{ secrets.POCO_SSH_KEY }}' >~/.ssh/id_rsa
87+
chmod go-rwx ~/.ssh/id_rsa
88+
-
89+
name: Build release package
90+
run: |
91+
export POCO_BASE=`pwd`
92+
export PATH=$POCO_BASE/release/script:$PATH
93+
mkrel
94+
mkrel all
95+
-
96+
name: Copy to web server
97+
run: |
98+
read VERSION <VERSION
99+
ssh poco@pocoproject.org mkdir -p staging/releases/poco-$VERSION
100+
scp releases/poco-*.tar.gz releases/poco-*.tar.bz2 poco@pocoproject.org:staging/releases/poco-$VERSION
101+
102+
sign_and_publish:
103+
runs-on: ubuntu-latest
104+
needs: ["mkdoc", "mkrelease_win", "mkrelease"]
105+
steps:
106+
-
107+
name: Checkout
108+
uses: actions/checkout@v2
109+
-
110+
name: Install SSH key
111+
run: |
112+
mkdir -p ~/.ssh
113+
echo '${{ secrets.POCOPROJECT_ORG_SSH_HOST_KEY }}' >~/.ssh/known_hosts
114+
echo '${{ secrets.POCO_SSH_KEY }}' >~/.ssh/id_rsa
115+
chmod go-rwx ~/.ssh/id_rsa
116+
-
117+
name: Sign and publish
118+
run: |
119+
read VERSION <VERSION
120+
ssh poco@pocoproject.org ./sign_and_publish.sh $VERSION ${{ inputs.channel }}

0 commit comments

Comments
 (0)