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

Test new manylinux #2025

Merged
merged 3 commits into from
Dec 2, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
43 changes: 43 additions & 0 deletions .github/actions/setup_deps/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: 'Install GCC related dependencies'
description: 'Installs GCC related dependencies for building ArcticDB'
runs:
using: "composite"
steps:
- name: Install deps
shell: bash -l {0}
run: |
dnf update -y
dnf remove -y 'gcc-toolset-13-*'
dnf install -y zip flex bison gcc-toolset-10 gcc-toolset-10-gdb gcc-toolset-10-libatomic-devel krb5-devel cyrus-sasl-devel openssl-devel \
unzip tar epel-release jq wget libcurl-devel python3 \
python3-devel python3-pip perl-IPC-Cmd

dnf groupinstall -y 'Development Tools'

echo "CC=/opt/rh/gcc-toolset-10/root/bin/gcc" | tee -a $GITHUB_ENV
echo "CMAKE_C_COMPILER=/opt/rh/gcc-toolset-10/root/bin/gcc" | tee -a $GITHUB_ENV
echo "CXX=/opt/rh/gcc-toolset-10/root/bin/g++" | tee -a $GITHUB_ENV
echo "CMAKE_CXX_COMPILER=/opt/rh/gcc-toolset-10/root/bin/g++" | tee -a $GITHUB_ENV
echo "LD_LIBRARY_PATH=/opt/rh/gcc-toolset-10/root/usr/lib64:/opt/rh/gcc-toolset-10/root/usr/lib:/opt/rh/gcc-toolset-10/root/usr/lib64/dyninst" | tee -a $GITHUB_ENV
echo "/opt/rh/devtoolset-10/root/usr/bin" | tee -a $GITHUB_PATH

echo $GITHUB_ENV

echo $GITHUB_PATH

dnf install -y mono-complete

dnf clean all

# sccache
sccache_ver=`curl -sL -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/mozilla/sccache/releases/latest | jq -r ".tag_name"`

wget -nv https://github.com/mozilla/sccache/releases/download/$sccache_ver/sccache-$sccache_ver-x86_64-unknown-linux-musl.tar.gz \
-O /tmp/sccache.tar.gz
tar -xvf /tmp/sccache.tar.gz -C /tmp/
cp /tmp/sccache-*/sccache /usr/local/bin/
rm /tmp/sccache.tar.gz

which gcc
which g++
16 changes: 6 additions & 10 deletions .github/workflows/analysis_workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,9 @@ jobs:
outputs:
matrix: ${{ steps.get_tags.outputs.commits }}

cibw_docker_image:
uses: ./.github/workflows/cibw_docker_image.yml
permissions: {packages: write}
with:
cibuildwheel_ver: "2.12.1"
force_update: false

benchmark_commits:
needs: [get_commits_to_benchmark, cibw_docker_image]
needs: [get_commits_to_benchmark]
strategy:
fail-fast: false
matrix:
Expand All @@ -49,7 +43,6 @@ jobs:
secrets: inherit
with:
commit: ${{ matrix.commits }}
cibw_image_tag: ${{ needs.cibw_docker_image.outputs.tag }}
run_all_benchmarks: ${{ inputs.run_all_benchmarks || false }}
run_on_pr_head: ${{ github.event_name == 'pull_request_target' }}

Expand Down Expand Up @@ -107,10 +100,9 @@ jobs:
python -m asv gh-pages -v --rewrite

code_coverage:
needs: [cibw_docker_image]
runs-on: "ubuntu-22.04"
container:
image: ${{needs.cibw_docker_image.outputs.tag}}
image: quay.io/pypa/manylinux_2_28_x86_64:latest
services:
mongodb:
image: mongo:4.4
Expand All @@ -133,7 +125,11 @@ jobs:
uses: SimenB/[email protected]
id: cpu-cores

- name: Install deps
uses: ./.github/actions/setup_deps

