Skip to content

Commit

Permalink
ci: update and validate wheels builds in github actions
Browse files Browse the repository at this point in the history
- Enabled all jobs in azure-pipelines.yml.
- Change manylinux version to 2_28 for pip wheels in github actions (Only version 2_28 works with USB support. )
- Enable log in libm2k linux build
- Fixed a crash of cibuildwheel at the step of repairing wheel due to not finding libm2k.so.
- Removed 32b Windows build as it's not supported in manylinux_2_28.

Signed-off-by: Adrian Stanea <[email protected]>
  • Loading branch information
Adrian-Stanea committed Jan 8, 2024
1 parent a1755ba commit f7c3385
Show file tree
Hide file tree
Showing 5 changed files with 192 additions and 200 deletions.
17 changes: 15 additions & 2 deletions .github/scripts/install_deps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,18 @@ LIBIIO_VERSION=libiio-v0
PACKAGE_DIR=${1-build}
echo $PACKAGE_DIR

apt-get -qq update
apt-get install -y git wget tar graphviz libavahi-common-dev libavahi-client-dev libaio-dev libusb-1.0-0-dev libxml2-dev rpm tar bzip2 gzip flex bison git swig python3 python3-dev python3-setuptools python3-pip python3-all libserialport-dev
yum -y update
echo "## Installing dependencies"

yum install -y bzip2 gzip rpm rpm-build git wget tar \
libxml2-devel libusbx-devel libusb-devel doxygen libaio-devel avahi-devel avahi-tools graphviz swig flex bison \
python3 python3-devel python3-setuptools python3-pip

python3 -m pip install cmake
cmake --version

#Install libiio
echo "## Building libiio $LIBIIO_VERSION"
git clone -b $LIBIIO_VERSION --single-branch --depth 1 https://github.com/analogdevicesinc/libiio.git libiio
cd libiio
mkdir -p build
Expand All @@ -20,6 +26,7 @@ make install
cd ../..

#Install glog
echo "## Building glog"
git clone --branch v0.4.0 --depth 1 https://github.com/google/glog
mkdir -p glog/build_0_4_0
cd glog/build_0_4_0
Expand All @@ -40,3 +47,9 @@ make
cat setup.py
make install

# Repair wheel step fails if it does not find the .so file
echo "## Content from src folder"
ls ./src
echo "creating links to .so"
cp ./src/libm2k.so* /usr/lib/ && ldconfig -n -v /usr/lib

27 changes: 16 additions & 11 deletions .github/workflows/build_wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,21 @@ name: Build

on: [push, pull_request]

# TODO: add a simple test that tries to import the libm2k package after creating wheel;
# NOTE: do i have a acces to a pip install during the cybuildwheel process?
jobs:
build_wheels:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04]
# os: [CentOS_7] # manylinux2014: (CentOS 7 based)
python_version: ['3.11']

steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
name: Install Python ${{ matrix.python_version }}
with:
python-version: ${{ matrix.python_version }}
Expand All @@ -22,23 +25,25 @@ jobs:
run: |
mkdir ${{ github.workspace }}/build
touch ${{ github.workspace }}/build/setup.py
# TODO: Test using more recent Docker image
- name: Get some sample wheels
run: |
python -m pip install cibuildwheel twine
cibuildwheel --output-dir ${{ github.workspace }}/wheelhouse ${{ github.workspace }}/build
env:
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_24
CIBW_MANYLINUX_I686_IMAGE: manylinux_2_24
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_24
CIBW_DEBUG_KEEP_CONTAINER=: TRUE
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28
# Skip building PyPy wheels on all platforms
# Skip musllinux builds
CIBW_SKIP: "pp* *-musllinux*"
CIBW_BUILD_VERBOSITY: 1
# Skip i686 builds: 32bit arch not supported in manylinux_2_28
CIBW_SKIP: "pp* *-musllinux* *i686"
CIBW_BUILD_VERBOSITY: 3
CIBW_BEFORE_ALL: >
cd {project} && ./.github/scripts/install_deps.sh {package}
CIBW_BUILD: "cp37-* cp38-* cp39-* cp310-*"
CIBW_BUILD: "cp37-* cp38-* cp39-* cp310-* cp311-* cp312-*"
CIBW_ENVIRONMENT: COMPILE_BINDINGS="True"
- uses: actions/upload-artifact@v2
- uses: actions/upload-artifact@v3
with:
name: manylinux_wheels
path: ${{ github.workspace }}/wheelhouse
Expand All @@ -51,9 +56,9 @@ jobs:
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
name: Install Python 3.10
name: Install Python 3.11
with:
python-version: '3.10'
python-version: '3.11'
- uses: actions/download-artifact@v2
with:
name: manylinux_wheels
Expand Down
4 changes: 2 additions & 2 deletions CI/ubuntu/make_linux
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ handle_default() {
cd build

#create deb for bindings
cmake -DENABLE_PYTHON=ON -DENABLE_TOOLS=ON -DENABLE_CSHARP=OFF -DENABLE_LOG=OFF -DBUILD_EXAMPLES=ON .. && make
cmake -DENABLE_PYTHON=ON -DENABLE_TOOLS=ON -DENABLE_CSHARP=OFF -DENABLE_LOG=ON -DBUILD_EXAMPLES=ON .. && make
sudo python3 setup.py --command-packages=stdeb.command sdist_dsc
cd "$(find . -type d -name "debian" | head -n 1)"
sudo env DEB_BUILD_OPTIONS=nocheck debuild -us -uc
Expand All @@ -20,7 +20,7 @@ handle_default() {
ls

#create simple .deb without Python bindings
cmake -DENABLE_PACKAGING=ON -DDEB_DETECT_DEPENDENCIES=ON -DENABLE_PYTHON=OFF -DENABLE_CSHARP=ON -DENABLE_TOOLS=ON -DENABLE_LOG=OFF -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_EXAMPLES=ON ..
cmake -DENABLE_PACKAGING=ON -DDEB_DETECT_DEPENDENCIES=ON -DENABLE_PYTHON=OFF -DENABLE_CSHARP=ON -DENABLE_TOOLS=ON -DENABLE_LOG=ON -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_EXAMPLES=ON ..
make && make package
ls
}
Expand Down
2 changes: 0 additions & 2 deletions CI/windows/install_deps.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,6 @@ function Install-Swig {
Set-Location $DIR_PATH

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# Potential alternative but still breaks
# Invoke-WebRequest -UserAgent "Wget" -Uri "https://sourceforge.net/projects/swig/files/swigwin/swigwin-4.0.0/swigwin-4.0.0.zip/download" -OutFile "swigwin-4.0.0.zip"
$crnt_attempt=0
$max_attemps=10
do {
Expand Down
Loading

0 comments on commit f7c3385

Please sign in to comment.