| @echo off |
| |
| rem ========================================================================== |
| rem Shortcuts for various tasks, emulating UNIX "make" on Windows. |
| rem It is primarly intended as a shortcut for compiling / installing |
| rem psutil ("make.bat build", "make.bat install") and running tests |
| rem ("make.bat test"). |
| rem |
| rem This script is modeled after my Windows installation which uses: |
| rem - Visual studio 2008 for Python 2.6, 2.7, 3.2 |
| rem - Visual studio 2010 for Python 3.3+ |
| rem ...therefore it might not work on your Windows installation. |
| rem |
| rem By default C:\Python27\python.exe is used. |
| rem To compile for a specific Python version run: |
| rem set PYTHON=C:\Python34\python.exe & make.bat build |
| rem |
| rem To use a different test script: |
| rem set PYTHON=C:\Python34\python.exe & set TSCRIPT=foo.py & make.bat test |
| rem ========================================================================== |
| |
| if "%PYTHON%" == "" ( |
| set PYTHON=C:\Python27\python.exe |
| ) |
| if "%TSCRIPT%" == "" ( |
| set TSCRIPT=test\test_psutil.py |
| ) |
| |
| set PYTHON26=C:\Python26\python.exe |
| set PYTHON27=C:\Python27\python.exe |
| set PYTHON33=C:\Python33\python.exe |
| set PYTHON34=C:\Python34\python.exe |
| set PYTHON26-64=C:\Python26-64\python.exe |
| set PYTHON27-64=C:\Python27-64\python.exe |
| set PYTHON33-64=C:\Python33-64\python.exe |
| set PYTHON34-64=C:\Python34-64\python.exe |
| |
| set ALL_PYTHONS=%PYTHON26% %PYTHON27% %PYTHON33% %PYTHON34% %PYTHON26-64% %PYTHON27-64% %PYTHON33-64% %PYTHON34-64% |
| |
| rem Needed to locate the .pypirc file and upload exes on PYPI. |
| set HOME=%USERPROFILE% |
| |
| rem ========================================================================== |
| |
| if "%1" == "help" ( |
| :help |
| echo Run `make ^<target^>` where ^<target^> is one of: |
| echo build compile without installing |
| echo build-all build exes + wheels |
| echo clean clean build files |
| echo flake8 run flake8 |
| echo install compile and install |
| echo setup-dev-env install pip, pywin32, wheels, etc. for all python versions |
| echo test run tests |
| echo test-memleaks run memory leak tests |
| echo test-process run process related tests |
| echo test-system run system APIs related tests |
| echo uninstall uninstall |
| echo upload-all upload exes + wheels |
| goto :eof |
| ) |
| |
| if "%1" == "clean" ( |
| for /r %%R in (__pycache__) do if exist %%R (rmdir /S /Q %%R) |
| for /r %%R in (*.pyc) do if exist %%R (del /s %%R) |
| for /r %%R in (*.pyd) do if exist %%R (del /s %%R) |
| for /r %%R in (*.orig) do if exist %%R (del /s %%R) |
| for /r %%R in (*.bak) do if exist %%R (del /s %%R) |
| for /r %%R in (*.rej) do if exist %%R (del /s %%R) |
| if exist psutil.egg-info (rmdir /S /Q psutil.egg-info) |
| if exist build (rmdir /S /Q build) |
| if exist dist (rmdir /S /Q dist) |
| goto :eof |
| ) |
| |
| if "%1" == "build" ( |
| :build |
| "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat" |
| %PYTHON% setup.py build |
| if %errorlevel% neq 0 goto :error |
| rem copies *.pyd files in ./psutil directory in order to allow |
| rem "import psutil" when using the interactive interpreter from |
| rem within this directory. |
| %PYTHON% setup.py build_ext -i |
| if %errorlevel% neq 0 goto :error |
| goto :eof |
| ) |
| |
| if "%1" == "install" ( |
| :install |
| call :build |
| %PYTHON% setup.py install |
| goto :eof |
| ) |
| |
| if "%1" == "uninstall" ( |
| for %%A in ("%PYTHON%") do ( |
| set folder=%%~dpA |
| ) |
| for /F "delims=" %%i in ('dir /b %folder%\Lib\site-packages\*psutil*') do ( |
| rmdir /S /Q %folder%\Lib\site-packages\%%i |
| ) |
| goto :eof |
| ) |
| |
| if "%1" == "test" ( |
| call :install |
| %PYTHON% %TSCRIPT% |
| goto :eof |
| ) |
| |
| if "%1" == "test-process" ( |
| call :install |
| %PYTHON% -m unittest -v test.test_psutil.TestProcess |
| goto :eof |
| ) |
| |
| if "%1" == "test-system" ( |
| call :install |
| %PYTHON% -m unittest -v test.test_psutil.TestSystem |
| goto :eof |
| ) |
| |
| if "%1" == "test-memleaks" ( |
| call :install |
| %PYTHON% test\test_memory_leaks.py |
| goto :eof |
| ) |
| |
| if "%1" == "build-all" ( |
| :build-all |
| "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat" |
| for %%P in (%ALL_PYTHONS%) do ( |
| @echo ------------------------------------------------ |
| @echo building exe for %%P |
| @echo ------------------------------------------------ |
| %%P setup.py build bdist_wininst || goto :error |
| @echo ------------------------------------------------ |
| @echo building wheel for %%P |
| @echo ------------------------------------------------ |
| %%P setup.py build bdist_wheel || goto :error |
| ) |
| echo OK |
| goto :eof |
| ) |
| |
| if "%1" == "upload-all" ( |
| :upload-exes |
| "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat" |
| for %%P in (%ALL_PYTHONS%) do ( |
| @echo ------------------------------------------------ |
| @echo uploading exe for %%P |
| @echo ------------------------------------------------ |
| %%P setup.py build bdist_wininst upload || goto :error |
| @echo ------------------------------------------------ |
| @echo uploading wheel for %%P |
| @echo ------------------------------------------------ |
| %%P setup.py build bdist_wheel upload || goto :error |
| ) |
| echo OK |
| goto :eof |
| ) |
| |
| if "%1" == "setup-dev-env" ( |
| :setup-env |
| @echo ------------------------------------------------ |
| @echo downloading pip installer |
| @echo ------------------------------------------------ |
| C:\python27\python.exe -c "import urllib2; r = urllib2.urlopen('https://raw.github.com/pypa/pip/master/contrib/get-pip.py'); open('get-pip.py', 'wb').write(r.read())" |
| for %%P in (%ALL_PYTHONS%) do ( |
| @echo ------------------------------------------------ |
| @echo installing pip for %%P |
| @echo ------------------------------------------------ |
| %%P get-pip.py |
| ) |
| for %%P in (%ALL_PYTHONS%) do ( |
| @echo ------------------------------------------------ |
| @echo installing deps for %%P |
| @echo ------------------------------------------------ |
| rem mandatory / for unittests |
| %%P -m pip install unittest2 ipaddress mock wmi wheel pypiwin32 --upgrade |
| rem nice to have |
| %%P -m pip install ipdb pep8 pyflakes flake8 --upgrade |
| ) |
| goto :eof |
| ) |
| |
| if "%1" == "flake8" ( |
| :flake8 |
| %PYTHON% -c "from flake8.main import main; main()" |
| goto :eof |
| ) |
| |
| goto :help |
| |
| :error |
| @echo ------------------------------------------------ |
| @echo last command exited with error code %errorlevel% |
| @echo ------------------------------------------------ |
| @exit /b %errorlevel% |
| goto :eof |