Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add light runtime mode tests in CI #1038

Open
wants to merge 50 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
718951b
init
andarut Jul 9, 2024
5db00ea
temporaly disable buster build die to sury issue
andarut Jul 9, 2024
c42a920
update
andarut Jul 10, 2024
99b437f
focal+gcc-10 and buster+clang
andarut Jul 11, 2024
3ece261
Merge branch 'master' into andreylzmw/runtime_light_ci
andarut Jul 15, 2024
318cfda
resolve
andarut Jul 16, 2024
7aaf62d
init
andarut Jul 9, 2024
66c040f
temporaly disable buster build die to sury issue
andarut Jul 9, 2024
ddc5272
update
andarut Jul 10, 2024
78bee1f
focal+gcc-10 and buster+clang
andarut Jul 11, 2024
a931aa6
resolve
andarut Jul 16, 2024
ef02515
resolve
andarut Jul 16, 2024
5f9c6b6
continue
andarut Jul 16, 2024
1f6928c
continue
andarut Jul 16, 2024
6500be4
g++-10 option when compiling script
andarut Jul 16, 2024
ea216c2
update
andarut Jul 16, 2024
2bcaf27
test
andarut Jul 16, 2024
807e588
test2
andarut Jul 16, 2024
d5482a6
test
andarut Jul 16, 2024
cb09c76
test
andarut Jul 16, 2024
790db6e
fcoroutins flag only with gcc, not with clang
andarut Jul 17, 2024
b611b47
move to gcc-11 on focal
andarut Jul 17, 2024
f5a4edd
fix conditions
andarut Jul 17, 2024
8d194f1
fix conditions
andarut Jul 17, 2024
6c49565
try fix cache
andarut Jul 17, 2024
bf88ac2
light runtime fpic
andarut Jul 17, 2024
e8fd52f
cleanup
andarut Jul 17, 2024
1ec1a02
Merge branch 'andreylzmw/runtime_light_ci' of github.com:VKCOM/kphp i…
astrophysik Jul 17, 2024
32d1a24
format code
astrophysik Jul 17, 2024
92ccc80
remove less `-` in dry-run
astrophysik Jul 17, 2024
4675969
fix macos gh build
andarut Jul 17, 2024
937d928
remove -Wno-unused-result flag
andarut Jul 17, 2024
ee71a42
revering
andarut Jul 23, 2024
6245489
different flags for gcc and clang
andarut Jul 23, 2024
984ca27
size_t is unsigned type
andarut Jul 23, 2024
f0de71c
allow dangling reference so tl-parser-new.cpp can be compiled
andarut Jul 23, 2024
4f2cc92
fix
andarut Jul 23, 2024
83273c3
ignoring return value of write
andarut Jul 23, 2024
25ca5f2
size_t is unsigned type
andarut Jul 23, 2024
9ed7351
disable warning
andarut Jul 23, 2024
882f983
turn on focal g++-11
andarut Jul 23, 2024
2125a43
Merge remote-tracking branch 'origin/master' into andreylzmw/runtime_…
andarut Jul 23, 2024
5630c2b
fix with flag json_functions simple_encode_
andarut Jul 23, 2024
caa0b2b
add clang-format job
andarut Jul 23, 2024
3138ca6
remove clang-format to different PR
andarut Aug 28, 2024
7683a57
updater
andarut Aug 28, 2024
251a039
update
andarut Aug 28, 2024
9b4f525
Merge branch 'master' into andreylzmw/runtime_light_ci
andarut Aug 28, 2024
6cbbfc5
update
andarut Aug 29, 2024
b5f7182
test
andarut Aug 29, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 34 additions & 11 deletions .github/workflows/Build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,28 +18,44 @@ jobs:
strategy:
matrix:
include:
- os: buster
compiler: g++
cpp: 17
asan: off
ubsan: off
# - os: buster
# compiler: g++
# cpp: 17
# asan: off
# ubsan: off
# light_runtime: off
- os: focal
compiler: clang++
cpp: 17
asan: off
ubsan: on
light_runtime: off
- os: focal
compiler: g++-10
cpp: 20
asan: on
ubsan: off
light_runtime: off
- os: jammy
compiler: g++
cpp: 20
asan: on
ubsan: off

