}
dyn_configure() {
- # PREFIX HACK: just remove "prefix" from EAPI here, this file
- # currently assumes EAPI to contain a single token, and "prefix"
- # is ortogonal to all supported EAPIs here.
- hasq ${EAPI/prefix/} 0 1 2_pre1 && return 0
if [[ $PORTAGE_BUILDDIR/.configured -nt $WORKDIR ]] ; then
vecho ">>> It appears that '$PF' is already configured; skipping."
# source the existing profile.bashrc's.
save_IFS
IFS=$'\n'
- for x in ${PROFILE_PATHS}; do
- # Must unset it so that it doesn't mess up assumptions in the RCs.
- unset IFS
+ local path_array=($PROFILE_PATHS)
+ restore_IFS
+ for x in ${path_array[@]} ; do
[ -f "${x}/profile.bashrc" ] && qa_source "${x}/profile.bashrc"
done
- restore_IFS
-
+
# We assume if people are changing shopts in their bashrc they do so at their
# own peril. This is the ONLY non-portage bit of code that can change shopts
# without a QA violation.
import portage.util
import portage.locks
import portage.exception
-from portage.const import EPREFIX, BPREFIX, EPREFIX_LSTRIP
+from portage.const import EPREFIX, BPREFIX, EPREFIX_LSTRIP, EAPIPREFIX
from portage.data import secpass
from portage.elog.messages import eerror
from portage.util import normalize_path as normpath
ebuild_phases = TaskSequence(scheduler=self.scheduler)
- for phase in self._phases:
+ pkg = self.pkg
+ phases = self._phases
+ EAPIPREFIX
+ if pkg.metadata["EAPI"].replace(EAPIPREFIX, "").strip() in ("0", "1", "2_pre1"):
+ # skip src_configure
+ phases = phases[1:]
+
+ for phase in phases:
ebuild_phases.add(EbuildPhase(background=self.background,
pkg=self.pkg, phase=phase, scheduler=self.scheduler,
settings=self.settings, tree=self._tree))
# The load average takes some time to respond when new
# jobs are added, so we need to limit the rate of adding
# new jobs.
- self._job_delay_max = 5
+ self._job_delay_max = 10
self._job_delay_factor = 1.0
self._job_delay_exp = 1.5
self._previous_job_start_time = None
return rval
_userpriv_test_write_file_cache = {}
-_userpriv_test_write_cmd_script = "> %(file_path)s ; rval=$? ; " + \
+_userpriv_test_write_cmd_script = "touch %(file_path)s 2>/dev/null ; rval=$? ; " + \
"rm -f %(file_path)s ; exit $rval"
def _userpriv_test_write_file(settings, file_path):
fd_pipes=fd_pipes, returnpid=returnpid)
if retval:
return retval
+
+ if mydo == "configure" and mysettings["EAPI"] in ("0", "1", "2_pre1"):
+ return os.EX_OK
+
kwargs = actionmap[mydo]["args"]
mysettings["EBUILD_PHASE"] = mydo
_doebuild_exit_status_unlink(
if not eapi_is_supported(eapi):
# can't do anything with this.
raise portage.exception.UnsupportedAPIException(mycpv, eapi)
+ mysettings.pop("EAPI", None)
+ mysettings.configdict["pkg"]["EAPI"] = eapi
try:
mysettings["PORTAGE_RESTRICT"] = " ".join(flatten(
portage.dep.use_reduce(portage.dep.paren_reduce(
EBUILD_PHASES = ["setup", "unpack", "configure",
"compile", "test", "install",
"package", "preinst", "postinst","prerm", "postrm",
- "nofetch", "other"]
+ "nofetch", "config", "info", "other"]
EAPI = 1
if not self._libs:
self.rebuild()
# Iterate over all binaries within LinkageMap.
- for obj in self._obj_properties.keys():
+ for obj in self._obj_properties:
rValue.setdefault(obj, self.findProviders(obj))
return rValue