From: Fabian Groffen Date: Fri, 28 Mar 2008 21:25:26 +0000 (-0000) Subject: Merged from trunk 9509:9538 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=95d6ab5cfa53e2adddf58fe9b2010386c68fc6e6;p=portage.git Merged from trunk 9509:9538 | 9510 | Support ${HOST} substitution in "From" field. Thanks to | | zmedico | wschlich. | | 9511 | Move the default empty compiler flag settings from ebuild.sh | | zmedico | to make.globals (bug #214499). | | 9512 | Bug #214879 - In fetch(), only parse the Manifest when | | zmedico | FEATURES=strict is enabled. | | 9513 | Make --noreplace take precedence over --newuse, as suggested | | zmedico | by wolf31o2. | | 9514 | Fix the noreplace logic to break out of the cpv loop early | | zmedico | since there's no point in examining any lower versions from | | | the same repo. | | 9519 | Bug #214879 - Fix FEATURES=-strict behavior so that | | zmedico | distfiles digests are always checked. | | 9520 | Bug #212509 - Implement a new --without-mask option that | | zmedico | causes repoman to behave as if there are no package.mask | | | entries. | | 9521 | Bug #212509 - Display a note about the --without-mask option | | zmedico | when there are masked packages. | | 9522 | Bug #209418 - Add a new KEYWORDS.dropped check that compares | | zmedico | keywords against the keywords of earlier ebuild versions | | | within a slot. | | 9523 | Remove redundant info from the KEYWORDS.dropped message. | | zmedico | | | 9524 | Bug #213629 - Create an EAPI.incompatible category and use | | zmedico | it in cases where EAPI=0 and a slot atom is encountered. | | 9525 | Bug #213629 - Use EAPI.incompatible in cases where EAPI=0 | | zmedico | and a default IUSE is encountered. | | 9526 | Bug #213698 - Make FEAUTURES=keepwork and keeptemp preserve | | zmedico | ${T}/environment since it may contain essential state. | | 9527 | Make dyn_clean() consistent wrt removal of | | zmedico | ${PORTAGE_BUILDDIR}/image and ${PORTAGE_BUILDDIR}/.installed | | | since otherwise with FEATURES=keepwork dyn_install() will | | | not call src_install() as necessary to repopulate | | | ${PORTAGE_BUILDDIR}/image (resulting in install_qa_check | | | failure due to absence of ${PORTAGE_BUILDDIR}/image). | | 9528 | Bug #214619 - Add support for a PORTAGE_BINPKG_TAR_OPTS | | zmedico | variable that allows the user to specify tar command options | | | for binary package creation. | | 9537 | Disable tarsync when using lzma compression since it doesn't | | zmedico | seem to be supported. | | 9538 | * Skip the recusive chown call if it fails on the top level | | zmedico | directory since it's possible that emerge-webrsync is not | | | run by root. * Just chown to portage:portage instead of | | | using PORTAGE_INST_{UID,GID}. Prefix: use PORTAGE_USER and | | | PORTAGE_GROUP instead. | svn path=/main/branches/prefix/; revision=9583 --- diff --git a/bin/ebuild.sh b/bin/ebuild.sh index 5251f7951..7811e439b 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -273,12 +273,6 @@ export LIBOPTIONS="-m0644" export DIROPTIONS="-m0755" export MOPREFIX=${PN} -# When compiler flags are unset, many packages will substitute their own -# implicit flags. For uniformity, use an empty string as the default. -[ "${CFLAGS-unset}" == "unset" ] && export CFLAGS="" -[ "${CXXFLAGS-unset}" == "unset" ] && export CXXFLAGS="" -[ "${LDFLAGS-unset}" == "unset" ] && export LDFLAGS="" - check_KV() { if [ -z "${KV}" ]; then eerror "" @@ -676,11 +670,9 @@ dyn_unpack() { if [ "${newstuff}" == "yes" ]; then # We don't necessarily have privileges to do a full dyn_clean here. rm -rf "${WORKDIR}" - if [ -d "${T}" ] && ! hasq keeptemp ${FEATURES} ; then + if [ -d "${T}" ] && \ + ! hasq keeptemp $FEATURES && ! hasq keepwork $FEATURES ; then rm -rf "${T}" && mkdir "${T}" - else - [ -e "${T}/environment" ] && \ - mv "${T}/environment" "${T}/environment.keeptemp" fi fi if [ -e "${WORKDIR}" ]; then @@ -717,11 +709,10 @@ dyn_clean() { fi rm -rf "${PORTAGE_BUILDDIR}/image" "${PORTAGE_BUILDDIR}/homedir" + rm -f "${PORTAGE_BUILDDIR}/.installed" - if ! hasq keeptemp $FEATURES; then + if ! hasq keeptemp $FEATURES && ! hasq keepwork $FEATURES ; then rm -rf "${T}" - else - [ -e "${T}/environment" ] && mv "${T}/environment" "${T}/environment.keeptemp" fi if ! hasq keepwork $FEATURES; then @@ -730,7 +721,6 @@ dyn_clean() { rm -rf "${PORTAGE_BUILDDIR}/.unpacked" rm -rf "${PORTAGE_BUILDDIR}/.compiled" rm -rf "${PORTAGE_BUILDDIR}/.tested" - rm -rf "${PORTAGE_BUILDDIR}/.installed" rm -rf "${PORTAGE_BUILDDIR}/.packaged" rm -rf "${PORTAGE_BUILDDIR}/build-info" rm -rf "${WORKDIR}" diff --git a/bin/emerge-webrsync b/bin/emerge-webrsync index 0910bd939..324837d39 100755 --- a/bin/emerge-webrsync +++ b/bin/emerge-webrsync @@ -33,7 +33,7 @@ if ! type portageq > /dev/null ; then exit 1 fi eval $(portageq envvar -v FEATURES FETCHCOMMAND GENTOO_MIRRORS \ - PORTAGE_BIN_PATH PORTAGE_GPG_DIR PORTAGE_INST_UID PORTAGE_INST_GID \ + PORTAGE_BIN_PATH PORTAGE_GPG_DIR \ PORTAGE_NICENESS PORTAGE_RSYNC_EXTRA_OPTS PORTAGE_TMPDIR PORTDIR \ http_proxy ftp_proxy EPREFIX) DISTDIR="${PORTAGE_TMPDIR}/emerge-webrsync" @@ -173,7 +173,8 @@ sync_local() { vecho "Syncing local tree ..." - if type -P tarsync &> /dev/null; then + # tarsync-0.2.1 doesn't seem to support lzma compression. + if [ "${file##*.}" != "lzma" ] && type -P tarsync &> /dev/null; then if ! tarsync $(vvecho -v) -s 1 -o portage -g portage -e /distfiles -e /packages -e /local "${file}" "${PORTDIR}"; then eecho "tarsync failed; tarball is corrupt? (${file})" return 1 @@ -188,8 +189,9 @@ sync_local() { # Free disk space rm -f "${file}" - # Make sure user and group file ownership is ${PORTAGE_INST_UID}:${PORTAGE_INST_GID} - chown -R ${PORTAGE_INST_UID:-0}:${PORTAGE_INST_GID:-0} portage + chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} portage &> /dev/null && \ + chown -R ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} portage + cd portage rsync -av --progress --stats --delete --delete-after \ --exclude='/distfiles' --exclude='/packages' \ diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh index 239524ce5..e525e5f87 100755 --- a/bin/isolated-functions.sh +++ b/bin/isolated-functions.sh @@ -481,7 +481,7 @@ save_ebuild_env() { LAST_E_CMD LAST_E_LEN LD_PRELOAD MISC_FUNCTIONS_ARGS MOPREFIX \ NORMAL PKGDIR PKGUSE PKG_LOGDIR PKG_TMPDIR \ PORTAGE_ACTUAL_DISTDIR PORTAGE_ARCHLIST PORTAGE_BASHRC \ - PORTAGE_BINPKG_TMPFILE PORTAGE_BUILDDIR \ + PORTAGE_BINPKG_TAR_OPTS PORTAGE_BINPKG_TMPFILE PORTAGE_BUILDDIR \ PORTAGE_COLORMAP PORTAGE_CONFIGROOT PORTAGE_DEBUG \ PORTAGE_DEPCACHEDIR PORTAGE_GID PORTAGE_INST_GID \ PORTAGE_INST_UID PORTAGE_LOG_FILE PORTAGE_MASTER_PID \ diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh index 38c64c59e..7736974d2 100644 --- a/bin/misc-functions.sh +++ b/bin/misc-functions.sh @@ -659,7 +659,8 @@ dyn_package() { [ -z "${PORTAGE_BINPKG_TMPFILE}" ] && \ PORTAGE_BINPKG_TMPFILE="${PKGDIR}/${CATEGORY}/${PF}.tbz2" mkdir -p "${PORTAGE_BINPKG_TMPFILE%/*}" || die "mkdir failed" - tar ${tar_options} -cf - . | bzip2 -f > "${PORTAGE_BINPKG_TMPFILE}" || \ + tar $tar_options -cf - $PORTAGE_BINPKG_TAR_OPTS . | \ + bzip2 -f > "$PORTAGE_BINPKG_TMPFILE" || \ die "Failed to create tarball" cd .. export PYTHONPATH=${PORTAGE_PYM_PATH:-${EPREFIX}/usr/lib/portage/pym} diff --git a/bin/repoman b/bin/repoman index 7ffabda08..94802c4eb 100755 --- a/bin/repoman +++ b/bin/repoman @@ -183,8 +183,11 @@ def ParseArgs(args, qahelp): parser.add_option('-i', '--ignore-arches', dest='ignore_arches', action='store_true', default=False, help='ignore arch-specific failures (where arch != host)') - parser.add_option('-I', '--ignored-masked', dest='ignore_masked', action='store_true', - default=False, help='ignore masked packages (not allowed with commit mode') + parser.add_option('-I', '--ignore-masked', dest='ignore_masked', action='store_true', + default=False, help='ignore masked packages (not allowed with commit mode)') + + parser.add_option('--without-mask', dest='without_mask', action='store_true', + default=False, help='behave as if no package.mask entries exist') parser.add_option('--mode', type='choice', dest='mode', choices=modes.keys(), help='specify which mode repoman will run in (default=full)') @@ -245,12 +248,14 @@ qahelp={ "file.size":"Files in the files directory must be under 20k", "file.name":"File/dir name must be composed of only the following chars: %s " % allowed_filename_chars, "file.UTF8":"File is not UTF8 compliant", + "KEYWORDS.dropped":"Ebuilds that appear to have dropped KEYWORDS for some arch", "KEYWORDS.missing":"Ebuilds that have a missing or empty KEYWORDS variable", "KEYWORDS.stable":"Ebuilds that have been added directly with stable KEYWORDS", "KEYWORDS.stupid":"Ebuilds that use KEYWORDS=-* instead of package.mask", "LICENSE.missing":"Ebuilds that have a missing or empty LICENSE variable", "DESCRIPTION.missing":"Ebuilds that have a missing or empty DESCRIPTION variable", "DESCRIPTION.toolong":"DESCRIPTION is over %d characters" % max_desc_len, + "EAPI.incompatible":"Ebuilds that use features that are only available with a different EAPI", "EAPI.unsupported":"Ebuilds that have an unsupported EAPI version (you must upgrade portage)", "SLOT.missing":"Ebuilds that have a missing or empty SLOT variable", "HOMEPAGE.missing":"Ebuilds that have a missing or empty HOMEPAGE variable", @@ -312,6 +317,7 @@ qawarnings=[ "DEPEND.badindev","RDEPEND.badindev","PDEPEND.badindev", "DEPEND.badmaskedindev","RDEPEND.badmaskedindev","PDEPEND.badmaskedindev", "DESCRIPTION.toolong", +"KEYWORDS.dropped", "KEYWORDS.stupid", "KEYWORDS.missing", "RESTRICT.invalid", @@ -695,6 +701,7 @@ if vcs == "cvs": new_ebuilds.update(x for x in mynew if x.endswith(".ebuild")) del mycvstree, mynew +have_masked = False dofail = 0 arch_caches={} arch_xmatch_caches = {} @@ -746,7 +753,19 @@ for x in scanlist: fails["EAPI.unsupported"].append(os.path.join(x, y)) continue ebuild_metadata[pf] = myaux - ebuildlist.sort() + + # Sort ebuilds in ascending order for the KEYWORDS.dropped check. + pkgsplits = {} + for i in xrange(len(ebuildlist)): + ebuild_split = portage.pkgsplit(ebuildlist[i]) + pkgsplits[ebuild_split] = ebuildlist[i] + ebuildlist[i] = ebuild_split + ebuildlist.sort(portage.pkgcmp) + for i in xrange(len(ebuildlist)): + ebuildlist[i] = pkgsplits[ebuildlist[i]] + del pkgsplits + + slot_keywords = {} if len(ebuild_metadata) != len(ebuildlist): # If we can't access all the metadata then it's totally unsafe to @@ -1005,6 +1024,7 @@ for x in scanlist: continue myaux = ebuild_metadata[y] + eapi = myaux["EAPI"] # Test for negative logic and bad words in the RESTRICT var. #for x in myaux[allvars.index("RESTRICT")].split(): @@ -1066,6 +1086,22 @@ for x in scanlist: x + "/" + y + ".ebuild added with stable keywords: %s" % \ " ".join(stable_keywords)) + ebuild_archs = set(kw.lstrip("~") for kw in keywords \ + if not kw.startswith("-")) + + previous_keywords = slot_keywords.get(myaux["SLOT"]) + if previous_keywords is None: + slot_keywords[myaux["SLOT"]] = set() + else: + dropped_keywords = previous_keywords.difference(ebuild_archs) + if dropped_keywords: + stats["KEYWORDS.dropped"] += 1 + fails["KEYWORDS.dropped"].append( + relative_path + ": %s" % \ + " ".join(sorted(dropped_keywords))) + + slot_keywords[myaux["SLOT"]].update(ebuild_archs) + # KEYWORDS="-*" is a stupid replacement for package.mask and screws general KEYWORDS semantics if "-*" in keywords: haskeyword = False @@ -1160,15 +1196,22 @@ for x in scanlist: if myteststr.find(token) != -1: badsyntax.append("'%s' not separated by space" % (token)) - if mytype in ("DEPEND", "RDEPEND", "PDEPEND"): for token in mydepstr.split(): if token in operator_tokens or \ token.endswith("?"): continue - if not portage.isvalidatom(token, allow_blockers=True) or \ - ":" in token and myaux["EAPI"] == "0": + if not portage.isvalidatom(token, allow_blockers=True): badsyntax.append("'%s' not a valid atom" % token) + else: + atom = token.lstrip("!") + if eapi == "0": + if portage.dep.dep_getslot(atom): + stats['EAPI.incompatible'] += 1 + fails['EAPI.incompatible'].append( + (relative_path + ": %s slot dependency" + \ + " not supported with EAPI='%s':" + \ + " '%s'") % (mytype, eapi, atom)) type_list.extend([mytype] * (len(badsyntax) - len(type_list))) @@ -1198,8 +1241,15 @@ for x in scanlist: for mypos in range(len(myuse)-1,-1,-1): if myuse[mypos] and (myuse[mypos] in luselist[mykey]): del myuse[mypos] - if default_use and myaux["EAPI"] == "0": - myuse += default_use + + if default_use and eapi == "0": + for myflag in default_use: + stats['EAPI.incompatible'] += 1 + fails['EAPI.incompatible'].append( + (relative_path + ": IUSE defaults" + \ + " not supported with EAPI='%s':" + \ + " '%s'") % (eapi, myflag)) + for mypos in range(len(myuse)): stats["IUSE.invalid"]=stats["IUSE.invalid"]+1 fails["IUSE.invalid"].append(x+"/"+y+".ebuild: %s" % myuse[mypos]) @@ -1291,6 +1341,8 @@ for x in scanlist: config_profile_path=profdir, config_incrementals=portage.const.INCREMENTALS, local_config=False) + if options.without_mask: + dep_settings.pmaskdict.clear() arch_caches[prof[0]] = dep_settings while True: try: @@ -1328,6 +1380,7 @@ for x in scanlist: ismasked = os.path.join(catdir, y) not in \ portdb.xmatch("list-visible", x) if ismasked: + have_masked = True if options.ignore_masked: continue #we are testing deps for a masked package; give it some lee-way @@ -1453,6 +1506,10 @@ def grouplist(mylist,seperator="/"): mygroups[xs[0]]+=[seperator.join(xs[1:])] return mygroups +if have_masked and not (options.without_mask or options.ignore_masked): + print bold("Note: use --without-mask to check " + \ + "KEYWORDS on dependencies of masked packages") + if options.mode != 'commit': if dofull: print bold("Note: type \"repoman full\" for a complete listing.") diff --git a/cnf/make.globals b/cnf/make.globals index 6417cd767..1c848a749 100644 --- a/cnf/make.globals +++ b/cnf/make.globals @@ -12,6 +12,11 @@ # ** USE, CONFIG_*, and FEATURES are incremental ** # *************************************************** +# When compiler flags are unset, many packages will substitute their own +# implicit flags. For uniformity, use an empty string as the default. +CFLAGS="" +CXXFLAGS="" +LDFLAGS="" # Default rsync mirror SYNC="rsync://rsync.gentoo.org/gentoo-portage" diff --git a/man/make.conf.5 b/man/make.conf.5 index 5c8fc022b..d5d21a6f8 100644 --- a/man/make.conf.5 +++ b/man/make.conf.5 @@ -272,7 +272,7 @@ stored for later use by various debuggers. This feature is disabled by .TP .B strict Have portage react strongly to conditions that have the potential to be -dangerous (like missing or incorrect digests for ebuilds or distfiles). +dangerous (like missing or incorrect digests for ebuilds). .TP .B stricter Have portage react strongly to conditions that may conflict with system @@ -382,6 +382,10 @@ use the URI header field as a base URI for fetching binary packages. If the URI header field is not defined then the client will use it's ${PORTAGE_BINHOST} setting as the base URI. .TP +.B PORTAGE_BINPKG_TAR_OPTS +This variable contains options to be passed to the tar command for creation +of binary packages. +.TP \fBPORTAGE_COMPRESS\fR = \fI"bzip2"\fR This variable contains the command used to compress documentation during the install phase. diff --git a/man/repoman.1 b/man/repoman.1 index 037f5db2e..f21752425 100644 --- a/man/repoman.1 +++ b/man/repoman.1 @@ -34,9 +34,15 @@ Forces the metadata.xml parse check to be carried out \fB-v\fR, \fB--verbose\fR Displays every package name while checking .TP -\fB-I\fR, \fB--ignore-arches\fR +\fB\-i\fR, \fB\-\-ignore\-arches\fR Ignore arch-specific failures (where arch != host) .TP +\fB\-I\fR, \fB\-\-ignore\-masked\fR +Ignore masked packages (not allowed with commit mode) +.TP +\fB\-\-without\-mask\fR +Behave as if no package.mask entries exist +.TP \fB-m\fR, \fB--commitmsg\fR Adds a commit message via the command line .TP @@ -96,6 +102,9 @@ Syntax error in DEPEND (usually an extra/missing space/parenthesis) .B DESCRIPTION.missing Ebuilds that have a missing or empty DESCRIPTION variable .TP +.B EAPI.incompatible +Ebuilds that use features that are only available with a different EAPI +.TP .B EAPI.unsupported Ebuilds that have an unsupported EAPI version (you must upgrade portage) .TP @@ -105,6 +114,9 @@ Ebuilds that have a missing or empty HOMEPAGE variable .B IUSE.invalid This build has a variable in IUSE that is not in the use.desc or use.local.desc file .TP +.B KEYWORDS.dropped +Ebuilds that appear to have dropped KEYWORDS for some arch +.TP .B KEYWORDS.invalid This ebuild contains KEYWORDS that are not listed in profiles/arch.list or for which no valid profile was found .TP diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 0602c9cfb..cd49064bd 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -2599,6 +2599,7 @@ class depgraph(object): usepkgonly = "--usepkgonly" in self.myopts empty = "empty" in self.myparams selective = "selective" in self.myparams + noreplace = "--noreplace" in self.myopts reinstall = False # Behavior of the "selective" parameter depends on # whether or not a package matches an argument atom. @@ -2633,6 +2634,10 @@ class depgraph(object): # descending order cpv_list.reverse() for cpv in cpv_list: + # Make --noreplace take precedence over --newuse. + if not installed and noreplace and \ + cpv in vardb.match(atom): + break reinstall_for_flags = None try: metadata = dict(izip(db_keys, diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 3ebb253a9..d0653e050 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -883,7 +883,8 @@ class config(object): "PKGUSE", "PKG_LOGDIR", "PKG_TMPDIR", "PORTAGE_ACTUAL_DISTDIR", "PORTAGE_ARCHLIST", "PORTAGE_BASHRC", - "PORTAGE_BINPKG_FILE", "PORTAGE_BINPKG_TMPFILE", + "PORTAGE_BINPKG_FILE", "PORTAGE_BINPKG_TAR_OPTS", + "PORTAGE_BINPKG_TMPFILE", "PORTAGE_BIN_PATH", "PORTAGE_BUILDDIR", "PORTAGE_COLORMAP", "PORTAGE_CONFIGROOT", "PORTAGE_DEBUG", "PORTAGE_DEPCACHEDIR", @@ -3120,7 +3121,7 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks", mymirrors += [x.rstrip("/") for x in mysettings["GENTOO_MIRRORS"].split() if x] pkgdir = mysettings.get("O") - if pkgdir: + if pkgdir is not None: mydigests = Manifest( pkgdir, mysettings["DISTDIR"]).getTypeDigests("DIST") else: @@ -3766,8 +3767,6 @@ def digestcheck(myfiles, mysettings, strict=0, justmanifest=0): """Verifies checksums. Assumes all files have been downloaded. DEPRECATED: this is now only a compability wrapper for portage.manifest.Manifest().""" - if not strict: - return 1 pkgdir = mysettings["O"] manifest_path = os.path.join(pkgdir, "Manifest") if not os.path.exists(manifest_path): @@ -3779,15 +3778,16 @@ def digestcheck(myfiles, mysettings, strict=0, justmanifest=0): eout = portage.output.EOutput() eout.quiet = mysettings.get("PORTAGE_QUIET", None) == "1" try: - eout.ebegin("checking ebuild checksums ;-)") - mf.checkTypeHashes("EBUILD") - eout.eend(0) - eout.ebegin("checking auxfile checksums ;-)") - mf.checkTypeHashes("AUX") - eout.eend(0) - eout.ebegin("checking miscfile checksums ;-)") - mf.checkTypeHashes("MISC", ignoreMissingFiles=True) - eout.eend(0) + if strict: + eout.ebegin("checking ebuild checksums ;-)") + mf.checkTypeHashes("EBUILD") + eout.eend(0) + eout.ebegin("checking auxfile checksums ;-)") + mf.checkTypeHashes("AUX") + eout.eend(0) + eout.ebegin("checking miscfile checksums ;-)") + mf.checkTypeHashes("MISC", ignoreMissingFiles=True) + eout.eend(0) for f in myfiles: eout.ebegin("checking %s ;-)" % f) mf.checkFileHashes(mf.findFile(f), f) @@ -3814,7 +3814,8 @@ def digestcheck(myfiles, mysettings, strict=0, justmanifest=0): if f.endswith(".ebuild") and not mf.hasFile("EBUILD", f): writemsg("!!! A file is not listed in the Manifest: '%s'\n" % \ os.path.join(pkgdir, f), noiselevel=-1) - return 0 + if strict: + return 0 """ epatch will just grab all the patches out of a directory, so we have to make sure there aren't any foreign files that it might grab.""" filesdir = os.path.join(pkgdir, "files") @@ -3830,7 +3831,8 @@ def digestcheck(myfiles, mysettings, strict=0, justmanifest=0): if file_type != "AUX" and not f.startswith("digest-"): writemsg("!!! A file is not listed in the Manifest: '%s'\n" % \ os.path.join(filesdir, f), noiselevel=-1) - return 0 + if strict: + return 0 return 1 # parse actionmap to spawn ebuild with the appropriate args diff --git a/pym/portage/elog/mod_mail.py b/pym/portage/elog/mod_mail.py index 922ea0846..09e3db22d 100644 --- a/pym/portage/elog/mod_mail.py +++ b/pym/portage/elog/mod_mail.py @@ -14,6 +14,7 @@ def process(mysettings, key, logentries, fulltext): myrecipient = "root@localhost" myfrom = mysettings["PORTAGE_ELOG_MAILFROM"] + myfrom = myfrom.replace("${HOST}", socket.getfqdn()) mysubject = mysettings["PORTAGE_ELOG_MAILSUBJECT"] mysubject = mysubject.replace("${PACKAGE}", key) mysubject = mysubject.replace("${HOST}", socket.getfqdn()) diff --git a/pym/portage/elog/mod_mail_summary.py b/pym/portage/elog/mod_mail_summary.py index 2e870fe5d..40a2484a6 100644 --- a/pym/portage/elog/mod_mail_summary.py +++ b/pym/portage/elog/mod_mail_summary.py @@ -39,6 +39,7 @@ def _finalize(mysettings, items): myrecipient = "root@localhost" myfrom = mysettings["PORTAGE_ELOG_MAILFROM"] + myfrom = myfrom.replace("${HOST}", socket.getfqdn()) mysubject = mysettings["PORTAGE_ELOG_MAILSUBJECT"] mysubject = mysubject.replace("${PACKAGE}", count) mysubject = mysubject.replace("${HOST}", socket.getfqdn())