name: "${{matrix.os}}/${{matrix.compiler}}/c++${{matrix.cpp}}/asan=${{matrix.asan}}/ubsan=${{matrix.ubsan}}"
light_runtime: off
- os: focal
compiler: g++-11
cpp: 20
asan: off
ubsan: off
light_runtime: on
- os: focal
compiler: clang++-18
cpp: 20
asan: off
ubsan: off
light_runtime: on

name: "${{matrix.os}}/${{matrix.compiler}}/c++${{matrix.cpp}}/asan=${{matrix.asan}}/ubsan=${{matrix.ubsan}}/light_runtime=${{matrix.light_runtime}}"

steps:
- uses: actions/checkout@v3
Expand Down Expand Up @@ -81,39 +97,46 @@ jobs:

- name: Build all
run: docker exec kphp-build-container-${{matrix.os}} bash -c
"cmake -DCMAKE_CXX_COMPILER=${{matrix.compiler}} -DCMAKE_CXX_STANDARD=${{matrix.cpp}} -DADDRESS_SANITIZER=${{matrix.asan}} -DUNDEFINED_SANITIZER=${{matrix.ubsan}} -DPDO_DRIVER_MYSQL=ON -DPDO_DRIVER_PGSQL=ON -DPDO_LIBS_STATIC_LINKING=ON -S ${{env.kphp_root_dir}} -B ${{env.kphp_build_dir}} && make -C ${{env.kphp_build_dir}} -j$(nproc) all"
"cmake -DCMAKE_CXX_COMPILER=${{matrix.compiler}} -DCMAKE_CXX_STANDARD=${{matrix.cpp}} -DCOMPILE_RUNTIME_LIGHT=${{matrix.light_runtime}} -DADDRESS_SANITIZER=${{matrix.asan}} -DUNDEFINED_SANITIZER=${{matrix.ubsan}} -DPDO_DRIVER_MYSQL=ON -DPDO_DRIVER_PGSQL=ON -DPDO_LIBS_STATIC_LINKING=ON -S ${{env.kphp_root_dir}} -B ${{env.kphp_build_dir}} && make -C ${{env.kphp_build_dir}} -j$(nproc) all"

- name: Run unit tests
run: docker exec kphp-build-container-${{matrix.os}} bash -c
"make -C ${{env.kphp_build_dir}} -j$(nproc) test"

- name: Compile dummy PHP script
if: matrix.light_runtime == 'off'
run: docker exec kphp-build-container-${{matrix.os}} bash -c
"cd ${{env.kphp_build_dir}} && echo 'hello world' > demo.php && ${{env.kphp_root_dir}}/objs/bin/kphp2cpp --cxx ${{matrix.compiler}} demo.php && kphp_out/server -o --user kitten"

- name: Compile dummy PHP script
if: matrix.light_runtime == 'on'
run: docker exec kphp-build-container-${{matrix.os}} bash -c
"cd ${{env.kphp_build_dir}} && echo "${{matrix.light_runtime}}" && echo 'hello world' > demo.php && ${{env.kphp_root_dir}}/objs/bin/kphp2cpp --mode k2-component --cxx ${{matrix.compiler}} demo.php"

- name: Polyfills composer install
run: docker exec kphp-build-container-${{matrix.os}} bash -c
"composer install -d ${{env.kphp_polyfills_dir}}"

- name: Run python tests
if: matrix.light_runtime == 'off'
id: python_tests
continue-on-error: true
run: docker exec kphp-build-container-${{matrix.os}} bash -c
"chown -R kitten /home && su kitten -c 'GITHUB_ACTIONS=1 KPHP_TESTS_POLYFILLS_REPO=${{env.kphp_polyfills_dir}} KPHP_CXX=${{matrix.compiler}} python3.7 -m pytest --tb=native -n$(nproc) ${{env.kphp_root_dir}}/tests/python/'"

