@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 - mingw32 for Python 2.4 and 2.5 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 rem set PYTHON=C:\Python24\python.exe & make.bat build rem rem If you compile by using mingw on Python 2.4 and 2.5 you need to patch rem distutils first: http://stackoverflow.com/questions/13592192 rem ========================================================================== if "%PYTHON%" == "" ( set PYTHON=C:\Python27\python.exe ) if "%TSCRIPT%" == "" ( set TSCRIPT=test\test_psutil.py ) rem Needed to compile using Mingw. set PATH=C:\MinGW\bin;%PATH% 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-exes create exe installers in dist directory echo build-wheels create wheel installers in dist directory echo clean clean build files echo install compile and install echo memtest run memory leak tests echo setup-env install pip, unittest2, wheels for all python versions echo test run tests echo test-process run process related tests echo test-system run system APIs related tests echo uninstall uninstall echo upload-exes upload exe installers on pypi echo upload-wheels upload wheel installers on pypi goto :eof ) if "%1" == "clean" ( :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 if %PYTHON%==C:\Python24\python.exe ( %PYTHON% setup.py build -c mingw32 ) else if %PYTHON%==C:\Python25\python.exe ( %PYTHON% setup.py build -c mingw32 ) else ( %PYTHON% setup.py build ) if %errorlevel% neq 0 goto :error goto :eof ) if "%1" == "install" ( :install if %PYTHON%==C:\Python24\python.exe ( %PYTHON% setup.py build -c mingw32 install ) else if %PYTHON%==C:\Python25\python.exe ( %PYTHON% setup.py build -c mingw32 install ) else ( %PYTHON% setup.py build install ) goto :eof ) if "%1" == "uninstall" ( :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" ( :test call :install %PYTHON% %TSCRIPT% goto :eof ) if "%1" == "test-process" ( :test call :install %PYTHON% -m unittest -v test.test_psutil.TestProcess goto :eof ) if "%1" == "test-system" ( :test call :install %PYTHON% -m unittest -v test.test_psutil.TestSystem goto :eof ) if "%1" == "test-memleaks" ( :memtest call :install %PYTHON% test\test_memory_leaks.py goto :eof ) if "%1" == "build-exes" ( :build-exes rem mingw 32 versions C:\Python24\python.exe setup.py build -c mingw32 bdist_wininst || goto :error C:\Python25\python.exe setup.py build -c mingw32 bdist_wininst || goto :error rem "standard" 32 bit versions, using VS 2008 (2.6, 2.7) or VS 2010 (3.3+) C:\Python26\python.exe setup.py build bdist_wininst || goto :error C:\Python27\python.exe setup.py build bdist_wininst || goto :error C:\Python33\python.exe setup.py build bdist_wininst || goto :error C:\Python34\python.exe setup.py build bdist_wininst || goto :error rem 64 bit versions rem Python 2.7 + VS 2008 requires vcvars64.bat to be run first: rem http://stackoverflow.com/questions/11072521/ rem Windows SDK and .NET Framework 3.5 SP1 also need to be installed (sigh) "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat" C:\Python27-64\python.exe setup.py build bdist_wininst || goto :error C:\Python33-64\python.exe setup.py build bdist_wininst || goto :error C:\Python34-64\python.exe setup.py build bdist_wininst || goto :error echo OK goto :eof ) if "%1" == "upload-exes" ( :upload-exes rem mingw 32 versions C:\Python25\python.exe setup.py build -c mingw32 bdist_wininst upload || goto :error rem "standard" 32 bit versions, using VS 2008 (2.6, 2.7) or VS 2010 (3.3+) C:\Python26\python.exe setup.py bdist_wininst upload || goto :error C:\Python27\python.exe setup.py bdist_wininst upload || goto :error C:\Python33\python.exe setup.py bdist_wininst upload || goto :error C:\Python34\python.exe setup.py bdist_wininst upload || goto :error rem 64 bit versions C:\Python27-64\python.exe setup.py build bdist_wininst upload || goto :error C:\Python33-64\python.exe setup.py build bdist_wininst upload || goto :error C:\Python34-64\python.exe setup.py build bdist_wininst upload || goto :error echo OK goto :eof ) if "%1" == "setup-env" ( :setup-env C:\python27\python.exe -c "import urllib2; url = urllib2.urlopen('https://raw.github.com/pypa/pip/master/contrib/get-pip.py'); data = url.read(); f = open('get-pip.py', 'w'); f.write(data)" C:\python26\python.exe get-pip.py & C:\python26\scripts\pip install unittest2 wheel --upgrade C:\python27\python.exe get-pip.py & C:\python27\scripts\pip install wheel --upgrade C:\python33\python.exe get-pip.py & C:\python33\scripts\pip install wheel --upgrade C:\python34\scripts\easy_install.exe wheel rem 64-bit versions C:\python27-64\python.exe get-pip.py & C:\python27-64\scripts\pip install wheel --upgrade C:\python33-64\python.exe get-pip.py & C:\python33-64\scripts\pip install wheel --upgrade C:\python34-64\scripts\easy_install.exe wheel goto :eof ) if "%1" == "build-wheels" ( :build-wheels C:\Python26\python.exe setup.py build bdist_wheel || goto :error C:\Python27\python.exe setup.py build bdist_wheel || goto :error C:\Python33\python.exe setup.py build bdist_wheel || goto :error C:\Python34\python.exe setup.py build bdist_wheel || goto :error rem 64 bit versions rem Python 2.7 + VS 2008 requires vcvars64.bat to be run first: rem http://stackoverflow.com/questions/11072521/ rem Windows SDK and .NET Framework 3.5 SP1 also need to be installed (sigh) "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat" C:\Python27-64\python.exe setup.py build bdist_wheel || goto :error C:\Python33-64\python.exe setup.py build bdist_wheel || goto :error C:\Python34-64\python.exe setup.py build bdist_wheel || goto :error echo OK goto :eof ) if "%1" == "upload-wheels" ( :build-wheels C:\Python26\python.exe setup.py build bdist_wheel upload || goto :error C:\Python27\python.exe setup.py build bdist_wheel upload || goto :error C:\Python33\python.exe setup.py build bdist_wheel upload || goto :error C:\Python34\python.exe setup.py build bdist_wheel upload || goto :error rem 64 bit versions rem Python 2.7 + VS 2008 requires vcvars64.bat to be run first: rem http://stackoverflow.com/questions/11072521/ rem Windows SDK and .NET Framework 3.5 SP1 also need to be installed (sigh) "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat" C:\Python27-64\python.exe setup.py build bdist_wheel upload || goto :error C:\Python33-64\python.exe setup.py build bdist_wheel upload || goto :error C:\Python34-64\python.exe setup.py build bdist_wheel upload || goto :error echo OK goto :eof ) goto :help :error echo last command exited with error code %errorlevel% exit /b %errorlevel% goto :eof