Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Make (install from source) python without running tests

I compiling python from source tar. All works good, but tests running 2 hours and two times. How to bypass these tests?

0:16:20 [178/405] test_inspect 0:16:26 [179/405] test_int 0:16:27 [180/405] test_int_literal 0:16:27 [181/405] test_io 0:18:18 [182/405] test_ioctl -- test_io passed in 1 min 51 sec 0:18:19 [183/405] test_ipaddress 0:18:22 [184/405] test_isinstance 0:18:23 [185/405] test_iter 0:18:24 [186/405] test_iterlen 0:18:25 [187/405] test_itertools 0:19:09 [188/405] test_json -- test_itertools passed in 44 sec 0:19:30 [189/405] test_keyword 

As result

make 7724,86s user 188,63s system 101% cpu 2:10:18,93 total 

I make its distribution like this

PYTHON_VERSION = 3.6.1 PYTHON_URL = https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz  wget -O dl/Python-${PYTHON_VERSION}.tar.xz ${PYTHON_URL}  cd dl  tar xf Python-${PYTHON_VERSION}.tar.xz  mkdir -p dl/Python-${PYTHON_VERSION}-build/ cd Python-${PYTHON_VERSION}      ./configure --enable-optimizations --prefix=$$(pwd)-build --cache-file=$$(pwd)/cache-file 

This commands runs tests twice:

make -C dl/Python-${PYTHON_VERSION} -j8  make -C dl/Python-${PYTHON_VERSION} -j8 install 

p.s. This is part of another make file.

like image 463
eri Avatar asked Jun 22 '17 19:06

eri


People also ask

What does enable optimizations do python?

If you want a release build with all optimizations active (LTO, PGO, etc), please run ./configure --enable-optimizations . what does --enable-optimizations do? This used to add about 30 minutes to a compile of CPython, but as of Python3. 8, it now runs a small subset of the regression tests for profiling.

Where can I build Python code?

PyPi is the official Python repository where all Python packages are stored. You can think of it as the Github for Python Packages. To make your Python package available to people around the world, you'll need to have an account with PyPi.


1 Answers

The configure option --enable-optimizations enables running test suites to generate data for profiling Python. The resulting python binary has better performance in executing python code. Improvements noted here

From configure help: --enable-optimizations  Enable expensive optimizations (PGO, etc). Disabled by default. 

From wikipedia

 profile-guided optimisation uses the results of profiling test runs of the instrumented program to optimize the final generated code. 

In short, you should not skip tests when using --enable-optimizations as the data required for profiling is generated by running tests. You can run make -j8 build_all followed by make -j8 install to skip tests once(the tests would still run with install target), but that would defeat the purpose. You can instead drop the configure flag for better build times.

like image 103
nit Avatar answered Sep 30 '22 07:09

nit