summaryrefslogtreecommitdiff
path: root/3
diff options
context:
space:
mode:
Diffstat (limited to '3')
-rw-r--r--3/pms.css265
-rw-r--r--3/pms.html9899
-rw-r--r--3/pms.pdf11965
-rw-r--r--3/pms2.html24
-rw-r--r--3/pms3.html23
-rw-r--r--3/pms4.html23
-rw-r--r--3/pms5.html19
-rw-r--r--3/pms6.html21
-rw-r--r--3/pms7.html21
-rw-r--r--3/pms8.html25
10 files changed, 22285 insertions, 0 deletions
diff --git a/3/pms.css b/3/pms.css
new file mode 100644
index 0000000..62eb3e2
--- /dev/null
+++ b/3/pms.css
@@ -0,0 +1,265 @@
+
+/* start css.sty */
+.cmr-7{font-size:70%;}
+.cmmi-7{font-size:70%;font-style: italic;}
+.cmmi-10{font-style: italic;}
+.ecrm-1728{font-size:170%;}
+.ecrm-1200{font-size:120%;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ectt-1000{ font-family: monospace;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecti-1000{ font-style: italic;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecbx-1000{ font-weight: bold;}
+.ecrm-0900{font-size:90%;}
+.ecrm-0800{font-size:80%;}
+.ectt-0800{font-size:80%; font-family: monospace;}
+.ectt-0800{ font-family: monospace;}
+.ectt-0800{ font-family: monospace;}
+.ectt-0800{ font-family: monospace;}
+.ectt-0800{ font-family: monospace;}
+.ectt-0800{ font-family: monospace;}
+.ectt-0800{ font-family: monospace;}
+.ectt-0800{ font-family: monospace;}
+.ectt-0800{ font-family: monospace;}
+.small-caps{font-variant: small-caps; }
+p.noindent { text-indent: 0em }
+td p.noindent { text-indent: 0em; margin-top:0em; }
+p.nopar { text-indent: 0em; }
+p.indent{ text-indent: 1.5em }
+@media print {div.crosslinks {visibility:hidden;}}
+a img { border-top: 0; border-left: 0; border-right: 0; }
+center { margin-top:1em; margin-bottom:1em; }
+td center { margin-top:0em; margin-bottom:0em; }
+.Canvas { position:relative; }
+img.math{vertical-align:middle;}
+li p.indent { text-indent: 0em }
+li p:first-child{ margin-top:0em; }
+li p:last-child, li div:last-child { margin-bottom:0.5em; }
+li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
+.enumerate1 {list-style-type:decimal;}
+.enumerate2 {list-style-type:lower-alpha;}
+.enumerate3 {list-style-type:lower-roman;}
+.enumerate4 {list-style-type:upper-alpha;}
+div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
+.obeylines-h,.obeylines-v {white-space: nowrap; }
+div.obeylines-v p { margin-top:0; margin-bottom:0; }
+.overline{ text-decoration:overline; }
+.overline img{ border-top: 1px solid black; }
+td.displaylines {text-align:center; white-space:nowrap;}
+.centerline {text-align:center;}
+.rightline {text-align:right;}
+div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
+.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.fbox {display:table}
+div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.minipage{width:100%;}
+div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
+div.center div {text-align: left;}
+div.flushright, div.flushright div.flushright {text-align: right;}
+div.flushright div {text-align: left;}
+div.flushleft {text-align: left;}
+.underline{ text-decoration:underline; }
+.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
+.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+.framebox-c {text-align:center;}
+.framebox-l {text-align:left;}
+.framebox-r {text-align:right;}
+span.thank-mark{ vertical-align: super }
+span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
+div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
+table.tabular td p{margin-top:0em;}
+table.tabular {margin-left: auto; margin-right: auto;}
+td p:first-child{ margin-top:0em; }
+td p:last-child{ margin-bottom:0em; }
+div.td00{ margin-left:0pt; margin-right:0pt; }
+div.td01{ margin-left:0pt; margin-right:5pt; }
+div.td10{ margin-left:5pt; margin-right:0pt; }
+div.td11{ margin-left:5pt; margin-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+td.td00{ padding-left:0pt; padding-right:0pt; }
+td.td01{ padding-left:0pt; padding-right:5pt; }
+td.td10{ padding-left:5pt; padding-right:0pt; }
+td.td11{ padding-left:5pt; padding-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+.hline hr, .cline hr{ height : 1px; margin:0px; }
+.tabbing-right {text-align:right;}
+span.TEX {letter-spacing: -0.125em; }
+span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
+a span.TEX span.E {text-decoration: none; }
+span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
+span.LATEX span.TEX{ position:relative; left: -0.4em; }
+div.float, div.figure {margin-left: auto; margin-right: auto;}
+div.float img {text-align:center;}
+div.figure img {text-align:center;}
+.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
+.marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
+table.equation {width:100%;}
+.equation td{text-align:center; }
+td.equation { margin-top:1em; margin-bottom:1em; }
+td.equation-label { width:5%; text-align:center; }
+td.eqnarray4 { width:5%; white-space: normal; }
+td.eqnarray2 { width:5%; }
+table.eqnarray-star, table.eqnarray {width:100%;}
+div.eqnarray{text-align:center;}
+div.array {text-align:center;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.pmatrix img{vertical-align:middle;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.bar-css {text-decoration:overline;}
+img.cdots{vertical-align:middle;}
+.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
+.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;}
+.index-item, .index-subitem, .index-subsubitem {display:block}
+div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
+div.caption span.id{font-weight: bold; white-space: nowrap; }
+h1.partHead{text-align: center}
+p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
+p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
+.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
+.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
+.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
+.verse{white-space:nowrap; margin-left:2em}
+div.maketitle {text-align:center;}
+h2.titleHead{text-align:center;}
+div.maketitle{ margin-bottom: 2em; }
+div.author, div.date {text-align:center;}
+div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
+div.author{white-space: nowrap;}
+.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
+h1.partHead{text-align: center}
+.abstract p {margin-left:5%; margin-right:5%;}
+div.abstract {width:100%;}
+dt.enumerate-enumitem{float:left; clear:left; margin-left:1em; margin-right:1em;}
+.figure img.graphics {margin-left:10%;}
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+div.longtable{text-align:center;}
+dt.enumerate{float:left; clear:left; margin-right:0.2em; margin-left:2em;}
+dt.compactenum{float:left; clear:left; margin-right:0.2em; margin-left:2em;}
+div.verbatiminput {font-family: monospace; white-space: nowrap; }
+div.algorithm table.caption { border-bottom: 1px solid black; margin-bottom:1pt; }
+.ALCitem {width:2em; text-align:right;}
+tr#TBL-2-1- td{border-top:0.11197em solid}
+tr#TBL-2-1- td{border-bottom:0.06998em solid}
+tr#TBL-2-6- td{border-bottom:0.11197em solid}
+tr#TBL-3-1- td{border-top:0.11197em solid}
+tr#TBL-3-1- td{border-bottom:0.06998em solid}
+tr#TBL-3-6- td{border-bottom:0.11197em solid}
+tr#TBL-4-1- td{border-top:0.11197em solid}
+tr#TBL-4-1- td{border-bottom:0.06998em solid}
+tr#TBL-4-6- td{border-bottom:0.11197em solid}
+tr#TBL-5-1- td{border-top:0.11197em solid}
+tr#TBL-5-1- td{border-bottom:0.06998em solid}
+tr#TBL-5-6- td{border-bottom:0.11197em solid}
+tr#TBL-6-1- td{border-top:0.11197em solid}
+tr#TBL-6-1- td{border-bottom:0.06998em solid}
+tr#TBL-6-6- td{border-bottom:0.11197em solid}
+tr#TBL-7-1- td{border-top:0.11197em solid}
+tr#TBL-7-1- td{border-bottom:0.06998em solid}
+tr#TBL-7-6- td{border-bottom:0.11197em solid}
+tr#TBL-8-1- td{border-top:0.11197em solid}
+tr#TBL-8-1- td{border-bottom:0.06998em solid}
+tr#TBL-8-6- td{border-bottom:0.11197em solid}
+tr#TBL-9-1- td{border-top:0.11197em solid}
+tr#TBL-9-1- td{border-bottom:0.06998em solid}
+tr#TBL-9-6- td{border-bottom:0.11197em solid}
+tr#TBL-10-1- td{border-top:0.11197em solid}
+tr#TBL-10-1- td{border-bottom:0.06998em solid}
+tr#TBL-10-6- td{border-bottom:0.11197em solid}
+tr#TBL-11-1- td{border-top:0.11197em solid}
+tr#TBL-11-1- td{border-bottom:0.06998em solid}
+tr#TBL-11-6- td{border-bottom:0.11197em solid}
+tr#TBL-12-1- td{border-top:0.11197em solid}
+tr#TBL-12-1- td{border-bottom:0.06998em solid}
+tr#TBL-12-6- td{border-bottom:0.11197em solid}
+tr#TBL-13-1- td{border-top:0.11197em solid}
+tr#TBL-13-1- td{border-bottom:0.06998em solid}
+tr#TBL-13-6- td{border-bottom:0.11197em solid}
+tr#TBL-14-1- td{border-top:0.11197em solid}
+tr#TBL-14-1- td{border-bottom:0.06998em solid}
+tr#TBL-14-6- td{border-bottom:0.11197em solid}
+tr#TBL-15-1- td{border-top:0.11197em solid}
+tr#TBL-15-1- td{border-bottom:0.06998em solid}
+tr#TBL-15-6- td{border-bottom:0.11197em solid}
+tr#TBL-16-1- td{border-top:0.11197em solid}
+tr#TBL-16-1- td{border-bottom:0.06998em solid}
+tr#TBL-16-6- td{border-bottom:0.11197em solid}
+tr#TBL-17-1- td{border-top:0.11197em solid}
+tr#TBL-17-1- td{border-bottom:0.06998em solid}
+tr#TBL-17-6- td{border-bottom:0.11197em solid}
+tr#TBL-18-1- td{border-top:0.11197em solid}
+tr#TBL-18-1- td{border-bottom:0.06998em solid}
+tr#TBL-18-6- td{border-bottom:0.11197em solid}
+tr#TBL-19-2- td{border-bottom:0.11197em solid}
+tr#TBL-19-4- td{border-bottom:0.06998em solid}
+tr#TBL-19-15- td{border-bottom:0.11197em solid}
+tr#TBL-20-1- td{border-top:0.11197em solid}
+tr#TBL-20-1- td{border-bottom:0.06998em solid}
+tr#TBL-20-6- td{border-bottom:0.11197em solid}
+tr#TBL-21-1- td{border-top:0.11197em solid}
+tr#TBL-21-1- td{border-bottom:0.06998em solid}
+tr#TBL-21-6- td{border-bottom:0.11197em solid}
+tr#TBL-22-1- td{border-top:0.11197em solid}
+tr#TBL-22-1- td{border-bottom:0.06998em solid}
+tr#TBL-22-6- td{border-bottom:0.11197em solid}
+tr#TBL-23-1- td{border-top:0.11197em solid}
+tr#TBL-23-1- td{border-bottom:0.06998em solid}
+tr#TBL-23-6- td{border-bottom:0.11197em solid}
+tr#TBL-24-1- td{border-top:0.11197em solid}
+tr#TBL-24-2- td{border-bottom:0.06998em solid}
+tr#TBL-24-7- td{border-bottom:0.11197em solid}
+tr#TBL-25-1- td{border-top:0.11197em solid}
+tr#TBL-25-1- td{border-bottom:0.06998em solid}
+tr#TBL-25-6- td{border-bottom:0.11197em solid}
+tr#TBL-26-1- td{border-top:0.11197em solid}
+tr#TBL-26-1- td{border-bottom:0.06998em solid}
+tr#TBL-26-6- td{border-bottom:0.11197em solid}
+tr#TBL-27-1- td{border-top:0.11197em solid}
+tr#TBL-27-1- td{border-bottom:0.06998em solid}
+tr#TBL-27-6- td{border-bottom:0.11197em solid}
+tr#TBL-28-1- td{border-top:0.11197em solid}
+tr#TBL-28-1- td{border-bottom:0.06998em solid}
+tr#TBL-28-6- td{border-bottom:0.11197em solid}
+tr#TBL-29-1- td{border-top:0.11197em solid}
+tr#TBL-29-1- td{border-bottom:0.06998em solid}
+tr#TBL-29-6- td{border-bottom:0.11197em solid}
+tr#TBL-30-1- td{border-top:0.11197em solid}
+tr#TBL-30-1- td{border-bottom:0.06998em solid}
+tr#TBL-30-6- td{border-bottom:0.11197em solid}
+tr#TBL-31-1- td{border-top:0.11197em solid}
+tr#TBL-31-1- td{border-bottom:0.06998em solid}
+tr#TBL-31-6- td{border-bottom:0.11197em solid}
+tr#TBL-32-1- td{border-top:0.11197em solid}
+tr#TBL-32-1- td{border-bottom:0.06998em solid}
+tr#TBL-32-6- td{border-bottom:0.11197em solid}
+tr#TBL-33-1- td{border-top:0.11197em solid}
+tr#TBL-33-1- td{border-bottom:0.06998em solid}
+tr#TBL-33-6- td{border-bottom:0.11197em solid}
+tr#TBL-34-2- td{border-bottom:0.11197em solid}
+tr#TBL-34-5- td{border-bottom:0.06998em solid}
+tr#TBL-34-17- td{border-bottom:0.11197em solid}
+/* end css.sty */
+
diff --git a/3/pms.html b/3/pms.html
new file mode 100644
index 0000000..8ef0e94
--- /dev/null
+++ b/3/pms.html
@@ -0,0 +1,9899 @@
+<?xml version="1.0" encoding="iso-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+>
+<head><title>Package Manager Specification</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
+<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
+<!-- xhtml,html -->
+<meta name="src" content="pms.tex" />
+<meta name="date" content="2011-01-20 22:39:00" />
+<link rel="stylesheet" type="text/css" href="pms.css" />
+</head><body
+>
+<div class="maketitle">
+
+
+
+<h2 class="titleHead">Package Manager Specification</h2>
+ <div class="author" ><span
+class="ecrm-1200">Stephen P. Bennett</span>
+<br /><a
+href="mailto:spb@exherbo.org" ><span
+class="ecrm-1200">spb@exherbo.org</span></a> <br class="and" /><span
+class="ecrm-1200">Ciaran McCreesh</span>
+<br /> <a
+href="mailto:ciaran.mccreesh@googlemail.com" ><span
+class="ecrm-1200">ciaran.mccreesh@googlemail.com</span></a></div>
+<br />
+<div class="date" ><span
+class="ecrm-1200">18th</span><span
+class="ecrm-1200">&#x00A0;January</span><span
+class="ecrm-1200">&#x00A0;2010</span></div>
+
+
+</div>
+
+
+<h2 class="likechapterHead"><a
+ id="x1-1000"></a>Contents</h2> <div class="tableofcontents">
+<span class="chapterToc" >1 <a
+href="#x1-80001" id="QQ2-1-8">Introduction</a></span>
+<br />&#x00A0;<span class="sectionToc" >1.1 <a
+href="#x1-90001.1" id="QQ2-1-9">Aims and Motivation</a></span>
+<br />&#x00A0;<span class="sectionToc" >1.2 <a
+href="#x1-100001.2" id="QQ2-1-10">Rationale</a></span>
+<br />&#x00A0;<span class="sectionToc" >1.3 <a
+href="#x1-110001.3" id="QQ2-1-11">Conventions</a></span>
+<br /><span class="chapterToc" >2 <a
+href="#x1-120002" id="QQ2-1-12">EAPIs</a></span>
+<br />&#x00A0;<span class="sectionToc" >2.1 <a
+href="#x1-130002.1" id="QQ2-1-13">Definition</a></span>
+<br />&#x00A0;<span class="sectionToc" >2.2 <a
+href="#x1-140002.2" id="QQ2-1-14">Defined EAPIs</a></span>
+<br />&#x00A0;<span class="sectionToc" >2.3 <a
+href="#x1-150002.3" id="QQ2-1-15">Reserved EAPIs</a></span>
+<br /><span class="chapterToc" >3 <a
+href="#x1-160003" id="QQ2-1-16">Names and Versions</a></span>
+<br />&#x00A0;<span class="sectionToc" >3.1 <a
+href="#x1-170003.1" id="QQ2-1-17">Restrictions upon Names</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >3.1.1 <a
+href="#x1-180003.1.1" id="QQ2-1-18">Category Names</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >3.1.2 <a
+href="#x1-200003.1.2" id="QQ2-1-20">Package Names</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >3.1.3 <a
+href="#x1-220003.1.3" id="QQ2-1-22">Slot Names</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >3.1.4 <a
+href="#x1-230003.1.4" id="QQ2-1-23">USE Flag Names</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >3.1.5 <a
+href="#x1-250003.1.5" id="QQ2-1-25">Repository Names</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >3.1.6 <a
+href="#x1-260003.1.6" id="QQ2-1-26">Keyword Names</a></span>
+<br />&#x00A0;<span class="sectionToc" >3.2 <a
+href="#x1-270003.2" id="QQ2-1-27">Version Specifications</a></span>
+<br />&#x00A0;<span class="sectionToc" >3.3 <a
+href="#x1-280003.3" id="QQ2-1-28">Version Comparison</a></span>
+<br />&#x00A0;<span class="sectionToc" >3.4 <a
+href="#x1-290003.4" id="QQ2-1-36">Uniqueness of versions</a></span>
+<br /><span class="chapterToc" >4 <a
+href="#x1-300004" id="QQ2-1-37">Tree Layout</a></span>
+<br />&#x00A0;<span class="sectionToc" >4.1 <a
+href="#x1-310004.1" id="QQ2-1-38">Top Level</a></span>
+<br />&#x00A0;<span class="sectionToc" >4.2 <a
+href="#x1-320004.2" id="QQ2-1-39">Category Directories</a></span>
+<br />&#x00A0;<span class="sectionToc" >4.3 <a
+href="#x1-330004.3" id="QQ2-1-40">Package Directories</a></span>
+<br />&#x00A0;<span class="sectionToc" >4.4 <a
+href="#x1-340004.4" id="QQ2-1-41">The Profiles Directory</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >4.4.1 <a
+href="#x1-350004.4.1" id="QQ2-1-42">The profiles.desc file</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >4.4.2 <a
+href="#x1-360004.4.2" id="QQ2-1-43">The thirdpartymirrors file</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >4.4.3 <a
+href="#x1-370004.4.3" id="QQ2-1-44">use.desc and related files</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >4.4.4 <a
+href="#x1-380004.4.4" id="QQ2-1-45">The updates directory</a></span>
+<br />&#x00A0;<span class="sectionToc" >4.5 <a
+href="#x1-390004.5" id="QQ2-1-46">The Licenses Directory</a></span>
+<br />&#x00A0;<span class="sectionToc" >4.6 <a
+href="#x1-400004.6" id="QQ2-1-47">The Eclass Directory</a></span>
+<br />&#x00A0;<span class="sectionToc" >4.7 <a
+href="#x1-410004.7" id="QQ2-1-48">The Metadata Directory</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >4.7.1 <a
+href="#x1-420004.7.1" id="QQ2-1-49">The metadata cache</a></span>
+
+
+<br /><span class="chapterToc" >5 <a
+href="#x1-430005" id="QQ2-1-50">Profiles</a></span>
+<br />&#x00A0;<span class="sectionToc" >5.1 <a
+href="#x1-440005.1" id="QQ2-1-51">General principles</a></span>
+<br />&#x00A0;<span class="sectionToc" >5.2 <a
+href="#x1-450005.2" id="QQ2-1-52">Files that make up a profile</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.2.1 <a
+href="#x1-460005.2.1" id="QQ2-1-53">The parent file</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.2.2 <a
+href="#x1-470005.2.2" id="QQ2-1-54">The eapi file</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.2.3 <a
+href="#x1-480005.2.3" id="QQ2-1-55">deprecated</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.2.4 <a
+href="#x1-490005.2.4" id="QQ2-1-56">make.defaults</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.2.5 <a
+href="#x1-500005.2.5" id="QQ2-1-57">virtuals</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.2.6 <a
+href="#x1-510005.2.6" id="QQ2-1-58">Simple line-based files</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.2.7 <a
+href="#x1-520005.2.7" id="QQ2-1-59">packages</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.2.8 <a
+href="#x1-530005.2.8" id="QQ2-1-60">packages.build</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.2.9 <a
+href="#x1-540005.2.9" id="QQ2-1-61">package.mask</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.2.10 <a
+href="#x1-560005.2.10" id="QQ2-1-63">package.provided</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.2.11 <a
+href="#x1-570005.2.11" id="QQ2-1-64">package.use</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.2.12 <a
+href="#x1-580005.2.12" id="QQ2-1-65">USE masking and forcing</a></span>
+<br />&#x00A0;<span class="sectionToc" >5.3 <a
+href="#x1-590005.3" id="QQ2-1-67">Profile variables</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.3.1 <a
+href="#x1-600005.3.1" id="QQ2-1-68">Incremental Variables</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >5.3.2 <a
+href="#x1-610005.3.2" id="QQ2-1-70">Specific variables and their meanings</a></span>
+<br /><span class="chapterToc" >6 <a
+href="#x1-620006" id="QQ2-1-71">Old-Style Virtual Packages</a></span>
+<br />&#x00A0;<span class="sectionToc" >6.1 <a
+href="#x1-640006.1" id="QQ2-1-73">Dependencies on virtual packages</a></span>
+<br /><span class="chapterToc" >7 <a
+href="#x1-650007" id="QQ2-1-74">Ebuild File Format</a></span>
+<br /><span class="chapterToc" >8 <a
+href="#x1-660008" id="QQ2-1-75">Ebuild-defined Variables</a></span>
+<br />&#x00A0;<span class="sectionToc" >8.1 <a
+href="#x1-680008.1" id="QQ2-1-77">Metadata invariance</a></span>
+<br />&#x00A0;<span class="sectionToc" >8.2 <a
+href="#x1-690008.2" id="QQ2-1-78">Mandatory Ebuild-defined Variables</a></span>
+<br />&#x00A0;<span class="sectionToc" >8.3 <a
+href="#x1-700008.3" id="QQ2-1-80">Optional Ebuild-defined Variables</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >8.3.1 <a
+href="#x1-710008.3.1" id="QQ2-1-82">EAPI</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >8.3.2 <a
+href="#x1-720008.3.2" id="QQ2-1-83"><span
+class="ectt-1000">RDEPEND </span>value</a></span>
+<br />&#x00A0;<span class="sectionToc" >8.4 <a
+href="#x1-730008.4" id="QQ2-1-85">Magic Ebuild-defined Variables</a></span>
+<br /><span class="chapterToc" >9 <a
+href="#x1-760009" id="QQ2-1-89">Dependencies</a></span>
+<br />&#x00A0;<span class="sectionToc" >9.1 <a
+href="#x1-770009.1" id="QQ2-1-90">Dependency Classes</a></span>
+<br />&#x00A0;<span class="sectionToc" >9.2 <a
+href="#x1-780009.2" id="QQ2-1-91">Dependency Specification Format</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >9.2.1 <a
+href="#x1-790009.2.1" id="QQ2-1-93">All-of Dependency Specifications</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >9.2.2 <a
+href="#x1-800009.2.2" id="QQ2-1-94">Use-conditional Dependency Specifications</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >9.2.3 <a
+href="#x1-810009.2.3" id="QQ2-1-95">Any-of Dependency Specifications</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >9.2.4 <a
+href="#x1-820009.2.4" id="QQ2-1-96">Package Dependency Specifications</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >9.2.5 <a
+href="#x1-890009.2.5" id="QQ2-1-106">Restrict</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >9.2.6 <a
+href="#x1-900009.2.6" id="QQ2-1-107">Properties</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >9.2.7 <a
+href="#x1-910009.2.7" id="QQ2-1-108">SRC_URI</a></span>
+<br /><span class="chapterToc" >10 <a
+href="#x1-9200010" id="QQ2-1-109">Ebuild-defined Functions</a></span>
+
+
+<br />&#x00A0;<span class="sectionToc" >10.1 <a
+href="#x1-9300010.1" id="QQ2-1-110">List of Functions</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.1 <a
+href="#x1-9400010.1.1" id="QQ2-1-111">Initial Working Directories</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.2 <a
+href="#x1-9500010.1.2" id="QQ2-1-113">pkg_pretend</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.3 <a
+href="#x1-9600010.1.3" id="QQ2-1-115">pkg_setup</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.4 <a
+href="#x1-9700010.1.4" id="QQ2-1-116">src_unpack</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.5 <a
+href="#x1-9800010.1.5" id="QQ2-1-117">src_prepare</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.6 <a
+href="#x1-9900010.1.6" id="QQ2-1-119">src_configure</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.7 <a
+href="#x1-10000010.1.7" id="QQ2-1-121">src_compile</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.8 <a
+href="#x1-10100010.1.8" id="QQ2-1-123">src_test</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.9 <a
+href="#x1-10200010.1.9" id="QQ2-1-124">src_install</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.10 <a
+href="#x1-10300010.1.10" id="QQ2-1-126">pkg_preinst</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.11 <a
+href="#x1-10400010.1.11" id="QQ2-1-127">pkg_postinst</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.12 <a
+href="#x1-10500010.1.12" id="QQ2-1-128">pkg_prerm</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.13 <a
+href="#x1-10600010.1.13" id="QQ2-1-129">pkg_postrm</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.14 <a
+href="#x1-10700010.1.14" id="QQ2-1-130">pkg_config</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.15 <a
+href="#x1-10800010.1.15" id="QQ2-1-131">pkg_info</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.16 <a
+href="#x1-10900010.1.16" id="QQ2-1-133">pkg_nofetch</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >10.1.17 <a
+href="#x1-11000010.1.17" id="QQ2-1-134"><span
+class="ectt-1000">default_ </span>Phase Functions</a></span>
+<br />&#x00A0;<span class="sectionToc" >10.2 <a
+href="#x1-11100010.2" id="QQ2-1-136">Call Order</a></span>
+<br /><span class="chapterToc" >11 <a
+href="#x1-11200011" id="QQ2-1-137">Eclasses</a></span>
+<br />&#x00A0;<span class="sectionToc" >11.1 <a
+href="#x1-11300011.1" id="QQ2-1-138">The inherit command</a></span>
+<br />&#x00A0;<span class="sectionToc" >11.2 <a
+href="#x1-11400011.2" id="QQ2-1-139">Eclass-defined Metadata Keys</a></span>
+<br />&#x00A0;<span class="sectionToc" >11.3 <a
+href="#x1-11500011.3" id="QQ2-1-140">EXPORT_FUNCTIONS</a></span>
+<br /><span class="chapterToc" >12 <a
+href="#x1-11600012" id="QQ2-1-142">The Ebuild Environment</a></span>
+<br />&#x00A0;<span class="sectionToc" >12.1 <a
+href="#x1-11700012.1" id="QQ2-1-143">Defined Variables</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >12.1.1 <a
+href="#x1-11800012.1.1" id="QQ2-1-147">USE and IUSE Handling</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >12.1.2 <a
+href="#x1-11900012.1.2" id="QQ2-1-148"><span
+class="ectt-1000">REPLACING_VERSIONS </span>and <span
+class="ectt-1000">REPLACED_BY_VERSION</span></a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >12.1.3 <a
+href="#x1-12000012.1.3" id="QQ2-1-149">Offset-prefix variables <span
+class="ectt-1000">EPREFIX</span>, <span
+class="ectt-1000">EROOT </span>and <span
+class="ectt-1000">ED</span></a></span>
+<br />&#x00A0;<span class="sectionToc" >12.2 <a
+href="#x1-12100012.2" id="QQ2-1-151">The state of variables between functions</a></span>
+<br />&#x00A0;<span class="sectionToc" >12.3 <a
+href="#x1-12300012.3" id="QQ2-1-154">Available commands</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >12.3.1 <a
+href="#x1-12400012.3.1" id="QQ2-1-155">System commands</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >12.3.2 <a
+href="#x1-12600012.3.2" id="QQ2-1-157">Commands provided by package dependencies</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >12.3.3 <a
+href="#x1-12700012.3.3" id="QQ2-1-158">Ebuild-specific Commands</a></span>
+<br />&#x00A0;<span class="sectionToc" >12.4 <a
+href="#x1-14300012.4" id="QQ2-1-187">The state of the system between functions</a></span>
+<br /><span class="chapterToc" >13 <a
+href="#x1-14400013" id="QQ2-1-188">Merging and Unmerging</a></span>
+<br />&#x00A0;<span class="sectionToc" >13.1 <a
+href="#x1-14600013.1" id="QQ2-1-190">Overview</a></span>
+<br />&#x00A0;<span class="sectionToc" >13.2 <a
+href="#x1-14700013.2" id="QQ2-1-191">Directories</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >13.2.1 <a
+href="#x1-14800013.2.1" id="QQ2-1-192">Permissions</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >13.2.2 <a
+href="#x1-14900013.2.2" id="QQ2-1-193">Empty Directories</a></span>
+
+
+<br />&#x00A0;<span class="sectionToc" >13.3 <a
+href="#x1-15000013.3" id="QQ2-1-194">Regular Files</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >13.3.1 <a
+href="#x1-15100013.3.1" id="QQ2-1-195">Permissions</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >13.3.2 <a
+href="#x1-15200013.3.2" id="QQ2-1-196">File modification times</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >13.3.3 <a
+href="#x1-15300013.3.3" id="QQ2-1-198">Configuration File Protection</a></span>
+<br />&#x00A0;<span class="sectionToc" >13.4 <a
+href="#x1-15400013.4" id="QQ2-1-199">Symlinks</a></span>
+<br />&#x00A0;&#x00A0;<span class="subsectionToc" >13.4.1 <a
+href="#x1-15500013.4.1" id="QQ2-1-200">Rewriting</a></span>
+<br />&#x00A0;<span class="sectionToc" >13.5 <a
+href="#x1-15600013.5" id="QQ2-1-201">Hard links</a></span>
+<br />&#x00A0;<span class="sectionToc" >13.6 <a
+href="#x1-15700013.6" id="QQ2-1-202">Other Files</a></span>
+<br /><span class="chapterToc" >14 <a
+href="#x1-15800014" id="QQ2-1-203">Metadata Cache</a></span>
+<br />&#x00A0;<span class="sectionToc" >14.1 <a
+href="#x1-15900014.1" id="QQ2-1-204">Directory Contents</a></span>
+<br />&#x00A0;<span class="sectionToc" >14.2 <a
+href="#x1-16000014.2" id="QQ2-1-205">Cache File Format</a></span>
+<br /><span class="chapterToc" >15 <a
+href="#x1-16100015" id="QQ2-1-206">Glossary</a></span>
+<br /><span class="appendixToc" >A <a
+href="#x1-162000A" id="QQ2-1-207">metadata.xml</a></span>
+<br /><span class="appendixToc" >B <a
+href="#x1-163000B" id="QQ2-1-208">Unspecified Items</a></span>
+<br /><span class="appendixToc" >C <a
+href="#x1-164000C" id="QQ2-1-209">Historical Curiosities</a></span>
+<br />&#x00A0;<span class="sectionToc" >C.1 <a
+href="#x1-165000C.1" id="QQ2-1-210">If-else use blocks</a></span>
+<br />&#x00A0;<span class="sectionToc" >C.2 <a
+href="#x1-166000C.2" id="QQ2-1-212">cvs Versions</a></span>
+<br />&#x00A0;<span class="sectionToc" >C.3 <a
+href="#x1-167000C.3" id="QQ2-1-213">use.defaults</a></span>
+<br /><span class="appendixToc" >D <a
+href="#x1-168000D" id="QQ2-1-214">Feature Availability by EAPI</a></span>
+<br /><span class="appendixToc" >E <a
+href="#x1-170000E" id="QQ2-1-217">Differences Between EAPIs</a></span>
+</div>
+
+
+<h2 class="likechapterHead"><a
+ id="x1-2000"></a>List of Algorithms</h2><div class="tableofcontents">
+1 <a
+href="#x1-28001r1">Version comparison top-level logic</a>
+<br />2 <a
+href="#x1-28008r2">Version comparison logic for numeric components</a>
+<br />3 <a
+href="#x1-28025r3">Version comparison logic for each numeric component after the first</a>
+<br />4 <a
+href="#x1-28041r4">Version comparison logic for letter components</a>
+<br />5 <a
+href="#x1-28049r5">Version comparison logic for suffixes</a>
+<br />6 <a
+href="#x1-28069r6">Version comparison logic for each suffix</a>
+<br />7 <a
+href="#x1-28083r7">Version comparison logic for revision components</a>
+<br />8 <a
+href="#x1-58001r8">USE masking logic</a>
+<br />9 <a
+href="#x1-134002r9">econf --libdir logic</a>
+<br />10 <a
+href="#x1-135001r10">Determining the library directory</a>
+</div>
+
+
+<h2 class="likechapterHead"><a
+ id="x1-3000"></a>Listings</h2><div class="tableofcontents">
+11.1 <a
+href="#x1-115001r1">EXPORT_FUNCTIONS example: foo.eclass</a>
+<br />12.1 <a
+href="#x1-122001r1">Environment state between functions</a>
+<br />12.2 <a
+href="#x1-134017r2">einstall command</a>
+<br />C.1 <a
+href="#x1-165001r1">If-else use blocks</a>
+</div>
+
+
+<h2 class="likechapterHead"><a
+ id="x1-4000"></a>List of Tables</h2><div class="tableofcontents"><span class="lotToc" >5.1&#x00A0;<a
+href="#x1-60001r1">Profile-defined <span
+class="ectt-1000">IUSE </span>injection for EAPIs</a></span><br /><span class="lotToc" >8.1&#x00A0;<a
+href="#x1-69001r1">EAPIs supporting
+<span
+class="ectt-1000">IUSE </span>defaults</a></span><br /><span class="lotToc" >8.2&#x00A0;<a
+href="#x1-70001r2">EAPIs supporting <span
+class="ectt-1000">PROPERTIES</span></a></span><br /><span class="lotToc" >8.3&#x00A0;<a
+href="#x1-72001r3">EAPIs with <span
+class="ectt-1000">RDEPEND=DEPEND</span>
+Default</a></span><br /><span class="lotToc" >8.4&#x00A0;<a
+href="#x1-75001r4">EAPIs supporting <span
+class="ectt-1000">DEFINED_PHASES</span></a></span><br /><span class="lotToc" >9.1&#x00A0;<a
+href="#x1-78001r1">EAPIs supporting <span
+class="ectt-1000">SRC_URI</span>
+arrows</a></span><br /><span class="lotToc" >9.2&#x00A0;<a
+href="#x1-83001r2">EAPIs supporting <span
+class="ectt-1000">SLOT </span>dependencies</a></span><br /><span class="lotToc" >9.3&#x00A0;<a
+href="#x1-83002r3">EAPIs supporting <span
+class="ectt-1000">USE</span>
+dependencies</a></span><br /><span class="lotToc" >9.4&#x00A0;<a
+href="#x1-85001r4">Exclamation mark strengths for EAPIs</a></span><br /><span class="lotToc" >10.1&#x00A0;<a
+href="#x1-94001r1">EAPIs with <span
+class="ectt-1000">S </span>to
+<span
+class="ectt-1000">WORKDIR </span>fallbacks</a></span><br /><span class="lotToc" >10.2&#x00A0;<a
+href="#x1-95001r2">EAPIs supporting <span
+class="ectt-1000">pkg_pretend</span></a></span><br /><span class="lotToc" >10.3&#x00A0;<a
+href="#x1-98001r3">EAPIs supporting
+<span
+class="ectt-1000">src_prepare</span></a></span><br /><span class="lotToc" >10.4&#x00A0;<a
+href="#x1-99001r4">EAPIs supporting <span
+class="ectt-1000">src_configure</span></a></span><br /><span class="lotToc" >10.5&#x00A0;<a
+href="#x1-100001r5"><span
+class="ectt-1000">src_compile </span>behaviour for
+EAPIs</a></span><br /><span class="lotToc" >10.6&#x00A0;<a
+href="#x1-102001r6"><span
+class="ectt-1000">src_install </span>behaviour for EAPIs</a></span><br /><span class="lotToc" >10.7&#x00A0;<a
+href="#x1-108001r7">EAPIs supporting <span
+class="ectt-1000">pkg_info </span>on
+non-installed packages</a></span><br /><span class="lotToc" >10.8&#x00A0;<a
+href="#x1-110001r8">EAPIs supporting <span
+class="ectt-1000">default_ </span>phase functions</a></span><br /><span class="lotToc" >12.1&#x00A0;<a
+href="#x1-117002">Defined
+variables</a></span><br /><span class="lotToc" >12.2&#x00A0;<a
+href="#x1-117008r2">EAPIs supporting various env variables</a></span><br /><span class="lotToc" >12.3&#x00A0;<a
+href="#x1-117009r3">EAPIs supporting offset-prefix
+env variables</a></span><br /><span class="lotToc" >12.4&#x00A0;<a
+href="#x1-120001r4">EAPIs supporting offset-prefix</a></span><br /><span class="lotToc" >12.5&#x00A0;<a
+href="#x1-128001r5">EAPI Command Failure
+Behaviour</a></span><br /><span class="lotToc" >12.6&#x00A0;<a
+href="#x1-129001r6">Banned commands</a></span><br /><span class="lotToc" >12.7&#x00A0;<a
+href="#x1-134001r7">Extra <span
+class="ectt-1000">econf </span>arguments for EAPIs</a></span><br /><span class="lotToc" >12.8&#x00A0;<a
+href="#x1-135018r8">EAPIs
+supporting <span
+class="ectt-1000">dodoc -r</span></a></span><br /><span class="lotToc" >12.9&#x00A0;<a
+href="#x1-135019r9">EAPIs supporting symlinks for <span
+class="ectt-1000">doins</span></a></span><br /><span class="lotToc" >12.10&#x00A0;<a
+href="#x1-135020r10">EAPIs supporting
+<span
+class="ectt-1000">doman </span>languages</a></span><br /><span class="lotToc" >12.11&#x00A0;<a
+href="#x1-137001r11">EAPIs supporting controllable compression</a></span><br /><span class="lotToc" >12.12&#x00A0;<a
+href="#x1-138001r12">EAPI
+Behaviour for Use Queries not in IUSE_EFFECTIVE</a></span><br /><span class="lotToc" >12.13&#x00A0;<a
+href="#x1-140001r13"><span
+class="ectt-1000">unpack </span>extensions
+for EAPIs</a></span><br /><span class="lotToc" >12.14&#x00A0;<a
+href="#x1-140002r14">EAPIs supporting the <span
+class="ectt-1000">default </span>function</a></span><br /><span class="lotToc" >13.1&#x00A0;<a
+href="#x1-152001r1">Preservation of
+file modification times (mtimes)</a></span><br /><span class="lotToc" >D.1&#x00A0;<a
+href="#x1-169002">Features in EAPIs</a></span><br />
+</div>
+
+
+<h3 class="likesectionHead"><a
+ id="x1-5000"></a>Acknowledgements</h3>
+<!--l. 3--><p class="noindent" >Thanks to Mike Kelly (package manager provided utilities, section&#x00A0;<a
+href="#x1-12700012.3.3">12.3.3<!--tex4ht:ref: sec:pkg-mgr-commands --></a>), Danny van Dyk (ebuild
+functions, section&#x00A0;<a
+href="#x1-9200010">10<!--tex4ht:ref: sec:ebuild-functions --></a>), David Leverton (various sections), Petteri R&auml;ty (environment state,
+section&#x00A0;<a
+href="#x1-12100012.2">12.2<!--tex4ht:ref: sec:ebuild-env-state --></a>) and Ulrich M&uuml;ller (various sections) for contributions. Thanks to Christian
+Faulhammer for fixing some of the more horrible formatting screwups and providing the EAPI
+cheat sheet. Thanks also to Mike Frysinger and Brian Harring for proof-reading and suggestions for
+fixes and/or clarification.
+</p><!--l. 13--><p class="noindent" >
+</p>
+<h3 class="likesectionHead"><a
+ id="x1-6000"></a>Copyright and Licence</h3>
+<!--l. 15--><p class="noindent" >The bulk of this document is <span
+class="cmsy-10">&copy; </span>2007, 2008, 2009 Stephen Bennett and Ciaran McCreesh.
+Contributions are owned by their respective authors, and may have been changed substantially
+before inclusion.
+</p><!--l. 19--><p class="noindent" >This document is released under the Creative Commons Attribution-Share Alike 3.0 Licence. The
+full text of this licence can be found at <a
+href="http://creativecommons.org/licenses/by-sa/3.0/" class="url" ><span
+class="ectt-1000">http://creativecommons.org/licenses/by-sa/3.0/</span></a>.
+</p><!--l. 22--><p class="noindent" >
+</p>
+<h3 class="likesectionHead"><a
+ id="x1-7000"></a>Reporting Issues</h3>
+<!--l. 24--><p class="noindent" >Issues (inaccuracies, wording problems, omissions etc.)&#x00A0;in this document should be reported via
+Gentoo Bugzilla using product <span
+class="ecti-1000">Gentoo Hosted Projects</span>, component <span
+class="ecti-1000">PMS/EAPI </span>and the default
+assignee. There should be one bug per issue, and one issue per bug.
+</p><!--l. 28--><p class="noindent" >Patches (in <span
+class="ectt-1000">git format-patch </span>form if possible) may be submitted either via Bugzilla or to the
+<span
+class="ectt-1000">gentoo-pms@gentoo.org </span>mailing list. Patches will be reviewed by the PMS team, who will do one
+of the following:
+</p><!--l. 33--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">Accept and apply the patch.
+ </li>
+ <li class="compactitem">Explain why the patch cannot be applied as-is. The patch may then be updated and
+ resubmitted if appropriate.
+ </li>
+ <li class="compactitem">Reject the patch outright.
+ </li>
+ <li class="compactitem">Take special action merited by the individual circumstances.</li></ul>
+<!--l. 40--><p class="noindent" >When reporting issues, remember that this document is not the appropriate place for pushing
+through changes to the tree or the package manager, except where those changes are
+bugs.
+</p><!--l. 43--><p class="noindent" >If any issue cannot be resolved by the PMS team, it may be escalated to the Gentoo
+Council.
+
+
+
+
+
+
+</p>
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;1</span><br /><a
+ id="x1-80001"></a>Introduction</h2>
+<h3 class="sectionHead"><span class="titlemark">1.1 </span> <a
+ id="x1-90001.1"></a>Aims and Motivation</h3>
+<!--l. 5--><p class="noindent" >This document aims to fully describe the format of an ebuild repository and the ebuilds therein,
+as well as certain aspects of package manager behaviour required to support such a
+repository.
+</p><!--l. 8--><p class="noindent" >This document is <span
+class="ecti-1000">not </span>designed to be an introduction to ebuild development. Prior knowledge of
+ebuild creation and an understanding of how the package management system works is assumed;
+certain less familiar terms are explained in the Glossary in chapter&#x00A0;<a
+href="#x1-16100015">15<!--tex4ht:ref: sec:glossary --></a>.
+</p><!--l. 12--><p class="noindent" >This document does not specify any user or package manager configuration information.
+</p><!--l. 14--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">1.2 </span> <a
+ id="x1-100001.2"></a>Rationale</h3>
+<!--l. 16--><p class="noindent" >At present the only definition of what an ebuild can assume about its environment,
+and the only definition of what is valid in an ebuild, is the source code of the latest
+Portage release and a general consensus about which features are too new to assume
+availability. This has several drawbacks: not only is it impossible to change any aspect of
+Portage behaviour without verifying that nothing in the tree relies upon it, but if a new
+package manager should appear it becomes impossible to fully support such an ill-defined
+standard.
+</p><!--l. 23--><p class="noindent" >This document aims to address both of these concerns by defining almost all aspects of what an
+ebuild repository looks like, and how an ebuild is allowed to behave. Thus, both Portage and other
+package managers can change aspects of their behaviour not defined here without worry of
+incompatibilities with any particular repository.
+</p><!--l. 28--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">1.3 </span> <a
+ id="x1-110001.3"></a>Conventions</h3>
+<!--l. 30--><p class="noindent" >Text in <span
+class="ectt-1000">teletype </span>is used for filenames or variable names. <span
+class="ecti-1000">Italic </span>text is used for terms with a
+particular technical meaning in places where there may otherwise be ambiguity.
+</p><!--l. 33--><p class="noindent" >The term <span
+class="ecti-1000">package manager </span>is used throughout this document in a broad sense. Although some
+parts of this document are only relevant to fully featured package managers, many items are
+equally applicable to tools or other applications that interact with ebuilds or ebuild
+repositories.
+
+
+
+
+
+
+</p>
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;2</span><br /><a
+ id="x1-120002"></a>EAPIs</h2>
+<h3 class="sectionHead"><span class="titlemark">2.1 </span> <a
+ id="x1-130002.1"></a>Definition</h3>
+<!--l. 5--><p class="noindent" >An EAPI can be thought of as a &#8216;version&#8217; of this specification to which a package conforms. An
+EAPI value is a string, and is part of an ebuild&#8217;s metadata.
+</p><!--l. 8--><p class="noindent" >If a package manager encounters a package version with an unrecognised EAPI, it must not
+attempt to perform any operations upon it. It could, for example, ignore the package version
+entirely (although this can lead to user confusion), or it could mark the package version as masked.
+A package manager must not use any metadata generated from a package with an unrecognised
+EAPI.
+</p><!--l. 13--><p class="noindent" >The package manager must not attempt to perform any kind of comparison test other than
+equality upon EAPIs.
+</p><!--l. 16--><p class="noindent" >EAPIs are also used for profile directories, as described in section&#x00A0;<a
+href="#x1-470005.2.2">5.2.2<!--tex4ht:ref: sec:profile-eapi --></a>.
+</p><!--l. 18--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">2.2 </span> <a
+ id="x1-140002.2"></a>Defined EAPIs</h3>
+<!--l. 20--><p class="noindent" >The following EAPIs are defined by this specification:
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">0</span> </dt><dd
+class="description">The &#8216;original&#8217; base EAPI.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">1</span> </dt><dd
+class="description">EAPI &#8216;1&#8217; contains a number of extensions to EAPI &#8216;0&#8217;. Except where explicitly noted, it
+ is in all other ways identical to EAPI &#8216;0&#8217;.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">2</span> </dt><dd
+class="description">EAPI &#8216;2&#8217; contains a number of extensions to EAPI &#8216;1&#8217;. Except where explicitly noted, it
+ is in all other ways identical to EAPI &#8216;1&#8217;.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">3</span> </dt><dd
+class="description">EAPI &#8216;3&#8217; contains a number of extensions to EAPI &#8216;2&#8217;. Except where explicitly noted, it
+ is in all other ways identical to EAPI &#8216;2&#8217;.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">4</span> </dt><dd
+class="description">EAPI &#8216;4&#8217; contains a number of extensions to EAPI &#8216;3&#8217;. Except where explicitly noted, it
+ is in all other ways identical to EAPI &#8216;3&#8217;.</dd></dl>
+<!--l. 34--><p class="noindent" >Except where explicitly noted, everything in this specification applies to all of the above
+EAPIs.<span class="footnote-mark"><a
+href="pms2.html#fn1x3"><sup class="textsuperscript">1</sup></a></span><a
+ id="x1-14001f1"></a>
+</p>
+<h3 class="sectionHead"><span class="titlemark">2.3 </span> <a
+ id="x1-150002.3"></a>Reserved EAPIs</h3>
+
+
+<!--l. 43--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">EAPIs whose value consists purely of an integer are reserved for future versions of this
+ specification.
+ </li>
+ <li class="compactitem">EAPIs whose value starts with the string <span
+class="ectt-1000">paludis- </span>are reserved for experimental use
+ by the Paludis package manager.</li></ul>
+
+
+
+
+
+
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;3</span><br /><a
+ id="x1-160003"></a>Names and Versions</h2>
+<h3 class="sectionHead"><span class="titlemark">3.1 </span> <a
+ id="x1-170003.1"></a>Restrictions upon Names</h3>
+<!--l. 5--><p class="noindent" >No name may be empty. Package managers must not impose fixed upper boundaries upon the
+length of any name. A package manager should indicate or reject any name that is invalid
+according to these rules.
+</p><!--l. 8--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">3.1.1 </span> <a
+ id="x1-180003.1.1"></a>Category Names</h4>
+<!--l. 9--><p class="noindent" >A category name may contain any of the characters [<span
+class="ectt-1000">A-Za-z0-9+_.-</span>]. It must not begin with a
+hyphen or a dot.
+</p>
+<!--l. 12--><p class="noindent" ><span class="paragraphHead"><a
+ id="x1-190003.1.1"></a><span
+class="ecbx-1000">Note:</span></span>
+A hyphen is <span
+class="ecti-1000">not </span>required because of the <span
+class="ectt-1000">virtual </span>category. Usually, however, category names will
+contain a hyphen.
+</p><!--l. 15--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">3.1.2 </span> <a
+ id="x1-200003.1.2"></a>Package Names</h4>
+<!--l. 16--><p class="noindent" >A package name may contain any of the characters [<span
+class="ectt-1000">A-Za-z0-9+_-</span>]. It must not begin with a
+hyphen, and must not end in a hyphen followed by one or more digits.
+</p>
+<!--l. 19--><p class="noindent" ><span class="paragraphHead"><a
+ id="x1-210003.1.2"></a><span
+class="ecbx-1000">Note:</span></span>
+A package name does not include the category. The term <span
+class="ecti-1000">qualified package name </span>is used where a
+<span
+class="ectt-1000">category/package </span>pair is meant.
+</p><!--l. 22--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">3.1.3 </span> <a
+ id="x1-220003.1.3"></a>Slot Names</h4>
+<!--l. 24--><p class="noindent" >A slot name may contain any of the characters [<span
+class="ectt-1000">A-Za-z0-9+_.-</span>]. It must not begin with a hyphen
+or a dot.
+
+
+</p><!--l. 27--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">3.1.4 </span> <a
+ id="x1-230003.1.4"></a>USE Flag Names</h4>
+<!--l. 28--><p class="noindent" >A USE flag name may contain any of the characters [<span
+class="ectt-1000">A-Za-z0-9+_@-</span>]. It must begin with an
+alphanumeric character. Underscores should be considered reserved for <span
+class="ectt-1000">USE_EXPAND</span>, as described in
+section&#x00A0;<a
+href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>.
+</p>
+<!--l. 32--><p class="noindent" ><span class="paragraphHead"><a
+ id="x1-240003.1.4"></a><span
+class="ecbx-1000">Note:</span></span>
+The at-sign is required for <span
+class="ectt-1000">LINGUAS</span>.
+</p><!--l. 34--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">3.1.5 </span> <a
+ id="x1-250003.1.5"></a>Repository Names</h4>
+<!--l. 36--><p class="noindent" >A repository name may contain any of the characters [<span
+class="ectt-1000">A-Za-z0-9_-</span>]. It must not begin with a
+hyphen.
+</p><!--l. 39--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">3.1.6 </span> <a
+ id="x1-260003.1.6"></a>Keyword Names</h4>
+<!--l. 41--><p class="noindent" >A keyword name may contain any of the characters [<span
+class="ectt-1000">A-Za-z0-9_-</span>]. It must not begin with a
+hyphen. In contexts where it makes sense to do so, a keyword name may be prefixed by a tilde or a
+hyphen. In <span
+class="ectt-1000">KEYWORDS</span>, <span
+class="ectt-1000">-* </span>is also acceptable as a keyword, to indicate that a package will only work
+on listed targets.
+</p><!--l. 46--><p class="noindent" >A tilde prefixed keyword is, by convention, used to indicate a less stable package. It is generally
+assumed that any user accepting keyword <span
+class="ectt-1000">~foo </span>will also accept <span
+class="ectt-1000">foo</span>.
+</p><!--l. 49--><p class="noindent" >The exact meaning of any keywords value is beyond the scope of this specification.
+</p><!--l. 51--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">3.2 </span> <a
+ id="x1-270003.2"></a>Version Specifications</h3>
+<!--l. 52--><p class="noindent" >The package manager must not impose fixed limits upon the number of version components.
+Package managers should indicate or reject any version that is invalid according to these
+rules.
+</p><!--l. 55--><p class="noindent" >A version starts with the number part, which is in the form <span
+class="ectt-1000">[0-9]+(</span><span
+class="cmsy-10">\</span><span
+class="ectt-1000">.[0-9]+)* </span>(a positive
+integer, followed by zero or more dot-prefixed positive integers).
+</p><!--l. 58--><p class="noindent" >This may optionally be followed by one of <span
+class="ectt-1000">[a-z] </span>(a lowercase letter).
+</p><!--l. 60--><p class="noindent" >This may be followed by zero or more of the suffixes <span
+class="ectt-1000">_alpha</span>, <span
+class="ectt-1000">_beta</span>, <span
+class="ectt-1000">_pre</span>, <span
+class="ectt-1000">_rc </span>or <span
+class="ectt-1000">_p</span>, which
+themselves may be suffixed by an optional integer.
+</p><!--l. 63--><p class="noindent" >This may optionally be followed by the suffix <span
+class="ectt-1000">-r </span>followed immediately by an integer (the &#8220;revision
+number&#8221;). If this suffix is not present, it is assumed to be <span
+class="ectt-1000">-r0</span>.
+
+
+</p><!--l. 66--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">3.3 </span> <a
+ id="x1-280003.3"></a>Version Comparison</h3>
+<!--l. 68--><p class="noindent" >Version specifications are compared component by component, moving from left to right, as
+detailed in Algorithm&#x00A0;<a
+href="#x1-28001r1">1<!--tex4ht:ref: alg:version-comparison --></a> and sub-algorithms. If a sub-algorithm returns a decision, then that is the
+result of the whole comparison; if it terminates without returning a decision, the process continues
+from the point from which it was invoked.
+</p>
+<div class="algorithm">
+
+
+<!--l. 75--><p class="noindent" ><a
+ id="x1-28001r1"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Algorithm 1: </span><span
+class="content">Version comparison top-level logic</span></div><!--tex4ht:label?: x1-28001r1 -->
+<div class="algorithmic">
+<a
+ id="x1-28002r1"></a>
+ <span class="ALCitem"><span class="ecrm-0800">&#x2007;1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> let <span
+class="cmmi-10">A </span>and <span
+class="cmmi-10">B </span>be the versions to be compared <a
+ id="x1-28003r2"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> compare numeric components using Algorithm&#x00A0;<a
+href="#x1-28008r2">2<!--tex4ht:ref: alg:version-comparison-numeric --></a> <a
+ id="x1-28004r3"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> compare letter components using Algorithm&#x00A0;<a
+href="#x1-28041r4">4<!--tex4ht:ref: alg:version-comparison-letter --></a> <a
+ id="x1-28005r4"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> compare suffixes using Algorithm&#x00A0;<a
+href="#x1-28049r5">5<!--tex4ht:ref: alg:version-comparison-suffix --></a> <a
+ id="x1-28006r5"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> compare revision components using Algorithm&#x00A0;<a
+href="#x1-28083r7">7<!--tex4ht:ref: alg:version-comparison-revision --></a> <a
+ id="x1-28007r6"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A </span><span
+class="cmr-10">= </span><span
+class="cmmi-10">B</span>
+</div>
+
+
+</div><hr class="endfloat" />
+</div>
+<div class="algorithm">
+
+
+<!--l. 87--><p class="noindent" ><a
+ id="x1-28008r2"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Algorithm 2: </span><span
+class="content">Version comparison logic for numeric components</span></div><!--tex4ht:label?: x1-28008r2 -->
+<div class="algorithmic">
+<a
+ id="x1-28009r7"></a>
+ <span class="ALCitem"><span class="ecrm-0800">&#x2007;1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> define the notations <span
+class="cmmi-10">An</span><sub><span
+class="cmmi-7">k</span></sub> and <span
+class="cmmi-10">Bn</span><sub><span
+class="cmmi-7">k</span></sub> to mean the <span
+class="cmmi-10">k</span><sup class="textsuperscript"><span
+class="ecrm-0900">th</span></sup> numeric component of <span
+class="cmmi-10">A </span>and <span
+class="cmmi-10">B</span>
+ respectively, using <span
+class="cmr-10">0</span>-based indexing <a
+ id="x1-28010r8"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">An</span><sub><span
+class="cmr-7">0</span></sub> <span
+class="cmmi-10">&#x003E; Bn</span><sub><span
+class="cmr-7">0</span></sub> using integer comparison&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28011r9"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003E; B</span>
+ </span><a
+ id="x1-28012r10"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span>&#x00A0;<span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">An</span><sub><span
+class="cmr-7">0</span></sub> <span
+class="cmmi-10">&#x003C; Bn</span><sub><span
+class="cmr-7">0</span></sub> using integer comparison&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28013r11"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003C; B</span>
+ </span><a
+ id="x1-28014r12"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span><a
+ id="x1-28015r13"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> let <span
+class="cmmi-10">Ann </span>be the number of numeric components of <span
+class="cmmi-10">A</span> <a
+ id="x1-28016r14"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> let <span
+class="cmmi-10">Bnn </span>be the number of numeric components of <span
+class="cmmi-10">B</span> <a
+ id="x1-28017r15"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">for all</span>&#x00A0;<span
+class="cmmi-10">i </span>such that <span
+class="cmmi-10">i </span><span
+class="cmsy-10">&#x2265; </span><span
+class="cmr-10">1 </span>and <span
+class="cmmi-10">i &#x003C; Ann </span>and <span
+class="cmmi-10">i &#x003C; Bnn</span>, in ascending order&#x00A0;<span
+class="ecbx-1000">do</span><span class="for-body">
+<a
+ id="x1-28018r16"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> compare <span
+class="cmmi-10">An</span><sub><span
+class="cmmi-7">i</span></sub> and <span
+class="cmmi-10">Bn</span><sub><span
+class="cmmi-7">i</span></sub> using Algorithm&#x00A0;<a
+href="#x1-28025r3">3<!--tex4ht:ref: alg:version-comparison --></a>
+ </span><a
+ id="x1-28019r17"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">for</span><a
+ id="x1-28020r18"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">Ann &#x003E; Bnn</span>&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28021r19"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003E; B</span>
+ </span><a
+ id="x1-28022r20"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span>&#x00A0;<span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">Ann &#x003C; Bnn</span>&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28023r21"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003C; B</span>
+ </span><a
+ id="x1-28024r22"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+</div>
+
+
+</div><hr class="endfloat" />
+</div>
+<div class="algorithm">
+
+
+<!--l. 109--><p class="noindent" ><a
+ id="x1-28025r3"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Algorithm 3: </span><span
+class="content">Version comparison logic for each numeric component after the first</span></div><!--tex4ht:label?: x1-28025r3 -->
+<div class="algorithmic">
+<a
+ id="x1-28026r23"></a>
+ <span class="ALCitem"><span class="ecrm-0800">&#x2007;1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;either <span
+class="cmmi-10">An</span><sub><span
+class="cmmi-7">i</span></sub> or <span
+class="cmmi-10">Bn</span><sub><span
+class="cmmi-7">i</span></sub> has a leading <span
+class="ectt-1000">0</span>&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28027r24"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> let <span
+class="cmmi-10">An</span><span
+class="cmsy-10">&#x2032;</span><sub><span
+class="cmmi-7">i</span></sub> be <span
+class="cmmi-10">An</span><sub><span
+class="cmmi-7">i</span></sub> with any trailing <span
+class="ectt-1000">0</span>s removed <a
+ id="x1-28028r25"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> let <span
+class="cmmi-10">Bn</span><span
+class="cmsy-10">&#x2032;</span><sub><span
+class="cmmi-7">i</span></sub> be <span
+class="cmmi-10">Bn</span><sub><span
+class="cmmi-7">i</span></sub> with any trailing <span
+class="ectt-1000">0</span>s removed <a
+ id="x1-28029r26"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">An</span><span
+class="cmsy-10">&#x2032;</span><sub><span
+class="cmmi-7">i</span></sub> <span
+class="cmmi-10">&#x003E; Bn</span><span
+class="cmsy-10">&#x2032;</span><sub><span
+class="cmmi-7">i</span></sub> using ASCII stringwise comparison&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28030r27"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003E; B</span>
+ </span><a
+ id="x1-28031r28"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span>&#x00A0;<span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">An</span><span
+class="cmsy-10">&#x2032;</span><sub><span
+class="cmmi-7">i</span></sub> <span
+class="cmmi-10">&#x003C; Bn</span><span
+class="cmsy-10">&#x2032;</span><sub><span
+class="cmmi-7">i</span></sub> using ASCII stringwise comparison&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28032r29"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003C; B</span>
+ </span><a
+ id="x1-28033r30"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+ </span><a
+ id="x1-28034r31"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span><span class="else-body">
+<a
+ id="x1-28035r32"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">An</span><sub><span
+class="cmmi-7">i</span></sub> <span
+class="cmmi-10">&#x003E; Bn</span><sub><span
+class="cmmi-7">i</span></sub> using integer comparison&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28036r33"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003E; B</span>
+ </span><a
+ id="x1-28037r34"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span>&#x00A0;<span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">An</span><sub><span
+class="cmmi-7">i</span></sub> <span
+class="cmmi-10">&#x003C; Bn</span><sub><span
+class="cmmi-7">i</span></sub> using integer comparison&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28038r35"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003C; B</span>
+ </span><a
+ id="x1-28039r36"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+ </span><a
+ id="x1-28040r37"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+</div>
+
+
+</div><hr class="endfloat" />
+</div>
+<div class="algorithm">
+
+
+<!--l. 130--><p class="noindent" ><a
+ id="x1-28041r4"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Algorithm 4: </span><span
+class="content">Version comparison logic for letter components</span></div><!--tex4ht:label?: x1-28041r4 -->
+<div class="algorithmic">
+<a
+ id="x1-28042r38"></a>
+ <span class="ALCitem"><span class="ecrm-0800">&#x2007;1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> let <span
+class="cmmi-10">Al </span>be the letter component of <span
+class="cmmi-10">A </span>if any, otherwise the empty string <a
+ id="x1-28043r39"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> let <span
+class="cmmi-10">Bl </span>be the letter component of <span
+class="cmmi-10">B </span>if any, otherwise the empty string <a
+ id="x1-28044r40"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">Al &#x003E; Bl </span>using ASCII stringwise comparison&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28045r41"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003E; B</span>
+ </span><a
+ id="x1-28046r42"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span>&#x00A0;<span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">Al &#x003C; Bl </span>using ASCII stringwise comparison&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28047r43"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003C; B</span>
+ </span><a
+ id="x1-28048r44"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+</div>
+
+
+</div><hr class="endfloat" />
+</div>
+<div class="algorithm">
+
+
+<!--l. 143--><p class="noindent" ><a
+ id="x1-28049r5"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Algorithm 5: </span><span
+class="content">Version comparison logic for suffixes</span></div><!--tex4ht:label?: x1-28049r5 -->
+<div class="algorithmic">
+<a
+ id="x1-28050r45"></a>
+ <span class="ALCitem"><span class="ecrm-0800">&#x2007;1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> define the notations <span
+class="cmmi-10">As</span><sub><span
+class="cmmi-7">k</span></sub> and <span
+class="cmmi-10">Bs</span><sub><span
+class="cmmi-7">k</span></sub> to mean the <span
+class="cmmi-10">k</span><sup class="textsuperscript"><span
+class="ecrm-0900">th</span></sup> suffix of <span
+class="cmmi-10">A </span>and <span
+class="cmmi-10">B </span>respectively, using
+ <span
+class="cmr-10">0</span>-based indexing <a
+ id="x1-28051r46"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> let <span
+class="cmmi-10">Asn </span>be the number of suffixes of <span
+class="cmmi-10">A</span> <a
+ id="x1-28052r47"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> let <span
+class="cmmi-10">Bsn </span>be the number of suffixes of <span
+class="cmmi-10">B</span> <a
+ id="x1-28053r48"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">for all</span>&#x00A0;<span
+class="cmmi-10">i </span>such that <span
+class="cmmi-10">i </span><span
+class="cmsy-10">&#x2265; </span><span
+class="cmr-10">0 </span>and <span
+class="cmmi-10">i &#x003C; Asn </span>and <span
+class="cmmi-10">i &#x003C; Bsn</span>, in ascending order&#x00A0;<span
+class="ecbx-1000">do</span><span class="for-body">
+<a
+ id="x1-28054r49"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> compare <span
+class="cmmi-10">As</span><sub><span
+class="cmmi-7">i</span></sub> and <span
+class="cmmi-10">Bs</span><sub><span
+class="cmmi-7">i</span></sub> using Algorithm&#x00A0;<a
+href="#x1-28069r6">6<!--tex4ht:ref: alg:version-comparison --></a>
+ </span><a
+ id="x1-28055r50"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">for</span><a
+ id="x1-28056r51"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">Asn &#x003E; Bsn</span>&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28057r52"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">As</span><sub><span
+class="cmmi-7">Bsn</span></sub> is of type <span
+class="ectt-1000">_p</span>&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28058r53"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003E; B</span>
+ </span><a
+ id="x1-28059r54"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span><span class="else-body">
+<a
+ id="x1-28060r55"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003C; B</span>
+ </span><a
+ id="x1-28061r56"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+ </span><a
+ id="x1-28062r57"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span>&#x00A0;<span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">Asn &#x003C; Bsn</span>&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28063r58"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">Bs</span><sub><span
+class="cmmi-7">Asn</span></sub> is of type <span
+class="ectt-1000">_p</span>&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28064r59"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003C; B</span>
+ </span><a
+ id="x1-28065r60"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span><span class="else-body">
+<a
+ id="x1-28066r61"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">17:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003E; B</span>
+ </span><a
+ id="x1-28067r62"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">18:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+ </span><a
+ id="x1-28068r63"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">19:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+</div>
+
+
+</div><hr class="endfloat" />
+</div>
+<div class="algorithm">
+
+
+<!--l. 168--><p class="noindent" ><a
+ id="x1-28069r6"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Algorithm 6: </span><span
+class="content">Version comparison logic for each suffix</span></div><!--tex4ht:label?: x1-28069r6 -->
+<div class="algorithmic">
+<a
+ id="x1-28070r64"></a>
+ <span class="ALCitem"><span class="ecrm-0800">&#x2007;1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">As</span><sub><span
+class="cmmi-7">i</span></sub> and <span
+class="cmmi-10">Bs</span><sub><span
+class="cmmi-7">i</span></sub> are of the same type (<span
+class="ectt-1000">_alpha </span>vs <span
+class="ectt-1000">_beta </span>etc)&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28071r65"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> let <span
+class="cmmi-10">As</span><span
+class="cmsy-10">&#x2032;</span><sub><span
+class="cmmi-7">i</span></sub> be the integer part of <span
+class="cmmi-10">As</span><sub><span
+class="cmmi-7">i</span></sub> if any, otherwise <span
+class="ectt-1000">0</span> <a
+ id="x1-28072r66"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> let <span
+class="cmmi-10">Bs</span><span
+class="cmsy-10">&#x2032;</span><sub><span
+class="cmmi-7">i</span></sub> be the integer part of <span
+class="cmmi-10">Bs</span><sub><span
+class="cmmi-7">i</span></sub> if any, otherwise <span
+class="ectt-1000">0</span> <a
+ id="x1-28073r67"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">As</span><span
+class="cmsy-10">&#x2032;</span><sub><span
+class="cmmi-7">i</span></sub> <span
+class="cmmi-10">&#x003E; Bs</span><span
+class="cmsy-10">&#x2032;</span><sub><span
+class="cmmi-7">i</span></sub>, using integer comparison&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28074r68"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003E; B</span>
+ </span><a
+ id="x1-28075r69"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span>&#x00A0;<span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">As</span><span
+class="cmsy-10">&#x2032;</span><sub><span
+class="cmmi-7">i</span></sub> <span
+class="cmmi-10">&#x003C; Bs</span><span
+class="cmsy-10">&#x2032;</span><sub><span
+class="cmmi-7">i</span></sub>, using integer comparison&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28076r70"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003C; B</span>
+ </span><a
+ id="x1-28077r71"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+ </span><a
+ id="x1-28078r72"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span>&#x00A0;<span
+class="ecbx-1000">if</span>&#x00A0;the type of <span
+class="cmmi-10">As</span><sub><span
+class="cmmi-7">i</span></sub> is greater than the type of <span
+class="cmmi-10">Bs</span><sub><span
+class="cmmi-7">i</span></sub> using the ordering
+ <span
+class="ectt-1000">_alpha</span> <span
+class="cmmi-10">&#x003C;</span> <span
+class="ectt-1000">_beta</span> <span
+class="cmmi-10">&#x003C;</span> <span
+class="ectt-1000">_pre</span> <span
+class="cmmi-10">&#x003C;</span> <span
+class="ectt-1000">_rc</span> <span
+class="cmmi-10">&#x003C;</span> <span
+class="ectt-1000">_p</span>&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28079r73"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003E; B</span>
+ </span><a
+ id="x1-28080r74"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span><span class="else-body">
+<a
+ id="x1-28081r75"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003C; B</span>
+ </span><a
+ id="x1-28082r76"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+</div>
+
+
+</div><hr class="endfloat" />
+</div>
+<div class="algorithm">
+
+
+<!--l. 187--><p class="noindent" ><a
+ id="x1-28083r7"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Algorithm 7: </span><span
+class="content">Version comparison logic for revision components</span></div><!--tex4ht:label?: x1-28083r7 -->
+<div class="algorithmic">
+<a
+ id="x1-28084r77"></a>
+ <span class="ALCitem"><span class="ecrm-0800">&#x2007;1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> let <span
+class="cmmi-10">Ar </span>be the integer part of the revision component of <span
+class="cmmi-10">A </span>if any, otherwise <span
+class="ectt-1000">0</span> <a
+ id="x1-28085r78"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> let <span
+class="cmmi-10">Br </span>be the integer part of the revision component of <span
+class="cmmi-10">B </span>if any, otherwise <span
+class="ectt-1000">0</span> <a
+ id="x1-28086r79"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">Ar &#x003E; Br </span>using integer comparison&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28087r80"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003E; B</span>
+ </span><a
+ id="x1-28088r81"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span>&#x00A0;<span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">Ar &#x003C; Br </span>using integer comparison&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-28089r82"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">return </span>&#x00A0;<span
+class="cmmi-10">A &#x003C; B</span>
+ </span><a
+ id="x1-28090r83"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+</div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h3 class="sectionHead"><span class="titlemark">3.4 </span> <a
+ id="x1-290003.4"></a>Uniqueness of versions</h3>
+<!--l. 201--><p class="noindent" >No two packages in a given repository may have the same qualified package name and equal
+versions. For example, a repository may not contain more than one of <span
+class="ectt-1000">foo-bar/baz-1.0.2</span>,
+<span
+class="ectt-1000">foo-bar/baz-1.0.2-r0 </span>and <span
+class="ectt-1000">foo-bar/baz-1.000.2</span>.
+
+
+
+
+
+
+</p>
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;4</span><br /><a
+ id="x1-300004"></a>Tree Layout</h2>
+<!--l. 3--><p class="noindent" >This chapter defines the layout on-disk of an ebuild repository. In all cases below where a file or
+directory is specified, a symlink to a file or directory is also valid. In this case, the package manager
+must follow the operating system&#8217;s semantics for symbolic links and must not behave differently
+from normal.
+</p>
+<h3 class="sectionHead"><span class="titlemark">4.1 </span> <a
+ id="x1-310004.1"></a>Top Level</h3>
+<!--l. 10--><p class="noindent" >An ebuild repository shall occupy one directory on disk, with the following subdirectories:
+ </p><ul>
+ <li class="compactitem">One directory per category, whose name shall be the name of the category. The layout
+ of these directories shall be as described in section&#x00A0;<a
+href="#x1-320004.2">4.2<!--tex4ht:ref: sec:category-dirs --></a>.
+ </li>
+ <li class="compactitem">A <span
+class="ectt-1000">profiles </span>directory, described in section&#x00A0;<a
+href="#x1-340004.4">4.4<!--tex4ht:ref: sec:profiles-dir --></a>.
+ </li>
+ <li class="compactitem">A <span
+class="ectt-1000">licenses </span>directory (optional), described in section&#x00A0;<a
+href="#x1-390004.5">4.5<!--tex4ht:ref: sec:licenses-dir --></a>.
+ </li>
+ <li class="compactitem">An <span
+class="ectt-1000">eclass </span>directory (optional), described in section&#x00A0;<a
+href="#x1-400004.6">4.6<!--tex4ht:ref: sec:eclass-dir --></a>.
+ </li>
+ <li class="compactitem">A <span
+class="ectt-1000">metadata </span>directory (optional), described in section&#x00A0;<a
+href="#x1-410004.7">4.7<!--tex4ht:ref: sec:metadata-dir --></a>.
+ </li>
+ <li class="compactitem">Other optional support files and directories (skeleton ebuilds or ChangeLogs, for
+ example) may exist but are not covered by this specification. The package manager
+ must ignore any of these files or directories that it does not recognise.
+ </li></ul>
+<!--l. 24--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">4.2 </span> <a
+ id="x1-320004.2"></a>Category Directories</h3>
+<!--l. 27--><p class="noindent" >Each category provided by the repository (see also: the <span
+class="ectt-1000">profiles/categories </span>file, section&#x00A0;<a
+href="#x1-340004.4">4.4<!--tex4ht:ref: profiles-categories --></a>)
+shall be contained in one directory, whose name shall be that of the category. Each category
+directory shall contain:
+ </p><ul>
+ <li class="compactitem">A <span
+class="ectt-1000">metadata.xml </span>file, as described in appendix&#x00A0;<a
+href="#x1-162000A">A<!--tex4ht:ref: sec:metadata-xml --></a>. Optional.
+ </li>
+ <li class="compactitem">Zero or more package directories, one for each package in the category, as described
+ in section&#x00A0;<a
+href="#x1-330004.3">4.3<!--tex4ht:ref: sec:package-dirs --></a>. The name of the package directory shall be the corresponding package
+ name.</li></ul>
+<!--l. 38--><p class="noindent" >Category directories may contain additional files, whose purpose is not covered by this
+specification. Additional directories that are not for a package may <span
+class="ecti-1000">not </span>be present, to avoid
+conflicts with package name directories; an exception is made for filesystem components whose
+name starts with a dot, which the package manager must ignore, and for any directory named
+<span
+class="ectt-1000">CVS</span>.
+</p><!--l. 43--><p class="noindent" >It is not required that a directory exists for each category provided by the repository. A category
+directory that does not exist shall be considered equivalent to an empty category (and by
+extension, a package manager may treat an empty category as a category that does not
+exist).
+
+
+</p><!--l. 47--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">4.3 </span> <a
+ id="x1-330004.3"></a>Package Directories</h3>
+<!--l. 50--><p class="noindent" >A package directory contains the following:
+ </p><ul>
+ <li class="compactitem">Zero or more ebuilds. These are as described in section&#x00A0;<a
+href="#x1-650007">7<!--tex4ht:ref: sec:ebuild-format --></a> and others.
+ </li>
+ <li class="compactitem">A <span
+class="ectt-1000">metadata.xml </span>file, as described in appendix&#x00A0;<a
+href="#x1-162000A">A<!--tex4ht:ref: sec:metadata-xml --></a>. Optional only for legacy support.
+ </li>
+ <li class="compactitem">A <span
+class="ectt-1000">ChangeLog</span>, in a format determined by the provider of the respository. Optional.
+ </li>
+ <li class="compactitem">A <span
+class="ectt-1000">Manifest </span>file, whose format is described in <span class="cite">[<a
+href="#XGlep44">1</a>]</span>.
+ </li>
+ <li class="compactitem">A <span
+class="ectt-1000">files </span>directory, containing any support files needed by the ebuilds. Optional.</li></ul>
+<!--l. 60--><p class="noindent" >Any ebuild in a package directory must be named <span
+class="ectt-1000">name-ver.suffix</span>, where:
+</p><!--l. 63--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem"><span
+class="ectt-1000">name </span>is the (unqualified) package name.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">ver </span>is the package&#8217;s version.
+ </li>
+ <li class="compactitem"> <span
+class="ectt-1000">suffix </span>is <span
+class="ectt-1000">ebuild</span>.</li></ul>
+<!--l. 68--><p class="noindent" >Package managers must ignore any ebuild file that does not match these rules.
+</p><!--l. 70--><p class="noindent" >A package directory that contains no correctly named ebuilds shall be considered a package with
+no versions. A package with no versions shall be considered equivalent to a package that does not
+exist (and by extension, a package manager may treat a package that does not exist as a package
+with no versions).
+</p><!--l. 75--><p class="noindent" >A package directory may contain other files or directories, whose purpose is not covered by this
+specification.
+</p><!--l. 78--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">4.4 </span> <a
+ id="x1-340004.4"></a>The Profiles Directory</h3>
+<!--l. 81--><p class="noindent" >The profiles directory shall contain zero or more profile directories as described in section&#x00A0;<a
+href="#x1-430005">5<!--tex4ht:ref: sec:profiles --></a>, as
+well as the following files and directories. In any line-based file, lines beginning with a # character
+are treated as comments, whilst blank lines are ignored. All contents of this directory, with the
+exception of <span
+class="ectt-1000">repo_name</span>, are optional.
+</p><!--l. 88--><p class="noindent" >The profiles directory may contain an <span
+class="ectt-1000">eapi </span>file. This file, if it exists, must contain a single line
+with the name of an EAPI. This specifies the EAPI to use when handling the profiles
+directory; a package manager must not attempt to use any repository whose profile
+directory requires an EAPI it does not support. If no <span
+class="ectt-1000">eapi </span>file is present, EAPI 0 shall be
+used.
+</p><!--l. 93--><p class="noindent" >If the repository is not intended to be stand-alone, the contents of these files are to be taken from
+or merged with the master repository as necessary.
+</p><!--l. 96--><p class="noindent" >Other files not described by this specification may exist, but may not be relied upon. The package
+manager must ignore any files in this directory that it does not recognise.
+
+
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">arch.list</span> </dt><dd
+class="description"> Contains a list, one entry per line, of permissible values for the <span
+class="ectt-1000">ARCH </span>variable,
+ and hence permissible keywords for packages in this repository.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">categories</span> </dt><dd
+class="description"> Contains a list, one entry per line, of categories provided by this repository.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">eapi</span> </dt><dd
+class="description">See above.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">info_pkgs</span> </dt><dd
+class="description">Contains a list, one entry per line, of qualified package names. Any package
+ matching one of these is to be listed when a package manager displays a &#8216;system
+ information&#8217; listing.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">info_vars</span> </dt><dd
+class="description">Contains a list, one entry per line, of profile, configuration, and environment
+ variables which are considered to be of interest. The value of each of these variables
+ may be shown when the package manager displays a &#8216;system information&#8217; listing.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">package.mask</span> </dt><dd
+class="description"> Contains a list, one entry per line, of package dependency specifications
+ (using the directory&#8217;s EAPI). Any package version matching one of these is considered
+ to be masked, and will not be installed regardless of profile unless it is unmasked by
+ the user configuration.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">profiles.desc</span> </dt><dd
+class="description">Described below in section&#x00A0;<a
+href="#x1-350004.4.1">4.4.1<!--tex4ht:ref: sec:profiles.desc --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">repo_name</span> </dt><dd
+class="description">Contains, on a single line, the name of this repository. The repository name
+ must conform to section&#x00A0;<a
+href="#x1-250003.1.5">3.1.5<!--tex4ht:ref: sec:repository-names --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">thirdpartymirrors</span> </dt><dd
+class="description">Described below in section&#x00A0;<a
+href="#x1-360004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">use.desc</span> </dt><dd
+class="description">Contains descriptions of valid global USE flags for this repository. The format is
+ described in section&#x00A0;<a
+href="#x1-370004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">use.local.desc</span> </dt><dd
+class="description">Contains descriptions of valid local USE flags for this repository, along with
+ the packages to which they apply. The format is as described in section&#x00A0;<a
+href="#x1-370004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">desc/</span> </dt><dd
+class="description">This directory contains files analogous to <span
+class="ectt-1000">use.desc </span>for the various <span
+class="ectt-1000">USE_EXPAND</span>
+ variables. Each file in it is named <span
+class="ectt-1000">&#x003C;varname&#x003E;.desc</span>, where <span
+class="ectt-1000">&#x003C;varname&#x003E; </span>is the variable
+ name, in lowercase, whose possible values the file describes. The format of each file is
+ as for <span
+class="ectt-1000">use.desc</span>, described in section&#x00A0;<a
+href="#x1-370004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>. The <span
+class="ectt-1000">USE_EXPAND </span>name is <span
+class="ecti-1000">not </span>included as
+ a prefix here.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">updates/</span> </dt><dd
+class="description">This directory is described in section&#x00A0;<a
+href="#x1-380004.4.4">4.4.4<!--tex4ht:ref: sec:updates-dir --></a>.</dd></dl>
+<!--l. 131--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">4.4.1 </span> <a
+ id="x1-350004.4.1"></a>The profiles.desc file</h4>
+<!--l. 133--><p class="noindent" ><span
+class="ectt-1000">profiles.desc </span>is a line-based file, with the standard commenting rules from section&#x00A0;<a
+href="#x1-340004.4">4.4<!--tex4ht:ref: sec:profiles-dir --></a>,
+containing a list of profiles that are valid for use, along with their associated architecture and
+status. Each line has the format:
+
+
+</p>
+<div class="verbatim" id="verbatim-1">
+&#x003C;keyword&#x003E;&#x00A0;&#x003C;profile&#x00A0;path&#x003E;&#x00A0;&#x003C;stability&#x003E;</div>
+<!--l. 140--><p class="nopar" >
+</p><!--l. 142--><p class="noindent" >Where:
+</p><!--l. 145--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem"><span
+class="ectt-1000">&#x003C;keyword&#x003E; </span>is the default keyword for the profile and the <span
+class="ectt-1000">ARCH </span>for which the profile is
+ valid.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">&#x003C;profile path&#x003E; </span>is the (relative) path from the <span
+class="ectt-1000">profiles </span>directory to the profile in
+ question.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">&#x003C;stability&#x003E; </span>indicates the stability of the profile. This may be useful for QA tools,
+ which may wish to display warnings with a reduced severity for some profiles. The
+ values <span
+class="ectt-1000">stable </span>and <span
+class="ectt-1000">dev </span>are widely used, but repositories may use other values.</li></ul>
+<!--l. 154--><p class="noindent" >Fields are whitespace-delimited.
+</p><!--l. 156--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">4.4.2 </span> <a
+ id="x1-360004.4.2"></a>The thirdpartymirrors file</h4>
+<!--l. 158--><p class="noindent" ><span
+class="ectt-1000">thirdpartymirrors </span>is another simple line-based file, describing the valid mirrors for use with
+<span
+class="ectt-1000">mirror:// </span>URIs in this repository, and the associated download locations. The format of each line
+is:
+
+
+</p>
+<div class="verbatim" id="verbatim-2">
+&#x003C;mirror&#x00A0;name&#x003E;&#x00A0;&#x003C;mirror&#x00A0;1&#x003E;&#x00A0;&#x003C;mirror&#x00A0;2&#x003E;&#x00A0;...&#x00A0;&#x003C;mirror&#x00A0;n&#x003E;</div>
+<!--l. 163--><p class="nopar" >Fields are whitespace-delimited. When parsing a URI of the form <span
+class="ectt-1000">mirror://name/path/filename</span>,
+where the <span
+class="ectt-1000">path/ </span>part is optional, the <span
+class="ectt-1000">thirdpartymirrors </span>file is searched for a line whose first field
+is <span
+class="ectt-1000">name</span>. Then the download URIs in the subsequent fields have <span
+class="ectt-1000">path/filename </span>appended to them
+to generate the URIs from which a download is attempted.
+</p><!--l. 169--><p class="noindent" >Each mirror name may appear at most once in a file. Behaviour when a mirror name appears
+multiple times is undefined. Behaviour when a mirror is defined in terms of another mirror is
+undefined. A package manager may choose to fetch from all of or a subset of the listed mirrors, and
+may use an order other than the one described.
+</p><!--l. 174--><p class="noindent" >The mirror with the name equal to the repository&#8217;s name (and if the repository has a master, the
+master&#8217;s name) may be consulted for all downloads.
+</p><!--l. 177--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">4.4.3 </span> <a
+ id="x1-370004.4.3"></a>use.desc and related files</h4>
+<!--l. 179--><p class="noindent" ><span
+class="ectt-1000">use.desc </span>contains descriptions of every valid global USE flag for this repository. It is a
+line-based file with the standard rules for comments and blank lines. The format of each line
+is:
+
+
+</p>
+<div class="verbatim" id="verbatim-3">
+&#x003C;flagname&#x003E;&#x00A0;-&#x00A0;&#x003C;description&#x003E;</div>
+<!--l. 183--><p class="nopar" >
+</p><!--l. 185--><p class="noindent" ><span
+class="ectt-1000">use.local.desc </span>contains descriptions of every valid local USE flag&#8212;those that apply only to a
+small number of packages, or that have different meanings for different packages. Its format
+is:
+
+
+</p>
+<div class="verbatim" id="verbatim-4">
+&#x003C;category/package&#x003E;:&#x003C;flagname&#x003E;&#x00A0;-&#x00A0;&#x003C;description&#x003E;</div>
+<!--l. 189--><p class="nopar" >Flags must be listed once for each package to which they apply, or if a flag is listed in both
+<span
+class="ectt-1000">use.desc </span>and <span
+class="ectt-1000">use.local.desc</span>, it must be listed once for each package for which its meaning
+differs from that described in <span
+class="ectt-1000">use.desc</span>.
+</p><!--l. 194--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">4.4.4 </span> <a
+ id="x1-380004.4.4"></a>The updates directory</h4>
+<!--l. 196--><p class="noindent" >The <span
+class="ectt-1000">updates </span>directory is used to inform the package manager that a package has moved
+categories, names, or that a version has changed SLOT. It contains one file per quarter year,
+named <span
+class="ectt-1000">[1-4]Q-[YYYY] </span>for the first to fourth quarter of a given year, for example <span
+class="ectt-1000">1Q-2004 </span>or
+<span
+class="ectt-1000">3Q-2006</span>. The format of each file is again line-based, with each line having one of the following
+formats:
+
+
+</p>
+<div class="verbatim" id="verbatim-5">
+move&#x00A0;&#x003C;qpn1&#x003E;&#x00A0;&#x003C;qpn2&#x003E;
+&#x00A0;<br />slotmove&#x00A0;&#x003C;spec&#x003E;&#x00A0;&#x003C;slot1&#x003E;&#x00A0;&#x003C;slot2&#x003E;</div>
+<!--l. 204--><p class="nopar" >The first form, where <span
+class="ectt-1000">qpn1 </span>and <span
+class="ectt-1000">qpn2 </span>are <span
+class="ecti-1000">qualified package names</span>, instructs the package
+manager that the package <span
+class="ectt-1000">qpn1 </span>has changed name, category, or both, and is now called
+<span
+class="ectt-1000">qpn2</span>.
+</p><!--l. 208--><p class="noindent" >The second form instructs the package manager that any currently installed package version
+matching package dependency specification <span
+class="ectt-1000">spec </span>whose <span
+class="ectt-1000">SLOT </span>is set to <span
+class="ectt-1000">slot1 </span>should have it
+updated to <span
+class="ectt-1000">slot2</span>.
+</p><!--l. 212--><p class="noindent" >Any name that has appeared as the origin of a move must not be reused in the future. Any slot
+that has appeared as the origin of a slot move may not be used by packages matching the spec of
+that slot move in the future.
+</p><!--l. 216--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">4.5 </span> <a
+ id="x1-390004.5"></a>The Licenses Directory</h3>
+<!--l. 219--><p class="noindent" >The <span
+class="ectt-1000">licenses </span>directory shall contain copies of the licenses used by packages in the repository.
+Each file will be named according to the name used in the <span
+class="ectt-1000">LICENSE </span>variable as described in
+section&#x00A0;<a
+href="#x1-690008.2">8.2<!--tex4ht:ref: ebuild-var-LICENSE --></a>, and will contain the complete text of the license in human-readable form. Plain text
+format is strongly preferred but not required.
+</p><!--l. 224--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">4.6 </span> <a
+ id="x1-400004.6"></a>The Eclass Directory</h3>
+<!--l. 227--><p class="noindent" >The <span
+class="ectt-1000">eclass </span>directory shall contain copies of the eclasses provided by this repository. The format of
+these files is described in section&#x00A0;<a
+href="#x1-11200011">11<!--tex4ht:ref: sec:eclasses --></a>. It may also contain, in their own directory, support files
+needed by these eclasses.
+</p><!--l. 231--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">4.7 </span> <a
+ id="x1-410004.7"></a>The Metadata Directory</h3>
+<!--l. 234--><p class="noindent" >The <span
+class="ectt-1000">metadata </span>directory contains various repository-level metadata that is not contained in
+<span
+class="ectt-1000">profiles/</span>. All contents are optional. In this standard only the <span
+class="ectt-1000">cache </span>subdirectory is described;
+other contents are optional but may include security advisories, DTD files for the various XML
+files used in the repository, and repository timestamps.
+
+
+</p><!--l. 239--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">4.7.1 </span> <a
+ id="x1-420004.7.1"></a>The metadata cache</h4>
+<!--l. 241--><p class="noindent" >The <span
+class="ectt-1000">metadata/cache </span>directory may contain a cached form of all important ebuild metadata
+variables. The contents of this directory are described in section&#x00A0;<a
+href="#x1-15800014">14<!--tex4ht:ref: metadata-cache --></a>.
+
+
+
+
+
+
+</p>
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;5</span><br /><a
+ id="x1-430005"></a>Profiles</h2>
+<h3 class="sectionHead"><span class="titlemark">5.1 </span> <a
+ id="x1-440005.1"></a>General principles</h3>
+<!--l. 5--><p class="noindent" >Generally, a profile defines information specific to a certain &#8216;type&#8217; of system&#8212;it lies somewhere
+between repository-level defaults and user configuration in that the information it contains is not
+necessarily applicable to all machines, but is sufficiently general that it should not be left to the
+user to configure it. Some parts of the profile can be overridden by user configuration, some only by
+another profile.
+</p><!--l. 11--><p class="noindent" >The format of a profile is relatively simple. Each profile is a directory containing any number of the
+files described in this chapter, and possibly inheriting another profile. The files themselves
+follow a few basic conventions as regards inheritance and format; these are described in
+the next section. It may also contain any number of subdirectories containing other
+profiles.
+</p><!--l. 16--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">5.2 </span> <a
+ id="x1-450005.2"></a>Files that make up a profile</h3>
+<!--l. 18--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.2.1 </span> <a
+ id="x1-460005.2.1"></a>The parent file</h4>
+<!--l. 19--><p class="noindent" >A profile may contain a <span
+class="ectt-1000">parent </span>file. Each line must contain a relative path to another profile which
+will be considered as one of this profile&#8217;s parents. Any settings from the parent are inherited by
+this profile, and can be overridden by it. Precise rules for how settings are combined with the
+parent profile vary between files, and are described below. Parents are handled depth
+first, left to right, with duplicate parent paths being sourced for every time they are
+encountered.
+</p><!--l. 25--><p class="noindent" >It is illegal for a profile&#8217;s parent tree to contain cycles. Package manager behaviour upon
+encountering a cycle is undefined.
+</p><!--l. 28--><p class="noindent" >This file must not contain comments, blank lines or make use of line continuations.
+</p><!--l. 30--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.2.2 </span> <a
+ id="x1-470005.2.2"></a>The eapi file</h4>
+<!--l. 32--><p class="noindent" >A profile directory may contain an <span
+class="ectt-1000">eapi </span>file. This file, if it exists, must contain a single line with
+the name of an EAPI. This specifies the EAPI to use when handling the directory in question; a
+package manager must not attempt to use any profile using a directory which requires an EAPI it
+does not support. If no <span
+class="ectt-1000">eapi </span>file is present, EAPI 0 shall be used. The EAPI is not inherited via
+the <span
+class="ectt-1000">parent </span>file.
+
+
+</p><!--l. 38--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.2.3 </span> <a
+ id="x1-480005.2.3"></a>deprecated</h4>
+<!--l. 39--><p class="noindent" >If a profile contains a file named <span
+class="ectt-1000">deprecated</span>, it is treated as such. The first line of this file
+should contain the path from the <span
+class="ectt-1000">profiles </span>directory of the repository to a valid profile
+that is the recommended upgrade path from this profile. The remainder of the file can
+contain any text, which may be displayed to users using this profile by the package
+manager. This file is not inherited&#8212;profiles which inherit from a deprecated profile are <span
+class="ecti-1000">not</span>
+deprecated.
+</p><!--l. 45--><p class="noindent" >This file must not contain comments or make use of line continuations.
+</p><!--l. 47--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.2.4 </span> <a
+ id="x1-490005.2.4"></a>make.defaults</h4>
+<!--l. 48--><p class="noindent" ><span
+class="ectt-1000">make.defaults </span>is used to define defaults for various environment and configuration variables. This
+file is unusual in that it is not combined at a file level with the parent&#8212;instead, each variable is
+combined or overridden individually as described in section&#x00A0;<a
+href="#x1-590005.3">5.3<!--tex4ht:ref: sec:profile-variables --></a>.
+</p><!--l. 52--><p class="noindent" >The file itself is a line-based key-value format. Each line contains a single <span class="obeylines-h"><span class="verb"><span
+class="ectt-1000">VAR="value"</span></span></span> entry,
+where the value must be double quoted. A variable name must start with one of <span
+class="ectt-1000">a-zA-Z </span>and may
+contain <span
+class="ectt-1000">a-zA-Z0-9_ </span>only. Additional syntax, which is a small subset of bash syntax, is allowed as
+follows:
+</p><!--l. 58--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">Variables to the right of the equals sign in the form <span
+class="ectt-1000">${foo} </span>or <span
+class="ectt-1000">$foo </span>are recognised and
+ expanded from variables previously set in this or earlier <span
+class="ectt-1000">make.defaults </span>files.
+ </li>
+ <li class="compactitem">One logical line may be continued over multiple physical lines by escaping the newline
+ with a backslash. A quoted string may also continue over multiple physical lines in
+ this fashion, so that the quoted string can begin, continue, and end on two or more
+ separate lines.
+ </li>
+ <li class="compactitem">Backslashes, except for line continuations, are not allowed.</li></ul>
+<!--l. 66--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.2.5 </span> <a
+ id="x1-500005.2.5"></a>virtuals</h4>
+<!--l. 68--><p class="noindent" >The <span
+class="ectt-1000">virtuals </span>file defines default providers for &#8220;old-style&#8221; virtual packages. It is a simple line-based
+file, with each line containing two whitespace-delimited tokens. The first is a virtual package name
+(for example, <span
+class="ectt-1000">virtual/alsa</span>) and the second is a qualified package name. Blank lines and those
+beginning with a # character are ignored. When attempting to resolve a virtual name to a concrete
+package, the specification defined in the active profile&#8217;s <span
+class="ectt-1000">virtuals </span>list should be used if no provider
+is already installed.
+</p><!--l. 75--><p class="noindent" >The <span
+class="ectt-1000">virtuals </span>file is inherited in the simplest manner: all entries from the parent profile are
+loaded, then entries from the current profile. If a virtual package name appears in both, the entry
+in the parent profile is discarded.
+
+
+</p><!--l. 79--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.2.6 </span> <a
+ id="x1-510005.2.6"></a>Simple line-based files</h4>
+<!--l. 81--><p class="noindent" >These files are a simple one-item-per-line list, which is inherited in the following manner: the
+parent profile&#8217;s list is taken, and the current profile&#8217;s list appended. If any line begins with a
+hyphen, then any lines previous to it whose contents are equal to the remainder of that line
+are removed from the list. Once again, blank lines and those beginning with a # are
+discarded.
+</p><!--l. 86--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.2.7 </span> <a
+ id="x1-520005.2.7"></a>packages</h4>
+<!--l. 87--><p class="noindent" >The <span
+class="ectt-1000">packages </span>file is used to define the &#8216;system set&#8217; for this profile. After the above rules for
+inheritance and comments are applied, its lines must take one of two forms: a package dependency
+specification prefixed by <span
+class="ectt-1000">* </span>denotes that the atom forms part of the system set. A package
+dependency specification on its own may also appear for legacy reasons, but should be ignored
+when calculating the system set.
+</p><!--l. 93--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.2.8 </span> <a
+ id="x1-530005.2.8"></a>packages.build</h4>
+<!--l. 94--><p class="noindent" >The <span
+class="ectt-1000">packages.build </span>file is used by Gentoo&#8217;s Catalyst tool to generate stage1 tarballs, and has no
+relevance to the operation of a package manager. It is thus outside the scope of this document, but
+is mentioned here for completeness.
+</p><!--l. 98--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.2.9 </span> <a
+ id="x1-540005.2.9"></a>package.mask</h4>
+<!--l. 99--><p class="noindent" ><span
+class="ectt-1000">package.mask </span>is used to prevent packages from being installed on a given profile. Each line
+contains one package dependency specification; anything matching this specification will not be
+installed unless unmasked by the user&#8217;s configuration.
+</p><!--l. 103--><p class="noindent" >Note that the <span
+class="ectt-1000">-spec </span>syntax can be used to remove a mask in a parent profile, but not necessarily a
+global mask (from <span
+class="ectt-1000">profiles/package.mask</span>, section&#x00A0;<a
+href="#x1-340004.4">4.4<!--tex4ht:ref: profiles-package.mask --></a>).
+</p>
+<!--l. 106--><p class="noindent" ><span class="paragraphHead"><a
+ id="x1-550005.2.9"></a><span
+class="ecbx-1000">Note:</span></span>
+Portage currently treats <span
+class="ectt-1000">profiles/package.mask </span>as being on the leftmost branch of the inherit
+tree when it comes to <span
+class="ectt-1000">-lines</span>. This behaviour may not be relied upon.
+
+
+</p><!--l. 109--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.2.10 </span> <a
+ id="x1-560005.2.10"></a>package.provided</h4>
+<!--l. 110--><p class="noindent" ><span
+class="ectt-1000">package.provided </span>is used to tell the package manager that a certain package version should be
+considered to be provided by the system regardless of whether it is actually installed.
+Because it has severe adverse effects on USE-based and slot-based dependencies, its
+use is strongly deprecated and package manager support must be regarded as purely
+optional.
+</p><!--l. 115--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.2.11 </span> <a
+ id="x1-570005.2.11"></a>package.use</h4>
+<!--l. 116--><p class="noindent" >The <span
+class="ectt-1000">package.use </span>file may be used by the package manager to override the default USE flags
+specified by <span
+class="ectt-1000">make.defaults </span>on a per package basis. The format is to have a package
+dependency specification, and then a space delimited list of USE flags to enable. A USE flag
+in the form of <span
+class="ectt-1000">-flag </span>indicates that the package should have the USE flag disabled.
+The package dependency specification is limited to the forms defined by the directory&#8217;s
+EAPI.
+</p><!--l. 122--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.2.12 </span> <a
+ id="x1-580005.2.12"></a>USE masking and forcing</h4>
+<!--l. 124--><p class="noindent" >This section covers the four files <span
+class="ectt-1000">use.mask</span>, <span
+class="ectt-1000">use.force</span>, <span
+class="ectt-1000">package.use.mask </span>and
+<span
+class="ectt-1000">package.use.force</span>. They are described together because they interact in a non-trivial
+manner.
+</p><!--l. 127--><p class="noindent" >Simply speaking, <span
+class="ectt-1000">use.mask </span>and <span
+class="ectt-1000">use.force </span>are used to say that a given USE flag must
+never or always, respectively, be enabled when using this profile. <span
+class="ectt-1000">package.use.mask </span>and
+<span
+class="ectt-1000">package.use.force </span>do the same thing on a per-package, or per-version, basis. The precise manner
+in which they interact is less simple, and is best described in terms of the algorithm used to
+determine whether a flag is masked for a given package version. This is described in Algorithm&#x00A0;<a
+href="#x1-58001r8">8<!--tex4ht:ref: alg:use-masking --></a>.
+</p><div class="algorithm">
+
+
+<!--l. 133--><p class="noindent" ><a
+ id="x1-58001r8"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Algorithm 8: </span><span
+class="content">USE masking logic</span></div><!--tex4ht:label?: x1-58001r8 -->
+<div class="algorithmic">
+<a
+ id="x1-58002r84"></a>
+ <span class="ALCitem"><span class="ecrm-0800">&#x2007;1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> let masked = false <a
+ id="x1-58003r85"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">for</span>&#x00A0;each profile in the inheritance tree, depth first&#x00A0;<span
+class="ecbx-1000">do</span><span class="for-body">
+<a
+ id="x1-58004r86"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="ectt-1000">use.mask </span>contains <span
+class="ecti-1000">flag</span>&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-58005r87"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> let masked = true
+ </span><a
+ id="x1-58006r88"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span>&#x00A0;<span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="ectt-1000">use.mask </span>contains <span
+class="ecti-1000">-flag</span>&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-58007r89"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> let masked = false
+ </span><a
+ id="x1-58008r90"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span><a
+ id="x1-58009r91"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">for</span>&#x00A0;each <span
+class="cmmi-10">line </span>in package.use.mask, in order, for which the spec matches <span
+class="cmmi-10">package</span>&#x00A0;<span
+class="ecbx-1000">do</span><span class="for-body">
+<a
+ id="x1-58010r92"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">line </span>contains <span
+class="ecti-1000">flag</span>&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-58011r93"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:34.99146pt;">&nbsp;</span> let masked = true
+ </span><a
+ id="x1-58012r94"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span>&#x00A0;<span
+class="ecbx-1000">if</span>&#x00A0;<span
+class="cmmi-10">line </span>contains <span
+class="ecti-1000">-flag</span>&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-58013r95"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:34.99146pt;">&nbsp;</span> let masked = false
+ </span><a
+ id="x1-58014r96"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+ </span><a
+ id="x1-58015r97"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">for</span>
+ </span><a
+ id="x1-58016r98"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">for</span>
+</div>
+
+
+</div><hr class="endfloat" />
+</div>
+<!--l. 153--><p class="noindent" >The logic for <span
+class="ectt-1000">use.force </span>and <span
+class="ectt-1000">package.use.force </span>is identical. If a flag is both masked and forced,
+the mask is considered to take precedence.
+</p><!--l. 156--><p class="noindent" ><span
+class="ectt-1000">USE_EXPAND </span>values may be forced or masked by using <span
+class="ectt-1000">expand_name_value</span>.
+</p><!--l. 158--><p class="noindent" >A package manager may treat <span
+class="ectt-1000">ARCH </span>values that are not the current architecture as being
+masked.
+</p>
+<h3 class="sectionHead"><span class="titlemark">5.3 </span> <a
+ id="x1-590005.3"></a>Profile variables</h3>
+<!--l. 4--><p class="noindent" >This section documents variables that have special meaning, or special behaviour, when defined in
+a profile&#8217;s <span
+class="ectt-1000">make.defaults </span>file.
+</p><!--l. 7--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">5.3.1 </span> <a
+ id="x1-600005.3.1"></a>Incremental Variables</h4>
+<!--l. 8--><p class="noindent" ><span
+class="ecti-1000">Incremental </span>variables must stack between parent and child profiles in the following manner:
+Beginning with the highest parent profile, tokenise the variable&#8217;s value based on whitespace and
+concatenate the lists. Then, for any token <span
+class="cmmi-10">T </span>beginning with a hyphen, remove it and any previous
+tokens whose value is equal to <span
+class="cmmi-10">T </span>with the hyphen removed, or, if <span
+class="cmmi-10">T </span>is equal to <span
+class="ectt-1000">-*</span>, remove all
+previous values. Note that because of this treatment, the order of tokens in the final result is
+arbitrary, not necessarily related to the order of tokens in any given profile. The following variables
+must be treated in this fashion:
+ </p><ul>
+ <li class="compactitem"><span
+class="ectt-1000">USE</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">USE_EXPAND</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">USE_EXPAND_HIDDEN</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">CONFIG_PROTECT</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">CONFIG_PROTECT_MASK</span></li></ul>
+<!--l. 23--><p class="noindent" >If the package manager supports any EAPI listed in table&#x00A0;<a
+href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as using profile-defined <span
+class="ectt-1000">IUSE</span>
+injection, the following variables must also be treated incrementally; otherwise, the following
+variables may or may not be treated incrementally:
+ </p><ul>
+ <li class="compactitem"><span
+class="ectt-1000">IUSE_IMPLICIT</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">USE_EXPAND_IMPLICIT</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">USE_EXPAND_UNPREFIXED</span></li></ul>
+<!--l. 32--><p class="noindent" >Other variables, except where they affect only package-manager-specific functionality (such as
+Portage&#8217;s <span
+class="ectt-1000">FEATURES </span>variable), must not be treated incrementally&#8212;later definitions shall completely
+override those in parent profiles.
+</p>
+<div class="table">
+
+
+<!--l. 36--><p class="noindent" ><a
+ id="x1-60001r1"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;5.1: </span><span
+class="content">Profile-defined <span
+class="ectt-1000">IUSE </span>injection for EAPIs</span></div><!--tex4ht:label?: x1-60001r1 -->
+<div class="tabular">
+ <table id="TBL-2" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-2-1g"><col
+id="TBL-2-1" /><col
+id="TBL-2-2" /><col
+id="TBL-2-3" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports profile-defined </span><span
+class="ectt-1000">IUSE </span><span
+class="ecbx-1000">injection?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-2"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-2"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h4 class="subsectionHead"><span class="titlemark">5.3.2 </span> <a
+ id="x1-610005.3.2"></a>Specific variables and their meanings</h4>
+<!--l. 52--><p class="noindent" >The following variables have specific meanings when set in profiles.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">ARCH</span> </dt><dd
+class="description">The system&#8217;s architecture. Must be a value listed in <span
+class="ectt-1000">profiles/arch.list</span>; see
+ section&#x00A0;<a
+href="#x1-340004.4">4.4<!--tex4ht:ref: arch.list --></a> for more information. Must be equal to the primary <span
+class="ectt-1000">KEYWORD </span>for this profile.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">CONFIG_PROTECT, CONFIG_PROTECT_MASK</span> </dt><dd
+class="description">Contain
+ whitespace-delimited lists used to control the configuration file protection. Described
+ more fully in chapter&#x00A0;<a
+href="#x1-15300013.3.3">13.3.3<!--tex4ht:ref: sec:config-protect --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">USE</span> </dt><dd
+class="description">Defines the list of default USE flags for this profile. Flags may be added or removed
+ by the user&#8217;s configuration. <span
+class="ectt-1000">USE_EXPAND </span>values must not be specified in this way.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">USE_EXPAND</span> </dt><dd
+class="description">Defines a list of variables which are to be treated incrementally and
+ whose contents are to be expanded into the USE variable as passed to ebuilds. See
+ section&#x00A0;<a
+href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for details.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">USE_EXPAND_UNPREFIXED</span> </dt><dd
+class="description">Similar to <span
+class="ectt-1000">USE_EXPAND</span>, but no prefix is used. If
+ the repository contains any package using an EAPI supporting profile-defined <span
+class="ectt-1000">IUSE</span>
+ injection (see table&#x00A0;<a
+href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a>), this list must contain at least <span
+class="ectt-1000">ARCH</span>. See section&#x00A0;<a
+href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for
+ details.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">USE_EXPAND_HIDDEN</span> </dt><dd
+class="description">Contains a (possibly empty) subset of names from
+ <span
+class="ectt-1000">USE_EXPAND </span>and <span
+class="ectt-1000">USE_EXPAND_UNPREFIXED</span>. The package manager may use this set as
+ a hint to avoid displaying uninteresting or unhelpful information to an end user.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">USE_EXPAND_IMPLICIT, IUSE_IMPLICIT</span> </dt><dd
+class="description">Used to inject implicit values into
+ <span
+class="ectt-1000">IUSE</span>. See section&#x00A0;<a
+href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for details.</dd></dl>
+<!--l. 75--><p class="noindent" >In addition, for EAPIs listed in table&#x00A0;<a
+href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as supporting profile defined <span
+class="ectt-1000">IUSE </span>injection, the variables
+named in <span
+class="ectt-1000">USE_EXPAND </span>and <span
+class="ectt-1000">USE_EXPAND_UNPREFIXED </span>have special handling as described in
+section&#x00A0;<a
+href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>.
+</p><!--l. 79--><p class="noindent" >Any other variables set in <span
+class="ectt-1000">make.defaults </span>must be passed on into the ebuild environment as-is,
+and are not required to be interpreted by the package manager.
+
+
+
+
+
+
+</p>
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;6</span><br /><a
+ id="x1-620006"></a>Old-Style Virtual Packages</h2>
+<!--l. 4--><p class="noindent" >Old-style virtuals are pseudo-packages&#8212;they can be depended upon or installed, but do not exist
+in the ebuild repository. An old-style virtual requires several things in the repository: at least one
+ebuild must list the virtual in its <span
+class="ectt-1000">PROVIDE </span>variable, and there must be at least one entry in a
+profiles <span
+class="ectt-1000">virtuals </span>file listing the default provider for each profile&#8212;see sections&#x00A0;<a
+href="#x1-700008.3">8.3<!--tex4ht:ref: ebuild-var-provide --></a> and <a
+href="#x1-500005.2.5">5.2.5<!--tex4ht:ref: sec:profiles-virtuals --></a> for
+specifics on these two. Old-style virtuals require special handling as regards dependencies; this is
+described below.
+</p><!--l. 14--><p class="noindent" >All old-style virtuals must use the category <span
+class="ectt-1000">virtual</span>. Not all packages using the <span
+class="ectt-1000">virtual </span>category
+may be assumed to be old style virtuals.
+</p>
+<!--l. 17--><p class="noindent" ><span class="paragraphHead"><a
+ id="x1-630006"></a><span
+class="ecbx-1000">Note:</span></span>
+A <span
+class="ecti-1000">new-style </span>virtual is simply an ebuild which install no files and use its dependency strings to
+select providers. By convention, and to ease migration, these are also placed in the <span
+class="ectt-1000">virtual</span>
+category.
+</p><!--l. 21--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">6.1 </span> <a
+ id="x1-640006.1"></a>Dependencies on virtual packages</h3>
+<!--l. 23--><p class="noindent" >When a dependency on a virtual package is encountered, it must be resolved into a real package
+before it can be satisfied. There are two factors that affect this process: whether a package
+providing the virtual is installed, and the <span
+class="ectt-1000">virtuals </span>file in the active profile (section&#x00A0;<a
+href="#x1-500005.2.5">5.2.5<!--tex4ht:ref: sec:profiles-virtuals --></a>). If a
+package is already installed which satisfies the virtual requirement (via <span
+class="ectt-1000">PROVIDE</span>), then it should be
+used to satisfy the dependency. Otherwise, the profiles <span
+class="ectt-1000">virtuals </span>file (section&#x00A0;<a
+href="#x1-500005.2.5">5.2.5<!--tex4ht:ref: sec:profiles-virtuals --></a>) should be
+consulted to choose an appropriate provider.
+</p><!--l. 33--><p class="noindent" >Dependencies on old style virtuals must not use any kind of version restriction.
+</p><!--l. 35--><p class="noindent" >Blocks on provided virtuals have special behaviour documented in section&#x00A0;<a
+href="#x1-850009.2.4">9.2.4<!--tex4ht:ref: provided-blocks --></a>.
+
+
+
+
+
+
+</p>
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;7</span><br /><a
+ id="x1-650007"></a>Ebuild File Format</h2>
+<!--l. 4--><p class="noindent" >The ebuild file format is in its basic form a subset of the format of a bash script. The interpreter is
+assumed to be GNU bash, version 3.2 or later, see footnote <a
+href="#x1-125001f6">6<!--tex4ht:ref: fn:bash3.2 --></a> on page <a
+href="#x1-125001f6">172<!--tex4ht:ref: fn:bash3.2 --></a>. The file encoding must
+be UTF-8 with Unix-style newlines. When sourced, the ebuild must define certain variables and
+functions (see sections&#x00A0;<a
+href="#x1-660008">8<!--tex4ht:ref: sec:ebuild-vars --></a> and <a
+href="#x1-9200010">10<!--tex4ht:ref: sec:ebuild-functions --></a> for specific information), and must not call any external programs,
+write anything to standard output or standard error, or modify the state of the system in any
+way.
+
+
+
+
+
+
+</p>
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;8</span><br /><a
+ id="x1-660008"></a>Ebuild-defined Variables</h2>
+<!--l. 4--><p class="noindent" ><span class="paragraphHead"><a
+ id="x1-670008"></a><span
+class="ecbx-1000">Note:</span></span>
+This section describes variables that may or must be defined by ebuilds. For variables that are
+passed from the package manager to the ebuild, see section&#x00A0;<a
+href="#x1-11700012.1">12.1<!--tex4ht:ref: sec:ebuild-env-vars --></a>.
+</p><!--l. 7--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">8.1 </span> <a
+ id="x1-680008.1"></a>Metadata invariance</h3>
+<!--l. 10--><p class="noindent" >All ebuild-defined variables discussed in this chapter must be defined independently of any system,
+profile or tree dependent data, and must not vary depending upon the ebuild phase. In particular,
+ebuild metadata can and will be generated on a different system from that upon which the
+ebuild will be used, and the ebuild must generate identical metadata every time it is
+used.
+</p><!--l. 16--><p class="noindent" >Globally defined ebuild variables without a special meaning must similarly not rely upon variable
+data.
+</p><!--l. 19--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">8.2 </span> <a
+ id="x1-690008.2"></a>Mandatory Ebuild-defined Variables</h3>
+<!--l. 21--><p class="noindent" >All ebuilds must define at least the following variables:
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">DESCRIPTION</span> </dt><dd
+class="description">A short human-readable description of the package&#8217;s purpose. May be
+ defined by an eclass. Must not be empty.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">HOMEPAGE</span> </dt><dd
+class="description">The URI or URIs for a package&#8217;s homepage, including protocols. May be
+ defined by an eclass. See section&#x00A0;<a
+href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">IUSE</span> </dt><dd
+class="description">The <span
+class="ectt-1000">USE </span>flags used by the ebuild. Any eclass that works with <span
+class="ectt-1000">USE </span>flags must also set
+ <span
+class="ectt-1000">IUSE</span>, listing only the variables used by that eclass. The package manager is responsible
+ for merging these values. See section&#x00A0;<a
+href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for discussion on which values must be
+ listed this variable.
+ <!--l. 33--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">I</span><span
+class="small-caps">U</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">U</span><span
+class="small-caps">L</span><span
+class="small-caps">T</span><span
+class="small-caps">S</span></span></span></p><!--l. 33--><p class="noindent" >In EAPIs shown in table&#x00A0;<a
+href="#x1-69001r1">8.1<!--tex4ht:ref: tab:iuse-defaults-table --></a> as supporting <span
+class="ectt-1000">IUSE </span>defaults, any use flag name in <span
+class="ectt-1000">IUSE</span>
+ may be prefixed by at most one of a plus or a minus sign. If such a prefix is present,
+ the package manager may use it as a suggestion as to the default value of the use flag
+ if no other configuration overrides it.
+ </p></dd><dt class="description">
+<span
+class="ecbx-1000">KEYWORDS</span> </dt><dd
+class="description">A whitespace separated list of keywords for the ebuild. Each token must be
+ a valid keyword name, as per section&#x00A0;<a
+href="#x1-260003.1.6">3.1.6<!--tex4ht:ref: sec:keyword-names --></a>. May include <span
+class="ectt-1000">-*</span>, which indicates that the
+ package will only work on explicitly listed archs. May include <span
+class="ectt-1000">-arch</span>, which indicates
+ that the package will not work on the specified arch. May be empty, which indicates
+ uncertain functionality on any architecture. May be defined in an eclass.
+
+
+ </dd><dt class="description">
+<span
+class="ecbx-1000">LICENSE</span> </dt><dd
+class="description">The package&#8217;s license. Each text token must correspond to a tree &#8220;licenses/&#8221;
+ entry (see section&#x00A0;<a
+href="#x1-390004.5">4.5<!--tex4ht:ref: sec:licenses-dir --></a>). See section&#x00A0;<a
+href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax. May be defined by an eclass.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">SLOT</span> </dt><dd
+class="description">The package&#8217;s slot. Must be a valid slot name, as per section&#x00A0;<a
+href="#x1-220003.1.3">3.1.3<!--tex4ht:ref: sec:slot-names --></a>. May be defined
+ by an eclass. Must not be empty.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">SRC_URI</span> </dt><dd
+class="description">A list of source URIs for the package. Valid protocols are <span
+class="ectt-1000">http://</span>, <span
+class="ectt-1000">https://</span>,
+ <span
+class="ectt-1000">ftp:// </span>and <span
+class="ectt-1000">mirror:// </span>(see section&#x00A0;<a
+href="#x1-360004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a> for mirror behaviour). Fetch restricted
+ packages may include URL parts consisting of just a filename. See section&#x00A0;<a
+href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full
+ syntax.</dd></dl>
+<!--l. 53--><p class="noindent" >If any of these variables are undefined, or if any of these variables are set to invalid values, the
+package manager&#8217;s behaviour is undefined; ideally, an error in one ebuild should not prevent
+operations upon other ebuilds or packages.
+</p>
+<div class="table">
+
+
+<!--l. 57--><p class="noindent" ><a
+ id="x1-69001r1"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;8.1: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">IUSE </span>defaults</span></div><!--tex4ht:label?: x1-69001r1 -->
+<div class="tabular">
+ <table id="TBL-3" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-3-1g"><col
+id="TBL-3-1" /><col
+id="TBL-3-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-3-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-3-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">IUSE </span><span
+class="ecbx-1000">defaults?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-3-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-3-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-2"
+class="td11">Yes</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h3 class="sectionHead"><span class="titlemark">8.3 </span> <a
+ id="x1-700008.3"></a>Optional Ebuild-defined Variables</h3>
+<!--l. 74--><p class="noindent" >Ebuilds may define any of the following variables:
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">DEPEND</span> </dt><dd
+class="description">See section&#x00A0;<a
+href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">EAPI</span> </dt><dd
+class="description">The EAPI. See below for defaults.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">PDEPEND</span> </dt><dd
+class="description">See section&#x00A0;<a
+href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">PROVIDE</span> </dt><dd
+class="description">Zero or more qualified package names of any <span
+class="ecti-1000">old style </span>virtuals provided by this
+ package. See section&#x00A0;<a
+href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">RDEPEND</span> </dt><dd
+class="description">See section&#x00A0;<a
+href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a>. For some EAPIs, <span
+class="ectt-1000">RDEPEND </span>has special behaviour for its value if
+ unset and when used with an eclass. See section&#x00A0;<a
+href="#x1-720008.3.2">8.3.2<!--tex4ht:ref: sec:rdepend-depend --></a> for details.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">RESTRICT</span> </dt><dd
+class="description">Zero or more behaviour restrictions for this package. See section&#x00A0;<a
+href="#x1-890009.2.5">9.2.5<!--tex4ht:ref: sec:restrict --></a> for
+ value meanings and section&#x00A0;<a
+href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">PROPERTIES</span> </dt><dd
+class="description"><!--l. 88--><p class="noindent" > </p><!--l. 88--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">O</span><span
+class="small-caps">P</span><span
+class="small-caps">E</span><span
+class="small-caps">R</span><span
+class="small-caps">T</span><span
+class="small-caps">I</span><span
+class="small-caps">E</span><span
+class="small-caps">S</span></span></span> Zero or more properties for this package. See section&#x00A0;<a
+href="#x1-900009.2.6">9.2.6<!--tex4ht:ref: sec:properties --></a> for value
+ meanings and section&#x00A0;<a
+href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax. For EAPIs listed in table&#x00A0;<a
+href="#x1-70001r2">8.2<!--tex4ht:ref: tab:properties-table --></a> as having optional
+ support, ebuilds must not rely upon the package manager recognising or understanding
+ this variable in any way.
+ </p></dd><dt class="description">
+<span
+class="ecbx-1000">S</span> </dt><dd
+class="description">The path to the temporary build directory, used by <span
+class="ectt-1000">src_compile</span>, <span
+class="ectt-1000">src_install </span>etc.
+ Defaults to <span
+class="ectt-1000">${WORKDIR}/${P}</span>.</dd></dl>
+<div class="table">
+
+
+<!--l. 96--><p class="noindent" ><a
+ id="x1-70001r2"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;8.2: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">PROPERTIES</span></span></div><!--tex4ht:label?: x1-70001r2 -->
+<div class="tabular">
+ <table id="TBL-4" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-4-1g"><col
+id="TBL-4-1" /><col
+id="TBL-4-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-4-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-4-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-4-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">PROPERTIES</span><span
+class="ecbx-1000">?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-4-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-2"
+class="td11">Optionally </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-2"
+class="td11">Optionally </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-2"
+class="td11">Optionally </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-2"
+class="td11">Optionally </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h4 class="subsectionHead"><span class="titlemark">8.3.1 </span> <a
+ id="x1-710008.3.1"></a>EAPI</h4>
+<!--l. 114--><p class="noindent" >An empty or unset <span
+class="ectt-1000">EAPI </span>value is equivalent to <span
+class="ectt-1000">0</span>. Ebuilds must not assume that they will get a
+particular one of these two values if they are expecting one of these two values.
+</p><!--l. 117--><p class="noindent" >The package manager must either pre-set the <span
+class="ectt-1000">EAPI </span>variable to <span
+class="ectt-1000">0 </span>or ensure that it is unset before
+sourcing the ebuild for metadata generation. When using the ebuild for other purposes, the
+package manager must either pre-set <span
+class="ectt-1000">EAPI </span>to the value specified by the ebuild&#8217;s metadata or ensure
+that it is unset.
+</p><!--l. 122--><p class="noindent" >If any of these variables are set to invalid values, the package manager&#8217;s behaviour is
+undefined; ideally, an error in one ebuild should not prevent operations upon other ebuilds or
+packages.
+</p><!--l. 125--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">8.3.2 </span> <a
+ id="x1-720008.3.2"></a><span
+class="ectt-1000">RDEPEND </span>value</h4>
+ <!--l. 128--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">R</span><span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">E</span><span
+class="small-caps">N</span><span
+class="small-caps">D</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">E</span><span
+class="small-caps">N</span><span
+class="small-caps">D</span></span></span></p><!--l. 128--><p class="noindent" >In EAPIs listed in table&#x00A0;<a
+href="#x1-72001r3">8.3<!--tex4ht:ref: tab:rdepend-depend-table --></a> as having <span
+class="ectt-1000">RDEPEND=DEPEND</span>, if <span
+class="ectt-1000">RDEPEND </span>is unset (but not if it is set to
+an empty string) in an ebuild, the package manager must set its value to be equal to the value of
+<span
+class="ectt-1000">DEPEND</span>.
+</p><!--l. 132--><p class="noindent" >When dealing with eclasses, only values set in the ebuild itself are considered for this behaviour;
+any <span
+class="ectt-1000">DEPEND </span>or <span
+class="ectt-1000">RDEPEND </span>set in an eclass does not change the implicit <span
+class="ectt-1000">RDEPEND=DEPEND</span>
+for the ebuild portion, and any <span
+class="ectt-1000">DEPEND </span>value set in an eclass does not get added to
+<span
+class="ectt-1000">RDEPEND</span>.
+</p>
+<div class="table">
+
+
+<!--l. 136--><p class="noindent" ><a
+ id="x1-72001r3"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;8.3: </span><span
+class="content">EAPIs with <span
+class="ectt-1000">RDEPEND=DEPEND </span>Default</span></div><!--tex4ht:label?: x1-72001r3 -->
+<div class="tabular">
+ <table id="TBL-5" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-5-1g"><col
+id="TBL-5-1" /><col
+id="TBL-5-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-5-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-5-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-5-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">RDEPEND=DEPEND</span><span
+class="ecbx-1000">?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-5-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-2"
+class="td11">Yes </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-5-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-2"
+class="td11">Yes</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-2"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h3 class="sectionHead"><span class="titlemark">8.4 </span> <a
+ id="x1-730008.4"></a>Magic Ebuild-defined Variables</h3>
+<!--l. 153--><p class="noindent" >The following variables must be defined by <span
+class="ectt-1000">inherit </span>(see section&#x00A0;<a
+href="#x1-11300011.1">11.1<!--tex4ht:ref: sec:inherit --></a>, and may be considered to be
+part of the ebuild&#8217;s metadata:
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">ECLASS</span> </dt><dd
+class="description">The current eclass, or unset if there is no current eclass. This is handled magically
+ by <span
+class="ectt-1000">inherit </span>and must not be modified manually.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">INHERITED</span> </dt><dd
+class="description">List of inherited eclass names. Again, this is handled magically by <span
+class="ectt-1000">inherit</span>.</dd></dl>
+<!--l. 162--><p class="noindent" ><span class="paragraphHead"><a
+ id="x1-740008.4"></a><span
+class="ecbx-1000">Note:</span></span>
+Thus, by extension of section&#x00A0;<a
+href="#x1-680008.1">8.1<!--tex4ht:ref: sec:metadata-invariance --></a>, <span
+class="ectt-1000">inherit </span>may not be used conditionally, except upon constant
+conditions.
+</p><!--l. 165--><p class="noindent" >The following are special variables defined by the package manager for internal use and may or
+may not be exported to the ebuild environment:
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">DEFINED_PHASES</span> </dt><dd
+class="description"><!--l. 169--><p class="noindent" > </p><!--l. 169--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">F</span><span
+class="small-caps">I</span><span
+class="small-caps">N</span><span
+class="small-caps">E</span><span
+class="small-caps">D</span>-<span
+class="small-caps">P</span><span
+class="small-caps">H</span><span
+class="small-caps">A</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span><span
+class="small-caps">S</span></span></span> A space separated arbitrarily ordered list of phase names (e.g.
+ <span
+class="ectt-1000">configure setup unpack</span>) whose phase functions are defined by the ebuild or an eclass
+ inherited by the ebuild. If no phase functions are defined, a single hyphen is used instead
+ of an empty string. For EAPIs listed in table&#x00A0;<a
+href="#x1-75001r4">8.4<!--tex4ht:ref: tab:defined-phases-table --></a> as having optional <span
+class="ectt-1000">DEFINED_PHASES</span>
+ support, package managers may not rely upon the metadata cache having this variable
+ defined, and must treat an empty string as &#8220;this information is not available&#8221;.</p></dd></dl>
+<!--l. 177--><p class="noindent" ><span class="paragraphHead"><a
+ id="x1-750008.4"></a><span
+class="ecbx-1000">Note:</span></span>
+Thus, by extension of section&#x00A0;<a
+href="#x1-680008.1">8.1<!--tex4ht:ref: sec:metadata-invariance --></a>, phase functions must not be defined based upon any variant
+condition.
+</p>
+<div class="table">
+
+
+<!--l. 180--><p class="noindent" ><a
+ id="x1-75001r4"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;8.4: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">DEFINED_PHASES</span></span></div><!--tex4ht:label?: x1-75001r4 -->
+<div class="tabular">
+ <table id="TBL-6" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-6-1g"><col
+id="TBL-6-1" /><col
+id="TBL-6-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-6-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-6-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-6-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">DEFINED_PHASES</span><span
+class="ecbx-1000">?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-6-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-2"
+class="td11">Optionally </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-2"
+class="td11">Optionally </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-2"
+class="td11">Optionally </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-2"
+class="td11">Optionally </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+
+
+
+
+
+
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;9</span><br /><a
+ id="x1-760009"></a>Dependencies</h2>
+<h3 class="sectionHead"><span class="titlemark">9.1 </span> <a
+ id="x1-770009.1"></a>Dependency Classes</h3>
+<!--l. 6--><p class="noindent" >There are three classes of dependencies supported by ebuilds:
+</p><!--l. 9--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">Build dependencies (<span
+class="ectt-1000">DEPEND</span>). These must be installed and usable before the ebuild is
+ installed.
+ </li>
+ <li class="compactitem">Runtime dependencies (<span
+class="ectt-1000">RDEPEND</span>). These must be installed and usable before the ebuild
+ is treated as usable.
+ </li>
+ <li class="compactitem">Post dependencies (<span
+class="ectt-1000">PDEPEND</span>). These must be installed at some point.</li></ul>
+<!--l. 16--><p class="noindent" >In addition, <span
+class="ectt-1000">SRC_URI</span>, <span
+class="ectt-1000">HOMEPAGE</span>, <span
+class="ectt-1000">PROVIDE</span>, <span
+class="ectt-1000">RESTRICT</span>, <span
+class="ectt-1000">PROPERTIES </span>and <span
+class="ectt-1000">LICENSE </span>use
+dependency-style specifications to specify their values.
+</p><!--l. 19--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">9.2 </span> <a
+ id="x1-780009.2"></a>Dependency Specification Format</h3>
+<!--l. 21--><p class="noindent" >The following elements are recognised in at least one class of specification. All elements
+must be surrounded on both sides by whitespace, except at the start and end of the
+string.
+</p><!--l. 25--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">A package dependency specification. Permitted in <span
+class="ectt-1000">DEPEND</span>, <span
+class="ectt-1000">RDEPEND</span>, <span
+class="ectt-1000">PDEPEND</span>.
+ </li>
+ <li class="compactitem">A simple qualified package name. Permitted in <span
+class="ectt-1000">PROVIDE </span>(and inside <span
+class="ectt-1000">DEPEND </span>etc via the
+ previous item).
+ </li>
+ <li class="compactitem">A URI, in the form <span
+class="ectt-1000">proto://host/path</span>. Permitted in <span
+class="ectt-1000">SRC_URI </span>and <span
+class="ectt-1000">HOMEPAGE</span>. In
+ EAPIs listed in table&#x00A0;<a
+href="#x1-78001r1">9.1<!--tex4ht:ref: tab:uri-arrows-table --></a> as supporting <span
+class="ectt-1000">SRC_URI </span>arrows, may optionally be followed
+ by whitespace, then <span
+class="ectt-1000">-&#x003E;</span>, then whitespace, then a simple filename when in <span
+class="ectt-1000">SRC_URI</span>. For
+ <span
+class="ectt-1000">SRC_URI </span>behaviour, see section&#x00A0;<a
+href="#x1-910009.2.7">9.2.7<!--tex4ht:ref: sec:src-uri-behaviour --></a>.
+ </li>
+ <li class="compactitem">A flat filename. Permitted in <span
+class="ectt-1000">SRC_URI</span>.
+ </li>
+ <li class="compactitem">A license name (e.g. <span
+class="ectt-1000">GPL-2</span>). Permitted in <span
+class="ectt-1000">LICENSE</span>.
+ </li>
+ <li class="compactitem">A simple string. Permitted in <span
+class="ectt-1000">RESTRICT </span>and <span
+class="ectt-1000">PROPERTIES</span>.
+ </li>
+ <li class="compactitem">An all-of group, which consists of an open parenthesis, followed by whitespace,
+ followed by zero or more of (a dependency item of any kind followed by whitespace),
+ followed by a close parenthesis. More formally: <span
+class="ectt-1000">all-of ::= &#8217;(&#8217; whitespace (item</span>
+ <span
+class="ectt-1000">whitespace)* &#8217;)&#8217;</span>. Permitted in all specification style variables.
+ </li>
+ <li class="compactitem">An any-of group, which consists of the string <span
+class="ectt-1000">||</span>, followed by whitespace, followed
+ by an open parenthesis, followed by whitespace, followed by zero or more of
+ (a dependency item of any kind followed by whitespace), followed by a close
+ parenthesis. More formally: <span
+class="ectt-1000">any-of ::= &#8217;||&#8217; whitespace &#8217;(&#8217; whitespace (item</span>
+ <span
+class="ectt-1000">whitespace)* &#8217;)&#8217;</span>. Permitted in <span
+class="ectt-1000">DEPEND</span>, <span
+class="ectt-1000">RDEPEND</span>, <span
+class="ectt-1000">PDEPEND</span>, <span
+class="ectt-1000">LICENSE</span>.
+
+
+ </li>
+ <li class="compactitem">A use-conditional group, which consists of an optional exclamation mark,
+ followed by a use flag name, followed by a question mark, followed by
+ whitespace, followed by an open parenthesis, followed by whitespace, followed
+ by zero or more of (a dependency item of any kind followed by whitespace),
+ followed by a close parenthesis. More formally: <span
+class="ectt-1000">use-conditional ::= &#8217;!&#8217;?</span>
+ <span
+class="ectt-1000">flag-name &#8217;?&#8217; whitespace &#8217;(&#8217; whitespace (item whitespace)* &#8217;)&#8217;</span>. Permitted
+ in all specification style variables.</li></ul>
+<!--l. 53--><p class="noindent" >In particular, note that whitespace is not optional.
+</p>
+<div class="table">
+
+
+<!--l. 55--><p class="noindent" ><a
+ id="x1-78001r1"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;9.1: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">SRC_URI </span>arrows</span></div><!--tex4ht:label?: x1-78001r1 -->
+<div class="tabular">
+ <table id="TBL-7" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-7-1g"><col
+id="TBL-7-1" /><col
+id="TBL-7-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-7-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-7-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-7-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">SRC_URI </span><span
+class="ecbx-1000">arrows?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-7-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-7-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h4 class="subsectionHead"><span class="titlemark">9.2.1 </span> <a
+ id="x1-790009.2.1"></a>All-of Dependency Specifications</h4>
+<!--l. 72--><p class="noindent" >In an all-of group, all of the child elements must be matched.
+</p><!--l. 74--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">9.2.2 </span> <a
+ id="x1-800009.2.2"></a>Use-conditional Dependency Specifications</h4>
+<!--l. 76--><p class="noindent" >In a use-conditional group, if the associated use flag is enabled (or disabled if it has an exclamation
+mark prefix), all of the child elements must be matched.
+</p><!--l. 79--><p class="noindent" >It is an error for a flag to be used if it is not included in <span
+class="ectt-1000">IUSE_EFFECTIVE </span>as described in
+section&#x00A0;<a
+href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>.
+</p><!--l. 82--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">9.2.3 </span> <a
+ id="x1-810009.2.3"></a>Any-of Dependency Specifications</h4>
+<!--l. 84--><p class="noindent" >Any use-conditional group that is an immediate child of an any-of group, if not enabled (disabled
+for an exclamation mark prefixed use flag name), is not considered a member of the any-of group
+for match purposes.
+</p><!--l. 88--><p class="noindent" >In an any-of group, at least one immediate child element must be matched. A blocker
+is considered to be matched if its associated package dependency specification is not
+matched.
+</p><!--l. 91--><p class="noindent" >An empty any-of group counts as being matched.
+</p><!--l. 93--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">9.2.4 </span> <a
+ id="x1-820009.2.4"></a>Package Dependency Specifications</h4>
+<!--l. 95--><p class="noindent" >A package dependency can be in one of the following base formats. A package manager must warn
+or error on non-compliant input.
+</p><!--l. 99--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">A simple <span
+class="ectt-1000">category/package </span>name.
+ </li>
+ <li class="compactitem">An operator, as
+ described in section&#x00A0;<a
+href="#x1-840009.2.4">9.2.4<!--tex4ht:ref: sec:dep-operator --></a>, followed immediately by <span
+class="ectt-1000">category/package</span>, followed by a
+ hyphen, followed by a version specification.</li></ul>
+<!--l. 104--><p class="noindent" >In EAPIs shown in table&#x00A0;<a
+href="#x1-83001r2">9.2<!--tex4ht:ref: tab:slot-deps-table --></a> as supporting <span
+class="ectt-1000">SLOT </span>dependencies, either of the above formats may
+additionally be suffixed by a <span
+class="ectt-1000">:slot </span>restriction, as described in section&#x00A0;<a
+href="#x1-860009.2.4">9.2.4<!--tex4ht:ref: sec:slot-dep --></a>. A package manager
+must warn or error if slot dependencies are used with an EAPI not supporting <span
+class="ectt-1000">SLOT</span>
+dependencies.
+ </p><!--l. 109--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">U</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">S</span></span></span>
+
+
+</p><!--l. 109--><p class="noindent" >In EAPIs shown in table&#x00A0;<a
+href="#x1-83002r3">9.3<!--tex4ht:ref: tab:use-deps-table --></a> as supporting 2-style or 4-style <span
+class="ectt-1000">USE </span>dependencies, a specification may
+additionally be suffixed by at most one 2-style or 4-style <span
+class="ectt-1000">[use] </span>restriction, as described in
+section&#x00A0;<a
+href="#x1-870009.2.4">9.2.4<!--tex4ht:ref: sec:use-dep --></a>. A package manager must warn or error if this feature is used with an EAPI not
+supporting use dependencies.
+</p>
+<!--l. 114--><p class="noindent" ><span class="paragraphHead"><a
+ id="x1-830009.2.4"></a><span
+class="ecbx-1000">Note:</span></span>
+Order is important. The slot restriction must come before use dependencies.
+</p>
+<div class="table">
+
+
+<!--l. 116--><p class="noindent" ><a
+ id="x1-83001r2"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;9.2: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">SLOT </span>dependencies</span></div><!--tex4ht:label?: x1-83001r2 -->
+<div class="tabular">
+ <table id="TBL-8" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-8-1g"><col
+id="TBL-8-1" /><col
+id="TBL-8-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-8-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-8-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-8-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">SLOT </span><span
+class="ecbx-1000">dependencies?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-8-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-8-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-2"
+class="td11">Named only</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-2"
+class="td11">Named only </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-2"
+class="td11">Named only </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-2"
+class="td11">Named and operator </td>
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<div class="table">
+
+
+<!--l. 131--><p class="noindent" ><a
+ id="x1-83002r3"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;9.3: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">USE </span>dependencies</span></div><!--tex4ht:label?: x1-83002r3 -->
+<div class="tabular">
+ <table id="TBL-9" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-9-1g"><col
+id="TBL-9-1" /><col
+id="TBL-9-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-9-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-9-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">USE </span><span
+class="ecbx-1000">dependencies?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-9-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-9-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-2"
+class="td11">2-style </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-2"
+class="td11">2-style </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-2"
+class="td11">4-style </td>
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h5 class="subsubsectionHead"><a
+ id="x1-840009.2.4"></a>Operators</h5>
+<!--l. 149--><p class="noindent" >The following operators are available:
+ </p><dl class="description"><dt class="description">
+<span
+class="ectt-1000">&#x003C;</span> </dt><dd
+class="description">Strictly less than the specified version.
+ </dd><dt class="description">
+<span
+class="ectt-1000">&#x003C;=</span> </dt><dd
+class="description">Less than or equal to the specified version.
+ </dd><dt class="description">
+<span
+class="ectt-1000">=</span> </dt><dd
+class="description">Exactly equal to the specified version. Special exception: if the version specified has an
+ asterisk immediately following it, a string prefix comparison is used instead. When an
+ asterisk is used, the specification must remain valid if the asterisk were removed. (An
+ asterisk used with any other operator is illegal.)
+ </dd><dt class="description">
+<span
+class="ectt-1000">~</span> </dt><dd
+class="description">Equal to the specified version, except the revision part of the matching package may be
+ greater than the revision part of the specified version (<span
+class="ectt-1000">-r0 </span>is assumed if no revision is
+ explicitly stated).
+ </dd><dt class="description">
+<span
+class="ectt-1000">&#x003E;=</span> </dt><dd
+class="description">Greater than or equal to the specified version.
+ </dd><dt class="description">
+<span
+class="ectt-1000">&#x003E;</span> </dt><dd
+class="description">Strictly greater than the specified version.</dd></dl>
+<!--l. 165--><p class="noindent" >
+</p>
+<h5 class="subsubsectionHead"><a
+ id="x1-850009.2.4"></a>Block Operator</h5>
+<!--l. 167--><p class="noindent" >If the specification is prefixed with one or two exclamation marks, the named dependency is a
+block rather than a requirement&#8212;that is to say, the specified package must not be installed, with
+the following exceptions:
+</p><!--l. 172--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">Blocks on a package provided exclusively by the ebuild do not count.
+ </li>
+ <li class="compactitem">Blocks on the ebuild itself do not count.</li></ul>
+ <!--l. 176--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">B</span><span
+class="small-caps">A</span><span
+class="small-caps">N</span><span
+class="small-caps">G</span>-<span
+class="small-caps">S</span><span
+class="small-caps">T</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">N</span><span
+class="small-caps">G</span><span
+class="small-caps">T</span><span
+class="small-caps">H</span></span></span></p><!--l. 176--><p class="noindent" >There are two strengths of block: weak and strong. A weak block may be ignored by the package
+manager, so long as any blocked package will be uninstalled later on. A strong block must not be
+ignored. The mapping from one or two exclamation marks to strength is described in
+table&#x00A0;<a
+href="#x1-85001r4">9.4<!--tex4ht:ref: tab:bang-strength-table --></a>.
+</p>
+<div class="table">
+
+
+<!--l. 181--><p class="noindent" ><a
+ id="x1-85001r4"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;9.4: </span><span
+class="content">Exclamation mark strengths for EAPIs</span></div><!--tex4ht:label?: x1-85001r4 -->
+<div class="tabular">
+ <table id="TBL-10" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-10-1g"><col
+id="TBL-10-1" /><col
+id="TBL-10-2" /><col
+id="TBL-10-3" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-10-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-10-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-10-1-2"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">!</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-10-1-3"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">!!</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-10-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-2"
+class="td11">Unspecified</td><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-3"
+class="td11">Forbidden</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-2"
+class="td11">Unspecified</td><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-3"
+class="td11">Forbidden</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-2"
+class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-3"
+class="td11">Strong </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-2"
+class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-3"
+class="td11">Strong </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-2"
+class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-3"
+class="td11">Strong </td>
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h5 class="subsubsectionHead"><a
+ id="x1-860009.2.4"></a>Slot Dependencies</h5>
+ <!--l. 200--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">L</span><span
+class="small-caps">O</span><span
+class="small-caps">T</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">S</span></span></span></p><!--l. 200--><p class="noindent" >A named slot dependency consists of a colon followed by a slot name. A specification with a named
+slot dependency matches only if the slot of the matched package is equal to the slot specified. If the
+slot of the package to match cannot be determined (e.g. because it is not a supported <span
+class="ectt-1000">EAPI</span>), the
+match is treated as unsuccessful.
+ </p><!--l. 205--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">L</span><span
+class="small-caps">O</span><span
+class="small-caps">T</span>-<span
+class="small-caps">O</span><span
+class="small-caps">P</span><span
+class="small-caps">E</span><span
+class="small-caps">R</span><span
+class="small-caps">A</span><span
+class="small-caps">T</span><span
+class="small-caps">O</span><span
+class="small-caps">R</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">S</span></span></span></p><!--l. 205--><p class="noindent" >An operator slot dependency consists of a colon followed by one of the following operators:
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">*</span> </dt><dd
+class="description">Indicates that any slot value is acceptable. In addition, for runtime dependencies, indicates
+ that the package will not break if the matched package is uninstalled and replaced by
+ a different matching package in a different slot.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">=</span> </dt><dd
+class="description">Indicates that any slot value is acceptable. In addition, for runtime dependencies, indicates
+ that the package will break unless a matching package with slot equal to the slot of
+ the best installed version at the time the package was installed is available.</dd></dl>
+<!--l. 217--><p class="noindent" >To implement the equals slot operator, the package manager will need to store the slot
+of the best installed version of the matching package. The package manager may do
+this by appending the appropriate slot after the equals sign when saving the package&#8217;s
+dependencies. This syntax is only for package manager use and must not be used by
+ebuilds.
+</p><!--l. 222--><p class="noindent" >
+</p>
+<h5 class="subsubsectionHead"><a
+ id="x1-870009.2.4"></a>2-Style and 4-Style Use Dependencies</h5>
+<!--l. 225--><p class="noindent" >A 2-style or 4-style use dependency consists of one of the following:
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">[opt]</span> </dt><dd
+class="description">The flag must be enabled.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">[opt=]</span> </dt><dd
+class="description">The flag must be enabled if the flag is enabled for the package with the dependency,
+ or disabled otherwise.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">[!opt=]</span> </dt><dd
+class="description">The flag must be disabled if the flag is enabled for the package with the dependency,
+ or enabled otherwise.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">[opt?]</span> </dt><dd
+class="description">The flag must be enabled if the flag is enabled for the package with the dependency.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">[!opt?]</span> </dt><dd
+class="description">The flag must be disabled if the use flag is disabled for the package with the
+ dependency.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">[-opt]</span> </dt><dd
+class="description">The flag must be disabled.</dd></dl>
+
+
+<!--l. 240--><p class="noindent" >Multiple requirements may be combined using commas, e.g. <span
+class="ectt-1000">[first,-second,third?]</span>.
+</p><!--l. 242--><p class="noindent" >When multiple requirements are specified, all must match for a successful match.
+ </p><!--l. 244--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">U</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">U</span><span
+class="small-caps">L</span><span
+class="small-caps">T</span><span
+class="small-caps">S</span></span></span></p><!--l. 244--><p class="noindent" >In a 4-style use dependency, the flag name may immediately be followed by a <span
+class="ecti-1000">default </span>specified by
+either <span
+class="ectt-1000">(+) </span>or <span
+class="ectt-1000">(-)</span>. The former indicates that, when applying the use dependency to a
+package that does not have the flag in question in <span
+class="ectt-1000">IUSE_REFERENCEABLE</span>, the package
+manager shall behave as if the flag were present and enabled; the latter, present and
+disabled.
+</p><!--l. 250--><p class="noindent" >Unless a 4-style default is specified, it is an error for a use dependency to be applied to an ebuild
+which does not have the flag in question in <span
+class="ectt-1000">IUSE_REFERENCEABLE</span>.
+</p>
+<!--l. 253--><p class="noindent" ><span class="paragraphHead"><a
+ id="x1-880009.2.4"></a><span
+class="ecbx-1000">Note:</span></span>
+By extension of the above, a default that could reference an ebuild using an EAPI not supporting
+profile <span
+class="ectt-1000">IUSE </span>injections cannot rely upon any particular behaviour for flags that would not have to
+be part of <span
+class="ectt-1000">IUSE</span>.
+</p><!--l. 257--><p class="noindent" >It is an error for an ebuild to use a conditional use dependency when that ebuild does not have the
+flag in <span
+class="ectt-1000">IUSE_EFFECTIVE</span>.
+</p><!--l. 260--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">9.2.5 </span> <a
+ id="x1-890009.2.5"></a>Restrict</h4>
+<!--l. 263--><p class="noindent" >The following tokens are permitted inside <span
+class="ectt-1000">RESTRICT</span>:
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">mirror</span> </dt><dd
+class="description">The package&#8217;s <span
+class="ectt-1000">SRC_URI </span>entries may not be mirrored, and mirrors should not be
+ checked when fetching.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">fetch</span> </dt><dd
+class="description">The package&#8217;s <span
+class="ectt-1000">SRC_URI </span>entries may not be downloaded automatically. If entries are
+ not available, <span
+class="ectt-1000">pkg_nofetch </span>is called.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">strip</span> </dt><dd
+class="description">No stripping of debug symbols from files to be installed may be performed.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">userpriv</span> </dt><dd
+class="description">The package manager may not drop root privileges when building the package.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">test</span> </dt><dd
+class="description">The <span
+class="ectt-1000">src_test </span>phase must not be run.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">sandbox</span> </dt><dd
+class="description">The <span
+class="ectt-1000">sandbox </span>tool must not be used when building the package.</dd></dl>
+<!--l. 276--><p class="noindent" >Package managers may recognise other tokens, but ebuilds may not rely upon them being
+supported.
+</p><!--l. 278--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">9.2.6 </span> <a
+ id="x1-900009.2.6"></a>Properties</h4>
+
+
+<!--l. 281--><p class="noindent" >The following tokens are permitted inside <span
+class="ectt-1000">PROPERTIES</span>:
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">interactive</span> </dt><dd
+class="description">The package may require interaction with the user via the tty.</dd></dl>
+<!--l. 287--><p class="noindent" >Ebuilds may not rely upon any token being supported.
+</p><!--l. 289--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">9.2.7 </span> <a
+ id="x1-910009.2.7"></a>SRC_URI</h4>
+<!--l. 292--><p class="noindent" >All filename components that are enabled (i.e. not inside a use-conditional block that is not
+matched) in <span
+class="ectt-1000">SRC_URI </span>must be available in the <span
+class="ectt-1000">DISTDIR </span>directory. In addition, these components
+are used to make the <span
+class="ectt-1000">A </span>and <span
+class="ectt-1000">AA </span>variables.
+</p><!--l. 296--><p class="noindent" >If a component contains a full URI with protocol, that download location must be used. Package
+managers may also consult mirrors for their files.
+</p><!--l. 299--><p class="noindent" >The special <span
+class="ectt-1000">mirror:// </span>protocol must be supported. See section&#x00A0;<a
+href="#x1-360004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a> for mirror details.
+</p><!--l. 302--><p class="noindent" >If a simple filename rather than a full URI is provided, the package manager can only use mirrors
+to download the file.
+</p><!--l. 305--><p class="noindent" >The <span
+class="ectt-1000">RESTRICT </span>metadata key can be used to impose additional restrictions upon downloading&#8212;see
+section&#x00A0;<a
+href="#x1-890009.2.5">9.2.5<!--tex4ht:ref: sec:restrict --></a> for details.
+ </p><!--l. 308--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">U</span><span
+class="small-caps">R</span><span
+class="small-caps">I</span>-<span
+class="small-caps">A</span><span
+class="small-caps">R</span><span
+class="small-caps">R</span><span
+class="small-caps">O</span><span
+class="small-caps">W</span><span
+class="small-caps">S</span></span></span></p><!--l. 308--><p class="noindent" >In EAPIs supporting arrows, if an arrow is used, the filename used when saving to <span
+class="ectt-1000">DISTDIR </span>shall
+instead be the name on the right of the arrow. When consulting mirrors (except for those explicitly
+listed on the left of the arrow, if <span
+class="ectt-1000">mirror:// </span>is used), the filename to the right of the arrow shall be
+requested instead of the filename in the URI.
+
+
+
+
+
+
+</p>
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;10</span><br /><a
+ id="x1-9200010"></a>Ebuild-defined Functions</h2>
+<h3 class="sectionHead"><span class="titlemark">10.1 </span> <a
+ id="x1-9300010.1"></a>List of Functions</h3>
+<!--l. 7--><p class="noindent" >The following is a list of functions that an ebuild, or eclass, may define, and which will be called by
+the package manager as part of the build and/or install process. In all cases the package manager
+must provide a default implementation of these functions; unless otherwise stated this must be a
+no-op. Most functions must assume only that they have write access to the package&#8217;s working
+directory (the <span
+class="ectt-1000">WORKDIR </span>environment variable; see section&#x00A0;<a
+href="#x1-117001r1">12.1<!--tex4ht:ref: env-var-WORKDIR --></a>), and the temporary directory
+<span
+class="ectt-1000">T</span>; exceptions are noted below. All functions may assume that they have read access
+to all system libraries, binaries and configuration files that are accessible to normal
+users.
+</p><!--l. 16--><p class="noindent" >The environment for functions run outside of the build sequence (that is, <span
+class="ectt-1000">pkg_config</span>, <span
+class="ectt-1000">pkg_info</span>,
+<span
+class="ectt-1000">pkg_prerm </span>and <span
+class="ectt-1000">pkg_postrm</span>) must be the environment used for the build of the package, not the
+current configuration.
+</p><!--l. 20--><p class="noindent" >Ebuilds must not call nor assume the existence of any phase functions.
+</p><!--l. 22--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">10.1.1 </span> <a
+ id="x1-9400010.1.1"></a>Initial Working Directories</h4>
+<!--l. 25--><p class="noindent" >Some functions may assume that their initial working directory is set to a particular location; these
+are noted below. If no initial working directory is mandated, it may be set to anything and the
+ebuild must not rely upon a particular location for it. The ebuild <span
+class="ecti-1000">may </span>assume that the initial
+working directory for any phase is a trusted location that may only be written to by a privileged
+user and group.
+ </p><!--l. 31--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span>-<span
+class="small-caps">W</span><span
+class="small-caps">O</span><span
+class="small-caps">R</span><span
+class="small-caps">K</span><span
+class="small-caps">D</span><span
+class="small-caps">I</span><span
+class="small-caps">R</span>-<span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">L</span><span
+class="small-caps">L</span><span
+class="small-caps">B</span><span
+class="small-caps">A</span><span
+class="small-caps">C</span><span
+class="small-caps">K</span></span></span></p><!--l. 31--><p class="noindent" >Some functions are described as having an initial working directory of <span
+class="ectt-1000">S </span>with an error or fallback
+to <span
+class="ectt-1000">WORKDIR</span>. For EAPIs listed in table&#x00A0;<a
+href="#x1-94001r1">10.1<!--tex4ht:ref: tab:s-fallback-table --></a> as having the fallback, this means that if <span
+class="ectt-1000">S </span>is not a
+directory before the start of the phase function, the initial working directory shall be <span
+class="ectt-1000">WORKDIR</span>
+instead. For EAPIs where it is a conditional error, if <span
+class="ectt-1000">S </span>is not a directory before the start of the
+phase function, it is a fatal error, unless all of the following conditions are true, in which case the
+fallback to <span
+class="ectt-1000">WORKDIR </span>is used:
+</p><!--l. 40--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">The <span
+class="ectt-1000">A </span>variable contains no items.
+ </li>
+ <li class="compactitem">The phase function in question is not in <span
+class="ectt-1000">DEFINED_PHASES</span>.
+ </li>
+ <li class="compactitem">None of the phase functions <span
+class="ectt-1000">unpack</span>, <span
+class="ectt-1000">prepare</span>, <span
+class="ectt-1000">configure</span>, <span
+class="ectt-1000">compile </span>or <span
+class="ectt-1000">install</span>, if
+ supported by the EAPI in question and occurring prior to the phase about to be
+ executed, are in <span
+class="ectt-1000">DEFINED_PHASES</span>.</li></ul>
+<div class="table">
+
+
+<!--l. 47--><p class="noindent" ><a
+ id="x1-94001r1"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;10.1: </span><span
+class="content">EAPIs with <span
+class="ectt-1000">S </span>to <span
+class="ectt-1000">WORKDIR </span>fallbacks</span></div><!--tex4ht:label?: x1-94001r1 -->
+<div class="tabular">
+ <table id="TBL-11" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-11-1g"><col
+id="TBL-11-1" /><col
+id="TBL-11-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-11-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-11-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Fallback to </span><span
+class="ectt-1000">WORKDIR </span><span
+class="ecbx-1000">permitted?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-2"
+class="td11">Always </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-2"
+class="td11">Always </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-2"
+class="td11">Always </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-2"
+class="td11">Always </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-2"
+class="td11">Conditional error </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-11-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h4 class="subsectionHead"><span class="titlemark">10.1.2 </span> <a
+ id="x1-9500010.1.2"></a>pkg_pretend</h4>
+ <!--l. 65--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">P</span><span
+class="small-caps">K</span><span
+class="small-caps">G</span>-<span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">T</span><span
+class="small-caps">E</span><span
+class="small-caps">N</span><span
+class="small-caps">D</span></span></span></p><!--l. 65--><p class="noindent" >The <span
+class="ectt-1000">pkg_pretend </span>function is only called for EAPIs listed in table&#x00A0;<a
+href="#x1-95001r2">10.2<!--tex4ht:ref: tab:pkg-pretend-table --></a> as supporting
+it.
+</p><!--l. 68--><p class="noindent" >The <span
+class="ectt-1000">pkg_pretend </span>function may be used to carry out sanity checks early on in the install process.
+For example, if an ebuild requires a particular kernel configuration, it may perform that check in
+<span
+class="ectt-1000">pkg_pretend </span>and call <span
+class="ectt-1000">eerror </span>and then <span
+class="ectt-1000">die </span>with appropriate messages if the requirement is not
+met.
+</p><!--l. 73--><p class="noindent" ><span
+class="ectt-1000">pkg_pretend </span>is run separately from the main phase function sequence, and does not participate in
+any kind of environment saving. There is no guarantee that any of an ebuild&#8217;s dependencies will be
+met at this stage, and no guarantee that the system state will not have changed substantially
+before the next phase is executed.
+</p><!--l. 78--><p class="noindent" ><span
+class="ectt-1000">pkg_pretend </span>must not write to the filesystem.
+</p>
+<div class="table">
+
+
+<!--l. 80--><p class="noindent" ><a
+ id="x1-95001r2"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;10.2: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">pkg_pretend</span></span></div><!--tex4ht:label?: x1-95001r2 -->
+<div class="tabular">
+ <table id="TBL-12" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-12-1g"><col
+id="TBL-12-1" /><col
+id="TBL-12-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-12-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-12-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">pkg_pretend</span><span
+class="ecbx-1000">?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-2"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-2"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h4 class="subsectionHead"><span class="titlemark">10.1.3 </span> <a
+ id="x1-9600010.1.3"></a>pkg_setup</h4>
+<!--l. 97--><p class="noindent" >The <span
+class="ectt-1000">pkg_setup </span>function sets up the ebuild&#8217;s environment for all following functions,
+before the build process starts. Further, it checks whether any necessary prerequisites
+not covered by the package manager, e.g.&#x00A0;that certain kernel configuration options are
+fulfilled.
+</p><!--l. 101--><p class="noindent" ><span
+class="ectt-1000">pkg_setup </span>must be run with full filesystem permissions, including the ability to add new users
+and/or groups to the system.
+</p><!--l. 104--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">10.1.4 </span> <a
+ id="x1-9700010.1.4"></a>src_unpack</h4>
+ <!--l. 107--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">U</span><span
+class="small-caps">N</span><span
+class="small-caps">P</span><span
+class="small-caps">A</span><span
+class="small-caps">C</span><span
+class="small-caps">K</span></span></span></p><!--l. 107--><p class="noindent" >The <span
+class="ectt-1000">src_unpack </span>function extracts all of the package&#8217;s sources. In EAPIs lacking <span
+class="ectt-1000">src_prepare</span>, it
+may also apply patches and set up the package&#8217;s build system for further use.
+</p><!--l. 111--><p class="noindent" >The initial working directory must be <span
+class="ectt-1000">WORKDIR</span>, and the default implementation used when the
+ebuild lacks the <span
+class="ectt-1000">src_unpack </span>function shall behave as:
+
+
+</p>
+<div class="verbatim" id="verbatim-6">
+src_unpack()&#x00A0;{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;[[&#x00A0;-n&#x00A0;${A}&#x00A0;]];&#x00A0;then
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;unpack&#x00A0;${A}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;fi
+&#x00A0;<br />}</div>
+<!--l. 120--><p class="nopar" >
+</p><!--l. 122--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">10.1.5 </span> <a
+ id="x1-9800010.1.5"></a>src_prepare</h4>
+ <!--l. 125--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">A</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span></span></span></p><!--l. 125--><p class="noindent" >The <span
+class="ectt-1000">src_prepare </span>function is only called for EAPIs listed in table&#x00A0;<a
+href="#x1-98001r3">10.3<!--tex4ht:ref: tab:src-prepare-table --></a> as supporting
+it.
+</p><!--l. 128--><p class="noindent" >The <span
+class="ectt-1000">src_prepare </span>function can be used for post-unpack source preparation. The default
+implementation does nothing.
+</p><!--l. 131--><p class="noindent" >The initial working directory is <span
+class="ectt-1000">S</span>, with an error or fallback to <span
+class="ectt-1000">WORKDIR </span>as discussed in
+section&#x00A0;<a
+href="#x1-9400010.1.1">10.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>.
+</p>
+<div class="table">
+
+
+<!--l. 134--><p class="noindent" ><a
+ id="x1-98001r3"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;10.3: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">src_prepare</span></span></div><!--tex4ht:label?: x1-98001r3 -->
+<div class="tabular">
+ <table id="TBL-13" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-13-1g"><col
+id="TBL-13-1" /><col
+id="TBL-13-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-13-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-13-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">src_prepare</span><span
+class="ecbx-1000">?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h4 class="subsectionHead"><span class="titlemark">10.1.6 </span> <a
+ id="x1-9900010.1.6"></a>src_configure</h4>
+ <!--l. 152--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span><span
+class="small-caps">F</span><span
+class="small-caps">I</span><span
+class="small-caps">G</span><span
+class="small-caps">U</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span></span></span></p><!--l. 152--><p class="noindent" >The <span
+class="ectt-1000">src_configure </span>function is only called for EAPIs listed in table&#x00A0;<a
+href="#x1-99001r4">10.4<!--tex4ht:ref: tab:src-configure-table --></a> as supporting
+it.
+</p><!--l. 155--><p class="noindent" >The initial working directory is <span
+class="ectt-1000">S</span>, with an error or fallback to <span
+class="ectt-1000">WORKDIR </span>as discussed in
+section&#x00A0;<a
+href="#x1-9400010.1.1">10.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>.
+</p><!--l. 158--><p class="noindent" >The <span
+class="ectt-1000">src_configure </span>function configures the package&#8217;s build environment. The default
+implementation used when the ebuild lacks the <span
+class="ectt-1000">src_configure </span>function shall behave
+as:
+
+
+</p>
+<div class="verbatim" id="verbatim-7">
+src_configure()&#x00A0;{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;[[&#x00A0;-x&#x00A0;${ECONF_SOURCE:-.}/configure&#x00A0;]];&#x00A0;then
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;econf
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;fi
+&#x00A0;<br />}</div>
+<!--l. 167--><p class="nopar" >
+</p>
+<div class="table">
+
+
+<!--l. 169--><p class="noindent" ><a
+ id="x1-99001r4"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;10.4: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">src_configure</span></span></div><!--tex4ht:label?: x1-99001r4 -->
+<div class="tabular">
+ <table id="TBL-14" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-14-1g"><col
+id="TBL-14-1" /><col
+id="TBL-14-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-14-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-14-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">src_configure</span><span
+class="ecbx-1000">?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-4-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-5-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h4 class="subsectionHead"><span class="titlemark">10.1.7 </span> <a
+ id="x1-10000010.1.7"></a>src_compile</h4>
+ <!--l. 187--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">M</span><span
+class="small-caps">P</span><span
+class="small-caps">I</span><span
+class="small-caps">L</span><span
+class="small-caps">E</span></span></span></p><!--l. 187--><p class="noindent" >The <span
+class="ectt-1000">src_compile </span>function configures the package&#8217;s build environment in EAPIs lacking
+<span
+class="ectt-1000">src_configure</span>, and builds the package in all EAPIs.
+</p><!--l. 190--><p class="noindent" >The initial working directory is <span
+class="ectt-1000">S</span>, with an error or fallback to <span
+class="ectt-1000">WORKDIR </span>as discussed in
+section&#x00A0;<a
+href="#x1-9400010.1.1">10.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>.
+ </p><!--l. 193--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">M</span><span
+class="small-caps">P</span><span
+class="small-caps">I</span><span
+class="small-caps">L</span><span
+class="small-caps">E</span>-0</span></span></p><!--l. 193--><p class="noindent" >For EAPIs listed in table&#x00A0;<a
+href="#x1-100001r5">10.5<!--tex4ht:ref: tab:src-compile-table --></a> as using format 0, the default implementation used when the ebuild
+lacks the <span
+class="ectt-1000">src_compile </span>function shall behave as:
+
+
+</p>
+<div class="verbatim" id="verbatim-8">
+src_compile()&#x00A0;{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;[[&#x00A0;-x&#x00A0;./configure&#x00A0;]];&#x00A0;then
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;econf
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;fi
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;[[&#x00A0;-f&#x00A0;Makefile&#x00A0;]]&#x00A0;||&#x00A0;[[&#x00A0;-f&#x00A0;GNUmakefile&#x00A0;]]&#x00A0;||&#x00A0;[[&#x00A0;-f&#x00A0;makefile&#x00A0;]];&#x00A0;then
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;emake&#x00A0;||&#x00A0;die&#x00A0;"emake&#x00A0;failed"
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;fi
+&#x00A0;<br />}</div>
+<!--l. 206--><p class="nopar" >
+ </p><!--l. 208--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">M</span><span
+class="small-caps">P</span><span
+class="small-caps">I</span><span
+class="small-caps">L</span><span
+class="small-caps">E</span>-1</span></span></p><!--l. 208--><p class="noindent" >For EAPIs listed in table&#x00A0;<a
+href="#x1-100001r5">10.5<!--tex4ht:ref: tab:src-compile-table --></a> as using format 1, the default implementation used when the ebuild
+lacks the <span
+class="ectt-1000">src_compile </span>function shall behave as:
+
+
+</p>
+<div class="verbatim" id="verbatim-9">
+src_compile()&#x00A0;{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;[[&#x00A0;-x&#x00A0;${ECONF_SOURCE:-.}/configure&#x00A0;]];&#x00A0;then
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;econf
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;fi
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;[[&#x00A0;-f&#x00A0;Makefile&#x00A0;]]&#x00A0;||&#x00A0;[[&#x00A0;-f&#x00A0;GNUmakefile&#x00A0;]]&#x00A0;||&#x00A0;[[&#x00A0;-f&#x00A0;makefile&#x00A0;]];&#x00A0;then
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;emake&#x00A0;||&#x00A0;die&#x00A0;"emake&#x00A0;failed"
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;fi
+&#x00A0;<br />}</div>
+<!--l. 221--><p class="nopar" >
+ </p><!--l. 223--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">M</span><span
+class="small-caps">P</span><span
+class="small-caps">I</span><span
+class="small-caps">L</span><span
+class="small-caps">E</span>-2</span></span></p><!--l. 223--><p class="noindent" >For EAPIs listed in table&#x00A0;<a
+href="#x1-100001r5">10.5<!--tex4ht:ref: tab:src-compile-table --></a> as using format 2, the default implementation used when the ebuild
+lacks the <span
+class="ectt-1000">src_compile </span>function shall behave as:
+
+
+</p>
+<div class="verbatim" id="verbatim-10">
+src_compile()&#x00A0;{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;[[&#x00A0;-f&#x00A0;Makefile&#x00A0;]]&#x00A0;||&#x00A0;[[&#x00A0;-f&#x00A0;GNUmakefile&#x00A0;]]&#x00A0;||&#x00A0;[[&#x00A0;-f&#x00A0;makefile&#x00A0;]];&#x00A0;then
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;emake&#x00A0;||&#x00A0;die&#x00A0;"emake&#x00A0;failed"
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;fi
+&#x00A0;<br />}</div>
+<!--l. 233--><p class="nopar" >
+</p>
+<div class="table">
+
+
+<!--l. 235--><p class="noindent" ><a
+ id="x1-100001r5"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;10.5: </span><span
+class="content"><span
+class="ectt-1000">src_compile </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-100001r5 -->
+<div class="tabular">
+ <table id="TBL-15" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-15-1g"><col
+id="TBL-15-1" /><col
+id="TBL-15-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-15-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-15-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Format</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-2-2"
+class="td11">0 </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-3-2"
+class="td11">1</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-15-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-4-2"
+class="td11">2 </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-15-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-5-2"
+class="td11">2 </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-15-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-6-2"
+class="td11">2 </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-15-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h4 class="subsectionHead"><span class="titlemark">10.1.8 </span> <a
+ id="x1-10100010.1.8"></a>src_test</h4>
+<!--l. 253--><p class="noindent" >The <span
+class="ectt-1000">src_test </span>function runs unit tests for the newly built but not yet installed package as
+provided.
+</p><!--l. 256--><p class="noindent" >The initial working directory must be <span
+class="ectt-1000">S </span>if that exists, falling back to <span
+class="ectt-1000">WORKDIR </span>otherwise. The
+default implementation used when the ebuild lacks the <span
+class="ectt-1000">src_test </span>function must, if tests are
+enabled, run <span
+class="ectt-1000">make check </span>if and only if such a target is available, or if not run <span
+class="ectt-1000">make test</span>, if and
+only such a target is available. In both cases, if make returns non-zero the build must be
+aborted.
+</p><!--l. 262--><p class="noindent" >The <span
+class="ectt-1000">src_test </span>function may be disabled by <span
+class="ectt-1000">RESTRICT</span>. See section&#x00A0;<a
+href="#x1-890009.2.5">9.2.5<!--tex4ht:ref: sec:restrict --></a>.
+</p><!--l. 264--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">10.1.9 </span> <a
+ id="x1-10200010.1.9"></a>src_install</h4>
+ <!--l. 267--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">I</span><span
+class="small-caps">N</span><span
+class="small-caps">S</span><span
+class="small-caps">T</span><span
+class="small-caps">A</span><span
+class="small-caps">L</span><span
+class="small-caps">L</span></span></span></p><!--l. 267--><p class="noindent" >The <span
+class="ectt-1000">src_install </span>function installs the package&#8217;s content to a directory specified in
+<span
+class="ectt-1000">D</span>.
+</p><!--l. 270--><p class="noindent" >The initial working directory is <span
+class="ectt-1000">S</span>, with an error or fallback to <span
+class="ectt-1000">WORKDIR </span>as discussed in
+section&#x00A0;<a
+href="#x1-9400010.1.1">10.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>.
+ </p><!--l. 273--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">I</span><span
+class="small-caps">N</span><span
+class="small-caps">S</span><span
+class="small-caps">T</span><span
+class="small-caps">A</span><span
+class="small-caps">L</span><span
+class="small-caps">L</span>-4</span></span></p><!--l. 273--><p class="noindent" >For EAPIs listed in table&#x00A0;<a
+href="#x1-102001r6">10.6<!--tex4ht:ref: tab:src-install-table --></a> as using format 4, the default implementation used when the ebuild
+lacks the <span
+class="ectt-1000">src_install </span>function shall behave as:
+
+
+</p>
+<div class="verbatim" id="verbatim-11">
+src_install()&#x00A0;{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;[[&#x00A0;-f&#x00A0;Makefile&#x00A0;]]&#x00A0;||&#x00A0;[[&#x00A0;-f&#x00A0;GNUmakefile&#x00A0;]]&#x00A0;||&#x00A0;[[&#x00A0;-f&#x00A0;makefile&#x00A0;]];&#x00A0;then
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;emake&#x00A0;DESTDIR="${D}"&#x00A0;install
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;fi
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;!&#x00A0;declare&#x00A0;-p&#x00A0;DOCS&#x00A0;&#x003E;/dev/null&#x00A0;2&#x003E;&amp;1&#x00A0;;&#x00A0;then
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;local&#x00A0;d
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;for&#x00A0;d&#x00A0;in&#x00A0;README*&#x00A0;ChangeLog&#x00A0;AUTHORS&#x00A0;NEWS&#x00A0;TODO&#x00A0;CHANGES&#x00A0;\
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;THANKS&#x00A0;BUGS&#x00A0;FAQ&#x00A0;CREDITS&#x00A0;CHANGELOG&#x00A0;;&#x00A0;do
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;[[&#x00A0;-s&#x00A0;"${d}"&#x00A0;]]&#x00A0;&amp;&amp;&#x00A0;dodoc&#x00A0;"${d}"
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;done
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;elif&#x00A0;declare&#x00A0;-p&#x00A0;DOCS&#x00A0;|&#x00A0;grep&#x00A0;-q&#x00A0;&#8217;^declare&#x00A0;-a&#x00A0;&#8217;&#x00A0;;&#x00A0;then
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;dodoc&#x00A0;"${DOCS[@]}"
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;else
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;dodoc&#x00A0;${DOCS}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;fi
+&#x00A0;<br />}</div>
+<!--l. 295--><p class="nopar" >
+</p><!--l. 297--><p class="noindent" >For other EAPIs, the default implementation used when the ebuild lacks the <span
+class="ectt-1000">src_install </span>function
+is a no-op.
+</p>
+<div class="table">
+
+
+<!--l. 300--><p class="noindent" ><a
+ id="x1-102001r6"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;10.6: </span><span
+class="content"><span
+class="ectt-1000">src_install </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-102001r6 -->
+<div class="tabular">
+ <table id="TBL-16" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-16-1g"><col
+id="TBL-16-1" /><col
+id="TBL-16-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-16-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-16-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Format</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-2"
+class="td11">no-op </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-2"
+class="td11">no-op </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-2"
+class="td11">no-op </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-2"
+class="td11">no-op </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-16-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-6-2"
+class="td11">4 </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-16-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h4 class="subsectionHead"><span class="titlemark">10.1.10 </span> <a
+ id="x1-10300010.1.10"></a>pkg_preinst</h4>
+<!--l. 318--><p class="noindent" >The <span
+class="ectt-1000">pkg_preinst </span>function performs any special tasks that are required immediately before
+merging the package to the live filesystem. It must not write outside of the directories specified by
+the <span
+class="ectt-1000">ROOT </span>and <span
+class="ectt-1000">D </span>environment variables.
+</p><!--l. 322--><p class="noindent" ><span
+class="ectt-1000">pkg_preinst </span>must be run with full access to all files and directories below that specified by the
+<span
+class="ectt-1000">ROOT </span>and <span
+class="ectt-1000">D </span>environment variables.
+</p><!--l. 325--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">10.1.11 </span> <a
+ id="x1-10400010.1.11"></a>pkg_postinst</h4>
+<!--l. 328--><p class="noindent" >The <span
+class="ectt-1000">pkg_postinst </span>function performs any special tasks that are required immediately after
+merging the package to the live filesystem. It must not write outside of the directory specified in
+the <span
+class="ectt-1000">ROOT </span>environment variable.
+</p><!--l. 332--><p class="noindent" ><span
+class="ectt-1000">pkg_postinst</span>, like, <span
+class="ectt-1000">pkg_preinst</span>, must be run with full access to all files and directories below
+that specified by the <span
+class="ectt-1000">ROOT </span>environment variable.
+</p><!--l. 335--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">10.1.12 </span> <a
+ id="x1-10500010.1.12"></a>pkg_prerm</h4>
+<!--l. 338--><p class="noindent" >The <span
+class="ectt-1000">pkg_prerm </span>function performs any special tasks that are required immediately before
+unmerging the package from the live filesystem. It must not write outside of the directory specified
+by the <span
+class="ectt-1000">ROOT </span>environment variable.
+</p><!--l. 342--><p class="noindent" ><span
+class="ectt-1000">pkg_prerm </span>must be run with full access to all files and directories below that specified by the <span
+class="ectt-1000">ROOT</span>
+environment variable.
+</p><!--l. 345--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">10.1.13 </span> <a
+ id="x1-10600010.1.13"></a>pkg_postrm</h4>
+<!--l. 348--><p class="noindent" >The <span
+class="ectt-1000">pkg_postrm </span>function performs any special tasks that are required immediately after
+unmerging the package from the live filesystem. It must not write outside of the directory specified
+by the <span
+class="ectt-1000">ROOT </span>environment variable.
+</p><!--l. 352--><p class="noindent" ><span
+class="ectt-1000">pkg_postrm </span>must be run with full access to all files and directories below that specified by the
+<span
+class="ectt-1000">ROOT </span>environment variable.
+
+
+</p><!--l. 355--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">10.1.14 </span> <a
+ id="x1-10700010.1.14"></a>pkg_config</h4>
+<!--l. 358--><p class="noindent" >The <span
+class="ectt-1000">pkg_config </span>function performs any custom steps required to configure a package after it has
+been fully installed. It is the only ebuild function which may be interactive and prompt for user
+input.
+</p><!--l. 361--><p class="noindent" ><span
+class="ectt-1000">pkg_config </span>must be run with full access to all files and directories inside of <span
+class="ectt-1000">ROOT</span>.
+</p><!--l. 363--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">10.1.15 </span> <a
+ id="x1-10800010.1.15"></a>pkg_info</h4>
+ <!--l. 366--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">P</span><span
+class="small-caps">K</span><span
+class="small-caps">G</span>-<span
+class="small-caps">I</span><span
+class="small-caps">N</span><span
+class="small-caps">F</span><span
+class="small-caps">O</span></span></span></p><!--l. 366--><p class="noindent" >The <span
+class="ectt-1000">pkg_info </span>function may be called by the package manager when displaying information about
+an installed package. In EAPIs listed in table&#x00A0;<a
+href="#x1-108001r7">10.7<!--tex4ht:ref: tab:pkg-info-table --></a> as supporting <span
+class="ectt-1000">pkg_info </span>on non-installed
+packages, it may also be called by the package manager when displaying information about a
+non-installed package. In this case, ebuild authors should note that dependencies may not be
+installed.
+</p><!--l. 372--><p class="noindent" ><span
+class="ectt-1000">pkg_info </span>must not write to the filesystem.
+</p>
+<div class="table">
+
+
+<!--l. 374--><p class="noindent" ><a
+ id="x1-108001r7"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;10.7: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">pkg_info </span>on non-installed packages</span></div><!--tex4ht:label?: x1-108001r7 -->
+<div class="tabular">
+ <table id="TBL-17" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-17-1g"><col
+id="TBL-17-1" /><col
+id="TBL-17-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-17-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-17-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">pkg_info </span><span
+class="ecbx-1000">on non-installed packages?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-4-2"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-5-2"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-17-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-17-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h4 class="subsectionHead"><span class="titlemark">10.1.16 </span> <a
+ id="x1-10900010.1.16"></a>pkg_nofetch</h4>
+<!--l. 392--><p class="noindent" >The <span
+class="ectt-1000">pkg_nofetch </span>function is run when the fetch phase of an fetch-restricted ebuild is run,
+and the relevant source files are not available. It should direct the user to download all
+relevant source files from their respective locations, with notes concerning licensing if
+applicable.
+</p><!--l. 396--><p class="noindent" ><span
+class="ectt-1000">pkg_nofetch </span>must require no write access to any part of the filesystem.
+</p><!--l. 398--><p class="noindent" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">10.1.17 </span> <a
+ id="x1-11000010.1.17"></a><span
+class="ectt-1000">default_ </span>Phase Functions</h4>
+ <!--l. 401--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">U</span><span
+class="small-caps">L</span><span
+class="small-caps">T</span>-<span
+class="small-caps">P</span><span
+class="small-caps">H</span><span
+class="small-caps">A</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span>-<span
+class="small-caps">F</span><span
+class="small-caps">U</span><span
+class="small-caps">N</span><span
+class="small-caps">C</span><span
+class="small-caps">S</span></span></span></p><!--l. 401--><p class="noindent" >In EAPIs listed in table&#x00A0;<a
+href="#x1-110001r8">10.8<!--tex4ht:ref: tab:default-phase-function-table --></a> as supporting <span
+class="ectt-1000">default_ </span>phase functions, a function named
+<span
+class="ectt-1000">default_</span>(phase) that behaves as the default implementation for that EAPI shall be defined when
+executing any ebuild phase listed in the table. Ebuilds must not call these functions except when in
+the phase in question.
+</p>
+<div class="table">
+
+
+<!--l. 407--><p class="noindent" ><a
+ id="x1-110001r8"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;10.8: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">default_ </span>phase functions</span></div><!--tex4ht:label?: x1-110001r8 -->
+<div class="tabular">
+ <table id="TBL-18" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-18-1g"><col
+id="TBL-18-1" /><col
+id="TBL-18-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-18-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-18-1-2"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">default_ </span><span
+class="ecbx-1000">functions in phases</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-2-2"
+class="td11">None </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-3-2"
+class="td11">None</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-4-2"
+class="td11"><span
+class="ectt-1000">pkg_nofetch</span>, <span
+class="ectt-1000">src_unpack</span>, <span
+class="ectt-1000">src_prepare</span>,
+<span
+class="ectt-1000">src_configure</span>, <span
+class="ectt-1000">src_compile</span>, <span
+class="ectt-1000">src_test</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-5-2"
+class="td11"><span
+class="ectt-1000">pkg_nofetch</span>, <span
+class="ectt-1000">src_unpack</span>, <span
+class="ectt-1000">src_prepare</span>,
+<span
+class="ectt-1000">src_configure</span>, <span
+class="ectt-1000">src_compile</span>, <span
+class="ectt-1000">src_test</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-18-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-6-2"
+class="td11"><span
+class="ectt-1000">pkg_nofetch</span>, <span
+class="ectt-1000">src_unpack</span>, <span
+class="ectt-1000">src_prepare</span>,
+<span
+class="ectt-1000">src_configure</span>, <span
+class="ectt-1000">src_compile</span>, <span
+class="ectt-1000">src_install</span>,
+<span
+class="ectt-1000">src_test</span> </td>
+
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-18-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h3 class="sectionHead"><span class="titlemark">10.2 </span> <a
+ id="x1-11100010.2"></a>Call Order</h3>
+<!--l. 427--><p class="noindent" >The call order for installing a package is:
+</p><!--l. 430--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_pretend </span>(only for EAPIs listed in table&#x00A0;<a
+href="#x1-95001r2">10.2<!--tex4ht:ref: tab:pkg-pretend-table --></a>), which is called outside of the normal
+ call order process.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_setup</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_unpack</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_prepare </span>(only for EAPIs listed in table&#x00A0;<a
+href="#x1-98001r3">10.3<!--tex4ht:ref: tab:src-prepare-table --></a>)
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_configure </span>(only for EAPIs listed in table&#x00A0;<a
+href="#x1-99001r4">10.4<!--tex4ht:ref: tab:src-configure-table --></a>)
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_compile</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_test </span>(except if <span
+class="ectt-1000">RESTRICT=test</span>)
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_install</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_preinst</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_postinst</span></li></ul>
+<!--l. 443--><p class="noindent" >The call order for uninstalling a package is:
+</p><!--l. 446--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_prerm</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_postrm</span></li></ul>
+<!--l. 450--><p class="noindent" >The call order for reinstalling a package is:
+</p><!--l. 453--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_pretend </span>(only for EAPIs listed in table&#x00A0;<a
+href="#x1-95001r2">10.2<!--tex4ht:ref: tab:pkg-pretend-table --></a>), which is called outside of the normal
+ call order process.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_setup</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_unpack</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_prepare </span>(only for EAPIs listed in table&#x00A0;<a
+href="#x1-98001r3">10.3<!--tex4ht:ref: tab:src-prepare-table --></a>)
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_configure </span>(only for EAPIs listed in table&#x00A0;<a
+href="#x1-99001r4">10.4<!--tex4ht:ref: tab:src-configure-table --></a>)
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_compile</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_test </span>(except if <span
+class="ectt-1000">RESTRICT=test</span>)
+
+
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_install</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_preinst</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_prerm </span>for the package being replaced
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_postrm </span>for the package being replaced
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_postinst</span></li></ul>
+<!--l. 468--><p class="noindent" >The call order for upgrading or downgrading a package is:
+</p><!--l. 471--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_pretend </span>(only for EAPIs listed in table&#x00A0;<a
+href="#x1-95001r2">10.2<!--tex4ht:ref: tab:pkg-pretend-table --></a>), which is called outside of the normal
+ call order process.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_setup</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_unpack</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_prepare </span>(only for EAPIs listed in table&#x00A0;<a
+href="#x1-98001r3">10.3<!--tex4ht:ref: tab:src-prepare-table --></a>)
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_configure </span>(only for EAPIs listed in table&#x00A0;<a
+href="#x1-99001r4">10.4<!--tex4ht:ref: tab:src-configure-table --></a>)
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_compile</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_test </span>(except if <span
+class="ectt-1000">RESTRICT=test</span>)
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_install</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_preinst</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_postinst</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_prerm </span>for the package being replaced
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_postrm </span>for the package being replaced</li></ul>
+<!--l. 486--><p class="noindent" >The <span
+class="ectt-1000">pkg_config</span>, <span
+class="ectt-1000">pkg_info </span>and <span
+class="ectt-1000">pkg_nofetch </span>functions are not called in a normal sequence. The
+<span
+class="ectt-1000">pkg_pretend </span>function is called some unspecified time before a (possibly hypothetical) normal
+sequence.
+</p><!--l. 490--><p class="noindent" >For installing binary packages, the <span
+class="ectt-1000">src </span>phases are not called.
+</p><!--l. 492--><p class="noindent" >When building binary packages that are not to be installed locally, the <span
+class="ectt-1000">pkg_preinst </span>and
+<span
+class="ectt-1000">pkg_postinst </span>functions are not called.
+
+
+
+
+
+
+</p>
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;11</span><br /><a
+ id="x1-11200011"></a>Eclasses</h2>
+<!--l. 4--><p class="noindent" >Eclasses serve to store common code that is used by more than one ebuild, which greatly aids
+maintainability and reduces the tree size. However, due to metadata cache issues, care must be
+taken in their use. In format they are similar to an ebuild, and indeed are sourced as part of any
+ebuild using them. The interpreter is therefore the same, and the same requirements for being
+parseable hold.
+</p><!--l. 10--><p class="noindent" >Eclasses must be located in the <span
+class="ectt-1000">eclass </span>directory in the top level of the repository&#8212;see section&#x00A0;<a
+href="#x1-400004.6">4.6<!--tex4ht:ref: sec:eclass-dir --></a>.
+Each eclass is a single file named <span
+class="ectt-1000">&#x003C;name&#x003E;.eclass</span>, where <span
+class="ectt-1000">&#x003C;name&#x003E; </span>is the name of this eclass, used by
+<span
+class="ectt-1000">inherit </span>and <span
+class="ectt-1000">EXPORT_FUNCTIONS </span>among other places.
+</p>
+<h3 class="sectionHead"><span class="titlemark">11.1 </span> <a
+ id="x1-11300011.1"></a>The inherit command</h3>
+<!--l. 17--><p class="noindent" >An ebuild wishing to make use of an eclass does so by using the <span
+class="ectt-1000">inherit </span>command in global scope.
+This will cause the eclass to be sourced as part of the ebuild&#8212;any function or variable definitions
+in the eclass will appear as part of the ebuild, with exceptions for certain metadata variables, as
+described below.
+</p><!--l. 22--><p class="noindent" >The <span
+class="ectt-1000">inherit </span>command takes one or more parameters, which must be the names of eclasses
+(excluding the <span
+class="ectt-1000">.eclass </span>suffix and the path). For each parameter, in order, the named eclass is
+sourced.
+</p><!--l. 25--><p class="noindent" >Eclasses may end up being sourced multiple times.
+</p><!--l. 27--><p class="noindent" >The <span
+class="ectt-1000">inherit </span>command must also ensure that:
+</p><!--l. 30--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">The <span
+class="ectt-1000">ECLASS </span>variable is set to the name of the current eclass, when sourcing that eclass.
+ </li>
+ <li class="compactitem">Once all inheriting has been done, the <span
+class="ectt-1000">INHERITED </span>metadata variable contains the name
+ of every eclass used, separated by whitespace.</li></ul>
+<!--l. 35--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">11.2 </span> <a
+ id="x1-11400011.2"></a>Eclass-defined Metadata Keys</h3>
+<!--l. 37--><p class="noindent" >The <span
+class="ectt-1000">IUSE</span>, <span
+class="ectt-1000">DEPEND</span>, <span
+class="ectt-1000">RDEPEND </span>and <span
+class="ectt-1000">PDEPEND </span>variables are handled specially when set by an eclass.
+They must be accumulated across eclasses, appending the value set by each eclass to the resulting
+value after the previous one is loaded. Then the eclass-defined value is appended to that defined by
+the ebuild. In the case of <span
+class="ectt-1000">RDEPEND</span>, this is done after the implicit <span
+class="ectt-1000">RDEPEND </span>rules in section&#x00A0;<a
+href="#x1-720008.3.2">8.3.2<!--tex4ht:ref: sec:rdepend-depend --></a> are
+applied.
+</p><!--l. 43--><p class="noindent" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">11.3 </span> <a
+ id="x1-11500011.3"></a>EXPORT_FUNCTIONS</h3>
+<!--l. 45--><p class="noindent" >There is one command available in the eclass environment that is neither available nor meaningful
+in ebuilds&#8212;<span
+class="ectt-1000">EXPORT_FUNCTIONS</span>. This can be used to alias ebuild phase functions from the eclass so
+that an ebuild inherits a default definition whilst retaining the ability to override and call the
+eclass-defined version from it. The use of it is best illustrated by an example; this is given in
+
+
+listing&#x00A0;<a
+href="#x1-115001r1">11.1<!--tex4ht:ref: lst:export-functions --></a> and is a snippet from a hypothetical <span
+class="ectt-1000">foo.eclass</span>.
+
+
+</p><!--l. 52--><p class="noindent" ><a
+ id="x1-115001r1"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Listing 11.1: </span><span
+class="content">EXPORT_FUNCTIONS example: foo.eclass</span></div><!--tex4ht:label?: x1-115001r1 -->
+
+
+<div class="verbatim" id="verbatim-12">
+foo_src_compile()
+&#x00A0;<br />{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;econf&#x00A0;--enable-gerbil&#x00A0;\
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;$(use_enable&#x00A0;fnord)
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;emake&#x00A0;gerbil&#x00A0;||&#x00A0;die&#x00A0;"Couldn&#8217;t&#x00A0;make&#x00A0;a&#x00A0;gerbil"
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;emake&#x00A0;||&#x00A0;die&#x00A0;"emake&#x00A0;failed"
+&#x00A0;<br />}
+&#x00A0;<br />
+&#x00A0;<br />EXPORT_FUNCTIONS&#x00A0;src_compile
+&#x00A0;<br />&#x00A0;&#x00A0;</div>
+<!--l. 63--><p class="nopar" >
+
+
+</p>
+</div><hr class="endfloat" />
+<!--l. 66--><p class="noindent" >This example defines an eclass <span
+class="ectt-1000">src_compile </span>function and uses <span
+class="ectt-1000">EXPORT_FUNCTIONS </span>to alias it.
+Then any ebuild that inherits <span
+class="ectt-1000">foo.eclass </span>will have a default <span
+class="ectt-1000">src_compile </span>defined, but
+should the author wish to override it he can access the function in <span
+class="ectt-1000">foo.eclass </span>by calling
+<span
+class="ectt-1000">foo_src_compile</span>.
+</p><!--l. 71--><p class="noindent" ><span
+class="ectt-1000">EXPORT_FUNCTIONS </span>must only be used on ebuild phase functions. The function that is aliased
+must be named <span
+class="ectt-1000">eclassname_phasefunctionname</span>, where <span
+class="ectt-1000">eclassname </span>is the name of the
+eclass.
+</p><!--l. 74--><p class="noindent" ><span
+class="ectt-1000">EXPORT_FUNCTIONS </span>must be used at most once per eclass.
+
+
+
+
+
+
+</p>
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;12</span><br /><a
+ id="x1-11600012"></a>The Ebuild Environment</h2>
+<h3 class="sectionHead"><span class="titlemark">12.1 </span> <a
+ id="x1-11700012.1"></a>Defined Variables</h3>
+<!--l. 4--><p class="noindent" >The package manager must define the following environment variables. Not all variables are
+meaningful in all phases; variables that are not meaningful in a given phase may be unset or set to
+any value. Ebuilds must not attempt to modify any of these variables, unless otherwise
+specified.
+</p><!--l. 8--><p class="noindent" >Because of their special meanings, these variables may not be preserved consistently across all
+phases as would normally happen due to environment saving (see&#x00A0;<a
+href="#x1-12100012.2">12.2<!--tex4ht:ref: sec:ebuild-env-state --></a>). For example,
+<span
+class="ectt-1000">EBUILD_PHASE </span>is different for every phase, and <span
+class="ectt-1000">ROOT </span>may have changed between the various
+different <span
+class="ectt-1000">pkg_* </span>phases. Ebuilds must recalculate any variable they derive from an inconsistent
+variable.
+
+
+ <a
+ id="x1-117001r1"></a>
+</p><!--l. 16--><div class="longtable"> <table id="TBL-19" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-19-1g"><col
+id="TBL-19-1" /><col
+id="TBL-19-2" /><col
+id="TBL-19-3" /><col
+id="TBL-19-4" /></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-19-1-"><td colspan="4" style="white-space:nowrap; text-align:center;" id="TBL-19-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"> <div class="caption"
+><span class="id">Table&#x00A0;12.1: </span><span
+class="content">Defined variables</span></div><!--tex4ht:label?: x1-117001r1 --> </div><a
+ id="x1-117002"></a>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-19-2-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-19-2-1"
+class="td11"><!--cmidrule-->
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-19-3-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Variable</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-19-3-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Legal in</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-19-3-3"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Consistent?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-19-3-4"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Description</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-19-4-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-19-4-1"
+class="td11"><!--cmidrule-->
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-5-1"
+class="td11"> </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-19-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-1"
+class="td11"></td><td style="white-space:wrap; text-align:left;" id="TBL-19-6-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-3"
+class="td11"> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-6-4"
+class="td11">
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-19-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-18-1"
+class="td11"><span
+class="ectt-1000">P </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-18-2"
+class="td11">
+<!--l. 36--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-18-3"
+class="td11">No<span class="footnote-mark"><a
+href="pms3.html#fn1x13"><sup class="textsuperscript">1</sup></a></span><a
+ id="x1-117003f1"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-18-4"
+class="td11">
+<!--l. 38--><p class="noindent" >Package name and version, without the
+revision part. For example, <span
+class="ectt-1000">vim-7.0.174</span>. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-19-1"
+class="td11"><span
+class="ectt-1000">PN </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-19-2"
+class="td11">
+<!--l. 40--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-19-3"
+class="td11">ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-19-19-4"
+class="td11">
+<!--l. 42--><p class="noindent" >Package name, for example <span
+class="ectt-1000">vim</span>. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-20-1"
+class="td11"><span
+class="ectt-1000">CATEGORY </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-20-2"
+class="td11">
+<!--l. 44--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-20-3"
+class="td11">ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-19-20-4"
+class="td11">
+<!--l. 46--><p class="noindent" >The package&#8217;s category, for example
+<span
+class="ectt-1000">app-editors</span>. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-21-1"
+class="td11"><span
+class="ectt-1000">PV </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-21-2"
+class="td11">
+<!--l. 48--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-21-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-21-4"
+class="td11">
+<!--l. 50--><p class="noindent" >Package version, with no revision. For example
+<span
+class="ectt-1000">7.0.174</span>. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-22-1"
+class="td11"><span
+class="ectt-1000">PR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-22-2"
+class="td11">
+<!--l. 52--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-22-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-22-4"
+class="td11">
+<!--l. 54--><p class="noindent" >Package revision, or <span
+class="ectt-1000">r0 </span>if none exists. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-23-1"
+class="td11"><span
+class="ectt-1000">PVR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-23-2"
+class="td11">
+<!--l. 56--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-23-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-23-4"
+class="td11">
+<!--l. 58--><p class="noindent" >Package version and revision (if any), for
+example <span
+class="ectt-1000">7.0.174 </span>or <span
+class="ectt-1000">7.0.174-r1</span>. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-24-1"
+class="td11"><span
+class="ectt-1000">PF </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-24-2"
+class="td11">
+<!--l. 60--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-24-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-24-4"
+class="td11">
+<!--l. 62--><p class="noindent" >Package name, version, and revision (if any),
+for example <span
+class="ectt-1000">vim-7.0.174-r1</span>. </p></td>
+
+
+
+ </tr><tr
+ style="vertical-align:baseline;" id="TBL-19-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-25-1"
+class="td11"><span
+class="ectt-1000">A </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-25-2"
+class="td11">
+<!--l. 64--><p class="noindent" ><span
+class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-25-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-25-4"
+class="td11">
+<!--l. 66--><p class="noindent" >All source files available for the package,
+whitespace separated with no leading or
+trailing whitespace, and in the order in which
+the item first appears in a matched component
+of <span
+class="ectt-1000">SRC_URI</span>. Does not include any that are
+disabled because of USE conditionals. The
+value is calculated from the base names of
+each element of the <span
+class="ectt-1000">SRC_URI </span>ebuild metadata
+variable. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-26-1"
+class="td11"><span
+class="ectt-1000">AA</span><span class="footnote-mark"><a
+href="pms4.html#fn2x13"><sup class="textsuperscript">2</sup></a></span><a
+ id="x1-117004f2"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-26-2"
+class="td11">
+<!--l. 74--><p class="noindent" ><span
+class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-26-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-26-4"
+class="td11"><!--l. 76--><p class="noindent" >
+<span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">A</span><span
+class="small-caps">A</span></span> </span></p><!--l. 76--><p class="noindent" >All source files that could be available for
+the package, including any that are disabled
+in <span
+class="ectt-1000">A </span>because of USE conditionals. The value
+is calculated from the base names of each
+element of the <span
+class="ectt-1000">SRC_URI </span>ebuild metadata
+variable. Only for EAPIs listed in table&#x00A0;<a
+href="#x1-117008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a>
+as supporting <span
+class="ectt-1000">AA</span>. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-27-1"
+class="td11"><span
+class="ectt-1000">FILESDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-27-2"
+class="td11">
+<!--l. 81--><p class="noindent" ><span
+class="ectt-1000">src_*</span><span class="footnote-mark"><a
+href="pms5.html#fn3x13"><sup class="textsuperscript">3</sup></a></span> <a
+ id="x1-117005f3"></a> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-27-3"
+class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-27-4"
+class="td11">
+<!--l. 83--><p class="noindent" >The full path to the package&#8217;s files directory,
+used for small support files or patches. See
+section&#x00A0;<a
+href="#x1-330004.3">4.3<!--tex4ht:ref: sec:package-dirs --></a>. May or may not exist; if a
+repository provides no support files for the
+package in question then an ebuild must be
+prepared for the situation where <span
+class="ectt-1000">FILESDIR</span>
+points to a non-existent directory. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-28-1"
+class="td11"><span
+class="ectt-1000">PORTDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-28-2"
+class="td11">
+<!--l. 88--><p class="noindent" >ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-28-3"
+class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-28-4"
+class="td11">
+<!--l. 90--><p class="noindent" >The full path to the master repository&#8217;s base
+directory. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-29-1"
+class="td11"><span
+class="ectt-1000">DISTDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-29-2"
+class="td11">
+<!--l. 92--><p class="noindent" >ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-29-3"
+class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-29-4"
+class="td11">
+<!--l. 94--><p class="noindent" >The full path to the directory in which the files
+in the <span
+class="ectt-1000">A </span>variable are stored. </p></td>
+
+
+
+ </tr><tr
+ style="vertical-align:baseline;" id="TBL-19-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-30-1"
+class="td11"><span
+class="ectt-1000">ECLASSDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-30-2"
+class="td11">
+<!--l. 96--><p class="noindent" >ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-30-3"
+class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-30-4"
+class="td11">
+<!--l. 98--><p class="noindent" >The full path to the master repository&#8217;s eclass
+directory. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-31-1"
+class="td11"><span
+class="ectt-1000">ROOT </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-31-2"
+class="td11">
+<!--l. 100--><p class="noindent" ><span
+class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-31-3"
+class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-31-4"
+class="td11">
+<!--l. 102--><p class="noindent" >The absolute path to the root directory into
+which the package is to be merged. Phases
+which run with full filesystem access must not
+touch any files outside of the directory given in
+<span
+class="ectt-1000">ROOT</span>. Also of note is that in a cross-compiling
+environment, binaries inside of <span
+class="ectt-1000">ROOT </span>will not
+be executable on the build machine, so ebuilds
+must not call them. <span
+class="ectt-1000">ROOT </span>must be non-empty
+and end in a trailing slash. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-32-1"
+class="td11"><span
+class="ectt-1000">EROOT </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-32-2"
+class="td11">
+<!--l. 108--><p class="noindent" ><span
+class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-32-3"
+class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-32-4"
+class="td11">
+<!--l. 110--><p class="noindent" >Like <span
+class="ectt-1000">ROOT</span>, but with <span
+class="ectt-1000">EPREFIX </span>appended. This
+is a convenience variable. See also the <span
+class="ectt-1000">EPREFIX</span>
+variable. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-33-1"
+class="td11"><span
+class="ectt-1000">T </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-33-2"
+class="td11">
+<!--l. 113--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-33-3"
+class="td11">Partially<span class="footnote-mark"><a
+href="pms6.html#fn4x13"><sup class="textsuperscript">4</sup></a></span><a
+ id="x1-117006f4"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-33-4"
+class="td11">
+<!--l. 117--><p class="noindent" >The full path to a temporary directory for use
+by the ebuild. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-34-1"
+class="td11"><span
+class="ectt-1000">TMPDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-34-2"
+class="td11">
+<!--l. 119--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-34-3"
+class="td11">Ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-19-34-4"
+class="td11">
+<!--l. 121--><p class="noindent" >Must be set to the location of a usable
+temporary directory, for any applications
+called by an ebuild. Must not be used by
+ebuilds directly; see <span
+class="ectt-1000">T </span>above. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-35-1"
+class="td11"><span
+class="ectt-1000">HOME </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-35-2"
+class="td11">
+<!--l. 124--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-35-3"
+class="td11">Ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-19-35-4"
+class="td11">
+<!--l. 126--><p class="noindent" >The full path to an appropriate temporary
+directory for use by any programs invoked by
+the ebuild that may read or modify the home
+directory. </p></td>
+
+
+
+ </tr><tr
+ style="vertical-align:baseline;" id="TBL-19-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-36-1"
+class="td11"><span
+class="ectt-1000">EPREFIX </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-36-2"
+class="td11">
+<!--l. 129--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-36-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-36-4"
+class="td11">
+<!--l. 131--><p class="noindent" >The normalised offset-prefix path of an offset
+installation. When <span
+class="ectt-1000">EPREFIX </span>is not set in
+the calling environment, <span
+class="ectt-1000">EPREFIX </span>defaults to
+the built-in offset-prefix that was set during
+installation of the package manager. When
+a different <span
+class="ectt-1000">EPREFIX </span>value than the built-in
+value is set in the calling environment, a
+cross-prefix build is performed where using the
+existing utilities, a package is built for the
+given <span
+class="ectt-1000">EPREFIX</span>, akin to <span
+class="ectt-1000">ROOT</span>. See also&#x00A0;<a
+href="#x1-12000012.1.3">12.1.3<!--tex4ht:ref: sec:offset-vars --></a>. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-37-1"
+class="td11"><span
+class="ectt-1000">D </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-37-2"
+class="td11">
+<!--l. 137--><p class="noindent" ><span
+class="ectt-1000">src_install</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-37-3"
+class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-37-4"
+class="td11">
+<!--l. 139--><p class="noindent" >Contains the full path to the image directory
+into which the package should be installed.
+Must be non-empty and end in a trailing slash.</p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-38-1"
+class="td11"> </td></tr>
+<tr
+ style="vertical-align:baseline;" id="TBL-19-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-39-1"
+class="td11"><span
+class="ectt-1000">D </span>(continued) </td><td style="white-space:wrap; text-align:left;" id="TBL-19-39-2"
+class="td11">
+<!--l. 142--><p class="noindent" ><span
+class="ectt-1000">pkg_preinst</span>,
+<span
+class="ectt-1000">pkg_postinst</span> </p> </td> <td style="white-space:nowrap; text-align:left;" id="TBL-19-39-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-39-4"
+class="td11">
+<!--l. 144--><p class="noindent" >Contains the full path to the image that is
+about to be or has just been merged. Must be
+non-empty and end in a trailing slash. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-40-1"
+class="td11"><span
+class="ectt-1000">ED </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-40-2"
+class="td11">
+<!--l. 147--><p class="noindent" ><span
+class="ectt-1000">src_install</span></p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-40-3"
+class="td11">See <span
+class="ectt-1000">D</span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-40-4"
+class="td11">
+<!--l. 149--><p class="noindent" >Like <span
+class="ectt-1000">D</span>, but with <span
+class="ectt-1000">EPREFIX </span>appended. This is
+a convenience variable. See also the <span
+class="ectt-1000">EPREFIX</span>
+variable. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-41-1"
+class="td11"><span
+class="ectt-1000">IMAGE</span><span class="footnote-mark"><a
+href="pms7.html#fn5x13"><sup class="textsuperscript">5</sup></a></span><a
+ id="x1-117007f5"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-41-2"
+class="td11">
+<!--l. 152--><p class="noindent" ><span
+class="ectt-1000">pkg_preinst</span>,
+<span
+class="ectt-1000">pkg_postinst</span> </p> </td> <td style="white-space:nowrap; text-align:left;" id="TBL-19-41-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-41-4"
+class="td11">
+<!--l. 154--><p class="noindent" >Equal to <span
+class="ectt-1000">D</span>. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-42-1"
+class="td11"><span
+class="ectt-1000">INSDESTTREE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-42-2"
+class="td11">
+<!--l. 156--><p class="noindent" ><span
+class="ectt-1000">src_install</span></p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-42-3"
+class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-42-4"
+class="td11">
+<!--l. 158--><p class="noindent" >Controls the location where doins installs
+things. </p></td>
+
+
+
+ </tr><tr
+ style="vertical-align:baseline;" id="TBL-19-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-43-1"
+class="td11"><span
+class="ectt-1000">USE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-43-2"
+class="td11">
+<!--l. 160--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-43-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-43-4"
+class="td11">
+<!--l. 162--><p class="noindent" >A whitespace-delimited list of all active USE
+flags for this ebuild. See section&#x00A0;<a
+href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for
+details. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-44-1"
+class="td11"><span
+class="ectt-1000">EBUILD_PHASE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-44-2"
+class="td11">
+<!--l. 165--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-44-3"
+class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-44-4"
+class="td11">
+<!--l. 167--><p class="noindent" >Takes
+one of the values <span
+class="ectt-1000">config</span>, <span
+class="ectt-1000">setup</span>, <span
+class="ectt-1000">nofetch</span>,
+<span
+class="ectt-1000">unpack</span>, <span
+class="ectt-1000">prepare</span>, <span
+class="ectt-1000">configure</span>, <span
+class="ectt-1000">compile</span>, <span
+class="ectt-1000">test</span>,
+<span
+class="ectt-1000">install</span>, <span
+class="ectt-1000">preinst</span>, <span
+class="ectt-1000">postinst</span>, <span
+class="ectt-1000">prerm</span>, <span
+class="ectt-1000">postrm</span>,
+<span
+class="ectt-1000">info</span>, <span
+class="ectt-1000">pretend </span>according to the top level
+ebuild function that was executed by the
+package manager. May be unset or any single
+word that is not any of the above when
+the ebuild is being sourced for other (e.g.
+metadata or QA) purposes. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-45-1"
+class="td11"><span
+class="ectt-1000">WORKDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-45-2"
+class="td11">
+<!--l. 173--><p class="noindent" ><span
+class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-45-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-45-4"
+class="td11">
+<!--l. 175--><p class="noindent" >The full path to the ebuild&#8217;s working directory,
+in which all build data should be contained. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-46-1"
+class="td11"><span
+class="ectt-1000">KV </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-46-2"
+class="td11">
+<!--l. 178--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-46-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-46-4"
+class="td11"><!--l. 180--><p class="noindent" >
+<span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">K</span><span
+class="small-caps">V</span></span> </span></p><!--l. 180--><p class="noindent" >The version of the running kernel at the time
+the ebuild was first executed, as returned by
+the <span
+class="ectt-1000">uname</span><span
+class="ectt-1000">&#x00A0;-r </span>command or equivalent. May be
+modified by ebuilds. Only for EAPIs listed in
+table&#x00A0;<a
+href="#x1-117008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as supporting <span
+class="ectt-1000">KV</span>. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-47-1"
+class="td11"><span
+class="ectt-1000">REPLACING_VERSIONS </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-47-2"
+class="td11">
+<!--l. 184--><p class="noindent" ><span
+class="ectt-1000">pkg_* </span>(see
+text) </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-47-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-47-4"
+class="td11">
+<!--l. 186--><p class="noindent" >A whitespace-separated list of versions of this
+package (including revision, if specified) that
+are being replaced (uninstalled or overwritten)
+as a result of this install. See section&#x00A0;<a
+href="#x1-11900012.1.2">12.1.2<!--tex4ht:ref: sec:replacing-versions --></a>.
+Only for EAPIs listed in table&#x00A0;<a
+href="#x1-117008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as
+supporting <span
+class="ectt-1000">REPLACING_VERSIONS</span>. </p></td>
+
+
+
+ </tr><tr
+ style="vertical-align:baseline;" id="TBL-19-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-48-1"
+class="td11"><span
+class="ectt-1000">REPLACED_BY_VERSION </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-48-2"
+class="td11">
+<!--l. 191--><p class="noindent" ><span
+class="ectt-1000">pkg_prerm</span>,
+<span
+class="ectt-1000">pkg_postrm</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-48-3"
+class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-48-4"
+class="td11">
+<!--l. 193--><p class="noindent" >The single version of this package (including
+revision, if specified) that is replacing us, if we
+are being uninstalled as part of an install, or
+an empty string otherwise. See section&#x00A0;<a
+href="#x1-11900012.1.2">12.1.2<!--tex4ht:ref: sec:replacing-versions --></a>.
+Only for EAPIs listed in table&#x00A0;<a
+href="#x1-117008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as
+supporting <span
+class="ectt-1000">REPLACED_BY_VERSION</span>. </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-49-1"
+class="td11"> </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-19-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-50-1"
+class="td11"></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-51-1"
+class="td11"> </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-19-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-52-1"
+class="td11"></td>
+</tr>
+<tr
+ style="vertical-align:baseline;" id="TBL-19-15-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-19-15-1"
+class="td11"><!--cmidrule--></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-19-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-16-1"
+class="td11"></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-19-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-17-1"
+class="td11"></td></tr>
+</table></div>
+
+
+
+<div class="table">
+
+
+<!--l. 200--><p class="noindent" ><a
+ id="x1-117008r2"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;12.2: </span><span
+class="content">EAPIs supporting various env variables</span></div><!--tex4ht:label?: x1-117008r2 -->
+<div class="tabular">
+ <table id="TBL-20" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-20-1g"><col
+id="TBL-20-1" /><col
+id="TBL-20-2" /><col
+id="TBL-20-3" /><col
+id="TBL-20-4" /><col
+id="TBL-20-5" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">AA</span><span
+class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-3"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">KV</span><span
+class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-4"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">REPLACING_VERSIONS</span><span
+class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-5"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">REPLACED_BY_VERSION</span><span
+class="ecbx-1000">?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-2"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-3"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-5"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-2"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-3"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-5"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-20-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-2"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-3"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-5"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-20-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-2"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-3"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-5"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-20-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-2"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-4"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-5"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-20-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<div class="table">
+
+
+<!--l. 218--><p class="noindent" ><a
+ id="x1-117009r3"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;12.3: </span><span
+class="content">EAPIs supporting offset-prefix env variables</span></div><!--tex4ht:label?: x1-117009r3 -->
+<div class="tabular">
+ <table id="TBL-21" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-21-1g"><col
+id="TBL-21-1" /><col
+id="TBL-21-2" /><col
+id="TBL-21-3" /><col
+id="TBL-21-4" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-21-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-21-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-21-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">EPREFIX</span><span
+class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-21-1-3"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">EROOT</span><span
+class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-21-1-4"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">ED</span><span
+class="ecbx-1000">?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-2-2"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-2-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-2-4"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-2"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-4"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-21-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-2"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-4"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-21-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-5-2"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-5-3"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-5-4"
+class="td11">Yes</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-21-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-6-2"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-6-3"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-6-4"
+class="td11">Yes</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-21-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<!--l. 236--><p class="noindent" >Except where otherwise noted, all variables set in the active profiles&#8217; <span
+class="ectt-1000">make.defaults </span>files must be
+exported to the ebuild environment. <span
+class="ectt-1000">CHOST</span>, <span
+class="ectt-1000">CBUILD </span>and <span
+class="ectt-1000">CTARGET</span>, if not set by profiles, must
+contain either an appropriate machine tuple (the definition of appropriate is beyond the scope of
+this specification) or be unset.
+</p><!--l. 241--><p class="noindent" ><span
+class="ectt-1000">PATH </span>must be initialized by the package manager to a &#8220;usable&#8221; default. The exact value here is left
+up to interpretation, but it should include the equivalent &#8220;sbin&#8221; and &#8220;bin&#8221; and any package
+manager specific directories.
+</p><!--l. 245--><p class="noindent" ><span
+class="ectt-1000">GZIP</span>, <span
+class="ectt-1000">BZIP</span>, <span
+class="ectt-1000">BZIP2</span>, <span
+class="ectt-1000">CDPATH</span>, <span
+class="ectt-1000">GREP_OPTIONS</span>, <span
+class="ectt-1000">GREP_COLOR </span>and <span
+class="ectt-1000">GLOBIGNORE </span>must not be
+set.
+</p>
+<h4 class="subsectionHead"><span class="titlemark">12.1.1 </span> <a
+ id="x1-11800012.1.1"></a>USE and IUSE Handling</h4>
+<!--l. 251--><p class="nopar" >This section discusses the handling of four variables:
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">IUSE</span> </dt><dd
+class="description">is the variable calculated from the <span
+class="ectt-1000">IUSE </span>values defined in ebuilds and eclasses.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">IUSE_REFERENCEABLE</span> </dt><dd
+class="description">is a variable calculated from <span
+class="ectt-1000">IUSE </span>and a variety of other
+ sources described below. It is purely a conceptual variable; it is not exported to the
+ ebuild environment. Values in <span
+class="ectt-1000">IUSE_REFERENCEABLE </span>may legally be used in queries
+ from other packages about an ebuild&#8217;s state (for example, for use dependencies).
+ </dd><dt class="description">
+<span
+class="ecbx-1000">IUSE_EFFECTIVE</span> </dt><dd
+class="description">is another
+ conceptual, unexported variable. Values in <span
+class="ectt-1000">IUSE_EFFECTIVE </span>are those which an ebuild
+ may legally use in queries about itself (for example, for the <span
+class="ectt-1000">use </span>function, and for use
+ in dependency specification conditional blocks).
+ </dd><dt class="description">
+<span
+class="ecbx-1000">USE</span> </dt><dd
+class="description">is a variable calculated by the package manager and exported to the ebuild
+ environment.</dd></dl>
+<!--l. 265--><p class="noindent" >In all cases, the values of <span
+class="ectt-1000">IUSE_REFERENCEABLE </span>and <span
+class="ectt-1000">IUSE_EFFECTIVE </span>are undefined during
+metadata generation.
+</p><!--l. 268--><p class="noindent" >For EAPIs listed in table&#x00A0;<a
+href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as not supporting profile defined <span
+class="ectt-1000">IUSE </span>injection, <span
+class="ectt-1000">IUSE_REFERENCEABLE </span>is
+equal to the calculated <span
+class="ectt-1000">IUSE </span>value. For EAPIs where profile defined <span
+class="ectt-1000">IUSE </span>injection is supported,
+<span
+class="ectt-1000">IUSE_REFERENCEABLE </span>is equal to <span
+class="ectt-1000">IUSE_EFFECTIVE</span>.
+</p><!--l. 273--><p class="noindent" >For EAPIs listed in table&#x00A0;<a
+href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as not supporting profile defined <span
+class="ectt-1000">IUSE </span>injection, <span
+class="ectt-1000">IUSE_EFFECTIVE</span>
+contains the following values:
+</p><!--l. 277--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">All values in the calculated <span
+class="ectt-1000">IUSE </span>value.
+ </li>
+ <li class="compactitem">All possible values for the <span
+class="ectt-1000">ARCH </span>variable.
+ </li>
+ <li class="compactitem">All legal use flag names whose name starts with the lowercase equivalent of any value
+ in the profile <span
+class="ectt-1000">USE_EXPAND </span>variable followed by an underscore.</li></ul>
+ <!--l. 283--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">O</span><span
+class="small-caps">F</span><span
+class="small-caps">I</span><span
+class="small-caps">L</span><span
+class="small-caps">E</span>-<span
+class="small-caps">I</span><span
+class="small-caps">U</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span>-<span
+class="small-caps">I</span><span
+class="small-caps">N</span><span
+class="small-caps">J</span><span
+class="small-caps">E</span><span
+class="small-caps">C</span><span
+class="small-caps">T</span><span
+class="small-caps">I</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span></span></span></p><!--l. 283--><p class="noindent" >For EAPIs listed in table&#x00A0;<a
+href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as supporting profile defined <span
+class="ectt-1000">IUSE </span>injection, <span
+class="ectt-1000">IUSE_EFFECTIVE</span>
+contains the following values:
+
+
+</p><!--l. 288--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">All values in the calculated <span
+class="ectt-1000">IUSE </span>value.
+ </li>
+ <li class="compactitem">All values in the profile <span
+class="ectt-1000">IUSE_IMPLICIT </span>variable.
+ </li>
+ <li class="compactitem">All values in the profile variable named <span
+class="ectt-1000">USE_EXPAND_VALUES_${v}</span>, where <span
+class="ectt-1000">${v}</span>
+ is any value in the intersection of the profile <span
+class="ectt-1000">USE_EXPAND_UNPREFIXED </span>and
+ <span
+class="ectt-1000">USE_EXPAND_IMPLICIT </span>variables.
+ </li>
+ <li class="compactitem">All values for <span
+class="ectt-1000">${lower_v}_${x}</span>, where <span
+class="ectt-1000">${x} </span>is all values in the profile variable named
+ <span
+class="ectt-1000">USE_EXPAND_VALUES_${v}</span>, where <span
+class="ectt-1000">${v} </span>is any value in the intersection of the profile
+ <span
+class="ectt-1000">USE_EXPAND </span>and <span
+class="ectt-1000">USE_EXPAND_IMPLICIT </span>variables and <span
+class="ectt-1000">${lower_v} </span>is the lowercase
+ equivalent of <span
+class="ectt-1000">${v}</span>.</li></ul>
+<!--l. 299--><p class="noindent" >The <span
+class="ectt-1000">USE </span>variable is set by the package manager. For each value in <span
+class="ectt-1000">IUSE_EFFECTIVE</span>, <span
+class="ectt-1000">USE </span>shall
+contain that value if the flag is to be enabled for the ebuild in question, and shall not contain
+that value if it is to be disabled. In EAPIs listed in table&#x00A0;<a
+href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as not supporting profile
+defined <span
+class="ectt-1000">IUSE </span>injection, <span
+class="ectt-1000">USE </span>may contain other flag names that are not relevant for the
+ebuild.
+</p><!--l. 305--><p class="noindent" >For EAPIs listed in table&#x00A0;<a
+href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as supporting profile defined <span
+class="ectt-1000">IUSE </span>injection, the variables named in
+<span
+class="ectt-1000">USE_EXPAND </span>and <span
+class="ectt-1000">USE_EXPAND_UNPREFIXED </span>shall have their profile-provided values reduced to
+contain only those values that are present in <span
+class="ectt-1000">IUSE_EFFECTIVE</span>.
+</p><!--l. 310--><p class="noindent" >For EAPIs listed in table&#x00A0;<a
+href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as supporting profile defined <span
+class="ectt-1000">IUSE </span>injection, the package manager
+must save the calculated value of <span
+class="ectt-1000">IUSE_EFFECTIVE </span>when installing a package. Details are beyond
+the scope of this specification.
+</p><!--l. 314--><p class="nopar" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">12.1.2 </span> <a
+ id="x1-11900012.1.2"></a><span
+class="ectt-1000">REPLACING_VERSIONS </span>and <span
+class="ectt-1000">REPLACED_BY_VERSION</span></h4>
+ <!--l. 317--><p class="nopar" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">L</span><span
+class="small-caps">A</span><span
+class="small-caps">C</span><span
+class="small-caps">E</span>-<span
+class="small-caps">V</span><span
+class="small-caps">E</span><span
+class="small-caps">R</span><span
+class="small-caps">S</span><span
+class="small-caps">I</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span>-<span
+class="small-caps">V</span><span
+class="small-caps">A</span><span
+class="small-caps">R</span><span
+class="small-caps">S</span></span></span></p><!--l. 317--><p class="noindent" >In EAPIs listed in table&#x00A0;<a
+href="#x1-117008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as supporting it, the <span
+class="ectt-1000">REPLACING_VERSIONS </span>variable shall be defined
+in <span
+class="ectt-1000">pkg_preinst </span>and <span
+class="ectt-1000">pkg_postinst</span>. In addition, it <span
+class="ecti-1000">may </span>be defined in <span
+class="ectt-1000">pkg_pretend </span>and
+<span
+class="ectt-1000">pkg_setup</span>, although ebuild authors should take care to handle binary package creation and
+installation correctly when using it in these phases.
+</p><!--l. 323--><p class="noindent" ><span
+class="ectt-1000">REPLACING_VERSIONS </span>is a list, not a single optional value, to handle pathological cases such as
+installing <span
+class="ectt-1000">foo-2:2 </span>to replace <span
+class="ectt-1000">foo-2:1 </span>and <span
+class="ectt-1000">foo-3:2</span>.
+</p><!--l. 326--><p class="noindent" >In EAPIs listed in table&#x00A0;<a
+href="#x1-117008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as supporting it, the <span
+class="ectt-1000">REPLACED_BY </span>variable shall be defined in
+<span
+class="ectt-1000">pkg_prerm </span>and <span
+class="ectt-1000">pkg_postrm</span>. It shall contain at most one value.
+</p><!--l. 329--><p class="nopar" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">12.1.3 </span> <a
+ id="x1-12000012.1.3"></a>Offset-prefix variables <span
+class="ectt-1000">EPREFIX</span>, <span
+class="ectt-1000">EROOT </span>and <span
+class="ectt-1000">ED</span></h4>
+<div class="table">
+
+
+<!--l. 332--><p class="noindent" ><a
+ id="x1-120001r4"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;12.4: </span><span
+class="content">EAPIs supporting offset-prefix</span></div><!--tex4ht:label?: x1-120001r4 -->
+<div class="tabular">
+ <table id="TBL-22" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-22-1g"><col
+id="TBL-22-1" /><col
+id="TBL-22-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-22-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-22-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-22-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports offset-prefix?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-22-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-22-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-22-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-4-2"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-22-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-5-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-22-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-22-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+ <!--l. 348--><p class="nopar" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">O</span><span
+class="small-caps">F</span><span
+class="small-caps">F</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span><span
+class="small-caps">T</span>-<span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">F</span><span
+class="small-caps">I</span><span
+class="small-caps">X</span>-<span
+class="small-caps">V</span><span
+class="small-caps">A</span><span
+class="small-caps">R</span><span
+class="small-caps">S</span></span></span></p><!--l. 348--><p class="noindent" >Table&#x00A0;<a
+href="#x1-120001r4">12.4<!--tex4ht:ref: tab:offset-support-table --></a> lists the EAPIs which support offset-prefix installations. This support was initially
+added in EAPI 3, in the form of three extra variables. Two of these, <span
+class="ectt-1000">EROOT </span>and <span
+class="ectt-1000">ED</span>, are convenience
+variables using the variable <span
+class="ectt-1000">EPREFIX</span>. In EAPIs that do not support an offset-prefix, the
+installation offset is hardwired to <span
+class="ectt-1000">/usr</span>. In offset-prefix supporting EAPIs the installation offset is
+set as <span
+class="ectt-1000">${EPREFIX}/usr </span>and hence can be adjusted using the variable <span
+class="ectt-1000">EPREFIX</span>. Note that the
+behaviour of offset-prefix aware and agnostic is the same when <span
+class="ectt-1000">EPREFIX </span>is set to the empty string
+in offset-prefix aware EAPIs. The latter do have the variables <span
+class="ectt-1000">ED </span>and <span
+class="ectt-1000">EROOT </span>properly set,
+though.
+</p>
+<h3 class="sectionHead"><span class="titlemark">12.2 </span> <a
+ id="x1-12100012.2"></a>The state of variables between functions</h3>
+<!--l. 4--><p class="nopar" >Exported and default scope variables are saved between functions. A non-local variable set in a
+function earlier in the call sequence must have its value preserved for later functions, including
+functions executed as part of a later uninstall.
+</p>
+<!--l. 8--><p class="nopar" ><span class="paragraphHead"><a
+ id="x1-12200012.2"></a><span
+class="ecbx-1000">Note:</span></span>
+<span
+class="ectt-1000">pkg_pretend </span>is <span
+class="ecti-1000">not </span>part of the normal call sequence, and does not take part in environment
+saving.
+</p><!--l. 11--><p class="noindent" >Variables that were exported must remain exported in later functions; variables with default
+visibility may retain default visibility or be exported.
+</p><!--l. 14--><p class="noindent" >Variables with special meanings to the package manager are excluded from this rule.
+</p><!--l. 16--><p class="noindent" >Global variables must only contain invariant values (see&#x00A0;<a
+href="#x1-680008.1">8.1<!--tex4ht:ref: sec:metadata-invariance --></a>). If a global variable&#8217;s value is
+invariant, it may have the value that would be generated at any given point in the build
+sequence.
+</p><!--l. 20--><p class="noindent" >This is demonstrated by code listing&#x00A0;<a
+href="#x1-122001r1">12.1<!--tex4ht:ref: lst:env-saving --></a>.
+
+
+</p><!--l. 23--><p class="noindent" ><a
+ id="x1-122001r1"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Listing 12.1: </span><span
+class="content">Environment state between functions</span></div><!--tex4ht:label?: x1-122001r1 -->
+<div class="verbatiminput">
+<span
+class="ectt-1000">GLOBAL_VARIABLE="a"</span>
+<span
+class="ectt-1000">&#x00A0;</span><br />
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">src_compile()</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">{</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;GLOBAL_VARIABLE="b"</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;DEFAULT_VARIABLE="c"</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;export</span><span
+class="ectt-1000">&#x00A0;EXPORTED_VARIABLE="d"</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;local</span><span
+class="ectt-1000">&#x00A0;LOCAL_VARIABLE="e"</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">}</span>
+<span
+class="ectt-1000">&#x00A0;</span><br />
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">src_install(){</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;[[</span><span
+class="ectt-1000">&#x00A0;${GLOBAL_VARIABLE}</span><span
+class="ectt-1000">&#x00A0;==</span><span
+class="ectt-1000">&#x00A0;"a"</span><span
+class="ectt-1000">&#x00A0;]]</span><span
+class="ectt-1000">&#x00A0;\</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;||</span><span
+class="ectt-1000">&#x00A0;[[</span><span
+class="ectt-1000">&#x00A0;${GLOBAL_VARIABLE}</span><span
+class="ectt-1000">&#x00A0;==</span><span
+class="ectt-1000">&#x00A0;"b"</span><span
+class="ectt-1000">&#x00A0;]]</span><span
+class="ectt-1000">&#x00A0;\</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;||</span><span
+class="ectt-1000">&#x00A0;die</span><span
+class="ectt-1000">&#x00A0;"broken</span><span
+class="ectt-1000">&#x00A0;env</span><span
+class="ectt-1000">&#x00A0;saving</span><span
+class="ectt-1000">&#x00A0;for</span><span
+class="ectt-1000">&#x00A0;globals"</span>
+<span
+class="ectt-1000">&#x00A0;</span><br />
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;[[</span><span
+class="ectt-1000">&#x00A0;${DEFAULT_VARIABLE}</span><span
+class="ectt-1000">&#x00A0;==</span><span
+class="ectt-1000">&#x00A0;"c"</span><span
+class="ectt-1000">&#x00A0;]]</span><span
+class="ectt-1000">&#x00A0;\</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;||</span><span
+class="ectt-1000">&#x00A0;die</span><span
+class="ectt-1000">&#x00A0;"broken</span><span
+class="ectt-1000">&#x00A0;env</span><span
+class="ectt-1000">&#x00A0;saving</span><span
+class="ectt-1000">&#x00A0;for</span><span
+class="ectt-1000">&#x00A0;default"</span>
+<span
+class="ectt-1000">&#x00A0;</span><br />
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;[[</span><span
+class="ectt-1000">&#x00A0;${EXPORTED_VARIABLE}</span><span
+class="ectt-1000">&#x00A0;==</span><span
+class="ectt-1000">&#x00A0;"d"</span><span
+class="ectt-1000">&#x00A0;]]</span><span
+class="ectt-1000">&#x00A0;\</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;||</span><span
+class="ectt-1000">&#x00A0;die</span><span
+class="ectt-1000">&#x00A0;"broken</span><span
+class="ectt-1000">&#x00A0;env</span><span
+class="ectt-1000">&#x00A0;saving</span><span
+class="ectt-1000">&#x00A0;for</span><span
+class="ectt-1000">&#x00A0;exported"</span>
+<span
+class="ectt-1000">&#x00A0;</span><br />
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;[[</span><span
+class="ectt-1000">&#x00A0;$(printenv</span><span
+class="ectt-1000">&#x00A0;EXPORTED_VARIABLE</span><span
+class="ectt-1000">&#x00A0;)</span><span
+class="ectt-1000">&#x00A0;==</span><span
+class="ectt-1000">&#x00A0;"d"</span><span
+class="ectt-1000">&#x00A0;]]</span><span
+class="ectt-1000">&#x00A0;\</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;||</span><span
+class="ectt-1000">&#x00A0;die</span><span
+class="ectt-1000">&#x00A0;"broken</span><span
+class="ectt-1000">&#x00A0;env</span><span
+class="ectt-1000">&#x00A0;saving</span><span
+class="ectt-1000">&#x00A0;for</span><span
+class="ectt-1000">&#x00A0;exported"</span>
+<span
+class="ectt-1000">&#x00A0;</span><br />
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;[[</span><span
+class="ectt-1000">&#x00A0;-z</span><span
+class="ectt-1000">&#x00A0;${LOCAL_VARIABLE}</span><span
+class="ectt-1000">&#x00A0;]]</span><span
+class="ectt-1000">&#x00A0;\</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;||</span><span
+class="ectt-1000">&#x00A0;die</span><span
+class="ectt-1000">&#x00A0;"broken</span><span
+class="ectt-1000">&#x00A0;env</span><span
+class="ectt-1000">&#x00A0;saving</span><span
+class="ectt-1000">&#x00A0;for</span><span
+class="ectt-1000">&#x00A0;locals"</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">}</span>
+</div>
+
+
+</div><hr class="endfloat" />
+<h3 class="sectionHead"><span class="titlemark">12.3 </span> <a
+ id="x1-12300012.3"></a>Available commands</h3>
+<!--l. 4--><p class="nopar" >This section documents the commands available to an ebuild. Unless otherwise specified, they may
+be aliases, shell functions, or executables in the ebuild&#8217;s <span
+class="ectt-1000">PATH</span>.
+</p><!--l. 7--><p class="noindent" >When an ebuild is being sourced for metadata querying rather than for a build (that is to say,
+when none of the <span
+class="ectt-1000">src_ </span>or <span
+class="ectt-1000">pkg_ </span>functions are to be called), no external command may be executed.
+The package manager may take steps to enforce this.
+</p><!--l. 11--><p class="nopar" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">12.3.1 </span> <a
+ id="x1-12400012.3.1"></a>System commands</h4>
+<!--l. 13--><p class="nopar" >Any ebuild not listed in the system set for the active profile(s) may assume the presence of every
+command that is always provided by the system set for that profile. However, it must target the
+lowest common denominator of all systems on which it might be installed&#8212;in most
+cases this means that the only packages that can be assumed to be present are those
+listed in the <span
+class="ectt-1000">base </span>profile or equivalent, which is inherited by all available profiles. If an
+ebuild requires any applications not provided by the system profile, or that are provided
+conditionally based on USE flags, appropriate dependencies must be used to ensure their
+presence.
+</p><!--l. 21--><p class="nopar" >
+</p>
+<h5 class="subsubsectionHead"><a
+ id="x1-12500012.3.1"></a>Guaranteed system commands</h5>
+<!--l. 24--><p class="nopar" >The following commands must always be available in the ebuild environment:
+ </p><ul>
+ <li class="compactitem">All builtin commands in GNU bash, version 3.2<span class="footnote-mark"><a
+href="pms8.html#fn6x13"><sup class="textsuperscript">6</sup></a></span><a
+ id="x1-125001f6"></a> .
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">sed </span>must be available, and must support all forms of invocations valid for GNU sed
+ version 4 or later.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">patch </span>must be available, and must support all inputs valid for GNU patch.</li></ul>
+<!--l. 34--><p class="nopar" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">12.3.2 </span> <a
+ id="x1-12600012.3.2"></a>Commands provided by package dependencies</h4>
+<!--l. 36--><p class="nopar" >In some cases a package&#8217;s build process will require the availability of executables not provided by
+the core system, a common example being autotools. Commands provided by dependencies are
+available in the following cases:
+ </p><ul>
+ <li class="compactitem">In the <span
+class="ectt-1000">src </span>phases, any command provided by a package listed in <span
+class="ectt-1000">DEPEND </span>is available.
+
+
+ </li>
+ <li class="compactitem">In the <span
+class="ectt-1000">pkg </span>phases, at least one of the following conditions must be met:
+ <ul>
+ <li class="compactitem">Any command provided by a package listed in <span
+class="ectt-1000">DEPEND </span>is available.
+ </li>
+ <li class="compactitem">Any command provided by a package listed in <span
+class="ectt-1000">RDEPEND </span>is available.</li></ul>
+ </li></ul>
+<!--l. 48--><p class="nopar" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">12.3.3 </span> <a
+ id="x1-12700012.3.3"></a>Ebuild-specific Commands</h4>
+<!--l. 3--><p class="nopar" >The following commands will always be available in the ebuild environment, provided by the
+package manager. Except where otherwise noted, they may be internal (shell functions or aliases)
+or external commands available in <span
+class="ectt-1000">PATH</span>; where this is not specified, ebuilds may not rely upon
+either behaviour.
+</p><!--l. 8--><p class="nopar" >
+</p>
+<h5 class="subsubsectionHead"><a
+ id="x1-12800012.3.3"></a>Failure behaviour and related commands</h5>
+ <!--l. 11--><p class="nopar" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">I</span><span
+class="small-caps">E</span>-<span
+class="small-caps">O</span><span
+class="small-caps">N</span>-<span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">I</span><span
+class="small-caps">L</span><span
+class="small-caps">U</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span></span></span></p><!--l. 11--><p class="noindent" >Where a command is listed as having EAPI dependent failure behaviour, a failure shall either
+result in a non-zero exit status or abort the build process, as determined by table&#x00A0;<a
+href="#x1-128001r5">12.5<!--tex4ht:ref: tab:commands-die-table --></a>.
+</p><!--l. 15--><p class="noindent" >The following commands affect this behaviour:
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">nonfatal</span> </dt><dd
+class="description"><!--l. 17--><p class="noindent" > </p><!--l. 17--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">N</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span><span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">T</span><span
+class="small-caps">A</span><span
+class="small-caps">L</span></span></span> Executes the remainder of its arguments as a command, preserving the exit
+ status. If this results in a command being called that would normally abort the build
+ process due to a failure (but not due to an explicit <span
+class="ectt-1000">die </span>or <span
+class="ectt-1000">assert </span>call), instead a
+ non-zero exit status shall be returned. Only in EAPIs listed in table&#x00A0;<a
+href="#x1-128001r5">12.5<!--tex4ht:ref: tab:commands-die-table --></a> as supporting
+ <span
+class="ectt-1000">nonfatal</span>.</p></dd></dl>
+<div class="table">
+
+
+<!--l. 24--><p class="noindent" ><a
+ id="x1-128001r5"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;12.5: </span><span
+class="content">EAPI Command Failure Behaviour</span></div><!--tex4ht:label?: x1-128001r5 -->
+<div class="tabular">
+ <table id="TBL-23" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-23-1g"><col
+id="TBL-23-1" /><col
+id="TBL-23-2" /><col
+id="TBL-23-3" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-23-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-23-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-23-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Command failure behaviour</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-23-1-3"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">nonfatal</span><span
+class="ecbx-1000">?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-23-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-2-2"
+class="td11">Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-2-3"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-23-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-3-2"
+class="td11">Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-3-3"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-23-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-4-2"
+class="td11">Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-4-3"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-23-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-5-2"
+class="td11">Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-5-3"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-23-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-6-2"
+class="td11">Aborts </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-6-3"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-23-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h5 class="subsubsectionHead"><a
+ id="x1-12900012.3.3"></a>Banned commands</h5>
+ <!--l. 43--><p class="nopar" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">B</span><span
+class="small-caps">A</span><span
+class="small-caps">N</span><span
+class="small-caps">N</span><span
+class="small-caps">E</span><span
+class="small-caps">D</span>-<span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">M</span><span
+class="small-caps">M</span><span
+class="small-caps">A</span><span
+class="small-caps">N</span><span
+class="small-caps">D</span><span
+class="small-caps">S</span></span></span></p><!--l. 43--><p class="noindent" >Some commands are banned in some EAPIs. If a banned command is called, the package manager
+must abort the build process indicating an error.
+</p>
+<div class="table">
+
+
+<!--l. 46--><p class="noindent" ><a
+ id="x1-129001r6"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;12.6: </span><span
+class="content">Banned commands</span></div><!--tex4ht:label?: x1-129001r6 -->
+<div class="tabular">
+ <table id="TBL-24" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-24-1g"><col
+id="TBL-24-1" /><col
+id="TBL-24-2" /><col
+id="TBL-24-3" /><col
+id="TBL-24-4" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-24-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-24-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td colspan="3" style="white-space:nowrap; text-align:center;" id="TBL-24-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Command banned?</span></div></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-24-2-"><td style="white-space:nowrap; text-align:center;" id="TBL-24-2-1"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-24-2-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">dohard</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-24-2-3"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">dosed</span></div>
+
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-24-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-2"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-3"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-24-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-2"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-3"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-24-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-2"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-3"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-24-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-2"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-3"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-24-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-2"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-3"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-24-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-8-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h5 class="subsubsectionHead"><a
+ id="x1-13000012.3.3"></a>Sandbox commands</h5>
+<!--l. 65--><p class="nopar" >These commands affect the behaviour of the sandbox. Each command takes a single directory as
+argument. Ebuilds must not run any of these commands once the current phase function has
+returned.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">addread</span> </dt><dd
+class="description">Add a directory to the permitted read list.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">addwrite</span> </dt><dd
+class="description">Add a directory to the permitted write list.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">addpredict</span> </dt><dd
+class="description">Add a directory to the predict list. Any write to a location in this list will be
+ denied, but will not trigger access violation messages or abort the build process.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">adddeny</span> </dt><dd
+class="description">Add a directory to the deny list.</dd></dl>
+<!--l. 75--><p class="nopar" >
+</p>
+<h5 class="subsubsectionHead"><a
+ id="x1-13100012.3.3"></a>Package manager query commands</h5>
+<!--l. 76--><p class="nopar" >These commands are used to extract information about the host system. Ebuilds must not run any
+of these commands in parallel with any other package manager command. Ebuilds must not run
+any of these commands once the current phase function has returned.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">has_version</span> </dt><dd
+class="description">Takes exactly one package dependency specification as an argument. Returns
+ true if a package matching the atom is installed in <span
+class="ectt-1000">ROOT</span>, and false otherwise.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">best_version</span> </dt><dd
+class="description">Takes exactly one package dependency specification as an argument. If a
+ matching package is installed, prints the category, package name and version of the
+ highest matching version.</dd></dl>
+<!--l. 87--><p class="nopar" >
+</p>
+<h5 class="subsubsectionHead"><a
+ id="x1-13200012.3.3"></a>Output commands</h5>
+<!--l. 88--><p class="nopar" >These commands display messages to the user. Unless otherwise stated, the entire argument list is
+used as a message, with backslash-escaped characters interpreted as for the <span
+class="ectt-1000">echo -e </span>command of
+bash, notably <span
+class="ectt-1000">\t </span>for a horizontal tab, <span
+class="ectt-1000">\n </span>for a new line, and <span
+class="ectt-1000">\\ </span>for a literal backslash. Ebuilds
+must not run any of these commands once the current phase function has returned.
+Unless otherwise noted, output may be sent to stdout, stderr or some other appropriate
+facility.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">einfo</span> </dt><dd
+class="description">Displays an informational message.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">einfon</span> </dt><dd
+class="description">Displays an informational message without a trailing newline.
+
+
+ </dd><dt class="description">
+<span
+class="ecbx-1000">elog</span> </dt><dd
+class="description">Displays an informational message of slightly higher importance. The package manager
+ may choose to log <span
+class="ectt-1000">elog </span>messages by default where <span
+class="ectt-1000">einfo </span>messages are not, for example.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">ewarn</span> </dt><dd
+class="description">Displays a warning message. Must not go to stdout.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">eerror</span> </dt><dd
+class="description">Displays an error message. Must not go to stdout.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">ebegin</span> </dt><dd
+class="description">Displays an informational message. Should be used when beginning a possibly
+ lengthy process, and followed by a call to <span
+class="ectt-1000">eend</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">eend</span> </dt><dd
+class="description">Indicates that the process begun with an <span
+class="ectt-1000">ebegin </span>message has completed. Takes
+ one fixed argument, which is a numeric return code, and an optional message in all
+ subsequent arguments. If the first argument is 0, print a success indicator; otherwise,
+ print the message followed by a failure indicator.</dd></dl>
+<!--l. 110--><p class="nopar" >
+</p>
+<h5 class="subsubsectionHead"><a
+ id="x1-13300012.3.3"></a>Error commands</h5>
+<!--l. 111--><p class="nopar" >These commands are used when an error is detected that will prevent the build process from
+completing. Ebuilds must not run any of these commands once the current phase function has
+returned.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">die</span> </dt><dd
+class="description">Displays a failure message provided in its first and only argument, and then aborts
+ the build process. <span
+class="ectt-1000">die </span>is <span
+class="ecti-1000">not </span>guaranteed to work correctly if called from a subshell
+ environment.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">assert</span> </dt><dd
+class="description">Checks the value of the shell&#8217;s pipe status variable, and if any component is non-zero
+ (indicating failure), calls <span
+class="ectt-1000">die </span>with its first argument as a failure message.</dd></dl>
+<!--l. 121--><p class="nopar" >
+</p>
+<h5 class="subsubsectionHead"><a
+ id="x1-13400012.3.3"></a>Build commands</h5>
+<!--l. 122--><p class="nopar" >These commands are used during the <span
+class="ectt-1000">src_compile </span>and <span
+class="ectt-1000">src_install </span>phases to run the package&#8217;s
+build commands. Ebuilds must not run any of these commands once the current phase function has
+returned.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">econf</span> </dt><dd
+class="description">Calls the program&#8217;s <span
+class="ectt-1000">./configure </span>script. This is designed to work with GNU
+ Autoconf-generated scripts. Any additional parameters passed to <span
+class="ectt-1000">econf </span>are passed
+ directly to <span
+class="ectt-1000">./configure</span>. <span
+class="ectt-1000">econf </span>will look in the current working directory for a
+ configure script unless the <span
+class="ectt-1000">ECONF_SOURCE </span>environment variable is set, in which case it
+ is taken to be the directory containing it. <span
+class="ectt-1000">econf </span>must pass the following options to the
+ configure script:
+ <!--l. 133--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">E</span><span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span><span
+class="small-caps">F</span>-<span
+class="small-caps">O</span><span
+class="small-caps">P</span><span
+class="small-caps">T</span><span
+class="small-caps">I</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span><span
+class="small-caps">S</span></span></span></p>
+
+
+ <ul class="itemize1">
+ <li class="itemize">--prefix must default to <span
+class="ectt-1000">${EPREFIX}/usr </span>unless overridden by <span
+class="ectt-1000">econf</span>&#8217;s caller.
+ </li>
+ <li class="itemize">--mandir must be <span
+class="ectt-1000">${EPREFIX}/usr/share/man</span>
+ </li>
+ <li class="itemize">--infodir must be <span
+class="ectt-1000">${EPREFIX}/usr/share/info</span>
+ </li>
+ <li class="itemize">--datadir must be <span
+class="ectt-1000">${EPREFIX}/usr/share</span>
+ </li>
+ <li class="itemize">--sysconfdir must be <span
+class="ectt-1000">${EPREFIX}/etc</span>
+ </li>
+ <li class="itemize">--localstatedir must be <span
+class="ectt-1000">${EPREFIX}/var/lib</span>
+ </li>
+ <li class="itemize">--host must be the value of the <span
+class="ectt-1000">CHOST </span>environment variable.
+ </li>
+ <li class="itemize">--libdir must be set according to Algorithm&#x00A0;<a
+href="#x1-134002r9">9<!--tex4ht:ref: alg:econf-libdir --></a>.
+ </li>
+ <li class="itemize">--disable-dependency-tracking, if the EAPI is listed in table&#x00A0;<a
+href="#x1-134001r7">12.7<!--tex4ht:ref: tab:econf-options-table --></a> as using it.</li></ul>
+ <div class="table">
+ <!--l. 147--><p class="noindent" ><a
+ id="x1-134001r7"></a></p><hr class="float" /><div class="float"
+>
+ <div class="caption"
+><span class="id">Table&#x00A0;12.7: </span><span
+class="content">Extra <span
+class="ectt-1000">econf </span>arguments for EAPIs</span></div><!--tex4ht:label?: x1-134001r7 -->
+ <div class="tabular">
+ <table id="TBL-25" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-25-1g"><col
+id="TBL-25-1" /><col
+id="TBL-25-2" /><col
+id="TBL-25-3" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-25-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-25-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-25-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">--disable-dependency-tracking</span>?</div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-25-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-25-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-25-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-4-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-25-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-25-5-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-25-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-7-1"
+class="td11"> </td></tr></table></div></div><hr class="endfloat" />
+ </div>
+ <!--l. 162--><p class="noindent" >Note that the <span
+class="ectt-1000">${EPREFIX} </span>component represents the same offset-prefix as described in
+ Table&#x00A0;<a
+href="#x1-117001r1">12.1<!--tex4ht:ref: tab:defined_vars --></a>. It facilitates offset-prefix installations which is supported by EAPIs listed in
+ Table&#x00A0;<span
+class="ecbx-1000">??</span>. When no offset-prefix installation is in effect, <span
+class="ectt-1000">EPREFIX </span>becomes the empty string,
+ making the behaviour of <span
+class="ectt-1000">econf </span>equal for both offset-prefix supporting and agnostic
+ EAPIs.
+ </p><!--l. 168--><p class="noindent" ><span
+class="ectt-1000">econf </span>must be implemented internally&#8212;that is, as a bash function and not an external
+ script. Should any portion of it fail, it must abort the build using <span
+class="ectt-1000">die</span>, unless run using
+ <span
+class="ectt-1000">nonfatal</span>, in which case it must return non-zero exit status.
+</p>
+ <div class="algorithm">
+ <!--l. 173--><p class="noindent" ><a
+ id="x1-134002r9"></a></p><hr class="float" /><div class="float"
+>
+ <div class="caption"
+><span class="id">Algorithm 9: </span><span
+class="content">econf --libdir logic</span></div><!--tex4ht:label?: x1-134002r9 -->
+<div class="algorithmic">
+<a
+ id="x1-134003r99"></a>
+ <span class="ALCitem"><span class="ecrm-0800">&#x2007;1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> let prefix=${EPREFIX}/usr <a
+ id="x1-134004r100"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;the caller specified --prefix=$p&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-134005r101"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> let prefix=$p
+ </span><a
+ id="x1-134006r102"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span><a
+ id="x1-134007r103"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> let libdir= <a
+ id="x1-134008r104"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;the ABI environment variable is set&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-134009r105"></a>
+
+
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> let libvar=LIBDIR_$ABI <a
+ id="x1-134010r106"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;the environment variable named by libvar is set&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-134011r107"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;">&nbsp;</span> let libdir=the value of the variable named by libvar
+ </span><a
+ id="x1-134012r108"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+ </span><a
+ id="x1-134013r109"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span><a
+ id="x1-134014r110"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;libdir is non-empty&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-134015r111"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> pass --libdir=$prefix/$libdir to configure
+ </span><a
+ id="x1-134016r112"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span>
+ </div> </div><hr class="endfloat" />
+ </div>
+ </dd><dt class="description">
+<span
+class="ecbx-1000">emake</span> </dt><dd
+class="description">Calls the <span
+class="ectt-1000">$MAKE </span>program, or GNU make if the <span
+class="ectt-1000">MAKE </span>variable is unset. Any arguments given
+ are passed directly to the make command, as are the user&#8217;s chosen <span
+class="ectt-1000">MAKEOPTS</span>. Arguments
+ given to <span
+class="ectt-1000">emake </span>override user configuration. See also section&#x00A0;<a
+href="#x1-12500012.3.1">12.3.1<!--tex4ht:ref: sec:guaranteed-system-commands --></a>. <span
+class="ectt-1000">emake </span>must be an
+ external program and cannot be a function or alias&#8212;it must be callable from e.g. <span
+class="ectt-1000">xargs</span>.
+ Failure behaviour is EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">einstall</span> </dt><dd
+class="description">A shortcut for the command given in Listing&#x00A0;<a
+href="#x1-134017r2">12.2<!--tex4ht:ref: lst:einstall --></a>. Any arguments given to <span
+class="ectt-1000">einstall </span>are
+ passed verbatim to <span
+class="ectt-1000">emake</span>, as shown. Failure behaviour is EAPI dependent as per
+ section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ <!--l. 202--><p class="noindent" >The variable <span
+class="ectt-1000">ED </span>is defined as in Table&#x00A0;<a
+href="#x1-117001r1">12.1<!--tex4ht:ref: tab:defined_vars --></a> and depends on the use of an offset-prefix.
+ When such offset-prefix is absent, <span
+class="ectt-1000">ED </span>is equivalent to <span
+class="ectt-1000">D</span>. <span
+class="ectt-1000">ED </span>is always available in
+ EAPIs that support offset-prefix installations as listed in Table&#x00A0;<a
+href="#x1-117009r3">12.3<!--tex4ht:ref: tab:offset-env-vars-table --></a>, hence EAPIs
+ lacking offset-prefix support should use <span
+class="ectt-1000">D </span>instead of <span
+class="ectt-1000">ED </span>in the command given in
+ Listing&#x00A0;<a
+href="#x1-134017r2">12.2<!--tex4ht:ref: lst:einstall --></a>.
+ </p><!--l. 207--><p class="noindent" ><a
+ id="x1-134017r2"></a></p><hr class="float" /><div class="float"
+>
+ <div class="caption"
+><span class="id">Listing 12.2: </span><span
+class="content">einstall command</span></div><!--tex4ht:label?: x1-134017r2 -->
+
+
+<div class="verbatim" id="verbatim-13">
+emake&#x00A0;\
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;prefix="${ED}"/usr&#x00A0;\
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;mandir="${ED}"/usr/share/man&#x00A0;\
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;infodir="${ED}"/usr/share/info&#x00A0;\
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;libdir="${ED}"/usr/$(get_libdir)&#x00A0;\
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;"$@"&#x00A0;\
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;install
+&#x00A0;<br />&#x00A0;&#x00A0;</div>
+ <!--l. 217--><p class="nopar" ></p></div><hr class="endfloat" />
+ </dd></dl>
+<!--l. 222--><p class="nopar" >
+</p>
+<h5 class="subsubsectionHead"><a
+ id="x1-13500012.3.3"></a>Installation commands</h5>
+<!--l. 223--><p class="nopar" >These commands are used to install files into the staging area, in cases where the package&#8217;s <span
+class="ectt-1000">make</span>
+<span
+class="ectt-1000">install </span>target cannot be used or does not install all needed files. Except where otherwise stated,
+all filenames created or modified are relative to the staging directory including the offset-prefix <span
+class="ectt-1000">ED</span>
+in offset-prefix aware EAPIs, or just the staging directory <span
+class="ectt-1000">D </span>in offset-prefix agnostic EAPIs. These
+commands must all be external programs and not bash functions or aliases&#8212;that is, they must be
+callable from <span
+class="ectt-1000">xargs</span>. Ebuilds must not run any of these commands once the current phase function
+has returned.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">dobin</span> </dt><dd
+class="description">Installs the given files into <span
+class="ectt-1000">DESTTREE/bin</span>, where <span
+class="ectt-1000">DESTTREE </span>defaults to <span
+class="ectt-1000">/usr</span>. Gives
+ the files mode <span
+class="ectt-1000">0755 </span>and transfers file ownership to the superuser or its equivalent on
+ the system or installation at hand. For instance on Gentoo Linux in a non-offset-prefix
+ installation this ownership is <span
+class="ectt-1000">root:root</span>, while on an offset-prefix aware installation
+ this may be <span
+class="ectt-1000">joe:users</span>. Failure behaviour is EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">doconfd</span> </dt><dd
+class="description">Installs the given config files into <span
+class="ectt-1000">/etc/conf.d/</span>, by default with file mode <span
+class="ectt-1000">0644</span>.
+ This can be overridden by setting <span
+class="ectt-1000">INSOPTIONS </span>with the <span
+class="ectt-1000">insopts </span>function. Failure
+ behaviour is EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">dodir</span> </dt><dd
+class="description">Creates the given directories, by default with file mode <span
+class="ectt-1000">0755</span>. This can be overridden
+ by setting <span
+class="ectt-1000">DIROPTIONS </span>with the <span
+class="ectt-1000">diropts </span>function. Failure behaviour is EAPI
+ dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">dodoc</span> </dt><dd
+class="description"><!--l. 249--><p class="noindent" > </p><!--l. 249--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">O</span><span
+class="small-caps">D</span><span
+class="small-caps">O</span><span
+class="small-caps">C</span></span></span> Installs the given files into a subdirectory under <span
+class="ectt-1000">/usr/share/doc/${PF}/ </span>with file
+ mode <span
+class="ectt-1000">0644</span>. The subdirectory is set by the most recent call to <span
+class="ectt-1000">docinto</span>. If <span
+class="ectt-1000">docinto</span>
+ has not yet been called, instead installs to the directory <span
+class="ectt-1000">/usr/share/doc/${PF}/</span>. For
+ EAPIs listed in table&#x00A0;<a
+href="#x1-135018r8">12.8<!--tex4ht:ref: tab:dodoc-table --></a> as supporting <span
+class="ectt-1000">-r</span>, if the first argument is <span
+class="ectt-1000">-r</span>, any subsequent
+ arguments that are directories are installed recursively to the appropriate location; in
+ any other case, it is an error for a directory to be specified. Failure behaviour is EAPI
+ dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </p></dd><dt class="description">
+<span
+class="ecbx-1000">doenvd</span> </dt><dd
+class="description">Installs the given environment files into <span
+class="ectt-1000">/etc/env.d/</span>, by default with file mode
+ <span
+class="ectt-1000">0644</span>. This can be overridden by setting <span
+class="ectt-1000">INSOPTIONS </span>with the <span
+class="ectt-1000">insopts </span>function. Failure
+ behaviour is EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+
+
+ </dd><dt class="description">
+<span
+class="ecbx-1000">doexe</span> </dt><dd
+class="description">Installs the given files into the directory specified by the most recent <span
+class="ectt-1000">exeinto </span>call,
+ by default with file mode <span
+class="ectt-1000">0755</span>. This can be overridden by setting <span
+class="ectt-1000">EXEOPTIONS </span>with the
+ <span
+class="ectt-1000">exeopts </span>function. If <span
+class="ectt-1000">exeinto </span>has not yet been called, behaviour is undefined. Failure
+ behaviour is EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">dohard</span> </dt><dd
+class="description">Takes two parameters. Creates a hardlink from the second to the first. In EAPIs
+ listed in table&#x00A0;<a
+href="#x1-129001r6">12.6<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned as per section&#x00A0;<a
+href="#x1-12900012.3.3">12.3.3<!--tex4ht:ref: sec:banned-commands --></a>. Failure behaviour
+ is EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">dohtml</span> </dt><dd
+class="description">Installs the given HTML files into a subdirectory under <span
+class="ectt-1000">/usr/share/doc/$PF/</span>. The
+ subdirectory is <span
+class="ectt-1000">html </span>by default, but this can be overridden by setting the <span
+class="ectt-1000">DOCDESTTREE</span>
+ variable with the <span
+class="ectt-1000">docinto </span>function. Files to be installed automatically are determined by
+ extension and the default extensions are <span
+class="ectt-1000">css</span>, <span
+class="ectt-1000">gif</span>, <span
+class="ectt-1000">htm</span>, <span
+class="ectt-1000">html</span>, <span
+class="ectt-1000">jpeg</span>, <span
+class="ectt-1000">jpg</span>, <span
+class="ectt-1000">js </span>and <span
+class="ectt-1000">png</span>. These
+ default extensions can be extended or reduced (see below). The options that can be passed to
+ <span
+class="ectt-1000">dohtml </span>are as follows:
+ <dl class="description"><dt class="description">
+ </dt><dd
+class="description"><span
+class="ectt-1000">-r </span>&#8212; enables recursion into directories.
+ </dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="ectt-1000">-V </span>&#8212; enables verbosity.
+ </dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="ectt-1000">-A </span>&#8212; adds file type extensions to the default list.
+ </dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="ectt-1000">-a </span>&#8212; sets file type extensions to only those specified.
+ </dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="ectt-1000">-f </span>&#8212; list of files that are able to be installed.
+ </dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="ectt-1000">-x </span>&#8212; list of directories that files will not be installed from (only used in conjunction
+ with <span
+class="ectt-1000">-r</span>).
+ </dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="ectt-1000">-p </span>&#8212; sets a document prefix for installed files, not to be confused with the global
+ offset-prefix.</dd></dl>
+ <!--l. 289--><p class="noindent" >Failure behaviour is EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </p><!--l. 291--><p class="noindent" >It is undefined whether a failure shall occur if <span
+class="ectt-1000">-r </span>is not specified and a directory is
+ encountered. Ebuilds must not rely upon any particular behaviour.
+ </p></dd><dt class="description">
+<span
+class="ecbx-1000">doinfo</span> </dt><dd
+class="description">Installs a GNU Info file into the <span
+class="ectt-1000">/usr/share/info </span>area with file mode <span
+class="ectt-1000">0644</span>. Failure
+ behaviour is EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">doinitd</span> </dt><dd
+class="description">Installs the given initscript files into <span
+class="ectt-1000">/etc/init.d</span>, by default with file mode <span
+class="ectt-1000">0755</span>. This
+ can be overridden by setting <span
+class="ectt-1000">EXEOPTIONS </span>with the <span
+class="ectt-1000">exeopts </span>function. Failure behaviour is
+ EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">doins</span> </dt><dd
+class="description"><!--l. 301--><p class="noindent" > </p><!--l. 301--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">O</span><span
+class="small-caps">I</span><span
+class="small-caps">N</span><span
+class="small-caps">S</span></span></span> Takes any number of files as arguments and installs them into <span
+class="ectt-1000">INSDESTTREE</span>, by default
+ with file mode <span
+class="ectt-1000">0644</span>. This can be overridden by setting <span
+class="ectt-1000">INSOPTIONS </span>with the <span
+class="ectt-1000">insopts</span>
+ function. If the first argument is <span
+class="ectt-1000">-r</span>, then operates recursively, descending into any directories
+ given. For EAPIs listed in table&#x00A0;<a
+href="#x1-135019r9">12.9<!--tex4ht:ref: tab:doins-table --></a>, <span
+class="ectt-1000">doins </span>must install symlinks as symlinks; for other
+ EAPIs, behaviour is undefined if any symlink is encountered. Failure behaviour is EAPI
+ dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </p></dd><dt class="description">
+<span
+class="ecbx-1000">dolib</span> </dt><dd
+class="description">For each argument, installs it into the appropriate library directory as determined by
+
+
+ Algorithm&#x00A0;<a
+href="#x1-135001r10">10<!--tex4ht:ref: alg:ebuild-libdir --></a>, by default with file mode <span
+class="ectt-1000">0644</span>. This can be overridden by setting <span
+class="ectt-1000">LIBOPTIONS</span>
+ with the <span
+class="ectt-1000">libopts </span>function. Any symlinks are installed into the same directory as
+ relative links to their original target. Failure behaviour is EAPI dependent as per
+ section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">dolib.so</span> </dt><dd
+class="description">As for dolib except each file is installed with mode <span
+class="ectt-1000">0755</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">dolib.a</span> </dt><dd
+class="description">As for dolib except each file is installed with mode <span
+class="ectt-1000">0644</span>.
+ <div class="algorithm">
+ <!--l. 320--><p class="noindent" ><a
+ id="x1-135001r10"></a></p><hr class="float" /><div class="float"
+>
+ <div class="caption"
+><span class="id">Algorithm 10: </span><span
+class="content">Determining the library directory</span></div><!--tex4ht:label?: x1-135001r10 -->
+<div class="algorithmic">
+<a
+ id="x1-135002r113"></a>
+ <span class="ALCitem"><span class="ecrm-0800">&#x2007;1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;CONF_LIBDIR_OVERRIDE is set in the environment&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-135003r114"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> return CONF_LIBDIR_OVERRIDE
+ </span><a
+ id="x1-135004r115"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span><a
+ id="x1-135005r116"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;CONF_LIBDIR is set in the environment&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-135006r117"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> let LIBDIR_default=CONF_LIBDIR
+ </span><a
+ id="x1-135007r118"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span><span class="else-body">
+<a
+ id="x1-135008r119"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> let LIBDIR_default=&#8220;lib&#8221;
+ </span><a
+ id="x1-135009r120"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span><a
+ id="x1-135010r121"></a>
+ <br /><span class="ALCitem"><span class="ecrm-0800">&#x2007;9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">if</span>&#x00A0;ABI is set in the environment&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-135011r122"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> let abi=ABI
+ </span><a
+ id="x1-135012r123"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span>&#x00A0;<span
+class="ecbx-1000">if</span>&#x00A0;DEFAULT_ABI is set in the environment&#x00A0;<span
+class="ecbx-1000">then</span><span class="if-body">
+<a
+ id="x1-135013r124"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> let abi=DEFAULT_ABI
+ </span><a
+ id="x1-135014r125"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">else</span><span class="else-body">
+<a
+ id="x1-135015r126"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;">&nbsp;</span> let abi=&#8220;default&#8221;
+ </span><a
+ id="x1-135016r127"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> <span
+class="ecbx-1000">end</span>&#x00A0;<span
+class="ecbx-1000">if</span><a
+ id="x1-135017r128"></a>
+<br /><span class="ALCitem"><span
+class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;">&nbsp;</span> return the value of LIBDIR_$abi
+ </div> </div><hr class="endfloat" />
+ </div>
+ </dd><dt class="description">
+<span
+class="ecbx-1000">doman</span> </dt><dd
+class="description">Installs a man page into the appropriate subdirectory of <span
+class="ectt-1000">/usr/share/man </span>depending upon
+ its apparent section suffix (e.g. <span
+class="ectt-1000">foo.1 </span>goes to <span
+class="ectt-1000">/usr/share/man/man1/foo.1 </span>with file mode
+ <span
+class="ectt-1000">0644</span>.
+ <!--l. 345--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">O</span><span
+class="small-caps">M</span><span
+class="small-caps">A</span><span
+class="small-caps">N</span>-<span
+class="small-caps">L</span><span
+class="small-caps">A</span><span
+class="small-caps">N</span><span
+class="small-caps">G</span><span
+class="small-caps">S</span></span></span></p><!--l. 345--><p class="noindent" >In EAPIs listed in table&#x00A0;<a
+href="#x1-135020r10">12.10<!--tex4ht:ref: tab:doman-table --></a> as supporting language codes, a man page with name of the
+ form<span
+class="ectt-1000">foo.lang.1 </span>shall go to <span
+class="ectt-1000">/usr/share/man/lang/man1/foo.1</span>, where <span
+class="ectt-1000">lang </span>refers
+ to a pair of lower-case ASCII letters optionally followed by an underscore and a
+ pair of upper-case ASCII letters. Failure behaviour is EAPI dependent as per
+ section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </p></dd><dt class="description">
+<span
+class="ecbx-1000">domo</span> </dt><dd
+class="description">Installs a <span
+class="ectt-1000">.mo </span>file with file mode <span
+class="ectt-1000">0644 </span>into the appropriate subdirectory of
+
+
+ <span
+class="ectt-1000">DESTTREE/share/locale</span>, generated by taking the basename of the file, removing the
+ <span
+class="ectt-1000">.* </span>suffix, and appending <span
+class="ectt-1000">/LC_MESSAGES</span>. The name of the installed files is the
+ package name with <span
+class="ectt-1000">.mo </span>appended. Failure behaviour is EAPI dependent as per
+ section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">dosbin</span> </dt><dd
+class="description">As <span
+class="ectt-1000">dobin</span>, but installs to <span
+class="ectt-1000">DESTTREE/sbin</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">dosym</span> </dt><dd
+class="description">Creates a symbolic link named as for its second parameter, pointing to the first. If the
+ directory containing the new link does not exist, creates it. Failure behaviour is EAPI
+ dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">fowners</span> </dt><dd
+class="description">Acts as for <span
+class="ectt-1000">chown</span>, but takes paths relative to the image directory. Failure behaviour is
+ EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">fperms</span> </dt><dd
+class="description">Acts as for <span
+class="ectt-1000">chmod</span>, but takes paths relative to the image directory. Failure behaviour is
+ EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">newbin</span> </dt><dd
+class="description">As for <span
+class="ectt-1000">dobin</span>, but takes two parameters. The first is the file to install; the second is the
+ new filename under which it will be installed.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">newconfd</span> </dt><dd
+class="description">As for <span
+class="ectt-1000">doconfd</span>, but takes two parameters as for <span
+class="ectt-1000">newbin</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">newdoc</span> </dt><dd
+class="description">As above, for <span
+class="ectt-1000">dodoc</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">newenvd</span> </dt><dd
+class="description">As above, for <span
+class="ectt-1000">doenvd</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">newexe</span> </dt><dd
+class="description">As above, for <span
+class="ectt-1000">doexe</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">newinitd</span> </dt><dd
+class="description">As above, for <span
+class="ectt-1000">doinitd</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">newins</span> </dt><dd
+class="description">As above, for <span
+class="ectt-1000">doins</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">newlib.a</span> </dt><dd
+class="description">As above, for <span
+class="ectt-1000">dolib.a</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">newlib.so</span> </dt><dd
+class="description">As above, for <span
+class="ectt-1000">dolib.so</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">newman</span> </dt><dd
+class="description">As above, for <span
+class="ectt-1000">doman</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">newsbin</span> </dt><dd
+class="description">As above, for <span
+class="ectt-1000">dosbin</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">keepdir</span> </dt><dd
+class="description">Creates a directory as for <span
+class="ectt-1000">dodir</span>, and an empty file whose name starts with <span
+class="ectt-1000">.keep </span>in that
+ directory to ensure that the directory does not get removed by the package manager
+ should it be empty at any point. Failure behaviour is EAPI dependent as per
+ section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd></dl>
+<div class="table">
+
+
+<!--l. 398--><p class="noindent" ><a
+ id="x1-135018r8"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;12.8: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">dodoc -r</span></span></div><!--tex4ht:label?: x1-135018r8 -->
+<div class="tabular">
+ <table id="TBL-26" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-26-1g"><col
+id="TBL-26-1" /><col
+id="TBL-26-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-26-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-26-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-26-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">dodoc -r</span><span
+class="ecbx-1000">?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-26-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-26-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-26-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-4-2"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-26-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-5-2"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-26-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-26-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<div class="table">
+
+
+<!--l. 413--><p class="noindent" ><a
+ id="x1-135019r9"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;12.9: </span><span
+class="content">EAPIs supporting symlinks for <span
+class="ectt-1000">doins</span></span></div><!--tex4ht:label?: x1-135019r9 -->
+<div class="tabular">
+ <table id="TBL-27" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-27-1g"><col
+id="TBL-27-1" /><col
+id="TBL-27-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-27-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-27-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-27-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">doins </span><span
+class="ecbx-1000">supports symlinks?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-27-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-27-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-27-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-4-2"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-27-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-5-2"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-27-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-27-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<div class="table">
+
+
+<!--l. 428--><p class="noindent" ><a
+ id="x1-135020r10"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;12.10: </span><span
+class="content">EAPIs supporting <span
+class="ectt-1000">doman </span>languages</span></div><!--tex4ht:label?: x1-135020r10 -->
+<div class="tabular">
+ <table id="TBL-28" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-28-1g"><col
+id="TBL-28-1" /><col
+id="TBL-28-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-28-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-28-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-28-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">doman </span><span
+class="ecbx-1000">languages?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-28-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-28-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-28-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-4-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-28-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-5-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-28-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-28-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h5 class="subsubsectionHead"><a
+ id="x1-13600012.3.3"></a>Commands affecting install destinations</h5>
+<!--l. 444--><p class="nopar" >The following commands are used to set the various destination trees, all relative to <span
+class="ectt-1000">${ED} </span>in
+offset-prefix aware EAPIs and relative to <span
+class="ectt-1000">${D} </span>in offset-prefix agnostic EAPIs, used by the above
+installation commands. They must be shell functions or aliases, due to the need to set variables
+read by the above commands. Ebuilds must not run any of these commands once the current phase
+function has returned.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">into</span> </dt><dd
+class="description">Sets the value of <span
+class="ectt-1000">DESTTREE </span>for future invocations of the above utilities. Creates the
+ directory under <span
+class="ectt-1000">${ED} </span>in offset-prefix aware EAPIs or under <span
+class="ectt-1000">${D} </span>in offset-prefix
+ agnostic EAPIs, using <span
+class="ectt-1000">install -d </span>with no additional options, if it does not already
+ exist. Failure behaviour is EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">insinto</span> </dt><dd
+class="description">Sets the value of <span
+class="ectt-1000">INSDESTTREE </span>for future invocations of the above utilities. May
+ create the directory, as specified for <span
+class="ectt-1000">into</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">exeinto</span> </dt><dd
+class="description">Sets the install path for <span
+class="ectt-1000">doexe </span>and <span
+class="ectt-1000">newexe</span>. May create the directory, as specified
+ for <span
+class="ectt-1000">into</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">docinto</span> </dt><dd
+class="description">Sets the install subdirectory for <span
+class="ectt-1000">dodoc </span>et al. May create the directory, as specified
+ for <span
+class="ectt-1000">into</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">insopts</span> </dt><dd
+class="description">Sets the options passed by <span
+class="ectt-1000">doins </span>et al. to the <span
+class="ectt-1000">install </span>command.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">diropts</span> </dt><dd
+class="description">Sets the options passed by <span
+class="ectt-1000">dodir </span>et al. to the <span
+class="ectt-1000">install </span>command.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">exeopts</span> </dt><dd
+class="description">Sets the options passed by <span
+class="ectt-1000">doexe </span>et al. to the <span
+class="ectt-1000">install </span>command.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">libopts</span> </dt><dd
+class="description">Sets the options passed by <span
+class="ectt-1000">dolib </span>et al. to the <span
+class="ectt-1000">install </span>command.
+ </dd></dl>
+<!--l. 478--><p class="nopar" >
+</p>
+<h5 class="subsubsectionHead"><a
+ id="x1-13700012.3.3"></a>Commands affecting install compression</h5>
+ <!--l. 480--><p class="nopar" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span><span
+class="small-caps">T</span><span
+class="small-caps">R</span><span
+class="small-caps">O</span><span
+class="small-caps">L</span><span
+class="small-caps">L</span><span
+class="small-caps">A</span><span
+class="small-caps">B</span><span
+class="small-caps">L</span><span
+class="small-caps">E</span>-<span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">M</span><span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">S</span><span
+class="small-caps">S</span></span></span></p><!--l. 480--><p class="noindent" >In EAPIs listed in table&#x00A0;<a
+href="#x1-137001r11">12.11<!--tex4ht:ref: tab:compression-table --></a> as supporting controllable compression, the package manager may
+optionally compress a subset of the files under the <span
+class="ectt-1000">ED </span>directory in offset-prefix aware EAPIs or the
+<span
+class="ectt-1000">D </span>directory in offset-prefix agnostic EAPIs. To control which directories may or may not be
+compressed, the package manager shall maintain two lists:
+</p><!--l. 487--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">An inclusion list, which initially contains <span
+class="ectt-1000">/usr/share/doc</span>, <span
+class="ectt-1000">/usr/share/info </span>and
+ <span
+class="ectt-1000">/usr/share/man</span>.
+
+
+ </li>
+ <li class="compactitem">An exclusion list, which initially contains <span
+class="ectt-1000">/usr/share/doc/${PF}/html</span>.</li></ul>
+<!--l. 492--><p class="noindent" >The optional compression shall be carried out after <span
+class="ectt-1000">src_install </span>has completed, and before the
+execution of any subsequent phase function. For each item in the inclusion list, pretend it has the
+value of the <span
+class="ectt-1000">ED </span>variable in offset-prefix aware EAPIs or the <span
+class="ectt-1000">D </span>variable in offset-prefix agnostic
+EAPIs prepended, then:
+</p><!--l. 498--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">If it is a directory, act as if every file or directory immediately under this directory
+ were in the inclusion list.
+ </li>
+ <li class="compactitem">If the item is a file, it may be compressed unless it has been excluded as described
+ below.
+ </li>
+ <li class="compactitem">If the item does not exist, it is ignored.</li></ul>
+<!--l. 504--><p class="noindent" >Whether an item is to be excluded is determined as follows: For each item in the exclusion list,
+pretend it has the value of the <span
+class="ectt-1000">ED </span>variable in offset-prefix aware EAPIs or the <span
+class="ectt-1000">D </span>variable in
+offset-prefix agnostic EAPIs prepended, then:
+</p><!--l. 509--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">If it is a directory, act as if every file or directory immediately under this directory
+ were in the exclusion list.
+ </li>
+ <li class="compactitem">If the item is a file, it shall not be compressed.
+ </li>
+ <li class="compactitem">If the item does not exist, it is ignored.</li></ul>
+<!--l. 515--><p class="noindent" >The package manager shall take appropriate steps to ensure that its compression mechanisms
+behave sensibly even if an item is listed in the inclusion list multiple times, if an item is a symlink,
+or if a file is already compressed.
+</p><!--l. 519--><p class="noindent" >The following commands may be used in <span
+class="ectt-1000">src_install </span>to alter these lists. It is an error to call any
+of these functions from any other phase.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">docompress</span> </dt><dd
+class="description">If the first argument is <span
+class="ectt-1000">-x</span>, add each of its subsequent arguments to the
+ exclusion list. Otherwise, add each argument to the inclusion list. Only available in
+ EAPIs listed in table&#x00A0;<a
+href="#x1-137001r11">12.11<!--tex4ht:ref: tab:compression-table --></a> as supporting <span
+class="ectt-1000">docompress</span>.</dd></dl>
+<div class="table">
+
+
+<!--l. 528--><p class="noindent" ><a
+ id="x1-137001r11"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;12.11: </span><span
+class="content">EAPIs supporting controllable compression</span></div><!--tex4ht:label?: x1-137001r11 -->
+<div class="tabular">
+ <table id="TBL-29" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-29-1g"><col
+id="TBL-29-1" /><col
+id="TBL-29-2" /><col
+id="TBL-29-3" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-29-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-29-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-29-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports controllable compression?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-29-1-3"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">docompress</span><span
+class="ecbx-1000">?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-29-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-2"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-3"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-29-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-2"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-3"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-29-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-2"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-3"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-29-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-5-2"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-5-3"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-29-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-6-2"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-6-3"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-29-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h5 class="subsubsectionHead"><a
+ id="x1-13800012.3.3"></a>Use List Functions</h5>
+<!--l. 545--><p class="nopar" >These functions provide behaviour based upon set or unset use flags. Ebuilds must not run any of
+these commands once the current phase function has returned. Ebuilds must not run any of these
+functions in global scope.
+</p><!--l. 549--><p class="noindent" >If any of these functions is called with a flag value that is not included in <span
+class="ectt-1000">IUSE_EFFECTIVE</span>, either
+behaviour is undefined or it is an error as decided by table&#x00A0;<a
+href="#x1-138001r12">12.12<!--tex4ht:ref: tab:use-list-strictness --></a>.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">use</span> </dt><dd
+class="description">Returns shell true (0) if the first argument (a <span
+class="ectt-1000">USE </span>flag name) is enabled, false otherwise.
+ If the flag name is prefixed with <span
+class="ectt-1000">!</span>, returns true if the flag is disabled, and false if it is
+ enabled. It is guaranteed that this command is quiet.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">usev</span> </dt><dd
+class="description">The same as <span
+class="ectt-1000">use</span>, but also prints the flag name if the condition is met.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">useq</span> </dt><dd
+class="description">Deprecated synonym for <span
+class="ectt-1000">use</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">use_with</span> </dt><dd
+class="description">Has one-, two-, and three-argument forms. The first argument is a USE flag
+ name, the second a <span
+class="ectt-1000">configure </span>option name (<span
+class="ectt-1000">${opt}</span>), defaulting to the same as the
+ first argument if not provided, and the third is a string value (<span
+class="ectt-1000">${value}</span>), defaulting to
+ nothing. If the USE flag is set, outputs <span
+class="ectt-1000">--with-${opt}=${value} </span>if the third argument
+ was provided, and <span
+class="ectt-1000">--with-${opt} </span>otherwise. If the flag is not set, then it outputs
+ <span
+class="ectt-1000">--without-${opt}</span>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">use_enable</span> </dt><dd
+class="description">Works the same as <span
+class="ectt-1000">use_with()</span>, but outputs <span
+class="ectt-1000">--enable- </span>or <span
+class="ectt-1000">--disable-</span>
+ instead of <span
+class="ectt-1000">--with- </span>or <span
+class="ectt-1000">--without-</span>.</dd></dl>
+<div class="table">
+
+
+<!--l. 568--><p class="noindent" ><a
+ id="x1-138001r12"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;12.12: </span><span
+class="content">EAPI Behaviour for Use Queries not in IUSE_EFFECTIVE</span></div><!--tex4ht:label?: x1-138001r12 -->
+<div class="tabular">
+ <table id="TBL-30" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-30-1g"><col
+id="TBL-30-1" /><col
+id="TBL-30-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-30-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-30-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-30-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Behaviour</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-30-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-2-2"
+class="td11">Undefined </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-30-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-3-2"
+class="td11">Undefined</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-30-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-4-2"
+class="td11">Undefined </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-30-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-5-2"
+class="td11">Undefined </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-30-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-6-2"
+class="td11">Error </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-30-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h5 class="subsubsectionHead"><a
+ id="x1-13900012.3.3"></a>Text List Functions</h5>
+<!--l. 584--><p class="nopar" >These functions check whitespace-separated lists for a particular value.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">has</span> </dt><dd
+class="description">Returns shell true (0) if the first argument (a word) is found in the list of subsequent
+ arguments, false otherwise. Guaranteed quiet.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">hasv</span> </dt><dd
+class="description">The same as <span
+class="ectt-1000">has</span>, but also prints the first argument if found.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">hasq</span> </dt><dd
+class="description">Deprecated synonym for <span
+class="ectt-1000">has</span>.</dd></dl>
+<!--l. 593--><p class="nopar" >
+</p>
+<h5 class="subsubsectionHead"><a
+ id="x1-14000012.3.3"></a>Misc Commands</h5>
+<!--l. 594--><p class="nopar" >The following commands are always available in the ebuild environment, but don&#8217;t really fit in any
+of the above categories. Ebuilds must not run any of these commands once the current phase
+function has returned.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">dosed</span> </dt><dd
+class="description">Takes any number of arguments, which can be files or <span
+class="ectt-1000">sed </span>expressions. For each
+ argument, if it names, relative to <span
+class="ectt-1000">ED </span>(offset-prefix aware EAPIs) or <span
+class="ectt-1000">D </span>(offset-prefix
+ agnostic EAPIs) a file which exists, then <span
+class="ectt-1000">sed </span>is run with the current expression on that
+ file. Otherwise, the current expression is set to the text of the argument. The initial
+ value of the expression is <span
+class="ectt-1000">s:${ED}::g </span>in offset-prefix aware EAPIs and <span
+class="ectt-1000">s:${D}::g </span>in
+ offset-prefix agnostic EAPIs. In EAPIs listed in table&#x00A0;<a
+href="#x1-129001r6">12.6<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned
+ as per section&#x00A0;<a
+href="#x1-12900012.3.3">12.3.3<!--tex4ht:ref: sec:banned-commands --></a>. Failure behaviour is EAPI dependent as per section&#x00A0;<a
+href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">unpack</span> </dt><dd
+class="description">Unpacks one or more source archives, in order, into the current directory. After
+ unpacking, must ensure that all filesystem objects inside the current working directory
+ (but not the current working directory itself) have permissions <span
+class="ectt-1000">a+r,u+w,go-w </span>and that
+ all directories under the current working directory additionally have permissions <span
+class="ectt-1000">a+x</span>.
+ <!--l. 613--><p class="noindent" >All arguments to <span
+class="ectt-1000">unpack </span>must be either a filename without path, in which case <span
+class="ectt-1000">unpack</span>
+ looks in <span
+class="ectt-1000">DISTDIR </span>for the file, or start with the string <span
+class="ectt-1000">./</span>, in which case <span
+class="ectt-1000">unpack </span>uses the
+ argument as a path relative to the working directory.
+ </p><!--l. 617--><p class="noindent" >Any unrecognised file format shall be skipped silently. If unpacking a supported file
+ format fails, <span
+class="ectt-1000">unpack </span>shall abort the build process.
+ </p><!--l. 620--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">U</span><span
+class="small-caps">N</span><span
+class="small-caps">P</span><span
+class="small-caps">A</span><span
+class="small-caps">C</span><span
+class="small-caps">K</span>-<span
+class="small-caps">E</span><span
+class="small-caps">X</span><span
+class="small-caps">T</span><span
+class="small-caps">E</span><span
+class="small-caps">N</span><span
+class="small-caps">S</span><span
+class="small-caps">I</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span><span
+class="small-caps">S</span></span></span></p><!--l. 620--><p class="noindent" >Must be able to unpack the following file formats, if the relevant binaries are available:
+ </p>
+ <ul class="itemize1">
+ <li class="itemize">tar files (<span
+class="ectt-1000">*.tar</span>). Ebuilds must ensure that GNU tar installed.
+ </li>
+ <li class="itemize">gzip-compressed tar files (<span
+class="ectt-1000">*.tar.gz, *.tgz, *.tar.Z, *.tbz</span>). Ebuilds must
+ ensure that GNU gzip and GNU tar are installed.
+
+
+ </li>
+ <li class="itemize">bzip2-compressed tar files (<span
+class="ectt-1000">*.tar.bz2, *.tbz2, *.tar.bz</span>). Ebuilds must
+ ensure that bzip2 and GNU tar are installed.
+ </li>
+ <li class="itemize">zip files (<span
+class="ectt-1000">*.zip, *.ZIP, *.jar</span>). Ebuilds must ensure that Info-ZIP Unzip is
+ installed.
+ </li>
+ <li class="itemize">gzip files (<span
+class="ectt-1000">*.gz, *.Z, *.z</span>). Ebuilds must ensure that GNU gzip is installed.
+ </li>
+ <li class="itemize">bzip2 files (<span
+class="ectt-1000">*.bz, *.bz2</span>). Ebuilds must ensure that bzip2 is installed.
+ </li>
+ <li class="itemize">7zip files (<span
+class="ectt-1000">*.7z, *.7Z</span>). Ebuilds must ensure that P7ZIP is installed.
+ </li>
+ <li class="itemize">rar files (<span
+class="ectt-1000">*.rar, *.RAR</span>). Ebuilds must ensure that RARLAB&#8217;s unrar is installed.
+ </li>
+ <li class="itemize">LHA archives (<span
+class="ectt-1000">*.LHA, *.LHa, *.lha, *.lhz</span>). Ebuilds must ensure that the lha
+ program is installed.
+ </li>
+ <li class="itemize">ar archives (<span
+class="ectt-1000">*.a</span>). Ebuilds must ensure that GNU binutils is installed.
+ </li>
+ <li class="itemize">deb packages (<span
+class="ectt-1000">*.deb</span>). Ebuilds must ensure that the deb2targz program is installed
+ on those platforms where the GNU binutils ar program is not available and the
+ installed ar program is incompatible with GNU archives. Otherwise, ebuilds must
+ ensure that GNU binutils is installed.
+ </li>
+ <li class="itemize">lzma-compressed files (<span
+class="ectt-1000">*.lzma</span>). Ebuilds must ensure that LZMA Utils is installed.
+ </li>
+ <li class="itemize">lzma-compressed tar files (<span
+class="ectt-1000">*.tar.lzma</span>). Ebuilds must ensure that LZMA Utils
+ and GNU tar are installed.
+ </li>
+ <li class="itemize">xz-compressed files (<span
+class="ectt-1000">*.xz</span>). Ebuilds must ensure that XZ Utils is installed. Only
+ for EAPIs listed in table&#x00A0;<a
+href="#x1-140001r13">12.13<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting xz.
+ </li>
+ <li class="itemize">xz-compressed tar files (<span
+class="ectt-1000">*.tar.xz</span>). Ebuilds must ensure that XZ Utils and GNU
+ tar are installed. Only for EAPIs listed in table&#x00A0;<a
+href="#x1-140001r13">12.13<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting xz.</li></ul>
+ <!--l. 647--><p class="nopar" >It is up to the ebuild to ensure that the relevant external utilities are available, whether by
+ being in the system set or via dependencies.
+</p>
+ <div class="table">
+ <!--l. 650--><p class="noindent" ><a
+ id="x1-140001r13"></a></p><hr class="float" /><div class="float"
+>
+ <div class="caption"
+><span class="id">Table&#x00A0;12.13: </span><span
+class="content"><span
+class="ectt-1000">unpack </span>extensions for EAPIs</span></div><!--tex4ht:label?: x1-140001r13 -->
+ <div class="tabular">
+ <table id="TBL-31" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-31-1g"><col
+id="TBL-31-1" /><col
+id="TBL-31-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-31-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-31-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-31-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ectt-1000">.xz </span><span
+class="ecbx-1000">and </span><span
+class="ectt-1000">.tar.xz</span><span
+class="ecbx-1000">?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-31-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-31-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-31-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-31-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-31-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-31-4-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-31-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-31-5-2"
+class="td11">Yes</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-31-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-31-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-31-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-7-1"
+class="td11"> </td></tr></table></div></div><hr class="endfloat" />
+ </div>
+ </dd><dt class="description">
+<span
+class="ecbx-1000">inherit</span> </dt><dd
+class="description">See section&#x00A0;<a
+href="#x1-11300011.1">11.1<!--tex4ht:ref: sec:inherit --></a>.
+
+
+ </dd><dt class="description">
+<span
+class="ecbx-1000">default</span> </dt><dd
+class="description"><!--l. 668--><p class="noindent" > </p><!--l. 668--><p class="noindent" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">U</span><span
+class="small-caps">L</span><span
+class="small-caps">T</span>-<span
+class="small-caps">F</span><span
+class="small-caps">U</span><span
+class="small-caps">N</span><span
+class="small-caps">C</span></span></span> Calls the <span
+class="ectt-1000">default_ </span>function for the current phase (see section&#x00A0;<a
+href="#x1-11000010.1.17">10.1.17<!--tex4ht:ref: sec:default-phase-funcs --></a>). Must not be
+ called if the <span
+class="ectt-1000">default_ </span>function does not exist for the current phase in the current EAPI.
+ Only available in EAPIs listed in table&#x00A0;<a
+href="#x1-140002r14">12.14<!--tex4ht:ref: tab:default-function-table --></a>.</p></dd></dl>
+<div class="table">
+
+
+<!--l. 674--><p class="noindent" ><a
+ id="x1-140002r14"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;12.14: </span><span
+class="content">EAPIs supporting the <span
+class="ectt-1000">default </span>function</span></div><!--tex4ht:label?: x1-140002r14 -->
+<div class="tabular">
+ <table id="TBL-32" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-32-1g"><col
+id="TBL-32-1" /><col
+id="TBL-32-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-32-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-32-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-32-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Supports </span><span
+class="ectt-1000">default </span><span
+class="ecbx-1000">function?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-32-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-2-2"
+class="td11">No </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-32-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-3-2"
+class="td11">No</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-32-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-4-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-32-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-5-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-32-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-32-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h5 class="subsubsectionHead"><a
+ id="x1-14100012.3.3"></a>Debug Commands</h5>
+<!--l. 690--><p class="nopar" >The following commands are available for debugging. Normally all of these commands should be no
+ops; a package manager may provide a special debug mode where these commands instead do
+something. Ebuilds must not run any of these commands once the current phase function has
+returned.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">debug-print</span> </dt><dd
+class="description">If in a special debug mode, the arguments should be outputted or recorded
+ using some kind of debug logging.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">debug-print-function</span> </dt><dd
+class="description">Calls <span
+class="ectt-1000">debug-print </span>with <span
+class="ectt-1000">$1: entering function </span>as the first
+ argument and the remaining arguments as additional arguments.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">debug-print-section</span> </dt><dd
+class="description">Calls <span
+class="ectt-1000">debug-print </span>with <span
+class="ectt-1000">now in section $*</span>.</dd></dl>
+<!--l. 702--><p class="nopar" >
+</p>
+<h5 class="subsubsectionHead"><a
+ id="x1-14200012.3.3"></a>Reserved Commands and Variables</h5>
+<!--l. 704--><p class="nopar" >Except where documented otherwise, all functions and variables that contain any of the following
+strings (ignoring case) are reserved for package manager use and may not be used or relied upon by
+ebuilds:
+</p><!--l. 709--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem"><span
+class="ectt-1000">abort</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">dyn</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">ebuild</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">hook</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">paludis</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">portage</span>
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">prep</span></li></ul>
+<!--l. 1--><p class="nopar" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">12.4 </span> <a
+ id="x1-14300012.4"></a>The state of the system between functions</h3>
+<!--l. 4--><p class="nopar" >For the sake of this section:
+</p><!--l. 7--><p class="noindent" >
+
+
+ </p><ul>
+ <li class="compactitem">Variancy is any package manager action that modifies either <span
+class="ectt-1000">ROOT </span>or <span
+class="ectt-1000">/ </span>in any way that
+ isn&#8217;t merely a simple addition of something that doesn&#8217;t alter other packages. This
+ includes any non-default call to any <span
+class="ectt-1000">pkg </span>phase function except <span
+class="ectt-1000">pkg_setup</span>, a merge of
+ any package or an unmerge of any package.
+ </li>
+ <li class="compactitem">As an exception, changes to <span
+class="ectt-1000">DISTDIR </span>do not count as variancy.
+ </li>
+ <li class="compactitem">The <span
+class="ectt-1000">pkg_setup </span>function may be assumed not to introduce variancy. Thus, ebuilds
+ must not perform variant actions in this phase.</li></ul>
+<!--l. 17--><p class="noindent" >The following exclusivity and invariancy requirements are mandated:
+</p><!--l. 20--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">No variancy shall be introduced at any point between a package&#8217;s <span
+class="ectt-1000">pkg_setup </span>being
+ started up to the point that that package is merged, except for any variancy introduced
+ by that package.
+ </li>
+ <li class="compactitem">There must be no variancy between a package&#8217;s <span
+class="ectt-1000">pkg_setup </span>and a package&#8217;s
+ <span
+class="ectt-1000">pkg_postinst</span>, except for any variancy introduced by that package.
+ </li>
+ <li class="compactitem">Any non-default <span
+class="ectt-1000">pkg </span>phase function must be run exclusively.
+ </li>
+ <li class="compactitem">Each phase function must be called at most once during the build process for any given
+ package.</li></ul>
+
+
+
+
+
+
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;13</span><br /><a
+ id="x1-14400013"></a>Merging and Unmerging</h2>
+<!--l. 3--><p class="nopar" ><span class="paragraphHead"><a
+ id="x1-14500013"></a><span
+class="ecbx-1000">Note:</span></span>
+In this chapter, <span
+class="ecti-1000">file </span>and <span
+class="ecti-1000">regular file </span>have their Unix meanings.
+</p><!--l. 5--><p class="nopar" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">13.1 </span> <a
+ id="x1-14600013.1"></a>Overview</h3>
+<!--l. 7--><p class="nopar" >The merge process merges the contents of the <span
+class="ectt-1000">D </span>directory onto the filesystem under <span
+class="ectt-1000">ROOT</span>. This is
+not a straight copy; there are various subtleties which must be addressed.
+</p><!--l. 10--><p class="noindent" >The unmerge process removes an installed package&#8217;s files. It is not covered in detail in this
+specification.
+</p><!--l. 13--><p class="nopar" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">13.2 </span> <a
+ id="x1-14700013.2"></a>Directories</h3>
+<!--l. 15--><p class="nopar" >Directories are merged recursively onto the filesystem. The method used to perform the merge is
+not specified, so long as the end result is correct. In particular, merging a directory may alter or
+remove the source directory under <span
+class="ectt-1000">D</span>.
+</p><!--l. 19--><p class="noindent" >Ebuilds must not attempt to merge a directory on top of any existing file that is not either a
+directory or a symlink to a directory.
+</p><!--l. 22--><p class="nopar" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">13.2.1 </span> <a
+ id="x1-14800013.2.1"></a>Permissions</h4>
+<!--l. 24--><p class="nopar" >The owner, group and mode (including set*id and sticky bits) of the directory must be preserved,
+except as follows:
+</p><!--l. 28--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">Any directory owned by the user used to perform the build must become owned by the
+ root user.
+ </li>
+ <li class="compactitem">Any directory whose group is the primary group of the user used to perform the build
+ must have its group be that of the root user.</li></ul>
+<!--l. 33--><p class="noindent" >On SELinux systems, the SELinux context must also be preserved. Other directory attributes,
+including modification time, may be discarded.
+</p><!--l. 36--><p class="nopar" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">13.2.2 </span> <a
+ id="x1-14900013.2.2"></a>Empty Directories</h4>
+
+
+<!--l. 38--><p class="nopar" >Behaviour upon encountering an empty directory is undefined. Ebuilds must not attempt to install
+an empty directory.
+</p><!--l. 41--><p class="nopar" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">13.3 </span> <a
+ id="x1-15000013.3"></a>Regular Files</h3>
+<!--l. 43--><p class="nopar" >Regular files are merged onto the filesystem (but see the notes on configuration file protection,
+below). The method used to perform the merge is not specified, so long as the end result is
+correct. In particular, merging a regular file may alter or remove the source file under
+<span
+class="ectt-1000">D</span>.
+</p><!--l. 47--><p class="noindent" >Ebuilds must not attempt to merge a regular file on top of any existing file that is not either a
+regular file or a symlink to a regular file.
+</p><!--l. 50--><p class="nopar" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">13.3.1 </span> <a
+ id="x1-15100013.3.1"></a>Permissions</h4>
+<!--l. 52--><p class="nopar" >The owner, group and mode (including set*id and sticky bits) of the file must be preserved, except
+as follows:
+</p><!--l. 56--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem">Any file owned by the user used to perform the build must become owned by the root
+ user.
+ </li>
+ <li class="compactitem">Any file whose group is the primary group of the user used to perform the build must
+ have its group be that of the root user.
+ </li>
+ <li class="compactitem">The package manager may reduce read and write permissions on executable files that
+ have a set*id bit set.</li></ul>
+<!--l. 63--><p class="noindent" >On SELinux systems, the SELinux context must also be preserved. Other file attributes may be
+discarded.
+</p><!--l. 66--><p class="nopar" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">13.3.2 </span> <a
+ id="x1-15200013.3.2"></a>File modification times</h4>
+ <!--l. 68--><p class="nopar" >
+ <span class="fbox"><span
+class="eccc-1000"><span
+class="small-caps">M</span><span
+class="small-caps">T</span><span
+class="small-caps">I</span><span
+class="small-caps">M</span><span
+class="small-caps">E</span>-<span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span><span
+class="small-caps">R</span><span
+class="small-caps">V</span><span
+class="small-caps">E</span></span></span></p><!--l. 69--><p class="noindent" >In EAPIs listed in table&#x00A0;<a
+href="#x1-152001r1">13.1<!--tex4ht:ref: tab:mtime-preserve --></a>, the package manager must preserve modification times of
+regular files. This includes files being compressed before merging. Exceptions to this are
+files newly created by the package manager and binary object files being stripped of
+symbols.
+</p><!--l. 75--><p class="noindent" >When preserving, the seconds part of every regular file&#8217;s mtime must be preserved exactly. The
+sub-second part must either be set to zero, or set to the greatest value supported by the
+operating system and filesystem that is not greater than the sub-second part of the original
+time.
+</p><!--l. 81--><p class="noindent" >For any given destination filesystem, the package manager must ensure that for any two preserved
+files <span
+class="cmmi-10">a</span>, <span
+class="cmmi-10">b </span>in that filesystem the relation mtime<span
+class="cmr-10">(</span><span
+class="cmmi-10">a</span><span
+class="cmr-10">) </span><span
+class="cmsy-10">&#x2264;</span> mtime<span
+class="cmr-10">(</span><span
+class="cmmi-10">b</span><span
+class="cmr-10">) </span>still holds, if it held under the original
+image directory.
+
+
+</p><!--l. 86--><p class="noindent" >In other EAPIs, the behaviour with respect to file modification times is undefined.
+</p>
+<div class="table">
+
+
+<!--l. 89--><p class="noindent" ><a
+ id="x1-152001r1"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;13.1: </span><span
+class="content">Preservation of file modification times (mtimes)</span></div><!--tex4ht:label?: x1-152001r1 -->
+<div class="tabular">
+ <table id="TBL-33" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-33-1g"><col
+id="TBL-33-1" /><col
+id="TBL-33-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-33-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-33-1-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-33-1-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">mtimes preserved?</span></div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-33-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-2-1"
+class="td11"><span
+class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-2-2"
+class="td11">Undefined </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-33-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-3-1"
+class="td11"><span
+class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-3-2"
+class="td11">Undefined</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-33-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-4-1"
+class="td11"><span
+class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-4-2"
+class="td11">Undefined </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-33-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-5-1"
+class="td11"><span
+class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-5-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-33-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-6-1"
+class="td11"><span
+class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-6-2"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-33-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-7-1"
+class="td11"> </td></tr></table></div>
+
+
+</div><hr class="endfloat" />
+</div>
+<h4 class="subsectionHead"><span class="titlemark">13.3.3 </span> <a
+ id="x1-15300013.3.3"></a>Configuration File Protection</h4>
+<!--l. 108--><p class="nopar" >The package manager must provide a means to prevent user configuration files from
+being overwritten by any package updates. The profile variables <span
+class="ectt-1000">CONFIG_PROTECT </span>and
+<span
+class="ectt-1000">CONFIG_PROTECT_MASK </span>(section&#x00A0;<a
+href="#x1-590005.3">5.3<!--tex4ht:ref: sec:profile-variables --></a>) control the paths for which this must be enforced.
+</p><!--l. 113--><p class="noindent" >In order to ensure interoperability with configuration update tools, the following scheme must be
+used by all package managers when merging any regular file:
+</p><!--l. 117--><p class="noindent" >
+ </p><dl class="compactenum"><dt class="compactenum">
+ 1. </dt><dd
+class="compactenum">If the directory containing the file to be merged is not listed in <span
+class="ectt-1000">CONFIG_PROTECT</span>, and is
+ not a subdirectory of any such directory, and if the file is not listed in <span
+class="ectt-1000">CONFIG_PROTECT</span>,
+ the file is merged normally.
+ </dd><dt class="compactenum">
+ 2. </dt><dd
+class="compactenum">If the directory containing the file to be merged is listed in <span
+class="ectt-1000">CONFIG_PROTECT_MASK</span>, or
+ is a subdirectory of such a directory, or if the file is listed in <span
+class="ectt-1000">CONFIG_PROTECT_MASK</span>,
+ the file is merged normally.
+ </dd><dt class="compactenum">
+ 3. </dt><dd
+class="compactenum">If no existing file with the intended filename exists, or the existing file has identical
+ content to the one being merged, the file is installed normally.
+ </dd><dt class="compactenum">
+ 4. </dt><dd
+class="compactenum">Otherwise, prepend the filename with <span
+class="ectt-1000">._cfg0000_</span>. If no file with the new name exists,
+ then the file is merged with this name.
+ </dd><dt class="compactenum">
+ 5. </dt><dd
+class="compactenum">Otherwise, increment the number portion (to form <span
+class="ectt-1000">._cfg0001_&#x003C;name&#x003E;</span>) and repeat
+ step 4. Continue this process until a usable filename is found.
+ </dd><dt class="compactenum">
+ 6. </dt><dd
+class="compactenum">If 9999 is reached in this way, behaviour is undefined.</dd></dl>
+<!--l. 132--><p class="nopar" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">13.4 </span> <a
+ id="x1-15400013.4"></a>Symlinks</h3>
+<!--l. 134--><p class="nopar" >Symlinks are merged as symlinks onto the filesystem. The link destination for a merged link shall
+be the same as the link destination for the link under <span
+class="ectt-1000">D</span>, except as noted below. The method used
+to perform the merge is not specified, so long as the end result is correct; in particular, merging a
+symlink may alter or remove the symlink under <span
+class="ectt-1000">D</span>.
+</p><!--l. 139--><p class="noindent" >Ebuilds must not attempt to merge a symlink on top of a directory.
+</p><!--l. 141--><p class="nopar" >
+</p>
+<h4 class="subsectionHead"><span class="titlemark">13.4.1 </span> <a
+ id="x1-15500013.4.1"></a>Rewriting</h4>
+<!--l. 143--><p class="nopar" >Any absolute symlink whose link starts with <span
+class="ectt-1000">D </span>must be rewritten with the leading <span
+class="ectt-1000">D </span>removed. The
+package manager should issue a notice when doing this.
+
+
+</p><!--l. 146--><p class="nopar" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">13.5 </span> <a
+ id="x1-15600013.5"></a>Hard links</h3>
+<!--l. 148--><p class="nopar" >A hard link may be merged either as a single file with links or as multiple independent
+files.
+</p><!--l. 150--><p class="nopar" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">13.6 </span> <a
+ id="x1-15700013.6"></a>Other Files</h3>
+<!--l. 152--><p class="nopar" >Ebuilds must not attempt to install any other type of file (FIFOs, device nodes etc).
+
+
+
+
+
+
+</p>
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;14</span><br /><a
+ id="x1-15800014"></a>Metadata Cache</h2>
+<h3 class="sectionHead"><span class="titlemark">14.1 </span> <a
+ id="x1-15900014.1"></a>Directory Contents</h3>
+<!--l. 6--><p class="nopar" >The <span
+class="ectt-1000">profiles/metadata/cache </span>directory, if it exists, contains directories whose names are the
+same as categories in the repository. Each subdirectory may optionally contain one file per
+package version in that category, named <span
+class="ectt-1000">&#x003C;package&#x003E;-&#x003C;version&#x003E;</span>, in the format described
+below.
+</p><!--l. 10--><p class="noindent" >The metadata cache may be incomplete or non-existent, and may contain additional bogus
+entries.
+</p><!--l. 12--><p class="nopar" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">14.2 </span> <a
+ id="x1-16000014.2"></a>Cache File Format</h3>
+<!--l. 14--><p class="nopar" >Each cache file contains the textual values of various metadata keys, one per line, in the
+following order. Other lines may be present following these; their meanings are not defined
+here.
+</p><!--l. 18--><p class="noindent" >
+ </p><dl class="compactenum"><dt class="compactenum">
+ 1. </dt><dd
+class="compactenum">Build-time dependencies (<span
+class="ectt-1000">DEPEND</span>)
+ </dd><dt class="compactenum">
+ 2. </dt><dd
+class="compactenum">Run-time dependencies (<span
+class="ectt-1000">RDEPEND</span>)
+ </dd><dt class="compactenum">
+ 3. </dt><dd
+class="compactenum">Slot (<span
+class="ectt-1000">SLOT</span>)
+ </dd><dt class="compactenum">
+ 4. </dt><dd
+class="compactenum">Source tarball URIs (<span
+class="ectt-1000">SRC_URI</span>)
+ </dd><dt class="compactenum">
+ 5. </dt><dd
+class="compactenum"><span
+class="ectt-1000">RESTRICT</span>
+ </dd><dt class="compactenum">
+ 6. </dt><dd
+class="compactenum">Package homepage (<span
+class="ectt-1000">HOMEPAGE</span>)
+ </dd><dt class="compactenum">
+ 7. </dt><dd
+class="compactenum">Package license (<span
+class="ectt-1000">LICENSE</span>)
+ </dd><dt class="compactenum">
+ 8. </dt><dd
+class="compactenum">Package description (<span
+class="ectt-1000">DESCRIPTION</span>)
+ </dd><dt class="compactenum">
+ 9. </dt><dd
+class="compactenum">Package keywords (<span
+class="ectt-1000">KEYWORDS</span>)
+ </dd><dt class="compactenum">
+ 10. </dt><dd
+class="compactenum">Inherited eclasses (<span
+class="ectt-1000">INHERITED</span>)
+ </dd><dt class="compactenum">
+ 11. </dt><dd
+class="compactenum">Use flags that this package respects (<span
+class="ectt-1000">IUSE</span>)
+ </dd><dt class="compactenum">
+ 12. </dt><dd
+class="compactenum">No longer used; this line is to be ignored.
+ </dd><dt class="compactenum">
+ 13. </dt><dd
+class="compactenum">Post dependencies (<span
+class="ectt-1000">PDEPEND</span>)
+ </dd><dt class="compactenum">
+ 14. </dt><dd
+class="compactenum">Old-style virtuals provided by this package (<span
+class="ectt-1000">PROVIDE</span>)
+ </dd><dt class="compactenum">
+ 15. </dt><dd
+class="compactenum">The ebuild API version to which this package conforms (<span
+class="ectt-1000">EAPI</span>)
+ </dd><dt class="compactenum">
+ 16. </dt><dd
+class="compactenum">Properties (<span
+class="ectt-1000">PROPERTIES</span>). In some EAPIs, may optionally be blank, regardless of ebuild
+
+
+ metadata; see table&#x00A0;<a
+href="#x1-70001r2">8.2<!--tex4ht:ref: tab:properties-table --></a>.
+ </dd><dt class="compactenum">
+ 17. </dt><dd
+class="compactenum">Defined phases (<span
+class="ectt-1000">DEFINED_PHASES</span>). In some EAPIs, may optionally be blank, regardless
+ of ebuild metadata; see table&#x00A0;<a
+href="#x1-75001r4">8.4<!--tex4ht:ref: tab:defined-phases-table --></a>.
+ </dd><dt class="compactenum">
+ 18. </dt><dd
+class="compactenum">Blank lines to pad the file to 22 lines long</dd></dl>
+<!--l. 40--><p class="noindent" >Future EAPIs may define new variables, remove existing variables, change the line number or
+format used for a particular variable, add or reduce the total length of the file and so on. Any
+future EAPI that uses this cache format will continue to place the EAPI value on line 15 if such a
+concept makes sense for that EAPI, and will place a value that is clearly not a supported EAPI on
+line 15 if it does not.
+
+
+
+
+
+
+</p>
+<h2 class="chapterHead"><span class="titlemark">Chapter&#x00A0;15</span><br /><a
+ id="x1-16100015"></a>Glossary</h2>
+<!--l. 4--><p class="nopar" >This section contains explanations of some of the terms used in this document whose meaning may
+not be immediately obvious.
+ </p><dl class="description"><dt class="description">
+<span
+class="ecbx-1000">qualified package name</span> </dt><dd
+class="description">A package name along with its associated category. For example,
+ <span
+class="ectt-1000">app-editors/vim </span>is a qualified package name.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">old-style virtual</span> </dt><dd
+class="description">An old-style virtual is a psuedo-package which exists if it is listed in an
+ ebuild&#8217;s <span
+class="ectt-1000">PROVIDE </span>variable. See chapter&#x00A0;<a
+href="#x1-620006">6<!--tex4ht:ref: sec:old-virtuals --></a>.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">new-style virtual</span> </dt><dd
+class="description">A new-style virtual is a normal package in the <span
+class="ectt-1000">virtual </span>category which
+ installs no files and uses its dependency requirements to pull in a &#8216;provider&#8217;. This
+ is more flexible than the old-style virtuals described above, and requires no special
+ package manager code.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">stand-alone repository</span> </dt><dd
+class="description">An (ebuild) repository which is intended to function on its own
+ as the only, or primary, repository on a system. Contrast with <span
+class="ecti-1000">slave repository </span>below.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">slave repository, non-stand-alone repository</span> </dt><dd
+class="description">An (ebuild) repository which is not
+ complete enough to function on its own, but needs one or more <span
+class="ecti-1000">master repositories </span>to
+ satisfy dependencies and provide repository-level support files. Known in Portage as
+ an overlay.
+ </dd><dt class="description">
+<span
+class="ecbx-1000">master repository</span> </dt><dd
+class="description">See above.
+ </dd></dl>
+
+
+
+
+
+
+<a
+ id="x1-161001r206"></a>
+<h2 class="appendixHead"><span class="titlemark">Appendix&#x00A0;A</span><br /><a
+ id="x1-162000A"></a>metadata.xml</h2>
+<!--l. 4--><p class="nopar" >The <span
+class="ectt-1000">metadata.xml </span>file is used to contain extra package- or category-level information beyond what
+is stored in ebuild metadata. Its exact format is strictly beyond the scope of this document, and is
+described in the DTD file located at <a
+href="http://www.gentoo.org/dtd/metadata.dtd" class="url" ><span
+class="ectt-1000">http://www.gentoo.org/dtd/metadata.dtd</span></a>.
+
+
+<a
+ id="x1-162001r206"></a>
+</p>
+<h2 class="appendixHead"><span class="titlemark">Appendix&#x00A0;B</span><br /><a
+ id="x1-163000B"></a>Unspecified Items</h2>
+<!--l. 10--><p class="nopar" >The following items are not specified by this document, and must not be relied upon by ebuilds.
+This is, of course, an incomplete list&#8212;it covers only the things that the authors know have been
+abused in the past.
+ </p><ul>
+ <li class="compactitem">The <span
+class="ectt-1000">FEATURES </span>variable. This is Portage specific.
+ </li>
+ <li class="compactitem">Similarly, any <span
+class="ectt-1000">PORTAGE_ </span>variable not explicitly listed.
+ </li>
+ <li class="compactitem">Any Portage configuration file.
+ </li>
+ <li class="compactitem">The VDB (<span
+class="ectt-1000">/var/db/pkg</span>). Ebuilds must not access this or rely upon it existing or being
+ in any particular format.
+ </li>
+ <li class="compactitem">The <span
+class="ectt-1000">portageq </span>command. The <span
+class="ectt-1000">has_version </span>and <span
+class="ectt-1000">best_version </span>commands are
+ available as functions.
+ </li>
+ <li class="compactitem">The <span
+class="ectt-1000">emerge </span>command.
+ </li>
+ <li class="compactitem">Binary packages.
+ </li>
+ <li class="compactitem">The <span
+class="ectt-1000">PORTDIR_OVERLAY </span>variable, and overlay behaviour in general.</li></ul>
+
+
+<a
+ id="x1-163001r206"></a>
+<h2 class="appendixHead"><span class="titlemark">Appendix&#x00A0;C</span><br /><a
+ id="x1-164000C"></a>Historical Curiosities</h2>
+<!--l. 29--><p class="nopar" >The items described in this chapter are included for information only. They were deprecated or
+abandoned long before <span
+class="ectt-1000">EAPI </span>was introduced. Ebuilds must not use these features, and package
+managers should not be changed to support them.
+</p>
+<h3 class="sectionHead"><span class="titlemark">C.1 </span> <a
+ id="x1-165000C.1"></a>If-else use blocks</h3>
+<!--l. 35--><p class="nopar" >Historically, Portage supported if-else use conditionals, as shown by listing&#x00A0;<a
+href="#x1-165001r1">C.1<!--tex4ht:ref: lst:if-else-use-listing --></a>. The block before
+the colon would be taken if the condition was met, and the block after the colon would be taken if
+the condition was not met.
+</p><!--l. 39--><p class="noindent" >This feature was deprecated and removed from the tree long before the introduction of
+<span
+class="ectt-1000">EAPI</span>.
+
+
+</p><!--l. 42--><p class="noindent" ><a
+ id="x1-165001r1"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Listing C.1: </span><span
+class="content">If-else use blocks</span></div><!--tex4ht:label?: x1-165001r1 -->
+<div class="verbatiminput">
+<span
+class="ectt-1000">DEPEND="</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;flag?</span><span
+class="ectt-1000">&#x00A0;(</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;taken/if-true</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;)</span><span
+class="ectt-1000">&#x00A0;:</span><span
+class="ectt-1000">&#x00A0;(</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;taken/if-false</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;)</span>
+<span
+class="ectt-1000">&#x00A0;</span><br /><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;</span><span
+class="ectt-1000">&#x00A0;"</span>
+<span
+class="ectt-1000">&#x00A0;</span><br />
+</div>
+
+
+</div><hr class="endfloat" />
+<h3 class="sectionHead"><span class="titlemark">C.2 </span> <a
+ id="x1-166000C.2"></a>cvs Versions</h3>
+<!--l. 48--><p class="nopar" >Portage has very crude support for CVS packages. The package <span
+class="ectt-1000">foo </span>could contain a file named
+<span
+class="ectt-1000">foo-cvs.1.2.3.ebuild</span>. This version would order <span
+class="ecti-1000">higher </span>than any non-CVS version (including
+<span
+class="ectt-1000">foo-2.ebuild</span>). This feature has not seen real world use and breaks versioned dependencies, so it
+must not be used.
+</p><!--l. 53--><p class="nopar" >
+</p>
+<h3 class="sectionHead"><span class="titlemark">C.3 </span> <a
+ id="x1-167000C.3"></a>use.defaults</h3>
+<!--l. 55--><p class="nopar" >The <span
+class="ectt-1000">use.defaults </span>file in the profile directory was used to implement &#8216;autouse&#8217;&#8212;switching USE
+flags on or off depending upon which packages are installed. It was deprecated long ago and finally
+removed in 2009.
+
+
+
+
+
+
+<a
+ id="x1-167001r206"></a>
+</p>
+<h2 class="appendixHead"><span class="titlemark">Appendix&#x00A0;D</span><br /><a
+ id="x1-168000D"></a>Feature Availability by EAPI</h2>
+<!--l. 3--><p class="nopar" ><span class="paragraphHead"><a
+ id="x1-169000D"></a><span
+class="ecbx-1000">Note:</span></span>
+This chapter is informative and for convenience only. Refer to the main text for specifics.
+
+
+ <a
+ id="x1-169001r1"></a>
+</p><!--l. 7--><div class="longtable"> <table id="TBL-34" class="longtable"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-34-1g"><col
+id="TBL-34-1" /><col
+id="TBL-34-2" /><col
+id="TBL-34-3" /><col
+id="TBL-34-4" /><col
+id="TBL-34-5" /><col
+id="TBL-34-6" /><col
+id="TBL-34-7" /></colgroup>
+<tr
+ style="vertical-align:baseline;" id="TBL-34-1-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-34-1-1"
+class="td11"></td><div class="multicolumn" style="white-space:nowrap; text-align:center;"> <div class="caption"
+><span class="id">Table&#x00A0;D.1: </span><span
+class="content">Features in EAPIs</span></div><!--tex4ht:label?: x1-169001r1 --> </div><a
+ id="x1-169002"></a>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-2-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-34-2-1"
+class="td11"></td><!--cmidrule-->
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-34-3-1"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Feature</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-34-3-2"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">Reference</span></div></td><td colspan="4" style="white-space:nowrap; text-align:center;" id="TBL-34-3-3"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span
+class="ecbx-1000">EAPIs</span></div></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-34-4-"><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-1"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-2"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-3"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;">0</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-4"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;">1</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-5"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;">2</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-6"
+class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;">3</div></td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-7"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">4</div>
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-34-5-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-34-5-1"
+class="td11"></td><!--cmidrule-->
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-6-1"
+class="td11"> </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-34-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-1"
+class="td11"></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-2"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-4"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-5"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-6"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-7"
+class="td11">
+</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-34-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-1"
+class="td11">Profile <span
+class="ectt-1000">IUSE </span>injection </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-2"
+class="td11">profile-iuse-injection&#x00A0;p<a
+href="#x1-11800012.1.1">165<!--tex4ht:ref: feat:profile-iuse-injection --></a></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-5"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-6"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-1"
+class="td11"><span
+class="ectt-1000">IUSE </span>defaults </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-2"
+class="td11">iuse-defaults&#x00A0;p<a
+href="#x1-690008.2">74<!--tex4ht:ref: feat:iuse-defaults --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-4"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-5"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-6"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-1"
+class="td11"><span
+class="ectt-1000">PROPERTIES </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-2"
+class="td11">properties&#x00A0;p<a
+href="#x1-700008.3">78<!--tex4ht:ref: feat:properties --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-3"
+class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-4"
+class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-5"
+class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-6"
+class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-1"
+class="td11"><span
+class="ectt-1000">RDEPEND=DEPEND </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-2"
+class="td11">rdepend-depend&#x00A0;p<a
+href="#x1-720008.3.2">81<!--tex4ht:ref: feat:rdepend-depend --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-3"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-4"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-5"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-6"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-7"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-1"
+class="td11"><span
+class="ectt-1000">DEFINED_PHASES </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-2"
+class="td11">defined-phases&#x00A0;p<a
+href="#x1-740008.4">84<!--tex4ht:ref: feat:defined-phases --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-3"
+class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-4"
+class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-5"
+class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-6"
+class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-1"
+class="td11"><span
+class="ectt-1000">SRC_URI </span>arrows </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-2"
+class="td11">src-uri-arrows&#x00A0;p<a
+href="#x1-910009.2.7">106<!--tex4ht:ref: feat:src-uri-arrows --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-5"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-6"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-1"
+class="td11">Slot dependencies </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-2"
+class="td11">slot-deps&#x00A0;p<a
+href="#x1-860009.2.4">104<!--tex4ht:ref: feat:slot-deps --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-4"
+class="td11">Named </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-5"
+class="td11">Named </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-6"
+class="td11">Named </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-7"
+class="td11">Named and Operator</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-1"
+class="td11">Use dependencies </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-2"
+class="td11">use-deps&#x00A0;p<a
+href="#x1-820009.2.4">95<!--tex4ht:ref: feat:use-deps --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-5"
+class="td11">2-style </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-6"
+class="td11">2-style </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-7"
+class="td11">4-style </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-1"
+class="td11"><span
+class="ectt-1000">! </span>blockers </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-2"
+class="td11">bang-strength&#x00A0;p<a
+href="#x1-850009.2.4">101<!--tex4ht:ref: feat:bang-strength --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-3"
+class="td11">Unspecified</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-4"
+class="td11">Unspecified</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-5"
+class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-6"
+class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-7"
+class="td11">Weak </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-1"
+class="td11"><span
+class="ectt-1000">!! </span>blockers </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-2"
+class="td11">bang-strength&#x00A0;p<a
+href="#x1-850009.2.4">101<!--tex4ht:ref: feat:bang-strength --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-3"
+class="td11">Forbidden </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-4"
+class="td11">Forbidden </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-5"
+class="td11">Strong </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-6"
+class="td11">Strong </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-7"
+class="td11">Strong </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-1"
+class="td11"><span
+class="ectt-1000">S </span>to <span
+class="ectt-1000">WORKDIR </span>fallback </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-2"
+class="td11">s-workdir-fallback&#x00A0;p<a
+href="#x1-9400010.1.1">109<!--tex4ht:ref: feat:s-workdir-fallback --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-3"
+class="td11">Always </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-4"
+class="td11">Always </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-5"
+class="td11">Always </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-6"
+class="td11">Always </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-7"
+class="td11">Conditional </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-1"
+class="td11"><span
+class="ectt-1000">pkg_pretend </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-2"
+class="td11">pkg-pretend&#x00A0;p<a
+href="#x1-9500010.1.2">112<!--tex4ht:ref: feat:pkg-pretend --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-5"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-6"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-1"
+class="td11"><span
+class="ectt-1000">src_prepare </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-2"
+class="td11">src-prepare&#x00A0;p<a
+href="#x1-9800010.1.5">116<!--tex4ht:ref: feat:src-prepare --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-5"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-6"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-1"
+class="td11"><span
+class="ectt-1000">src_configure </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-2"
+class="td11">src-configure&#x00A0;p<a
+href="#x1-9900010.1.6">119<!--tex4ht:ref: feat:src-configure --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-5"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-6"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-1"
+class="td11"><span
+class="ectt-1000">src_compile </span>style </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-2"
+class="td11">src-compile&#x00A0;p<a
+href="#x1-10000010.1.7">123<!--tex4ht:ref: feat:src-compile --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-3"
+class="td11">0 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-4"
+class="td11">1 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-5"
+class="td11">2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-6"
+class="td11">2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-7"
+class="td11">2 </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-1"
+class="td11"><span
+class="ectt-1000">src_install </span>style </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-2"
+class="td11">src-install&#x00A0;p<a
+href="#x1-10200010.1.9">129<!--tex4ht:ref: feat:src-install --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-3"
+class="td11">no-op </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-4"
+class="td11">no-op </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-5"
+class="td11">no-op </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-6"
+class="td11">no-op </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-7"
+class="td11">4 </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-1"
+class="td11"><span
+class="ectt-1000">pkg_info </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-2"
+class="td11">pkg-info&#x00A0;p<a
+href="#x1-10800010.1.15">134<!--tex4ht:ref: feat:pkg-info --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-3"
+class="td11">Installed </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-4"
+class="td11">Installed </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-5"
+class="td11">Installed </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-6"
+class="td11">Installed </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-7"
+class="td11">Both </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-1"
+class="td11"><span
+class="ectt-1000">default_ </span>phase functions</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-2"
+class="td11">default-phase-funcs&#x00A0;p<a
+href="#x1-11000010.1.17">137<!--tex4ht:ref: feat:default-phase-funcs --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-3"
+class="td11">None </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-4"
+class="td11">None </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-5"
+class="td11"><span
+class="ectt-1000">pkg_nofetch</span>,
+<span
+class="ectt-1000">src_unpack</span>,
+<span
+class="ectt-1000">src_prepare</span>,
+<span
+class="ectt-1000">src_configure</span>,
+<span
+class="ectt-1000">src_compile</span>,
+<span
+class="ectt-1000">src_test</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-6"
+class="td11"><span
+class="ectt-1000">pkg_nofetch</span>,
+<span
+class="ectt-1000">src_unpack</span>,
+<span
+class="ectt-1000">src_prepare</span>,
+<span
+class="ectt-1000">src_configure</span>,
+<span
+class="ectt-1000">src_compile</span>,
+<span
+class="ectt-1000">src_test</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-7"
+class="td11"><span
+class="ectt-1000">pkg_nofetch</span>,
+<span
+class="ectt-1000">src_unpack</span>,
+<span
+class="ectt-1000">src_prepare</span>,
+<span
+class="ectt-1000">src_configure</span>,
+<span
+class="ectt-1000">src_compile</span>,
+<span
+class="ectt-1000">src_install</span>,
+<span
+class="ectt-1000">src_test</span> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-1"
+class="td11"><span
+class="ectt-1000">AA </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-2"
+class="td11">aa&#x00A0;p<a
+href="#x1-117001r1">154<!--tex4ht:ref: feat:aa --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-3"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-4"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-5"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-6"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-7"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-1"
+class="td11"><span
+class="ectt-1000">KV </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-2"
+class="td11">kv&#x00A0;p<a
+href="#x1-117001r1">157<!--tex4ht:ref: feat:kv --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-3"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-4"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-5"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-6"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-7"
+class="td11">No </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-40-1"
+class="td11"> </td></tr>
+
+
+
+ <tr
+ style="vertical-align:baseline;" id="TBL-34-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-1"
+class="td11"><span
+class="ectt-1000">REPLACING_VERSIONS </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-2"
+class="td11">replace-version-vars&#x00A0;p<a
+href="#x1-11900012.1.2">166<!--tex4ht:ref: feat:replace-version-vars --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-5"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-6"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-1"
+class="td11"><span
+class="ectt-1000">REPLACED_BY_VERSION </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-2"
+class="td11">replace-version-vars&#x00A0;p<a
+href="#x1-11900012.1.2">166<!--tex4ht:ref: feat:replace-version-vars --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-5"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-6"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-1"
+class="td11"><span
+class="ectt-1000">EPREFIX</span>, <span
+class="ectt-1000">ED</span>, <span
+class="ectt-1000">EROOT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-2"
+class="td11">offset-prefix-vars&#x00A0;p<a
+href="#x1-12000012.1.3">169<!--tex4ht:ref: feat:offset-prefix-vars --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-5"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-6"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-1"
+class="td11">Most utilities die </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-2"
+class="td11">die-on-failure&#x00A0;p<a
+href="#x1-12800012.3.3">173<!--tex4ht:ref: feat:die-on-failure --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-5"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-6"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-1"
+class="td11"><span
+class="ectt-1000">nonfatal </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-2"
+class="td11">nonfatal&#x00A0;p<a
+href="#x1-12800012.3.3">173<!--tex4ht:ref: feat:nonfatal --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-5"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-6"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-1"
+class="td11"><span
+class="ectt-1000">dohard </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-2"
+class="td11">banned-commands&#x00A0;p<a
+href="#x1-12900012.3.3">176<!--tex4ht:ref: feat:banned-commands --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-3"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-4"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-5"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-6"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-7"
+class="td11">Banned </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-1"
+class="td11"><span
+class="ectt-1000">dosed </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-2"
+class="td11">banned-commands&#x00A0;p<a
+href="#x1-12900012.3.3">176<!--tex4ht:ref: feat:banned-commands --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-3"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-4"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-5"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-6"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-7"
+class="td11">Banned </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-1"
+class="td11"><span
+class="ectt-1000">econf </span>arguments </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-2"
+class="td11">econf-options&#x00A0;p<a
+href="#x1-13400012.3.3">180<!--tex4ht:ref: feat:econf-options --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-4"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-5"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-6"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-7"
+class="td11">disable
+dependency
+tracking </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-1"
+class="td11"><span
+class="ectt-1000">dodoc -r </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-2"
+class="td11">dodoc&#x00A0;p<a
+href="#x1-13500012.3.3">183<!--tex4ht:ref: feat:dodoc --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-5"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-6"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-1"
+class="td11"><span
+class="ectt-1000">doins </span>handles symlinks </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-2"
+class="td11">doins&#x00A0;p<a
+href="#x1-13500012.3.3">184<!--tex4ht:ref: feat:doins --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-5"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-6"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-1"
+class="td11"><span
+class="ectt-1000">doman </span>languages </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-2"
+class="td11">doman-langs&#x00A0;p<a
+href="#x1-13500012.3.3">185<!--tex4ht:ref: feat:doman-langs --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-5"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-6"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-1"
+class="td11">Controllable compression</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-2"
+class="td11">controllable-compress&#x00A0;p<a
+href="#x1-13700012.3.3">195<!--tex4ht:ref: feat:controllable-compress --></a></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-5"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-6"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-53-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-1"
+class="td11"><span
+class="ectt-1000">docompress </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-2"
+class="td11">controllable-compress&#x00A0;p<a
+href="#x1-13700012.3.3">195<!--tex4ht:ref: feat:controllable-compress --></a></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-5"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-6"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-54-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-1"
+class="td11"><span
+class="ectt-1000">unpack </span>support for <span
+class="ectt-1000">xz</span>? </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-2"
+class="td11">unpack-extensions&#x00A0;p<a
+href="#x1-14000012.3.3">202<!--tex4ht:ref: feat:unpack-extensions --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-5"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-6"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-55-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-1"
+class="td11"><span
+class="ectt-1000">default </span>function </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-2"
+class="td11">default-func&#x00A0;p<a
+href="#x1-14000012.3.3">204<!--tex4ht:ref: feat:default-func --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-3"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-4"
+class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-5"
+class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-6"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-56-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-1"
+class="td11">File mtimes preserved </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-2"
+class="td11">mtime-preserve&#x00A0;p<a
+href="#x1-15200013.3.2">212<!--tex4ht:ref: feat:mtime-preserve --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-3"
+class="td11">Undefined</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-4"
+class="td11">Undefined</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-5"
+class="td11">Undefined</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-6"
+class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-7"
+class="td11">Yes </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-57-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-57-1"
+class="td11"> </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-34-58-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-58-1"
+class="td11"></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-59-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-59-1"
+class="td11"> </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-34-60-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-60-1"
+class="td11"></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-61-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-61-1"
+class="td11"> </td></tr>
+<tr
+ style="vertical-align:baseline;" id="TBL-34-17-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-34-17-1"
+class="td11"></td><!--cmidrule--></tr><tr
+ style="vertical-align:baseline;" id="TBL-34-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-18-1"
+class="td11"></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-34-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-19-1"
+class="td11"></td></tr>
+</table></div>
+
+
+
+
+
+<a
+ id="x1-169003r206"></a>
+<h2 class="appendixHead"><span class="titlemark">Appendix&#x00A0;E</span><br /><a
+ id="x1-170000E"></a>Differences Between EAPIs</h2>
+<!--l. 156--><p class="nopar" ><span class="paragraphHead"><a
+ id="x1-171000E"></a><span
+class="ecbx-1000">Note:</span></span>
+This chapter is informative and for convenience only. Refer to the main text for specifics.
+</p><!--l. 158--><p class="nopar" >
+</p>
+<h3 class="likesectionHead"><a
+ id="x1-172000E"></a>EAPI 0</h3>
+<!--l. 160--><p class="nopar" >EAPI 0 is the base EAPI.
+</p><!--l. 162--><p class="nopar" >
+</p>
+<h3 class="likesectionHead"><a
+ id="x1-173000E"></a>EAPI 1</h3>
+<!--l. 164--><p class="nopar" >EAPI 1 is EAPI 0 with the following changes:
+</p><!--l. 167--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem"><span
+class="ectt-1000">IUSE </span>defaults, <span
+class="eccc-1000"><span
+class="small-caps">I</span><span
+class="small-caps">U</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">U</span><span
+class="small-caps">L</span><span
+class="small-caps">T</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-690008.2">74<!--tex4ht:ref: feat:iuse-defaults --></a>.
+ </li>
+ <li class="compactitem">Slot dependencies, <span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">L</span><span
+class="small-caps">O</span><span
+class="small-caps">T</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-860009.2.4">104<!--tex4ht:ref: feat:slot-deps --></a>.
+ </li>
+ <li class="compactitem">Different <span
+class="ectt-1000">src_compile </span>implementation, <span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">M</span><span
+class="small-caps">P</span><span
+class="small-caps">I</span><span
+class="small-caps">L</span><span
+class="small-caps">E</span>-1 </span>on page&#x00A0;<a
+href="#x1-10000010.1.7">124<!--tex4ht:ref: feat:src-compile-1 --></a>.</li></ul>
+<!--l. 172--><p class="nopar" >
+</p>
+<h3 class="likesectionHead"><a
+ id="x1-174000E"></a>EAPI 2</h3>
+<!--l. 174--><p class="nopar" >EAPI 2 is EAPI 1 with the following changes:
+</p><!--l. 177--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem"><span
+class="ectt-1000">SRC_URI </span>arrows, <span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">U</span><span
+class="small-caps">R</span><span
+class="small-caps">I</span>-<span
+class="small-caps">A</span><span
+class="small-caps">R</span><span
+class="small-caps">R</span><span
+class="small-caps">O</span><span
+class="small-caps">W</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-910009.2.7">106<!--tex4ht:ref: feat:src-uri-arrows --></a>.
+ </li>
+ <li class="compactitem">Use dependencies, <span
+class="eccc-1000"><span
+class="small-caps">U</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-820009.2.4">95<!--tex4ht:ref: feat:use-deps --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">! </span>and <span
+class="ectt-1000">!! </span>blockers, <span
+class="eccc-1000"><span
+class="small-caps">B</span><span
+class="small-caps">A</span><span
+class="small-caps">N</span><span
+class="small-caps">G</span>-<span
+class="small-caps">S</span><span
+class="small-caps">T</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">N</span><span
+class="small-caps">G</span><span
+class="small-caps">T</span><span
+class="small-caps">H</span> </span>on page&#x00A0;<a
+href="#x1-850009.2.4">101<!--tex4ht:ref: feat:bang-strength --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_prepare</span>, <span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">A</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span> </span>on page&#x00A0;<a
+href="#x1-9800010.1.5">116<!--tex4ht:ref: feat:src-prepare --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">src_configure</span>, <span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span><span
+class="small-caps">F</span><span
+class="small-caps">I</span><span
+class="small-caps">G</span><span
+class="small-caps">U</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span> </span>on page&#x00A0;<a
+href="#x1-9900010.1.6">119<!--tex4ht:ref: feat:src-configure --></a>.
+ </li>
+ <li class="compactitem">Different <span
+class="ectt-1000">src_compile </span>implementation, <span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">M</span><span
+class="small-caps">P</span><span
+class="small-caps">I</span><span
+class="small-caps">L</span><span
+class="small-caps">E</span>-2 </span>on page&#x00A0;<a
+href="#x1-10000010.1.7">125<!--tex4ht:ref: feat:src-compile-2 --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">default_ </span>phase functions for phases <span
+class="ectt-1000">pkg_nofetch</span>, <span
+class="ectt-1000">src_unpack</span>, <span
+class="ectt-1000">src_prepare</span>,
+ <span
+class="ectt-1000">src_configure</span>, <span
+class="ectt-1000">src_compile </span>and <span
+class="ectt-1000">src_test</span>; <span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">U</span><span
+class="small-caps">L</span><span
+class="small-caps">T</span>-<span
+class="small-caps">P</span><span
+class="small-caps">H</span><span
+class="small-caps">A</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span>-<span
+class="small-caps">F</span><span
+class="small-caps">U</span><span
+class="small-caps">N</span><span
+class="small-caps">C</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-11000010.1.17">137<!--tex4ht:ref: feat:default-phase-funcs --></a>.
+
+
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">doman </span>languages support, <span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">O</span><span
+class="small-caps">M</span><span
+class="small-caps">A</span><span
+class="small-caps">N</span>-<span
+class="small-caps">L</span><span
+class="small-caps">A</span><span
+class="small-caps">N</span><span
+class="small-caps">G</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-13500012.3.3">185<!--tex4ht:ref: feat:doman-langs --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">default </span>function, <span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">U</span><span
+class="small-caps">L</span><span
+class="small-caps">T</span>-<span
+class="small-caps">F</span><span
+class="small-caps">U</span><span
+class="small-caps">N</span><span
+class="small-caps">C</span> </span>on page&#x00A0;<a
+href="#x1-14000012.3.3">204<!--tex4ht:ref: feat:default-func --></a>.</li></ul>
+<!--l. 189--><p class="nopar" >
+</p>
+<h3 class="likesectionHead"><a
+ id="x1-175000E"></a>EAPI 3</h3>
+<!--l. 191--><p class="nopar" >EAPI 3 is EAPI 2 with the following changes:
+ </p><ul>
+ <li class="compactitem">Offset-prefix support by definition of <span
+class="ectt-1000">EPREFIX</span>, <span
+class="ectt-1000">ED </span>and <span
+class="ectt-1000">EROOT</span>, <span
+class="eccc-1000"><span
+class="small-caps">O</span><span
+class="small-caps">F</span><span
+class="small-caps">F</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span><span
+class="small-caps">T</span>-<span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">F</span><span
+class="small-caps">I</span><span
+class="small-caps">X</span>-<span
+class="small-caps">V</span><span
+class="small-caps">A</span><span
+class="small-caps">R</span><span
+class="small-caps">S</span></span>
+ on page&#x00A0;<a
+href="#x1-12000012.1.3">169<!--tex4ht:ref: feat:offset-prefix-vars --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">unpack </span>supports <span
+class="ectt-1000">.xz </span>and <span
+class="ectt-1000">.tar.xz</span>, <span
+class="eccc-1000"><span
+class="small-caps">U</span><span
+class="small-caps">N</span><span
+class="small-caps">P</span><span
+class="small-caps">A</span><span
+class="small-caps">C</span><span
+class="small-caps">K</span>-<span
+class="small-caps">E</span><span
+class="small-caps">X</span><span
+class="small-caps">T</span><span
+class="small-caps">E</span><span
+class="small-caps">N</span><span
+class="small-caps">S</span><span
+class="small-caps">I</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-14000012.3.3">202<!--tex4ht:ref: feat:unpack-extensions --></a>.
+ </li>
+ <li class="compactitem">File modification times are preserved, <span
+class="eccc-1000"><span
+class="small-caps">M</span><span
+class="small-caps">T</span><span
+class="small-caps">I</span><span
+class="small-caps">M</span><span
+class="small-caps">E</span>-<span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span><span
+class="small-caps">R</span><span
+class="small-caps">V</span><span
+class="small-caps">E</span> </span>on page&#x00A0;<a
+href="#x1-15200013.3.2">212<!--tex4ht:ref: feat:mtime-preserve --></a>.</li></ul>
+<!--l. 199--><p class="nopar" >
+</p>
+<h3 class="likesectionHead"><a
+ id="x1-176000E"></a>EAPI 4</h3>
+<!--l. 201--><p class="nopar" >EAPI 4 is EAPI 3 with the following changes:
+</p><!--l. 204--><p class="noindent" >
+ </p><ul>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_pretend</span>, <span
+class="eccc-1000"><span
+class="small-caps">P</span><span
+class="small-caps">K</span><span
+class="small-caps">G</span>-<span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">T</span><span
+class="small-caps">E</span><span
+class="small-caps">N</span><span
+class="small-caps">D</span> </span>on page&#x00A0;<a
+href="#x1-9500010.1.2">112<!--tex4ht:ref: feat:pkg-pretend --></a>.
+ </li>
+ <li class="compactitem">Slot operator dependencies, <span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">L</span><span
+class="small-caps">O</span><span
+class="small-caps">T</span>-<span
+class="small-caps">O</span><span
+class="small-caps">P</span><span
+class="small-caps">E</span><span
+class="small-caps">R</span><span
+class="small-caps">A</span><span
+class="small-caps">T</span><span
+class="small-caps">O</span><span
+class="small-caps">R</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-860009.2.4">104<!--tex4ht:ref: feat:slot-operator-deps --></a>.
+ </li>
+ <li class="compactitem">Use dependency defaults, <span
+class="eccc-1000"><span
+class="small-caps">U</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">U</span><span
+class="small-caps">L</span><span
+class="small-caps">T</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-870009.2.4">105<!--tex4ht:ref: feat:use-dep-defaults --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">DEFINED_PHASES </span>support is mandatory, <span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">F</span><span
+class="small-caps">I</span><span
+class="small-caps">N</span><span
+class="small-caps">E</span><span
+class="small-caps">D</span>-<span
+class="small-caps">P</span><span
+class="small-caps">H</span><span
+class="small-caps">A</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-740008.4">84<!--tex4ht:ref: feat:defined-phases --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">PROPERTIES </span>support is mandatory, <span
+class="eccc-1000"><span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">O</span><span
+class="small-caps">P</span><span
+class="small-caps">E</span><span
+class="small-caps">R</span><span
+class="small-caps">T</span><span
+class="small-caps">I</span><span
+class="small-caps">E</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-700008.3">78<!--tex4ht:ref: feat:properties --></a>.
+ </li>
+ <li class="compactitem">Default <span
+class="ectt-1000">src_install </span>no longer a no-op, <span
+class="eccc-1000"><span
+class="small-caps">S</span><span
+class="small-caps">R</span><span
+class="small-caps">C</span>-<span
+class="small-caps">I</span><span
+class="small-caps">N</span><span
+class="small-caps">S</span><span
+class="small-caps">T</span><span
+class="small-caps">A</span><span
+class="small-caps">L</span><span
+class="small-caps">L</span>-4 </span>on page&#x00A0;<a
+href="#x1-10200010.1.9">129<!--tex4ht:ref: feat:src-install-4 --></a>.
+ </li>
+ <li class="compactitem">Controllable compression and <span
+class="ectt-1000">docompress</span>, <span
+class="eccc-1000"><span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span><span
+class="small-caps">T</span><span
+class="small-caps">R</span><span
+class="small-caps">O</span><span
+class="small-caps">L</span><span
+class="small-caps">L</span><span
+class="small-caps">A</span><span
+class="small-caps">B</span><span
+class="small-caps">L</span><span
+class="small-caps">E</span>-<span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">M</span><span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">S</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-13700012.3.3">195<!--tex4ht:ref: feat:controllable-compress --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">dodoc -r </span>support, <span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">O</span><span
+class="small-caps">D</span><span
+class="small-caps">O</span><span
+class="small-caps">C</span> </span>on page&#x00A0;<a
+href="#x1-13500012.3.3">183<!--tex4ht:ref: feat:dodoc --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">doins </span>supports symlinks, <span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">O</span><span
+class="small-caps">I</span><span
+class="small-caps">N</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-13500012.3.3">184<!--tex4ht:ref: feat:doins --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">dohard</span>, <span
+class="ectt-1000">dosed </span>banned, <span
+class="eccc-1000"><span
+class="small-caps">B</span><span
+class="small-caps">A</span><span
+class="small-caps">N</span><span
+class="small-caps">N</span><span
+class="small-caps">E</span><span
+class="small-caps">D</span>-<span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">M</span><span
+class="small-caps">M</span><span
+class="small-caps">A</span><span
+class="small-caps">N</span><span
+class="small-caps">D</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-12900012.3.3">176<!--tex4ht:ref: feat:banned-commands --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">econf </span>adds <span
+class="ectt-1000">--disable-dependency-tracking</span>, <span
+class="eccc-1000"><span
+class="small-caps">E</span><span
+class="small-caps">C</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span><span
+class="small-caps">F</span>-<span
+class="small-caps">O</span><span
+class="small-caps">P</span><span
+class="small-caps">T</span><span
+class="small-caps">I</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span><span
+class="small-caps">S</span> </span>on page&#x00A0;<a
+href="#x1-13400012.3.3">180<!--tex4ht:ref: feat:econf-options --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">pkg_info </span>can run on non-installed packages, <span
+class="eccc-1000"><span
+class="small-caps">P</span><span
+class="small-caps">K</span><span
+class="small-caps">G</span>-<span
+class="small-caps">I</span><span
+class="small-caps">N</span><span
+class="small-caps">F</span><span
+class="small-caps">O</span> </span>on page&#x00A0;<a
+href="#x1-10800010.1.15">134<!--tex4ht:ref: feat:pkg-info --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">USE </span>is calculated differently, <span
+class="eccc-1000"><span
+class="small-caps">P</span><span
+class="small-caps">R</span><span
+class="small-caps">O</span><span
+class="small-caps">F</span><span
+class="small-caps">I</span><span
+class="small-caps">L</span><span
+class="small-caps">E</span>-<span
+class="small-caps">I</span><span
+class="small-caps">U</span><span
+class="small-caps">S</span><span
+class="small-caps">E</span>-<span
+class="small-caps">I</span><span
+class="small-caps">N</span><span
+class="small-caps">J</span><span
+class="small-caps">E</span><span
+class="small-caps">C</span><span
+class="small-caps">T</span><span
+class="small-caps">I</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span> </span>on page&#x00A0;<a
+href="#x1-11800012.1.1">165<!--tex4ht:ref: feat:profile-iuse-injection --></a>.
+
+
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">AA </span>is gone, <span
+class="eccc-1000"><span
+class="small-caps">A</span><span
+class="small-caps">A</span> </span>on page&#x00A0;<a
+href="#x1-117001r1">154<!--tex4ht:ref: feat:aa --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">KV </span>is gone, <span
+class="eccc-1000"><span
+class="small-caps">K</span><span
+class="small-caps">V</span> </span>on page&#x00A0;<a
+href="#x1-117001r1">157<!--tex4ht:ref: feat:kv --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">REPLACING_VERSIONS </span>and <span
+class="ectt-1000">REPLACED_BY_VERSION</span>, <span
+class="eccc-1000"><span
+class="small-caps">R</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">L</span><span
+class="small-caps">A</span><span
+class="small-caps">C</span><span
+class="small-caps">E</span>-<span
+class="small-caps">V</span><span
+class="small-caps">E</span><span
+class="small-caps">R</span><span
+class="small-caps">S</span><span
+class="small-caps">I</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span>-<span
+class="small-caps">V</span><span
+class="small-caps">A</span><span
+class="small-caps">R</span><span
+class="small-caps">S</span> </span>on
+ page&#x00A0;<a
+href="#x1-11900012.1.2">166<!--tex4ht:ref: feat:replace-version-vars --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">S </span>to <span
+class="ectt-1000">WORKDIR </span>fallback restricted, <span
+class="eccc-1000"><span
+class="small-caps">S</span>-<span
+class="small-caps">W</span><span
+class="small-caps">O</span><span
+class="small-caps">R</span><span
+class="small-caps">K</span><span
+class="small-caps">D</span><span
+class="small-caps">I</span><span
+class="small-caps">R</span>-<span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">L</span><span
+class="small-caps">L</span><span
+class="small-caps">B</span><span
+class="small-caps">A</span><span
+class="small-caps">C</span><span
+class="small-caps">K</span> </span>on page&#x00A0;<a
+href="#x1-9400010.1.1">109<!--tex4ht:ref: feat:s-workdir-fallback --></a>.
+ </li>
+ <li class="compactitem"><span
+class="ectt-1000">RDEPEND=DEPEND </span>no longer done, <span
+class="eccc-1000"><span
+class="small-caps">R</span><span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">E</span><span
+class="small-caps">N</span><span
+class="small-caps">D</span>-<span
+class="small-caps">D</span><span
+class="small-caps">E</span><span
+class="small-caps">P</span><span
+class="small-caps">E</span><span
+class="small-caps">N</span><span
+class="small-caps">D</span> </span>on page&#x00A0;<a
+href="#x1-720008.3.2">81<!--tex4ht:ref: feat:rdepend-depend --></a>.
+ </li>
+ <li class="compactitem">Utilities now die on failure, <span
+class="eccc-1000"><span
+class="small-caps">D</span><span
+class="small-caps">I</span><span
+class="small-caps">E</span>-<span
+class="small-caps">O</span><span
+class="small-caps">N</span>-<span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">I</span><span
+class="small-caps">L</span><span
+class="small-caps">U</span><span
+class="small-caps">R</span><span
+class="small-caps">E</span> </span>on page&#x00A0;<a
+href="#x1-12800012.3.3">173<!--tex4ht:ref: feat:die-on-failure --></a>, unless called under
+ <span
+class="ectt-1000">nonfatal</span>, <span
+class="eccc-1000"><span
+class="small-caps">N</span><span
+class="small-caps">O</span><span
+class="small-caps">N</span><span
+class="small-caps">F</span><span
+class="small-caps">A</span><span
+class="small-caps">T</span><span
+class="small-caps">A</span><span
+class="small-caps">L</span> </span>on page&#x00A0;<a
+href="#x1-12800012.3.3">173<!--tex4ht:ref: feat:nonfatal --></a></li></ul>
+
+
+
+
+<h2 class="likechapterHead"><a
+ id="x1-177000E"></a>Bibliography</h2>
+ <div class="thebibliography">
+ <p class="bibitem" ><span class="biblabel">
+ [1]<span class="bibsp">&#x00A0;&#x00A0;&#x00A0;</span></span><a
+ id="XGlep44"></a>Marius Mauch. GLEP 44: Manifest2 format.
+ <a
+href="http://glep.gentoo.org/glep-0044.html" class="url" ><span
+class="ectt-1000">http://glep.gentoo.org/glep-0044.html</span></a>, December 2005.
+</p>
+ </div>
+
+</body></html>
+
+
+
+
diff --git a/3/pms.pdf b/3/pms.pdf
new file mode 100644
index 0000000..b059e62
--- /dev/null
+++ b/3/pms.pdf
@@ -0,0 +1,11965 @@
+%PDF-1.4
+%
+1 0 obj
+<< /S /GoTo /D (chapter.1) >>
+endobj
+4 0 obj
+(Introduction)
+endobj
+5 0 obj
+<< /S /GoTo /D (section.1.1) >>
+endobj
+8 0 obj
+(Aims and Motivation)
+endobj
+9 0 obj
+<< /S /GoTo /D (section.1.2) >>
+endobj
+12 0 obj
+(Rationale)
+endobj
+13 0 obj
+<< /S /GoTo /D (section.1.3) >>
+endobj
+16 0 obj
+(Conventions)
+endobj
+17 0 obj
+<< /S /GoTo /D (chapter.2) >>
+endobj
+20 0 obj
+(EAPIs)
+endobj
+21 0 obj
+<< /S /GoTo /D (section.2.1) >>
+endobj
+24 0 obj
+(Definition)
+endobj
+25 0 obj
+<< /S /GoTo /D (section.2.2) >>
+endobj
+28 0 obj
+(Defined EAPIs)
+endobj
+29 0 obj
+<< /S /GoTo /D (section.2.3) >>
+endobj
+32 0 obj
+(Reserved EAPIs)
+endobj
+33 0 obj
+<< /S /GoTo /D (chapter.3) >>
+endobj
+36 0 obj
+(Names and Versions)
+endobj
+37 0 obj
+<< /S /GoTo /D (section.3.1) >>
+endobj
+40 0 obj
+(Restrictions upon Names)
+endobj
+41 0 obj
+<< /S /GoTo /D (subsection.3.1.1) >>
+endobj
+44 0 obj
+(Category Names)
+endobj
+45 0 obj
+<< /S /GoTo /D (subsection.3.1.2) >>
+endobj
+48 0 obj
+(Package Names)
+endobj
+49 0 obj
+<< /S /GoTo /D (subsection.3.1.3) >>
+endobj
+52 0 obj
+(Slot Names)
+endobj
+53 0 obj
+<< /S /GoTo /D (subsection.3.1.4) >>
+endobj
+56 0 obj
+(USE Flag Names)
+endobj
+57 0 obj
+<< /S /GoTo /D (subsection.3.1.5) >>
+endobj
+60 0 obj
+(Repository Names)
+endobj
+61 0 obj
+<< /S /GoTo /D (subsection.3.1.6) >>
+endobj
+64 0 obj
+(Keyword Names)
+endobj
+65 0 obj
+<< /S /GoTo /D (section.3.2) >>
+endobj
+68 0 obj
+(Version Specifications)
+endobj
+69 0 obj
+<< /S /GoTo /D (section.3.3) >>
+endobj
+72 0 obj
+(Version Comparison)
+endobj
+73 0 obj
+<< /S /GoTo /D (section.3.4) >>
+endobj
+76 0 obj
+(Uniqueness of versions)
+endobj
+77 0 obj
+<< /S /GoTo /D (chapter.4) >>
+endobj
+80 0 obj
+(Tree Layout)
+endobj
+81 0 obj
+<< /S /GoTo /D (section.4.1) >>
+endobj
+84 0 obj
+(Top Level)
+endobj
+85 0 obj
+<< /S /GoTo /D (section.4.2) >>
+endobj
+88 0 obj
+(Category Directories)
+endobj
+89 0 obj
+<< /S /GoTo /D (section.4.3) >>
+endobj
+92 0 obj
+(Package Directories)
+endobj
+93 0 obj
+<< /S /GoTo /D (section.4.4) >>
+endobj
+96 0 obj
+(The Profiles Directory)
+endobj
+97 0 obj
+<< /S /GoTo /D (subsection.4.4.1) >>
+endobj
+100 0 obj
+(The profiles.desc file)
+endobj
+101 0 obj
+<< /S /GoTo /D (subsection.4.4.2) >>
+endobj
+104 0 obj
+(The thirdpartymirrors file)
+endobj
+105 0 obj
+<< /S /GoTo /D (subsection.4.4.3) >>
+endobj
+108 0 obj
+(use.desc and related files)
+endobj
+109 0 obj
+<< /S /GoTo /D (subsection.4.4.4) >>
+endobj
+112 0 obj
+(The updates directory)
+endobj
+113 0 obj
+<< /S /GoTo /D (section.4.5) >>
+endobj
+116 0 obj
+(The Licenses Directory)
+endobj
+117 0 obj
+<< /S /GoTo /D (section.4.6) >>
+endobj
+120 0 obj
+(The Eclass Directory)
+endobj
+121 0 obj
+<< /S /GoTo /D (section.4.7) >>
+endobj
+124 0 obj
+(The Metadata Directory)
+endobj
+125 0 obj
+<< /S /GoTo /D (subsection.4.7.1) >>
+endobj
+128 0 obj
+(The metadata cache)
+endobj
+129 0 obj
+<< /S /GoTo /D (chapter.5) >>
+endobj
+132 0 obj
+(Profiles)
+endobj
+133 0 obj
+<< /S /GoTo /D (section.5.1) >>
+endobj
+136 0 obj
+(General principles)
+endobj
+137 0 obj
+<< /S /GoTo /D (section.5.2) >>
+endobj
+140 0 obj
+(Files that make up a profile)
+endobj
+141 0 obj
+<< /S /GoTo /D (subsection.5.2.1) >>
+endobj
+144 0 obj
+(The parent file)
+endobj
+145 0 obj
+<< /S /GoTo /D (subsection.5.2.2) >>
+endobj
+148 0 obj
+(The eapi file)
+endobj
+149 0 obj
+<< /S /GoTo /D (subsection.5.2.3) >>
+endobj
+152 0 obj
+(deprecated)
+endobj
+153 0 obj
+<< /S /GoTo /D (subsection.5.2.4) >>
+endobj
+156 0 obj
+(make.defaults)
+endobj
+157 0 obj
+<< /S /GoTo /D (subsection.5.2.5) >>
+endobj
+160 0 obj
+(virtuals)
+endobj
+161 0 obj
+<< /S /GoTo /D (subsection.5.2.6) >>
+endobj
+164 0 obj
+(Simple line-based files)
+endobj
+165 0 obj
+<< /S /GoTo /D (subsection.5.2.7) >>
+endobj
+168 0 obj
+(packages)
+endobj
+169 0 obj
+<< /S /GoTo /D (subsection.5.2.8) >>
+endobj
+172 0 obj
+(packages.build)
+endobj
+173 0 obj
+<< /S /GoTo /D (subsection.5.2.9) >>
+endobj
+176 0 obj
+(package.mask)
+endobj
+177 0 obj
+<< /S /GoTo /D (subsection.5.2.10) >>
+endobj
+180 0 obj
+(package.provided)
+endobj
+181 0 obj
+<< /S /GoTo /D (subsection.5.2.11) >>
+endobj
+184 0 obj
+(package.use)
+endobj
+185 0 obj
+<< /S /GoTo /D (subsection.5.2.12) >>
+endobj
+188 0 obj
+(USE masking and forcing)
+endobj
+189 0 obj
+<< /S /GoTo /D (section.5.3) >>
+endobj
+192 0 obj
+(Profile variables)
+endobj
+193 0 obj
+<< /S /GoTo /D (subsection.5.3.1) >>
+endobj
+196 0 obj
+(Incremental Variables)
+endobj
+197 0 obj
+<< /S /GoTo /D (subsection.5.3.2) >>
+endobj
+200 0 obj
+(Specific variables and their meanings)
+endobj
+201 0 obj
+<< /S /GoTo /D (chapter.6) >>
+endobj
+204 0 obj
+(Old-Style Virtual Packages)
+endobj
+205 0 obj
+<< /S /GoTo /D (section.6.1) >>
+endobj
+208 0 obj
+(Dependencies on virtual packages)
+endobj
+209 0 obj
+<< /S /GoTo /D (chapter.7) >>
+endobj
+212 0 obj
+(Ebuild File Format)
+endobj
+213 0 obj
+<< /S /GoTo /D (chapter.8) >>
+endobj
+216 0 obj
+(Ebuild-defined Variables)
+endobj
+217 0 obj
+<< /S /GoTo /D (section.8.1) >>
+endobj
+220 0 obj
+(Metadata invariance)
+endobj
+221 0 obj
+<< /S /GoTo /D (section.8.2) >>
+endobj
+224 0 obj
+(Mandatory Ebuild-defined Variables)
+endobj
+225 0 obj
+<< /S /GoTo /D (section.8.3) >>
+endobj
+228 0 obj
+(Optional Ebuild-defined Variables)
+endobj
+229 0 obj
+<< /S /GoTo /D (subsection.8.3.1) >>
+endobj
+232 0 obj
+(EAPI)
+endobj
+233 0 obj
+<< /S /GoTo /D (subsection.8.3.2) >>
+endobj
+236 0 obj
+(RDEPEND value)
+endobj
+237 0 obj
+<< /S /GoTo /D (section.8.4) >>
+endobj
+240 0 obj
+(Magic Ebuild-defined Variables)
+endobj
+241 0 obj
+<< /S /GoTo /D (chapter.9) >>
+endobj
+244 0 obj
+(Dependencies)
+endobj
+245 0 obj
+<< /S /GoTo /D (section.9.1) >>
+endobj
+248 0 obj
+(Dependency Classes)
+endobj
+249 0 obj
+<< /S /GoTo /D (section.9.2) >>
+endobj
+252 0 obj
+(Dependency Specification Format)
+endobj
+253 0 obj
+<< /S /GoTo /D (subsection.9.2.1) >>
+endobj
+256 0 obj
+(All-of Dependency Specifications)
+endobj
+257 0 obj
+<< /S /GoTo /D (subsection.9.2.2) >>
+endobj
+260 0 obj
+(Use-conditional Dependency Specifications)
+endobj
+261 0 obj
+<< /S /GoTo /D (subsection.9.2.3) >>
+endobj
+264 0 obj
+(Any-of Dependency Specifications)
+endobj
+265 0 obj
+<< /S /GoTo /D (subsection.9.2.4) >>
+endobj
+268 0 obj
+(Package Dependency Specifications)
+endobj
+269 0 obj
+<< /S /GoTo /D (subsection.9.2.5) >>
+endobj
+272 0 obj
+(Restrict)
+endobj
+273 0 obj
+<< /S /GoTo /D (subsection.9.2.6) >>
+endobj
+276 0 obj
+(Properties)
+endobj
+277 0 obj
+<< /S /GoTo /D (subsection.9.2.7) >>
+endobj
+280 0 obj
+(SRC\137URI)
+endobj
+281 0 obj
+<< /S /GoTo /D (chapter.10) >>
+endobj
+284 0 obj
+(Ebuild-defined Functions)
+endobj
+285 0 obj
+<< /S /GoTo /D (section.10.1) >>
+endobj
+288 0 obj
+(List of Functions)
+endobj
+289 0 obj
+<< /S /GoTo /D (subsection.10.1.1) >>
+endobj
+292 0 obj
+(Initial Working Directories)
+endobj
+293 0 obj
+<< /S /GoTo /D (subsection.10.1.2) >>
+endobj
+296 0 obj
+(pkg\137pretend)
+endobj
+297 0 obj
+<< /S /GoTo /D (subsection.10.1.3) >>
+endobj
+300 0 obj
+(pkg\137setup)
+endobj
+301 0 obj
+<< /S /GoTo /D (subsection.10.1.4) >>
+endobj
+304 0 obj
+(src\137unpack)
+endobj
+305 0 obj
+<< /S /GoTo /D (subsection.10.1.5) >>
+endobj
+308 0 obj
+(src\137prepare)
+endobj
+309 0 obj
+<< /S /GoTo /D (subsection.10.1.6) >>
+endobj
+312 0 obj
+(src\137configure)
+endobj
+313 0 obj
+<< /S /GoTo /D (subsection.10.1.7) >>
+endobj
+316 0 obj
+(src\137compile)
+endobj
+317 0 obj
+<< /S /GoTo /D (subsection.10.1.8) >>
+endobj
+320 0 obj
+(src\137test)
+endobj
+321 0 obj
+<< /S /GoTo /D (subsection.10.1.9) >>
+endobj
+324 0 obj
+(src\137install)
+endobj
+325 0 obj
+<< /S /GoTo /D (subsection.10.1.10) >>
+endobj
+328 0 obj
+(pkg\137preinst)
+endobj
+329 0 obj
+<< /S /GoTo /D (subsection.10.1.11) >>
+endobj
+332 0 obj
+(pkg\137postinst)
+endobj
+333 0 obj
+<< /S /GoTo /D (subsection.10.1.12) >>
+endobj
+336 0 obj
+(pkg\137prerm)
+endobj
+337 0 obj
+<< /S /GoTo /D (subsection.10.1.13) >>
+endobj
+340 0 obj
+(pkg\137postrm)
+endobj
+341 0 obj
+<< /S /GoTo /D (subsection.10.1.14) >>
+endobj
+344 0 obj
+(pkg\137config)
+endobj
+345 0 obj
+<< /S /GoTo /D (subsection.10.1.15) >>
+endobj
+348 0 obj
+(pkg\137info)
+endobj
+349 0 obj
+<< /S /GoTo /D (subsection.10.1.16) >>
+endobj
+352 0 obj
+(pkg\137nofetch)
+endobj
+353 0 obj
+<< /S /GoTo /D (subsection.10.1.17) >>
+endobj
+356 0 obj
+(default\137 Phase Functions)
+endobj
+357 0 obj
+<< /S /GoTo /D (section.10.2) >>
+endobj
+360 0 obj
+(Call Order)
+endobj
+361 0 obj
+<< /S /GoTo /D (chapter.11) >>
+endobj
+364 0 obj
+(Eclasses)
+endobj
+365 0 obj
+<< /S /GoTo /D (section.11.1) >>
+endobj
+368 0 obj
+(The inherit command)
+endobj
+369 0 obj
+<< /S /GoTo /D (section.11.2) >>
+endobj
+372 0 obj
+(Eclass-defined Metadata Keys)
+endobj
+373 0 obj
+<< /S /GoTo /D (section.11.3) >>
+endobj
+376 0 obj
+(EXPORT\137FUNCTIONS)
+endobj
+377 0 obj
+<< /S /GoTo /D (chapter.12) >>
+endobj
+380 0 obj
+(The Ebuild Environment)
+endobj
+381 0 obj
+<< /S /GoTo /D (section.12.1) >>
+endobj
+384 0 obj
+(Defined Variables)
+endobj
+385 0 obj
+<< /S /GoTo /D (subsection.12.1.1) >>
+endobj
+388 0 obj
+(USE and IUSE Handling)
+endobj
+389 0 obj
+<< /S /GoTo /D (subsection.12.1.2) >>
+endobj
+392 0 obj
+(REPLACING\137VERSIONS and REPLACED\137BY\137VERSION)
+endobj
+393 0 obj
+<< /S /GoTo /D (subsection.12.1.3) >>
+endobj
+396 0 obj
+(Offset-prefix variables EPREFIX, EROOT and ED)
+endobj
+397 0 obj
+<< /S /GoTo /D (section.12.2) >>
+endobj
+400 0 obj
+(The state of variables between functions)
+endobj
+401 0 obj
+<< /S /GoTo /D (section.12.3) >>
+endobj
+404 0 obj
+(Available commands)
+endobj
+405 0 obj
+<< /S /GoTo /D (subsection.12.3.1) >>
+endobj
+408 0 obj
+(System commands)
+endobj
+409 0 obj
+<< /S /GoTo /D (subsection.12.3.2) >>
+endobj
+412 0 obj
+(Commands provided by package dependencies)
+endobj
+413 0 obj
+<< /S /GoTo /D (subsection.12.3.3) >>
+endobj
+416 0 obj
+(Ebuild-specific Commands)
+endobj
+417 0 obj
+<< /S /GoTo /D (section.12.4) >>
+endobj
+420 0 obj
+(The state of the system between functions)
+endobj
+421 0 obj
+<< /S /GoTo /D (chapter.13) >>
+endobj
+424 0 obj
+(Merging and Unmerging)
+endobj
+425 0 obj
+<< /S /GoTo /D (section.13.1) >>
+endobj
+428 0 obj
+(Overview)
+endobj
+429 0 obj
+<< /S /GoTo /D (section.13.2) >>
+endobj
+432 0 obj
+(Directories)
+endobj
+433 0 obj
+<< /S /GoTo /D (subsection.13.2.1) >>
+endobj
+436 0 obj
+(Permissions)
+endobj
+437 0 obj
+<< /S /GoTo /D (subsection.13.2.2) >>
+endobj
+440 0 obj
+(Empty Directories)
+endobj
+441 0 obj
+<< /S /GoTo /D (section.13.3) >>
+endobj
+444 0 obj
+(Regular Files)
+endobj
+445 0 obj
+<< /S /GoTo /D (subsection.13.3.1) >>
+endobj
+448 0 obj
+(Permissions)
+endobj
+449 0 obj
+<< /S /GoTo /D (subsection.13.3.2) >>
+endobj
+452 0 obj
+(File modification times)
+endobj
+453 0 obj
+<< /S /GoTo /D (subsection.13.3.3) >>
+endobj
+456 0 obj
+(Configuration File Protection)
+endobj
+457 0 obj
+<< /S /GoTo /D (section.13.4) >>
+endobj
+460 0 obj
+(Symlinks)
+endobj
+461 0 obj
+<< /S /GoTo /D (subsection.13.4.1) >>
+endobj
+464 0 obj
+(Rewriting)
+endobj
+465 0 obj
+<< /S /GoTo /D (section.13.5) >>
+endobj
+468 0 obj
+(Hard links)
+endobj
+469 0 obj
+<< /S /GoTo /D (section.13.6) >>
+endobj
+472 0 obj
+(Other Files)
+endobj
+473 0 obj
+<< /S /GoTo /D (chapter.14) >>
+endobj
+476 0 obj
+(Metadata Cache)
+endobj
+477 0 obj
+<< /S /GoTo /D (section.14.1) >>
+endobj
+480 0 obj
+(Directory Contents)
+endobj
+481 0 obj
+<< /S /GoTo /D (section.14.2) >>
+endobj
+484 0 obj
+(Cache File Format)
+endobj
+485 0 obj
+<< /S /GoTo /D (chapter.15) >>
+endobj
+488 0 obj
+(Glossary)
+endobj
+489 0 obj
+<< /S /GoTo /D (appendix.A) >>
+endobj
+492 0 obj
+(metadata.xml)
+endobj
+493 0 obj
+<< /S /GoTo /D (appendix.B) >>
+endobj
+496 0 obj
+(Unspecified Items)
+endobj
+497 0 obj
+<< /S /GoTo /D (appendix.C) >>
+endobj
+500 0 obj
+(Historical Curiosities)
+endobj
+501 0 obj
+<< /S /GoTo /D (section.C.1) >>
+endobj
+504 0 obj
+(If-else use blocks)
+endobj
+505 0 obj
+<< /S /GoTo /D (section.C.2) >>
+endobj
+508 0 obj
+(cvs Versions)
+endobj
+509 0 obj
+<< /S /GoTo /D (section.C.3) >>
+endobj
+512 0 obj
+(use.defaults)
+endobj
+513 0 obj
+<< /S /GoTo /D (appendix.D) >>
+endobj
+516 0 obj
+(Feature Availability by EAPI)
+endobj
+517 0 obj
+<< /S /GoTo /D (appendix.E) >>
+endobj
+520 0 obj
+(Differences Between EAPIs)
+endobj
+521 0 obj
+<< /S /GoTo /D (appendix.F) >>
+endobj
+524 0 obj
+(Desk Reference)
+endobj
+525 0 obj
+<< /S /GoTo /D [526 0 R /Fit ] >>
+endobj
+530 0 obj <<
+/Length 263
+/Filter /FlateDecode
+>>
+stream
+xuMO@9qf]ִQ&MLM=l#Bxy@p?s[7wI
+`%xS!@%3Jx!bfJBQx0>{g'"aXwm\콕1WJ8QIC,sxGW9Dm8Φ[ANbN07\ͷ}Tn8u gaXTopW,Tk*>{ŰJlʮ+Ϯ1mRugc[}7çV-/o?
+endstream
+endobj
+526 0 obj <<
+/Type /Page
+/Contents 530 0 R
+/Resources 529 0 R
+/MediaBox [0 0 595.276 841.89]
+/Parent 534 0 R
+/Annots [ 527 0 R 528 0 R ]
+>> endobj
+527 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [112.791 467.861 199.438 483.802]
+/Subtype/Link/A<</Type/Action/S/URI/URI(mailto:spb@exherbo.org)>>
+>> endobj
+528 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [232.404 467.861 400.117 483.802]
+/Subtype/Link/A<</Type/Action/S/URI/URI(mailto:ciaran.mccreesh@googlemail.com)>>
+>> endobj
+531 0 obj <<
+/D [526 0 R /XYZ 54.865 827.598 null]
+>> endobj
+532 0 obj <<
+/D [526 0 R /XYZ 55.865 793.722 null]
+>> endobj
+529 0 obj <<
+/Font << /F37 533 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+580 0 obj <<
+/Length 1212
+/Filter /FlateDecode
+>>
+stream
+xMs8VH6M:mw2KvZ$b`w~jƸ=lGE
+p༿v}-"~謟J}ΨwѽNBEskhC| 8~#pA
+BVCoeʣ Coc]`)2+2R8 Crʁ1cz6ͬ[`R>?KXzy c
+h5 Y ys SD/'Ř~y8>ΨUw
+{|a+_˭H_V斫|( BxiR[I3/21z.5V_stN)Xi6BƄ}[d*sGrTD]IR_aI
+76c0_` G61陑:=>*eb8gqG"'_'Tf:ሲ%hs/ XSm<Ǻ.? ^P#'[Vwe3ڏr_t+w :ϚuzōMS"U7KF=rtR` Ѣ_ә
+Mjl0PL^8By d6r(/]iNԴ~Lf6Ziߨ</W9
+endstream
+endobj
+579 0 obj <<
+/Type /Page
+/Contents 580 0 R
+/Resources 578 0 R
+/MediaBox [0 0 595.276 841.89]
+/Parent 534 0 R
+/Annots [ 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R ]
+>> endobj
+535 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 635.196 125.872 644.172]
+/A << /S /GoTo /D (chapter.1) >>
+>> endobj
+536 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 623.261 179.461 632.107]
+/A << /S /GoTo /D (section.1.1) >>
+>> endobj
+537 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 611.306 132.906 620.152]
+/A << /S /GoTo /D (section.1.2) >>
+>> endobj
+538 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 599.35 144.543 608.197]
+/A << /S /GoTo /D (section.1.3) >>
+>> endobj
+539 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 577.413 99.481 586.389]
+/A << /S /GoTo /D (chapter.2) >>
+>> endobj
+540 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 565.358 135.128 574.324]
+/A << /S /GoTo /D (section.2.1) >>
+>> endobj
+541 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 553.403 154.764 562.369]
+/A << /S /GoTo /D (section.2.2) >>
+>> endobj
+542 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 541.448 160.144 550.414]
+/A << /S /GoTo /D (section.2.3) >>
+>> endobj
+543 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 519.629 157.703 528.606]
+/A << /S /GoTo /D (chapter.3) >>
+>> endobj
+544 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 505.637 194.893 516.541]
+/A << /S /GoTo /D (section.3.1) >>
+>> endobj
+545 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 493.682 193.13 504.586]
+/A << /S /GoTo /D (subsection.3.1.1) >>
+>> endobj
+546 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 481.727 189.803 492.631]
+/A << /S /GoTo /D (subsection.3.1.2) >>
+>> endobj
+547 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 471.829 172.816 480.675]
+/A << /S /GoTo /D (subsection.3.1.3) >>
+>> endobj
+548 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 457.816 195.78 468.72]
+/A << /S /GoTo /D (subsection.3.1.4) >>
+>> endobj
+549 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 445.861 200.482 456.765]
+/A << /S /GoTo /D (subsection.3.1.5) >>
+>> endobj
+550 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 433.906 193.329 444.81]
+/A << /S /GoTo /D (subsection.3.1.6) >>
+>> endobj
+551 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 421.951 183.545 432.855]
+/A << /S /GoTo /D (section.3.2) >>
+>> endobj
+552 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 409.996 176.353 420.9]
+/A << /S /GoTo /D (section.3.3) >>
+>> endobj
+553 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 398.04 187.541 408.944]
+/A << /S /GoTo /D (section.3.4) >>
+>> endobj
+554 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 376.257 123.491 387.136]
+/A << /S /GoTo /D (chapter.4) >>
+>> endobj
+555 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 364.167 134.749 375.071]
+/A << /S /GoTo /D (section.4.1) >>
+>> endobj
+556 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 352.212 177.847 363.116]
+/A << /S /GoTo /D (section.4.2) >>
+>> endobj
+557 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 340.257 174.519 351.161]
+/A << /S /GoTo /D (section.4.3) >>
+>> endobj
+558 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 328.302 183.815 339.206]
+/A << /S /GoTo /D (section.4.4) >>
+>> endobj
+559 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 316.347 209.887 327.251]
+/A << /S /GoTo /D (subsection.4.4.1) >>
+>> endobj
+560 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 304.392 228.427 315.296]
+/A << /S /GoTo /D (subsection.4.4.2) >>
+>> endobj
+561 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 294.494 225.647 303.34]
+/A << /S /GoTo /D (subsection.4.4.3) >>
+>> endobj
+562 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 280.481 213.473 291.385]
+/A << /S /GoTo /D (subsection.4.4.4) >>
+>> endobj
+563 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 268.526 188.228 279.43]
+/A << /S /GoTo /D (section.4.5) >>
+>> endobj
+564 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 256.571 178.823 267.475]
+/A << /S /GoTo /D (section.4.6) >>
+>> endobj
+565 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 244.616 190.44 255.52]
+/A << /S /GoTo /D (section.4.7) >>
+>> endobj
+566 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 234.598 205.713 243.565]
+/A << /S /GoTo /D (subsection.4.7.1) >>
+>> endobj
+567 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 212.78 103.726 221.756]
+/A << /S /GoTo /D (chapter.5) >>
+>> endobj
+568 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 198.788 168.034 209.692]
+/A << /S /GoTo /D (section.5.1) >>
+>> endobj
+569 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 186.832 203.371 197.736]
+/A << /S /GoTo /D (section.5.2) >>
+>> endobj
+570 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 174.877 184.702 185.781]
+/A << /S /GoTo /D (subsection.5.2.1) >>
+>> endobj
+571 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 162.922 176.403 173.826]
+/A << /S /GoTo /D (subsection.5.2.2) >>
+>> endobj
+572 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 150.967 169.748 161.871]
+/A << /S /GoTo /D (subsection.5.2.3) >>
+>> endobj
+573 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 141.069 182.012 149.916]
+/A << /S /GoTo /D (subsection.5.2.4) >>
+>> endobj
+574 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 129.114 156.487 137.961]
+/A << /S /GoTo /D (subsection.5.2.5) >>
+>> endobj
+575 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 115.101 217.368 126.005]
+/A << /S /GoTo /D (subsection.5.2.6) >>
+>> endobj
+576 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 103.146 163.113 114.05]
+/A << /S /GoTo /D (subsection.5.2.7) >>
+>> endobj
+581 0 obj <<
+/D [579 0 R /XYZ 55.865 793.722 null]
+>> endobj
+578 0 obj <<
+/Font << /F60 582 0 R /F37 533 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+637 0 obj <<
+/Length 1525
+/Filter /FlateDecode
+>>
+stream
+xMs8$c6;ntwXNܙ~Jp6 v,z#0>1;4ƮmN5f PB`ڔ8ln|Mff\
+'E^(aq9}SP0$;rv̫]έW9q)81$S]";:6wvO3s)"N¢
+PMVjNndUj8/^8/3w8O|kHV=OMŅ{,.sa/eJriEVx]>+Uol}",?
+AȽc \j&̾t>e8B'+ޡO) MEƁh53IgTaEm{2}[3O/ڂ36}lĴn&/Ǜod+Fj!PȪ
+C/^iQ:xiwCx^u(=V6$WA,4[C>-GO;]~~|X"Cߚ,_%hQ$&"ݬ{,vurI?lBy?NTPeX{WCҊx<nZHYʭ#]Վv B@.TVQMZdXMywI-vGy
+cJ8
+endstream
+endobj
+636 0 obj <<
+/Type /Page
+/Contents 637 0 R
+/Resources 635 0 R
+/MediaBox [0 0 595.276 841.89]
+/Parent 534 0 R
+/Annots [ 577 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R 588 0 R 589 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R 604 0 R 605 0 R 606 0 R 607 0 R 608 0 R 609 0 R 610 0 R 611 0 R 612 0 R 613 0 R 614 0 R 615 0 R 616 0 R 617 0 R 618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R 628 0 R 629 0 R 630 0 R 631 0 R 632 0 R 633 0 R ]
+>> endobj
+577 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 780.606 185.887 791.51]
+/A << /S /GoTo /D (subsection.5.2.8) >>
+>> endobj
+583 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 768.651 182.759 779.555]
+/A << /S /GoTo /D (subsection.5.2.9) >>
+>> endobj
+584 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 756.695 196.996 767.599]
+/A << /S /GoTo /D (subsection.5.2.10) >>
+>> endobj
+585 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 744.74 175.008 755.644]
+/A << /S /GoTo /D (subsection.5.2.11) >>
+>> endobj
+586 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 732.785 229.812 743.689]
+/A << /S /GoTo /D (subsection.5.2.12) >>
+>> endobj
+587 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 722.887 159.496 731.734]
+/A << /S /GoTo /D (section.5.3) >>
+>> endobj
+588 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 710.932 213.742 719.779]
+/A << /S /GoTo /D (subsection.5.3.1) >>
+>> endobj
+589 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 696.92 275.211 707.824]
+/A << /S /GoTo /D (subsection.5.3.2) >>
+>> endobj
+590 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 675.136 187.012 686.015]
+/A << /S /GoTo /D (chapter.6) >>
+>> endobj
+591 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 663.047 230.559 673.951]
+/A << /S /GoTo /D (section.6.1) >>
+>> endobj
+592 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 643.166 153.279 652.142]
+/A << /S /GoTo /D (chapter.7) >>
+>> endobj
+593 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 621.248 177.259 630.225]
+/A << /S /GoTo /D (chapter.8) >>
+>> endobj
+594 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 609.313 175.127 618.16]
+/A << /S /GoTo /D (section.8.1) >>
+>> endobj
+595 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 595.301 239.505 606.205]
+/A << /S /GoTo /D (section.8.2) >>
+>> endobj
+596 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 583.346 230.658 594.249]
+/A << /S /GoTo /D (section.8.3) >>
+>> endobj
+597 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 573.448 148.737 582.294]
+/A << /S /GoTo /D (subsection.8.3.1) >>
+>> endobj
+598 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 561.373 192.264 570.339]
+/A << /S /GoTo /D (subsection.8.3.2) >>
+>> endobj
+599 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 547.48 221.244 558.384]
+/A << /S /GoTo /D (section.8.4) >>
+>> endobj
+600 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 525.697 129.917 536.576]
+/A << /S /GoTo /D (chapter.9) >>
+>> endobj
+601 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 513.607 176.741 524.511]
+/A << /S /GoTo /D (section.9.1) >>
+>> endobj
+602 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 501.652 230.001 512.556]
+/A << /S /GoTo /D (section.9.2) >>
+>> endobj
+603 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 489.697 261.473 500.601]
+/A << /S /GoTo /D (subsection.9.2.1) >>
+>> endobj
+604 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 477.742 300.765 488.645]
+/A << /S /GoTo /D (subsection.9.2.2) >>
+>> endobj
+605 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 465.786 265.747 476.69]
+/A << /S /GoTo /D (subsection.9.2.3) >>
+>> endobj
+606 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 453.831 270.171 464.735]
+/A << /S /GoTo /D (subsection.9.2.4) >>
+>> endobj
+607 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 443.814 157.593 452.78]
+/A << /S /GoTo /D (subsection.9.2.5) >>
+>> endobj
+608 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 429.921 166.998 440.825]
+/A << /S /GoTo /D (subsection.9.2.6) >>
+>> endobj
+609 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 418.942 167.566 428.87]
+/A << /S /GoTo /D (subsection.9.2.7) >>
+>> endobj
+610 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 398.085 179.291 407.061]
+/A << /S /GoTo /D (chapter.10) >>
+>> endobj
+611 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 386.15 162.804 394.997]
+/A << /S /GoTo /D (section.10.1) >>
+>> endobj
+612 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 372.138 234.265 383.041]
+/A << /S /GoTo /D (subsection.10.1.1) >>
+>> endobj
+613 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 360.182 176.403 371.086]
+/A << /S /GoTo /D (subsection.10.1.2) >>
+>> endobj
+614 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 348.227 167.556 359.131]
+/A << /S /GoTo /D (subsection.10.1.3) >>
+>> endobj
+615 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 336.272 171.97 347.176]
+/A << /S /GoTo /D (subsection.10.1.4) >>
+>> endobj
+616 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 324.317 173.065 335.221]
+/A << /S /GoTo /D (subsection.10.1.5) >>
+>> endobj
+617 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 312.362 180.826 323.266]
+/A << /S /GoTo /D (subsection.10.1.6) >>
+>> endobj
+618 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 300.407 175.297 311.31]
+/A << /S /GoTo /D (subsection.10.1.7) >>
+>> endobj
+619 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 289.428 157.035 299.355]
+/A << /S /GoTo /D (subsection.10.1.8) >>
+>> endobj
+620 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 277.472 167.556 287.4]
+/A << /S /GoTo /D (subsection.10.1.9) >>
+>> endobj
+621 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 264.541 173.643 275.445]
+/A << /S /GoTo /D (subsection.10.1.10) >>
+>> endobj
+622 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 252.586 177.529 263.49]
+/A << /S /GoTo /D (subsection.10.1.11) >>
+>> endobj
+623 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 240.631 170.316 251.535]
+/A << /S /GoTo /D (subsection.10.1.12) >>
+>> endobj
+624 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 228.676 174.201 239.579]
+/A << /S /GoTo /D (subsection.10.1.13) >>
+>> endobj
+625 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 216.72 171.432 227.624]
+/A << /S /GoTo /D (subsection.10.1.14) >>
+>> endobj
+626 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 204.765 162.575 215.669]
+/A << /S /GoTo /D (subsection.10.1.15) >>
+>> endobj
+627 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 192.81 176.403 203.714]
+/A << /S /GoTo /D (subsection.10.1.16) >>
+>> endobj
+628 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 181.702 241.947 191.759]
+/A << /S /GoTo /D (subsection.10.1.17) >>
+>> endobj
+629 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 170.957 137.05 179.804]
+/A << /S /GoTo /D (section.10.2) >>
+>> endobj
+630 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 149.019 106.674 157.995]
+/A << /S /GoTo /D (chapter.11) >>
+>> endobj
+631 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 137.084 180.497 145.931]
+/A << /S /GoTo /D (section.11.1) >>
+>> endobj
+632 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 123.072 214.947 133.975]
+/A << /S /GoTo /D (section.11.2) >>
+>> endobj
+633 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 112.093 193.748 122.02]
+/A << /S /GoTo /D (section.11.3) >>
+>> endobj
+638 0 obj <<
+/D [636 0 R /XYZ 54.865 827.598 null]
+>> endobj
+635 0 obj <<
+/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+678 0 obj <<
+/Length 1426
+/Filter /FlateDecode
+>>
+stream
+xZKsHWpU+eޏ#᰻)SJ08pI‰}f4#asF-{Fuś>-HXk<kQ@HZ€QO[as<
+Z(DJ9(Ӡ
+Qۧ
+𮍀S;i=i
+o,Toik}{mycHIH׆@]+
+JVaZ;&71\c׏&U+Zځ5{
+eƎ\[8U|6)g_{#}i"bEeM$D ;C{GuEx]p|=E>+tHb_ُͣ%gf$fgfx1U '/S[hGt%c{7W&0eזWtk`2WE]]'8AVn8R0:2IlJJ6""zy
+z(ubS޽͎}s2ssY*$gZ?!IM<rKwUcRm]\ LrYYqDkoڠe"pxg>*5_fY{K>"]Vr|KdG'M} ż yn\}wT W3=eww{gfub]<x2a9N#]CB`o0<s.*/I=]s~k1POOT#|NCN گ͊h5'FYZvKE1MG|aLc>MqL[ᠾ 0NRth)fL&7"~FCNƄ7&ʾXQ#^ < 
+endstream
+endobj
+677 0 obj <<
+/Type /Page
+/Contents 678 0 R
+/Resources 676 0 R
+/MediaBox [0 0 595.276 841.89]
+/Parent 534 0 R
+/Annots [ 634 0 R 640 0 R 641 0 R 642 0 R 643 0 R 644 0 R 645 0 R 646 0 R 647 0 R 648 0 R 649 0 R 650 0 R 651 0 R 652 0 R 653 0 R 654 0 R 655 0 R 656 0 R 657 0 R 658 0 R 659 0 R 660 0 R 661 0 R 662 0 R 663 0 R 664 0 R 665 0 R 666 0 R 667 0 R 668 0 R 669 0 R 670 0 R 671 0 R 672 0 R 673 0 R 674 0 R 675 0 R ]
+>> endobj
+634 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 782.643 177.877 791.619]
+/A << /S /GoTo /D (chapter.12) >>
+>> endobj
+640 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 770.708 165.822 779.555]
+/A << /S /GoTo /D (section.12.1) >>
+>> endobj
+641 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 756.695 226.495 767.599]
+/A << /S /GoTo /D (subsection.12.1.1) >>
+>> endobj
+642 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 745.587 367.138 755.644]
+/A << /S /GoTo /D (subsection.12.1.2) >>
+>> endobj
+643 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 732.785 326.539 743.689]
+/A << /S /GoTo /D (subsection.12.1.3) >>
+>> endobj
+644 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 722.887 255.216 731.734]
+/A << /S /GoTo /D (section.12.2) >>
+>> endobj
+645 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 710.932 178.126 719.779]
+/A << /S /GoTo /D (section.12.3) >>
+>> endobj
+646 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 696.92 201.598 707.824]
+/A << /S /GoTo /D (subsection.12.3.1) >>
+>> endobj
+647 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 684.964 313.488 695.868]
+/A << /S /GoTo /D (subsection.12.3.2) >>
+>> endobj
+648 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 673.009 234.604 683.913]
+/A << /S /GoTo /D (subsection.12.3.3) >>
+>> endobj
+649 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 661.054 261.841 671.958]
+/A << /S /GoTo /D (section.12.4) >>
+>> endobj
+650 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 639.271 177.319 650.15]
+/A << /S /GoTo /D (chapter.13) >>
+>> endobj
+651 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 629.238 133.604 638.085]
+/A << /S /GoTo /D (section.13.1) >>
+>> endobj
+652 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 617.283 138.983 626.13]
+/A << /S /GoTo /D (section.13.2) >>
+>> endobj
+653 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 605.328 174.759 614.175]
+/A << /S /GoTo /D (subsection.13.2.1) >>
+>> endobj
+654 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 591.316 199.924 602.22]
+/A << /S /GoTo /D (subsection.13.2.2) >>
+>> endobj
+655 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 579.36 147.979 590.264]
+/A << /S /GoTo /D (section.13.3) >>
+>> endobj
+656 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 569.463 174.759 578.309]
+/A << /S /GoTo /D (subsection.13.3.1) >>
+>> endobj
+657 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 557.507 219.042 566.354]
+/A << /S /GoTo /D (subsection.13.3.2) >>
+>> endobj
+658 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 543.495 243.391 554.399]
+/A << /S /GoTo /D (subsection.13.3.3) >>
+>> endobj
+659 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 531.54 132.368 542.444]
+/A << /S /GoTo /D (section.13.4) >>
+>> endobj
+660 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [92.727 519.585 166.201 530.489]
+/A << /S /GoTo /D (subsection.13.4.1) >>
+>> endobj
+661 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 509.687 136.503 518.533]
+/A << /S /GoTo /D (section.13.5) >>
+>> endobj
+662 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 497.732 139.272 506.578]
+/A << /S /GoTo /D (section.13.6) >>
+>> endobj
+663 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 475.794 141.803 484.77]
+/A << /S /GoTo /D (chapter.14) >>
+>> endobj
+664 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 461.801 170.813 472.705]
+/A << /S /GoTo /D (section.14.1) >>
+>> endobj
+665 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 451.784 168.731 460.75]
+/A << /S /GoTo /D (section.14.2) >>
+>> endobj
+666 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 428.063 109.444 438.942]
+/A << /S /GoTo /D (chapter.15) >>
+>> endobj
+667 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 408.048 130.186 417.024]
+/A << /S /GoTo /D (appendix.A) >>
+>> endobj
+668 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 384.227 147.351 395.106]
+/A << /S /GoTo /D (appendix.B) >>
+>> endobj
+669 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 364.212 162.295 373.188]
+/A << /S /GoTo /D (appendix.C) >>
+>> endobj
+670 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 352.277 164.437 361.124]
+/A << /S /GoTo /D (section.C.1) >>
+>> endobj
+671 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 340.322 144.801 349.168]
+/A << /S /GoTo /D (section.C.2) >>
+>> endobj
+672 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 328.367 141.932 337.213]
+/A << /S /GoTo /D (section.C.3) >>
+>> endobj
+673 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 304.526 195.092 315.405]
+/A << /S /GoTo /D (appendix.D) >>
+>> endobj
+674 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 284.511 188.377 293.487]
+/A << /S /GoTo /D (appendix.E) >>
+>> endobj
+675 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [54.869 262.593 137.738 271.57]
+/A << /S /GoTo /D (appendix.F) >>
+>> endobj
+679 0 obj <<
+/D [677 0 R /XYZ 54.865 827.598 null]
+>> endobj
+676 0 obj <<
+/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+692 0 obj <<
+/Length 456
+/Filter /FlateDecode
+>>
+stream
+xO Wpl P>nVME=Jgȶj^F:SudLt̞~}`pC#_
+ (CRI
+p@h-L.lקr*yۯ.GsGiAaH3 'Hamq'%$wֵf隻n#&<yH OLյ[rkUp ` J!%tK=~
+endstream
+endobj
+691 0 obj <<
+/Type /Page
+/Contents 692 0 R
+/Resources 690 0 R
+/MediaBox [0 0 595.276 841.89]
+/Parent 534 0 R
+/Annots [ 680 0 R 681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R ]
+>> endobj
+680 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 643.121 234.056 654.025]
+/A << /S /GoTo /D (algorithm.1) >>
+>> endobj
+681 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 631.166 296.431 642.07]
+/A << /S /GoTo /D (algorithm.2) >>
+>> endobj
+682 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 619.211 366.697 630.115]
+/A << /S /GoTo /D (algorithm.3) >>
+>> endobj
+683 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 607.256 284.257 618.16]
+/A << /S /GoTo /D (algorithm.4) >>
+>> endobj
+684 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 595.301 243.739 606.205]
+/A << /S /GoTo /D (algorithm.5) >>
+>> endobj
+685 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 583.346 256.332 594.249]
+/A << /S /GoTo /D (algorithm.6) >>
+>> endobj
+686 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 571.39 295.634 582.294]
+/A << /S /GoTo /D (algorithm.7) >>
+>> endobj
+687 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 559.435 172.208 570.339]
+/A << /S /GoTo /D (algorithm.8) >>
+>> endobj
+688 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 547.48 169.977 558.384]
+/A << /S /GoTo /D (algorithm.9) >>
+>> endobj
+689 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 535.525 227.251 546.429]
+/A << /S /GoTo /D (algorithm.10) >>
+>> endobj
+693 0 obj <<
+/D [691 0 R /XYZ 54.865 827.598 null]
+>> endobj
+694 0 obj <<
+/D [691 0 R /XYZ 55.865 793.722 null]
+>> endobj
+690 0 obj <<
+/Font << /F60 582 0 R /F37 533 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+711 0 obj <<
+/Length 323
+/Filter /FlateDecode
+>>
+stream
+xQK0
+endstream
+endobj
+710 0 obj <<
+/Type /Page
+/Contents 711 0 R
+/Resources 709 0 R
+/MediaBox [0 0 595.276 841.89]
+/Parent 534 0 R
+/Annots [ 705 0 R 706 0 R 707 0 R 708 0 R ]
+>> endobj
+705 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 643.121 275.261 654.025]
+/A << /S /GoTo /D (listing.11.1) >>
+>> endobj
+706 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 633.223 242.354 642.07]
+/A << /S /GoTo /D (listing.12.1) >>
+>> endobj
+707 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 621.268 165.284 630.115]
+/A << /S /GoTo /D (listing.12.2) >>
+>> endobj
+708 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 609.313 164.437 618.16]
+/A << /S /GoTo /D (listing.C.1) >>
+>> endobj
+712 0 obj <<
+/D [710 0 R /XYZ 54.865 827.598 null]
+>> endobj
+713 0 obj <<
+/D [710 0 R /XYZ 55.865 793.722 null]
+>> endobj
+709 0 obj <<
+/Font << /F60 582 0 R /F37 533 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+753 0 obj <<
+/Length 1437
+/Filter /FlateDecode
+>>
+stream
+xMwFZ‚|, 91Ÿ]$=>2 X5HI$ο BȦ'ǐ ?s#z]CS @x0$gW@錧Χ/`+%q[{QtD8
+(
+Q(u:  y2A1 L멝<9$c37dP0l'ɳ΂0{?ԑX@ |EŤp;u! &N#HpȜx`"ZVA{a"S=k#r׋A\R V[.PgZz};c E[NzЯ)r!'e_@Ffhu{/ɥ"%Hlxw0~]ت
+`JvW7Ѡ")lAגxsC9Oq<Hp=n4Wڟjr#!cƤ@@1i›z&q^o]\& wn} eC㇨ :AZMA+Q
+uld_JN݌WZܜGM{-9nz,Iϼz?p6䀿 D@
+ Z\y ]\5aFm+JOR)uUB
+endstream
+endobj
+752 0 obj <<
+/Type /Page
+/Contents 753 0 R
+/Resources 751 0 R
+/MediaBox [0 0 595.276 841.89]
+/Parent 756 0 R
+/Annots [ 718 0 R 719 0 R 720 0 R 721 0 R 722 0 R 723 0 R 724 0 R 725 0 R 726 0 R 727 0 R 728 0 R 729 0 R 730 0 R 731 0 R 732 0 R 733 0 R 734 0 R 735 0 R 736 0 R 737 0 R 738 0 R 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R ]
+>> endobj
+718 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 643.121 260.307 654.025]
+/A << /S /GoTo /D (table.5.1) >>
+>> endobj
+719 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 621.204 226.176 632.107]
+/A << /S /GoTo /D (table.8.1) >>
+>> endobj
+720 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 609.248 228.109 620.152]
+/A << /S /GoTo /D (table.8.2) >>
+>> endobj
+721 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 599.231 259.381 608.197]
+/A << /S /GoTo /D (table.8.3) >>
+>> endobj
+722 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 585.338 252.019 596.242]
+/A << /S /GoTo /D (table.8.4) >>
+>> endobj
+723 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 563.42 239.526 574.324]
+/A << /S /GoTo /D (table.9.1) >>
+>> endobj
+724 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 551.465 248.402 562.369]
+/A << /S /GoTo /D (table.9.2) >>
+>> endobj
+725 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 539.51 242.425 550.414]
+/A << /S /GoTo /D (table.9.3) >>
+>> endobj
+726 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 527.555 249.119 538.459]
+/A << /S /GoTo /D (table.9.4) >>
+>> endobj
+727 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 507.639 242.335 516.541]
+/A << /S /GoTo /D (table.10.1) >>
+>> endobj
+728 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 493.682 234.086 504.586]
+/A << /S /GoTo /D (table.10.2) >>
+>> endobj
+729 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 481.727 234.086 492.631]
+/A << /S /GoTo /D (table.10.3) >>
+>> endobj
+730 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 469.771 246.042 480.675]
+/A << /S /GoTo /D (table.10.4) >>
+>> endobj
+731 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 458.439 245.215 468.72]
+/A << /S /GoTo /D (table.10.5) >>
+>> endobj
+732 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 446.708 245.215 456.765]
+/A << /S /GoTo /D (table.10.6) >>
+>> endobj
+733 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 433.906 322.125 444.81]
+/A << /S /GoTo /D (table.10.7) >>
+>> endobj
+734 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 421.951 280.9 432.855]
+/A << /S /GoTo /D (table.10.8) >>
+>> endobj
+735 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 402.09 164.467 410.937]
+/A << /S /GoTo /D (table.12.1) >>
+>> endobj
+736 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 388.078 252.098 398.982]
+/A << /S /GoTo /D (table.12.2) >>
+>> endobj
+737 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 376.123 272.013 387.027]
+/A << /S /GoTo /D (table.12.3) >>
+>> endobj
+738 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 364.167 217.329 375.071]
+/A << /S /GoTo /D (table.12.4) >>
+>> endobj
+739 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 354.27 235.222 363.116]
+/A << /S /GoTo /D (table.12.5) >>
+>> endobj
+740 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 342.314 170.814 351.161]
+/A << /S /GoTo /D (table.12.6) >>
+>> endobj
+741 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 328.302 235.102 339.206]
+/A << /S /GoTo /D (table.12.7) >>
+>> endobj
+742 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 316.347 216.154 327.251]
+/A << /S /GoTo /D (table.12.8) >>
+>> endobj
+743 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 304.392 250.803 315.296]
+/A << /S /GoTo /D (table.12.9) >>
+>> endobj
+744 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 292.436 240.552 303.34]
+/A << /S /GoTo /D (table.12.10) >>
+>> endobj
+745 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 280.481 268.775 291.385]
+/A << /S /GoTo /D (table.12.11) >>
+>> endobj
+746 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 268.9 333.871 279.43]
+/A << /S /GoTo /D (table.12.12) >>
+>> endobj
+747 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 257.194 217.598 267.475]
+/A << /S /GoTo /D (table.12.13) >>
+>> endobj
+748 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 244.616 260.537 255.52]
+/A << /S /GoTo /D (table.12.14) >>
+>> endobj
+749 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 223.072 285.691 233.602]
+/A << /S /GoTo /D (table.13.1) >>
+>> endobj
+750 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [69.813 202.837 167.217 211.684]
+/A << /S /GoTo /D (table.D.1) >>
+>> endobj
+754 0 obj <<
+/D [752 0 R /XYZ 54.865 827.598 null]
+>> endobj
+755 0 obj <<
+/D [752 0 R /XYZ 55.865 793.722 null]
+>> endobj
+751 0 obj <<
+/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+796 0 obj <<
+/Length 2015
+/Filter /FlateDecode
+>>
+stream
+xڵXKs8WHU紎'xgJ<5`
+Ўo7D" я7l݇w(Atp$i& M~w,(2}!>OCWɎ?ODyX6[$9
+7"=r0r@HAuٽ4F?ؼ8vUCעo#tǁP7%uTUqz׃*+"}8}#ʡsˮ5"=t!A6
+݋J4O"x8`jD]#b*GhAvtcN,e56¥3WD*+) u% 2I=QF64EhfxpU[q`avPt @R5wDG{.NYZlW(k/r
+(-D]u׿X6üT)R ͖
+T[֣peWNGф0<w4Dd-ll6Bi`Xq+R!+"k¾zRF#௸~X4fh(TjvR"*pnDgrE7hl9V?v,I;{z昧!Xhz..^<QPsK!|g'>˾\V!n9lR(qkMB׺DiA3wEX Lae9)'LWXiN`U|VȟdZLU ʼ?q{z&#~Ґ52~f2{niX8CH&a
+|{k }js o>r?FE:
+o,& wB
+D}aEa"<#B۳&Ϊ T,v%
+endstream
+endobj
+795 0 obj <<
+/Type /Page
+/Contents 796 0 R
+/Resources 794 0 R
+/MediaBox [0 0 595.276 841.89]
+/Parent 756 0 R
+/Annots [ 790 0 R 791 0 R 792 0 R 793 0 R 801 0 R ]
+>> endobj
+790 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [325.82 752.362 352.719 763.266]
+/A << /S /GoTo /D (subsection.12.3.3) >>
+>> endobj
+791 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [131.886 740.407 143.842 751.31]
+/A << /S /GoTo /D (chapter.10) >>
+>> endobj
+792 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [74.208 728.825 93.635 739.355]
+/A << /S /GoTo /D (section.12.2) >>
+>> endobj
+793 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [205.114 571.565 455.367 581.846]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://creativecommons.org/licenses/by-sa/3.0/)>>
+>> endobj
+801 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[0 1 1]
+/Rect [54.869 560.357 80.772 569.507]
+/Subtype/Link/A<</Type/Action/S/URI/URI(http://creativecommons.org/licenses/by-sa/3.0/)>>
+>> endobj
+797 0 obj <<
+/D [795 0 R /XYZ 54.865 827.598 null]
+>> endobj
+798 0 obj <<
+/D [795 0 R /XYZ 55.865 801.692 null]
+>> endobj
+799 0 obj <<
+/D [795 0 R /XYZ 55.865 674.07 null]
+>> endobj
+802 0 obj <<
+/D [795 0 R /XYZ 55.865 540.471 null]
+>> endobj
+794 0 obj <<
+/Font << /F37 533 0 R /F60 582 0 R /F14 800 0 R /F67 639 0 R /F72 803 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+807 0 obj <<
+/Length 1715
+/Filter /FlateDecode
+>>
+stream
+xڍWM6 6]lbn[q,W7_R;bQdQ#.h]~vIEϻ<"ߕQFE{nv_Fi$xo* ˪qU;H?UqY" KECEQ𤮖v}CzT8
+Gcx,TaeVoǠtH=AiԞ{F$OhY8ksn=驕}9hFm^ov1R4apx8yNǹɮ[۩r#DhQU OhW'VwwAwꖷkyv1MnHtᆴeɅepay/^n0O?.=Z[st Gn3̥r䈳<p(8l648;8bYF
+$+vB;4v/4C-KJ'nfW;+0|yuA 4?mnNZFUuJ0|5 9<(@ik p̈́\B?h w`'Y"XC4;BQ\&Υu"|cXD'IFtD"*#-W
+ :հng
++l"{iDTOS{D*G $&#S ZK4v;R8ALӇ4|V`䇦;ec*n'@#x.ZV1@;r{Daթw -yay~Gz`8~ScK*
+kfQؔ`jo*#Yw+GI."<"<I3Bݝ3sv,BW߆ړxV]+詢YS=]u݁#KD4kM$CUt'XrziƸ\?ѵnZ+1PIS_Iyz]&NC%דfAn_oYtZctz'S"9-U]}mYt.v'ɺ
+5y'Y$GoL5=Qג3:)CcXTKAXXؒ4P!xd>GVk[ۍT=3zy4}+/MY9Td{c_C,WIW/_G 박\?)
+2' ; "DF иIF1ݎ~O#dz&|eiy{obMbhCq9?͏eJAdҬ}uwcQi抍妬!.Ӝ(7J*uUf
+jNFFA)g: K#b71=w9?5seCQª 'Md?Q
+ޢgCj T
+endstream
+endobj
+806 0 obj <<
+/Type /Page
+/Contents 807 0 R
+/Resources 805 0 R
+/MediaBox [0 0 595.276 841.89]
+/Parent 756 0 R
+/Annots [ 804 0 R ]
+>> endobj
+804 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [321.057 498.314 333.013 509.218]
+/A << /S /GoTo /D (chapter.15) >>
+>> endobj
+808 0 obj <<
+/D [806 0 R /XYZ 54.865 827.598 null]
+>> endobj
+2 0 obj <<
+/D [806 0 R /XYZ 55.865 793.722 null]
+>> endobj
+6 0 obj <<
+/D [806 0 R /XYZ 55.865 607.123 null]
+>> endobj
+10 0 obj <<
+/D [806 0 R /XYZ 55.865 465.687 null]
+>> endobj
+14 0 obj <<
+/D [806 0 R /XYZ 55.865 284.267 null]
+>> endobj
+805 0 obj <<
+/Font << /F60 582 0 R /F37 533 0 R /F72 803 0 R /F67 639 0 R >>
+/ProcSet [ /PDF /Text ]
+>> endobj
+813 0 obj <<
+/Length 1471
+/Filter /FlateDecode
+>>
+stream
+xXK6 m噘I=fI{i%YZʒG6 ,z}L9)
+^Et{/iHJ I&M,"Jep[Ÿ8nVIէ_XdLWQ߼]?oqx[E6UB2EmCSwj#TwZԝ$, Om-þw=2= 5w_V2 máa_h
++S>bϲihc%oC/V$Pm0 RIrR - Ql 5U5hzhmnW*
+Ǫ.WILi#f2kM*2dlfd@
+6 k hUFv:<.A</ZI0&뾝=2epZ̍5-vDJ]TJ9ϗR-%B ugn4Rӭ[eor[ɏx"|J-3#=1.Lƞ_;W5f}H3;|M=J_dYk@L2, 5x:BZʤmzN0څK7_
+f!Ṟjpk!? 7)<GCԬ]8
+endstream
+endobj
+812 0 obj <<
+/Type /Page
+/Contents 813 0 R
+/Resources 811 0 R
+/MediaBox [0 0 595.276 841.89]
+/Parent 756 0 R
+/Annots [ 809 0 R 810 0 R ]
+>> endobj
+809 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [319.374 438.539 341.292 449.442]
+/A << /S /GoTo /D (subsection.5.2.2) >>
+>> endobj
+810 0 obj <<
+/Type /Annot
+/Subtype /Link
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [436.982 215.276 443.159 228.04]
+/A << /S /GoTo /D (Hfootnote.1) >>
+>> endobj
+814 0 obj <<
+/D [812 0 R /XYZ 54.865 827.598 null]
+>> endobj
+18 0 obj <<
+/D [812 0 R /XYZ 55.865 793.722 null]
+>> endobj
+22 0 obj <<
+/D [812 0 R /XYZ 55.865 607.123 null]
+>> endobj
+26 0 obj <<
+/D [812 0 R /XYZ 55.865 423.844 null]
+>> endobj