Skip to content

Commit 046d4dd

Browse files
authored
Add modular library level build file. (#194)
* Add modular library level build file. * Make the library modular usable. * Add missing import-search for cconfig/predef checks. * Add requires-b2 check to top-level build file. * Remove extra import-search. * Remove extra require-b2. * Bump B2 require to 5.2 * Update copyright dates. * Move inter-lib dependencies to a project variable and into the build targets. * Adjust doc build to avoid boost-root references. * Update build deps. * Replace GHA CI with simpler working one based on alandefreitas/cpp-actions utilities. * GCC 4.8 is the minimum available. * Move project global include to target local include. * Only msvc gets minor version tests. * Redo GHA CI to undo move to cpp-actions. * Update os/containers to account for unavailable packages in old containers. * Tweaks per comments.
1 parent 2a56a3a commit 046d4dd

File tree

4 files changed

+120
-108
lines changed

4 files changed

+120
-108
lines changed

.github/workflows/ci.yml

Lines changed: 61 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- name: "gcc 4.7"
2121
buildtype: "boost"
2222
packages: "g++-4.7"
23-
os: "ubuntu-20.04"
23+
os: "ubuntu-latest"
2424
container: "ubuntu:16.04"
2525
llvm_os: ""
2626
llvm_ver: ""
@@ -29,7 +29,7 @@ jobs:
2929
cxxstd: "11"
3030
- name: "gcc 4.8"
3131
packages: "g++-4.8"
32-
os: "ubuntu-20.04"
32+
os: "ubuntu-latest"
3333
container: "ubuntu:16.04"
3434
llvm_os: ""
3535
llvm_ver: ""
@@ -38,7 +38,7 @@ jobs:
3838
cxxstd: "11"
3939
- name: "gcc 4.9"
4040
packages: "g++-4.9"
41-
os: "ubuntu-20.04"
41+
os: "ubuntu-latest"
4242
container: "ubuntu:16.04"
4343
llvm_os: ""
4444
llvm_ver: ""
@@ -47,7 +47,7 @@ jobs:
4747
cxxstd: "11"
4848
- name: "gcc 5"
4949
packages: "g++-5"
50-
os: "ubuntu-20.04"
50+
os: "ubuntu-latest"
5151
container: "ubuntu:16.04"
5252
llvm_os: ""
5353
llvm_ver: ""
@@ -56,52 +56,52 @@ jobs:
5656
cxxstd: "11,14,1z"
5757
- name: "gcc 6"
5858
packages: "g++-6"
59-
os: "ubuntu-20.04"
60-
container: "ubuntu:16.04"
59+
os: "ubuntu-latest"
60+
container: "ubuntu:18.04"
6161
llvm_os: ""
6262
llvm_ver: ""
6363
toolset: "gcc"
6464
compiler: "g++-6"
6565
cxxstd: "11,14,1z"
6666
- name: "gcc 7"
6767
packages: "g++-7"
68-
os: "ubuntu-20.04"
69-
container: ""
68+
os: "ubuntu-latest"
69+
container: "ubuntu:18.04"
7070
llvm_os: ""
7171
llvm_ver: ""
7272
toolset: "gcc"
7373
compiler: "g++-7"
7474
cxxstd: "11,14,1z,17"
7575
- name: "gcc 8"
7676
packages: "g++-8"
77-
os: "ubuntu-20.04"
78-
container: ""
77+
os: "ubuntu-latest"
78+
container: "ubuntu:18.04"
7979
llvm_os: ""
8080
llvm_ver: ""
8181
toolset: "gcc"
8282
compiler: "g++-8"
8383
cxxstd: "11,14,1z,17,2a"
8484
- name: "gcc 9"
8585
packages: "g++-9"
86-
os: "ubuntu-20.04"
87-
container: ""
86+
os: "ubuntu-latest"
87+
container: "ubuntu:20.04"
8888
llvm_os: ""
8989
llvm_ver: ""
9090
toolset: "gcc"
9191
compiler: "g++-9"
9292
cxxstd: "11,14,17,2a"
9393
- name: "gcc 10"
9494
packages: "g++-10"
95-
os: "ubuntu-20.04"
96-
container: ""
95+
os: "ubuntu-latest"
96+
container: "ubuntu:20.04"
9797
llvm_os: ""
9898
llvm_ver: ""
9999
toolset: "gcc"
100100
compiler: "g++-10"
101101
cxxstd: "11,14,17,20"
102102
- name: "clang 3.5"
103103
packages: "clang-3.5"
104-
os: "ubuntu-20.04"
104+
os: "ubuntu-latest"
105105
container: "ubuntu:16.04"
106106
llvm_os: "precise"
107107
llvm_ver: "3.5"
@@ -110,7 +110,7 @@ jobs:
110110
cxxstd: "11"
111111
- name: "clang 3.6"
112112
packages: "clang-3.6"
113-
os: "ubuntu-20.04"
113+
os: "ubuntu-latest"
114114
container: "ubuntu:16.04"
115115
llvm_os: "precise"
116116
llvm_ver: "3.6"
@@ -119,7 +119,7 @@ jobs:
119119
cxxstd: "11"
120120
- name: "clang 3.7"
121121
packages: "clang-3.7"
122-
os: "ubuntu-20.04"
122+
os: "ubuntu-latest"
123123
container: "ubuntu:16.04"
124124
llvm_os: "precise"
125125
llvm_ver: "3.7"
@@ -128,7 +128,7 @@ jobs:
128128
cxxstd: "11"
129129
- name: "clang 3.8"
130130
packages: "clang-3.8 libstdc++-4.9-dev"
131-
os: "ubuntu-20.04"
131+
os: "ubuntu-latest"
132132
container: "ubuntu:16.04"
133133
llvm_os: "precise"
134134
llvm_ver: "3.8"
@@ -137,7 +137,7 @@ jobs:
137137
cxxstd: "11,14"
138138
- name: "clang 3.9"
139139
packages: "clang-3.9 libstdc++-4.9-dev"
140-
os: "ubuntu-20.04"
140+
os: "ubuntu-latest"
141141
container: "ubuntu:16.04"
142142
llvm_os: "precise"
143143
llvm_ver: "3.9"
@@ -146,7 +146,7 @@ jobs:
146146
cxxstd: "11,14"
147147
- name: "clang 4.0"
148148
packages: "clang-4.0"
149-
os: "ubuntu-20.04"
149+
os: "ubuntu-latest"
150150
container: "ubuntu:16.04"
151151
llvm_os: "xenial"
152152
llvm_ver: "4.0"
@@ -155,7 +155,7 @@ jobs:
155155
cxxstd: "11,14"
156156
- name: "clang 5.0"
157157
packages: "clang-5.0"
158-
os: "ubuntu-20.04"
158+
os: "ubuntu-latest"
159159
container: "ubuntu:16.04"
160160
llvm_os: ""
161161
llvm_ver: ""
@@ -164,7 +164,7 @@ jobs:
164164
cxxstd: "11,14,1z,17"
165165
- name: "clang 6.0"
166166
packages: "clang-6.0"
167-
os: "ubuntu-20.04"
167+
os: "ubuntu-latest"
168168
container: "ubuntu:16.04"
169169
llvm_os: ""
170170
llvm_ver: ""
@@ -173,44 +173,44 @@ jobs:
173173
cxxstd: "11,14,1z,17,2a"
174174
- name: "clang 7"
175175
packages: "clang-7"
176-
os: "ubuntu-20.04"
177-
container: "ubuntu:16.04"
176+
os: "ubuntu-latest"
177+
container: "ubuntu:20.04"
178178
llvm_os: "xenial"
179179
llvm_ver: "7"
180180
toolset: "clang"
181181
compiler: "clang++-7"
182-
cxxstd: "11,14,1z,17,2a"
182+
cxxstd: "11,14,1z,17"
183183
- name: "clang 8"
184184
packages: "clang-8"
185-
os: "ubuntu-20.04"
186-
container: "ubuntu:16.04"
185+
os: "ubuntu-latest"
186+
container: "ubuntu:20.04"
187187
llvm_os: "xenial"
188188
llvm_ver: "8"
189189
toolset: "clang"
190190
compiler: "clang++-8"
191-
cxxstd: "11,14,17,2a"
191+
cxxstd: "11,14,17"
192192
- name: "clang 9"
193193
packages: "clang-9"
194-
os: "ubuntu-20.04"
195-
container: ""
194+
os: "ubuntu-latest"
195+
container: "ubuntu:20.04"
196196
llvm_os: "focal"
197197
llvm_ver: "9"
198198
toolset: "clang"
199199
compiler: "clang++-9"
200200
cxxstd: "11,14,17,2a"
201201
- name: "clang 10"
202202
packages: "clang-10"
203-
os: "ubuntu-20.04"
204-
container: ""
203+
os: "ubuntu-latest"
204+
container: "ubuntu:20.04"
205205
llvm_os: "focal"
206206
llvm_ver: "10"
207207
toolset: "clang"
208208
compiler: "clang++-10"
209209
cxxstd: "11,14,17,20"
210210
- name: "clang 11"
211211
packages: "clang-11"
212-
os: "ubuntu-20.04"
213-
container: ""
212+
os: "ubuntu-latest"
213+
container: "ubuntu:20.04"
214214
sources: ""
215215
llvm_os: "focal"
216216
llvm_ver: "11"
@@ -219,8 +219,8 @@ jobs:
219219
cxxstd: "11,14,17,20,latest"
220220
- name: "clang 12"
221221
packages: "clang-12"
222-
os: "ubuntu-20.04"
223-
container: ""
222+
os: "ubuntu-latest"
223+
container: "ubuntu:20.04"
224224
sources: ""
225225
llvm_os: "focal"
226226
llvm_ver: "12"
@@ -229,16 +229,29 @@ jobs:
229229
cxxstd: "11,14,17,20,latest"
230230

231231
runs-on: ${{ matrix.os }}
232-
container: ${{ matrix.container }}
232+
container:
233+
image: ${{matrix.container}}
234+
volumes:
235+
- /node20217:/node20217:rw,rshared
236+
- ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }}
233237

