News (mainly features/major bug fixes)
+portage-2.1.3
+-------------
+
+* Allow per-module setting of PORTAGE_ELOG_CLASSES
+* Add ** as new token for package.keywords to bypass the keyword visibility layer
+
portage-2.1.2
-------------
+-------------
* Ebuilds support default USE flags via +flag in IUSE.
* New-style virtuals are now usable for packages that depend on themselves for
* FEATURES="test" automatically implies USE="test".
portage-2.1.1
-------------
+-------------
* Profiles support use.force, package.use.force, and package.use.mask files.
"DEPEND.badmaskedindev","RDEPEND.badmaskedindev","PDEPEND.badmaskedindev",
"IUSE.invalid",
"KEYWORDS.stupid",
+"KEYWORDS.missing",
"ebuild.minorsyn",
"ebuild.badheader",
"file.size",
stable system or vice versa. This will allow ACCEPT_KEYWORDS to be augmented
for a single package.
-.nf
-\fINote:\fR There are two special KEYWORDS to help out here:
-\fB*\fR Match any stable KEYWORD
-\fB~*\fR Match any unstable KEYWORD
-
.I Format:
-\- comments begin with #
+.nf
+\- comment lines begin with # (no inline comments)
\- one DEPEND atom per line followed by additional KEYWORDS
\- lines without any KEYWORDS imply unstable host arch
net-analyzer/netcat
.fi
+.I Note:
+.fi
+In addition to the normal values from ACCEPT_KEYWORDS package.keywords supports
+three special tokens:
+
+.nf
+\fB*\fR package is visible if it is stable on any architecture
+\fB~*\fR package is visible if it is in testing on any architecture
+\fB**\fR package is always visible (KEYWORDS are ignored completely)
+.fi
+
.I Additional Note:
If you encounter the \fB-*\fR KEYWORD, this indicates that the package is known
to be broken on all systems which are not otherwise listed in KEYWORDS. For
games-fps/quake3-demo-1.11.ebuild:KEYWORDS="-* x86"
-If you wish to accept this package anyways, then add \fB-*\fR to your
+If you wish to accept this package anyways, then use one of the other keywords in your
package.keywords like this:
-games-fps/quake3-demo -*
+games-fps/quake3-demo x86
+
.TP
.BR package.mask
A list of package atoms to mask. Useful if specific versions of packages do
.I Format:
.nf
-\- comments begin with #
+\- comment lines begin with # (no inline comments)
\- one DEPEND atom per line
.fi
if matches:
inc_pgroups = []
for x in pgroups:
+ # The -* special case should be removed once the tree
+ # is clean of KEYWORDS=-* crap
if x != "-*" and x.startswith("-"):
try:
inc_pgroups.remove(x[1:])
hastesting = True
elif gp[0] != "-":
hasstable = True
- if not match and ((hastesting and "~*" in pgroups) or (hasstable and "*" in pgroups)):
+ if not match and ((hastesting and "~*" in pgroups) or (hasstable and "*" in pgroups) or "**" in pgroups):
match=1
if match and eapi_is_supported(eapi):
newlist.append(mycpv)
myc=open(self.dbdir+"/CONTENTS","r")
mylines=myc.readlines()
myc.close()
- pos=1
+ null_byte = "\0"
+ contents_file = os.path.join(self.dbdir, "CONTENTS")
+ pos = 0
for line in mylines:
+ pos += 1
+ if null_byte in line:
+ # Null bytes are a common indication of corruption.
+ writemsg("!!! Null byte found in contents " + \
+ "file, line %d: '%s'\n" % (pos, contents_file),
+ noiselevel=-1)
+ continue
mydat = line.split()
# we do this so we can remove from non-root filesystems
# (use the ROOT var to allow maintenance on other partitions)
return None
except (KeyError,IndexError):
print "portage: CONTENTS line",pos,"corrupt!"
- pos += 1
self.contentscache=pkgfiles
return pkgfiles