diff --git a/.pfnci/build_submit.sh b/.pfnci/build_submit.sh index c4876a8..db20bd5 100755 --- a/.pfnci/build_submit.sh +++ b/.pfnci/build_submit.sh @@ -30,7 +30,7 @@ submit_job() { # wheels (Windows) for CUDA in 12.x 13.x; do - for PYTHON in 3.10 3.11 3.12 3.13 3.14; do # TODO add 3.14t + for PYTHON in 3.10 3.11 3.12 3.13 3.14 3.14t; do submit_job cupy-wheel-win ".pfnci\\wheel-windows\\main.bat ${CUDA} ${PYTHON} ${BRANCH} ${JOB_GROUP}" done done diff --git a/.pfnci/config.pbtxt b/.pfnci/config.pbtxt index 31d168e..eb47997 100644 --- a/.pfnci/config.pbtxt +++ b/.pfnci/config.pbtxt @@ -41,7 +41,7 @@ configs { time_limit { seconds: 10800 } - command: ".pfnci\\wheel-windows\\main.bat 13.x 3.14" + command: ".pfnci\\wheel-windows\\main.bat 13.x 3.14t" } } configs { diff --git a/.pfnci/wheel-windows/_flexci.ps1 b/.pfnci/wheel-windows/_flexci.ps1 index f577a67..5a91561 100644 --- a/.pfnci/wheel-windows/_flexci.ps1 +++ b/.pfnci/wheel-windows/_flexci.ps1 @@ -1,4 +1,5 @@ function ActivatePython($version) { + $pyexe = "python.exe" if ($version -eq "3.9") { $pydir = "Python39" } elseif ($version -eq "3.10") { @@ -11,10 +12,14 @@ function ActivatePython($version) { $pydir = "Python313" } elseif ($version -eq "3.14") { $pydir = "Python314" + } elseif ($version -eq "3.14t") { + $pydir = "Python314" + $pyexe = "python3.14t.exe" } else { throw "Unsupported Python version: $version" } $Env:PATH = "C:\Development\Python\$pydir;C:\Development\Python\$pydir\Scripts;" + $Env:PATH + return "C:\Development\Python\$pydir\$pyexe" } function ActivateCUDA($version) { diff --git a/.pfnci/wheel-windows/build.ps1 b/.pfnci/wheel-windows/build.ps1 index b1332ca..6b9c1f7 100644 --- a/.pfnci/wheel-windows/build.ps1 +++ b/.pfnci/wheel-windows/build.ps1 @@ -30,14 +30,14 @@ function UninstallCuTENSOR($cuda_path) { # Activate target CUDA/Python ActivateCUDA $cuda $cuda_path = $Env:CUDA_PATH -ActivatePython $python +$python_exe = ActivatePython $python # Show build configuration echo ">> Environment Variables" echo " CUDA_PATH: $cuda_path" echo " PATH: $Env:PATH" echo ">> Python Version:" -RunOrDie python -V +RunOrDie $python_exe -V # Clone CuPy and checkout the target branch if ($Env:CUPY_RELEASE_NO_CLONE -eq "1") { @@ -57,20 +57,20 @@ if ($Env:CUPY_RELEASE_NO_CLONE -eq "1") { # Install dependencies echo ">> Updating packaging utilities..." -RunOrDie python -m pip install -U setuptools pip +RunOrDie $python_exe -m pip install -U setuptools pip echo ">> Installing dependences for wheel build..." -RunOrDie python -m pip install -U -r ./requirements.txt -r ./builder/requirements.cupy-build.txt wheel pytest +RunOrDie $python_exe -m pip install -U -r ./requirements.txt -r ./builder/requirements.cupy-build.txt wheel pytest echo ">> Packages installed:" -RunOrDie python -m pip list +RunOrDie $python_exe -m pip list # Build # Note: cuTENSOR will be installed by the tool. echo ">> Starting build..." -RunOrDie python ./dist.py --action build --target wheel-win --source cupy --python $python --cuda $cuda +RunOrDie $python_exe ./dist.py --action build --target wheel-win --source cupy --python $python --cuda $cuda # Get wheel name $dist_config = @( - python .\get_dist_info.py --target wheel-win --source cupy --python $python --cuda $cuda ` + & $python_exe .\get_dist_info.py --target wheel-win --source cupy --python $python --cuda $cuda ` | ConvertFrom-Csv -Delimiter "=" -Header "Key", "Value" ) $wheel_file = $dist_config[0].Value @@ -84,13 +84,13 @@ UninstallCuTENSOR $cuda_path # Verify echo ">> Validating with twine check..." -RunOrDie python -m twine check --strict $wheel_file +RunOrDie $python_exe -m twine check --strict $wheel_file echo ">> Starting verification..." -RunOrDie python ./dist.py --action verify --target wheel-win --python $python --cuda $cuda --dist $wheel_file --test release-tests/common --test release-tests/pkg_wheel +RunOrDie $python_exe ./dist.py --action verify --target wheel-win --python $python --cuda $cuda --dist $wheel_file --test release-tests/common --test release-tests/pkg_wheel # Show build configuration in CuPy echo ">> Build configuration" -RunOrDie python -c "import cupy; cupy.show_config()" +RunOrDie $python_exe -c "import cupy; cupy.show_config()" # Upload to GCS if ($job_group -eq "") { diff --git a/builder/agent.py b/builder/agent.py index 732a87c..3e3f78e 100755 --- a/builder/agent.py +++ b/builder/agent.py @@ -71,7 +71,7 @@ def main(self) -> None: env: dict[str, str] = {} for kv in args.env: - pair = kv.split('=', 2) + pair = kv.split('=', 1) assert len(pair) == 2, 'invalid --env format' env[pair[0]] = pair[1]