Skip to content

Commit

Permalink
ci: Generate Python package with cibuildwheel
Browse files Browse the repository at this point in the history
  • Loading branch information
oliviermartin committed Feb 22, 2024
1 parent 18e1658 commit 13bd692
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 15 deletions.
20 changes: 14 additions & 6 deletions .github/workflows/github-actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,29 @@ jobs:

generate-python-binary-packages:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v4
- run: sudo apt install -y libbluetooth-dev
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- run: ./ci/generate-python-package.sh
if: startsWith(github.ref, 'refs/tags/')
env:
CIBW_BEFORE_BUILD_LINUX: "sh ci/install-bluez.sh"
#TODO: To support 'musllinux', we need to replace 'yum install' by 'apk install' - and detect which platform we are
CIBW_SKIP: "*-musllinux_*"
- run: ./ci/generate-python-package.sh
if: ${{ ! startsWith(github.ref, 'refs/tags/') }}
env:
CIBW_BEFORE_BUILD_LINUX: "sh ci/install-bluez.sh"
GATTLIB_PY_VERSION: '0.0.1'
CIBW_ENVIRONMENT_PASS_LINUX: "GATTLIB_PY_VERSION"
#TODO: To support 'musllinux', we need to replace 'yum install' by 'apk install' - and detect which platform we are
CIBW_SKIP: "*-musllinux_*"
- name: Archive Python packages
uses: actions/upload-artifact@v4
with:
name: python-${{ matrix.python-version }}-binary-package
name: python-binary-packages
path: dist/*

# publish-python-packages:
Expand Down
8 changes: 6 additions & 2 deletions ci/generate-python-package.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ cp -r ${ROOT_PATH}/include ${gattlib_py_package_dir}/
cp -r ${ROOT_PATH}/CMakeLists.txt ${gattlib_py_package_dir}/
cp -r ${ROOT_PATH}/CrossCompilation.cmake ${gattlib_py_package_dir}/

# Build script
mkdir ${gattlib_py_package_dir}/ci/
cp -r ${ROOT_PATH}/ci/install-bluez.sh ${gattlib_py_package_dir}/ci/

# Create MANIFEST.in
cat <<EOT >> MANIFEST.in
graft common
Expand All @@ -34,13 +38,13 @@ include CrossCompilation.cmake
EOT

# Install requirements
python3 -m pip install wheel
python3 -m pip --disable-pip-version-check install cibuildwheel==2.16.5

# Generate packages
pushd ${gattlib_py_package_dir}

# Binary package
python3 setup.py bdist_wheel
python3 -m cibuildwheel --output-dir dist

# Source package
python setup.py sdist
Expand Down
21 changes: 21 additions & 0 deletions ci/install-bluez.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/bash

# Exit immediately if a command exits with a non-zero status.
set -ex

# Install dependencies
yum -y install wget dbus-devel

#
#
#
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.66.tar.xz
tar -xf bluez-5.66.tar.xz
pushd bluez-5.66
./configure --prefix=/usr/local --disable-obex --disable-udev --disable-cups --disable-client --disable-manpages --disable-tools \
--disable-obex --disable-monitor --disable-hog --disable-hid --disable-network --disable-a2dp --disable-avrcp --disable-bap \
--disable-mcp --disable-vcp --enable-library
make
make install
popd
rm -Rf bluez-5.66
20 changes: 13 additions & 7 deletions dbus/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -102,18 +102,24 @@ if(GATTLIB_PYTHON_INTERFACE)
else()
set(Python_USE_STATIC_LIBS TRUE)
endif()
find_package(Python COMPONENTS Interpreter Development)
if (NOT Python_Development_FOUND)
find_package(Python COMPONENTS Development.Module)
if (NOT Python_Development.Module_FOUND)

find_package(Python3 COMPONENTS Interpreter Development)
if (NOT Python3_Development_FOUND)
find_package(Python3 COMPONENTS Development.Module)
if (NOT Python3_Development.Module_FOUND)
message(FATAL_ERROR "Could not find Python developer package")
endif()

# Case of mainlinux container to build Wheel Python package
if (NOT Python3_LIBRARIES)
set(Python3_LIBRARIES "")
endif()
endif()

include_directories(${Python_INCLUDE_DIRS})
list(APPEND gattlib_LIBS ${Python_LIBRARIES})
include_directories(${Python3_INCLUDE_DIRS})
list(APPEND gattlib_LIBS ${Python3_LIBRARIES})

add_definitions(-DWITH_PYTHON -DPYTHON_VERSION_MAJOR=${Python_VERSION_MAJOR} -DPYTHON_VERSION_MINOR=${Python_VERSION_MINOR})
add_definitions(-DWITH_PYTHON -DPYTHON_VERSION_MAJOR=${Python3_VERSION_MAJOR} -DPYTHON_VERSION_MINOR=${Python3_VERSION_MINOR})
endif()

# Gattlib
Expand Down

0 comments on commit 13bd692

Please sign in to comment.