4 echo "# Generated file; do not edit!\n";
8 "Linux" => "ubuntu-20.04",
9 "Windows" => "windows-2019",
10 "macOS" => "macos-10.15",
11 "ubuntu-20.04" => "gnu",
12 "windows-2019" => "msvc",
13 "macos-10.15" => "clang",
34 "INSTALL_CC" => "gcc-10",
35 "INSTALL_CXX" => "g++-10",
42 "CXXFLAGS" => "-stdlib=libc++"
98 * @var bool $splat_map false = no splat map, null = default splat map, true = full splat map
100 function steps_setenv($splat_map = null) {
101 if ($splat_map !== false) {
102 foreach (MAP
as $os_is => $os_vers) {
103 foreach ($os_vers as $os_ver => $cc_vnds_) {
104 if (!$splat_map && DEF
[DEF
["os"]] != $os_ver) continue;
105 foreach ($cc_vnds_ as $cc_vnd_is => $cc_vnds) {
106 foreach ($cc_vnds as $cc_vnd => $cc_vers_) {
107 if (!$splat_map && DEF
[DEF
[DEF
["os"]]] != $cc_vnd) continue;
108 foreach ($cc_vers_ as $cc_ver_is => $cc_vers) {
109 foreach ($cc_vers as $cc_ver => $ver) {
110 if (!$splat_map && DEF
[DEF
[DEF
[DEF
["os"]]]]["ver"] != $cc_ver) continue;
112 - name
: Prepare
environment (<?
= "for $cc_ver $cc_vnd on $os_ver" ?
>)
113 if: (<?
="$os_is=='$os_ver') && ($cc_vnd_is=='$cc_vnd') && ($cc_ver_is=='$cc_ver'"?
>)
115 echo CC
="<?=DEF[$cc_vnd]["CC
"] . $ver?>" >> $
{GITHUB_ENV
}
116 echo CXX
="<?=DEF[$cc_vnd]["CXX
"] . $ver?>" >> $
{GITHUB_ENV
}
118 if (isset(ENV
[$os_ver][$cc_vnd][$cc_ver])) {
119 foreach (ENV
[$os_ver][$cc_vnd][$cc_ver] as $env => $val) {
121 echo <?
=$env?
>="<?=$val?>" >> $
{GITHUB_ENV
}
134 function steps_getdeps() {
136 - name
: Install
dependencies (Linux
)
137 if: runner
.os
== 'Linux'
139 sudo apt
-get install
-my \
145 $
{INSTALL_MEMCACHED
} \
146 $
{INSTALL_CC
} $
{INSTALL_CXX
}
147 sudo systemctl stop memcached ||
true
148 - name
: Install
dependencies (Mac
)
149 if: runner
.os
== 'macOS'
151 brew install bison flex sphinx
-doc $
{INSTALL_MEMCACHED
}
152 brew services stop memcached ||
true
153 echo MEMCACHED_BINARY
="/usr/local/bin/memcached" >> $
{GITHUB_ENV
}
154 - name
: Build memcached
160 ./configure CFLAGS
="-O2 -pipe" \
161 --prefix
=$
{MEMCACHED_PREFIX
} \
165 --disable
-dependency
-tracking \
168 --disable
-option
-checking \
173 echo MEMCACHED_BINARY
="${MEMCACHED_PREFIX}/bin/memcached" >> $
{GITHUB_ENV
}
178 function steps_build() {
180 - name
: Generate build
tree ($
{{ env
.CMAKE_BUILD_TYPE
}})
181 run
: cmake
-S
. -B build
182 - name
: Build all with $
{{ env
.CXX
}} $
{{ env
.CXXFLAGS
}}
183 run
: cmake
--build build
-j2
185 run
: cmake
--build build
-j2
--target test
187 run
: cmake
--build build
-j2
--target install
-- DESTDIR
=/tmp
188 - name
: Failed tests log
190 run
: cat build
/Testing
/Temporary
/LastTest
.log ||
true
194 function steps_package() {
198 PUSH_ARTIFACTS_ID
: $
{{ secrets
.PUSH_ARTIFACTS_ID
}}
199 if: env
.OS_VND
!='Windows' && env
.CC_VER
=='cur' && env
.CMAKE_BUILD_TYPE
=='Release'
201 cmake
-DENABLE_SASL
=ON
-DBUILD_DOCS_MANGZ
=ON
-S
. -B build
202 cmake
--build build
-j2
--target package
-- VERBOSE
=
203 cmake
-DCPACK_COMPONENT_INSTALL
=ON build
204 cmake
--build build
-j2
--target package
-- VERBOSE
=
205 cmake
--build build
-j2
--target push
-artifacts
-- VERBOSE
=
209 function steps_notify() {
211 - name
: Notify
Gitter (success
)
214 REF
=$
(basename $
{GITHUB_REF
})
215 curl
-sS
"${{ secrets.GITTER }}" \
216 --data
-urlencode
"level=info" \
217 --data
-urlencode
"message=Github [${GITHUB_REPOSITORY}](https://github.com/${GITHUB_REPOSITORY}/commits/${REF}) (${REF}) [success](https://github.com/m6w6/libmemcached/actions/runs/${GITHUB_RUN_ID}) (${ImageOS}/${CC:-${CC_VND}-${CC_VER}})"
218 - name
: Notify
Gitter (failure
)
221 REF
=$
(basename $
{GITHUB_REF
})
222 curl
-sS
"${{ secrets.GITTER }}" \
223 --data
-urlencode
"level=error" \
224 --data
-urlencode
"message=Github [${GITHUB_REPOSITORY}](https://github.com/${GITHUB_REPOSITORY}/commits/${REF}) (${REF}) [failure](https://github.com/m6w6/libmemcached/actions/runs/${GITHUB_RUN_ID}) (${ImageOS}/${CC:-${CC_VND}-${CC_VER}})"
228 function steps($splat_map = null) {
229 steps_setenv($splat_map);
236 function defaults($os_vnd = DEF
["os"]) {
237 $os_ver = DEF
[$os_vnd];
238 $cc_vnd = DEF
[$os_ver];
239 $cc_ver = DEF
[$cc_vnd]["ver"];
240 return "$os_ver, $cc_vnd, $cc_ver";
243 function env_override($os_vnd) {
245 OS_VND
: <?
=$os_vnd?
> #
246 OS_VER
: <?
=DEF
[$os_vnd]?
> #
247 CC_VND
: <?
=DEF
[DEF
[$os_vnd]]?
> #
248 CC_VER
: <?
=DEF
[DEF
[DEF
[$os_vnd]]]["ver"]?
> #
261 - ".github/workflows/cmake-build-ci*"
270 INSTALL_MEMCACHED
: memcached
272 ENABLE_HASH_HSIEH
: "ON"
274 OS_VND
: <?
=DEF
["os"]?
> #
275 OS_VER
: <?
=DEF
[DEF
["os"]]?
> #
276 CC_VND
: <?
=DEF
[DEF
[DEF
["os"]]]?
> #
277 CC_VER
: <?
=DEF
[DEF
[DEF
[DEF
["os"]]]]["ver"]?
> #
283 name
: dbg
-new (<?
=defaults()?
>)
284 runs
-on
: <?
=DEF
[DEF
["os"]]?
> #
286 CMAKE_BUILD_TYPE
: "Debug"
289 CFLAGS
: "-O0 --coverage"
290 CXXFLAGS
: "-O0 --coverage"
291 INSTALL_MEMCACHED
: ""
292 MEMCACHED_PREFIX
: "/tmp"
294 - uses
: actions
/checkout@v2
295 - uses
: actions
/checkout@v2
297 repository
: memcached
/memcached
301 - uses
: codecov
/codecov
-action@v1
.0
.13
305 name
: dbg
-san (<?
=defaults()?
>)
306 runs
-on
: <?
=DEF
[DEF
["os"]]?
> #
308 CMAKE_BUILD_TYPE
: "Debug"
311 ENABLE_SANITIZERS
: "address;undefined"
313 - uses
: actions
/checkout@v2
316 # thread sanitizer build
318 name
: dbg
-tsan (<?
=defaults()?
>)
319 runs
-on
: <?
=DEF
[DEF
["os"]]?
> #
321 CMAKE_BUILD_TYPE
: "Debug"
324 ENABLE_SANITIZERS
: "thread"
326 - uses
: actions
/checkout@v2
331 name
: dbg
-mac (<?
=DEF
["macOS"]?
>, <?
=DEF
[DEF
["macOS"]]?
>, <?
=DEF
[DEF
[DEF
["macOS"]]]["ver"]?
>)
332 runs
-on
: <?
=DEF
["macOS"]?
> #
334 CMAKE_BUILD_TYPE
: "Debug"
338 CFLAGS
: "-O0 --coverage"
339 CXXFLAGS
: "-O0 --coverage"
340 <?php
env_override("macOS")?
> #
341 continue-on
-error
: true
343 - uses
: actions
/checkout@v2
344 <?php
steps(false); ?
>
345 - uses
: codecov
/codecov
-action@v1
.0
.13
349 name
: rel
-mac (<?
=DEF
["macOS"]?
>, <?
=DEF
[DEF
["macOS"]]?
>, <?
=DEF
[DEF
[DEF
["macOS"]]]["ver"]?
>)
350 runs
-on
: <?
=DEF
["macOS"]?
> #
352 CMAKE_BUILD_TYPE
: "Release"
354 BUILD_DOCS_MANGZ
: "ON"
355 <?php
env_override("macOS")?
>
356 continue-on
-error
: true
358 - uses
: actions
/checkout@v2
359 <?php
steps(false); ?
>
363 name
: win
-msvc (<?
=DEF
["Windows"]?
>, <?
=DEF
[DEF
["Windows"]]?
>, <?
=DEF
[DEF
[DEF
["Windows"]]]["ver"]?
>)
364 runs
-on
: <?
=DEF
["Windows"]?
> #
366 CMAKE_BUILD_TYPE
: "Release"
368 BISON_ROOT
: "C:/msys64/usr"
369 FLEX_ROOT
: "C:/msys64/usr"
370 <?php
env_override("Windows")?
>
371 continue-on
-error
: true
376 - uses
: actions
/checkout@v2
377 - uses
: msys2
/setup
-msys2@v2
384 - name
: Generate build
tree ($
{{ env
.CMAKE_BUILD_TYPE
}})
385 run
: cmake
--config $
{{ env
.CMAKE_BUILD_TYPE
}} -S
. -B build
386 - name
: Build all with $
{{ env
.CC_VND
}}
387 run
: cmake
--build build
--config $
{{ env
.CMAKE_BUILD_TYPE
}}
389 run
: cmake
--install build
--prefix installed
--config $
{{ env
.CMAKE_BUILD_TYPE
}}
392 PUSH_ARTIFACTS_ID
: $
{{ secrets
.PUSH_ARTIFACTS_ID
}}
394 cmake
--build build
--config $
{{ env
.CMAKE_BUILD_TYPE
}} --target package
395 cmake
--build build
--config $
{{ env
.CMAKE_BUILD_TYPE
}} --target push
-artifacts
402 os_ver
: [ubuntu
-20.04, ubuntu
-18.04]
404 cc_ver
: [new, cur
, old
]
405 runs
-on
: $
{{ matrix
.os_ver
}}
406 continue-on
-error
: $
{{ matrix
.cc_vnd
== 'clang' }}
408 CMAKE_BUILD_TYPE
: "Release"
409 BUILD_DOCS_MANGZ
: "ON"
411 OS_VER
: $
{{ matrix
.os_ver
}}
412 CC_VND
: $
{{ matrix
.cc_vnd
}}
413 CC_VER
: $
{{ matrix
.cc_ver
}}
415 - uses
: actions
/checkout@v2
416 <?php
steps(true); ?
>