Skip to content

talipot-core/GraphImpl: Simplify node/edge iterators implementation #525

talipot-core/GraphImpl: Simplify node/edge iterators implementation

talipot-core/GraphImpl: Simplify node/edge iterators implementation #525

name: windows-wheels-build
on: [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
windows:
name: Talipot Python ${{ matrix.python-version }} wheel build on windows
runs-on: windows-latest
env:
TWINE_REPOSITORY: https://test.pypi.org/legacy/
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }}
defaults:
run:
shell: msys2 {0}
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
steps:
- name: Checkout Talipot code
uses: actions/checkout@v4
- name: Install mingw64 and Talipot build dependencies
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: git
base-devel
mingw-w64-x86_64-toolchain
mingw-w64-x86_64-cmake
mingw-w64-x86_64-ccache
mingw-w64-x86_64-yajl
mingw-w64-x86_64-zstd
mingw-w64-x86_64-qhull
mingw-w64-x86_64-graphviz
mingw-w64-x86_64-libgit2
- name: Install Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
id: python-install
with:
python-version: ${{ matrix.python-version }}
- name: Install sip, twine and wheel Python packages
run: |
PYTHON_PATH=$(echo '${{ steps.python-install.outputs.python-path }}')
export PATH=$(cygpath -u "$(dirname $PYTHON_PATH)\Scripts"):$PATH
pip install sip twine wheel
- name: Get wheel next dev version
run: |
PYTHON_PATH=$(echo '${{ steps.python-install.outputs.python-path }}')
export PATH=$(cygpath -u "$(dirname $PYTHON_PATH)"):$PATH
JSON=$(curl -s 'https://test.pypi.org/pypi/talipot/json')
LAST_VERSION=$(echo $JSON | python -c "
import sys, json
print(json.load(sys.stdin)['info']['version'])" 2>/dev/null)
if [ $? -ne 0 ]
then
DEV_VERSION=1
else
echo last wheel dev version = $LAST_VERSION
# check if dev wheel version needs to be incremented
VERSION_INCREMENT=$(echo $JSON | python -c "
import sys, json
from wheel._bdist_wheel import get_abi_tag
releases = json.load(sys.stdin)['releases']['$LAST_VERSION']
abi_tag = get_abi_tag() + '-'
print(any(['win_amd64' in r['filename'] and abi_tag in r['filename'] for r in releases]))")
DEV_VERSION=$(echo $LAST_VERSION | cut -f4 -d '.' | sed 's/dev//')
if [ "$VERSION_INCREMENT" == "True" ]
then
let DEV_VERSION+=1
fi
fi
echo current wheel dev version = $DEV_VERSION
echo "DEV_VERSION=$DEV_VERSION" >> $GITHUB_ENV
- name: Prepare ccache timestamp
id: get-current-date
run: |
echo "date=$(date -u "+%Y-%m-%d-%H-%m-%S")" >> $GITHUB_OUTPUT
- name: Get ccache directory
id: get-cccache-dir
run: |
ccache_dir=$(ccache -sv | grep "Cache directory" | awk '{print $3}')
echo "ccache-dir=$ccache_dir" >> $GITHUB_OUTPUT
- name: Cache files
uses: actions/cache@v4
with:
path: ${{ steps.get-cccache-dir.outputs.ccache-dir }}
key:
windows-wheel-${{ steps.python-install.outputs.python-version }}-build-ccache
-${{ steps.get-current-date.outputs.date }}
restore-keys: |
windows-wheel-${{ steps.python-install.outputs.python-version }}-build-ccache
save-always: true
- name: Create build directory
run: mkdir build
- name: Configure Talipot Python wheel build with CMake
working-directory: ./build
run: cmake .. -G "MSYS Makefiles"
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_NEED_RESPONSE=ON
-DCMAKE_INSTALL_PREFIX=$PWD/install
-DTALIPOT_ACTIVATE_PYTHON_WHEEL_TARGET=ON
-DTALIPOT_PYTHON_TEST_WHEEL_SUFFIX=a3.dev${{ env.DEV_VERSION }}
-DPython3_EXECUTABLE=$(cygpath -u "${{ steps.python-install.outputs.python-path }}")
-DTALIPOT_USE_CCACHE=ON
-DTALIPOT_BUILD_CORE_ONLY=ON
-DTALIPOT_BUILD_DOC=OFF
- name: Talipot Python wheel build
working-directory: ./build
run: make -j4 test-wheel
- name: Upload Talipot Python wheel on test PyPI
if: github.ref == 'refs/tags/dev-latest'
working-directory: ./build
run: make test-wheel-upload
- name: Test uploaded wheel in clean environment
if: github.ref == 'refs/tags/dev-latest'
run: |
PYTHON_PATH=$(echo '${{ steps.python-install.outputs.python-path }}')
export PATH=$(cygpath -u "$(dirname $PYTHON_PATH)"):$PATH
export PATH=$(cygpath -u "$(dirname $PYTHON_PATH)\Scripts"):$PATH
pacman --noconfirm -Rc \
mingw-w64-x86_64-toolchain \
mingw-w64-x86_64-cmake \
mingw-w64-x86_64-ccache \
mingw-w64-x86_64-zlib \
mingw-w64-x86_64-yajl \
mingw-w64-x86_64-zstd \
mingw-w64-x86_64-qhull \
mingw-w64-x86_64-graphviz
pip install --index-url https://test.pypi.org/simple/ talipot
python -c "from talipot import tlp; print(tlp.getLayoutAlgorithmPluginsList())"