ebuild_phase_with_hooks pkg_${EBUILD_SH_ARGS}
set +x
fi
+ if [[ $EBUILD_PHASE == postinst ]] && [[ -n $PORTAGE_UPDATE_ENV ]]; then
+ # Update environment.bz2 in case installation phases
+ # need to pass some variables to uninstallation phases.
+ (
+ unset S _E_DOCDESTTREE_ _E_EXEDESTTREE_
+ save_ebuild_env | filter_readonly_variables \
+ --filter-sandbox --allow-extra-vars | \
+ bzip2 -c -f9 > "$PORTAGE_UPDATE_ENV"
+ )
+ fi
;;
unpack|compile|test|clean|install)
if [ "${SANDBOX_DISABLED="0"}" == "0" ]; then
PORTAGE_COLORMAP PORTAGE_CONFIGROOT PORTAGE_DEBUG \
PORTAGE_DEPCACHEDIR PORTAGE_GID PORTAGE_INST_GID \
PORTAGE_INST_UID PORTAGE_LOG_FILE PORTAGE_MASTER_PID \
- PORTAGE_REPO_NAME PORTAGE_RESTRICT PORTAGE_WORKDIR_MODE PORTDIR \
+ PORTAGE_REPO_NAME PORTAGE_RESTRICT PORTAGE_UPDATE_ENV \
+ PORTAGE_WORKDIR_MODE PORTDIR \
PORTDIR_OVERLAY ${!PORTAGE_SANDBOX_*} PREROOTPATH \
PROFILE_PATHS PWORKDIR QA_INTERCEPTORS \
RC_DEFAULT_INDENT RC_DOT_PATTERN RC_ENDCOL \
.PD 1
.TP
\fBdosed\fR \fI"s:orig:change:g" <filename>\fR
-Performs sed (including cp/mv \fIfilename\fR) on \fIfilename\fR.
+Performs sed in place on \fIfilename\fR inside ${D}.
.br
.BR 'dosed\ "s:/usr/local:/usr:g"\ /usr/bin/some\-script'
runs sed on ${D}/usr/bin/some\-script
"p":"--pretend", "P":"--prune",
"q":"--quiet",
"s":"--search", "S":"--searchdesc",
-'t':"--tree",
+"t":"--tree",
"u":"--update",
"v":"--verbose", "V":"--version"
}
return 0, myfavorites
self._missing_args.append((arg, atom))
continue
+ if pkg.installed:
+ # Warn if all matching ebuilds are masked or
+ # the installed package itself is masked. Do
+ # not warn if there are simply no matching
+ # ebuilds since that would be annoying in some
+ # cases:
+ #
+ # - binary packages installed from an overlay
+ # that is not listed in PORTDIR_OVERLAY
+ #
+ # - multi-slot atoms listed in the world file
+ # to prevent depclean from removing them
+
+ installed_masked = not visible(
+ pkgsettings, pkg.cpv, pkg.metadata,
+ built=pkg.built, installed=pkg.installed)
+
+ all_ebuilds_masked = bool(
+ portdb.xmatch("match-all", atom) and
+ not portdb.xmatch("bestmatch-visible", atom))
+
+ if installed_masked or all_ebuilds_masked:
+ self._missing_args.append((arg, atom))
+
+ if "selective" not in self.myparams:
+ self._show_unsatisfied_dep(myroot, atom)
+ return 0, myfavorites
+
self._dep_stack.append(
Dependency(atom=atom, root=myroot, parent=arg))
if not self._create_graph():
metadata = None
if metadata and not built:
if "?" in metadata["LICENSE"]:
- pkgsettings.setcpv(p, mydb=portdb)
+ pkgsettings.setcpv(cpv, mydb=portdb)
metadata["USE"] = pkgsettings.get("USE", "")
else:
metadata["USE"] = ""
# This will have already been reported
# above via mreasons.
pass
+ if not mreasons:
+ continue
masked_packages.append((cpv, mreasons,
comment, filename, missing_licenses))
if masked_packages:
print ">>> In order to force sync, remove '%s'." % servertimestampfile
print ">>>"
print
+ exitcode = 1
elif (servertimestamp == 0) or (servertimestamp > mytimestamp):
# actual sync
mycommand = rsynccommand + [dosyncuri+"/", myportdir]
except portage.exception.InvalidDependString, e:
file_path = os.path.join(
myroot, portage.VDB_PATH, pkg, "PROVIDE")
- portage.writemsg("\n\nInvalid PROVIDE: %s\n" % str(s),
+ portage.writemsg("\n\nInvalid PROVIDE: %s\n" % str(e),
noiselevel=-1)
portage.writemsg("See '%s'\n" % file_path,
noiselevel=-1)
"PORTAGE_IUSE",
"PORTAGE_LOG_FILE", "PORTAGE_MASTER_PID",
"PORTAGE_PYM_PATH", "PORTAGE_REPO_NAME", "PORTAGE_RESTRICT",
- "PORTAGE_TMPDIR", "PORTAGE_WORKDIR_MODE",
+ "PORTAGE_TMPDIR", "PORTAGE_UPDATE_ENV", "PORTAGE_WORKDIR_MODE",
"PORTDIR", "PORTDIR_OVERLAY", "PREROOTPATH", "PROFILE_PATHS",
"ROOT", "ROOTPATH", "STARTDIR", "T", "TMP", "TMPDIR",
"USE_EXPAND", "USE_ORDER", "WORKDIR",
self.vartree.dbapi.libmap.update()
#do postinst script
+ self.settings["PORTAGE_UPDATE_ENV"] = \
+ os.path.join(self.dbpkgdir, "environment.bz2")
+ self.settings.backup_changes("PORTAGE_UPDATE_ENV")
a = doebuild(myebuild, "postinst", destroot, self.settings, use_cache=0,
tree=self.treetype, mydbapi=mydbapi, vartree=self.vartree)
+ self.settings.pop("PORTAGE_UPDATE_ENV", None)
# XXX: Decide how to handle failures here.
if a != os.EX_OK:
repoman_check_name = 'ebuild.minorsyn'
ignore_line = re.compile(r'(^$)|(^\s*#.*)|(^\s*\w+=.*)|(^\s*(local|export)\s+)')
- var_names = r'(D|S|T|ROOT|FILESDIR|WORKDIR)'
+ var_names = r'(D|DISTDIR|FILESDIR|S|T|ROOT|WORKDIR)'
var_reference = re.compile(r'\$(\{'+var_names+'\}|' + \
var_names + '\W)')
missing_quotes = re.compile(r'(\s|^)[^"\'\s]*\$\{?' + var_names + \