- name: Prepare python tests artifacts
if: steps.python_tests.outcome == 'failure'
if: ${{ (steps.python_tests.outcome == 'failure') && matrix.light_runtime == 'off' }}
run: docker cp kphp-build-container-${{matrix.os}}:${{env.kphp_root_dir}}/tests/python/_tmp/ ${{runner.temp}} &&
rm -rf ${{runner.temp}}/_tmp/*/working_dir

- name: Upload python tests artifacts
uses: actions/upload-artifact@v3
if: steps.python_tests.outcome == 'failure'
if: ${{ (steps.python_tests.outcome == 'failure') && matrix.light_runtime == 'off' }}
with:
path: ${{runner.temp}}/_tmp/

- name: Fail pipeline if python tests failed
if: steps.python_tests.outcome == 'failure'
if: ${{ (steps.python_tests.outcome == 'failure') && matrix.light_runtime == 'off' }}
run: exit 1

- name: Remove docker container
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/Dockerfile.focal
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,19 @@ COPY tests/python/requirements.txt /tmp/
RUN apt-get update && \
apt-get install -y --no-install-recommends apt-utils ca-certificates gnupg wget pkg-config software-properties-common && \
wget -qO /etc/apt/trusted.gpg.d/vkpartner.asc https://artifactory-external.vkpartner.ru/artifactory/api/gpg/key/public && \
wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \
add-apt-repository ppa:ubuntu-toolchain-r/test && \
echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-18 main" >> /etc/apt/sources.list && \
echo "deb https://artifactory-external.vkpartner.ru/artifactory/kphp focal main" >> /etc/apt/sources.list && \
echo "deb http://apt.postgresql.org/pub/repos/apt focal-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
add-apt-repository ppa:deadsnakes/ppa && \
apt-get update && \
apt-get install -y --no-install-recommends \
git cmake make clang g++ g++-10 gperf netcat \
python3.7 python3-pip python3.7-distutils python3.7-dev libpython3.7-dev python3-jsonschema python3-setuptools mysql-server libmysqlclient-dev && \
git cmake make clang g++ g++-10 g++-11 clang-18 libclang-rt-18-dev gperf netcat \
python3.7 python3-pip python3.7-distutils python3.7-dev libpython3.7-dev python3-jsonschema python3-setuptools python3-wheel mysql-server libmysqlclient-dev libc++-dev libc++abi-dev && \
python3.7 -m pip install pip && python3.7 -m pip install -r /tmp/requirements.txt && \
apt-get install -y --no-install-recommends curl-kphp-vk kphp-timelib libuber-h3-dev libfmt-dev libgtest-dev libgmock-dev libre2-dev libpcre3-dev \
apt-get install -y --no-install-recommends curl-kphp-vk=20240315.focal.63.build.50 kphp-timelib libuber-h3-dev libfmt-dev libgtest-dev libgmock-dev libre2-dev libpcre3-dev \
libzstd-dev libyaml-cpp-dev libnghttp2-dev zlib1g-dev php7.4-dev libldap-dev libkrb5-dev \
postgresql postgresql-server-dev-all libnuma-dev composer unzip && \
rm -rf /var/lib/apt/lists/*
Expand Down
4 changes: 3 additions & 1 deletion cmake/init-compilation-flags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES Clang)
set(COMPILER_CLANG True)
elseif(CMAKE_CXX_COMPILER_ID MATCHES GNU)
if (COMPILE_RUNTIME_LIGHT)
check_compiler_version(gcc 10.1.0)
check_compiler_version(gcc 11.4.0)
else()
check_compiler_version(gcc 8.3.0)
endif()
Expand Down Expand Up @@ -126,6 +126,7 @@ add_compile_options(-fdebug-prefix-map="${CMAKE_BINARY_DIR}=${CMAKE_SOURCE_DIR}"
if(COMPILE_RUNTIME_LIGHT)
get_directory_property(TRY_COMPILE_COMPILE_OPTIONS COMPILE_OPTIONS)
string (REPLACE ";" " " TRY_COMPILE_COMPILE_OPTIONS "${TRY_COMPILE_COMPILE_OPTIONS}")
cmake_print_variables(TRY_COMPILE_COMPILE_OPTIONS)
file(WRITE "${PROJECT_BINARY_DIR}/check_coroutine_include.cpp"
"#include<coroutine>\n"
"int main() {}\n")
Expand All @@ -134,6 +135,7 @@ if(COMPILE_RUNTIME_LIGHT)
"${PROJECT_BINARY_DIR}/tmp"
"${PROJECT_BINARY_DIR}/check_coroutine_include.cpp"
COMPILE_DEFINITIONS "${TRY_COMPILE_COMPILE_OPTIONS}"
CXX_STANDARD 20
andarut marked this conversation as resolved.
Show resolved Hide resolved
)
if(NOT HAS_COROUTINE)
message(FATAL_ERROR "Compiler or libstdc++ does not support coroutines")
Expand Down
6 changes: 4 additions & 2 deletions cmake/popular-common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,10 @@ vk_add_library(light_common OBJECT ${LIGHT_COMMON_SOURCES})
set_property(TARGET light_common PROPERTY POSITION_INDEPENDENT_CODE ON)

if (COMPILE_RUNTIME_LIGHT)
target_compile_options(light_common PUBLIC -stdlib=libc++)
target_link_options(light_common PUBLIC -stdlib=libc++ -static-libstdc++)
if(CMAKE_CXX_COMPILER_ID MATCHES Clang)
target_compile_options(light_common PUBLIC -stdlib=libc++)
target_link_options(light_common PUBLIC -stdlib=libc++ -static-libstdc++)
endif()
endif()

vk_add_library(popular_common OBJECT ${POPULAR_COMMON_SOURCES} ${LIGHT_COMMON_SOURCES})
Expand Down
9 changes: 5 additions & 4 deletions common/dl-utils-lite.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include <time.h>
#include <unistd.h>
#include <dirent.h>
#include <tuple>

#include "common/server/crash-dump.h"
#include "common/stats/provider.h"
Expand Down Expand Up @@ -49,9 +50,9 @@ double dl_time() {
}

void dl_print_backtrace(void **trace, int trace_size) {
write (2, "\n------- Stack Backtrace -------\n", 33);
std::ignore = write (2, "\n------- Stack Backtrace -------\n", 33);
backtrace_symbols_fd (trace, trace_size, 2);
write (2, "-------------------------------\n", 32);
std::ignore = write (2, "-------------------------------\n", 32);
}

void dl_print_backtrace() {
Expand All @@ -71,7 +72,7 @@ void dl_print_backtrace_gdb() {
name_buf[res] = 0;
int child_pid = fork();
if (child_pid < 0) {
write (2, "Can't fork() to run gdb\n", 24);
std::ignore = write (2, "Can't fork() to run gdb\n", 24);
_exit (0);
}
if (!child_pid) {
Expand All @@ -83,7 +84,7 @@ void dl_print_backtrace_gdb() {
waitpid (child_pid, nullptr, 0);
}
} else {
write (2, "can't get name of executable file to pass to gdb\n", 49);
std::ignore = write (2, "can't get name of executable file to pass to gdb\n", 49);
}
}

Expand Down
3 changes: 2 additions & 1 deletion runtime-core/runtime-core.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,5 @@ endif()

prepend(KPHP_CORE_SRC ${RUNTIME_CORE_DIR}/ "${KPHP_CORE_SRC}")
vk_add_library(runtime-core OBJECT ${KPHP_CORE_SRC})
target_compile_options(runtime-core PUBLIC -fPIC)
set_property(TARGET runtime-core PROPERTY POSITION_INDEPENDENT_CODE ON)
target_compile_options(runtime-core PUBLIC -fPIC)
Loading