Skip to content

Build bpy for Windows #2

Build bpy for Windows

Build bpy for Windows #2

Workflow file for this run

name: Build bpy for Windows
on:
workflow_dispatch:
inputs:
tag:
description: 'Blender Tag to build'
required: true
python_version:
description: 'Python version to use'
required: true
default: '3.10.11'
workflow_call:
inputs:
tag:
description: 'Blender Tag to build'
required: true
type: string
python_version:
description: 'Python version to use'
required: true
default: '3.10.11'
type: string
jobs:
build:
runs-on: windows-latest
permissions:
contents: write
steps:
# # - name: test batch file
# # run: |
# # # echo "PYTHON=C:\hostedtoolcache\windows\Python\3.10.11\x64\python.exe" | Out-File -Append -FilePath $env:GITHUB_ENV
# # echo "echo %PYTHON%" >test.bat
# # echo "set PYTHON=C:\hostedtoolcache\windows\Python\3.10.11\x64\python.exe" >test.new.bat
# # type test.bat >>test.new.bat
# # # move /y ./file.txt.new ./test.bat
# # ./test.new.bat
# # cat ./test.new.bat
# - name: checkout repo
# uses: actions/checkout@v2
# - name: Set environment variables
# id: set_env
# run: |
# TAG=${{ inputs.tag || github.event.inputs.tag }}
# PYTHON_VERSION=${{ inputs.python_version || github.event.inputs.python_version }}
# echo "TAG=$TAG" >> $GITHUB_ENV
# echo "PYTHON_VERSION=$PYTHON_VERSION" >> $GITHUB_ENV
# shell: bash
# - name: Checkout Blender repository recursively
# uses: actions/checkout@v2
# with:
# repository: blender/blender
# ref: ${{ env.TAG}}
# submodules: 'recursive'
# path: blender
# - name: Install Chocolatey
# run: |
# Set-ExecutionPolicy Bypass -Scope Process -Force
# Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
# - name: Set up Python
# uses: actions/setup-python@v4
# with:
# # python-version: '3.10.11'
# python-version: ${{ env.PYTHON_VERSION }}
# - name: Set Python Path and Run make.bat
# run: |
# set Python=C:\hostedtoolcache\windows\Python\3.10.11\x64\python.exe
# echo %Python%
# shell: cmd
# - name: list env vars
# run: |
# # Set "Python=C:\hostedtoolcache\windows\Python\3.10.11\x64\python.exe"
# # echo "Python=C:\hostedtoolcache\windows\Python\3.10.11\x64\python.exe" | Out-File -Append -FilePath $env:GITHUB_ENV
# Get-ChildItem Env:
# - name: Install Visual Studio Community Edition
# run: |
# choco install visualstudio2022-workload-nativedesktop
# - name: Install CUDA
# run: |
# choco install cuda
# Add-Content $env:GITHUB_PATH "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\bin"
# - name: Install TortoiseSVN and Command Line Client Tools
# run: |
# choco install tortoisesvn
# - name: Install CMake
# run: |
# choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
# - name: Add CUDA compilation flags
# run: |
# nvcc --version
# "set(WITH_CYCLES_CUDA_BINARIES ON CACHE BOOL '' FORCE)" | Out-File -Append -FilePath ./blender/build_files/cmake/config/bpy_module.cmake
# # - name: Set CUDA environment variables
# # run: |
# # $NVCC_PATH = Get-Command nvcc | Select-Object -ExpandProperty Source
# # $CUDA_HOME = Split-Path (Split-Path $NVCC_PATH -Parent) -Parent
# # echo "CUDA_HOME=$CUDA_HOME" | Out-File -Append -FilePath $env:GITHUB_ENV
# # echo "CPLUS_INCLUDE_PATH=$CUDA_HOME\include;$env:CPLUS_INCLUDE_PATH" | Out-File -Append -FilePath $env:GITHUB_ENV
# # echo "C_INCLUDE_PATH=$CUDA_HOME\include;$env:C_INCLUDE_PATH" | Out-File -Append -FilePath $env:GITHUB_ENV
# # - name: Refresh env
# # run: |
# # refreshenv
# - name: Cache Blender dependencies
# uses: actions/cache@v2
# with:
# path: |
# ./lib
# key: ${{ runner.os }}-blender-deps-${{ github.sha }}
# restore-keys: |
# ${{ runner.os }}-blender-deps-
# - name: Cache build files (for testing only)
# uses: actions/cache@v2
# with:
# path: |
# ./build_windows_Bpy_x64_vc17_Release
# key: ${{ runner.os }}-blender-build-${{ github.sha }}
# restore-keys: |
# ${{ runner.os }}-blender-build-
# - name: download svn librares
# run: |
# if [ ! -d "./lib" ]; then
# mkdir ./lib
# cd ./lib
# svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/win64_vc15
# fi
# shell: bash
# # - name: Set Python Path
# # run: |
# # chcp 65001 #set code page to utf-8
# # echo "PYTHON=C:\hostedtoolcache\windows\Python\3.10.11\x64\python.exe" >> $env:GITHUB_ENV
# - name: list env vars
# run: |
# Get-ChildItem Env:
# - name: Run make.bat
# run: |
# cd blender
# yes| make update
# make bpy
# shell: cmd
# - name: Download Blender Python API Stubs
# id: download-artifact
# uses: dawidd6/action-download-artifact@v2
# with:
# workflow: generate_stubs.yml
# # github_token: ${{secrets.GITHUB_TOKEN}}
# name: blender-python-api-stubs-${{ env.TAG }}
# path: ./stubs
# - name: Copy Blender Python API Stubs into bin
# run: |
# cp -r ./stubs/* ./build_windows_Bpy_x64_vc17_Release/bin/Release
# shell: bash
# # - name: Setup terminal session
# # uses: fawazahmed0/action-debug@main
# # with:
# # credentials: "user:p@ss!"
# - name: Make Wheel
# run: |
# pip install -U pip setuptools wheel
# # remove the old wheel if it exists
# rm ./build_windows_Bpy_x64_vc17_Release/bin/*.whl
# python blender/build_files/utils/make_bpy_wheel.py ./build_windows_Bpy_x64_vc17_Release/bin/Release
# shell: bash
# # - name: Upload Wheel as Artifact
# # uses: actions/upload-artifact@v2
# # with:
# # name: bpy-windows
# # path: |
# # ./build_windows_Bpy_x64_vc17_Release/bin/Release/*.whl
# - name: Install Dependencies
# run: |
# python -m pip install --upgrade pip ndg-httpsclient pyopenssl pyasn1
# pip install -r requirements.txt
# - name: Publish Wheel
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: python workspace/build_blender.py publish-github ${{ env.TAG }} ./build_windows_Bpy_x64_vc17_Release/bin/Release
- name: checkout repo
uses: actions/checkout@v2
- name: Set environment variables
id: set_env
run: |
TAG=${{ inputs.tag || github.event.inputs.tag }}
PYTHON_VERSION=${{ inputs.python_version || github.event.inputs.python_version }}
echo "TAG=$TAG" >> $GITHUB_ENV
echo "PYTHON_VERSION=$PYTHON_VERSION" >> $GITHUB_ENV
shell: bash
- name: Checkout Blender repository recursively
uses: actions/checkout@v2
with:
repository: blender/blender
ref: ${{ env.TAG }}
submodules: 'recursive'
path: blender
# - name: Install Chocolatey
# run: |
# Set-ExecutionPolicy Bypass -Scope Process -Force
# Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Set Python Path and Run make.bat
run: |
set Python=C:\hostedtoolcache\windows\Python\${{ env.PYTHON_VERSION }}\x64\python.exe
echo %Python%
shell: cmd
- name: list env vars
run: |
# Set "Python=C:\hostedtoolcache\windows\Python\3.10.11\x64\python.exe"
# echo "Python=C:\hostedtoolcache\windows\Python\3.10.11\x64\python.exe" | Out-File -Append -FilePath $env:GITHUB_ENV
Get-ChildItem Env:
- name: Install Visual Studio Community Edition
run: |
choco install visualstudio2022-workload-nativedesktop
- name: Install CUDA
run: |
choco install cuda
Add-Content $env:GITHUB_PATH "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\bin"
- name: Install TortoiseSVN and Command Line Client Tools
run: |
choco install tortoisesvn
- name: Install CMake
run: |
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
- name: Add CUDA compilation flags
run: |
nvcc --version
"set(WITH_CYCLES_CUDA_BINARIES ON CACHE BOOL '' FORCE)" | Out-File -Append -FilePath ./blender/build_files/cmake/config/bpy_module.cmake
- name: Build Blender
run: |
python workspace/build_blender.py build --tag ${{ env.TAG }} --install --publish
env:
GITHUB_TOKEN: ${{ github.token }}
# - name: Set CUDA environment variables
# run: |
# $NVCC_PATH = Get-Command nvcc | Select-Object -ExpandProperty Source
# $CUDA_HOME = Split-Path (Split-Path $NVCC_PATH -Parent) -Parent
# echo "CUDA_HOME=$CUDA_HOME" | Out-File -Append -FilePath $env:GITHUB_ENV
# echo "CPLUS_INCLUDE_PATH=$CUDA_HOME\include;$env:CPLUS_INCLUDE_PATH" | Out-File -Append -FilePath $env:GITHUB_ENV
# echo "C_INCLUDE_PATH=$CUDA_HOME\include;$env:C_INCLUDE_PATH" | Out-File -Append -FilePath $env:GITHUB_ENV
# - name: Refresh env
# run: |
# refreshenv
# - name: Cache Blender dependencies
# uses: actions/cache@v2
# with:
# path: |
# ./lib
# key: ${{ runner.os }}-blender-lib-${{ github.sha }}
# restore-keys: |
# ${{ runner.os }}-blender-lib-
# - name: Cache build files (for testing only)
# uses: actions/cache@v2
# with:
# path: |
# ./build_windows_Bpy_x64_vc17_Release
# key: ${{ runner.os }}-blender-build-${{ github.sha }}
# restore-keys: |
# ${{ runner.os }}-blender-build-
# - name: download svn librares
# run: |
# if [ ! -d "./lib" ]; then
# mkdir ./lib
# cd ./lib
# svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/win64_vc15
# fi
# shell: bash
# - name: SVN Cleanup (Preemptive)
# run: |
# svn cleanup D:/a/bpy/bpy/blender/../lib/assets
# svn cleanup D:/a/bpy/bpy/blender/../lib/win64_vc15
# - name: SVN Cleanup
# run: svn cleanup D:/a/bpy/bpy/lib/win64_vc15
# - name: Set Python Path
# run: |
# chcp 65001 #set code page to utf-8
# echo "PYTHON=C:\hostedtoolcache\windows\Python\3.10.11\x64\python.exe" >> $env:GITHUB_ENV
- name: list env vars
run: |
Get-ChildItem Env:
# - name: Extract Blender Major Version Number
# id: version_extraction
# run: |
# python -c "import sys; version_tag = sys.argv[1].lstrip('v'); parts = version_tag.split('.'); major_version = '.'.join(parts[:2]); print(f'MAJOR_VERSION={major_version}')" "${{ env.TAG }}" >> $GITHUB_ENV
# shell: bash
# - name: Download Precompiled Binaries for the Release
# run: |
# mkdir lib
# cd lib
# svn checkout https://svn.blender.org/svnroot/bf-blender/tags/blender-${{ env.MAJOR_VERSION }}-release/lib/win64_vc15
# shell: cmd
# - name: Download Blender Python API Stubs
# id: download-artifact
# uses: dawidd6/action-download-artifact@v2
# with:
# workflow: build_all.yml
# # github_token: ${{secrets.GITHUB_TOKEN}}
# name: blender-python-api-stubs-${{ env.TAG }}
# path: ./build_windows_Bpy_x64_vc17_Release/bin/
# - name: Download Blender Python API Stubs
# id: download-artifact
# uses: actions/download-artifact@v4
# with:
# name: blender-python-api-stubs-${{ env.TAG }}
# path: ./build_windows_Bpy_x64_vc17_Release/bin/
# - name: Build Blender
# run: |
# cd blender
# yes| make update
# make bpy
# shell: cmd
# - name: Make Wheel
# run: |
# pip install -U pip setuptools wheel
# copy ./workspace/make_bpy_wheel.py ./blender/build_files/utils/
# python blender\build_files\utils\make_bpy_wheel.py .\build_windows_Bpy_x64_vc17_Release\bin\
# # - name: Upload Wheel as Artifact
# # uses: actions/upload-artifact@v2
# # with:
# # name: bpy-windows
# # path: |
# # ./build_windows_Bpy_x64_vc17_Release/bin/*.whl
# - name: Install Dependencies
# run: |
# python -m pip install --upgrade pip ndg-httpsclient pyopenssl pyasn1
# pip install -r requirements.txt
# - name: Publish Wheel
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: python workspace/build_blender.py publish-github ${{ env.TAG }} ./build_windows_Bpy_x64_vc17_Release/bin/