Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
d864f0d
bugfix: build fix for linux
arman-bd Oct 8, 2025
2a7dc43
chore: ci update
arman-bd Oct 8, 2025
bb34763
chore: more fixes
arman-bd Oct 8, 2025
e1dc20b
bugfix: workflow path
arman-bd Oct 8, 2025
7f3b876
chore: removed items
arman-bd Oct 8, 2025
41a2bca
chore: cache things
arman-bd Oct 8, 2025
1cf4593
fix: Add POSIX feature macros and fix C compilation errors
arman-bd Oct 8, 2025
055fe5b
chore: fixes
arman-bd Oct 8, 2025
f1d64a3
feat: Add Docker testing environment and fix build issues
arman-bd Oct 8, 2025
c6927a9
chore: fixed cache
arman-bd Oct 8, 2025
4ff8db0
fix: enable mac
arman-bd Oct 8, 2025
615b876
chore: fix for mac
arman-bd Oct 8, 2025
d1e5b99
chore: fix
arman-bd Oct 8, 2025
013fd46
chore: windows
arman-bd Oct 9, 2025
8e665aa
chore: fix for windows
arman-bd Oct 9, 2025
a4a6916
chore: use MSYS2 for windows
arman-bd Oct 9, 2025
1923746
chore: vcpkg
arman-bd Oct 9, 2025
97c83e4
chore: fix vcpkg
arman-bd Oct 9, 2025
8613f3d
chore: more win fix
arman-bd Oct 9, 2025
27d34a8
chore: fix win
arman-bd Oct 9, 2025
c31e1c9
chore: win posix fix
arman-bd Oct 9, 2025
f75b938
chore: fix for else
arman-bd Oct 9, 2025
63a86c4
chore: win fix
arman-bd Oct 9, 2025
111afda
chore: fix
arman-bd Oct 9, 2025
57c8ba9
fix: win
arman-bd Oct 9, 2025
58f244e
chore: winfix
arman-bd Oct 9, 2025
56bc61b
wip
arman-bd Oct 9, 2025
c156360
chore: win fix
arman-bd Oct 9, 2025
438e272
wip
Oct 10, 2025
a5dbf51
build cache
Oct 10, 2025
6e9d9c7
chore: win fix
Oct 10, 2025
71d3f77
fix: add filelock dependency for tests
Oct 10, 2025
e99c0e4
fix: use relative vendor path and add cache verification
Oct 10, 2025
31a9448
fix: add save-always to cache steps to save even on job failure
Oct 10, 2025
ff565ea
debug: add verification step for C extension build
Oct 10, 2025
4335e7b
fix: split cache into separate restore and save actions for save-alwa…
Oct 10, 2025
62a245e
fix: add BoringSSL and vcpkg DLL paths to PATH for Windows
Oct 10, 2025
b7c0d83
debug: add detailed error traceback for C extension import
Oct 10, 2025
2c3c253
fix: correct YAML syntax for multi-line Python command
Oct 10, 2025
5427dd0
fix: simplify C extension import test to avoid YAML syntax issues
Oct 10, 2025
357ba66
debug: check for DLL files and improve error output
Oct 10, 2025
263df26
debug: add detailed import error traceback to _client_c.py
Oct 10, 2025
462827e
fix: add DLL directories using os.add_dll_directory on Windows
Oct 10, 2025
9e2e2f5
chore: enable benchmarks and align workflow caching
Oct 10, 2025
628f41b
chore: disable benchmark workflow
Oct 10, 2025
84fcf53
cross-test
Oct 10, 2025
45f7c69
benchmark
arman-bd Oct 10, 2025
da1904f
updated release
arman-bd Oct 10, 2025
313e8c3
more fixes
arman-bd Oct 10, 2025
86d2f2b
libnghttp2 for linux
arman-bd Oct 10, 2025
8d3c585
fixed release script
arman-bd Oct 10, 2025
18df984
test build
arman-bd Oct 10, 2025
919167e
release fix
arman-bd Oct 10, 2025
83252b5
fix
arman-bd Oct 10, 2025
99c6736
fix: resolve cibuildwheel and BoringSSL build issues
arman-bd Oct 10, 2025
abfe40a
fix: make BoringSSL build flags platform-specific for Clang/GCC
arman-bd Oct 10, 2025
4a97aac
fix: build nghttp2 from source on macOS for wheel compatibility
arman-bd Oct 10, 2025
108e21d
fix: add develop branch trigger and fix nghttp2 install path
arman-bd Oct 10, 2025
0b749a5
fix: build only liburing library, skip tests to avoid header conflicts
arman-bd Oct 10, 2025
86460d1
avoid test
arman-bd Oct 10, 2025
2517b1f
fix: use vendor-built BoringSSL and nghttp2 on macOS for wheel compat…
arman-bd Oct 10, 2025
5d53258
fix: add both ssl and crypto library directories for BoringSSL on macOS
arman-bd Oct 10, 2025
876c50d
onlymac
arman-bd Oct 10, 2025
9308a08
fix: add both BoringSSL library directories and add vendor dependency…
arman-bd Oct 10, 2025
7a8a98b
debug: add BoringSSL build directory inspection to find library locat…
arman-bd Oct 11, 2025
2bcfd4b
wip
arman-bd Oct 11, 2025
caed658
chore: remove vendor dependency caching from release workflow
arman-bd Oct 11, 2025
a570624
fix: use vendor BoringSSL on Linux instead of system OpenSSL
arman-bd Oct 11, 2025
eb5933a
fix: use BoringSSL-compatible API for curves and initialization
arman-bd Oct 11, 2025
58e41af
m
arman-bd Oct 11, 2025
348d03c
feat: continue release workflow even if one OS build fails
arman-bd Oct 11, 2025
08061ae
chore: add plan/ directory to .gitignore
arman-bd Oct 11, 2025
6ff42a0
fix: remove ninja-build from CentOS dependencies
arman-bd Oct 11, 2025
24e1a32
fix: handle Windows BoringSSL build directory layout
arman-bd Oct 11, 2025
6efeef7
fix: remove libnghttp2-devel from Linux build dependencies
arman-bd Oct 11, 2025
c540e7e
local linux build pipeline
arman-bd Oct 11, 2025
cea9318
macos build test script
arman-bd Oct 11, 2025
e433dd1
windows build test
Oct 11, 2025
fe915df
fix: Windows build - skip 32-bit, build all deps from source
Oct 11, 2025
d625a94
perf: add vendor caching to release workflow
Oct 11, 2025
087f78d
perf: optimize wheel builds with proper vendor caching
Oct 11, 2025
ef338fc
refactor: split release into OS-specific workflow files
Oct 11, 2025
d283089
wip
Oct 11, 2025
d76e467
more os separation
Oct 11, 2025
2261357
release test
Oct 11, 2025
775f72e
build test
Oct 11, 2025
7551836
build fix
arman-bd Oct 11, 2025
32ecd35
fix mac build
arman-bd Oct 11, 2025
337667f
lets go
arman-bd Oct 11, 2025
ccecf9e
more compat
arman-bd Oct 12, 2025
b770e5a
more fixes on ci
arman-bd Oct 12, 2025
7efb53e
more fixes on ci
arman-bd Oct 12, 2025
67814bb
Merge branch 'main' of https://github.com/arman-bd/httpmorph into dev…
arman-bd Oct 12, 2025
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
133 changes: 0 additions & 133 deletions .github/workflows/_benchmark.yml

