commit: 5a1e6c9710becab384b684ad6ba55e025d63a60e Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Sat Jan 17 10:36:18 2015 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Sun Jan 18 18:04:24 2015 +0000 URL: http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=5a1e6c97
Default MAKEOPTS to -j(ncpus+1) when unset Default MAKEOPTS job number to (number of CPUs + 1) when it is not provided in the ebuild environment. Suggested-By: Daniel Robbins <drobbins <AT> funtoo.org> --- pym/portage/package/ebuild/doebuild.py | 8 +++++++- pym/portage/util/cpuinfo.py | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py index bf97660..f43dddc 100644 --- a/pym/portage/package/ebuild/doebuild.py +++ b/pym/portage/package/ebuild/doebuild.py @@ -1,4 +1,4 @@ -# Copyright 2010-2013 Gentoo Foundation +# Copyright 2010-2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 from __future__ import unicode_literals @@ -66,6 +66,7 @@ from portage.package.ebuild.prepare_build_dirs import prepare_build_dirs from portage.util import apply_recursive_permissions, \ apply_secpass_permissions, noiselimit, normalize_path, \ writemsg, writemsg_stdout, write_atomic +from portage.util.cpuinfo import get_cpu_count from portage.util.lafilefixer import rewrite_lafile from portage.versions import _pkgsplit from _emerge.BinpkgEnvExtractor import BinpkgEnvExtractor @@ -463,6 +464,11 @@ def doebuild_environment(myebuild, mydo, myroot=None, settings=None, mysettings["PATH"] = os.path.join(os.sep, eprefix_lstrip, "usr", libdir, "ccache", "bin") + ":" + mysettings["PATH"] + if 'MAKEOPTS' not in mysettings: + nproc = get_cpu_count() + if nproc: + mysettings['MAKEOPTS'] = '-j%d' % (nproc + 1) + if not eapi_exports_KV(eapi): # Discard KV for EAPIs that don't support it. Cached KV is restored # from the backupenv whenever config.reset() is called. diff --git a/pym/portage/util/cpuinfo.py b/pym/portage/util/cpuinfo.py new file mode 100644 index 0000000..669e707 --- /dev/null +++ b/pym/portage/util/cpuinfo.py @@ -0,0 +1,18 @@ +# Copyright 2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +__all__ = ['get_cpu_count'] + + +def get_cpu_count(): + """ + Try to obtain the number of CPUs available. + + @return: Number of CPUs or None if unable to obtain. + """ + + try: + import multiprocessing + return multiprocessing.cpu_count() + except (ImportError, NotImplementedError): + return None