234238
steps:
235-
- name: Check if running in container
236-
if: matrix.container != ''
237-
run: echo "GHA_CONTAINER=${{ matrix.container }}" >> $GITHUB_ENV
238-
- name: If running in container, upgrade packages
239-
if: matrix.container != ''
239+
- name: Setup container environment
240+
if: matrix.container
240241
run: |
241-
apt-get -o Acquire::Retries=3 update && DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata && apt-get -o Acquire::Retries=3 install -y sudo software-properties-common wget apt-transport-https make apt-file sudo unzip libssl-dev build-essential g++ git
242+
apt-get update
243+
apt-get -y install sudo python3 git g++ curl xz-utils
244+
245+
- name: Install nodejs20glibc2.17
246+
if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }}
247+
run: |
248+
curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz
249+
tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
250+
ldd /__e/node20/bin/node
251+
252+
- name: Install packages
253+
if: matrix.packages
254+
run: sudo apt-get -y install ${{matrix.packages}}
242255

243256
- uses: actions/checkout@v2
244257

@@ -256,19 +269,6 @@ jobs:
256269
TRAVIS_OS_NAME: "linux"
257270
run: |
258271
set -e
259-
for i in {1..3}; do sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" && break || sleep 2; done
260-
if test -n "${LLVM_OS}" ; then
261-
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
262-
if test -n "${LLVM_VER}" ; then
263-
sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS}-${LLVM_VER} main"
264-
else
265-
# Snapshot (i.e. trunk) build of clang
266-
sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS} main"
267-
fi
268-
fi
269-
sudo -E apt-get -o Acquire::Retries=3 update
270-
sudo -E DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -y --no-install-suggests --no-install-recommends install ${PACKAGES}
271-
272272
export TRAVIS_BUILD_DIR=$(pwd)
273273
export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')}
274274
export VCS_COMMIT_ID=$GITHUB_SHA
@@ -297,10 +297,9 @@ jobs:
297297
fail-fast: false
298298
matrix:
299299
include:
300-
- name: "xcode 11.7"
301-
os: "macos-10.15"
300+
- name: "xcode"
301+
os: "macos-15"
302302
cxx: "clang++"
303-
xcode_version: 11.7
304303
toolset: "clang"
305304
compiler: "clang++"
306305
cxxstd: "11,14,17"
@@ -310,12 +309,6 @@ jobs:
310309
steps:
311310
- uses: actions/checkout@v2
312311

