Bump python requirement to v3.4

This commit is contained in:
Virgil Dupras 2016-05-27 19:28:19 -04:00
parent 10169bee9c
commit 09d5243648
3 changed files with 29 additions and 21432 deletions

View File

@ -3,7 +3,7 @@
[dupeGuru][dupeguru] is a cross-platform (Linux, OS X, Windows) GUI tool to find duplicate files in
a system. It's written mostly in Python 3 and has the peculiarity of using
[multiple GUI toolkits][cross-toolkit], all using the same core Python code. On OS X, the UI layer
is written in Objective-C and uses Cocoa. On Linux and Windows, it's written in Python and uses Qt5.
is written in Objective-C and uses Cocoa. On Linux, it's written in Python and uses Qt5.
dupeGuru comes in 3 editions (standard, music and picture) which are all buildable from this same
source tree. You choose the edition you want to build in a `configure.py` flag.
@ -69,33 +69,25 @@ git submodules:
# How to build dupeGuru from source
## The very, very, very easy way
If you're on Linux or Mac, there's a bootstrap script that will make building very, very easy. There
If you're on Linux or Mac, there's a bootstrap script that will make building very easy. There
might be some things that you need to install manually on your system, but the bootstrap script will
tell you when what you need to install. You can run the bootstrap with:
./bootstrap.sh
and follow instructions from the script. You can then ignore the rest of the build documentation.
and follow instructions from the script.
## Prerequisites installation
Prerequisites are installed through `pip`. However, some of them are not "pip installable" and have
to be installed manually.
* All systems: [Python 3.3+][python] and [setuptools][setuptools]
* Mac OS X: The last XCode to have the 10.7 SDK included. Python 3.4+.
* Windows: Visual Studio 2010, [PyQt 5.0+][pyqt], [cx_Freeze][cxfreeze] and
[Advanced Installer][advinst] (you only need the last two if you want to create an installer)
* All systems: [Python 3.4+][python]
* Mac OS X: The last XCode to have the 10.7 SDK included.
On Ubuntu (14.04+), the apt-get command to install all pre-requisites is:
$ apt-get install python3-dev python3-pyqt5 pyqt5-dev-tools
On Arch, it's:
$ pacman -S python-pyqt5
$ apt-get install python3-dev python3-pyqt5 pyqt5-dev-tools python3-venv
### OS X and pyenv
@ -107,20 +99,23 @@ this with:
## Setting up the virtual environment
*This is done automatically by the bootstrap script. This is a reference in case you need to do it
manually.*
Use Python's built-in `pyvenv` to create a virtual environment in which we're going to install our.
Python-related dependencies. `pyvenv` is built-in Python but, unlike its `virtualenv` predecessor,
it doesn't install setuptools and pip (unless you use Python 3.4+), so it has to be installed
manually:
Python-related dependencies. In that environment, we then install our requirements with pip.
For Linux (`--system-site-packages` is to be able to import PyQt):
$ pyvenv --system-site-packages env
$ source env/bin/activate
$ python get-pip.py
$ pip install -r requirements.txt
Then, you can install pip requirements in your virtualenv:
For OS X:
$ pip install -r requirements-[osx|win].txt
([osx|win] depends, of course, on your platform. On other platforms, just use requirements.txt).
$ pyvenv env
$ source env/bin/activate
$ pip install -r requirements-osx.txt
## Actual building and running
@ -152,10 +147,7 @@ virtualenv and then `py.test core hscommon`
[nowindows]: https://www.hardcoded.net/archive2015#2015-11-01
[documentation]: http://www.hardcoded.net/dupeguru/help/en/
[python]: http://www.python.org/
[setuptools]: https://pypi.python.org/pypi/setuptools
[pyqt]: http://www.riverbankcomputing.com
[cxfreeze]: http://cx-freeze.sourceforge.net/
[advinst]: http://www.advancedinstaller.com
[pyenv]: https://github.com/yyuu/pyenv
[tox]: https://tox.readthedocs.org/en/latest/

View File

@ -1,7 +1,12 @@
#!/bin/bash
PYTHON=python3
command -v $PYTHON -m venv >/dev/null 2>&1 || { echo >&2 "Python 3.3 required. Install it and try again. Aborting"; exit 1; }
ret=`$PYTHON -c "import sys; print(int(sys.version_info[:2] >= (3, 4)))"`
if [ $ret -ne 1 ]; then
echo "Python 3.4+ required. Aborting."
exit 1
fi
if [ -d ".git" ]; then
git submodule init
@ -20,27 +25,11 @@ if [ ! -d "env" ]; then
# install. To achieve our latter goal, we start with a normal venv, which we later upgrade to
# a system-site-packages once pip is installed.
if ! $PYTHON -m venv env ; then
# We're probably under braindead Ubuntu 14.04 which completely messed up ensurepip.
# Work around it :(
echo "Ubuntu 14.04's version of Python 3.4 is braindead stupid, but we work around it anyway..."
$PYTHON -m venv --without-pip env
echo "Creation of our virtualenv failed. If you're on Ubuntu, you probably need python3-venv."
exit 1
fi
source env/bin/activate
if python -m ensurepip; then
echo "We're under Python 3.4+, no need to try to install pip!"
else
python get-pip.py $PIPARGS --force-reinstall
fi
deactivate
if [ "$(uname)" != "Darwin" ]; then
# We only need system site packages for PyQt, so under OS X, we don't enable it
if ! $PYTHON -m venv env --upgrade --system-site-packages ; then
# We're probably under v3.4.1 and experiencing http://bugs.python.org/issue21643
# Work around it.
echo "Oops, can't upgrade our venv. Trying to work around it."
rm env/lib64
$PYTHON -m venv env --upgrade --system-site-packages
fi
$PYTHON -m venv env --upgrade --system-site-packages
fi
fi
@ -48,10 +37,10 @@ source env/bin/activate
echo "Installing pip requirements"
if [ "$(uname)" == "Darwin" ]; then
pip install $PIPARGS -r requirements-osx.txt
./env/bin/pip install $PIPARGS -r requirements-osx.txt
else
python -c "import PyQt5" >/dev/null 2>&1 || { echo >&2 "PyQt 5.1+ required. Install it and try again. Aborting"; exit 1; }
pip install $PIPARGS -r requirements.txt
./env/bin/python -c "import PyQt5" >/dev/null 2>&1 || { echo >&2 "PyQt 5.4+ required. Install it and try again. Aborting"; exit 1; }
./env/bin/pip install $PIPARGS -r requirements.txt
fi
echo "Bootstrapping complete! You can now configure, build and run dupeGuru with:"

21384
get-pip.py

File diff suppressed because it is too large Load Diff