@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 ^` where ^ 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