- name: Extra envs
shell: bash -l {0}
run: |
. build_tooling/vcpkg_caching.sh # Linux follower needs another call in CIBW
echo -e "VCPKG_BINARY_SOURCES=$VCPKG_BINARY_SOURCES
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/benchmark_commits.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ on:
inputs:
run_all_benchmarks: {required: true, type: boolean, description: Run all benchmarks or just the one for the given commit}
commit: {required: true, type: string, description: commit hash that will be benchmarked}
cibw_image_tag: {required: true, type: string, description: Linux only. As built by cibw_docker_image.yml workflow}
run_on_pr_head: {required: false, default: false, type: boolean, description: Specifies if the benchmark should run on PR head branch}
jobs:
start_ec2_runner:
Expand All @@ -20,7 +19,7 @@ jobs:
always() &&
!cancelled()
runs-on: ${{ needs.start_ec2_runner.outputs.label }}
container: ${{ inputs.cibw_image_tag}}
container: quay.io/pypa/manylinux_2_28_x86_64:latest
env:
# this is potentially overflowing the cache, so should be looked into after we address issue #1057
SCCACHE_GHA_VERSION: ${{vars.SCCACHE_GHA_VERSION || 1}} # Setting this env var enables the caching
Expand All @@ -44,9 +43,13 @@ jobs:
with:
version: "v0.4.0"

- name: Install deps
uses: ./.github/actions/setup_deps

# We are changing the python here because we want to use the default python to build (it is devel version)
# and this python for the rest of the testing
- name: Select Python (Linux)
shell: bash -el {0}
run: |
ls /opt/python
echo /opt/python/cp36-cp36m/bin >> $GITHUB_PATH
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
mongodb:
image: "mongo:4.4"
container:
image: ${{needs.cibw_docker_image.outputs.tag}}
image: quay.io/pypa/manylinux_2_28_x86_64
volumes:
- /:/mnt
windows_matrix:
Expand Down
30 changes: 25 additions & 5 deletions .github/workflows/build_steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,11 @@ jobs:
maximum-size: 6GB
disk-root: "D:" # This is also the checkout directory. Total size 12GB.
continue-on-error: true

- name: Enable Windows compiler commands
if: matrix.os == 'windows'
uses: ilammy/[email protected]

- name: Install deps
if: matrix.os == 'linux' && inputs.job_type != 'build-python-wheels'
uses: ./.github/actions/setup_deps

- name: Extra envs
# This has to come after msvc-dev-cmd to overwrite the bad VCPKG_ROOT it sets
run: |
Expand Down Expand Up @@ -122,6 +122,23 @@ jobs:
if: inputs.job_type != 'build-python-wheels'
run: . build_tooling/prep_cpp_build.sh # Also applies to Windows

# When a GitHub Windows image gets update the MSVC compiler also can get updated. New compilers can have compilation errors in Arctic or in the VCPKG dependencies.
# We needd to pin a particular MSVC so that runner updates don't affect us.
# When the MSVC version is update custom-triplets/x64-windows-static-msvc.cmake must also be updated with the correct toolsed version.
- name: Install Required MSVC
if: matrix.os == 'windows'
run: |
choco install -y -f visualstudio2022buildtools --version=117.11.4 --params "--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --installChannelUri https://aka.ms/vs/17/release/390666095_1317821361/channel"
choco install -y ninja

- name: Enable Windows compiler commands
if: matrix.os == 'windows'
uses: TheMrMilchmann/setup-msvc-dev@v3
with:
arch: x64
toolset: 14.41
vs-path: 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools'

- name: CMake compile
if: inputs.job_type != 'build-python-wheels'
# We are pinning the version to 10.6 because >= 10.7, use node20 which is not supported in the container
Expand All @@ -131,6 +148,9 @@ jobs:
configurePreset: ${{env.ARCTIC_CMAKE_PRESET}}
configurePresetAdditionalArgs: "['-DVCPKG_INSTALL_OPTIONS=--clean-after-build']"
buildPreset: ${{env.ARCTIC_CMAKE_PRESET}}
env:
CMAKE_BUILD_PARALLEL_LEVEL: ${{ (matrix.os == 'linux' && inputs.job_type != 'build-python-wheels') && 1 || vars.CMAKE_BUILD_PARALLEL_LEVEL}}
CXX: /opt/rh/gcc-toolset-10/root/bin/g++