313-
- name: Set DEVELOPER_DIR
314-
if: matrix.xcode_version != ''
315-
run: echo "DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode_version }}.app/Contents/Developer" >> $GITHUB_ENV
316-
- name: Test DEVELOPER_DIR
317-
run: echo $DEVELOPER_DIR
318-
319312
- name: "osx"
320313
shell: bash
321314
env:
@@ -357,13 +350,12 @@ jobs:
357350
fail-fast: false
358351
matrix:
359352
include:
360-
- toolset: msvc-14.1
361-
cxxstd: "11,14,17"
362-
arch: 32
363-
os: windows-2016
364353
- toolset: msvc-14.2
365354
cxxstd: "11,14,17,latest"
366355
os: windows-2019
356+
- toolset: msvc-14.3
357+
cxxstd: "11,14,17,20,latest"
358+
os: windows-2022
367359

368360
runs-on: ${{matrix.os}}
369361

@@ -393,4 +385,3 @@ jobs:
393385
git submodule update --init libs/headers
394386
cmd /c bootstrap
395387
b2 libs\callable_traits\test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model="32,64" && b2 libs\callable_traits\example toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model="32,64"
396-

build.jam

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Copyright René Ferdinand Rivera Morell 2023-2024
2+
# Distributed under the Boost Software License, Version 1.0.
3+
# (See accompanying file LICENSE_1_0.txt or copy at
4+
# http://www.boost.org/LICENSE_1_0.txt)
5+
6+
require-b2 5.2 ;
7+
8+
project /boost/callable_traits
9+
;
10+
11+
explicit
12+
[ alias boost_callable_traits : : :
13+
: <include>include <library>$(boost_dependencies) ]
14+
[ alias all : boost_callable_traits example test ]
15+
;
16+
17+
call-if : boost-library callable_traits
18+
;
19+

0 commit comments

Comments
 (0)