This file was deleted.

137 changes: 137 additions & 0 deletions .github/workflows/_build_linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
name: Build Linux Wheels

on:
workflow_call:
inputs:
python-versions:
description: 'Python versions to build for'
required: false
type: string
default: '["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]'

jobs:
build-linux:
name: Build Linux Wheels
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

# Setup Go for BoringSSL build
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
cache: true

# Cache vendor dependencies to speed up builds
# Note: For Linux, vendors are built inside manylinux container, so we cache the vendor directory
- name: Restore vendor cache
id: cache-vendor
uses: actions/cache/restore@v4
with:
path: vendor
key: vendor-linux-manylinux-${{ hashFiles('scripts/linux/setup_vendors.sh') }}-v9
restore-keys: |
vendor-linux-manylinux-

# Build wheels with cibuildwheel (handles manylinux containers)
# The vendor directory is mounted into the container automatically
- name: Build wheels
uses: pypa/cibuildwheel@v2.22.0
env:
# Build for specified Python versions
CIBW_BUILD: cp38-manylinux_x86_64 cp39-manylinux_x86_64 cp310-manylinux_x86_64 cp311-manylinux_x86_64 cp312-manylinux_x86_64 cp313-manylinux_x86_64 cp314-manylinux_x86_64
# Vendor build happens inside manylinux container via before-build (from pyproject.toml)

# Save vendor cache after build
- name: Save vendor cache
if: steps.cache-vendor.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: vendor
key: vendor-linux-manylinux-${{ hashFiles('scripts/linux/setup_vendors.sh') }}-v9

# Setup Python versions for testing
- name: Setup Python versions
uses: actions/setup-python@v5
with:
python-version: |
3.8
3.9
3.10
3.11
3.12
3.13
3.14
allow-prereleases: true

# Test the built wheels
- name: Test wheels
run: |
# Test each wheel that was built
for wheel in ./wheelhouse/*.whl; do
echo "========================================"
echo "Testing wheel: $(basename "$wheel")"
echo "========================================"

# Extract Python version from wheel filename (e.g., cp39, cp310)
python_tag=$(basename "$wheel" | grep -oE 'cp[0-9]+' | head -1)
python_version="${python_tag:2:1}.${python_tag:3}"

echo "Setting up Python $python_version..."

# Try to find the matching Python version
python_cmd=""
for cmd in "python${python_version}" "python3.${python_version#*.}" "python3"; do
if command -v "$cmd" &> /dev/null; then
# Verify this is the right version
version_check=$($cmd --version 2>&1 | grep -oE '[0-9]+\.[0-9]+' | head -1)
if [ "$version_check" = "$python_version" ]; then
python_cmd="$cmd"
break
fi
fi
done

# Fall back to python3 if we couldn't find exact match
if [ -z "$python_cmd" ]; then
echo "WARNING: Python $python_version not found, using python3"
python_cmd="python3"
fi

echo "Using Python: $($python_cmd --version)"

# Install the wheel in a fresh environment
"$python_cmd" -m pip install --force-reinstall "$wheel"

# Run the test script
echo ""
echo "Running tests..."
"$python_cmd" scripts/test_local_build.py

# Check exit code
if [ $? -eq 0 ]; then
echo ""
echo "[OK] Wheel test PASSED: $(basename "$wheel")"
else
echo ""
echo "[FAIL] Wheel test FAILED: $(basename "$wheel")"
exit 1
fi

echo ""
done

echo "========================================"
echo "All wheel tests PASSED"
echo "========================================"

# Upload wheels as artifacts
- uses: actions/upload-artifact@v4
with:
name: wheels-linux
path: ./wheelhouse/*.whl
if-no-files-found: error
Loading
Loading