- name: Compile C++ tests
if: inputs.job_type == 'cpp-tests'
Expand Down Expand Up @@ -255,7 +275,7 @@ jobs:
${{fromJSON(inputs.matrix)}}
name: ${{matrix.type}}${{matrix.python_deps_id}}
runs-on: ${{matrix.distro}}
container: ${{matrix.os == 'linux' && needs.compile.outputs.manylinux_image || null}}
container: ${{matrix.os == 'linux' && matrix.container || null}}
defaults:
run: {shell: bash}
services: ${{matrix.test_services}}
Expand Down
10 changes: 6 additions & 4 deletions cpp/CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,9 @@
"generator": "Ninja",
"environment": { "cmakepreset_expected_host_system": "Windows" },
"cacheVariables": {
"ARCTICDB_USE_PCH": "ON"
"ARCTICDB_USE_PCH": "ON",
"VCPKG_OVERLAY_TRIPLETS": "custom-triplets",
"VCPKG_TARGET_TRIPLET": "x64-windows-static-msvc"
}
},
{
Expand All @@ -80,8 +82,7 @@
},
"cacheVariables": {
"CMAKE_C_COMPILER": "cl",
"CMAKE_CXX_COMPILER": "cl",
"VCPKG_TARGET_TRIPLET": "x64-windows-static"
"CMAKE_CXX_COMPILER": "cl"
}
},
{
Expand All @@ -97,7 +98,8 @@
"installDir": "${sourceDir}/out/install",
"cacheVariables": {
"CMAKE_CXX_FLAGS": "/MP",
"VCPKG_TARGET_TRIPLET": "x64-windows-static",
"VCPKG_OVERLAY_TRIPLETS": "custom-triplets",
"VCPKG_TARGET_TRIPLET": "x64-windows-static-msvc",
"ARCTICDB_PYTHON_EXPLICIT_LINK": "ON"
}
},
Expand Down
4 changes: 4 additions & 0 deletions cpp/custom-triplets/x64-windows-static-msvc.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE static)
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_PLATFORM_TOOLSET_VERSION 14.41)
4 changes: 1 addition & 3 deletions python/arcticdb/version_store/_store.py
Original file line number Diff line number Diff line change
Expand Up @@ -367,16 +367,14 @@ def _try_normalize(
raise ArcticDbNotYetImplemented(
f"Not supported: normalizing\n"
f"symbol: {symbol}\n"
f"data:\n"
f"{dataframe}\n"
f"metadata:\n"
f"{metadata}\n"
f"Reason:\n"
f"{ex}\n"
f"{norm_failure_options_msg}"
)
except Exception as ex:
log.error("Error while normalizing symbol={}, data={}, metadata={}, {}", symbol, dataframe, metadata, ex)
log.error("Error while normalizing symbol={}, metadata={}, {}", symbol, metadata, ex)
raise ArcticNativeException(str(ex))

if norm_meta is None:
Expand Down
5 changes: 4 additions & 1 deletion python/tests/integration/arcticdb/test_s3.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ def test_s3_running_on_aws_fast_check(lib_name, s3_storage_factory, run_on_aws):
assert lib_tool.inspect_env_variable("AWS_EC2_METADATA_DISABLED") == "true"


@pytest.mark.skip(reason="There is a flaky segfault in the test setup")
def test_nfs_backed_s3_storage(lib_name, nfs_backed_s3_storage):
# Given
lib = nfs_backed_s3_storage.create_version_store_factory(lib_name)()
Expand All @@ -78,7 +79,9 @@ def test_nfs_backed_s3_storage(lib_name, nfs_backed_s3_storage):
assert re.match(bucketized_pattern, o.key), f"Object {o.key} does not match pattern {bucketized_pattern}"


@pytest.fixture(scope="function", params=[MotoNfsBackedS3StorageFixtureFactory, MotoS3StorageFixtureFactory])
# MotoNfsBackedS3StorageFixtureFactory is skpped here due to a flaky segfault in the test setup
# @pytest.fixture(scope="function", params=[MotoNfsBackedS3StorageFixtureFactory, MotoS3StorageFixtureFactory])
@pytest.fixture(scope="function", params=[MotoS3StorageFixtureFactory])
def s3_storage_dots_in_path(request):
prefix = "some_path/.thing_with_a_dot/even.more.dots/end"

Expand Down
Loading