109 lines
3.3 KiB
Batchfile
109 lines
3.3 KiB
Batchfile
@echo off
|
|
setlocal EnableExtensions
|
|
cd /d "%~dp0.."
|
|
set "ROOT=%CD%"
|
|
set "WHEELS=%ROOT%\vendor\wheels"
|
|
set "GETPIP=%ROOT%\vendor\get-pip.py"
|
|
set "LIBUSB=%ROOT%\vendor\libusb-1.0.dll"
|
|
set "EMBED_PY=%ROOT%\vendor\python-windows\python.exe"
|
|
|
|
echo ============================================
|
|
echo JUC500 Windows offline setup
|
|
echo ============================================
|
|
|
|
if not exist "%WHEELS%\pyusb-1.2.1-py3-none-any.whl" (
|
|
echo [!] Missing vendor\wheels. Copy the full source tree including vendor\.
|
|
exit /b 1
|
|
)
|
|
if not exist "%LIBUSB%" (
|
|
echo [!] Missing vendor\libusb-1.0.dll
|
|
exit /b 1
|
|
)
|
|
|
|
REM Remove Mac-copied broken .venv
|
|
if exist "%ROOT%\.venv\bin\python" (
|
|
if not exist "%ROOT%\.venv\Scripts\python.exe" (
|
|
echo [!] Mac .venv detected - removing...
|
|
rmdir /s /q "%ROOT%\.venv"
|
|
)
|
|
)
|
|
|
|
REM Choose bootstrap Python: system first, else vendored embeddable
|
|
set "BOOT_PY="
|
|
where py >nul 2>&1 && set "BOOT_PY=py -3"
|
|
if not defined BOOT_PY (
|
|
where python >nul 2>&1 && set "BOOT_PY=python"
|
|
)
|
|
if not defined BOOT_PY (
|
|
if exist "%EMBED_PY%" (
|
|
set "BOOT_PY=%EMBED_PY%"
|
|
echo Using vendored Python: vendor\python-windows\python.exe
|
|
)
|
|
)
|
|
if not defined BOOT_PY (
|
|
echo [!] No Python found. vendor\python-windows is missing.
|
|
exit /b 1
|
|
)
|
|
|
|
echo Bootstrap: %BOOT_PY%
|
|
|
|
REM Ensure virtualenv module available (embeddable has no stdlib venv)
|
|
%BOOT_PY% -c "import virtualenv" 2>nul
|
|
if errorlevel 1 (
|
|
echo Installing virtualenv from vendor\wheels ...
|
|
%BOOT_PY% -m pip install --no-index --find-links="%WHEELS%" virtualenv
|
|
if errorlevel 1 (
|
|
if exist "%GETPIP%" (
|
|
%BOOT_PY% "%GETPIP%" --no-index --find-links="%WHEELS%" pip setuptools wheel
|
|
%BOOT_PY% -m pip install --no-index --find-links="%WHEELS%" virtualenv
|
|
)
|
|
)
|
|
)
|
|
|
|
if not exist "%ROOT%\.venv\Scripts\python.exe" (
|
|
echo Creating .venv (fully offline, no pip seed from internet)...
|
|
%BOOT_PY% -m virtualenv --no-periodic-update --no-setuptools --no-pip "%ROOT%\.venv"
|
|
if errorlevel 1 (
|
|
echo [!] virtualenv failed.
|
|
exit /b 1
|
|
)
|
|
"%ROOT%\.venv\Scripts\python.exe" "%GETPIP%" --no-index --find-links="%WHEELS%" pip setuptools wheel packaging
|
|
if errorlevel 1 (
|
|
echo [!] get-pip offline bootstrap failed.
|
|
exit /b 1
|
|
)
|
|
goto install_deps
|
|
)
|
|
|
|
"%ROOT%\.venv\Scripts\python.exe" -c "import usb" 2>nul
|
|
if errorlevel 1 (
|
|
echo [!] .venv incomplete — reinstalling dependencies...
|
|
goto install_deps
|
|
)
|
|
goto copy_libusb
|
|
|
|
:install_deps
|
|
echo Installing dependencies from vendor\wheels (no PyPI)...
|
|
"%ROOT%\.venv\Scripts\python.exe" -m pip install --no-index --find-links="%WHEELS%" -U pip setuptools wheel packaging
|
|
"%ROOT%\.venv\Scripts\python.exe" -m pip install --no-index --find-links="%WHEELS%" -r "%ROOT%\requirements.txt"
|
|
if errorlevel 1 (
|
|
echo [!] requirements install failed.
|
|
exit /b 1
|
|
)
|
|
"%ROOT%\.venv\Scripts\python.exe" -m pip install --no-index --find-links="%WHEELS%" --no-build-isolation -e "%ROOT%"
|
|
if errorlevel 1 (
|
|
echo [!] editable install failed.
|
|
exit /b 1
|
|
)
|
|
|
|
:copy_libusb
|
|
copy /Y "%LIBUSB%" "%ROOT%\.venv\Scripts\libusb-1.0.dll" >nul
|
|
echo libusb-1.0.dll -^> .venv\Scripts\
|
|
|
|
echo.
|
|
echo Setup done (offline). Run:
|
|
echo .\start.bat
|
|
echo or Git Bash: ./start_win.sh
|
|
echo.
|
|
endlocal
|