diff options
author | Ulrich Müller <ulm@gentoo.org> | 2021-06-13 21:28:37 +0200 |
---|---|---|
committer | Ulrich Müller <ulm@gentoo.org> | 2021-06-13 21:28:37 +0200 |
commit | 4ac9ef0bf49ba8a3ca61d84bc04259859efdbcf3 (patch) | |
tree | 8b7b78033fc6e80ad8ac62b6d1ed4a5e8fd5762c | |
parent | EAPI 7 has been approved by the Council. (diff) | |
download | pms-4ac9ef0bf49ba8a3ca61d84bc04259859efdbcf3.tar.gz pms-4ac9ef0bf49ba8a3ca61d84bc04259859efdbcf3.tar.bz2 pms-4ac9ef0bf49ba8a3ca61d84bc04259859efdbcf3.zip |
Signed-off-by: Ulrich Müller <ulm@gentoo.org>
-rw-r--r-- | 8/eapi-cheatsheet-nocombine.pdf | bin | 0 -> 85658 bytes | |||
-rw-r--r-- | 8/eapi-cheatsheet.pdf | bin | 0 -> 83664 bytes | |||
-rw-r--r-- | 8/pms.css | 406 | ||||
-rw-r--r-- | 8/pms.html | 14472 | ||||
-rw-r--r-- | 8/pms.pdf | bin | 0 -> 527541 bytes | |||
l--------- | latest | 2 |
6 files changed, 14879 insertions, 1 deletions
diff --git a/8/eapi-cheatsheet-nocombine.pdf b/8/eapi-cheatsheet-nocombine.pdf Binary files differnew file mode 100644 index 0000000..27f433c --- /dev/null +++ b/8/eapi-cheatsheet-nocombine.pdf diff --git a/8/eapi-cheatsheet.pdf b/8/eapi-cheatsheet.pdf Binary files differnew file mode 100644 index 0000000..d7b9b58 --- /dev/null +++ b/8/eapi-cheatsheet.pdf diff --git a/8/pms.css b/8/pms.css new file mode 100644 index 0000000..d650929 --- /dev/null +++ b/8/pms.css @@ -0,0 +1,406 @@ + +/* 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%;} +.ecrm-0900{font-size:90%;} +.tcrm-0900{font-size:90%;} +.ectt-0900{font-size:90%; font-family: monospace,monospace;} +.ectt-0900{ font-family: monospace,monospace;} +.ectt-0900{ font-family: monospace,monospace;} +.ectt-0900{ font-family: monospace,monospace;} +.ectt-0900{ font-family: monospace,monospace;} +.ectt-0900{ font-family: monospace,monospace;} +.ectt-0900{ font-family: monospace,monospace;} +.ectt-0900{ font-family: monospace,monospace;} +.ectt-0900{ font-family: monospace,monospace;} +.ectt-0900{ font-family: monospace,monospace;} +.ectt-1000{ font-family: monospace,monospace;} +.ectt-1000{ font-family: monospace,monospace;} +.ectt-1000{ font-family: monospace,monospace;} +.ectt-1000{ font-family: monospace,monospace;} +.ectt-1000{ font-family: monospace,monospace;} +.ectt-1000{ font-family: monospace,monospace;} +.ectt-1000{ font-family: monospace,monospace;} +.ectt-1000{ font-family: monospace,monospace;} +.ectt-1000{ font-family: monospace,monospace;} +.ectt-1000{ font-family: monospace,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;} +.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;} +.ecbx-1000{ font-weight: bold;} +.ecrm-0800{font-size:80%;} +.eccc1000-{font-variant: small-caps;} +.ectt-0800{font-size:80%; font-family: monospace,monospace;} +.ectt-0800{ font-family: monospace,monospace;} +.ectt-0800{ font-family: monospace,monospace;} +.ectt-0800{ font-family: monospace,monospace;} +.ectt-0800{ font-family: monospace,monospace;} +.ectt-0800{ font-family: monospace,monospace;} +.ectt-0800{ font-family: monospace,monospace;} +.ectt-0800{ font-family: monospace,monospace;} +.ectt-0800{ font-family: monospace,monospace;} +.ectt-0800{ font-family: monospace,monospace;} +.small-caps{font-variant: small-caps; } +p{margin-top:0;margin-bottom:0} +p.indent{text-indent:0;} +p + p{margin-top:1em;} +p + div, p + pre {margin-top:1em;} +div + p, pre + p {margin-top:1em;} +a { overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; hyphens: auto; } +@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;} +div.par-math-display, div.math-display{text-align:center;} +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;} +pre.verbatim {font-family: monospace,monospace; 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.footnotes{border-top:solid 1px black; border-bottom:solid 1px black; padding-bottom:1ex; padding-top:0.5ex; margin-right:15%; margin-top:2ex; font-style:italic; font-size:85%;} +div.footnotes p{margin-top:0; margin-bottom:0; text-indent:0;} +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 : 0px; margin:0px; } +.hline td, .cline td{ padding: 0; } +.hline hr, .cline hr{border:none;border-top:1px solid black;} +.tabbing-right {text-align:right;} +div.float, div.figure {margin-left: auto; margin-right: auto;} +div.float img {text-align:center;} +div.figure img {text-align:center;} +.marginpar,.reversemarginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} +.marginpar p,.reversemarginpar p{margin-top:0.4em; margin-bottom:0.4em;} +.reversemarginpar{float:left;} +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;} +.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; } +h1.partHead{text-align: center} +div.abstract p {margin-left:5%; margin-right:5%;} +div.abstract {width:100%;} +.abstracttitle{text-align:center;margin-bottom:1em;} +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +div.longtable{text-align:center;} +table.longtable{margin-left:auto; margin-right: auto;} +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 : 0px; margin:0px; } +.hline td, .cline td{ padding: 0; } +.hline hr, .cline hr{border:none;border-top:1px solid black;} +div.array {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.algorithm table.caption { border-bottom: 1px solid black; margin-bottom:1pt; } +.ALCitem {width:2em; text-align:right;display:inline-block;font-size:0.8em;} +.ALIndent{display:inline-block;} +tr#TBL-2-1- td{border-top:0.11197em solid} +tr#TBL-2-1- td{border-bottom:0.06998em solid} +tr#TBL-2-3- 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-3- 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-3- 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-3- 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-3- 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-3- 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-3- 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-4- 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-3- 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-3- 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-4- 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-3- 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-3- 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-3- 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-4- td{border-bottom:0.11197em solid} +tr#TBL-19-1- td{border-top:0.11197em solid} +tr#TBL-19-1- td{border-bottom:0.06998em solid} +tr#TBL-19-3- 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-3- 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-4- 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-4- 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-3- td{border-bottom:0.11197em solid} +tr#TBL-24-1- td{border-top:0.11197em solid} +tr#TBL-24-1- td{border-bottom:0.06998em solid} +tr#TBL-24-3- 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-3- 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-3- 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-5- 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-3- 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-4- 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-3- 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-4- 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-3- 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-4- td{border-bottom:0.11197em solid} +tr#TBL-34-1- td{border-top:0.11197em solid} +tr#TBL-34-1- td{border-bottom:0.06998em solid} +tr#TBL-34-3- td{border-bottom:0.11197em solid} +td#TBL-35-2-1{border-bottom:0.11197em solid} +td#TBL-35-4-1{border-bottom:0.06998em solid} +td#TBL-35-15-1{border-bottom:0.11197em solid} +tr#TBL-36-1- td{border-top:0.11197em solid} +tr#TBL-36-1- td{border-bottom:0.06998em solid} +tr#TBL-36-5- td{border-bottom:0.11197em solid} +tr#TBL-37-1- td{border-top:0.11197em solid} +tr#TBL-37-1- td{border-bottom:0.06998em solid} +tr#TBL-37-4- td{border-bottom:0.11197em solid} +tr#TBL-38-1- td{border-top:0.11197em solid} +tr#TBL-38-1- td{border-bottom:0.06998em solid} +tr#TBL-38-4- td{border-bottom:0.11197em solid} +tr#TBL-39-1- td{border-top:0.11197em solid} +tr#TBL-39-1- td{border-bottom:0.06998em solid} +tr#TBL-39-3- td{border-bottom:0.11197em solid} +tr#TBL-40-1- td{border-top:0.11197em solid} +tr#TBL-40-1- td{border-bottom:0.06998em solid} +tr#TBL-40-3- td{border-bottom:0.11197em solid} +tr#TBL-41-1- td{border-top:0.11197em solid} +tr#TBL-41-2- td{border-bottom:0.06998em solid} +tr#TBL-41-4- td{border-bottom:0.11197em solid} +tr#TBL-42-1- td{border-top:0.11197em solid} +tr#TBL-42-1- td{border-bottom:0.06998em solid} +tr#TBL-42-4- td{border-bottom:0.11197em solid} +tr#TBL-43-1- td{border-top:0.11197em solid} +tr#TBL-43-1- td{border-bottom:0.06998em solid} +tr#TBL-43-4- td{border-bottom:0.11197em solid} +tr#TBL-44-1- td{border-top:0.11197em solid} +tr#TBL-44-2- td{border-bottom:0.06998em solid} +tr#TBL-44-6- td{border-bottom:0.06998em solid} +tr#TBL-44-8- td{border-bottom:0.06998em solid} +tr#TBL-44-10- td{border-bottom:0.11197em solid} +tr#TBL-45-1- td{border-top:0.11197em solid} +tr#TBL-45-1- td{border-bottom:0.06998em solid} +tr#TBL-45-4- td{border-bottom:0.11197em solid} +tr#TBL-46-1- td{border-top:0.11197em solid} +tr#TBL-46-1- td{border-bottom:0.06998em solid} +tr#TBL-46-3- td{border-bottom:0.11197em solid} +tr#TBL-47-1- td{border-top:0.11197em solid} +tr#TBL-47-2- td{border-bottom:0.06998em solid} +tr#TBL-47-5- td{border-bottom:0.11197em solid} +tr#TBL-48-1- td{border-top:0.11197em solid} +tr#TBL-48-1- td{border-bottom:0.06998em solid} +tr#TBL-48-3- td{border-bottom:0.11197em solid} +tr#TBL-49-1- td{border-top:0.11197em solid} +tr#TBL-49-1- td{border-bottom:0.06998em solid} +tr#TBL-49-5- td{border-bottom:0.06998em solid} +tr#TBL-49-6- td{border-bottom:0.06998em solid} +tr#TBL-49-10- td{border-bottom:0.11197em solid} +tr#TBL-50-1- td{border-top:0.11197em solid} +tr#TBL-50-1- td{border-bottom:0.06998em solid} +tr#TBL-50-3- td{border-bottom:0.11197em solid} +tr#TBL-51-1- td{border-top:0.11197em solid} +tr#TBL-51-1- td{border-bottom:0.06998em solid} +tr#TBL-51-3- td{border-bottom:0.11197em solid} +tr#TBL-52-1- td{border-top:0.11197em solid} +tr#TBL-52-1- td{border-bottom:0.06998em solid} +tr#TBL-52-3- td{border-bottom:0.11197em solid} +tr#TBL-53-1- td{border-top:0.11197em solid} +tr#TBL-53-1- td{border-bottom:0.06998em solid} +tr#TBL-53-4- td{border-bottom:0.11197em solid} +tr#TBL-54-1- td{border-top:0.11197em solid} +tr#TBL-54-1- td{border-bottom:0.06998em solid} +tr#TBL-54-3- td{border-bottom:0.11197em solid} +tr#TBL-55-1- td{border-top:0.11197em solid} +tr#TBL-55-1- td{border-bottom:0.06998em solid} +tr#TBL-55-3- td{border-bottom:0.11197em solid} +tr#TBL-56-1- td{border-top:0.11197em solid} +tr#TBL-56-1- td{border-bottom:0.06998em solid} +tr#TBL-56-3- td{border-bottom:0.11197em solid} +tr#TBL-57-1- td{border-top:0.11197em solid} +tr#TBL-57-1- td{border-bottom:0.06998em solid} +tr#TBL-57-3- td{border-bottom:0.11197em solid} +tr#TBL-58-1- td{border-top:0.11197em solid} +tr#TBL-58-1- td{border-bottom:0.06998em solid} +tr#TBL-58-3- td{border-bottom:0.11197em solid} +tr#TBL-59-1- td{border-top:0.11197em solid} +tr#TBL-59-1- td{border-bottom:0.06998em solid} +tr#TBL-59-4- td{border-bottom:0.11197em solid} +tr#TBL-60-1- td{border-top:0.11197em solid} +tr#TBL-60-1- td{border-bottom:0.06998em solid} +tr#TBL-60-3- td{border-bottom:0.11197em solid} +tr#TBL-61-1- td{border-top:0.11197em solid} +tr#TBL-61-1- td{border-bottom:0.06998em solid} +tr#TBL-61-4- td{border-bottom:0.11197em solid} +tr#TBL-62-1- td{border-top:0.11197em solid} +tr#TBL-62-1- td{border-bottom:0.06998em solid} +tr#TBL-62-4- td{border-bottom:0.11197em solid} +tr#TBL-63-1- td{border-top:0.11197em solid} +tr#TBL-63-1- td{border-bottom:0.06998em solid} +tr#TBL-63-3- td{border-bottom:0.11197em solid} +tr#TBL-64-1- td{border-top:0.11197em solid} +tr#TBL-64-1- td{border-bottom:0.06998em solid} +tr#TBL-64-3- td{border-bottom:0.11197em solid} +tr#TBL-65-1- td{border-top:0.11197em solid} +tr#TBL-65-1- td{border-bottom:0.06998em solid} +tr#TBL-65-5- td{border-bottom:0.11197em solid} +tr#TBL-66-1- td{border-top:0.11197em solid} +tr#TBL-66-1- td{border-bottom:0.06998em solid} +tr#TBL-66-4- td{border-bottom:0.11197em solid} +tr#TBL-67-1- td{border-top:0.11197em solid} +tr#TBL-67-1- td{border-bottom:0.06998em solid} +tr#TBL-67-3- td{border-bottom:0.11197em solid} +td#TBL-68-2-1{border-bottom:0.11197em solid} +td#TBL-68-5-1{border-bottom:0.06998em solid} +td#TBL-68-17-1{border-bottom:0.11197em solid} +/* end css.sty */ + diff --git a/8/pms.html b/8/pms.html new file mode 100644 index 0000000..85e7920 --- /dev/null +++ b/8/pms.html @@ -0,0 +1,14472 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!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=utf-8" /> +<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)" /> +<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)" /> +<!-- xhtml,fn-in,charset=utf-8,html --> +<meta name="src" content="pms.tex" /> +<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">Christian Faulhammer</span> +<br /> <a +href="mailto:fauli@gentoo.org" ><span +class="ecrm-1200">fauli@gentoo.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> <br class="and" /><span +class="ecrm-1200">Ulrich Müller</span> +<br /> <a +href="mailto:ulm@gentoo.org" ><span +class="ecrm-1200">ulm@gentoo.org</span></a> </div> +<br /> +<div class="date" ><span +class="ecrm-1200">13th June 2021</span></div> + + +</div> +<!--l. 34--><p class="noindent" ><span +class="tcrm-0900">© </span><span +class="ecrm-0900">2007–2021 Stephen Bennett, Ciaran McCreesh and others. Contributions are owned by their respective</span> +<span +class="ecrm-0900">authors, and may have been changed substantially before inclusion.</span> +</p><!--l. 37--><p class="noindent" ><span +class="ecrm-0900">This work is released under the Creative Commons Attribution-ShareAlike 4.0 International Licence.</span> +<span +class="ecrm-0900">To view a copy of this licence, visit </span><a +href="https://creativecommons.org/licenses/by-sa/4.0/" class="url" ><span +class="ectt-0900">https://creativecommons.org/licenses/by-sa/4.0/</span></a><span +class="ecrm-0900">.</span> +</p><!--l. 41--><p class="noindent" ><span +class="ecrm-0900">This version corresponds to commit 06af57d.</span> + + +</p> +<h2 class="likechapterHead"><a + id="x1-1000"></a>Contents</h2> +<div class="tableofcontents"> +<span class="chapterToc" >1 <a +href="#x1-50001" id="QQ2-1-5">Introduction</a></span> +<br /> <span class="sectionToc" >1.1 <a +href="#x1-60001.1" id="QQ2-1-6">Aims and Motivation</a></span> +<br /> <span class="sectionToc" >1.2 <a +href="#x1-70001.2" id="QQ2-1-7">Rationale</a></span> +<br /> <span class="sectionToc" >1.3 <a +href="#x1-80001.3" id="QQ2-1-8">Reporting Issues</a></span> +<br /> <span class="sectionToc" >1.4 <a +href="#x1-90001.4" id="QQ2-1-9">Conventions</a></span> +<br /> <span class="sectionToc" >1.5 <a +href="#x1-100001.5" id="QQ2-1-10">Acknowledgements</a></span> +<br /><span class="chapterToc" >2 <a +href="#x1-110002" id="QQ2-1-11">EAPIs</a></span> +<br /> <span class="sectionToc" >2.1 <a +href="#x1-120002.1" id="QQ2-1-12">Definition</a></span> +<br /> <span class="sectionToc" >2.2 <a +href="#x1-130002.2" id="QQ2-1-13">Defined EAPIs</a></span> +<br /> <span class="sectionToc" >2.3 <a +href="#x1-140002.3" id="QQ2-1-14">Reserved EAPIs</a></span> +<br /><span class="chapterToc" >3 <a +href="#x1-150003" id="QQ2-1-15">Names and Versions</a></span> +<br /> <span class="sectionToc" >3.1 <a +href="#x1-160003.1" id="QQ2-1-16">Restrictions upon Names</a></span> +<br /> <span class="subsectionToc" >3.1.1 <a +href="#x1-170003.1.1" id="QQ2-1-17">Category names</a></span> +<br /> <span class="subsectionToc" >3.1.2 <a +href="#x1-180003.1.2" id="QQ2-1-18">Package names</a></span> +<br /> <span class="subsectionToc" >3.1.3 <a +href="#x1-190003.1.3" id="QQ2-1-19">Slot names</a></span> +<br /> <span class="subsectionToc" >3.1.4 <a +href="#x1-200003.1.4" id="QQ2-1-20">USE flag names</a></span> +<br /> <span class="subsectionToc" >3.1.5 <a +href="#x1-210003.1.5" id="QQ2-1-21">Repository names</a></span> +<br /> <span class="subsectionToc" >3.1.6 <a +href="#x1-220003.1.6" id="QQ2-1-22">License names</a></span> +<br /> <span class="subsectionToc" >3.1.7 <a +href="#x1-230003.1.7" id="QQ2-1-23">Keyword names</a></span> +<br /> <span class="subsectionToc" >3.1.8 <a +href="#x1-240003.1.8" id="QQ2-1-24">EAPI names</a></span> +<br /> <span class="sectionToc" >3.2 <a +href="#x1-250003.2" id="QQ2-1-25">Version Specifications</a></span> +<br /> <span class="sectionToc" >3.3 <a +href="#x1-260003.3" id="QQ2-1-26">Version Comparison</a></span> +<br /> <span class="sectionToc" >3.4 <a +href="#x1-270003.4" id="QQ2-1-34">Uniqueness of Versions</a></span> +<br /><span class="chapterToc" >4 <a +href="#x1-280004" id="QQ2-1-35">Tree Layout</a></span> +<br /> <span class="sectionToc" >4.1 <a +href="#x1-290004.1" id="QQ2-1-36">Top Level</a></span> +<br /> <span class="sectionToc" >4.2 <a +href="#x1-300004.2" id="QQ2-1-37">Category Directories</a></span> +<br /> <span class="sectionToc" >4.3 <a +href="#x1-310004.3" id="QQ2-1-38">Package Directories</a></span> +<br /> <span class="sectionToc" >4.4 <a +href="#x1-320004.4" id="QQ2-1-39">The Profiles Directory</a></span> +<br /> <span class="subsectionToc" >4.4.1 <a +href="#x1-330004.4.1" id="QQ2-1-41">The profiles.desc file</a></span> +<br /> <span class="subsectionToc" >4.4.2 <a +href="#x1-340004.4.2" id="QQ2-1-42">The thirdpartymirrors file</a></span> + + +<br /> <span class="subsectionToc" >4.4.3 <a +href="#x1-350004.4.3" id="QQ2-1-43">use.desc and related files</a></span> +<br /> <span class="subsectionToc" >4.4.4 <a +href="#x1-360004.4.4" id="QQ2-1-44">The updates directory</a></span> +<br /> <span class="sectionToc" >4.5 <a +href="#x1-370004.5" id="QQ2-1-46">The Licenses Directory</a></span> +<br /> <span class="sectionToc" >4.6 <a +href="#x1-380004.6" id="QQ2-1-47">The Eclass Directory</a></span> +<br /> <span class="sectionToc" >4.7 <a +href="#x1-390004.7" id="QQ2-1-48">The Metadata Directory</a></span> +<br /> <span class="subsectionToc" >4.7.1 <a +href="#x1-400004.7.1" id="QQ2-1-49">The metadata cache</a></span> +<br /><span class="chapterToc" >5 <a +href="#x1-410005" id="QQ2-1-50">Profiles</a></span> +<br /> <span class="sectionToc" >5.1 <a +href="#x1-420005.1" id="QQ2-1-51">General Principles</a></span> +<br /> <span class="sectionToc" >5.2 <a +href="#x1-430005.2" id="QQ2-1-52">Files That Make up a Profile</a></span> +<br /> <span class="subsectionToc" >5.2.1 <a +href="#x1-440005.2.1" id="QQ2-1-53">The parent file</a></span> +<br /> <span class="subsectionToc" >5.2.2 <a +href="#x1-450005.2.2" id="QQ2-1-54">The eapi file</a></span> +<br /> <span class="subsectionToc" >5.2.3 <a +href="#x1-460005.2.3" id="QQ2-1-55">deprecated</a></span> +<br /> <span class="subsectionToc" >5.2.4 <a +href="#x1-470005.2.4" id="QQ2-1-56">make.defaults</a></span> +<br /> <span class="subsectionToc" >5.2.5 <a +href="#x1-480005.2.5" id="QQ2-1-57">Simple line-based files</a></span> +<br /> <span class="subsectionToc" >5.2.6 <a +href="#x1-490005.2.6" id="QQ2-1-59">packages</a></span> +<br /> <span class="subsectionToc" >5.2.7 <a +href="#x1-500005.2.7" id="QQ2-1-60">packages.build</a></span> +<br /> <span class="subsectionToc" >5.2.8 <a +href="#x1-510005.2.8" id="QQ2-1-61">package.mask</a></span> +<br /> <span class="subsectionToc" >5.2.9 <a +href="#x1-520005.2.9" id="QQ2-1-62">package.provided</a></span> +<br /> <span class="subsectionToc" >5.2.10 <a +href="#x1-530005.2.10" id="QQ2-1-64">package.use</a></span> +<br /> <span class="subsectionToc" >5.2.11 <a +href="#x1-540005.2.11" id="QQ2-1-65">USE masking and forcing</a></span> +<br /> <span class="sectionToc" >5.3 <a +href="#x1-550005.3" id="QQ2-1-68">Profile Variables</a></span> +<br /> <span class="subsectionToc" >5.3.1 <a +href="#x1-560005.3.1" id="QQ2-1-69">Incremental variables</a></span> +<br /> <span class="subsectionToc" >5.3.2 <a +href="#x1-570005.3.2" id="QQ2-1-72">Specific variables and their meanings</a></span> +<br /><span class="chapterToc" >6 <a +href="#x1-580006" id="QQ2-1-73">Ebuild File Format</a></span> +<br /><span class="chapterToc" >7 <a +href="#x1-590007" id="QQ2-1-75">Ebuild-defined Variables</a></span> +<br /> <span class="sectionToc" >7.1 <a +href="#x1-600007.1" id="QQ2-1-76">Metadata Invariance</a></span> +<br /> <span class="sectionToc" >7.2 <a +href="#x1-610007.2" id="QQ2-1-77">Mandatory Ebuild-defined Variables</a></span> +<br /> <span class="sectionToc" >7.3 <a +href="#x1-620007.3" id="QQ2-1-78">Optional Ebuild-defined Variables</a></span> +<br /> <span class="subsectionToc" >7.3.1 <a +href="#x1-630007.3.1" id="QQ2-1-81">EAPI</a></span> +<br /> <span class="subsectionToc" >7.3.2 <a +href="#x1-640007.3.2" id="QQ2-1-82">SRC_URI</a></span> +<br /> <span class="subsectionToc" >7.3.3 <a +href="#x1-650007.3.3" id="QQ2-1-84">Keywords</a></span> +<br /> <span class="subsectionToc" >7.3.4 <a +href="#x1-660007.3.4" id="QQ2-1-85">USE state constraints</a></span> +<br /> <span class="subsectionToc" >7.3.5 <a +href="#x1-670007.3.5" id="QQ2-1-86">Properties</a></span> +<br /> <span class="subsectionToc" >7.3.6 <a +href="#x1-680007.3.6" id="QQ2-1-87">Restrict</a></span> +<br /> <span class="subsectionToc" >7.3.7 <a +href="#x1-690007.3.7" id="QQ2-1-88">RDEPEND value</a></span> +<br /> <span class="sectionToc" >7.4 <a +href="#x1-700007.4" id="QQ2-1-90">Magic Ebuild-defined Variables</a></span> +<br /><span class="chapterToc" >8 <a +href="#x1-710008" id="QQ2-1-92">Dependencies</a></span> +<br /> <span class="sectionToc" >8.1 <a +href="#x1-720008.1" id="QQ2-1-93">Dependency Classes</a></span> +<br /> <span class="sectionToc" >8.2 <a +href="#x1-730008.2" id="QQ2-1-98">Dependency Specification Format</a></span> + + +<br /> <span class="subsectionToc" >8.2.1 <a +href="#x1-740008.2.1" id="QQ2-1-100">All-of dependency specifications</a></span> +<br /> <span class="subsectionToc" >8.2.2 <a +href="#x1-750008.2.2" id="QQ2-1-101">USE-conditional dependency specifications</a></span> +<br /> <span class="subsectionToc" >8.2.3 <a +href="#x1-760008.2.3" id="QQ2-1-102">Any-of dependency specifications</a></span> +<br /> <span class="subsectionToc" >8.2.4 <a +href="#x1-770008.2.4" id="QQ2-1-103">Exactly-one-of dependency specifications</a></span> +<br /> <span class="subsectionToc" >8.2.5 <a +href="#x1-780008.2.5" id="QQ2-1-105">At-most-one-of dependency specifications</a></span> +<br /> <span class="sectionToc" >8.3 <a +href="#x1-790008.3" id="QQ2-1-106">Package Dependency Specifications</a></span> +<br /> <span class="subsectionToc" >8.3.1 <a +href="#x1-800008.3.1" id="QQ2-1-109">Operators</a></span> +<br /> <span class="subsectionToc" >8.3.2 <a +href="#x1-810008.3.2" id="QQ2-1-110">Block operator</a></span> +<br /> <span class="subsectionToc" >8.3.3 <a +href="#x1-820008.3.3" id="QQ2-1-112">Slot dependencies</a></span> +<br /> <span class="subsectionToc" >8.3.4 <a +href="#x1-830008.3.4" id="QQ2-1-113">2-style and 4-style USE dependencies</a></span> +<br /><span class="chapterToc" >9 <a +href="#x1-840009" id="QQ2-1-114">Ebuild-defined Functions</a></span> +<br /> <span class="sectionToc" >9.1 <a +href="#x1-850009.1" id="QQ2-1-115">List of Functions</a></span> +<br /> <span class="subsectionToc" >9.1.1 <a +href="#x1-860009.1.1" id="QQ2-1-116">Initial working directories</a></span> +<br /> <span class="subsectionToc" >9.1.2 <a +href="#x1-870009.1.2" id="QQ2-1-119">pkg_pretend</a></span> +<br /> <span class="subsectionToc" >9.1.3 <a +href="#x1-880009.1.3" id="QQ2-1-121">pkg_setup</a></span> +<br /> <span class="subsectionToc" >9.1.4 <a +href="#x1-890009.1.4" id="QQ2-1-122">src_unpack</a></span> +<br /> <span class="subsectionToc" >9.1.5 <a +href="#x1-900009.1.5" id="QQ2-1-124">src_prepare</a></span> +<br /> <span class="subsectionToc" >9.1.6 <a +href="#x1-910009.1.6" id="QQ2-1-128">src_configure</a></span> +<br /> <span class="subsectionToc" >9.1.7 <a +href="#x1-920009.1.7" id="QQ2-1-131">src_compile</a></span> +<br /> <span class="subsectionToc" >9.1.8 <a +href="#x1-930009.1.8" id="QQ2-1-136">src_test</a></span> +<br /> <span class="subsectionToc" >9.1.9 <a +href="#x1-940009.1.9" id="QQ2-1-138">src_install</a></span> +<br /> <span class="subsectionToc" >9.1.10 <a +href="#x1-950009.1.10" id="QQ2-1-142">pkg_preinst</a></span> +<br /> <span class="subsectionToc" >9.1.11 <a +href="#x1-960009.1.11" id="QQ2-1-143">pkg_postinst</a></span> +<br /> <span class="subsectionToc" >9.1.12 <a +href="#x1-970009.1.12" id="QQ2-1-144">pkg_prerm</a></span> +<br /> <span class="subsectionToc" >9.1.13 <a +href="#x1-980009.1.13" id="QQ2-1-145">pkg_postrm</a></span> +<br /> <span class="subsectionToc" >9.1.14 <a +href="#x1-990009.1.14" id="QQ2-1-146">pkg_config</a></span> +<br /> <span class="subsectionToc" >9.1.15 <a +href="#x1-1000009.1.15" id="QQ2-1-147">pkg_info</a></span> +<br /> <span class="subsectionToc" >9.1.16 <a +href="#x1-1010009.1.16" id="QQ2-1-149">pkg_nofetch</a></span> +<br /> <span class="subsectionToc" >9.1.17 <a +href="#x1-1020009.1.17" id="QQ2-1-150">Default phase functions</a></span> +<br /> <span class="sectionToc" >9.2 <a +href="#x1-1030009.2" id="QQ2-1-152">Call Order</a></span> +<br /><span class="chapterToc" >10 <a +href="#x1-10400010" id="QQ2-1-153">Eclasses</a></span> +<br /> <span class="sectionToc" >10.1 <a +href="#x1-10500010.1" id="QQ2-1-154">The inherit Command</a></span> +<br /> <span class="sectionToc" >10.2 <a +href="#x1-10600010.2" id="QQ2-1-155">Eclass-defined Metadata Keys</a></span> +<br /> <span class="sectionToc" >10.3 <a +href="#x1-10700010.3" id="QQ2-1-157">EXPORT_FUNCTIONS</a></span> +<br /><span class="chapterToc" >11 <a +href="#x1-10800011" id="QQ2-1-159">The Ebuild Environment</a></span> +<br /> <span class="sectionToc" >11.1 <a +href="#x1-10900011.1" id="QQ2-1-160">Defined Variables</a></span> +<br /> <span class="subsectionToc" >11.1.1 <a +href="#x1-11000011.1.1" id="QQ2-1-166">USE and IUSE handling</a></span> +<br /> <span class="subsectionToc" >11.1.2 <a +href="#x1-11100011.1.2" id="QQ2-1-167">REPLACING_VERSIONS and REPLACED_BY_VERSION</a></span> +<br /> <span class="subsectionToc" >11.1.3 <a +href="#x1-11200011.1.3" id="QQ2-1-168">Offset-prefix variables</a></span> + + +<br /> <span class="subsectionToc" >11.1.4 <a +href="#x1-11300011.1.4" id="QQ2-1-170">Path variables and trailing slash</a></span> +<br /> <span class="sectionToc" >11.2 <a +href="#x1-11400011.2" id="QQ2-1-172">The State of Variables Between Functions</a></span> +<br /> <span class="sectionToc" >11.3 <a +href="#x1-11500011.3" id="QQ2-1-174">The State of the System Between Functions</a></span> +<br /><span class="chapterToc" >12 <a +href="#x1-11600012" id="QQ2-1-175">Available Commands</a></span> +<br /> <span class="sectionToc" >12.1 <a +href="#x1-11700012.1" id="QQ2-1-176">System Commands</a></span> +<br /> <span class="subsectionToc" >12.1.1 <a +href="#x1-11800012.1.1" id="QQ2-1-177">Guaranteed system commands</a></span> +<br /> <span class="sectionToc" >12.2 <a +href="#x1-11900012.2" id="QQ2-1-179">Commands Provided by Package Dependencies</a></span> +<br /> <span class="sectionToc" >12.3 <a +href="#x1-12000012.3" id="QQ2-1-180">Ebuild-specific Commands</a></span> +<br /> <span class="subsectionToc" >12.3.1 <a +href="#x1-12100012.3.1" id="QQ2-1-181">Failure behaviour and related commands</a></span> +<br /> <span class="subsectionToc" >12.3.2 <a +href="#x1-12200012.3.2" id="QQ2-1-183">Banned commands</a></span> +<br /> <span class="subsectionToc" >12.3.3 <a +href="#x1-12300012.3.3" id="QQ2-1-185">Sandbox commands</a></span> +<br /> <span class="subsectionToc" >12.3.4 <a +href="#x1-12400012.3.4" id="QQ2-1-186">Package manager query commands</a></span> +<br /> <span class="subsectionToc" >12.3.5 <a +href="#x1-12500012.3.5" id="QQ2-1-188">Output commands</a></span> +<br /> <span class="subsectionToc" >12.3.6 <a +href="#x1-12600012.3.6" id="QQ2-1-190">Error commands</a></span> +<br /> <span class="subsectionToc" >12.3.7 <a +href="#x1-12700012.3.7" id="QQ2-1-192">Patch commands</a></span> +<br /> <span class="subsectionToc" >12.3.8 <a +href="#x1-12800012.3.8" id="QQ2-1-195">Build commands</a></span> +<br /> <span class="subsectionToc" >12.3.9 <a +href="#x1-12900012.3.9" id="QQ2-1-199">Installation commands</a></span> +<br /> <span class="subsectionToc" >12.3.10 <a +href="#x1-13000012.3.10" id="QQ2-1-209">Commands affecting install destinations</a></span> +<br /> <span class="subsectionToc" >12.3.11 <a +href="#x1-13100012.3.11" id="QQ2-1-212">Commands controlling manipulation of files in the staging area</a></span> +<br /> <span class="subsectionToc" >12.3.12 <a +href="#x1-13200012.3.12" id="QQ2-1-214">USE list functions</a></span> +<br /> <span class="subsectionToc" >12.3.13 <a +href="#x1-13300012.3.13" id="QQ2-1-218">Text list functions</a></span> +<br /> <span class="subsectionToc" >12.3.14 <a +href="#x1-13400012.3.14" id="QQ2-1-219">Version manipulation and comparison commands</a></span> +<br /> <span class="subsectionToc" >12.3.15 <a +href="#x1-13500012.3.15" id="QQ2-1-221">Misc commands</a></span> +<br /> <span class="subsectionToc" >12.3.16 <a +href="#x1-13600012.3.16" id="QQ2-1-227">Debug commands</a></span> +<br /> <span class="subsectionToc" >12.3.17 <a +href="#x1-13700012.3.17" id="QQ2-1-228">Reserved commands and variables</a></span> +<br /><span class="chapterToc" >13 <a +href="#x1-13800013" id="QQ2-1-229">Merging and Unmerging</a></span> +<br /> <span class="sectionToc" >13.1 <a +href="#x1-13900013.1" id="QQ2-1-230">Overview</a></span> +<br /> <span class="sectionToc" >13.2 <a +href="#x1-14000013.2" id="QQ2-1-231">Directories</a></span> +<br /> <span class="subsectionToc" >13.2.1 <a +href="#x1-14100013.2.1" id="QQ2-1-232">Permissions</a></span> +<br /> <span class="subsectionToc" >13.2.2 <a +href="#x1-14200013.2.2" id="QQ2-1-233">Empty directories</a></span> +<br /> <span class="sectionToc" >13.3 <a +href="#x1-14300013.3" id="QQ2-1-234">Regular Files</a></span> +<br /> <span class="subsectionToc" >13.3.1 <a +href="#x1-14400013.3.1" id="QQ2-1-235">Permissions</a></span> +<br /> <span class="subsectionToc" >13.3.2 <a +href="#x1-14500013.3.2" id="QQ2-1-236">File modification times</a></span> +<br /> <span class="subsectionToc" >13.3.3 <a +href="#x1-14600013.3.3" id="QQ2-1-238">Configuration file protection</a></span> +<br /> <span class="sectionToc" >13.4 <a +href="#x1-14700013.4" id="QQ2-1-239">Symlinks</a></span> +<br /> <span class="subsectionToc" >13.4.1 <a +href="#x1-14800013.4.1" id="QQ2-1-240">Rewriting</a></span> +<br /> <span class="sectionToc" >13.5 <a +href="#x1-14900013.5" id="QQ2-1-241">Hard Links</a></span> +<br /> <span class="sectionToc" >13.6 <a +href="#x1-15000013.6" id="QQ2-1-242">Other Files</a></span> +<br /><span class="chapterToc" >14 <a +href="#x1-15100014" id="QQ2-1-243">Metadata Cache</a></span> + + +<br /> <span class="sectionToc" >14.1 <a +href="#x1-15200014.1" id="QQ2-1-244">Directory Contents</a></span> +<br /> <span class="sectionToc" >14.2 <a +href="#x1-15300014.2" id="QQ2-1-245">Cache File Format</a></span> +<br /><span class="chapterToc" >15 <a +href="#x1-15400015" id="QQ2-1-246">Glossary</a></span> +<br /><span class="chapterToc" > <a +href="#Q1-1-248">Bibliography</a></span> +<br /><span class="appendixToc" >A <a +href="#x1-156000A" id="QQ2-1-249">metadata.xml</a></span> +<br /><span class="appendixToc" >B <a +href="#x1-157000B" id="QQ2-1-250">Unspecified Items</a></span> +<br /><span class="appendixToc" >C <a +href="#x1-158000C" id="QQ2-1-251">Historical Curiosities</a></span> +<br /> <span class="sectionToc" ><a +href="#x1-159000C" id="QQ2-1-252">Long-obsolete Features</a></span> +<br /> <span class="subsectionToc" ><a +href="#x1-160000C" id="QQ2-1-253">If-else USE blocks</a></span> +<br /> <span class="subsectionToc" ><a +href="#x1-161000C" id="QQ2-1-255">CVS versions</a></span> +<br /> <span class="subsectionToc" ><a +href="#x1-162000C" id="QQ2-1-256">use.defaults</a></span> +<br /> <span class="sectionToc" ><a +href="#x1-163000C" id="QQ2-1-257">Retroactive Changes</a></span> +<br /> <span class="subsectionToc" ><a +href="#x1-164000C" id="QQ2-1-258">Bash version</a></span> +<br /> <span class="subsectionToc" ><a +href="#x1-165000C" id="QQ2-1-259">Old-style virtuals</a></span> +<br /> <span class="subsectionToc" ><a +href="#x1-166000C" id="QQ2-1-260">EAPI parsing</a></span> +<br /> <span class="subsectionToc" ><a +href="#x1-167000C" id="QQ2-1-261">Package names</a></span> +<br /> <span class="subsectionToc" ><a +href="#x1-168000C" id="QQ2-1-262">Asterisk in dependency specification</a></span> +<br /> <span class="subsectionToc" ><a +href="#x1-169000C" id="QQ2-1-263">Empty dependency groups</a></span> +<br /><span class="appendixToc" >D <a +href="#x1-170000D" id="QQ2-1-264">Feature Availability by EAPI</a></span> +<br /><span class="appendixToc" >E <a +href="#x1-171000E" id="QQ2-1-266">Differences Between EAPIs</a></span> +<br /> <span class="sectionToc" ><a +href="#x1-172000E" id="QQ2-1-267">EAPI 0</a></span> +<br /> <span class="sectionToc" ><a +href="#x1-173000E" id="QQ2-1-268">EAPI 1</a></span> +<br /> <span class="sectionToc" ><a +href="#x1-174000E" id="QQ2-1-269">EAPI 2</a></span> +<br /> <span class="sectionToc" ><a +href="#x1-175000E" id="QQ2-1-270">EAPI 3</a></span> +<br /> <span class="sectionToc" ><a +href="#x1-176000E" id="QQ2-1-271">EAPI 4</a></span> +<br /> <span class="sectionToc" ><a +href="#x1-177000E" id="QQ2-1-272">EAPI 5</a></span> +<br /> <span class="sectionToc" ><a +href="#x1-178000E" id="QQ2-1-273">EAPI 6</a></span> +<br /> <span class="sectionToc" ><a +href="#x1-179000E" id="QQ2-1-274">EAPI 7</a></span> +<br /> <span class="sectionToc" ><a +href="#x1-180000E" id="QQ2-1-275">EAPI 8</a></span> +<br /><span class="appendixToc" >F <a +href="#x1-181000F" id="QQ2-1-276">Desk Reference</a></span> +</div> + + +<h2 class="likechapterHead"><a + id="x1-2000"></a>List of Algorithms</h2> +<div class="tableofcontents"> +3.1 <a +href="#x1-26001r1">Version comparison top-level logic</a> +<br />3.2 <a +href="#x1-26008r2">Version comparison logic for numeric components</a> +<br />3.3 <a +href="#x1-26025r3">Version comparison logic for each numeric component after the first</a> +<br />3.4 <a +href="#x1-26041r4">Version comparison logic for letter components</a> +<br />3.5 <a +href="#x1-26049r5">Version comparison logic for suffixes</a> +<br />3.6 <a +href="#x1-26069r6">Version comparison logic for each suffix</a> +<br />3.7 <a +href="#x1-26083r7">Version comparison logic for revision components</a> +<br />5.1 <a +href="#x1-54002r1"><span +class="ectt-1000">USE </span>masking logic</a> +<br />12.1 <a +href="#x1-127001r1"><span +class="ectt-1000">eapply </span>logic</a> +<br />12.2 <a +href="#x1-128002r2"><span +class="ectt-1000">econf --libdir </span>logic</a> +<br />12.3 <a +href="#x1-129001r3">Determining the library directory</a> +<br />12.4 <a +href="#x1-135003r4"><span +class="ectt-1000">einstalldocs </span>logic</a> +<br />12.5 <a +href="#x1-135025r5"><span +class="ectt-1000">get_libdir </span>logic</a> +</div> + + +<h2 class="likechapterHead"><a + id="x1-3000"></a>List of Listings</h2> +<div class="tableofcontents"> +9.1 <a +href="#x1-89001r1"><span +class="ectt-1000">src_unpack</span></a> +<br />9.2 <a +href="#x1-90002r2"><span +class="ectt-1000">src_prepare</span>, format6</a> +<br />9.3 <a +href="#x1-90003r3"><span +class="ectt-1000">src_prepare</span>, format8</a> +<br />9.4 <a +href="#x1-91002r4"><span +class="ectt-1000">src_configure</span></a> +<br />9.5 <a +href="#x1-92002r5"><span +class="ectt-1000">src_compile</span>, format0</a> +<br />9.6 <a +href="#x1-92003r6"><span +class="ectt-1000">src_compile</span>, format1</a> +<br />9.7 <a +href="#x1-92004r7"><span +class="ectt-1000">src_compile</span>, format2</a> +<br />9.8 <a +href="#x1-94002r8"><span +class="ectt-1000">src_install</span>, format4</a> +<br />9.9 <a +href="#x1-94003r9"><span +class="ectt-1000">src_install</span>, format6</a> +<br />10.1 <a +href="#x1-107001r1"><span +class="ectt-1000">EXPORT_FUNCTIONS </span>example: <span +class="ectt-1000">foo.eclass</span></a> +<br />11.1 <a +href="#x1-114001r1">Environment state between functions</a> +<br />12.1 <a +href="#x1-128017r1"><span +class="ectt-1000">einstall </span>command</a> +<br />12.2 <a +href="#x1-129018r2">Create a relative path for <span +class="ectt-1000">dosym -r</span></a> +<br />C.1 <a +href="#x1-160001r1">If-else use blocks</a> +</div> + + +<h2 class="likechapterHead"><a + id="x1-4000"></a>List of Tables</h2> +<div class="tableofcontents"><span class="lotToc" >4.1 <a +href="#x1-32001r1">EAPIs supporting a directory for <span +class="ectt-1000">package.mask</span></a></span><br /><span class="lotToc" >4.2 <a +href="#x1-36001r2">Naming rules for files in <span +class="ectt-1000">updates</span> +directory for EAPIs</a></span><br /><span class="lotToc" >5.1 <a +href="#x1-48001r1">EAPIs supporting directories for profile files</a></span><br /><span class="lotToc" >5.2 <a +href="#x1-52001r2">EAPIs supporting +<span +class="ectt-1000">package.provided </span>in profiles</a></span><br /><span class="lotToc" >5.3 <a +href="#x1-54001r3">Profile directory support for masking/forcing use flags +in stable versions only</a></span><br /><span class="lotToc" >5.4 <a +href="#x1-56001r4">Profile-defined <span +class="ectt-1000">IUSE </span>injection for EAPIs</a></span><br /><span class="lotToc" >5.5 <a +href="#x1-56002r5">Profile-defined +unsetting of variables in EAPIs</a></span><br /><span class="lotToc" >6.1 <a +href="#x1-58001r1">Bash version and options</a></span><br /><span class="lotToc" >7.1 <a +href="#x1-62001r1">EAPIs supporting <span +class="ectt-1000">IUSE</span> +defaults</a></span><br /><span class="lotToc" >7.2 <a +href="#x1-62002r2">EAPIs supporting various ebuild-defined variables</a></span><br /><span class="lotToc" >7.3 <a +href="#x1-64001r3">EAPIs supporting +<span +class="ectt-1000">SRC_URI </span>arrows and selective URI restrictions</a></span><br /><span class="lotToc" >7.4 <a +href="#x1-69001r4">EAPIs with <span +class="ectt-1000">RDEPEND=DEPEND</span> +default</a></span><br /><span class="lotToc" >7.5 <a +href="#x1-70001r5">EAPIs supporting <span +class="ectt-1000">DEFINED_PHASES</span></a></span><br /><span class="lotToc" >8.1 <a +href="#x1-72001r1">Dependency classes required to +be satisfied for a particular phase function</a></span><br /><span class="lotToc" >8.2 <a +href="#x1-72002r2">Summary of other interfaces related +to dependency classes</a></span><br /><span class="lotToc" >8.3 <a +href="#x1-72003r3">Prefix values for <span +class="ectt-1000">DEPEND</span></a></span><br /><span class="lotToc" >8.4 <a +href="#x1-72004r4">EAPIs supporting additional +dependency types</a></span><br /><span class="lotToc" >8.5 <a +href="#x1-73001r5">EAPIs supporting <span +class="ectt-1000">REQUIRED_USE ?? </span>groups</a></span><br /><span class="lotToc" >8.6 <a +href="#x1-77001r6">Matching of +empty dependency groups in EAPIs</a></span><br /><span class="lotToc" >8.7 <a +href="#x1-79001r7">Support for <span +class="ectt-1000">SLOT </span>dependencies and sub-slots +in EAPIs</a></span><br /><span class="lotToc" >8.8 <a +href="#x1-79002r8">EAPIs supporting <span +class="ectt-1000">USE </span>dependencies</a></span><br /><span class="lotToc" >8.9 <a +href="#x1-81001r9">Exclamation mark strengths for +EAPIs</a></span><br /><span class="lotToc" >9.1 <a +href="#x1-86001r1">Initial working directory in <span +class="ectt-1000">pkg_* </span>phase functions for EAPIs</a></span><br /><span class="lotToc" >9.2 <a +href="#x1-86002r2">EAPIs with +<span +class="ectt-1000">S </span>to <span +class="ectt-1000">WORKDIR </span>fallbacks</a></span><br /><span class="lotToc" >9.3 <a +href="#x1-87001r3">EAPIs supporting <span +class="ectt-1000">pkg_pretend</span></a></span><br /><span class="lotToc" >9.4 <a +href="#x1-90001r4"><span +class="ectt-1000">src_prepare </span>support +and behaviour for EAPIs</a></span><br /><span class="lotToc" >9.5 <a +href="#x1-91001r5">EAPIs supporting <span +class="ectt-1000">src_configure</span></a></span><br /><span class="lotToc" >9.6 <a +href="#x1-92001r6"><span +class="ectt-1000">src_compile</span> +behaviour for EAPIs</a></span><br /><span class="lotToc" >9.7 <a +href="#x1-93001r7"><span +class="ectt-1000">src_test </span>behaviour for EAPIs</a></span><br /><span class="lotToc" >9.8 <a +href="#x1-94001r8"><span +class="ectt-1000">src_install </span>behaviour +for EAPIs</a></span><br /><span class="lotToc" >9.9 <a +href="#x1-100001r9">EAPIs supporting <span +class="ectt-1000">pkg_info </span>on non-installed packages</a></span><br /><span class="lotToc" >9.10 <a +href="#x1-102001r10">EAPIs +supporting <span +class="ectt-1000">default_ </span>phase functions</a></span><br /><span class="lotToc" >10.1 <a +href="#x1-106001r1">EAPIs accumulating <span +class="ectt-1000">PROPERTIES </span>and +<span +class="ectt-1000">RESTRICT </span>across eclasses</a></span><br /><span class="lotToc" >11.1 <a +href="#x1-109001r1">Defined variables</a></span><br /><span class="lotToc" >11.2 <a +href="#x1-109007r2">EAPIs supporting various added +env variables</a></span><br /><span class="lotToc" >11.3 <a +href="#x1-109008r3">EAPIs supporting various removed env variables</a></span><br /><span class="lotToc" >11.4 <a +href="#x1-109009r4">EAPIs +supporting offset-prefix env variables</a></span><br /><span class="lotToc" >11.5 <a +href="#x1-109010r5">Locale settings for EAPIs</a></span><br /><span class="lotToc" >11.6 <a +href="#x1-112001r6">EAPIs +supporting offset-prefix</a></span><br /><span class="lotToc" >11.7 <a +href="#x1-113001r7">Variables that always or never end with a trailing +slash</a></span><br /><span class="lotToc" >12.1 <a +href="#x1-118001r1">System commands for EAPIs</a></span><br /><span class="lotToc" >12.2 <a +href="#x1-121001r2">EAPI command failure behaviour</a></span><br /><span class="lotToc" >12.3 <a +href="#x1-122001r3">Banned +commands</a></span><br /><span class="lotToc" >12.4 <a +href="#x1-124001r4">Package manager query command options supported by EAPIs</a></span><br /><span class="lotToc" >12.5 <a +href="#x1-125001r5">Output +commands for EAPIs</a></span><br /><span class="lotToc" >12.6 <a +href="#x1-126001r6">Properties of <span +class="ectt-1000">die </span>and <span +class="ectt-1000">assert </span>commands in EAPIs</a></span><br /><span class="lotToc" >12.7 <a +href="#x1-127033r7">Patch +commands for EAPIs</a></span><br /><span class="lotToc" >12.8 <a +href="#x1-128001r8">Extra <span +class="ectt-1000">econf </span>arguments for EAPIs</a></span><br /><span class="lotToc" >12.9 <a +href="#x1-129019r9">EAPIs supporting <span +class="ectt-1000">dodoc</span> +<span +class="ectt-1000">-r</span></a></span><br /><span class="lotToc" >12.10 <a +href="#x1-129020r10">EAPIs supporting <span +class="ectt-1000">doheader </span>and <span +class="ectt-1000">newheader</span></a></span><br /><span class="lotToc" >12.11 <a +href="#x1-129021r11">EAPIs supporting symlinks +for <span +class="ectt-1000">doins</span></a></span><br /><span class="lotToc" >12.12 <a +href="#x1-129022r12"><span +class="ectt-1000">doman </span>language support options for EAPIs</a></span><br /><span class="lotToc" >12.13 <a +href="#x1-129023r13">EAPIs supporting +stdin for <span +class="ectt-1000">new* </span>commands</a></span><br /><span class="lotToc" >12.14 <a +href="#x1-129024r14"><span +class="ectt-1000">domo </span>destination path in EAPIs</a></span><br /><span class="lotToc" >12.15 <a +href="#x1-129025r15">EAPIs supporting +<span +class="ectt-1000">dosym -r</span></a></span><br /><span class="lotToc" >12.16 <a +href="#x1-130001r16">Commands respecting <span +class="ectt-1000">insopts </span>for EAPIs</a></span><br /><span class="lotToc" >12.17 <a +href="#x1-130002r17">Commands respecting +<span +class="ectt-1000">exeopts </span>for EAPIs</a></span><br /><span class="lotToc" >12.18 <a +href="#x1-131001r18">Commands controlling manipulation of files in the staging +area in EAPIs</a></span><br /><span class="lotToc" >12.19 <a +href="#x1-132001r19">EAPI behaviour for use queries not in <span +class="ectt-1000">IUSE_EFFECTIVE</span></a></span><br /><span class="lotToc" >12.20 <a +href="#x1-132002r20"><span +class="ectt-1000">usev</span>, +<span +class="ectt-1000">use_with </span>and <span +class="ectt-1000">use_enable </span>arguments for EAPIs</a></span><br /><span class="lotToc" >12.21 <a +href="#x1-132003r21">EAPIs supporting <span +class="ectt-1000">usex </span>and +<span +class="ectt-1000">in_iuse</span></a></span><br /><span class="lotToc" >12.22 <a +href="#x1-134001r22">EAPIs supporting version manipulation commands</a></span><br /><span class="lotToc" >12.23 <a +href="#x1-135001r23"><span +class="ectt-1000">unpack</span> +behaviour for EAPIs</a></span><br /><span class="lotToc" >12.24 <a +href="#x1-135002r24"><span +class="ectt-1000">unpack </span>extensions for EAPIs</a></span><br /><span class="lotToc" >12.25 <a +href="#x1-135034r25">Misc commands for +EAPIs</a></span><br /><span class="lotToc" >13.1 <a +href="#x1-145001r1">Preservation of file modification times (mtimes)</a></span><br /><span class="lotToc" >D.1 <a +href="#x1-170001r1">Features in EAPIs</a></span><br /> +</div> + + + + +<h2 class="chapterHead"><span class="titlemark">Chapter 1</span><br /><a + id="x1-50001"></a>Introduction</h2> +<h3 class="sectionHead"><span class="titlemark">1.1 </span> <a + id="x1-60001.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 <a +href="#x1-15400015">15<!--tex4ht:ref: ch: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-70001.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-80001.3"></a>Reporting Issues</h3> +<!--l. 30--><p class="noindent" >Issues (inaccuracies, wording problems, omissions etc.) 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. 34--><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 +<a +href="mailto:gentoo-pms@lists.gentoo.org" ><span +class="ectt-1000">gentoo-pms@lists.gentoo.org</span></a> mailing list. Patches will be reviewed by the PMS team, who will +do one of the following: +</p><!--l. 39--><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. 46--><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. 49--><p class="noindent" >If any issue cannot be resolved by the PMS team, it may be escalated to the Gentoo +Council. +</p><!--l. 51--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">1.4 </span> <a + id="x1-90001.4"></a>Conventions</h3> +<!--l. 53--><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. 56--><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><!--l. 60--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">1.5 </span> <a + id="x1-100001.5"></a>Acknowledgements</h3> +<!--l. 62--><p class="noindent" >Thanks to Mike Kelly (package manager provided utilities, section <a +href="#x1-12000012.3">12.3<!--tex4ht:ref: sec:pkg-mgr-commands --></a>), Danny van Dyk (ebuild +functions, chapter <a +href="#x1-840009">9<!--tex4ht:ref: ch:ebuild-functions --></a>), David Leverton (various sections), Petteri Räty (environment state, +section <a +href="#x1-11400011.2">11.2<!--tex4ht:ref: sec:ebuild-env-state --></a>), Michał Górny (various sections), Andreas K. Hüttel (stable use masking, +section <a +href="#x1-540005.2.11">5.2.11<!--tex4ht:ref: sec:use-masking --></a>), Zac Medico (sub-slots, section <a +href="#x1-610007.2">7.2<!--tex4ht:ref: sec:mandatory-vars --></a>) and James Le Cuirot (build dependencies, +section <a +href="#x1-10900011.1">11.1<!--tex4ht:ref: sec:ebuild-env-vars --></a>) for contributions. Thanks also to Mike Frysinger and Brian Harring for proof-reading +and suggestions for fixes and/or clarification. + + + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 2</span><br /><a + id="x1-110002"></a>EAPIs</h2> +<h3 class="sectionHead"><span class="titlemark">2.1 </span> <a + id="x1-120002.1"></a>Definition</h3> +<!--l. 5--><p class="noindent" >An EAPI can be thought of as a ‘version’ of this specification to which a package conforms. An +EAPI value is a string as per section <a +href="#x1-240003.1.8">3.1.8<!--tex4ht:ref: sec:eapi-names --></a>, and is part of an ebuild’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 <a +href="#x1-450005.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-130002.2"></a>Defined EAPIs</h3> +<!--l. 21--><p class="noindent" >This specification defines EAPIs ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, and ‘8’. EAPI ‘0’ is the +‘original’ base EAPI. Each of the later EAPIs contains a number of extensions to its +predecessor. +</p><!--l. 25--><p class="noindent" >Except where explicitly noted, everything in this specification applies to all of the above +EAPIs. +</p><!--l. 28--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">2.3 </span> <a + id="x1-140002.3"></a>Reserved EAPIs</h3> +<!--l. 31--><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 3</span><br /><a + id="x1-150003"></a>Names and Versions</h2> +<h3 class="sectionHead"><span class="titlemark">3.1 </span> <a + id="x1-160003.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-170003.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, a dot or a plus sign. +</p><!--l. 12--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.2 </span> <a + id="x1-180003.1.2"></a>Package names</h4> +<!--l. 14--><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 or a plus sign, and must not end in a hyphen followed by anything matching the version +syntax described in section <a +href="#x1-250003.2">3.2<!--tex4ht:ref: sec:version-spec --></a>. +</p><!--l. 19--><p class="noindent" > +</p><dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 19--><p class="noindent" ><span +class="ecbx-1000">Note: </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></dd></dl> +<!--l. 21--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.3 </span> <a + id="x1-190003.1.3"></a>Slot names</h4> +<!--l. 23--><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, +a dot or a plus sign. +</p><!--l. 26--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.4 </span> <a + id="x1-200003.1.4"></a>USE flag names</h4> +<!--l. 27--><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 <a +href="#x1-11000011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>. +</p><!--l. 31--><p class="noindent" > + + +</p><dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 31--><p class="noindent" ><span +class="ecbx-1000">Note: </span>Usage of the at-sign is deprecated. It was previously required for <span +class="ectt-1000">LINGUAS</span>.</p></dd></dl> +<!--l. 33--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.5 </span> <a + id="x1-210003.1.5"></a>Repository names</h4> +<!--l. 35--><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. In addition, every repository name must also be a valid package name. +</p><!--l. 38--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.6 </span> <a + id="x1-220003.1.6"></a>License names</h4> +<!--l. 40--><p class="noindent" >A license name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_.-</span>]. It must not begin with a +hyphen, a dot or a plus sign. +</p><!--l. 43--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.7 </span> <a + id="x1-230003.1.7"></a>Keyword names</h4> +<!--l. 45--><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. +</p><!--l. 49--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.8 </span> <a + id="x1-240003.1.8"></a>EAPI names</h4> +<!--l. 51--><p class="noindent" >An EAPI name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_.-</span>]. It must not begin with a +hyphen, a dot or a plus sign. +</p><!--l. 54--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">3.2 </span> <a + id="x1-250003.2"></a>Version Specifications</h3> +<!--l. 56--><p class="noindent" >The package manager must neither impose fixed limits upon the number of version components, +nor upon the length of any component. Package managers should indicate or reject any version +that is invalid according to the rules below. +</p><!--l. 60--><p class="noindent" >A version starts with the number part, which is in the form <span +class="ectt-1000">[0-9]+(\.[0-9]+)* </span>(an unsigned +integer, followed by zero or more dot-prefixed unsigned integers). +</p><!--l. 63--><p class="noindent" >This may optionally be followed by one of <span +class="ectt-1000">[a-z] </span>(a lowercase letter). + + +</p><!--l. 65--><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>, each of which +may optionally be followed by an unsigned integer. Suffix and integer count as separate version +components. +</p><!--l. 69--><p class="noindent" >This may optionally be followed by the suffix <span +class="ectt-1000">-r </span>followed immediately by an unsigned integer (the +“revision number”). If this suffix is not present, it is assumed to be <span +class="ectt-1000">-r0</span>. +</p><!--l. 72--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">3.3 </span> <a + id="x1-260003.3"></a>Version Comparison</h3> +<!--l. 74--><p class="noindent" >Version specifications are compared component by component, moving from left to right, as +detailed in algorithm <a +href="#x1-26001r1">3.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. 80--><p class="noindent" ><a + id="x1-26001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 3.1: </span><span +class="content">Version comparison top-level logic</span></div><!--tex4ht:label?: x1-26001r1 --> +<div class="algorithmic"> +<a + id="x1-26002r1"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </span> let <span +class="cmmi-10">A </span>and <span +class="cmmi-10">B </span>be the versions to be compared <a + id="x1-26003r2"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:4.99878pt;"> </span> compare numeric components using algorithm <a +href="#x1-26008r2">3.2<!--tex4ht:ref: alg:version-comparison-numeric --></a> <a + id="x1-26004r3"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:4.99878pt;"> </span> compare letter components using algorithm <a +href="#x1-26041r4">3.4<!--tex4ht:ref: alg:version-comparison-letter --></a> <a + id="x1-26005r4"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:4.99878pt;"> </span> compare suffixes using algorithm <a +href="#x1-26049r5">3.5<!--tex4ht:ref: alg:version-comparison-suffix --></a> <a + id="x1-26006r5"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:4.99878pt;"> </span> compare revision components using algorithm <a +href="#x1-26083r7">3.7<!--tex4ht:ref: alg:version-comparison-revision --></a> <a + id="x1-26007r6"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">return </span> <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. 92--><p class="noindent" ><a + id="x1-26008r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 3.2: </span><span +class="content">Version comparison logic for numeric components</span></div><!--tex4ht:label?: x1-26008r2 --> +<div class="algorithmic"> +<a + id="x1-26009r7"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </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-26010r8"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">An</span><sub><span +class="cmr-7">0</span></sub> <span +class="cmmi-10">> Bn</span><sub><span +class="cmr-7">0</span></sub> using integer comparison <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26011r9"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-26012r10"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">An</span><sub><span +class="cmr-7">0</span></sub> <span +class="cmmi-10">< Bn</span><sub><span +class="cmr-7">0</span></sub> using integer comparison <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26013r11"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-26014r12"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-26015r13"></a> + <br /><span class="ALCitem">7:</span><span class="ALIndent" style="width:4.99878pt;"> </span> let <span +class="cmmi-10">Ann </span>be the number of numeric components of <span +class="cmmi-10">A</span> <a + id="x1-26016r14"></a> + <br /><span class="ALCitem">8:</span><span class="ALIndent" style="width:4.99878pt;"> </span> let <span +class="cmmi-10">Bnn </span>be the number of numeric components of <span +class="cmmi-10">B</span> <a + id="x1-26017r15"></a> + <br /><span class="ALCitem">9:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">for all</span> <span +class="cmmi-10">i </span>such that <span +class="cmmi-10">i </span><span +class="cmsy-10">≥ </span><span +class="cmr-10">1 </span>and <span +class="cmmi-10">i < Ann </span>and <span +class="cmmi-10">i < Bnn</span>, in ascending order <span +class="ecbx-1000">do</span><span class="for-body"> +<a + id="x1-26018r16"></a> +<br /><span class="ALCitem">10:</span><span class="ALIndent" style="width:14.99634pt;"> </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 <a +href="#x1-26025r3">3.3<!--tex4ht:ref: alg:version-comparison-numeric-nonfirst --></a> + </span><a + id="x1-26019r17"></a> +<br /><span class="ALCitem">11:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span><a + id="x1-26020r18"></a> +<br /><span class="ALCitem">12:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">Ann > Bnn</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26021r19"></a> +<br /><span class="ALCitem">13:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-26022r20"></a> +<br /><span class="ALCitem">14:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">Ann < Bnn</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26023r21"></a> +<br /><span class="ALCitem">15:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-26024r22"></a> +<br /><span class="ALCitem">16:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 115--><p class="noindent" ><a + id="x1-26025r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 3.3: </span><span +class="content">Version comparison logic for each numeric component after the first</span></div><!--tex4ht:label?: x1-26025r3 --> +<div class="algorithmic"> +<a + id="x1-26026r23"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> 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> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26027r24"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:14.99634pt;"> </span> let <span +class="cmmi-10">An</span><span +class="cmsy-10">′</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-26028r25"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:14.99634pt;"> </span> let <span +class="cmmi-10">Bn</span><span +class="cmsy-10">′</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-26029r26"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">An</span><span +class="cmsy-10">′</span><sub><span +class="cmmi-7">i</span></sub> <span +class="cmmi-10">> Bn</span><span +class="cmsy-10">′</span><sub><span +class="cmmi-7">i</span></sub> using ASCII stringwise comparison <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26030r27"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-26031r28"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">An</span><span +class="cmsy-10">′</span><sub><span +class="cmmi-7">i</span></sub> <span +class="cmmi-10">< Bn</span><span +class="cmsy-10">′</span><sub><span +class="cmmi-7">i</span></sub> using ASCII stringwise comparison <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26032r29"></a> + <br /><span class="ALCitem">7:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-26033r30"></a> + <br /><span class="ALCitem">8:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-26034r31"></a> + <br /><span class="ALCitem">9:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-26035r32"></a> +<br /><span class="ALCitem">10:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">An</span><sub><span +class="cmmi-7">i</span></sub> <span +class="cmmi-10">> Bn</span><sub><span +class="cmmi-7">i</span></sub> using integer comparison <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26036r33"></a> +<br /><span class="ALCitem">11:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-26037r34"></a> +<br /><span class="ALCitem">12:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">An</span><sub><span +class="cmmi-7">i</span></sub> <span +class="cmmi-10">< Bn</span><sub><span +class="cmmi-7">i</span></sub> using integer comparison <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26038r35"></a> +<br /><span class="ALCitem">13:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-26039r36"></a> +<br /><span class="ALCitem">14:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-26040r37"></a> +<br /><span class="ALCitem">15:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 137--><p class="noindent" ><a + id="x1-26041r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 3.4: </span><span +class="content">Version comparison logic for letter components</span></div><!--tex4ht:label?: x1-26041r4 --> +<div class="algorithmic"> +<a + id="x1-26042r38"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </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-26043r39"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:4.99878pt;"> </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-26044r40"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">Al > Bl </span>using ASCII stringwise comparison <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26045r41"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-26046r42"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">Al < Bl </span>using ASCII stringwise comparison <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26047r43"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-26048r44"></a> + <br /><span class="ALCitem">7:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 150--><p class="noindent" ><a + id="x1-26049r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 3.5: </span><span +class="content">Version comparison logic for suffixes</span></div><!--tex4ht:label?: x1-26049r5 --> +<div class="algorithmic"> +<a + id="x1-26050r45"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </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-26051r46"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:4.99878pt;"> </span> let <span +class="cmmi-10">Asn </span>be the number of suffixes of <span +class="cmmi-10">A</span> <a + id="x1-26052r47"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:4.99878pt;"> </span> let <span +class="cmmi-10">Bsn </span>be the number of suffixes of <span +class="cmmi-10">B</span> <a + id="x1-26053r48"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">for all</span> <span +class="cmmi-10">i </span>such that <span +class="cmmi-10">i </span><span +class="cmsy-10">≥ </span><span +class="cmr-10">0 </span>and <span +class="cmmi-10">i < Asn </span>and <span +class="cmmi-10">i < Bsn</span>, in ascending order <span +class="ecbx-1000">do</span><span class="for-body"> +<a + id="x1-26054r49"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:14.99634pt;"> </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 <a +href="#x1-26069r6">3.6<!--tex4ht:ref: alg:version-comparison-suffix-each --></a> + </span><a + id="x1-26055r50"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span><a + id="x1-26056r51"></a> + <br /><span class="ALCitem">7:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">Asn > Bsn</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26057r52"></a> + <br /><span class="ALCitem">8:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">As</span><sub><span +class="cmmi-7">Bsn</span></sub> is of type <span +class="ectt-1000">_p</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26058r53"></a> + <br /><span class="ALCitem">9:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-26059r54"></a> +<br /><span class="ALCitem">10:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-26060r55"></a> +<br /><span class="ALCitem">11:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-26061r56"></a> +<br /><span class="ALCitem">12:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-26062r57"></a> +<br /><span class="ALCitem">13:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">Asn < Bsn</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26063r58"></a> +<br /><span class="ALCitem">14:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">Bs</span><sub><span +class="cmmi-7">Asn</span></sub> is of type <span +class="ectt-1000">_p</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26064r59"></a> +<br /><span class="ALCitem">15:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-26065r60"></a> +<br /><span class="ALCitem">16:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-26066r61"></a> +<br /><span class="ALCitem">17:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-26067r62"></a> +<br /><span class="ALCitem">18:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-26068r63"></a> +<br /><span class="ALCitem">19:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 176--><p class="noindent" ><a + id="x1-26069r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 3.6: </span><span +class="content">Version comparison logic for each suffix</span></div><!--tex4ht:label?: x1-26069r6 --> +<div class="algorithmic"> +<a + id="x1-26070r64"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> <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) <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26071r65"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:14.99634pt;"> </span> let <span +class="cmmi-10">As</span><span +class="cmsy-10">′</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-26072r66"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:14.99634pt;"> </span> let <span +class="cmmi-10">Bs</span><span +class="cmsy-10">′</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-26073r67"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">As</span><span +class="cmsy-10">′</span><sub><span +class="cmmi-7">i</span></sub> <span +class="cmmi-10">> Bs</span><span +class="cmsy-10">′</span><sub><span +class="cmmi-7">i</span></sub>, using integer comparison <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26074r68"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-26075r69"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">As</span><span +class="cmsy-10">′</span><sub><span +class="cmmi-7">i</span></sub> <span +class="cmmi-10">< Bs</span><span +class="cmsy-10">′</span><sub><span +class="cmmi-7">i</span></sub>, using integer comparison <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26076r70"></a> + <br /><span class="ALCitem">7:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-26077r71"></a> + <br /><span class="ALCitem">8:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-26078r72"></a> + <br /><span class="ALCitem">9:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> 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"><</span> <span +class="ectt-1000">_beta</span> <span +class="cmmi-10"><</span> <span +class="ectt-1000">_pre</span> <span +class="cmmi-10"><</span> <span +class="ectt-1000">_rc</span> <span +class="cmmi-10"><</span> <span +class="ectt-1000">_p</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26079r73"></a> +<br /><span class="ALCitem">10:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-26080r74"></a> +<br /><span class="ALCitem">11:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-26081r75"></a> +<br /><span class="ALCitem">12:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-26082r76"></a> +<br /><span class="ALCitem">13:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 196--><p class="noindent" ><a + id="x1-26083r7"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 3.7: </span><span +class="content">Version comparison logic for revision components</span></div><!--tex4ht:label?: x1-26083r7 --> +<div class="algorithmic"> +<a + id="x1-26084r77"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </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-26085r78"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:4.99878pt;"> </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-26086r79"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">Ar > Br </span>using integer comparison <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26087r80"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-26088r81"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">Ar < Br </span>using integer comparison <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-26089r82"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-26090r83"></a> + <br /><span class="ALCitem">7:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">3.4 </span> <a + id="x1-270003.4"></a>Uniqueness of Versions</h3> +<!--l. 211--><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 4</span><br /><a + id="x1-280004"></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’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-290004.1"></a>Top Level</h3> +<!--l. 10--><p class="noindent" >An ebuild repository shall occupy one directory on disk, with the following subdirectories: +</p><!--l. 13--><p class="noindent" > + </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 <a +href="#x1-300004.2">4.2<!--tex4ht:ref: sec:category-dirs --></a>. + </li> + <li class="compactitem">A <span +class="ectt-1000">profiles </span>directory, described in section <a +href="#x1-320004.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 <a +href="#x1-370004.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 <a +href="#x1-380004.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 <a +href="#x1-390004.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> +<h3 class="sectionHead"><span class="titlemark">4.2 </span> <a + id="x1-300004.2"></a>Category Directories</h3> +<!--l. 28--><p class="noindent" >Each category provided by the repository (see also: the <span +class="ectt-1000">profiles/categories </span>file, section <a +href="#x1-320004.4">4.4<!--tex4ht:ref: sec:profiles-dir --></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 <a +href="#x1-156000A">A<!--tex4ht:ref: ch:metadata-xml --></a>. Optional. + </li> + <li class="compactitem">Zero or more package directories, one for each package in the category, as described + in section <a +href="#x1-310004.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-310004.3"></a>Package Directories</h3> +<!--l. 50--><p class="noindent" >A package directory contains the following: +</p><!--l. 53--><p class="noindent" > + </p><ul> + <li class="compactitem">Zero or more ebuilds. These are as described in chapter <a +href="#x1-580006">6<!--tex4ht:ref: ch:ebuild-format --></a> and others. + </li> + <li class="compactitem">A <span +class="ectt-1000">metadata.xml </span>file, as described in appendix <a +href="#x1-156000A">A<!--tex4ht:ref: ch: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 repository. Optional. + </li> + <li class="compactitem">A <span +class="ectt-1000">Manifest </span>file, whose format is described in <span class="cite">[<a +href="#XGlep74">1</a>]</span>. Can be omitted if the file would be + empty. + </li> + <li class="compactitem">A <span +class="ectt-1000">files </span>directory, containing any support files needed by the ebuilds. Optional.</li></ul> +<!--l. 62--><p class="noindent" >Any ebuild in a package directory must be named <span +class="ectt-1000">name-ver.ebuild</span>, where <span +class="ectt-1000">name </span>is the +(unqualified) package name, and <span +class="ectt-1000">ver </span>is the package’s version. Package managers must ignore any +ebuild file that does not match these rules. +</p><!--l. 66--><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. 71--><p class="noindent" >A package directory may contain other files or directories, whose purpose is not covered by this +specification. +</p> +<h3 class="sectionHead"><span class="titlemark">4.4 </span> <a + id="x1-320004.4"></a>The Profiles Directory</h3> +<!--l. 77--><p class="noindent" >The profiles directory shall contain zero or more profile directories as described in chapter <a +href="#x1-410005">5<!--tex4ht:ref: ch:profiles --></a>, as +well as the following files and directories. In any line-based file, lines beginning with a <span +class="ectt-1000"># </span>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. 82--><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 profiles +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. 87--><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. 90--><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"> + <!--l. 94--><p class="noindent" > +<span +class="ecbx-1000">arch.list</span> </p></dt><dd +class="description"> + <!--l. 94--><p class="noindent" >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. + + + </p></dd><dt class="description"> + <!--l. 96--><p class="noindent" > +<span +class="ecbx-1000">categories</span> </p></dt><dd +class="description"> + <!--l. 96--><p class="noindent" >Contains a list, one entry per line, of categories provided by this repository. + </p></dd><dt class="description"> + <!--l. 97--><p class="noindent" > +<span +class="ecbx-1000">eapi</span> </p></dt><dd +class="description"> + <!--l. 97--><p class="noindent" >See above. + </p></dd><dt class="description"> + <!--l. 98--><p class="noindent" > +<span +class="ecbx-1000">info_pkgs</span> </p></dt><dd +class="description"> + <!--l. 98--><p class="noindent" >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 ‘system information’ + listing. + </p></dd><dt class="description"> + <!--l. 101--><p class="noindent" > +<span +class="ecbx-1000">info_vars</span> </p></dt><dd +class="description"> + <!--l. 101--><p class="noindent" >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 ‘system information’ listing. + </p></dd><dt class="description"> + <!--l. 104--><p class="noindent" > +<span +class="ecbx-1000">package.mask</span> </p></dt><dd +class="description"> + <!--l. 104--><p class="noindent" >Contains a list, one entry per line, of package dependency specifications (using the + directory’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. + </p><!--l. 109--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">package-mask-dir</span></span></span> For EAPIs listed in table <a +href="#x1-32001r1">4.1<!--tex4ht:ref: tab:package-mask-dir --></a> as supporting it, <span +class="ectt-1000">package.mask </span>can + be a directory instead of a regular file. Files contained in that directory, unless their + name begins with a dot, will be concatenated in order of their filename in the POSIX + locale and the result will be processed as if it were a single file. Any subdirectories will + be ignored. + </p></dd><dt class="description"> + <!--l. 114--><p class="noindent" > +<span +class="ecbx-1000">profiles.desc</span> </p></dt><dd +class="description"> + <!--l. 114--><p class="noindent" >Described below in section <a +href="#x1-330004.4.1">4.4.1<!--tex4ht:ref: sec:profiles.desc --></a>. + </p></dd><dt class="description"> + <!--l. 115--><p class="noindent" > +<span +class="ecbx-1000">repo_name</span> </p></dt><dd +class="description"> + <!--l. 115--><p class="noindent" >Contains, on a single line, the name of this repository. The repository name must + conform to section <a +href="#x1-210003.1.5">3.1.5<!--tex4ht:ref: sec:repository-names --></a>. + </p></dd><dt class="description"> + <!--l. 117--><p class="noindent" > +<span +class="ecbx-1000">thirdpartymirrors</span> </p></dt><dd +class="description"> + <!--l. 117--><p class="noindent" >Described below in section <a +href="#x1-340004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a>. + + + </p></dd><dt class="description"> + <!--l. 118--><p class="noindent" > +<span +class="ecbx-1000">use.desc</span> </p></dt><dd +class="description"> + <!--l. 118--><p class="noindent" >Contains descriptions of valid global USE flags for this repository. The format is + described in section <a +href="#x1-350004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>. + </p></dd><dt class="description"> + <!--l. 120--><p class="noindent" > +<span +class="ecbx-1000">use.local.desc</span> </p></dt><dd +class="description"> + <!--l. 120--><p class="noindent" >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 <a +href="#x1-350004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>. + </p></dd><dt class="description"> + <!--l. 122--><p class="noindent" > +<span +class="ecbx-1000">desc/</span> </p></dt><dd +class="description"> + <!--l. 122--><p class="noindent" >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"><varname>.desc</span>, where <span +class="ectt-1000"><varname> </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 <a +href="#x1-350004.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. + </p></dd><dt class="description"> + <!--l. 127--><p class="noindent" > +<span +class="ecbx-1000">updates/</span> </p></dt><dd +class="description"> + <!--l. 127--><p class="noindent" >This directory is described in section <a +href="#x1-360004.4.4">4.4.4<!--tex4ht:ref: sec:updates-dir --></a>.</p></dd></dl> +<div class="table"> + + +<!--l. 131--><p class="noindent" ><a + id="x1-32001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 4.1: </span><span +class="content">EAPIs supporting a directory for <span +class="ectt-1000">package.mask</span></span></div><!--tex4ht:label?: x1-32001r1 --> +<div class="tabular"> + <table id="TBL-2" class="tabular" + +><colgroup id="TBL-2-1g"><col +id="TBL-2-1" /><col +id="TBL-2-2" /></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="ectt-1000">package.mask </span><span +class="ecbx-1000">can be a directory?</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"> 0, 1, 2, 3, 4, 5, 6 </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"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-2" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">4.4.1 </span> <a + id="x1-330004.4.1"></a>The profiles.desc file</h4> +<!--l. 146--><p class="noindent" ><span +class="ectt-1000">profiles.desc </span>is a line-based file, with the standard commenting rules from section <a +href="#x1-320004.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> +<pre class="verbatim" id="verbatim-1"> +<keyword> <profile path> <stability></pre> +<!--l. 153--><p class="nopar" > +</p><!--l. 155--><p class="noindent" >Where: +</p><!--l. 158--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000"><keyword> </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"><profile path> </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"><stability> </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. 167--><p class="noindent" >Fields are whitespace-delimited. +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.2 </span> <a + id="x1-340004.4.2"></a>The thirdpartymirrors file</h4> +<!--l. 171--><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> +<pre class="verbatim" id="verbatim-2"> +<mirror name> <mirror 1> <mirror 2> ... <mirror n></pre> +<!--l. 176--><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. 183--><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. 188--><p class="noindent" >The mirror with the name equal to the repository’s name (and if the repository has a master, the +master’s name) may be consulted for all downloads. +</p><!--l. 191--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.3 </span> <a + id="x1-350004.4.3"></a>use.desc and related files</h4> +<!--l. 193--><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> +<pre class="verbatim" id="verbatim-3"> +<flagname> - <description></pre> +<!--l. 197--><p class="nopar" > +</p><!--l. 199--><p class="noindent" ><span +class="ectt-1000">use.local.desc </span>contains descriptions of every valid local USE flag—those that apply only to a +small number of packages, or that have different meanings for different packages. Its format +is: + + +</p> +<pre class="verbatim" id="verbatim-4"> +<category/package>:<flagname> - <description></pre> +<!--l. 203--><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. 208--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.4 </span> <a + id="x1-360004.4.4"></a>The updates directory</h4> +<!--l. 210--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">updates-filenames</span></span></span> 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. For EAPIs so +specified by table <a +href="#x1-36001r2">4.2<!--tex4ht:ref: tab:updates-filenames --></a>, 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>. For other +EAPIs, all regular files in this directory will be processed, unless their name begins with a +dot. +</p><!--l. 217--><p class="noindent" >The format of each file is again line-based, with each line having one of the following +formats: + + +</p> +<pre class="verbatim" id="verbatim-5"> +move <qpn1> <qpn2> +slotmove <spec> <slot1> <slot2></pre> +<!--l. 221--><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. 225--><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. 229--><p class="noindent" >It is unspecified in what order the files in the <span +class="ectt-1000">updates </span>directory are processed. Lines within each +file are processed in ascending order. +</p><!--l. 232--><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> +<div class="table"> + + +<!--l. 237--><p class="noindent" ><a + id="x1-36001r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 4.2: </span><span +class="content">Naming rules for files in <span +class="ectt-1000">updates </span>directory for EAPIs</span></div><!--tex4ht:label?: x1-36001r2 --> +<div class="tabular"> + <table id="TBL-3" class="tabular" + +><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">Files per quarter year?</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"> 0, 1, 2, 3, 4, 5, 6, 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-2" +class="td11"> Yes </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"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-2" +class="td11"> No </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">4.5 </span> <a + id="x1-370004.5"></a>The Licenses Directory</h3> +<!--l. 253--><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 <a +href="#x1-620007.3">7.3<!--tex4ht:ref: sec:optional-vars --></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. 258--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.6 </span> <a + id="x1-380004.6"></a>The Eclass Directory</h3> +<!--l. 261--><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 chapter <a +href="#x1-10400010">10<!--tex4ht:ref: ch:eclasses --></a>. It may also contain, in their own directory, support files +needed by these eclasses. +</p><!--l. 265--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.7 </span> <a + id="x1-390004.7"></a>The Metadata Directory</h3> +<!--l. 268--><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. 273--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.7.1 </span> <a + id="x1-400004.7.1"></a>The metadata cache</h4> +<!--l. 275--><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 chapter <a +href="#x1-15100014">14<!--tex4ht:ref: ch:metadata-cache --></a>. + + + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 5</span><br /><a + id="x1-410005"></a>Profiles</h2> +<h3 class="sectionHead"><span class="titlemark">5.1 </span> <a + id="x1-420005.1"></a>General Principles</h3> +<!--l. 5--><p class="noindent" >Generally, a profile defines information specific to a certain ‘type’ of system—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-430005.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-440005.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’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’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-450005.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 neither inherited +via the <span +class="ectt-1000">parent </span>file nor in subdirectories. + + +</p><!--l. 38--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.3 </span> <a + id="x1-460005.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—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-470005.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—instead, each variable is +combined or overridden individually as described in section <a +href="#x1-550005.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 be continued over multiple physical lines by + either a simple newline or a backslash-escaped newline. + </li> + <li class="compactitem">Backslashes, except for line continuations, are not allowed.</li></ul> +<!--l. 67--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.5 </span> <a + id="x1-480005.2.5"></a>Simple line-based files</h4> +<!--l. 69--><p class="noindent" >These files are a simple one-item-per-line list, which is inherited in the following manner: the +parent profile’s list is taken, and the current profile’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. Blank lines and those beginning with a <span +class="ectt-1000"># </span>are +discarded. +</p><!--l. 74--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">profile-file-dirs</span></span></span> In EAPIs listed in table <a +href="#x1-48001r1">5.1<!--tex4ht:ref: tab:profile-file-dirs --></a> as supporting directories for profile files, any of the +files <span +class="ectt-1000">package.mask</span>, <span +class="ectt-1000">package.use</span>, <span +class="ectt-1000">use.* </span>and <span +class="ectt-1000">package.use.* </span>mentioned below can be a +directory instead of a regular file. Files contained in that directory, unless their name +begins with a dot, will be concatenated in order of their filename in the POSIX locale +and the result will be processed as if it were a single file. Any subdirectories will be +ignored. +</p> + + +<div class="table"> + + +<!--l. 82--><p class="noindent" ><a + id="x1-48001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 5.1: </span><span +class="content">EAPIs supporting directories for profile files</span></div><!--tex4ht:label?: x1-48001r1 --> +<div class="tabular"> + <table id="TBL-4" class="tabular" + +><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 directories for profile files?</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"> 0, 1, 2, 3, 4, 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-2" +class="td11"> No </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"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-2" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">5.2.6 </span> <a + id="x1-490005.2.6"></a>packages</h4> +<!--l. 96--><p class="noindent" >The <span +class="ectt-1000">packages </span>file is used to define the ‘system set’ 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 it 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. 102--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.7 </span> <a + id="x1-500005.2.7"></a>packages.build</h4> +<!--l. 103--><p class="noindent" >The <span +class="ectt-1000">packages.build </span>file is used by Gentoo’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. 107--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.8 </span> <a + id="x1-510005.2.8"></a>package.mask</h4> +<!--l. 108--><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’s configuration. In some EAPIs, <span +class="ectt-1000">package.mask </span>can be a +directory instead of a regular file as per section <a +href="#x1-480005.2.5">5.2.5<!--tex4ht:ref: sec:line-stacking --></a>. +</p><!--l. 113--><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 <a +href="#x1-320004.4">4.4<!--tex4ht:ref: sec:profiles-dir --></a>). +</p><!--l. 117--><p class="noindent" > +</p><dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 117--><p class="noindent" ><span +class="ecbx-1000">Note: </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></dd></dl> +<!--l. 119--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.9 </span> <a + id="x1-520005.2.9"></a>package.provided</h4> +<!--l. 120--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">package-provided</span></span></span> <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. Supported +in EAPIs as per table <a +href="#x1-52001r2">5.2<!--tex4ht:ref: tab:package-provided --></a>. +</p> +<div class="table"> + + +<!--l. 127--><p class="noindent" ><a + id="x1-52001r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 5.2: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">package.provided </span>in profiles</span></div><!--tex4ht:label?: x1-52001r2 --> +<div class="tabular"> + <table id="TBL-5" class="tabular" + +><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="ecbx-1000">Supports </span><span +class="ectt-1000">package.provided</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"> 0, 1, 2, 3, 4, 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-2" +class="td11"> Optionally </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"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-2" +class="td11"> No </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">5.2.10 </span> <a + id="x1-530005.2.10"></a>package.use</h4> +<!--l. 141--><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’s +EAPI. In some EAPIs, <span +class="ectt-1000">package.use </span>can be a directory instead of a regular file as per +section <a +href="#x1-480005.2.5">5.2.5<!--tex4ht:ref: sec:line-stacking --></a>. +</p><!--l. 148--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.11 </span> <a + id="x1-540005.2.11"></a>USE masking and forcing</h4> +<!--l. 150--><p class="noindent" >This section covers the eight files <span +class="ectt-1000">use.mask</span>, <span +class="ectt-1000">use.force</span>, <span +class="ectt-1000">use.stable.mask</span>, <span +class="ectt-1000">use.stable.force</span>, +<span +class="ectt-1000">package.use.mask</span>, <span +class="ectt-1000">package.use.force</span>, <span +class="ectt-1000">package.use.stable.mask</span>, and <span +class="ectt-1000">package.use.</span> +<span +class="ectt-1000">stable.force</span>. They are described together because they interact in a non-trivial manner. In some +EAPIs, these files can be directories instead of regular files as per section <a +href="#x1-480005.2.5">5.2.5<!--tex4ht:ref: sec:line-stacking --></a>. +</p><!--l. 156--><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. +</p><!--l. 160--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">stablemask</span></span></span> In profile directories with an EAPI supporting stable masking, as listed in table <a +href="#x1-54001r3">5.3<!--tex4ht:ref: tab:profile-stablemask --></a>, +the same is true for <span +class="ectt-1000">use.stable.mask</span>, <span +class="ectt-1000">use.stable.force</span>, <span +class="ectt-1000">package.use.stable.mask </span>and +<span +class="ectt-1000">package.use.stable.force</span>. These files, however, only act on packages that are merged due to a +stable keyword in the sense of subsection <a +href="#x1-650007.3.3">7.3.3<!--tex4ht:ref: sec:keywords --></a>. Thus, these files can be used to restrict the feature +set deemed stable in a package. +</p> +<div class="table"> + + +<!--l. 169--><p class="noindent" ><a + id="x1-54001r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 5.3: </span><span +class="content">Profile directory support for masking/forcing use flags in stable versions only</span></div><!--tex4ht:label?: x1-54001r3 --> +<div class="tabular"> + <table id="TBL-6" class="tabular" + +><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 masking/forcing use flags in stable versions?</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"> 0, 1, 2, 3, 4 </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-2" +class="td11"> No </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"> 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-2" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 182--><p class="noindent" >The precise manner in which the eight files 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 <a +href="#x1-54002r1">5.1<!--tex4ht:ref: alg:use-masking --></a>. </p><div class="algorithm"> + + +<!--l. 186--><p class="noindent" ><a + id="x1-54002r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 5.1: </span><span +class="content"><span +class="ectt-1000">USE </span>masking logic</span></div><!--tex4ht:label?: x1-54002r1 --> +<div class="algorithmic"> +<a + id="x1-54003r84"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </span> let masked = false <a + id="x1-54004r85"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">for</span> each profile in the inheritance tree, depth first <span +class="ecbx-1000">do</span><span class="for-body"> +<a + id="x1-54005r86"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="ectt-1000">use.mask </span>contains <span +class="ecti-1000">flag</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-54006r87"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:24.9939pt;"> </span> let masked = true + </span><a + id="x1-54007r88"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> <span +class="ectt-1000">use.mask </span>contains <span +class="ecti-1000">-flag</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-54008r89"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:24.9939pt;"> </span> let masked = false + </span><a + id="x1-54009r90"></a> + <br /><span class="ALCitem">7:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-54010r91"></a> + <br /><span class="ALCitem">8:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">if</span> stable keyword in use <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-54011r92"></a> + <br /><span class="ALCitem">9:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="ectt-1000">use.stable.mask </span>contains <span +class="ecti-1000">flag</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-54012r93"></a> +<br /><span class="ALCitem">10:</span><span class="ALIndent" style="width:34.99146pt;"> </span> let masked = true + </span><a + id="x1-54013r94"></a> +<br /><span class="ALCitem">11:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> <span +class="ectt-1000">use.stable.mask </span>contains <span +class="ecti-1000">-flag</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-54014r95"></a> +<br /><span class="ALCitem">12:</span><span class="ALIndent" style="width:34.99146pt;"> </span> let masked = false + </span><a + id="x1-54015r96"></a> +<br /><span class="ALCitem">13:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-54016r97"></a> +<br /><span class="ALCitem">14:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-54017r98"></a> +<br /><span class="ALCitem">15:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">for</span> each <span +class="cmmi-10">line </span>in package.use.mask, in order, for which the spec matches <span +class="cmmi-10">package</span> <span +class="ecbx-1000">do</span><span class="for-body"> +<a + id="x1-54018r99"></a> +<br /><span class="ALCitem">16:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">line </span>contains <span +class="ecti-1000">flag</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-54019r100"></a> +<br /><span class="ALCitem">17:</span><span class="ALIndent" style="width:34.99146pt;"> </span> let masked = true + </span><a + id="x1-54020r101"></a> +<br /><span class="ALCitem">18:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">line </span>contains <span +class="ecti-1000">-flag</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-54021r102"></a> +<br /><span class="ALCitem">19:</span><span class="ALIndent" style="width:34.99146pt;"> </span> let masked = false + </span><a + id="x1-54022r103"></a> +<br /><span class="ALCitem">20:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-54023r104"></a> +<br /><span class="ALCitem">21:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span><a + id="x1-54024r105"></a> +<br /><span class="ALCitem">22:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">if</span> stable keyword in use <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-54025r106"></a> +<br /><span class="ALCitem">23:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">for</span> each <span +class="cmmi-10">line </span>in package.use.stable.mask, in order, for which the spec matches + <span +class="cmmi-10">package</span> <span +class="ecbx-1000">do</span><span class="for-body"> +<a + id="x1-54026r107"></a> +<br /><span class="ALCitem">24:</span><span class="ALIndent" style="width:34.99146pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">line </span>contains <span +class="ecti-1000">flag</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-54027r108"></a> +<br /><span class="ALCitem">25:</span><span class="ALIndent" style="width:44.98901pt;"> </span> let masked = true + </span><a + id="x1-54028r109"></a> +<br /><span class="ALCitem">26:</span><span class="ALIndent" style="width:34.99146pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> <span +class="cmmi-10">line </span>contains <span +class="ecti-1000">-flag</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-54029r110"></a> +<br /><span class="ALCitem">27:</span><span class="ALIndent" style="width:44.98901pt;"> </span> let masked = false + </span><a + id="x1-54030r111"></a> +<br /><span class="ALCitem">28:</span><span class="ALIndent" style="width:34.99146pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-54031r112"></a> +<br /><span class="ALCitem">29:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span> + + + </span><a + id="x1-54032r113"></a> +<br /><span class="ALCitem">30:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-54033r114"></a> +<br /><span class="ALCitem">31:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 222--><p class="noindent" >Stable restrictions (“stable keyword in use” in algorithm <a +href="#x1-54002r1">5.1<!--tex4ht:ref: alg:use-masking --></a>) are applied exactly if replacing in +<span +class="ectt-1000">KEYWORDS </span>all stable keywords by the corresponding tilde prefixed keywords (see subsection <a +href="#x1-650007.3.3">7.3.3<!--tex4ht:ref: sec:keywords --></a>) +would result in the package installation being prevented due to the <span +class="ectt-1000">KEYWORDS </span>setting. +</p><!--l. 227--><p class="noindent" >The logic for <span +class="ectt-1000">use.force</span>, <span +class="ectt-1000">use.stable.force</span>, <span +class="ectt-1000">package.use.force</span>, and <span +class="ectt-1000">package.use.</span> +<span +class="ectt-1000">stable.force </span>is identical. If a flag is both masked and forced, the mask is considered to take +precedence. +</p><!--l. 231--><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. 233--><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-550005.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’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-560005.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’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 <a +href="#x1-56001r4">5.4<!--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" >If the package manager supports any EAPI listed in table <a +href="#x1-56002r5">5.5<!--tex4ht:ref: tab:profile-env-unset --></a> as using <span +class="ectt-1000">ENV_UNSET</span>, the following +variable must also be treated incrementally; otherwise, it may or may not be treated +incrementally: + </p><ul> + <li class="compactitem"><span +class="ectt-1000">ENV_UNSET</span></li></ul> +<!--l. 39--><p class="noindent" >Other variables, except where they affect only package-manager-specific functionality (such as +Portage’s <span +class="ectt-1000">FEATURES </span>variable), must not be treated incrementally—later definitions shall completely +override those in parent profiles. +</p> +<div class="table"> + + +<!--l. 44--><p class="noindent" ><a + id="x1-56001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 5.4: </span><span +class="content">Profile-defined <span +class="ectt-1000">IUSE </span>injection for EAPIs</span></div><!--tex4ht:label?: x1-56001r4 --> +<div class="tabular"> + <table id="TBL-7" class="tabular" + +><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 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-7-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-1" +class="td11"> 0, 1, 2, 3, 4 </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"> 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-2" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 58--><p class="noindent" ><a + id="x1-56002r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 5.5: </span><span +class="content">Profile-defined unsetting of variables in EAPIs</span></div><!--tex4ht:label?: x1-56002r5 --> +<div class="tabular"> + <table id="TBL-8" class="tabular" + +><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">ENV_UNSET</span><span +class="ecbx-1000">?</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"> 0, 1, 2, 3, 4, 5, 6 </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"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-2" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">5.3.2 </span> <a + id="x1-570005.3.2"></a>Specific variables and their meanings</h4> +<!--l. 72--><p class="noindent" >The following variables have specific meanings when set in profiles. + </p><dl class="description"><dt class="description"> + <!--l. 74--><p class="noindent" > +<span +class="ecbx-1000">ARCH</span> </p></dt><dd +class="description"> + <!--l. 74--><p class="noindent" >The system’s architecture. Must be a value listed in <span +class="ectt-1000">profiles/arch.list</span>; see + section <a +href="#x1-320004.4">4.4<!--tex4ht:ref: sec:profiles-dir --></a> for more information. Must be equal to the primary <span +class="ectt-1000">KEYWORD </span>for this profile. + </p></dd><dt class="description"> + <!--l. 77--><p class="noindent" > +<span +class="ecbx-1000">CONFIG_PROTECT, CONFIG_PROTECT_MASK</span> </p></dt><dd +class="description"> + <!--l. 77--><p class="noindent" >Contain whitespace-delimited lists used to control the configuration file protection. + Described more fully in section <a +href="#x1-14600013.3.3">13.3.3<!--tex4ht:ref: sec:config-protect --></a>. + </p></dd><dt class="description"> + <!--l. 79--><p class="noindent" > +<span +class="ecbx-1000">USE</span> </p></dt><dd +class="description"> + <!--l. 79--><p class="noindent" >Defines the list of default USE flags for this profile. Flags may be added or removed + by the user’s configuration. <span +class="ectt-1000">USE_EXPAND </span>values must not be specified in this way. + </p></dd><dt class="description"> + <!--l. 81--><p class="noindent" > +<span +class="ecbx-1000">USE_EXPAND</span> </p></dt><dd +class="description"> + <!--l. 81--><p class="noindent" >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 <a +href="#x1-11000011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for + details. + </p></dd><dt class="description"> + <!--l. 84--><p class="noindent" > +<span +class="ecbx-1000">USE_EXPAND_UNPREFIXED</span> </p></dt><dd +class="description"> + <!--l. 84--><p class="noindent" >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 <a +href="#x1-56001r4">5.4<!--tex4ht:ref: tab:profile-iuse-injection-table --></a>), this list must + contain at least <span +class="ectt-1000">ARCH</span>. See section <a +href="#x1-11000011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for details. + </p></dd><dt class="description"> + <!--l. 88--><p class="noindent" > +<span +class="ecbx-1000">USE_EXPAND_HIDDEN</span> </p></dt><dd +class="description"> + <!--l. 88--><p class="noindent" >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. + </p></dd><dt class="description"> + <!--l. 91--><p class="noindent" > +<span +class="ecbx-1000">USE_EXPAND_IMPLICIT, IUSE_IMPLICIT</span> </p></dt><dd +class="description"> + <!--l. 91--><p class="noindent" >Used to inject implicit values into <span +class="ectt-1000">IUSE</span>. See section <a +href="#x1-11000011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for details. + + + </p></dd><dt class="description"> + <!--l. 93--><p class="noindent" > +<span +class="ecbx-1000">ENV_UNSET</span> </p></dt><dd +class="description"> + <!--l. 93--><p class="noindent" >Contains a whitespace-delimited list of variables that the package manager shall unset. + See section <a +href="#x1-10900011.1">11.1<!--tex4ht:ref: sec:ebuild-env-vars --></a> for details.</p></dd></dl> +<!--l. 97--><p class="noindent" >In addition, for EAPIs listed in table <a +href="#x1-56001r4">5.4<!--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 <a +href="#x1-11000011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>. +</p><!--l. 101--><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 6</span><br /><a + id="x1-580006"></a>Ebuild File Format</h2> +<!--l. 4--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">bash-version</span></span></span> 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 as listed in table <a +href="#x1-58001r1">6.1<!--tex4ht:ref: tab:bash-version --></a>, or any later version. If +possible, the package manager should set the shell’s compatibility level to the exact version +specified. It must ensure that any such compatibility settings (e. g. the <span +class="ectt-1000">BASH_COMPAT </span>variable) are +not exported to external programs. +</p><!--l. 10--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">failglob</span></span></span> For EAPIs listed such in table <a +href="#x1-58001r1">6.1<!--tex4ht:ref: tab:bash-version --></a>, the <span +class="ectt-1000">failglob </span>option of bash is set in the global +scope of ebuilds. If set, failed pattern matches during filename expansion result in an error when +the ebuild is being sourced. +</p><!--l. 14--><p class="noindent" >Name reference variables (introduced in bash version 4.3) must not be used, except in local +scope. +</p><!--l. 16--><p class="noindent" >The file encoding must be UTF-8 with Unix-style newlines. When sourced, the ebuild must define +certain variables and functions (see chapters <a +href="#x1-590007">7<!--tex4ht:ref: ch:ebuild-vars --></a> and <a +href="#x1-840009">9<!--tex4ht:ref: ch: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> +<div class="table"> + + +<!--l. 22--><p class="noindent" ><a + id="x1-58001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 6.1: </span><span +class="content">Bash version and options</span></div><!--tex4ht:label?: x1-58001r1 --> +<div class="tabular"> + <table id="TBL-9" class="tabular" + +><colgroup id="TBL-9-1g"><col +id="TBL-9-1" /><col +id="TBL-9-2" /><col +id="TBL-9-3" /></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">Bash version</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">failglob </span><span +class="ecbx-1000">in global scope?</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"> 0, 1, 2, 3, 4, 5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-2" +class="td11"> 3.2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-3" +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"> 6, 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-2" +class="td11"> 4.2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-3" +class="td11"> Yes </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"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-2" +class="td11"> 5.0 </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-3" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> + + + + + + + + +<h2 class="chapterHead"><span class="titlemark">Chapter 7</span><br /><a + id="x1-590007"></a>Ebuild-defined Variables</h2> +<dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 5--><p class="noindent" ><span +class="ecbx-1000">Note: </span>This chapter describes variables that may or must be defined by ebuilds. For variables +that are passed from the package manager to the ebuild, see section <a +href="#x1-10900011.1">11.1<!--tex4ht:ref: sec:ebuild-env-vars --></a>.</p></dd></dl> +<!--l. 7--><p class="noindent" >If any of these variables are set to invalid values, or if any of the mandatory variables are +undefined, the package manager’s behaviour is undefined; ideally, an error in one ebuild should not +prevent operations upon other ebuilds or packages. +</p> +<h3 class="sectionHead"><span class="titlemark">7.1 </span> <a + id="x1-600007.1"></a>Metadata Invariance</h3> +<!--l. 14--><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. 20--><p class="noindent" >Globally defined ebuild variables without a special meaning must similarly not rely upon variable +data. +</p><!--l. 23--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">7.2 </span> <a + id="x1-610007.2"></a>Mandatory Ebuild-defined Variables</h3> +<!--l. 26--><p class="noindent" >All ebuilds must define at least the following variables: + </p><dl class="description"><dt class="description"> + <!--l. 29--><p class="noindent" > +<span +class="ecbx-1000">DESCRIPTION</span> </p></dt><dd +class="description"> + <!--l. 29--><p class="noindent" >A short human-readable description of the package’s purpose. May be defined by an + eclass. Must not be empty. + </p></dd><dt class="description"> + <!--l. 31--><p class="noindent" > +<span +class="ecbx-1000">SLOT</span> </p></dt><dd +class="description"> + <!--l. 31--><p class="noindent" >The package’s slot. Must be a valid slot name, as per section <a +href="#x1-190003.1.3">3.1.3<!--tex4ht:ref: sec:slot-names --></a>. May be defined by + an eclass. Must not be empty. + </p><!--l. 34--><p class="noindent" >In EAPIs shown in table <a +href="#x1-79001r7">8.7<!--tex4ht:ref: tab:slot-deps-table --></a> as supporting sub-slots, the <span +class="ectt-1000">SLOT </span>variable may contain + an optional sub-slot part that follows the regular slot and is delimited by a <span +class="ectt-1000">/ </span>character. + The sub-slot must be a valid slot name, as per section <a +href="#x1-190003.1.3">3.1.3<!--tex4ht:ref: sec:slot-names --></a>. The sub-slot is used to + represent cases in which an upgrade to a new version of a package with a different + sub-slot may require dependent packages to be rebuilt. When the sub-slot part is + omitted from the <span +class="ectt-1000">SLOT </span>definition, the package is considered to have an implicit sub-slot + which is equal to the regular slot.</p></dd></dl> + + +<h3 class="sectionHead"><span class="titlemark">7.3 </span> <a + id="x1-620007.3"></a>Optional Ebuild-defined Variables</h3> +<!--l. 46--><p class="noindent" >Ebuilds may define any of the following variables: + </p><dl class="description"><dt class="description"> + <!--l. 49--><p class="noindent" > +<span +class="ecbx-1000">EAPI</span> </p></dt><dd +class="description"> + <!--l. 49--><p class="noindent" >The EAPI. See below in section <a +href="#x1-630007.3.1">7.3.1<!--tex4ht:ref: sec:eapi --></a>. + </p></dd><dt class="description"> + <!--l. 50--><p class="noindent" > +<span +class="ecbx-1000">HOMEPAGE</span> </p></dt><dd +class="description"> + <!--l. 50--><p class="noindent" >The URI or URIs for a package’s homepage, including protocols. See section <a +href="#x1-730008.2">8.2<!--tex4ht:ref: sec:dependency-spec --></a> for + full syntax. + </p></dd><dt class="description"> + <!--l. 52--><p class="noindent" > +<span +class="ecbx-1000">SRC_URI</span> </p></dt><dd +class="description"> + <!--l. 52--><p class="noindent" >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 <a +href="#x1-340004.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 <a +href="#x1-640007.3.2">7.3.2<!--tex4ht:ref: sec:src-uri-behaviour --></a> for description and + section <a +href="#x1-730008.2">8.2<!--tex4ht:ref: sec:dependency-spec --></a> for full syntax. + </p></dd><dt class="description"> + <!--l. 57--><p class="noindent" > +<span +class="ecbx-1000">LICENSE</span> </p></dt><dd +class="description"> + <!--l. 57--><p class="noindent" >The package’s license. Each text token must be a valid license name, as per + section <a +href="#x1-220003.1.6">3.1.6<!--tex4ht:ref: sec:license-names --></a>, and must correspond to a tree “licenses/” entry (see section <a +href="#x1-370004.5">4.5<!--tex4ht:ref: sec:licenses-dir --></a>). See + section <a +href="#x1-730008.2">8.2<!--tex4ht:ref: sec:dependency-spec --></a> for full syntax. + </p></dd><dt class="description"> + <!--l. 60--><p class="noindent" > +<span +class="ecbx-1000">KEYWORDS</span> </p></dt><dd +class="description"> + <!--l. 60--><p class="noindent" >A whitespace separated list of keywords for the ebuild. Each token must be a valid + keyword name, as per section <a +href="#x1-230003.1.7">3.1.7<!--tex4ht:ref: sec:keyword-names --></a>. See section <a +href="#x1-650007.3.3">7.3.3<!--tex4ht:ref: sec:keywords --></a> for full syntax. + </p></dd><dt class="description"> + <!--l. 63--><p class="noindent" > +<span +class="ecbx-1000">IUSE</span> </p></dt><dd +class="description"> + <!--l. 63--><p class="noindent" >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 <a +href="#x1-11000011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for discussion on which values must be + listed in this variable. + </p><!--l. 68--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">iuse-defaults</span></span></span> In EAPIs shown in table <a +href="#x1-62001r1">7.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"> + <!--l. 72--><p class="noindent" > +<span +class="ecbx-1000">REQUIRED_USE</span> </p></dt><dd +class="description"> + + + <!--l. 72--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">required-use</span></span></span> Zero or more assertions that must be met by the configuration of <span +class="ectt-1000">USE</span> + flags to be valid for this ebuild. See section <a +href="#x1-660007.3.4">7.3.4<!--tex4ht:ref: sec:required-use --></a> for description and section <a +href="#x1-730008.2">8.2<!--tex4ht:ref: sec:dependency-spec --></a> for + full syntax. Only in EAPIs listed in table <a +href="#x1-62002r2">7.2<!--tex4ht:ref: tab:optional-vars-table --></a> as supporting <span +class="ectt-1000">REQUIRED_USE</span>. + </p></dd><dt class="description"> + <!--l. 76--><p class="noindent" > +<span +class="ecbx-1000">PROPERTIES</span> </p></dt><dd +class="description"> + <!--l. 76--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">properties</span></span></span> Zero or more properties for this package. See section <a +href="#x1-670007.3.5">7.3.5<!--tex4ht:ref: sec:properties --></a> for value + meanings and section <a +href="#x1-730008.2">8.2<!--tex4ht:ref: sec:dependency-spec --></a> for full syntax. For EAPIs listed in table <a +href="#x1-62002r2">7.2<!--tex4ht:ref: tab:optional-vars-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"> + <!--l. 81--><p class="noindent" > +<span +class="ecbx-1000">RESTRICT</span> </p></dt><dd +class="description"> + <!--l. 81--><p class="noindent" >Zero or more behaviour restrictions for this package. See section <a +href="#x1-680007.3.6">7.3.6<!--tex4ht:ref: sec:restrict --></a> for value + meanings and section <a +href="#x1-730008.2">8.2<!--tex4ht:ref: sec:dependency-spec --></a> for full syntax. + </p></dd><dt class="description"> + <!--l. 83--><p class="noindent" > +<span +class="ecbx-1000">DEPEND</span> </p></dt><dd +class="description"> + <!--l. 83--><p class="noindent" >See chapter <a +href="#x1-710008">8<!--tex4ht:ref: ch:dependencies --></a>. + </p></dd><dt class="description"> + <!--l. 84--><p class="noindent" > +<span +class="ecbx-1000">BDEPEND</span> </p></dt><dd +class="description"> + <!--l. 84--><p class="noindent" >See chapter <a +href="#x1-710008">8<!--tex4ht:ref: ch:dependencies --></a>. + </p></dd><dt class="description"> + <!--l. 85--><p class="noindent" > +<span +class="ecbx-1000">RDEPEND</span> </p></dt><dd +class="description"> + <!--l. 85--><p class="noindent" >See chapter <a +href="#x1-710008">8<!--tex4ht:ref: ch: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 <a +href="#x1-690007.3.7">7.3.7<!--tex4ht:ref: sec:rdepend-depend --></a> for details. + </p></dd><dt class="description"> + <!--l. 88--><p class="noindent" > +<span +class="ecbx-1000">PDEPEND</span> </p></dt><dd +class="description"> + <!--l. 88--><p class="noindent" >See chapter <a +href="#x1-710008">8<!--tex4ht:ref: ch:dependencies --></a>. + </p></dd><dt class="description"> + <!--l. 89--><p class="noindent" > +<span +class="ecbx-1000">IDEPEND</span> </p></dt><dd +class="description"> + <!--l. 89--><p class="noindent" >See chapter <a +href="#x1-710008">8<!--tex4ht:ref: ch:dependencies --></a>.</p></dd></dl> +<div class="table"> + + +<!--l. 93--><p class="noindent" ><a + id="x1-62001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 7.1: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">IUSE </span>defaults</span></div><!--tex4ht:label?: x1-62001r1 --> +<div class="tabular"> + <table id="TBL-10" class="tabular" + +><colgroup id="TBL-10-1g"><col +id="TBL-10-1" /><col +id="TBL-10-2" /></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="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-10-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-1" +class="td11"> 0 </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-2" +class="td11"> No </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"> 1, 2, 3, 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-2" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 107--><p class="noindent" ><a + id="x1-62002r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 7.2: </span><span +class="content">EAPIs supporting various ebuild-defined variables</span></div><!--tex4ht:label?: x1-62002r2 --> +<div class="tabular"> + <table id="TBL-11" class="tabular" + +><colgroup id="TBL-11-1g"><col +id="TBL-11-1" /><col +id="TBL-11-2" /><col +id="TBL-11-3" /></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">Supports </span><span +class="ectt-1000">PROPERTIES</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-11-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">REQUIRED_USE</span><span +class="ecbx-1000">?</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"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-2" +class="td11"> Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-3" +class="td11"> No </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"> 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-3" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">7.3.1 </span> <a + id="x1-630007.3.1"></a>EAPI</h4> +<!--l. 124--><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. 127--><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’s metadata or ensure +that it is unset. +</p><!--l. 132--><p class="noindent" >If any of these variables are set to invalid values, the package manager’s behaviour is +undefined; ideally, an error in one ebuild should not prevent operations upon other ebuilds or +packages. +</p><!--l. 135--><p class="noindent" >If the EAPI is to be specified in an ebuild, the <span +class="ectt-1000">EAPI </span>variable must be assigned to precisely once. +The assignment must not be preceded by any lines other than blank lines or those that start with +optional whitespace (spaces or tabs) followed by a <span +class="ectt-1000"># </span>character, and the line containing the +assignment statement must match the following regular expression: + + +</p> +<pre class="verbatim" id="verbatim-6"> +^[ \t]*EAPI=([’"]?)([A-Za-z0-9+_.-]*)\1[ \t]*([ \t]#.*)?$</pre> +<!--l. 141--><p class="nopar" > +</p><!--l. 143--><p class="noindent" >The package manager must determine the EAPI of an ebuild by parsing its first non-blank and +non-comment line, using the above regular expression. If it matches, the EAPI is the substring +matched by the capturing parentheses (<span +class="ectt-1000">0 </span>if empty), otherwise it is <span +class="ectt-1000">0</span>. For a recognised EAPI, the +package manager must make sure that the <span +class="ectt-1000">EAPI </span>value obtained by sourcing the ebuild with bash is +identical to the EAPI obtained by parsing. The ebuild must be treated as invalid if these values are +different. +</p><!--l. 150--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">7.3.2 </span> <a + id="x1-640007.3.2"></a>SRC_URI</h4> +<!--l. 153--><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. 157--><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. 160--><p class="noindent" >The special <span +class="ectt-1000">mirror:// </span>protocol must be supported. See section <a +href="#x1-340004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a> for mirror details. +</p><!--l. 163--><p class="noindent" >The <span +class="ectt-1000">RESTRICT </span>metadata key can be used to impose additional restrictions upon downloading—see +section <a +href="#x1-680007.3.6">7.3.6<!--tex4ht:ref: sec:restrict --></a> for details. Fetch restricted packages may use a simple filename instead of a full +URI. +</p><!--l. 167--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">src-uri-arrows</span></span></span> In EAPIs listed in table <a +href="#x1-64001r3">7.3<!--tex4ht:ref: tab:uri-arrows-table --></a> as 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><!--l. 173--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">uri-restrict</span></span></span> In EAPIs listed in table <a +href="#x1-64001r3">7.3<!--tex4ht:ref: tab:uri-arrows-table --></a> as supporting selective URI restrictions, the URI +protocol can be prefixed by an additional <span +class="ectt-1000">fetch+ </span>or <span +class="ectt-1000">mirror+ </span>term. If the ebuild is fetch restricted, +the <span +class="ectt-1000">fetch+ </span>prefix undoes the fetch restriction for the URI (but not the implied mirror restriction). +If the ebuild is fetch or mirror restricted, the <span +class="ectt-1000">mirror+ </span>prefix undoes both fetch and mirror +restrictions for the URI. +</p> +<div class="table"> + + +<!--l. 180--><p class="noindent" ><a + id="x1-64001r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 7.3: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">SRC_URI </span>arrows and selective URI restrictions</span></div><!--tex4ht:label?: x1-64001r3 --> +<div class="tabular"> + <table id="TBL-12" class="tabular" + +><colgroup id="TBL-12-1g"><col +id="TBL-12-1" /><col +id="TBL-12-2" /><col +id="TBL-12-3" /></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">SRC_URI </span><span +class="ecbx-1000">arrows?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-12-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports selective URI restrictions?</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"> 0, 1 </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-3" +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"> 2, 3, 4, 5, 6, 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-3" +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"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-3" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">7.3.3 </span> <a + id="x1-650007.3.3"></a>Keywords</h4> +<!--l. 198--><p class="noindent" >Keywords are used to indicate levels of stability of a package on a respective architecture <span +class="ectt-1000">arch</span>. +The following conventions are used: + </p><ul> + <li class="compactitem"><span +class="ectt-1000">arch</span>: Both the package version and the ebuild are widely tested, known to work and + not have any serious issues on the indicated platform. This is referred to as a <span +class="ecti-1000">stable</span> + <span +class="ecti-1000">keyword</span>. + </li> + <li class="compactitem"><span +class="ectt-1000">~arch</span>: The package version and the ebuild are believed to work and do not have + any known serious bugs, but more testing is required before the package version is + considered suitable for obtaining a stable keyword. This is referred to as an <span +class="ecti-1000">unstable</span> + <span +class="ecti-1000">keyword </span>or a <span +class="ecti-1000">testing keyword</span>. + </li> + <li class="compactitem">No keyword: It is not known whether the package will work, or insufficient testing has + occurred. + </li> + <li class="compactitem"><span +class="ectt-1000">-arch</span>: The package version will not work on the architecture.</li></ul> +<!--l. 211--><p class="noindent" >The <span +class="ectt-1000">-* </span>keyword is used to indicate package versions which are not worth trying to test on unlisted +architectures. +</p><!--l. 214--><p class="noindent" >An empty <span +class="ectt-1000">KEYWORDS </span>variable indicates uncertain functionality on any architecture. +</p><!--l. 216--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">7.3.4 </span> <a + id="x1-660007.3.4"></a>USE state constraints</h4> +<!--l. 219--><p class="noindent" ><span +class="ectt-1000">REQUIRED_USE </span>contains a list of assertions that must be met by the configuration of <span +class="ectt-1000">USE </span>flags to be +valid for this ebuild. In order to be matched, a <span +class="ectt-1000">USE </span>flag in a terminal element must be enabled (or +disabled if it has an exclamation mark prefix). +</p><!--l. 223--><p class="noindent" >If the package manager encounters a package version where <span +class="ectt-1000">REQUIRED_USE </span>assertions are not +met, it must treat this package version as if it was masked. No phase functions must be +called. +</p><!--l. 226--><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>. +</p><!--l. 228--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">7.3.5 </span> <a + id="x1-670007.3.5"></a>Properties</h4> +<!--l. 231--><p class="noindent" >The following tokens are permitted inside <span +class="ectt-1000">PROPERTIES</span>: + </p><dl class="description"><dt class="description"> + <!--l. 234--><p class="noindent" > +<span +class="ecbx-1000">interactive</span> </p></dt><dd +class="description"> + <!--l. 234--><p class="noindent" >The package may require interaction with the user via the tty. + + + </p></dd><dt class="description"> + <!--l. 235--><p class="noindent" > +<span +class="ecbx-1000">live</span> </p></dt><dd +class="description"> + <!--l. 235--><p class="noindent" >The package uses “live” source code that may vary each time that the package is + installed. + </p></dd><dt class="description"> + <!--l. 237--><p class="noindent" > +<span +class="ecbx-1000">test_network</span> </p></dt><dd +class="description"> + <!--l. 237--><p class="noindent" >The package manager may run tests that require an internet connection, even if the + ebuild has <span +class="ectt-1000">RESTRICT=test</span>.</p></dd></dl> +<!--l. 241--><p class="noindent" >Package managers may recognise other tokens. Ebuilds may not rely upon any token being +supported. +</p> +<h4 class="subsectionHead"><span class="titlemark">7.3.6 </span> <a + id="x1-680007.3.6"></a>Restrict</h4> +<!--l. 246--><p class="noindent" >The following tokens are permitted inside <span +class="ectt-1000">RESTRICT</span>: + </p><dl class="description"><dt class="description"> + <!--l. 249--><p class="noindent" > +<span +class="ecbx-1000">mirror</span> </p></dt><dd +class="description"> + <!--l. 249--><p class="noindent" >The package’s <span +class="ectt-1000">SRC_URI </span>entries may not be mirrored, and mirrors should not be checked + when fetching. + </p></dd><dt class="description"> + <!--l. 251--><p class="noindent" > +<span +class="ecbx-1000">fetch</span> </p></dt><dd +class="description"> + <!--l. 251--><p class="noindent" >The package’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. Implies <span +class="ectt-1000">mirror</span>. + </p></dd><dt class="description"> + <!--l. 253--><p class="noindent" > +<span +class="ecbx-1000">strip</span> </p></dt><dd +class="description"> + <!--l. 253--><p class="noindent" >No stripping of debug symbols from files to be installed may be performed. In EAPIs + listed in table <a +href="#x1-131001r18">12.18<!--tex4ht:ref: tab:staging-area-commands --></a> as supporting controllable stripping, this behaviour may be altered + by the <span +class="ectt-1000">dostrip </span>command. + </p></dd><dt class="description"> + <!--l. 256--><p class="noindent" > +<span +class="ecbx-1000">userpriv</span> </p></dt><dd +class="description"> + <!--l. 256--><p class="noindent" >The package manager may not drop root privileges when building the package. + </p></dd><dt class="description"> + <!--l. 257--><p class="noindent" > +<span +class="ecbx-1000">test</span> </p></dt><dd +class="description"> + <!--l. 257--><p class="noindent" >The <span +class="ectt-1000">src_test </span>phase must not be run.</p></dd></dl> +<!--l. 260--><p class="noindent" >Package managers may recognise other tokens, but ebuilds may not rely upon them being +supported. + + +</p> +<h4 class="subsectionHead"><span class="titlemark">7.3.7 </span> <a + id="x1-690007.3.7"></a>RDEPEND value</h4> +<!--l. 265--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">rdepend-depend</span></span></span> In EAPIs listed in table <a +href="#x1-69001r4">7.4<!--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, when generating metadata the package +manager must treat its value as being equal to the value of <span +class="ectt-1000">DEPEND</span>. +</p><!--l. 270--><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 treated as being part of +<span +class="ectt-1000">RDEPEND</span>. +</p> +<div class="table"> + + +<!--l. 276--><p class="noindent" ><a + id="x1-69001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 7.4: </span><span +class="content">EAPIs with <span +class="ectt-1000">RDEPEND=DEPEND </span>default</span></div><!--tex4ht:label?: x1-69001r4 --> +<div class="tabular"> + <table id="TBL-13" class="tabular" + +><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="ectt-1000">RDEPEND=DEPEND</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"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-2" +class="td11"> Yes </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"> 4, 5, 6, 7, 8 </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">7.4 </span> <a + id="x1-700007.4"></a>Magic Ebuild-defined Variables</h3> +<!--l. 291--><p class="noindent" >The following variables must be defined by <span +class="ectt-1000">inherit </span>(see section <a +href="#x1-10500010.1">10.1<!--tex4ht:ref: sec:inherit --></a>), and may be considered to +be part of the ebuild’s metadata: + </p><dl class="description"><dt class="description"> + <!--l. 295--><p class="noindent" > +<span +class="ecbx-1000">ECLASS</span> </p></dt><dd +class="description"> + <!--l. 295--><p class="noindent" >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. + </p></dd><dt class="description"> + <!--l. 297--><p class="noindent" > +<span +class="ecbx-1000">INHERITED</span> </p></dt><dd +class="description"> + <!--l. 297--><p class="noindent" >List of inherited eclass names. Again, this is handled magically by <span +class="ectt-1000">inherit</span>.</p></dd></dl> +<!--l. 301--><p class="noindent" > +</p><dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 301--><p class="noindent" ><span +class="ecbx-1000">Note: </span>Thus, by extension of section <a +href="#x1-600007.1">7.1<!--tex4ht:ref: sec:metadata-invariance --></a>, <span +class="ectt-1000">inherit </span>may not be used conditionally, except +upon constant conditions.</p></dd></dl> +<!--l. 303--><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"> + <!--l. 307--><p class="noindent" > +<span +class="ecbx-1000">DEFINED_PHASES</span> </p></dt><dd +class="description"> + <!--l. 307--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">defined-phases</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 <a +href="#x1-70001r5">7.5<!--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 “this information is not + available”.</p></dd></dl> +<!--l. 317--><p class="noindent" > +</p><dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 317--><p class="noindent" ><span +class="ecbx-1000">Note: </span>Thus, by extension of section <a +href="#x1-600007.1">7.1<!--tex4ht:ref: sec:metadata-invariance --></a>, phase functions must not be defined based upon +any variant condition.</p></dd></dl> +<div class="table"> + + +<!--l. 320--><p class="noindent" ><a + id="x1-70001r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 7.5: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">DEFINED_PHASES</span></span></div><!--tex4ht:label?: x1-70001r5 --> +<div class="tabular"> + <table id="TBL-14" class="tabular" + +><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">DEFINED_PHASES</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"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-2" +class="td11"> Optionally </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"> 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-2" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> + + + + + + + + +<h2 class="chapterHead"><span class="titlemark">Chapter 8</span><br /><a + id="x1-710008"></a>Dependencies</h2> +<h3 class="sectionHead"><span class="titlemark">8.1 </span> <a + id="x1-720008.1"></a>Dependency Classes</h3> +<div class="table"> + + +<!--l. 7--><p class="noindent" ><a + id="x1-72001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.1: </span><span +class="content">Dependency classes required to be satisfied for a particular phase function</span></div><!--tex4ht:label?: x1-72001r1 --> +<div class="tabular"> + <table id="TBL-15" class="tabular" + +><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">Phase function</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">Satisfied dependency classes</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:normal; text-align:left;" id="TBL-15-2-1" +class="td11"> <!--l. 14--><p class="noindent" ><span +class="ectt-1000">pkg_pretend</span>, + <span +class="ectt-1000">pkg_info</span>, + <span +class="ectt-1000">pkg_nofetch</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-15-2-2" +class="td11"> <!--l. 15--><p class="noindent" >None + (ebuilds + can + rely + only + on + the + packages + in + the + system set) </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:normal; text-align:left;" id="TBL-15-3-1" +class="td11"> <!--l. 17--><p class="noindent" ><span +class="ectt-1000">pkg_setup</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-15-3-2" +class="td11"> <!--l. 17--><p class="noindent" >Same + as + <span +class="ectt-1000">src_unpack</span> + if + executed + as + part + of + source + build, + same + as + <span +class="ectt-1000">pkg_pretend</span> + otherwise </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-4-"><td style="white-space:normal; text-align:left;" id="TBL-15-4-1" +class="td11"> <!--l. 20--><p class="noindent" ><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>, + <span +class="ectt-1000">src_install</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-15-4-2" +class="td11"> <!--l. 21--><p class="noindent" ><span +class="ectt-1000">DEPEND</span>, + <span +class="ectt-1000">BDEPEND</span> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-5-"><td style="white-space:normal; text-align:left;" id="TBL-15-5-1" +class="td11"> <!--l. 23--><p class="noindent" ><span +class="ectt-1000">pkg_preinst</span>, + <span +class="ectt-1000">pkg_postinst</span>, + <span +class="ectt-1000">pkg_prerm</span>, + <span +class="ectt-1000">pkg_postrm</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-15-5-2" +class="td11"> <!--l. 24--><p class="noindent" ><span +class="ectt-1000">RDEPEND</span>, + <span +class="ectt-1000">IDEPEND</span> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-6-"><td style="white-space:normal; text-align:left;" id="TBL-15-6-1" +class="td11"> <!--l. 26--><p class="noindent" ><span +class="ectt-1000">pkg_config</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-15-6-2" +class="td11"> <!--l. 26--><p class="noindent" ><span +class="ectt-1000">RDEPEND</span>, + <span +class="ectt-1000">PDEPEND</span> </p></td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-15-7-"><td style="white-space:normal; text-align:left;" id="TBL-15-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 31--><p class="noindent" ><a + id="x1-72002r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.2: </span><span +class="content">Summary of other interfaces related to dependency classes</span></div><!--tex4ht:label?: x1-72002r2 --> +<div class="tabular"> + <table id="TBL-16" class="tabular" + +><colgroup id="TBL-16-1g"><col +id="TBL-16-1" /><col +id="TBL-16-2" /><col +id="TBL-16-3" /><col +id="TBL-16-4" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-1-1" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-16-1-2" +class="td11"> <span +class="ectt-1000">BDEPEND</span>, <span +class="ectt-1000">IDEPEND </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-1-3" +class="td11"> <span +class="ectt-1000">DEPEND </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-1-4" +class="td11"> <span +class="ectt-1000">RDEPEND</span>, <span +class="ectt-1000">PDEPEND </span></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"> Binary compatible with </td><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-2" +class="td11"> <span +class="ectt-1000">CBUILD </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-3" +class="td11"> <span +class="ectt-1000">CHOST </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-4" +class="td11"> <span +class="ectt-1000">CHOST </span></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"> Base unprefixed path </td><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-2" +class="td11"> <span +class="ectt-1000">/ </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-3" +class="td11"> <span +class="ectt-1000">${SYSROOT} </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-4" +class="td11"> <span +class="ectt-1000">${ROOT} </span></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"> Relevant offset-prefix </td><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-2" +class="td11"> <span +class="ectt-1000">${BROOT} </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-3" +class="td11"> See table <a +href="#x1-72003r3">8.3<!--tex4ht:ref: tab:depend-prefix --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-4" +class="td11"> <span +class="ectt-1000">${EPREFIX} </span></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"> Path combined with prefix </td><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-2" +class="td11"> <span +class="ectt-1000">${BROOT} </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-3" +class="td11"> <span +class="ectt-1000">${ESYSROOT} </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-4" +class="td11"> <span +class="ectt-1000">${EROOT} </span></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"> PM query command option </td><td style="white-space:nowrap; text-align:left;" id="TBL-16-6-2" +class="td11"> <span +class="ectt-1000">-b </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-6-3" +class="td11"> <span +class="ectt-1000">-d </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-6-4" +class="td11"> <span +class="ectt-1000">-r </span></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> +<div class="table"> + + +<!--l. 47--><p class="noindent" ><a + id="x1-72003r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.3: </span><span +class="content">Prefix values for <span +class="ectt-1000">DEPEND</span></span></div><!--tex4ht:label?: x1-72003r3 --> +<div class="tabular"> + <table id="TBL-17" class="tabular" + +><colgroup id="TBL-17-1g"><col +id="TBL-17-1" /><col +id="TBL-17-2" /><col +id="TBL-17-3" /><col +id="TBL-17-4" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-1-1" +class="td11"> If <span +class="ectt-1000">SYSROOT </span>is: </td><td style="white-space:nowrap; text-align:left;" id="TBL-17-1-2" +class="td11"> <span +class="ectt-1000">${ROOT} </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-1-3" +class="td11"> Empty, and <span +class="ectt-1000">ROOT </span>is non-empty </td><td style="white-space:nowrap; text-align:left;" id="TBL-17-1-4" +class="td11"> Other </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"> Then offset-prefix is: </td><td style="white-space:nowrap; text-align:left;" id="TBL-17-2-2" +class="td11"> <span +class="ectt-1000">${EPREFIX} </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-2-3" +class="td11"> <span +class="ectt-1000">${BROOT} </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-2-4" +class="td11"> Empty </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"> And <span +class="ectt-1000">ESYSROOT </span>is: </td><td style="white-space:nowrap; text-align:left;" id="TBL-17-3-2" +class="td11"> <span +class="ectt-1000">${EROOT} </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-3-3" +class="td11"> <span +class="ectt-1000">${BROOT} </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-3-4" +class="td11"> <span +class="ectt-1000">${SYSROOT} </span></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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 60--><p class="noindent" >There are three classes of dependencies supported by ebuilds: + </p><ul> + <li class="compactitem">Build dependencies (<span +class="ectt-1000">DEPEND</span>). These must be installed and usable before the <span +class="ectt-1000">pkg_setup</span> + phase function is executed as a part of source build and throughout all <span +class="ectt-1000">src_* </span>phase + functions executed as part of that build. These may not be installed at all if a binary + package is being merged. + </li> + <li class="compactitem">Runtime dependencies (<span +class="ectt-1000">RDEPEND</span>). These must be installed and usable before the results + of an ebuild merging are treated as usable. + </li> + <li class="compactitem">Post dependencies (<span +class="ectt-1000">PDEPEND</span>). These must be installed at some point before the package + manager finishes the batch of installs.</li></ul> +<!--l. 73--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">bdepend</span></span></span> Additionally, in EAPIs listed in table <a +href="#x1-72004r4">8.4<!--tex4ht:ref: tab:depend-table --></a> as supporting <span +class="ectt-1000">BDEPEND</span>, the build dependencies +are split into two subclasses: + </p><ul> + <li class="compactitem"><span +class="ectt-1000">BDEPEND </span>build dependencies that are binary compatible with the native build system + (<span +class="ectt-1000">CBUILD</span>). The ebuild is allowed to call binary executables installed by this kind of + dependency. + </li> + <li class="compactitem"><span +class="ectt-1000">DEPEND </span>build dependencies that are binary compatible with the system being built + (<span +class="ectt-1000">CHOST</span>). The ebuild must not execute binary executables installed by this kind of + dependency.</li></ul> +<!--l. 85--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">idepend</span></span></span> Additionally, in EAPIs listed in table <a +href="#x1-72004r4">8.4<!--tex4ht:ref: tab:depend-table --></a> as supporting <span +class="ectt-1000">IDEPEND</span>, install-time +dependencies can be specified. These dependencies are binary compatible with the native build +system (<span +class="ectt-1000">CBUILD</span>). Ebuilds are allowed to call them in <span +class="ectt-1000">pkg_preinst </span>and <span +class="ectt-1000">pkg_postinst</span>. Ebuilds +may also call them in <span +class="ectt-1000">pkg_prerm </span>and <span +class="ectt-1000">pkg_postrm </span>but must not rely on them being +available. +</p> +<div class="table"> + + +<!--l. 92--><p class="noindent" ><a + id="x1-72004r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.4: </span><span +class="content">EAPIs supporting additional dependency types</span></div><!--tex4ht:label?: x1-72004r4 --> +<div class="tabular"> + <table id="TBL-18" class="tabular" + +><colgroup id="TBL-18-1g"><col +id="TBL-18-1" /><col +id="TBL-18-2" /><col +id="TBL-18-3" /></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">BDEPEND</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-18-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">IDEPEND</span><span +class="ecbx-1000">?</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"> 0, 1, 2, 3, 4, 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-18-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-18-2-3" +class="td11"> No </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"> 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-18-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-18-3-3" +class="td11"> No </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"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-18-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-18-4-3" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 107--><p class="noindent" >Table <a +href="#x1-72001r1">8.1<!--tex4ht:ref: tab:phase-function-dependency-classes --></a> lists dependencies which must be satisfied before a particular phase function is executed. +Table <a +href="#x1-72002r2">8.2<!--tex4ht:ref: tab:dep-class-api --></a> summarises additional interfaces related to the dependency classes. +</p><!--l. 111--><p class="noindent" >In addition, <span +class="ectt-1000">HOMEPAGE</span>, <span +class="ectt-1000">SRC_URI</span>, <span +class="ectt-1000">LICENSE</span>, <span +class="ectt-1000">REQUIRED_USE</span>, <span +class="ectt-1000">PROPERTIES </span>and <span +class="ectt-1000">RESTRICT </span>use +dependency-style specifications to specify their values. +</p> +<h3 class="sectionHead"><span class="titlemark">8.2 </span> <a + id="x1-730008.2"></a>Dependency Specification Format</h3> +<!--l. 117--><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. 121--><p class="noindent" > + </p><ul> + <li class="compactitem">A package dependency specification. Permitted in <span +class="ectt-1000">DEPEND</span>, <span +class="ectt-1000">BDEPEND</span>, <span +class="ectt-1000">RDEPEND</span>, <span +class="ectt-1000">PDEPEND</span>, + <span +class="ectt-1000">IDEPEND</span>. + </li> + <li class="compactitem">A URI, in the form <span +class="ectt-1000">proto://host/path</span>. Permitted in <span +class="ectt-1000">HOMEPAGE </span>and <span +class="ectt-1000">SRC_URI</span>. In + EAPIs listed in table <a +href="#x1-64001r3">7.3<!--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">-></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 <a +href="#x1-640007.3.2">7.3.2<!--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 use flag name, optionally preceded by an exclamation mark. Permitted in + <span +class="ectt-1000">REQUIRED_USE</span>. + </li> + <li class="compactitem">A simple string. Permitted in <span +class="ectt-1000">PROPERTIES </span>and <span +class="ectt-1000">RESTRICT</span>. + </li> + <li class="compactitem">An all-of group, which consists of an open parenthesis, followed by whitespace, followed + by one 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 ::= ’(’ whitespace (item whitespace)+</span> + <span +class="ectt-1000">’)’</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 one 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 ::= ’||’ whitespace ’(’ whitespace (item whitespace)+ ’)’</span>. + Permitted in <span +class="ectt-1000">DEPEND</span>, <span +class="ectt-1000">BDEPEND</span>, <span +class="ectt-1000">RDEPEND</span>, <span +class="ectt-1000">PDEPEND</span>, <span +class="ectt-1000">IDEPEND</span>, <span +class="ectt-1000">LICENSE</span>, <span +class="ectt-1000">REQUIRED_USE</span>. + </li> + <li class="compactitem">An exactly-one-of group, which has the same format as the any-of group, but begins + with the string <span +class="ectt-1000">^^ </span>instead. Permitted in <span +class="ectt-1000">REQUIRED_USE</span>. + </li> + <li class="compactitem"><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">at-most-one-of</span></span></span> An at-most-one-of group, which has the same format as the any-of + group, but begins with the string <span +class="ectt-1000">??</span> instead. Permitted in <span +class="ectt-1000">REQUIRED_USE </span>in EAPIs + listed in table <a +href="#x1-73001r5">8.5<!--tex4ht:ref: tab:at-most-one-of-table --></a> as supporting <span +class="ectt-1000">REQUIRED_USE ??</span> groups. + </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 one 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 ::= ’!’? flag-name ’?’ whitespace ’(’ whitespace</span> + <span +class="ectt-1000">(item whitespace)+ ’)’</span>. Permitted in all specification style variables.</li></ul> +<!--l. 156--><p class="noindent" >In particular, note that whitespace is not optional. +</p> +<div class="table"> + + +<!--l. 159--><p class="noindent" ><a + id="x1-73001r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.5: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">REQUIRED_USE ??</span> groups</span></div><!--tex4ht:label?: x1-73001r5 --> +<div class="tabular"> + <table id="TBL-19" class="tabular" + +><colgroup id="TBL-19-1g"><col +id="TBL-19-1" /><col +id="TBL-19-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-19-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-19-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-19-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">REQUIRED_USE ??</span><span +class="ecbx-1000"> groups?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-2-1" +class="td11"> 0, 1, 2, 3, 4 </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-2-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-3-1" +class="td11"> 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-3-2" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-19-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">8.2.1 </span> <a + id="x1-740008.2.1"></a>All-of dependency specifications</h4> +<!--l. 174--><p class="noindent" >In an all-of group, all of the child elements must be matched. +</p><!--l. 176--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.2.2 </span> <a + id="x1-750008.2.2"></a>USE-conditional dependency specifications</h4> +<!--l. 178--><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. 181--><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 <a +href="#x1-11000011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>. +</p><!--l. 184--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.2.3 </span> <a + id="x1-760008.2.3"></a>Any-of dependency specifications</h4> +<!--l. 186--><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. 190--><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. 193--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">empty-dep-groups</span></span></span> In EAPIs specified in table <a +href="#x1-77001r6">8.6<!--tex4ht:ref: tab:empty-dep-groups --></a>, an empty any-of group counts as being +matched. +</p><!--l. 196--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.2.4 </span> <a + id="x1-770008.2.4"></a>Exactly-one-of dependency specifications</h4> +<!--l. 198--><p class="noindent" >Any use-conditional group that is an immediate child of an exactly-one-of group, if not enabled +(disabled for an exclamation mark prefixed use flag name), is not considered a member of the +exactly-one-of group for match purposes. +</p><!--l. 202--><p class="noindent" >In an exactly-one-of group, exactly one immediate child element must be matched. +</p><!--l. 204--><p class="noindent" >In EAPIs specified in table <a +href="#x1-77001r6">8.6<!--tex4ht:ref: tab:empty-dep-groups --></a>, an empty exactly-one-of group counts as being matched. +</p> +<div class="table"> + + +<!--l. 208--><p class="noindent" ><a + id="x1-77001r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.6: </span><span +class="content">Matching of empty dependency groups in EAPIs</span></div><!--tex4ht:label?: x1-77001r6 --> +<div class="tabular"> + <table id="TBL-20" class="tabular" + +><colgroup id="TBL-20-1g"><col +id="TBL-20-1" /><col +id="TBL-20-2" /></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="ecbx-1000">Empty </span><span +class="ectt-1000">|| </span><span +class="ecbx-1000">and </span><span +class="ectt-1000">^^ </span><span +class="ecbx-1000">groups are matched?</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"> 0, 1, 2, 3, 4, 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-2" +class="td11"> Yes </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"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-2" +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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">8.2.5 </span> <a + id="x1-780008.2.5"></a>At-most-one-of dependency specifications</h4> +<!--l. 224--><p class="noindent" >Any use-conditional group that is an immediate child of an at-most-one-of group, if not enabled +(disabled for an exclamation mark prefixed use flag name), is not considered a member of the +at-most-one-of group for match purposes. +</p><!--l. 228--><p class="noindent" >In an at-most-one-of group, at most one immediate child element must be matched. +</p><!--l. 230--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">8.3 </span> <a + id="x1-790008.3"></a>Package Dependency Specifications</h3> +<!--l. 232--><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. 236--><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 <a +href="#x1-800008.3.1">8.3.1<!--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. 241--><p class="noindent" >In EAPIs shown in table <a +href="#x1-79001r7">8.7<!--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 <a +href="#x1-820008.3.3">8.3.3<!--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. 246--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">use-deps</span></span></span> In EAPIs shown in table <a +href="#x1-79002r8">8.8<!--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 <a +href="#x1-830008.3.4">8.3.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. 251--><p class="noindent" > +</p><dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 251--><p class="noindent" ><span +class="ecbx-1000">Note: </span>Order is important. The slot restriction must come before use dependencies.</p></dd></dl> +<div class="table"> + + +<!--l. 254--><p class="noindent" ><a + id="x1-79001r7"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.7: </span><span +class="content">Support for <span +class="ectt-1000">SLOT </span>dependencies and sub-slots in EAPIs</span></div><!--tex4ht:label?: x1-79001r7 --> +<div class="tabular"> + <table id="TBL-21" class="tabular" + +><colgroup id="TBL-21-1g"><col +id="TBL-21-1" /><col +id="TBL-21-2" /><col +id="TBL-21-3" /></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="ecbx-1000">Supports </span><span +class="ectt-1000">SLOT </span><span +class="ecbx-1000">dependencies?</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="ecbx-1000">Supports sub-slots?</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"> 0 </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> +</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"> 1, 2, 3, 4 </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-2" +class="td11"> Named only </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-3" +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"> 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-2" +class="td11"> Named and operator </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-3" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 270--><p class="noindent" ><a + id="x1-79002r8"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.8: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">USE </span>dependencies</span></div><!--tex4ht:label?: x1-79002r8 --> +<div class="tabular"> + <table id="TBL-22" class="tabular" + +><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 </span><span +class="ectt-1000">USE </span><span +class="ecbx-1000">dependencies?</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"> 0, 1 </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"> 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-22-3-2" +class="td11"> 2-style </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"> 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-22-4-2" +class="td11"> 4-style </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">8.3.1 </span> <a + id="x1-800008.3.1"></a>Operators</h4> +<!--l. 287--><p class="noindent" >The following operators are available: + </p><dl class="description"><dt class="description"> + <!--l. 290--><p class="noindent" > +<span +class="ectt-1000"><</span> </p></dt><dd +class="description"> + <!--l. 290--><p class="noindent" >Strictly less than the specified version. + </p></dd><dt class="description"> + <!--l. 291--><p class="noindent" > +<span +class="ectt-1000"><=</span> </p></dt><dd +class="description"> + <!--l. 291--><p class="noindent" >Less than or equal to the specified version. + </p></dd><dt class="description"> + <!--l. 292--><p class="noindent" > +<span +class="ectt-1000">=</span> </p></dt><dd +class="description"> + <!--l. 292--><p class="noindent" >Exactly equal to the specified version. Special exception: if the version specified has an + asterisk immediately following it, then only the given number of version components is + used for comparison, i. e. the asterisk acts as a wildcard for any further components. + When an asterisk is used, the specification must remain valid if the asterisk were + removed. (An asterisk used with any other operator is illegal.) + </p></dd><dt class="description"> + <!--l. 297--><p class="noindent" > +<span +class="ectt-1000">~</span> </p></dt><dd +class="description"> + <!--l. 297--><p class="noindent" >Equal to the specified version when revision parts are ignored. + </p></dd><dt class="description"> + <!--l. 298--><p class="noindent" > +<span +class="ectt-1000">>=</span> </p></dt><dd +class="description"> + <!--l. 298--><p class="noindent" >Greater than or equal to the specified version. + </p></dd><dt class="description"> + <!--l. 299--><p class="noindent" > +<span +class="ectt-1000">></span> </p></dt><dd +class="description"> + <!--l. 299--><p class="noindent" >Strictly greater than the specified version.</p></dd></dl> +<!--l. 302--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.3.2 </span> <a + id="x1-810008.3.2"></a>Block operator</h4> +<!--l. 304--><p class="noindent" >If the specification is prefixed with one or two exclamation marks, the named dependency is +a block rather than a requirement—that is to say, the specified package must not be +installed. As an exception, weak blocks on the package version of the ebuild itself do not +count. + + +</p><!--l. 308--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">bang-strength</span></span></span> 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 <a +href="#x1-81001r9">8.9<!--tex4ht:ref: tab:bang-strength-table --></a>. +</p> +<div class="table"> + + +<!--l. 314--><p class="noindent" ><a + id="x1-81001r9"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.9: </span><span +class="content">Exclamation mark strengths for EAPIs</span></div><!--tex4ht:label?: x1-81001r9 --> +<div class="tabular"> + <table id="TBL-23" class="tabular" + +><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="ectt-1000">!</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="ectt-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"> 0, 1 </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-2-2" +class="td11"> Unspecified </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-2-3" +class="td11"> Forbidden </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"> 2, 3, 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-3-2" +class="td11"> Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-3-3" +class="td11"> Strong </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">8.3.3 </span> <a + id="x1-820008.3.3"></a>Slot dependencies</h4> +<!--l. 331--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">slot-deps</span></span></span> 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. 336--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">sub-slot</span></span></span> In EAPIs shown in table <a +href="#x1-79001r7">8.7<!--tex4ht:ref: tab:slot-deps-table --></a> as supporting sub-slots, a slot dependency may +contain an optional sub-slot part that follows the regular slot and is delimited by a <span +class="ectt-1000">/</span> +character. +</p><!--l. 340--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">slot-operator-deps</span></span></span> An operator slot dependency consists of a colon followed by one of the +following operators: + </p><dl class="description"><dt class="description"> + <!--l. 344--><p class="noindent" > +<span +class="ecbx-1000">*</span> </p></dt><dd +class="description"> + <!--l. 344--><p class="noindent" >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. + </p></dd><dt class="description"> + <!--l. 347--><p class="noindent" > +<span +class="ecbx-1000">=</span> </p></dt><dd +class="description"> + <!--l. 347--><p class="noindent" >Indicates that any slot value is acceptable. In addition, for runtime dependencies, + indicates that the package will break unless a matching package with slot and sub-slot + equal to the slot and sub-slot of the best version installed as a build-time (<span +class="ectt-1000">DEPEND</span>) + dependency is available. + </p></dd><dt class="description"> + <!--l. 351--><p class="noindent" > +<span +class="ecbx-1000">slot=</span> </p></dt><dd +class="description"> + <!--l. 351--><p class="noindent" >Indicates that only a specific slot value is acceptable, and otherwise behaves identically + to the plain equals slot operator.</p></dd></dl> +<!--l. 355--><p class="noindent" >To implement the equals slot operator, the package manager will need to store the slot/sub-slot +pair of the best installed version of the matching package. This syntax is only for package manager +use and must not be used by ebuilds. The package manager may do this by inserting the +appropriate slot/sub-slot pair between the colon and equals sign when saving the package’s +dependencies. The sub-slot part must not be omitted here (when the SLOT variable omits the +sub-slot part, the package is considered to have an implicit sub-slot which is equal to the regular +slot). +</p><!--l. 362--><p class="noindent" >Whenever the equals slot operator is used in an enabled dependency group, the dependencies +(<span +class="ectt-1000">DEPEND</span>) must ensure that a matching package is installed at build time. It is invalid to use the +equals slot operator inside <span +class="ectt-1000">PDEPEND </span>or inside any-of dependency specifications. +</p> + + +<h4 class="subsectionHead"><span class="titlemark">8.3.4 </span> <a + id="x1-830008.3.4"></a>2-style and 4-style USE dependencies</h4> +<!--l. 369--><p class="noindent" >A 2-style or 4-style use dependency consists of one of the following: + </p><dl class="description"><dt class="description"> + <!--l. 372--><p class="noindent" > +<span +class="ecbx-1000">[opt]</span> </p></dt><dd +class="description"> + <!--l. 372--><p class="noindent" >The flag must be enabled. + </p></dd><dt class="description"> + <!--l. 373--><p class="noindent" > +<span +class="ecbx-1000">[opt=]</span> </p></dt><dd +class="description"> + <!--l. 373--><p class="noindent" >The flag must be enabled if the flag is enabled for the package with the dependency, + or disabled otherwise. + </p></dd><dt class="description"> + <!--l. 375--><p class="noindent" > +<span +class="ecbx-1000">[!opt=]</span> </p></dt><dd +class="description"> + <!--l. 375--><p class="noindent" >The flag must be disabled if the flag is enabled for the package with the dependency, + or enabled otherwise. + </p></dd><dt class="description"> + <!--l. 377--><p class="noindent" > +<span +class="ecbx-1000">[opt?]</span> </p></dt><dd +class="description"> + <!--l. 377--><p class="noindent" >The flag must be enabled if the flag is enabled for the package with the dependency. + </p></dd><dt class="description"> + <!--l. 379--><p class="noindent" > +<span +class="ecbx-1000">[!opt?]</span> </p></dt><dd +class="description"> + <!--l. 379--><p class="noindent" >The flag must be disabled if the use flag is disabled for the package with the dependency. + </p></dd><dt class="description"> + <!--l. 381--><p class="noindent" > +<span +class="ecbx-1000">[-opt]</span> </p></dt><dd +class="description"> + <!--l. 381--><p class="noindent" >The flag must be disabled.</p></dd></dl> +<!--l. 384--><p class="noindent" >Multiple requirements may be combined using commas, e. g. <span +class="ectt-1000">[first,-second,third?]</span>. +</p><!--l. 386--><p class="noindent" >When multiple requirements are specified, all must match for a successful match. +</p><!--l. 388--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">use-dep-defaults</span></span></span> 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. 394--><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. 399--><p class="noindent" > +</p><dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 399--><p class="noindent" ><span +class="ecbx-1000">Note: </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></dd></dl> + + +<!--l. 401--><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> +<h2 class="chapterHead"><span class="titlemark">Chapter 9</span><br /><a + id="x1-840009"></a>Ebuild-defined Functions</h2> +<h3 class="sectionHead"><span class="titlemark">9.1 </span> <a + id="x1-850009.1"></a>List of Functions</h3> +<!--l. 6--><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. All functions may assume that they have read access to all system libraries, binaries and +configuration files that are accessible to normal users, as well as write access to the +temporary directories specified by the <span +class="ectt-1000">T</span>, <span +class="ectt-1000">TMPDIR </span>and <span +class="ectt-1000">HOME </span>environment variables (see +section <a +href="#x1-10900011.1">11.1<!--tex4ht:ref: sec:ebuild-env-vars --></a>). Most functions must assume only that they have additional write access to the +package’s working directory (the <span +class="ectt-1000">WORKDIR </span>environment variable); exceptions are noted +below. +</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">9.1.1 </span> <a + id="x1-860009.1.1"></a>Initial working directories</h4> +<!--l. 25--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">phase-function-dir</span></span></span> 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, then for EAPIs listed in table <a +href="#x1-86001r1">9.1<!--tex4ht:ref: tab:function-dirs --></a> as having an empty directory, it must +be set to a dedicated directory that is empty at the start of the function and may be +read-only. For other EAPIs, it may be set to anything. 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. 33--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">s-workdir-fallback</span></span></span> 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 <a +href="#x1-86002r2">9.2<!--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. 42--><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>, <span +class="ectt-1000">test </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. 50--><p class="noindent" ><a + id="x1-86001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.1: </span><span +class="content">Initial working directory in <span +class="ectt-1000">pkg_* </span>phase functions for EAPIs</span></div><!--tex4ht:label?: x1-86001r1 --> +<div class="tabular"> + <table id="TBL-24" class="tabular" + +><colgroup id="TBL-24-1g"><col +id="TBL-24-1" /><col +id="TBL-24-2" /></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 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">Initial working directory?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-24-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-2-1" +class="td11"> 0, 1, 2, 3, 4, 5, 6, 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-2-2" +class="td11"> Any </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"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-2" +class="td11"> Empty </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 64--><p class="noindent" ><a + id="x1-86002r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.2: </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-86002r2 --> +<div class="tabular"> + <table id="TBL-25" class="tabular" + +><colgroup id="TBL-25-1g"><col +id="TBL-25-1" /><col +id="TBL-25-2" /></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">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-25-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-1" +class="td11"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-2" +class="td11"> Always </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"> 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-25-3-2" +class="td11"> Conditional error </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">9.1.2 </span> <a + id="x1-870009.1.2"></a>pkg_pretend</h4> +<!--l. 79--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">pkg-pretend</span></span></span> The <span +class="ectt-1000">pkg_pretend </span>function is only called for EAPIs listed in table <a +href="#x1-87001r3">9.3<!--tex4ht:ref: tab:pkg-pretend-table --></a> as supporting +it. +</p><!--l. 82--><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. 87--><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’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. 92--><p class="noindent" ><span +class="ectt-1000">pkg_pretend </span>must not write to the filesystem. +</p> +<div class="table"> + + +<!--l. 95--><p class="noindent" ><a + id="x1-87001r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.3: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">pkg_pretend</span></span></div><!--tex4ht:label?: x1-87001r3 --> +<div class="tabular"> + <table id="TBL-26" class="tabular" + +><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">pkg_pretend</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"> 0, 1, 2, 3 </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"> 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-2" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">9.1.3 </span> <a + id="x1-880009.1.3"></a>pkg_setup</h4> +<!--l. 110--><p class="noindent" >The <span +class="ectt-1000">pkg_setup </span>function sets up the ebuild’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. that certain kernel configuration options are +fulfilled. +</p><!--l. 114--><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. 117--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.4 </span> <a + id="x1-890009.1.4"></a>src_unpack</h4> +<!--l. 119--><p class="noindent" >The <span +class="ectt-1000">src_unpack </span>function extracts all of the package’s sources. In EAPIs lacking <span +class="ectt-1000">src_prepare</span>, it +may also apply patches and set up the package’s build system for further use. +</p><!--l. 122--><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 in listing <a +href="#x1-89001r1">9.1<!--tex4ht:ref: lst:src-unpack-0 --></a>. + + +</p><!--l. 125--><p class="noindent" ><a + id="x1-89001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 9.1: </span><span +class="content"><span +class="ectt-1000">src_unpack</span></span></div><!--tex4ht:label?: x1-89001r1 --> + + +<pre class="verbatim" id="verbatim-7"> +src_unpack() { + if [[ -n ${A} ]]; then + unpack ${A} + fi +}</pre> +<!--l. 133--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> +<h4 class="subsectionHead"><span class="titlemark">9.1.5 </span> <a + id="x1-900009.1.5"></a>src_prepare</h4> +<!--l. 138--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">src-prepare</span></span></span> The <span +class="ectt-1000">src_prepare </span>function is only called for EAPIs listed in table <a +href="#x1-90001r4">9.4<!--tex4ht:ref: tab:src-prepare-table --></a> as supporting +it. The <span +class="ectt-1000">src_prepare </span>function can be used for post-unpack source preparation. +</p><!--l. 142--><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 <a +href="#x1-860009.1.1">9.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. +</p><!--l. 145--><p class="noindent" >For EAPIs listed in table <a +href="#x1-90001r4">9.4<!--tex4ht:ref: tab:src-prepare-table --></a> as using format 6 or 8, the default implementation used when +the ebuild lacks the <span +class="ectt-1000">src_prepare </span>function shall behave as in listing <a +href="#x1-90002r2">9.2<!--tex4ht:ref: lst:src-prepare-6 --></a> or listing <a +href="#x1-90003r3">9.3<!--tex4ht:ref: lst:src-prepare-8 --></a>, +respectively. +</p><!--l. 149--><p class="noindent" >For other EAPIs supporting <span +class="ectt-1000">src_prepare</span>, the default implementation used when the ebuild lacks +the <span +class="ectt-1000">src_prepare </span>function is a no-op. +</p> +<div class="table"> + + +<!--l. 153--><p class="noindent" ><a + id="x1-90001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.4: </span><span +class="content"><span +class="ectt-1000">src_prepare </span>support and behaviour for EAPIs</span></div><!--tex4ht:label?: x1-90001r4 --> +<div class="tabular"> + <table id="TBL-27" class="tabular" + +><colgroup id="TBL-27-1g"><col +id="TBL-27-1" /><col +id="TBL-27-2" /><col +id="TBL-27-3" /></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="ecbx-1000">Supports </span><span +class="ectt-1000">src_prepare</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-27-1-3" +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-27-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-2-1" +class="td11"> 0, 1 </td><td style="white-space:nowrap; text-align:left;" id="TBL-27-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-27-2-3" +class="td11"> Not applicable </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"> 2, 3, 4, 5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-27-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-27-3-3" +class="td11"> no-op </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"> 6, 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-27-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-27-4-3" +class="td11"> 6 </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"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-27-5-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-27-5-3" +class="td11"> 8 </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> + + +<!--l. 169--><p class="noindent" ><a + id="x1-90002r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 9.2: </span><span +class="content"><span +class="ectt-1000">src_prepare</span>, format 6</span></div><!--tex4ht:label?: x1-90002r2 --> + + +<pre class="verbatim" id="verbatim-8"> +src_prepare() { + if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]]; then + [[ -n ${PATCHES[@]} ]] && eapply "${PATCHES[@]}" + else + [[ -n ${PATCHES} ]] && eapply ${PATCHES} + fi + eapply_user +}</pre> +<!--l. 180--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> + + +<!--l. 183--><p class="noindent" ><a + id="x1-90003r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 9.3: </span><span +class="content"><span +class="ectt-1000">src_prepare</span>, format 8</span></div><!--tex4ht:label?: x1-90003r3 --> + + +<pre class="verbatim" id="verbatim-9"> +src_prepare() { + if [[ ${PATCHES@a} == *a* ]]; then + [[ -n ${PATCHES[@]} ]] && eapply -- "${PATCHES[@]}" + else + [[ -n ${PATCHES} ]] && eapply -- ${PATCHES} + fi + eapply_user +}</pre> +<!--l. 194--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> +<h4 class="subsectionHead"><span class="titlemark">9.1.6 </span> <a + id="x1-910009.1.6"></a>src_configure</h4> +<!--l. 199--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">src-configure</span></span></span> The <span +class="ectt-1000">src_configure </span>function is only called for EAPIs listed in table <a +href="#x1-91001r5">9.5<!--tex4ht:ref: tab:src-configure-table --></a> as +supporting it. +</p><!--l. 202--><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 <a +href="#x1-860009.1.1">9.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. +</p><!--l. 205--><p class="noindent" >The <span +class="ectt-1000">src_configure </span>function configures the package’s build environment. The default +implementation used when the ebuild lacks the <span +class="ectt-1000">src_configure </span>function shall behave as in +listing <a +href="#x1-91002r4">9.4<!--tex4ht:ref: lst:src-configure-2 --></a>. +</p> +<div class="table"> + + +<!--l. 210--><p class="noindent" ><a + id="x1-91001r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.5: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">src_configure</span></span></div><!--tex4ht:label?: x1-91001r5 --> +<div class="tabular"> + <table id="TBL-28" class="tabular" + +><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">src_configure</span><span +class="ecbx-1000">?</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"> 0, 1 </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"> 2, 3, 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-28-3-2" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> + + +<!--l. 223--><p class="noindent" ><a + id="x1-91002r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 9.4: </span><span +class="content"><span +class="ectt-1000">src_configure</span></span></div><!--tex4ht:label?: x1-91002r4 --> + + +<pre class="verbatim" id="verbatim-10"> +src_configure() { + if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then + econf + fi +}</pre> +<!--l. 231--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> +<h4 class="subsectionHead"><span class="titlemark">9.1.7 </span> <a + id="x1-920009.1.7"></a>src_compile</h4> +<!--l. 236--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">src-compile</span></span></span> The <span +class="ectt-1000">src_compile </span>function configures the package’s build environment in EAPIs +lacking <span +class="ectt-1000">src_configure</span>, and builds the package in all EAPIs. +</p><!--l. 239--><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 <a +href="#x1-860009.1.1">9.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. +</p><!--l. 242--><p class="noindent" >For EAPIs listed in table <a +href="#x1-92001r6">9.6<!--tex4ht:ref: tab:src-compile-table --></a> as using format 0, 1 or 2, the default implementation used when the +ebuild lacks the <span +class="ectt-1000">src_prepare </span>function shall behave as in listing <a +href="#x1-92002r5">9.5<!--tex4ht:ref: lst:src-compile-0 --></a>, listing <a +href="#x1-92003r6">9.6<!--tex4ht:ref: lst:src-compile-1 --></a> or listing <a +href="#x1-92004r7">9.7<!--tex4ht:ref: lst:src-compile-2 --></a>, +respectively. +</p> +<div class="table"> + + +<!--l. 248--><p class="noindent" ><a + id="x1-92001r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.6: </span><span +class="content"><span +class="ectt-1000">src_compile </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-92001r6 --> +<div class="tabular"> + <table id="TBL-29" class="tabular" + +><colgroup id="TBL-29-1g"><col +id="TBL-29-1" /><col +id="TBL-29-2" /></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">Format</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"> 0 </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-2" +class="td11"> 0 </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"> 1 </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-2" +class="td11"> 1 </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"> 2, 3, 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-2" +class="td11"> 2 </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> + + +<!--l. 262--><p class="noindent" ><a + id="x1-92002r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 9.5: </span><span +class="content"><span +class="ectt-1000">src_compile</span>, format 0</span></div><!--tex4ht:label?: x1-92002r5 --> + + +<pre class="verbatim" id="verbatim-11"> +src_compile() { + if [[ -x ./configure ]]; then + econf + fi + if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + emake || die "emake failed" + fi +}</pre> +<!--l. 273--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> + + +<!--l. 276--><p class="noindent" ><a + id="x1-92003r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 9.6: </span><span +class="content"><span +class="ectt-1000">src_compile</span>, format 1</span></div><!--tex4ht:label?: x1-92003r6 --> + + +<pre class="verbatim" id="verbatim-12"> +src_compile() { + if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then + econf + fi + if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + emake || die "emake failed" + fi +}</pre> +<!--l. 287--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> + + +<!--l. 290--><p class="noindent" ><a + id="x1-92004r7"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 9.7: </span><span +class="content"><span +class="ectt-1000">src_compile</span>, format 2</span></div><!--tex4ht:label?: x1-92004r7 --> + + +<pre class="verbatim" id="verbatim-13"> +src_compile() { + if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + emake || die "emake failed" + fi +}</pre> +<!--l. 298--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> +<h4 class="subsectionHead"><span class="titlemark">9.1.8 </span> <a + id="x1-930009.1.8"></a>src_test</h4> +<!--l. 303--><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. 306--><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 <a +href="#x1-860009.1.1">9.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. +</p><!--l. 309--><p class="noindent" >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">emake check </span>if and only if such a target is available, or if not run <span +class="ectt-1000">emake test </span>if and +only if such a target is available. In both cases, if <span +class="ectt-1000">emake </span>returns non-zero the build must be +aborted. +</p><!--l. 314--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">parallel-tests</span></span></span> For EAPIs listed in table <a +href="#x1-93001r7">9.7<!--tex4ht:ref: tab:src-test-table --></a> as not supporting parallel tests, the <span +class="ectt-1000">emake</span> +command must be called with option <span +class="ectt-1000">-j1</span>. +</p><!--l. 317--><p class="noindent" >The <span +class="ectt-1000">src_test </span>function may be disabled by <span +class="ectt-1000">RESTRICT</span>. See section <a +href="#x1-680007.3.6">7.3.6<!--tex4ht:ref: sec:restrict --></a>. It may be disabled by +user too, using a PM-specific mechanism. +</p> +<div class="table"> + + +<!--l. 321--><p class="noindent" ><a + id="x1-93001r7"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.7: </span><span +class="content"><span +class="ectt-1000">src_test </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-93001r7 --> +<div class="tabular"> + <table id="TBL-30" class="tabular" + +><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">Supports parallel tests?</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"> 0, 1, 2, 3, 4 </td><td style="white-space:nowrap; text-align:left;" id="TBL-30-2-2" +class="td11"> No </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"> 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-30-3-2" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">9.1.9 </span> <a + id="x1-940009.1.9"></a>src_install</h4> +<!--l. 336--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">src-install</span></span></span> The <span +class="ectt-1000">src_install </span>function installs the package’s content to a directory specified in +<span +class="ectt-1000">D</span>. +</p><!--l. 339--><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 <a +href="#x1-860009.1.1">9.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. +</p><!--l. 342--><p class="noindent" >For EAPIs listed in table <a +href="#x1-94001r8">9.8<!--tex4ht:ref: tab:src-install-table --></a> as using format 4 or 6, the default implementation used when +the ebuild lacks the <span +class="ectt-1000">src_prepare </span>function shall behave as in listing <a +href="#x1-94002r8">9.8<!--tex4ht:ref: lst:src-install-4 --></a> or listing <a +href="#x1-94003r9">9.9<!--tex4ht:ref: lst:src-install-6 --></a>, +respectively. +</p><!--l. 346--><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. 350--><p class="noindent" ><a + id="x1-94001r8"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.8: </span><span +class="content"><span +class="ectt-1000">src_install </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-94001r8 --> +<div class="tabular"> + <table id="TBL-31" class="tabular" + +><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="ecbx-1000">Format</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"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-31-2-2" +class="td11"> no-op </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"> 4, 5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-31-3-2" +class="td11"> 4 </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"> 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-31-4-2" +class="td11"> 6 </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> + + +<!--l. 364--><p class="noindent" ><a + id="x1-94002r8"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 9.8: </span><span +class="content"><span +class="ectt-1000">src_install</span>, format 4</span></div><!--tex4ht:label?: x1-94002r8 --> + + +<pre class="verbatim" id="verbatim-14"> +src_install() { + if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + emake DESTDIR="${D}" install + fi + + if ! declare -p DOCS >/dev/null 2>&1; then + local d + for d in README* ChangeLog AUTHORS NEWS TODO CHANGES \ + THANKS BUGS FAQ CREDITS CHANGELOG; do + [[ -s "${d}" ]] && dodoc "${d}" + done + elif [[ $(declare -p DOCS) == "declare -a"* ]]; then + dodoc "${DOCS[@]}" + else + dodoc ${DOCS} + fi +}</pre> +<!--l. 384--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> + + +<!--l. 387--><p class="noindent" ><a + id="x1-94003r9"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 9.9: </span><span +class="content"><span +class="ectt-1000">src_install</span>, format 6</span></div><!--tex4ht:label?: x1-94003r9 --> + + +<pre class="verbatim" id="verbatim-15"> +src_install() { + if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + emake DESTDIR="${D}" install + fi + einstalldocs +}</pre> +<!--l. 396--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> +<h4 class="subsectionHead"><span class="titlemark">9.1.10 </span> <a + id="x1-950009.1.10"></a>pkg_preinst</h4> +<!--l. 401--><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. 405--><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. 408--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.11 </span> <a + id="x1-960009.1.11"></a>pkg_postinst</h4> +<!--l. 410--><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. 414--><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. 417--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.12 </span> <a + id="x1-970009.1.12"></a>pkg_prerm</h4> +<!--l. 419--><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. 423--><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. 426--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.13 </span> <a + id="x1-980009.1.13"></a>pkg_postrm</h4> +<!--l. 428--><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. 432--><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. 435--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.14 </span> <a + id="x1-990009.1.14"></a>pkg_config</h4> +<!--l. 437--><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. 440--><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. 442--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.15 </span> <a + id="x1-1000009.1.15"></a>pkg_info</h4> +<!--l. 444--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">pkg-info</span></span></span> 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 <a +href="#x1-100001r9">9.9<!--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. 450--><p class="noindent" ><span +class="ectt-1000">pkg_info </span>must not write to the filesystem. +</p> +<div class="table"> + + +<!--l. 453--><p class="noindent" ><a + id="x1-100001r9"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.9: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">pkg_info </span>on non-installed packages</span></div><!--tex4ht:label?: x1-100001r9 --> +<div class="tabular"> + <table id="TBL-32" class="tabular" + +><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">pkg_info </span><span +class="ecbx-1000">on non-installed packages?</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"> 0, 1, 2, 3 </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"> 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-32-3-2" +class="td11"> Yes </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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">9.1.16 </span> <a + id="x1-1010009.1.16"></a>pkg_nofetch</h4> +<!--l. 468--><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. 472--><p class="noindent" ><span +class="ectt-1000">pkg_nofetch </span>must require no write access to any part of the filesystem. +</p><!--l. 474--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.17 </span> <a + id="x1-1020009.1.17"></a>Default phase functions</h4> +<!--l. 477--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">default-phase-funcs</span></span></span> In EAPIs listed in table <a +href="#x1-102001r10">9.10<!--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. 484--><p class="noindent" ><a + id="x1-102001r10"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.10: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">default_ </span>phase functions</span></div><!--tex4ht:label?: x1-102001r10 --> +<div class="tabular"> + <table id="TBL-33" class="tabular" + +><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">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-33-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-2-1" +class="td11"> 0, 1 </td><td style="white-space:normal; text-align:left;" id="TBL-33-2-2" +class="td11"> <!--l. 491--><p class="noindent" >None </p></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"> 2, 3 </td><td style="white-space:normal; text-align:left;" id="TBL-33-3-2" +class="td11"> <!--l. 492--><p class="noindent" ><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> </p></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"> 4, 5, 6, 7, 8 </td><td style="white-space:normal; text-align:left;" id="TBL-33-4-2" +class="td11"> <!--l. 494--><p class="noindent" ><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>, + <span +class="ectt-1000">src_install</span> </p></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"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">9.2 </span> <a + id="x1-1030009.2"></a>Call Order</h3> +<!--l. 502--><p class="noindent" >The call order for installing a package is: +</p><!--l. 505--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend </span>(only for EAPIs listed in table <a +href="#x1-87001r3">9.3<!--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 <a +href="#x1-90001r4">9.4<!--tex4ht:ref: tab:src-prepare-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure </span>(only for EAPIs listed in table <a +href="#x1-91001r5">9.5<!--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>or disabled by user) + </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. 518--><p class="noindent" >The call order for uninstalling a package is: +</p><!--l. 521--><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. 525--><p class="noindent" >The call order for upgrading, downgrading or reinstalling a package is: +</p><!--l. 528--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend </span>(only for EAPIs listed in table <a +href="#x1-87001r3">9.3<!--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 <a +href="#x1-90001r4">9.4<!--tex4ht:ref: tab:src-prepare-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure </span>(only for EAPIs listed in table <a +href="#x1-91001r5">9.5<!--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. 545--><p class="noindent" > +</p><dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 545--><p class="noindent" ><span +class="ecbx-1000">Note: </span>When up- or downgrading a package in EAPI 0 or 1, the last four phase functions can +alternatively be called in the order <span +class="ectt-1000">pkg_preinst</span>, <span +class="ectt-1000">pkg_postinst</span>, <span +class="ectt-1000">pkg_prerm</span>, <span +class="ectt-1000">pkg_postrm</span>. +This behaviour is deprecated.</p></dd></dl> +<!--l. 547--><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. 551--><p class="noindent" >For installing binary packages, the <span +class="ectt-1000">src </span>phases are not called. +</p><!--l. 553--><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 10</span><br /><a + id="x1-10400010"></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—see section <a +href="#x1-380004.6">4.6<!--tex4ht:ref: sec:eclass-dir --></a>. +Each eclass is a single file named <span +class="ectt-1000"><name>.eclass</span>, where <span +class="ectt-1000"><name> </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">10.1 </span> <a + id="x1-10500010.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—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">10.2 </span> <a + id="x1-10600010.2"></a>Eclass-defined Metadata Keys</h3> +<!--l. 37--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">accumulate-vars</span></span></span> The <span +class="ectt-1000">IUSE</span>, <span +class="ectt-1000">REQUIRED_USE</span>, <span +class="ectt-1000">DEPEND</span>, <span +class="ectt-1000">BDEPEND</span>, <span +class="ectt-1000">RDEPEND</span>, <span +class="ectt-1000">PDEPEND </span>and <span +class="ectt-1000">IDEPEND</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. For +EAPIs listed in table <a +href="#x1-106001r1">10.1<!--tex4ht:ref: tab:accumulate-vars --></a> as accumulating <span +class="ectt-1000">PROPERTIES </span>and <span +class="ectt-1000">RESTRICT</span>, the same is true for these +variables. 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 <a +href="#x1-690007.3.7">7.3.7<!--tex4ht:ref: sec:rdepend-depend --></a> are +applied. +</p> +<div class="table"> + + +<!--l. 46--><p class="noindent" ><a + id="x1-106001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.1: </span><span +class="content">EAPIs accumulating <span +class="ectt-1000">PROPERTIES </span>and <span +class="ectt-1000">RESTRICT </span>across eclasses</span></div><!--tex4ht:label?: x1-106001r1 --> +<div class="tabular"> + <table id="TBL-34" class="tabular" + +><colgroup id="TBL-34-1g"><col +id="TBL-34-1" /><col +id="TBL-34-2" /><col +id="TBL-34-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-34-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-34-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-34-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Accumulates </span><span +class="ectt-1000">PROPERTIES</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Accumulates </span><span +class="ectt-1000">RESTRICT</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-34-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-2-1" +class="td11"> 0, 1, 2, 3, 4, 5, 6, 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-2-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-3-1" +class="td11"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-3-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">10.3 </span> <a + id="x1-10700010.3"></a>EXPORT_FUNCTIONS</h3> +<!--l. 62--><p class="noindent" >There is one command available in the eclass environment that is neither available nor meaningful +in ebuilds—<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 <a +href="#x1-107001r1">10.1<!--tex4ht:ref: lst:export-functions --></a> and is a snippet from a hypothetical <span +class="ectt-1000">foo.eclass</span>. + + +</p><!--l. 69--><p class="noindent" ><a + id="x1-107001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 10.1: </span><span +class="content"><span +class="ectt-1000">EXPORT_FUNCTIONS </span>example: <span +class="ectt-1000">foo.eclass</span></span></div><!--tex4ht:label?: x1-107001r1 --> + + +<pre class="verbatim" id="verbatim-16"> +foo_src_compile() +{ + econf --enable-gerbil \ + $(use_enable fnord) + emake gerbil || die "Couldn’t make a gerbil" + emake || die "emake failed" +} + +EXPORT_FUNCTIONS src_compile</pre> +<!--l. 80--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> +<!--l. 83--><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. 88--><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> +<h2 class="chapterHead"><span class="titlemark">Chapter 11</span><br /><a + id="x1-10800011"></a>The Ebuild Environment</h2> +<h3 class="sectionHead"><span class="titlemark">11.1 </span> <a + id="x1-10900011.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 <a +href="#x1-11400011.2">11.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-109001r1"></a> +</p><!--l. 22--><div class="longtable"> <table id="TBL-35" class="longtable" + +><colgroup id="TBL-35-1g"><col +id="TBL-35-1" /><col +id="TBL-35-2" /><col +id="TBL-35-3" /><col +id="TBL-35-4" /></colgroup> + <tr + style="vertical-align:baseline;" id="TBL-35-1-"><td colspan="4" style="white-space:nowrap; text-align:center;" id="TBL-35-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"> <div class="caption" +><span class="id">Table 11.1: </span><span +class="content">Defined variables</span></div><!--tex4ht:label?: x1-109001r1 --> </div> + </td></tr><tr + style="vertical-align:baseline;" id="TBL-35-2-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-35-2-1" +class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span> + </td></tr><tr + style="vertical-align:baseline;" id="TBL-35-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-35-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-35-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-35-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-35-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-35-4-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-35-4-1" +class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span> + </td></tr><tr + style="vertical-align:baseline;" id="TBL-35-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-5-1" +class="td11"> </td> </tr><tr + style="vertical-align:baseline;" id="TBL-35-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-6-1" +class="td11"></td><td style="white-space:normal; text-align:left;" id="TBL-35-6-2" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-35-6-3" +class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-35-6-4" +class="td11"> +</td></tr> <tr + style="vertical-align:baseline;" id="TBL-35-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-18-1" +class="td11"> <span +class="ectt-1000">P </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-18-2" +class="td11"> + <!--l. 42--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-18-3" +class="td11"> No<span class="footnote-mark"><a +href="#fn1x12" id="fn1x12-bk"><sup class="textsuperscript">1</sup></a></span><a + id="x1-109002f1"></a> </td><td style="white-space:normal; text-align:left;" id="TBL-35-18-4" +class="td11"> + <!--l. 44--><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-35-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-19-1" +class="td11"> <span +class="ectt-1000">PF </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-19-2" +class="td11"> + <!--l. 46--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-19-3" +class="td11"> Ditto </td><td style="white-space:normal; text-align:left;" id="TBL-35-19-4" +class="td11"> + <!--l. 48--><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-35-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-20-1" +class="td11"> <span +class="ectt-1000">PN </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-20-2" +class="td11"> + <!--l. 50--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-20-3" +class="td11"> Ditto </td><td style="white-space:normal; text-align:left;" id="TBL-35-20-4" +class="td11"> + <!--l. 52--><p class="noindent" >Package name, for example <span +class="ectt-1000">vim</span>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-21-1" +class="td11"> <span +class="ectt-1000">CATEGORY </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-21-2" +class="td11"> + <!--l. 54--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-21-3" +class="td11"> Ditto </td><td style="white-space:normal; text-align:left;" id="TBL-35-21-4" +class="td11"> + <!--l. 56--><p class="noindent" >The package’s category, for example <span +class="ectt-1000">app-editors</span>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-22-1" +class="td11"> <span +class="ectt-1000">PV </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-22-2" +class="td11"> + <!--l. 58--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-22-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-22-4" +class="td11"> + <!--l. 60--><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-35-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-23-1" +class="td11"> <span +class="ectt-1000">PR </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-23-2" +class="td11"> + <!--l. 62--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-23-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-23-4" +class="td11"> + <!--l. 64--><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-35-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-24-1" +class="td11"> <span +class="ectt-1000">PVR </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-24-2" +class="td11"> + <!--l. 66--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-24-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-24-4" +class="td11"> + <!--l. 68--><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-35-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-25-1" +class="td11"> <span +class="ectt-1000">A </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-25-2" +class="td11"> + <!--l. 70--><p class="noindent" ><span +class="ectt-1000">src_*</span>, + <span +class="ectt-1000">pkg_nofetch</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-25-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-25-4" +class="td11"> + <!--l. 72--><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-35-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-26-1" +class="td11"> <span +class="ectt-1000">AA</span><span class="footnote-mark"><a +href="#fn2x12" id="fn2x12-bk"><sup class="textsuperscript">2</sup></a></span><a + id="x1-109003f2"></a> </td><td style="white-space:normal; text-align:left;" id="TBL-35-26-2" +class="td11"> + <!--l. 80--><p class="noindent" >Ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-26-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-26-4" +class="td11"> + <!--l. 82--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">aa</span></span></span> 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 <a +href="#x1-109008r3">11.3<!--tex4ht:ref: tab:removed-env-vars-table --></a> as supporting <span +class="ectt-1000">AA</span>. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-35-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-27-1" +class="td11"> <span +class="ectt-1000">FILESDIR </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-27-2" +class="td11"> + <!--l. 87--><p class="noindent" ><span +class="ectt-1000">src_*</span>, + global scope<span class="footnote-mark"><a +href="#fn3x12" id="fn3x12-bk"><sup class="textsuperscript">3</sup></a></span> <a + id="x1-109004f3"></a> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-27-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-27-4" +class="td11"> + <!--l. 90--><p class="noindent" >The full path to a directory where the files from the package’s files directory + (used for small support files or patches) are available. See section <a +href="#x1-310004.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-35-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-28-1" +class="td11"> <span +class="ectt-1000">DISTDIR </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-28-2" +class="td11"> + <!--l. 95--><p class="noindent" >Ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-28-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-28-4" +class="td11"> + <!--l. 97--><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-35-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-29-1" +class="td11"> <span +class="ectt-1000">WORKDIR </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-29-2" +class="td11"> + <!--l. 99--><p class="noindent" >Ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-29-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-29-4" +class="td11"> + <!--l. 101--><p class="noindent" >The full path to the ebuild’s working directory, where all build data should be + contained. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-30-1" +class="td11"> <span +class="ectt-1000">S </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-30-2" +class="td11"> + <!--l. 103--><p class="noindent" ><span +class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-30-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-30-4" +class="td11"> + <!--l. 105--><p class="noindent" >The full 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>. May be modified by ebuilds. If + <span +class="ectt-1000">S </span>is assigned in the global scope of an ebuild, then the restrictions of section <a +href="#x1-11400011.2">11.2<!--tex4ht:ref: sec:ebuild-env-state --></a> + for global variables apply. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-31-1" +class="td11"> <span +class="ectt-1000">PORTDIR </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-31-2" +class="td11"> + <!--l. 110--><p class="noindent" ><span +class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-31-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-31-4" +class="td11"> + <!--l. 112--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">portdir</span></span></span> The full path to the master repository’s base directory. Only for EAPIs + listed in table <a +href="#x1-109008r3">11.3<!--tex4ht:ref: tab:removed-env-vars-table --></a> as supporting <span +class="ectt-1000">PORTDIR</span>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-32-1" +class="td11"> <span +class="ectt-1000">ECLASSDIR </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-32-2" +class="td11"> + <!--l. 115--><p class="noindent" ><span +class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-32-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-32-4" +class="td11"> + <!--l. 117--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">eclassdir</span></span></span> The full path to the master repository’s eclass directory. Only for + EAPIs listed in table <a +href="#x1-109008r3">11.3<!--tex4ht:ref: tab:removed-env-vars-table --></a> as supporting <span +class="ectt-1000">ECLASSDIR</span>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-33-1" +class="td11"> <span +class="ectt-1000">ROOT </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-33-2" +class="td11"> + <!--l. 120--><p class="noindent" ><span +class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-33-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-33-4" +class="td11"> + <!--l. 122--><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. The presence of a trailing slash is EAPI dependent as listed + in table <a +href="#x1-113001r7">11.7<!--tex4ht:ref: tab:trailing-slash --></a>. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-35-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-34-1" +class="td11"> <span +class="ectt-1000">EROOT </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-34-2" +class="td11"> + <!--l. 128--><p class="noindent" ><span +class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-34-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-34-4" +class="td11"> + <!--l. 130--><p class="noindent" >Contains the concatenation of the paths in the <span +class="ectt-1000">ROOT </span>and <span +class="ectt-1000">EPREFIX </span>variables, for + convenience. See also the <span +class="ectt-1000">EPREFIX </span>variable. Only for EAPIs listed in table <a +href="#x1-109009r4">11.4<!--tex4ht:ref: tab:offset-env-vars-table --></a> + as supporting <span +class="ectt-1000">EROOT</span>. The presence of a trailing slash is EAPI dependent as listed + in table <a +href="#x1-113001r7">11.7<!--tex4ht:ref: tab:trailing-slash --></a>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-35-1" +class="td11"> <span +class="ectt-1000">SYSROOT </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-35-2" +class="td11"> + <!--l. 135--><p class="noindent" ><span +class="ectt-1000">src_*</span>, + <span +class="ectt-1000">pkg_setup</span><span class="footnote-mark"><a +href="#fn4x12" id="fn4x12-bk"><sup class="textsuperscript">4</sup></a></span> <a + id="x1-109005f4"></a> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-35-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-35-4" +class="td11"> + <!--l. 138--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">sysroot</span></span></span> The absolute path to the root directory containing build dependencies + satisfied by <span +class="ectt-1000">DEPEND</span>. Only for EAPIs listed in table <a +href="#x1-109007r2">11.2<!--tex4ht:ref: tab:added-env-vars-table --></a> as supporting <span +class="ectt-1000">SYSROOT</span>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-36-1" +class="td11"> <span +class="ectt-1000">ESYSROOT </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-36-2" +class="td11"> + <!--l. 142--><p class="noindent" >Ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-36-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-36-4" +class="td11"> + <!--l. 144--><p class="noindent" >Contains the concatenation of the <span +class="ectt-1000">SYSROOT </span>path and applicable prefix value, + as determined by table <a +href="#x1-72003r3">8.3<!--tex4ht:ref: tab:depend-prefix --></a>. Only for EAPIs listed in table <a +href="#x1-109009r4">11.4<!--tex4ht:ref: tab:offset-env-vars-table --></a> as supporting + <span +class="ectt-1000">ESYSROOT</span>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-37-1" +class="td11"> <span +class="ectt-1000">BROOT </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-37-2" +class="td11"> + <!--l. 148--><p class="noindent" >Ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-37-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-37-4" +class="td11"> + <!--l. 150--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">broot</span></span></span> The absolute path to the root directory containing build dependencies + satisfied by <span +class="ectt-1000">BDEPEND </span>and <span +class="ectt-1000">IDEPEND</span>, typically executable build tools. This includes + any applicable offset prefix. Only for EAPIs listed in table <a +href="#x1-109009r4">11.4<!--tex4ht:ref: tab:offset-env-vars-table --></a> as supporting + <span +class="ectt-1000">BROOT</span>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-38-1" +class="td11"> </td></tr> + <tr + style="vertical-align:baseline;" id="TBL-35-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-39-1" +class="td11"> <span +class="ectt-1000">T </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-39-2" +class="td11"> + <!--l. 156--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-39-3" +class="td11"> Partially<span class="footnote-mark"><a +href="#fn5x12" id="fn5x12-bk"><sup class="textsuperscript">5</sup></a></span><a + id="x1-109006f5"></a> </td><td style="white-space:normal; text-align:left;" id="TBL-35-39-4" +class="td11"> + <!--l. 160--><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-35-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-40-1" +class="td11"> <span +class="ectt-1000">TMPDIR </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-40-2" +class="td11"> + <!--l. 162--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-40-3" +class="td11"> Ditto </td><td style="white-space:normal; text-align:left;" id="TBL-35-40-4" +class="td11"> + <!--l. 164--><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-35-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-41-1" +class="td11"> <span +class="ectt-1000">HOME </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-41-2" +class="td11"> + <!--l. 167--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-41-3" +class="td11"> Ditto </td><td style="white-space:normal; text-align:left;" id="TBL-35-41-4" +class="td11"> + <!--l. 169--><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-35-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-42-1" +class="td11"> <span +class="ectt-1000">EPREFIX </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-42-2" +class="td11"> + <!--l. 172--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-42-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-42-4" +class="td11"> + <!--l. 174--><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 <a +href="#x1-11200011.1.3">11.1.3<!--tex4ht:ref: sec:offset-vars --></a>. Only for EAPIs listed in table <a +href="#x1-109009r4">11.4<!--tex4ht:ref: tab:offset-env-vars-table --></a> as + supporting <span +class="ectt-1000">EPREFIX</span>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-43-1" +class="td11"> <span +class="ectt-1000">D </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-43-2" +class="td11"> + <!--l. 182--><p class="noindent" ><span +class="ectt-1000">src_install</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-43-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-43-4" +class="td11"> + <!--l. 184--><p class="noindent" >Contains the full path to the image directory into which the package should + be installed. The presence of a trailing slash is EAPI dependent as listed in + table <a +href="#x1-113001r7">11.7<!--tex4ht:ref: tab:trailing-slash --></a>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-44-1" +class="td11"> <span +class="ectt-1000">D </span>(continued) </td><td style="white-space:normal; text-align:left;" id="TBL-35-44-2" +class="td11"> + <!--l. 188--><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-35-44-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-44-4" +class="td11"> + <!--l. 190--><p class="noindent" >Contains the full path to the image that is about to be or has just been merged. + The presence of a trailing slash is EAPI dependent as listed in table <a +href="#x1-113001r7">11.7<!--tex4ht:ref: tab:trailing-slash --></a>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-45-1" +class="td11"> <span +class="ectt-1000">ED </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-45-2" +class="td11"> + <!--l. 194--><p class="noindent" ><span +class="ectt-1000">src_install</span>, + <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-35-45-3" +class="td11"> See <span +class="ectt-1000">D </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-45-4" +class="td11"> + <!--l. 196--><p class="noindent" >Contains the concatenation of the paths in the <span +class="ectt-1000">D </span>and <span +class="ectt-1000">EPREFIX </span>variables, for + convenience. See also the <span +class="ectt-1000">EPREFIX </span>variable. Only for EAPIs listed in table <a +href="#x1-109009r4">11.4<!--tex4ht:ref: tab:offset-env-vars-table --></a> + as supporting <span +class="ectt-1000">ED</span>. The presence of a trailing slash is EAPI dependent as listed in + table <a +href="#x1-113001r7">11.7<!--tex4ht:ref: tab:trailing-slash --></a>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-46-1" +class="td11"> <span +class="ectt-1000">DESTTREE </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-46-2" +class="td11"> + <!--l. 201--><p class="noindent" ><span +class="ectt-1000">src_install</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-46-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-46-4" +class="td11"> + <!--l. 203--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">desttree</span></span></span> Controls the location where <span +class="ectt-1000">dobin</span>, <span +class="ectt-1000">dolib</span>, <span +class="ectt-1000">domo</span>, and <span +class="ectt-1000">dosbin </span>install + things. Only for EAPIs listed in table <a +href="#x1-109008r3">11.3<!--tex4ht:ref: tab:removed-env-vars-table --></a> as supporting <span +class="ectt-1000">DESTTREE</span>. In all other + EAPIs, this is retained as a conceptual variable not exported to the ebuild + environment. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-47-1" +class="td11"> <span +class="ectt-1000">INSDESTTREE </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-47-2" +class="td11"> + <!--l. 208--><p class="noindent" ><span +class="ectt-1000">src_install</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-47-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-47-4" +class="td11"> + <!--l. 210--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">insdesttree</span></span></span> Controls the location where <span +class="ectt-1000">doins </span>installs things. Only for EAPIs + listed in table <a +href="#x1-109008r3">11.3<!--tex4ht:ref: tab:removed-env-vars-table --></a> as supporting <span +class="ectt-1000">INSDESTTREE</span>. In all other EAPIs, this is + retained as a conceptual variable not exported to the ebuild environment. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-48-1" +class="td11"> <span +class="ectt-1000">USE </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-48-2" +class="td11"> + <!--l. 214--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-48-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-48-4" +class="td11"> + <!--l. 216--><p class="noindent" >A whitespace-delimited list of all active USE flags for this ebuild. See + section <a +href="#x1-11000011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for details. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-35-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-49-1" +class="td11"> <span +class="ectt-1000">EBUILD_PHASE </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-49-2" +class="td11"> + <!--l. 219--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-49-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-49-4" +class="td11"> + <!--l. 221--><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-35-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-50-1" +class="td11"> <span +class="ectt-1000">EBUILD_PHASE_FUNC </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-50-2" +class="td11"> + <!--l. 227--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-50-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-50-4" +class="td11"> + <!--l. 229--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">ebuild-phase-func</span></span></span> Takes one of the values <span +class="ectt-1000">pkg_config</span>, <span +class="ectt-1000">pkg_setup</span>, + <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>, <span +class="ectt-1000">src_install</span>, <span +class="ectt-1000">pkg_preinst</span>, <span +class="ectt-1000">pkg_postinst</span>, <span +class="ectt-1000">pkg_prerm</span>, <span +class="ectt-1000">pkg_postrm</span>, + <span +class="ectt-1000">pkg_info</span>, <span +class="ectt-1000">pkg_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. Only for EAPIs listed in table <a +href="#x1-109007r2">11.2<!--tex4ht:ref: tab:added-env-vars-table --></a> as supporting <span +class="ectt-1000">EBUILD_PHASE_FUNC</span>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-51-1" +class="td11"> <span +class="ectt-1000">KV </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-51-2" +class="td11"> + <!--l. 237--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-51-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-51-4" +class="td11"> + <!--l. 239--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">kv</span></span></span> The version of the running kernel at the time the ebuild was first executed, as + returned by the <span +class="ectt-1000">uname -r </span>command or equivalent. May be modified by ebuilds. + Only for EAPIs listed in table <a +href="#x1-109008r3">11.3<!--tex4ht:ref: tab:removed-env-vars-table --></a> as supporting <span +class="ectt-1000">KV</span>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-52-1" +class="td11"> <span +class="ectt-1000">MERGE_TYPE </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-52-2" +class="td11"> + <!--l. 243--><p class="noindent" ><span +class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-52-3" +class="td11"> No </td><td style="white-space:normal; text-align:left;" id="TBL-35-52-4" +class="td11"> + <!--l. 245--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">merge-type</span></span></span> The type of package that is being merged. Possible values are: + <span +class="ectt-1000">source </span>if building and installing a package from source, <span +class="ectt-1000">binary </span>if installing a + binary package, and <span +class="ectt-1000">buildonly </span>if building a binary package without installing + it. Only for EAPIs listed in table <a +href="#x1-109007r2">11.2<!--tex4ht:ref: tab:added-env-vars-table --></a> as supporting <span +class="ectt-1000">MERGE_TYPE</span>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-53-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-53-1" +class="td11"> <span +class="ectt-1000">REPLACING_VERSIONS </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-53-2" +class="td11"> + <!--l. 250--><p class="noindent" ><span +class="ectt-1000">pkg_*</span> + (see + text) </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-53-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-53-4" +class="td11"> + <!--l. 252--><p class="noindent" >A list of all versions of this package (including revision, if specified), whitespace + separated with no leading or trailing whitespace, that are being replaced + (uninstalled or overwritten) as a result of this install. See section <a +href="#x1-11100011.1.2">11.1.2<!--tex4ht:ref: sec:replacing-versions --></a>. Only + for EAPIs listed in table <a +href="#x1-109007r2">11.2<!--tex4ht:ref: tab:added-env-vars-table --></a> as supporting <span +class="ectt-1000">REPLACING_VERSIONS</span>. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-35-54-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-54-1" +class="td11"> <span +class="ectt-1000">REPLACED_BY_VERSION </span></td><td style="white-space:normal; text-align:left;" id="TBL-35-54-2" +class="td11"> + <!--l. 257--><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-35-54-3" +class="td11"> Yes </td><td style="white-space:normal; text-align:left;" id="TBL-35-54-4" +class="td11"> + <!--l. 259--><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 <a +href="#x1-11100011.1.2">11.1.2<!--tex4ht:ref: sec:replacing-versions --></a>. Only for EAPIs listed in table <a +href="#x1-109007r2">11.2<!--tex4ht:ref: tab:added-env-vars-table --></a> as supporting + <span +class="ectt-1000">REPLACED_BY_VERSION</span>. </p></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-55-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-55-1" +class="td11"> </td> </tr><tr + style="vertical-align:baseline;" id="TBL-35-56-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-56-1" +class="td11"></td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-57-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-57-1" +class="td11"> </td> </tr><tr + style="vertical-align:baseline;" id="TBL-35-58-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-58-1" +class="td11"></td> +</tr> + <tr + style="vertical-align:baseline;" id="TBL-35-15-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-35-15-1" +class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span> </td></tr><tr + style="vertical-align:baseline;" id="TBL-35-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-16-1" +class="td11"> </td> + </tr><tr + style="vertical-align:baseline;" id="TBL-35-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-17-1" +class="td11"> </td></tr> +</table></div> + + + +<div class="table"> + + +<!--l. 267--><p class="noindent" ><a + id="x1-109007r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.2: </span><span +class="content">EAPIs supporting various added env variables</span></div><!--tex4ht:label?: x1-109007r2 --> +<div class="tabular"> + <table id="TBL-36" class="tabular" + +><colgroup id="TBL-36-1g"><col +id="TBL-36-1" /><col +id="TBL-36-2" /><col +id="TBL-36-3" /><col +id="TBL-36-4" /><col +id="TBL-36-5" /><col +id="TBL-36-6" /><col +id="TBL-36-7" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-36-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-36-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:normal; text-align:left;" id="TBL-36-1-2" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ectt-1000">MERGE_TYPE</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:normal; text-align:left;" id="TBL-36-1-3" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ectt-1000">REPLACING_VERSIONS</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:normal; text-align:left;" id="TBL-36-1-4" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ectt-1000">REPLACED_BY_VERSION</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:normal; text-align:left;" id="TBL-36-1-5" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ectt-1000">EBUILD_PHASE_FUNC</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-36-1-6" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">SYSROOT</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-36-1-7" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">BROOT</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-36-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-36-2-1" +class="td11"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-2-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-2-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-2-5" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-2-6" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-2-7" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-36-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-36-3-1" +class="td11"> 4 </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-3-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-3-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-3-5" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-3-6" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-3-7" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-36-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-36-4-1" +class="td11"> 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-4-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-4-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-4-5" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-4-6" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-4-7" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-36-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-36-5-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-5-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-5-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-5-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-5-5" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-5-6" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-36-5-7" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-36-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-36-6-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 288--><p class="noindent" ><a + id="x1-109008r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.3: </span><span +class="content">EAPIs supporting various removed env variables</span></div><!--tex4ht:label?: x1-109008r3 --> +<div class="tabular"> + <table id="TBL-37" class="tabular" + +><colgroup id="TBL-37-1g"><col +id="TBL-37-1" /><col +id="TBL-37-2" /><col +id="TBL-37-3" /><col +id="TBL-37-4" /><col +id="TBL-37-5" /><col +id="TBL-37-6" /><col +id="TBL-37-7" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-37-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-37-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-37-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-37-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-37-1-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">PORTDIR</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-37-1-5" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">ECLASSDIR</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-37-1-6" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">DESTTREE</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-37-1-7" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">INSDESTTREE</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-37-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-37-2-1" +class="td11"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-2-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-2-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-2-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-2-5" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-2-6" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-2-7" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-37-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-37-3-1" +class="td11"> 4, 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-3-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-3-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-3-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-3-5" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-3-6" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-3-7" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-37-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-37-4-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-4-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-4-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-4-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-4-5" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-4-6" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-37-4-7" +class="td11"> No </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-37-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-37-5-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 308--><p class="noindent" ><a + id="x1-109009r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.4: </span><span +class="content">EAPIs supporting offset-prefix env variables</span></div><!--tex4ht:label?: x1-109009r4 --> +<div class="tabular"> + <table id="TBL-38" class="tabular" + +><colgroup id="TBL-38-1g"><col +id="TBL-38-1" /><col +id="TBL-38-2" /><col +id="TBL-38-3" /><col +id="TBL-38-4" /><col +id="TBL-38-5" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-38-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-38-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-38-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-38-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-38-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><td style="white-space:nowrap; text-align:center;" id="TBL-38-1-5" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">ESYSROOT</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-38-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-38-2-1" +class="td11"> 0, 1, 2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-2-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-2-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-2-5" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-38-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-38-3-1" +class="td11"> 3, 4, 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-3-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-3-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-3-5" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-38-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-38-4-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-4-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-4-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-4-5" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-38-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-38-5-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 325--><p class="noindent" >Except where otherwise noted, all variables set in the active profiles’ <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. 330--><p class="noindent" ><span +class="ectt-1000">PATH </span>must be initialized by the package manager to a “usable” default. The exact value here is left +up to interpretation, but it should include the equivalent “sbin” and “bin” and any package +manager specific directories. +</p><!--l. 334--><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. +<span class="fbox"><span +class="eccc1000-"><span +class="small-caps">env-unset</span></span></span> In addition, any variable whose name appears in the <span +class="ectt-1000">ENV_UNSET </span>variable must be +unset, for EAPIs listed in table <a +href="#x1-56002r5">5.5<!--tex4ht:ref: tab:profile-env-unset --></a> as supporting <span +class="ectt-1000">ENV_UNSET</span>. +</p><!--l. 339--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">locale-settings</span></span></span> The package manager must ensure that the <span +class="ectt-1000">LC_CTYPE </span>and <span +class="ectt-1000">LC_COLLATE</span> +locale categories are equivalent to the POSIX locale, as far as characters in the ASCII +range (U+0000 to U+007F) are concerned. Only for EAPIs listed in such a manner in +table <a +href="#x1-109010r5">11.5<!--tex4ht:ref: tab:locale-settings --></a>. +</p> +<div class="table"> + + +<!--l. 345--><p class="noindent" ><a + id="x1-109010r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.5: </span><span +class="content">Locale settings for EAPIs</span></div><!--tex4ht:label?: x1-109010r5 --> +<div class="tabular"> + <table id="TBL-39" class="tabular" + +><colgroup id="TBL-39-1g"><col +id="TBL-39-1" /><col +id="TBL-39-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-39-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-39-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-39-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Sane </span><span +class="ectt-1000">LC_CTYPE </span><span +class="ecbx-1000">and </span><span +class="ectt-1000">LC_COLLATE</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-39-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-39-2-1" +class="td11"> 0, 1, 2, 3, 4, 5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-39-2-2" +class="td11"> Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-39-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-39-3-1" +class="td11"> 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-39-3-2" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-39-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-39-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">11.1.1 </span> <a + id="x1-11000011.1.1"></a>USE and IUSE handling</h4> +<!--l. 361--><p class="nopar" >This section discusses the handling of four variables: + </p><dl class="description"><dt class="description"> + <!--l. 364--><p class="noindent" > +<span +class="ecbx-1000">IUSE</span> </p></dt><dd +class="description"> + <!--l. 364--><p class="noindent" >is the variable calculated from the <span +class="ectt-1000">IUSE </span>values defined in ebuilds and eclasses. + </p></dd><dt class="description"> + <!--l. 365--><p class="noindent" > +<span +class="ecbx-1000">IUSE_REFERENCEABLE</span> </p></dt><dd +class="description"> + <!--l. 365--><p class="noindent" >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’s state (for example, for use dependencies). + </p></dd><dt class="description"> + <!--l. 369--><p class="noindent" > +<span +class="ecbx-1000">IUSE_EFFECTIVE</span> </p></dt><dd +class="description"> + <!--l. 369--><p class="noindent" >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). + </p></dd><dt class="description"> + <!--l. 372--><p class="noindent" > +<span +class="ecbx-1000">USE</span> </p></dt><dd +class="description"> + <!--l. 372--><p class="noindent" >is a variable calculated by the package manager and exported to the ebuild + environment.</p></dd></dl> +<!--l. 375--><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. 378--><p class="noindent" >For EAPIs listed in table <a +href="#x1-56001r4">5.4<!--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, and <span +class="ectt-1000">IUSE_EFFECTIVE </span>contains the following values: +</p><!--l. 383--><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. 389--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">profile-iuse-inject</span></span></span> For EAPIs listed in table <a +href="#x1-56001r4">5.4<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as supporting profile defined <span +class="ectt-1000">IUSE</span> +injection, <span +class="ectt-1000">IUSE_REFERENCEABLE </span>and <span +class="ectt-1000">IUSE_EFFECTIVE </span>are equal and contain the following +values: +</p><!--l. 394--><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. 405--><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 <a +href="#x1-56001r4">5.4<!--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. 411--><p class="noindent" >For EAPIs listed in table <a +href="#x1-56001r4">5.4<!--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. 416--><p class="noindent" >For EAPIs listed in table <a +href="#x1-56001r4">5.4<!--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> +<h4 class="subsectionHead"><span class="titlemark">11.1.2 </span> <a + id="x1-11100011.1.2"></a>REPLACING_VERSIONS and REPLACED_BY_VERSION</h4> +<!--l. 423--><p class="nopar" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">replace-version-vars</span></span></span> In EAPIs listed in table <a +href="#x1-109007r2">11.2<!--tex4ht:ref: tab:added-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. 429--><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. 432--><p class="noindent" >In EAPIs listed in table <a +href="#x1-109007r2">11.2<!--tex4ht:ref: tab:added-env-vars-table --></a> as supporting it, the <span +class="ectt-1000">REPLACED_BY_VERSION </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. 436--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">11.1.3 </span> <a + id="x1-11200011.1.3"></a>Offset-prefix variables</h4> +<div class="table"> + + +<!--l. 440--><p class="noindent" ><a + id="x1-112001r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.6: </span><span +class="content">EAPIs supporting offset-prefix</span></div><!--tex4ht:label?: x1-112001r6 --> +<div class="tabular"> + <table id="TBL-40" class="tabular" + +><colgroup id="TBL-40-1g"><col +id="TBL-40-1" /><col +id="TBL-40-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-40-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-40-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-40-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-40-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-2-1" +class="td11"> 0, 1, 2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-40-2-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-40-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-3-1" +class="td11"> 3, 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-40-3-2" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-40-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 453--><p class="nopar" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">offset-prefix-vars</span></span></span> Table <a +href="#x1-112001r6">11.6<!--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> +<h4 class="subsectionHead"><span class="titlemark">11.1.4 </span> <a + id="x1-11300011.1.4"></a>Path variables and trailing slash</h4> +<!--l. 466--><p class="nopar" >Unless specified otherwise, the paths provided through package manager variables do not end with +a trailing slash. Consequently, the system root directory will be represented by the +empty string. A few exceptions to this rule are listed in table <a +href="#x1-113001r7">11.7<!--tex4ht:ref: tab:trailing-slash --></a> along with applicable +EAPIs. +</p><!--l. 471--><p class="noindent" >For EAPIs where those variables are defined to always end with a trailing slash, the +package manager guarantees that a trailing slash will always be appended to the path in +question. If the path specifies the system root directory, it will consist of a single slash +(<span +class="ectt-1000">/</span>). +</p><!--l. 475--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">trailing-slash</span></span></span> For EAPIs where those variables are defined to never end with a trailing slash, +the package manager guarantees that a trailing slash will never be present. If the path specifies the +system root directory, it will be empty. +</p> +<div class="table"> + + +<!--l. 480--><p class="noindent" ><a + id="x1-113001r7"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.7: </span><span +class="content">Variables that always or never end with a trailing slash</span></div><!--tex4ht:label?: x1-113001r7 --> +<div class="tabular"> + <table id="TBL-41" class="tabular" + +><colgroup id="TBL-41-1g"><col +id="TBL-41-1" /><col +id="TBL-41-2" /><col +id="TBL-41-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-41-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-41-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td colspan="2" style="white-space:nowrap; text-align:center;" id="TBL-41-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Ends with a trailing slash?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-41-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-41-2-1" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-41-2-2" +class="td11"> <span +class="ectt-1000">ROOT</span>, <span +class="ectt-1000">EROOT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-41-2-3" +class="td11"> <span +class="ectt-1000">D</span>, <span +class="ectt-1000">ED </span></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-41-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-41-3-1" +class="td11"> 0, 1, 2, 3, 4, 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-41-3-2" +class="td11"> always </td><td style="white-space:nowrap; text-align:left;" id="TBL-41-3-3" +class="td11"> always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-41-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-41-4-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-41-4-2" +class="td11"> never </td><td style="white-space:nowrap; text-align:left;" id="TBL-41-4-3" +class="td11"> never </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-41-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-41-5-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">11.2 </span> <a + id="x1-11400011.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. 9--><p class="noindent" > +</p><dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 9--><p class="noindent" ><span +class="ecbx-1000">Note: </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></dd></dl> +<!--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. Variables with special meanings to the +package manager are excluded from this rule. +</p><!--l. 15--><p class="noindent" >Global variables must only contain invariant values (see <a +href="#x1-600007.1">7.1<!--tex4ht:ref: sec:metadata-invariance --></a>). If a global variable’s value is +invariant, it may have the value that would be generated at any given point in the build +sequence. +</p><!--l. 19--><p class="noindent" >This is demonstrated by code listing <a +href="#x1-114001r1">11.1<!--tex4ht:ref: lst:env-saving --></a>. + + +</p><!--l. 22--><p class="noindent" ><a + id="x1-114001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 11.1: </span><span +class="content">Environment state between functions</span></div><!--tex4ht:label?: x1-114001r1 --> + + +<pre class="verbatim" id="verbatim-17"> +GLOBAL_VARIABLE="a" + +src_compile() +{ + GLOBAL_VARIABLE="b" + DEFAULT_VARIABLE="c" + export EXPORTED_VARIABLE="d" + local LOCAL_VARIABLE="e" +} + +src_install(){ + [[ ${GLOBAL_VARIABLE} == "a" ]] \ + || [[ ${GLOBAL_VARIABLE} == "b" ]] \ + || die "broken env saving for globals" + + [[ ${DEFAULT_VARIABLE} == "c" ]] \ + || die "broken env saving for default" + + [[ ${EXPORTED_VARIABLE} == "d" ]] \ + || die "broken env saving for exported" + + [[ $(printenv EXPORTED_VARIABLE ) == "d" ]] \ + || die "broken env saving for exported" + + [[ -z ${LOCAL_VARIABLE} ]] \ + || die "broken env saving for locals" +}</pre> +<!--l. 51--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> +<h3 class="sectionHead"><span class="titlemark">11.3 </span> <a + id="x1-11500011.3"></a>The State of the System Between Functions</h3> +<!--l. 3--><p class="nopar" >For the sake of this section: +</p><!--l. 6--><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’t merely a simple addition of something that doesn’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. 16--><p class="noindent" >The following exclusivity and invariancy requirements are mandated: +</p><!--l. 19--><p class="noindent" > + </p><ul> + <li class="compactitem">No variancy shall be introduced at any point between a package’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’s <span +class="ectt-1000">pkg_setup </span>and a package’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 12</span><br /><a + id="x1-11600012"></a>Available Commands</h2> +<!--l. 3--><p class="nopar" >This chapter documents the commands available to an ebuild. Unless otherwise specified, they may +be aliases, shell functions, or executables in the ebuild’s <span +class="ectt-1000">PATH</span>. +</p><!--l. 6--><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> +<h3 class="sectionHead"><span class="titlemark">12.1 </span> <a + id="x1-11700012.1"></a>System Commands</h3> +<!--l. 12--><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—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. 20--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.1.1 </span> <a + id="x1-11800012.1.1"></a>Guaranteed system commands</h4> +<!--l. 23--><p class="nopar" >The following commands must always be available in the ebuild environment: +</p><!--l. 26--><p class="noindent" > + </p><ul> + <li class="compactitem">All builtin commands in GNU bash, version as listed in table <a +href="#x1-58001r1">6.1<!--tex4ht:ref: tab:bash-version --></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="fbox"><span +class="eccc1000-"><span +class="small-caps">gnu-patch</span></span></span> <span +class="ectt-1000">patch </span>must be available, and must support all inputs valid for GNU patch, + version as listed in table <a +href="#x1-118001r1">12.1<!--tex4ht:ref: tab:system-commands-table --></a>. + </li> + <li class="compactitem"><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">gnu-find</span></span></span> <span +class="ectt-1000">find </span>and <span +class="ectt-1000">xargs </span>must be available, and must support all forms of invocations + valid for GNU findutils version 4.4 or later. Only for EAPIs listed in table <a +href="#x1-118001r1">12.1<!--tex4ht:ref: tab:system-commands-table --></a> as + requiring GNU find.</li></ul> +<div class="table"> + + +<!--l. 37--><p class="noindent" ><a + id="x1-118001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.1: </span><span +class="content">System commands for EAPIs</span></div><!--tex4ht:label?: x1-118001r1 --> +<div class="tabular"> + <table id="TBL-42" class="tabular" + +><colgroup id="TBL-42-1g"><col +id="TBL-42-1" /><col +id="TBL-42-2" /><col +id="TBL-42-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-42-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-42-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-42-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">GNU </span><span +class="ectt-1000">find</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-42-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">GNU </span><span +class="ectt-1000">patch </span><span +class="ecbx-1000">version</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-42-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-42-2-1" +class="td11"> 0, 1, 2, 3, 4 </td><td style="white-space:nowrap; text-align:left;" id="TBL-42-2-2" +class="td11"> Undefined </td><td style="white-space:nowrap; text-align:left;" id="TBL-42-2-3" +class="td11"> Any </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-42-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-42-3-1" +class="td11"> 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-42-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-42-3-3" +class="td11"> Any </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-42-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-42-4-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-42-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-42-4-3" +class="td11"> 2.7 </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-42-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-42-5-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">12.2 </span> <a + id="x1-11900012.2"></a>Commands Provided by Package Dependencies</h3> +<!--l. 54--><p class="nopar" >In some cases a package’s build process will require the availability of executables not provided by +the core system, a common example being autotools. The availability of commands provided by the +particular types of dependencies is explained in section <a +href="#x1-720008.1">8.1<!--tex4ht:ref: sec:dependency-classes --></a>. +</p><!--l. 1--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">12.3 </span> <a + id="x1-12000012.3"></a>Ebuild-specific Commands</h3> +<!--l. 4--><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. 9--><p class="noindent" >Unless otherwise noted, any output of these commands ends with a newline. +</p><!--l. 11--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.3.1 </span> <a + id="x1-12100012.3.1"></a>Failure behaviour and related commands</h4> +<!--l. 14--><p class="nopar" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">die-on-failure</span></span></span> 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 <a +href="#x1-121001r2">12.2<!--tex4ht:ref: tab:commands-die-table --></a>. +</p><!--l. 18--><p class="noindent" >The following commands affect this behaviour: + </p><dl class="description"><dt class="description"> + <!--l. 21--><p class="noindent" > +<span +class="ecbx-1000">nonfatal</span> </p></dt><dd +class="description"> + <!--l. 21--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">nonfatal</span></span></span> Takes one or more arguments and executes them 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, instead a non-zero exit status shall be returned. Only in + EAPIs listed in table <a +href="#x1-121001r2">12.2<!--tex4ht:ref: tab:commands-die-table --></a> as supporting <span +class="ectt-1000">nonfatal</span>. + </p><!--l. 26--><p class="noindent" >In EAPIs listed in table <a +href="#x1-121001r2">12.2<!--tex4ht:ref: tab:commands-die-table --></a> as having <span +class="ectt-1000">nonfatal </span>defined both as a shell function and + as an external command, the package manager must provide both implementations to + account for calling directly in ebuild scope or through <span +class="ectt-1000">xargs</span>. + </p><!--l. 30--><p class="noindent" >Explicit <span +class="ectt-1000">die </span>or <span +class="ectt-1000">assert </span>commands only respect <span +class="ectt-1000">nonfatal </span>when called with the <span +class="ectt-1000">-n</span> + option and in EAPIs supporting this option, see table <a +href="#x1-126001r6">12.6<!--tex4ht:ref: tab:die-properties --></a>.</p></dd></dl> +<div class="table"> + + +<!--l. 35--><p class="noindent" ><a + id="x1-121001r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.2: </span><span +class="content">EAPI command failure behaviour</span></div><!--tex4ht:label?: x1-121001r2 --> +<div class="tabular"> + <table id="TBL-43" class="tabular" + +><colgroup id="TBL-43-1g"><col +id="TBL-43-1" /><col +id="TBL-43-2" /><col +id="TBL-43-3" /><col +id="TBL-43-4" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-43-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-43-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:normal; text-align:left;" id="TBL-43-1-2" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ecbx-1000">Command</span> + <span +class="ecbx-1000">failure</span> + <span +class="ecbx-1000">behaviour</span></div> </td><td style="white-space:normal; text-align:left;" id="TBL-43-1-3" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ecbx-1000">Supports</span> + <span +class="ectt-1000">nonfatal</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:normal; text-align:left;" id="TBL-43-1-4" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ectt-1000">nonfatal</span> + <span +class="ecbx-1000">is</span> + <span +class="ecbx-1000">both</span> + <span +class="ecbx-1000">a</span> + <span +class="ecbx-1000">function</span> + <span +class="ecbx-1000">and</span> + <span +class="ecbx-1000">an</span> + <span +class="ecbx-1000">external</span> + <span +class="ecbx-1000">command?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-43-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-43-2-1" +class="td11"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-43-2-2" +class="td11"> Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-43-2-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-43-2-4" +class="td11"> n/a </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-43-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-43-3-1" +class="td11"> 4, 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-43-3-2" +class="td11"> Aborts </td><td style="white-space:nowrap; text-align:left;" id="TBL-43-3-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-43-3-4" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-43-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-43-4-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-43-4-2" +class="td11"> Aborts </td><td style="white-space:nowrap; text-align:left;" id="TBL-43-4-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-43-4-4" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-43-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-43-5-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">12.3.2 </span> <a + id="x1-12200012.3.2"></a>Banned commands</h4> +<!--l. 54--><p class="nopar" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">banned-commands</span></span></span> 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. 58--><p class="noindent" ><a + id="x1-122001r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.3: </span><span +class="content">Banned commands</span></div><!--tex4ht:label?: x1-122001r3 --> +<div class="tabular"> + <table id="TBL-44" class="tabular" + +><colgroup id="TBL-44-1g"><col +id="TBL-44-1" /><col +id="TBL-44-2" /><col +id="TBL-44-3" /><col +id="TBL-44-4" /><col +id="TBL-44-5" /><col +id="TBL-44-6" /><col +id="TBL-44-7" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-44-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-44-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td colspan="6" style="white-space:nowrap; text-align:center;" id="TBL-44-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-44-2-"><td style="white-space:nowrap; text-align:center;" id="TBL-44-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-44-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-44-2-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">dosed</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-44-2-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">einstall</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-44-2-5" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">dohtml</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-44-2-6" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">dolib</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-44-2-7" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">libopts</span></div> + +</td></tr><tr + style="vertical-align:baseline;" id="TBL-44-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-44-3-1" +class="td11"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-3-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-3-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-3-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-3-5" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-3-6" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-3-7" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-44-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-44-4-1" +class="td11"> 4, 5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-4-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-4-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-4-5" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-4-6" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-4-7" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-44-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-44-5-1" +class="td11"> 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-5-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-5-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-5-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-5-5" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-5-6" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-5-7" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-44-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-44-6-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-6-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-6-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-6-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-6-5" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-6-6" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-6-7" +class="td11"> Yes</td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-44-7-"><td style="white-space:nowrap; text-align:center;" id="TBL-44-7-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td colspan="6" style="white-space:nowrap; text-align:center;" id="TBL-44-7-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-44-8-"><td style="white-space:nowrap; text-align:center;" id="TBL-44-8-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-44-8-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">useq</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-44-8-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">hasv</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-44-8-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">hasq</span></div> </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-8-5" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-8-6" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-8-7" +class="td11"> </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-44-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-44-9-1" +class="td11"> 0, 1, 2, 3, 4, 5, 6, 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-9-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-9-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-9-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-9-5" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-9-6" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-9-7" +class="td11"> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-44-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-44-10-1" +class="td11"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-10-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-10-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-10-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-10-5" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-10-6" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-44-10-7" +class="td11"> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-44-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-44-11-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">12.3.3 </span> <a + id="x1-12300012.3.3"></a>Sandbox commands</h4> +<!--l. 91--><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"> + <!--l. 94--><p class="noindent" > +<span +class="ecbx-1000">addread</span> </p></dt><dd +class="description"> + <!--l. 94--><p class="noindent" >Add a directory to the permitted read list. + </p></dd><dt class="description"> + <!--l. 95--><p class="noindent" > +<span +class="ecbx-1000">addwrite</span> </p></dt><dd +class="description"> + <!--l. 95--><p class="noindent" >Add a directory to the permitted write list. + </p></dd><dt class="description"> + <!--l. 96--><p class="noindent" > +<span +class="ecbx-1000">addpredict</span> </p></dt><dd +class="description"> + <!--l. 96--><p class="noindent" >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. + </p></dd><dt class="description"> + <!--l. 98--><p class="noindent" > +<span +class="ecbx-1000">adddeny</span> </p></dt><dd +class="description"> + <!--l. 98--><p class="noindent" >Add a directory to the deny list.</p></dd></dl> +<!--l. 101--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.3.4 </span> <a + id="x1-12400012.3.4"></a>Package manager query commands</h4> +<!--l. 102--><p class="nopar" >These commands are used to extract information about the 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><!--l. 106--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">pm-query-options</span></span></span> In EAPIs listed in table <a +href="#x1-124001r4">12.4<!--tex4ht:ref: tab:pm-query-options --></a> as supporting option <span +class="ectt-1000">--host-root</span>, this flag as +the first argument will cause the query to apply to the host root. Otherwise, it applies to +<span +class="ectt-1000">ROOT</span>. +</p><!--l. 110--><p class="noindent" >In EAPIs listed in table <a +href="#x1-124001r4">12.4<!--tex4ht:ref: tab:pm-query-options --></a> as supporting options <span +class="ectt-1000">-b</span>, <span +class="ectt-1000">-d </span>and <span +class="ectt-1000">-r</span>, these mutually exclusive flags as +the first argument will cause the query to apply to locations targetted by <span +class="ectt-1000">BDEPEND</span>, <span +class="ectt-1000">DEPEND </span>and +<span +class="ectt-1000">RDEPEND</span>, respectively. When none of these options are given, <span +class="ectt-1000">-r </span>is assumed. + </p><dl class="description"><dt class="description"> + <!--l. 116--><p class="noindent" > +<span +class="ecbx-1000">has_version</span> </p></dt><dd +class="description"> + + + <!--l. 116--><p class="noindent" >Takes exactly one package dependency specification as an argument. Returns true if a + package matching the specification is installed, and false otherwise. + </p></dd><dt class="description"> + <!--l. 118--><p class="noindent" > +<span +class="ecbx-1000">best_version</span> </p></dt><dd +class="description"> + <!--l. 118--><p class="noindent" >Takes exactly one package dependency specification as an argument. If a matching + package is installed, prints <span +class="ectt-1000">category/package-version </span>of the highest matching + version; otherwise, prints an empty string. The exit code is unspecified.</p></dd></dl> +<div class="table"> + + +<!--l. 124--><p class="noindent" ><a + id="x1-124001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.4: </span><span +class="content">Package manager query command options supported by EAPIs</span></div><!--tex4ht:label?: x1-124001r4 --> +<div class="tabular"> + <table id="TBL-45" class="tabular" + +><colgroup id="TBL-45-1g"><col +id="TBL-45-1" /><col +id="TBL-45-2" /><col +id="TBL-45-3" /><col +id="TBL-45-4" /><col +id="TBL-45-5" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-45-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-45-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-45-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">--host-root</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-45-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">-b</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-45-1-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">-d</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-45-1-5" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">-r</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-45-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-2-1" +class="td11"> 0, 1, 2, 3, 4 </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-2-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-2-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-2-5" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-3-1" +class="td11"> 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-3-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-3-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-3-5" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-4-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-4-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-4-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-4-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-4-5" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-45-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-5-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">12.3.5 </span> <a + id="x1-12500012.3.5"></a>Output commands</h4> +<!--l. 142--><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. +</p><!--l. 148--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">output-no-stdout</span></span></span> Unless otherwise noted, output may be sent to stderr or some other +appropriate facility. In EAPIs listed in table <a +href="#x1-125001r5">12.5<!--tex4ht:ref: tab:output-commands --></a> as not allowing stdout output, using stdout as an +output facility is forbidden. + </p><dl class="description"><dt class="description"> + <!--l. 153--><p class="noindent" > +<span +class="ecbx-1000">einfo</span> </p></dt><dd +class="description"> + <!--l. 153--><p class="noindent" >Displays an informational message. + </p></dd><dt class="description"> + <!--l. 154--><p class="noindent" > +<span +class="ecbx-1000">einfon</span> </p></dt><dd +class="description"> + <!--l. 154--><p class="noindent" >Displays an informational message without a trailing newline. + </p></dd><dt class="description"> + <!--l. 155--><p class="noindent" > +<span +class="ecbx-1000">elog</span> </p></dt><dd +class="description"> + <!--l. 155--><p class="noindent" >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. + </p></dd><dt class="description"> + <!--l. 158--><p class="noindent" > +<span +class="ecbx-1000">ewarn</span> </p></dt><dd +class="description"> + <!--l. 158--><p class="noindent" >Displays a warning message. Must not go to stdout. + </p></dd><dt class="description"> + <!--l. 159--><p class="noindent" > +<span +class="ecbx-1000">eqawarn</span> </p></dt><dd +class="description"> + <!--l. 159--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">eqawarn</span></span></span> Display a QA warning message intended for ebuild developers. The package + manager may provide appropriate mechanisms to skip those messages for normal users. + Must not go to stdout. Only available in EAPIs listed in table <a +href="#x1-125001r5">12.5<!--tex4ht:ref: tab:output-commands --></a> as supporting + <span +class="ectt-1000">eqawarn</span>. + </p></dd><dt class="description"> + <!--l. 163--><p class="noindent" > +<span +class="ecbx-1000">eerror</span> </p></dt><dd +class="description"> + <!--l. 163--><p class="noindent" >Displays an error message. Must not go to stdout. + </p></dd><dt class="description"> + <!--l. 164--><p class="noindent" > +<span +class="ecbx-1000">ebegin</span> </p></dt><dd +class="description"> + + + <!--l. 164--><p class="noindent" >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>. + </p></dd><dt class="description"> + <!--l. 166--><p class="noindent" > +<span +class="ecbx-1000">eend</span> </p></dt><dd +class="description"> + <!--l. 166--><p class="noindent" >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, prints a success indicator; otherwise, + prints the message followed by a failure indicator. Returns its first argument as exit + status.</p></dd></dl> +<div class="table"> + + +<!--l. 173--><p class="noindent" ><a + id="x1-125001r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.5: </span><span +class="content">Output commands for EAPIs</span></div><!--tex4ht:label?: x1-125001r5 --> +<div class="tabular"> + <table id="TBL-46" class="tabular" + +><colgroup id="TBL-46-1g"><col +id="TBL-46-1" /><col +id="TBL-46-2" /><col +id="TBL-46-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-46-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-46-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-46-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Commands can output to stdout?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-46-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">eqawarn</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-46-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-46-2-1" +class="td11"> 0, 1, 2, 3, 4, 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-46-2-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-46-2-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-46-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-46-3-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-46-3-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-46-3-3" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-46-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-46-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">12.3.6 </span> <a + id="x1-12600012.3.6"></a>Error commands</h4> +<!--l. 188--><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"> + <!--l. 191--><p class="noindent" > +<span +class="ecbx-1000">die</span> </p></dt><dd +class="description"> + <!--l. 191--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">nonfatal-die</span></span></span> If called under the <span +class="ectt-1000">nonfatal </span>command (as per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>) and + with <span +class="ectt-1000">-n </span>as its first parameter, displays a failure message provided in its following + argument and then returns a non-zero exit status. Only in EAPIs listed in table <a +href="#x1-126001r6">12.6<!--tex4ht:ref: tab:die-properties --></a> + as supporting option <span +class="ectt-1000">-n</span>. Otherwise, displays a failure message provided in its first and + only argument, and then aborts the build process. + </p><!--l. 197--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">subshell-die</span></span></span> In EAPIs listed in table <a +href="#x1-126001r6">12.6<!--tex4ht:ref: tab:die-properties --></a> as not providing subshell support, <span +class="ectt-1000">die </span>is + <span +class="ecti-1000">not </span>guaranteed to work correctly if called from a subshell environment. + </p></dd><dt class="description"> + <!--l. 200--><p class="noindent" > +<span +class="ecbx-1000">assert</span> </p></dt><dd +class="description"> + <!--l. 200--><p class="noindent" >Checks the value of the shell’s pipe status variable, and if any component is non-zero + (indicating failure), calls <span +class="ectt-1000">die</span>, passing any parameters to it.</p></dd></dl> +<div class="table"> + + +<!--l. 205--><p class="noindent" ><a + id="x1-126001r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.6: </span><span +class="content">Properties of <span +class="ectt-1000">die </span>and <span +class="ectt-1000">assert </span>commands in EAPIs</span></div><!--tex4ht:label?: x1-126001r6 --> +<div class="tabular"> + <table id="TBL-47" class="tabular" + +><colgroup id="TBL-47-1g"><col +id="TBL-47-1" /><col +id="TBL-47-2" /><col +id="TBL-47-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-47-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-47-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td colspan="2" style="white-space:nowrap; text-align:center;" id="TBL-47-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">die </span><span +class="ecbx-1000">and </span><span +class="ectt-1000">assert</span></div></td></tr><tr + style="vertical-align:baseline;" id="TBL-47-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-47-2-1" +class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-47-2-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">support </span><span +class="ectt-1000">-n</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-47-2-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">work in subshell?</span></div> + +</td></tr><tr + style="vertical-align:baseline;" id="TBL-47-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-47-3-1" +class="td11"> 0, 1, 2, 3, 4, 5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-47-3-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-47-3-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-47-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-47-4-1" +class="td11"> 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-47-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-47-4-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-47-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-47-5-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-47-5-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-47-5-3" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-47-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-47-6-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">12.3.7 </span> <a + id="x1-12700012.3.7"></a>Patch commands</h4> +<!--l. 223--><p class="nopar" >These commands are used during the <span +class="ectt-1000">src_prepare </span>phase to apply patches to the package’s +sources. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> + <!--l. 227--><p class="noindent" > +<span +class="ecbx-1000">eapply</span> </p></dt><dd +class="description"> + <!--l. 227--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">eapply</span></span></span> Takes zero or more GNU patch options, followed by one or more file or directory + paths. Processes options and applies all patches found in specified locations according + to algorithm <a +href="#x1-127001r1">12.1<!--tex4ht:ref: alg:eapply --></a>. If applying the patches fails, it aborts the build using <span +class="ectt-1000">die</span>, unless + run using <span +class="ectt-1000">nonfatal</span>, in which case it returns non-zero exit status. Only available in + EAPIs listed in table <a +href="#x1-127033r7">12.7<!--tex4ht:ref: tab:patch-commands --></a> as supporting <span +class="ectt-1000">eapply</span>. +</p> + <div class="algorithm"> + <!--l. 234--><p class="noindent" ><a + id="x1-127001r1"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Algorithm 12.1: </span><span +class="content"><span +class="ectt-1000">eapply </span>logic</span></div><!--tex4ht:label?: x1-127001r1 --> +<div class="algorithmic"> +<a + id="x1-127002r115"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> any parameter is equal to <span +class="ectt-1000">"--"</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-127003r116"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:14.99634pt;"> </span> collect all parameters before the first <span +class="ectt-1000">"--" </span>in the <span +class="ectt-1000">options </span>array <a + id="x1-127004r117"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:14.99634pt;"> </span> collect all parameters after the first <span +class="ectt-1000">"--" </span>in the <span +class="ectt-1000">files </span>array + </span><a + id="x1-127005r118"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> any parameter that begins with a hyphen follows one that does not <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-127006r119"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:14.99634pt;"> </span> abort the build process with an error + </span><a + id="x1-127007r120"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-127008r121"></a> + <br /><span class="ALCitem">7:</span><span class="ALIndent" style="width:14.99634pt;"> </span> collect all parameters beginning with a hyphen in the <span +class="ectt-1000">options </span>array <a + id="x1-127009r122"></a> + <br /><span class="ALCitem">8:</span><span class="ALIndent" style="width:14.99634pt;"> </span> collect all remaining parameters in the <span +class="ectt-1000">files </span>array + </span><a + id="x1-127010r123"></a> + <br /><span class="ALCitem">9:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-127011r124"></a> +<br /><span class="ALCitem">10:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> the <span +class="ectt-1000">files </span>array is empty <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-127012r125"></a> +<br /><span class="ALCitem">11:</span><span class="ALIndent" style="width:14.99634pt;"> </span> abort the build process with an error + </span><a + id="x1-127013r126"></a> +<br /><span class="ALCitem">12:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-127014r127"></a> +<br /><span class="ALCitem">13:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">for all</span> <span +class="ectt-1000">x </span>in the <span +class="ectt-1000">files </span>array <span +class="ecbx-1000">do</span><span class="for-body"> +<a + id="x1-127015r128"></a> +<br /><span class="ALCitem">14:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="ectt-1000">$x </span>is a directory <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-127016r129"></a> +<br /><span class="ALCitem">15:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">if</span> <span +class="ecbx-1000">not </span>any files match <span +class="ectt-1000">$x/*.diff </span>or <span +class="ectt-1000">$x/*.patch</span> <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-127017r130"></a> +<br /><span class="ALCitem">16:</span><span class="ALIndent" style="width:34.99146pt;"> </span> abort the build process with an error + </span><a + id="x1-127018r131"></a> +<br /><span class="ALCitem">17:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-127019r132"></a> + + +<br /><span class="ALCitem">18:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">for all</span> files <span +class="ectt-1000">f </span>matching <span +class="ectt-1000">$x/*.diff </span>or <span +class="ectt-1000">$x/*.patch</span>, sorted in POSIX locale <span +class="ecbx-1000">do</span><span class="for-body"> +<a + id="x1-127020r133"></a> +<br /><span class="ALCitem">19:</span><span class="ALIndent" style="width:34.99146pt;"> </span> call <span +class="ectt-1000">patch -p1 -f -g0 --no-backup-if-mismatch "${options[@]}" < "$f"</span> <a + id="x1-127021r134"></a> +<br /><span class="ALCitem">20:</span><span class="ALIndent" style="width:34.99146pt;"> </span> <span +class="ecbx-1000">if</span> child process returned with non-zero exit status <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-127022r135"></a> +<br /><span class="ALCitem">21:</span><span class="ALIndent" style="width:44.98901pt;"> </span> <span +class="ecbx-1000">return </span> immediately with that status + </span><a + id="x1-127023r136"></a> +<br /><span class="ALCitem">22:</span><span class="ALIndent" style="width:34.99146pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-127024r137"></a> +<br /><span class="ALCitem">23:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span> + </span><a + id="x1-127025r138"></a> +<br /><span class="ALCitem">24:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-127026r139"></a> +<br /><span class="ALCitem">25:</span><span class="ALIndent" style="width:24.9939pt;"> </span> call <span +class="ectt-1000">patch -p1 -f -g0 --no-backup-if-mismatch "${options[@]}" < "$x"</span> <a + id="x1-127027r140"></a> +<br /><span class="ALCitem">26:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">if</span> child process returned with non-zero exit status <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-127028r141"></a> +<br /><span class="ALCitem">27:</span><span class="ALIndent" style="width:34.99146pt;"> </span> <span +class="ecbx-1000">return </span> immediately with that status + </span><a + id="x1-127029r142"></a> +<br /><span class="ALCitem">28:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-127030r143"></a> +<br /><span class="ALCitem">29:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-127031r144"></a> +<br /><span class="ALCitem">30:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span><a + id="x1-127032r145"></a> +<br /><span class="ALCitem">31:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">return </span> shell true (0) + </div> </div><hr class="endfloat" /> + </div> + </dd><dt class="description"> + <!--l. 270--><p class="noindent" > +<span +class="ecbx-1000">eapply_user</span> </p></dt><dd +class="description"> + <!--l. 270--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">eapply-user</span></span></span> Takes no arguments. Package managers supporting it apply user-provided + patches to the source tree in the current working directory. Exact behaviour is + implementation defined and beyond the scope of this specification. Package managers not + supporting it must implement the command as a no-op. Returns shell true (0) if patches + applied successfully, or if no patches were provided. Otherwise, aborts the build process, + unless run using <span +class="ectt-1000">nonfatal</span>, in which case it returns non-zero exit status. Only available in + EAPIs listed in table <a +href="#x1-127033r7">12.7<!--tex4ht:ref: tab:patch-commands --></a> as supporting <span +class="ectt-1000">eapply_user</span>. In EAPIs where it is supported, + <span +class="ectt-1000">eapply_user </span>must be called once in the <span +class="ectt-1000">src_prepare </span>phase. For any subsequent calls, the + command will do nothing and return 0.</p></dd></dl> +<div class="table"> + + +<!--l. 282--><p class="noindent" ><a + id="x1-127033r7"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.7: </span><span +class="content">Patch commands for EAPIs</span></div><!--tex4ht:label?: x1-127033r7 --> +<div class="tabular"> + <table id="TBL-48" class="tabular" + +><colgroup id="TBL-48-1g"><col +id="TBL-48-1" /><col +id="TBL-48-2" /><col +id="TBL-48-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-48-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-48-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-48-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">eapply</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-48-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">eapply_user</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-48-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-48-2-1" +class="td11"> 0, 1, 2, 3, 4, 5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-48-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-48-2-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-48-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-48-3-1" +class="td11"> 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-48-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-48-3-3" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-48-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-48-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">12.3.8 </span> <a + id="x1-12800012.3.8"></a>Build commands</h4> +<!--l. 297--><p class="nopar" >These commands are used during the <span +class="ectt-1000">src_configure</span>, <span +class="ectt-1000">src_compile</span>, <span +class="ectt-1000">src_test</span>, and <span +class="ectt-1000">src_install</span> +phases to run the package’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"> + <!--l. 302--><p class="noindent" > +<span +class="ecbx-1000">econf</span> </p></dt><dd +class="description"> + <!--l. 302--><p class="noindent" >Calls the program’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>, after the default options below. <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. + </p><!--l. 308--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">econf-options</span></span></span> <span +class="ectt-1000">econf </span>must pass the following options to the configure script: + </p> + <ul class="itemize1"> + <li class="itemize"> + <!--l. 310--><p class="noindent" ><span +class="ectt-1000">--prefix </span>must default to <span +class="ectt-1000">${EPREFIX}/usr </span>unless overridden by <span +class="ectt-1000">econf</span>’s caller. + </p></li> + <li class="itemize"> + <!--l. 312--><p class="noindent" ><span +class="ectt-1000">--mandir </span>must be <span +class="ectt-1000">${EPREFIX}/usr/share/man</span> + </p></li> + <li class="itemize"> + <!--l. 313--><p class="noindent" ><span +class="ectt-1000">--infodir </span>must be <span +class="ectt-1000">${EPREFIX}/usr/share/info</span> + </p></li> + <li class="itemize"> + <!--l. 314--><p class="noindent" ><span +class="ectt-1000">--datadir </span>must be <span +class="ectt-1000">${EPREFIX}/usr/share</span> + </p></li> + <li class="itemize"> + <!--l. 315--><p class="noindent" ><span +class="ectt-1000">--datarootdir </span>must be <span +class="ectt-1000">${EPREFIX}/usr/share</span>, if the EAPI is listed in + table <a +href="#x1-128001r8">12.8<!--tex4ht:ref: tab:econf-options-table --></a> as using it. This option will only be passed if the string <span +class="ectt-1000">--datarootdir</span> + occurs in the output of <span +class="ectt-1000">configure --help</span>. + </p></li> + <li class="itemize"> + <!--l. 318--><p class="noindent" ><span +class="ectt-1000">--sysconfdir </span>must be <span +class="ectt-1000">${EPREFIX}/etc</span> + </p></li> + <li class="itemize"> + <!--l. 319--><p class="noindent" ><span +class="ectt-1000">--localstatedir </span>must be <span +class="ectt-1000">${EPREFIX}/var/lib</span> + </p></li> + <li class="itemize"> + + + <!--l. 320--><p class="noindent" ><span +class="ectt-1000">--docdir </span>must be <span +class="ectt-1000">${EPREFIX}/usr/share/doc/${PF}</span>, if the EAPI is listed in + table <a +href="#x1-128001r8">12.8<!--tex4ht:ref: tab:econf-options-table --></a> as using it. This option will only be passed if the string <span +class="ectt-1000">--docdir</span> + occurs in the output of <span +class="ectt-1000">configure --help</span>. + </p></li> + <li class="itemize"> + <!--l. 323--><p class="noindent" ><span +class="ectt-1000">--htmldir </span>must be <span +class="ectt-1000">${EPREFIX}/usr/share/doc/${PF}/html</span>, if the EAPI is + listed in table <a +href="#x1-128001r8">12.8<!--tex4ht:ref: tab:econf-options-table --></a> as using it. This option will only be passed if the string + <span +class="ectt-1000">--htmldir </span>occurs in the output of <span +class="ectt-1000">configure --help</span>. + </p></li> + <li class="itemize"> + <!--l. 326--><p class="noindent" ><span +class="ectt-1000">--with-sysroot </span>must be <span +class="ectt-1000">${ESYSROOT:-/}</span>, if the EAPI is listed in table <a +href="#x1-128001r8">12.8<!--tex4ht:ref: tab:econf-options-table --></a> as + using it. This option will only be passed if the string <span +class="ectt-1000">--with-sysroot </span>occurs in + the output of <span +class="ectt-1000">configure --help</span>. + </p></li> + <li class="itemize"> + <!--l. 329--><p class="noindent" ><span +class="ectt-1000">--build </span>must be the value of the <span +class="ectt-1000">CBUILD </span>environment variable. This option will + only be passed if <span +class="ectt-1000">CBUILD </span>is non-empty. + </p></li> + <li class="itemize"> + <!--l. 331--><p class="noindent" ><span +class="ectt-1000">--host </span>must be the value of the <span +class="ectt-1000">CHOST </span>environment variable. + </p></li> + <li class="itemize"> + <!--l. 332--><p class="noindent" ><span +class="ectt-1000">--target </span>must be the value of the <span +class="ectt-1000">CTARGET </span>environment variable. This option + will only be passed if <span +class="ectt-1000">CTARGET </span>is non-empty. + </p></li> + <li class="itemize"> + <!--l. 334--><p class="noindent" ><span +class="ectt-1000">--libdir </span>must be set according to algorithm <a +href="#x1-128002r2">12.2<!--tex4ht:ref: alg:econf-libdir --></a>. + </p></li> + <li class="itemize"> + <!--l. 335--><p class="noindent" ><span +class="ectt-1000">--disable-dependency-tracking</span>, if the EAPI is listed in table <a +href="#x1-128001r8">12.8<!--tex4ht:ref: tab:econf-options-table --></a> as using it. + This option will only be passed if the string <span +class="ectt-1000">--disable-dependency-tracking</span> + occurs in the output of <span +class="ectt-1000">configure --help</span>. + </p></li> + <li class="itemize"> + <!--l. 338--><p class="noindent" ><span +class="ectt-1000">--disable-silent-rules</span>, if the EAPI is listed in table <a +href="#x1-128001r8">12.8<!--tex4ht:ref: tab:econf-options-table --></a> as using it. This + option will only be passed if the string <span +class="ectt-1000">--disable-silent-rules </span>occurs in the + output of <span +class="ectt-1000">configure --help</span>. + </p></li> + <li class="itemize"> + <!--l. 341--><p class="noindent" ><span +class="ectt-1000">--disable-static</span>, if the EAPI is listed in table <a +href="#x1-128001r8">12.8<!--tex4ht:ref: tab:econf-options-table --></a> as using it. This option will + only be passed if the string <span +class="ectt-1000">--disable-static </span>occurs in the output of <span +class="ectt-1000">configure</span> + <span +class="ectt-1000">--help</span>.</p></li></ul> + <div class="table"> + <!--l. 347--><p class="noindent" ><a + id="x1-128001r8"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Table 12.8: </span><span +class="content">Extra <span +class="ectt-1000">econf </span>arguments for EAPIs</span></div><!--tex4ht:label?: x1-128001r8 --> + + + <div class="tabular"> + <table id="TBL-49" class="tabular" + +><colgroup id="TBL-49-1g"><col +id="TBL-49-1" /><col +id="TBL-49-2" /><col +id="TBL-49-3" /><col +id="TBL-49-4" /><col +id="TBL-49-5" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-49-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-49-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-49-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">--datarootdir</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-49-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">--docdir</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-49-1-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">--htmldir</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-49-1-5" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">--with-sysroot</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-49-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-49-2-1" +class="td11"> 0, 1, 2, 3, 4, 5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-2-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-2-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-2-5" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-49-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-49-3-1" +class="td11"> 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-3-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-3-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-3-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-3-5" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-49-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-49-4-1" +class="td11"> 7 </td> <td style="white-space:nowrap; text-align:left;" id="TBL-49-4-2" +class="td11"> No </td> <td style="white-space:nowrap; text-align:left;" id="TBL-49-4-3" +class="td11"> Yes </td> <td style="white-space:nowrap; text-align:left;" id="TBL-49-4-4" +class="td11"> Yes </td> <td style="white-space:nowrap; text-align:left;" id="TBL-49-4-5" +class="td11"> Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-49-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-49-5-1" +class="td11"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-5-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-5-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-5-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-5-5" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-49-6-"><td style="white-space:nowrap; text-align:center;" id="TBL-49-6-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:normal; text-align:left;" id="TBL-49-6-2" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ecbx-1000">--disable-dependency-tracking</span></div> </td><td style="white-space:normal; text-align:left;" id="TBL-49-6-3" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ecbx-1000">--disable-silent-rules</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-49-6-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">--disable-static</span></div> </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-6-5" +class="td11"> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-49-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-49-7-1" +class="td11"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-7-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-7-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-7-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-7-5" +class="td11"> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-49-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-49-8-1" +class="td11"> 4 </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-8-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-8-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-8-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-8-5" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-49-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-49-9-1" +class="td11"> 5, 6, 7 </td> <td style="white-space:nowrap; text-align:left;" id="TBL-49-9-2" +class="td11"> Yes </td> <td style="white-space:nowrap; text-align:left;" id="TBL-49-9-3" +class="td11"> Yes </td> <td style="white-space:nowrap; text-align:left;" id="TBL-49-9-4" +class="td11"> No </td> <td style="white-space:nowrap; text-align:left;" id="TBL-49-9-5" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-49-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-49-10-1" +class="td11"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-10-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-10-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-10-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-49-10-5" +class="td11"> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-49-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-49-11-1" +class="td11"> </td></tr></table></div></div><hr class="endfloat" /> + </div> + <!--l. 375--><p class="noindent" >Note that the <span +class="ectt-1000">${EPREFIX} </span>component represents the same offset-prefix as described in + table <a +href="#x1-109001r1">11.1<!--tex4ht:ref: tab:defined-vars --></a>. It facilitates offset-prefix installations which is supported by EAPIs listed in + table <a +href="#x1-109009r4">11.4<!--tex4ht:ref: tab:offset-env-vars-table --></a>. 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. 381--><p class="noindent" ><span +class="ectt-1000">econf </span>must be implemented internally—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. 386--><p class="noindent" ><a + id="x1-128002r2"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Algorithm 12.2: </span><span +class="content"><span +class="ectt-1000">econf --libdir </span>logic</span></div><!--tex4ht:label?: x1-128002r2 --> +<div class="algorithmic"> +<a + id="x1-128003r146"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </span> let prefix=${EPREFIX}/usr <a + id="x1-128004r147"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> the caller specified --prefix=$p <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-128005r148"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:14.99634pt;"> </span> let prefix=$p + </span><a + id="x1-128006r149"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-128007r150"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:4.99878pt;"> </span> let libdir= <a + id="x1-128008r151"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> the ABI environment variable is set <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-128009r152"></a> + <br /><span class="ALCitem">7:</span><span class="ALIndent" style="width:14.99634pt;"> </span> let libvar=LIBDIR_$ABI <a + id="x1-128010r153"></a> + <br /><span class="ALCitem">8:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">if</span> the environment variable named by libvar is set <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-128011r154"></a> + <br /><span class="ALCitem">9:</span><span class="ALIndent" style="width:24.9939pt;"> </span> let libdir=the value of the variable named by libvar + </span><a + id="x1-128012r155"></a> +<br /><span class="ALCitem">10:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-128013r156"></a> +<br /><span class="ALCitem">11:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-128014r157"></a> +<br /><span class="ALCitem">12:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> libdir is non-empty <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-128015r158"></a> +<br /><span class="ALCitem">13:</span><span class="ALIndent" style="width:14.99634pt;"> </span> pass --libdir=$prefix/$libdir to configure + </span><a + id="x1-128016r159"></a> +<br /><span class="ALCitem">14:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </div> </div><hr class="endfloat" /> + </div> + </dd><dt class="description"> + <!--l. 405--><p class="noindent" > +<span +class="ecbx-1000">emake</span> </p></dt><dd +class="description"> + <!--l. 405--><p class="noindent" >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’s chosen <span +class="ectt-1000">MAKEOPTS</span>. Arguments + + + given to <span +class="ectt-1000">emake </span>override user configuration. See also section <a +href="#x1-11800012.1.1">12.1.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—it must be callable from e. g. <span +class="ectt-1000">xargs</span>. + Failure behaviour is EAPI dependent as per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 412--><p class="noindent" > +<span +class="ecbx-1000">einstall</span> </p></dt><dd +class="description"> + <!--l. 412--><p class="noindent" >A shortcut for the command given in listing <a +href="#x1-128017r1">12.1<!--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 <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. In EAPIs listed in table <a +href="#x1-122001r3">12.3<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned as per + section <a +href="#x1-12200012.3.2">12.3.2<!--tex4ht:ref: sec:banned-commands --></a>. + </p><!--l. 418--><p class="noindent" >The variable <span +class="ectt-1000">ED </span>is defined as in table <a +href="#x1-109001r1">11.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 <a +href="#x1-109009r4">11.4<!--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 <a +href="#x1-128017r1">12.1<!--tex4ht:ref: lst:einstall --></a>. Variable <span +class="ectt-1000">libdir </span>is an auxiliary local variable whose value is determined by + algorithm <a +href="#x1-129001r3">12.3<!--tex4ht:ref: alg:ebuild-libdir --></a>. + </p><!--l. 426--><p class="noindent" ><a + id="x1-128017r1"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Listing 12.1: </span><span +class="content"><span +class="ectt-1000">einstall </span>command</span></div><!--tex4ht:label?: x1-128017r1 --> + + +<pre class="verbatim" id="verbatim-18"> +emake \ + prefix="${ED}"/usr \ + datadir="${ED}"/usr/share \ + mandir="${ED}"/usr/share/man \ + infodir="${ED}"/usr/share/info \ + libdir="${ED}"/usr/${libdir} \ + localstatedir="${ED}"/var/lib \ + sysconfdir="${ED}"/etc \ + -j1 \ + "$@" \ + install</pre> + <!--l. 440--><p class="nopar" > </p></div><hr class="endfloat" /> + </dd></dl> +<!--l. 445--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.3.9 </span> <a + id="x1-12900012.3.9"></a>Installation commands</h4> +<!--l. 446--><p class="nopar" >These commands are used to install files into the staging area, in cases where the package’s +<span +class="ectt-1000">make 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. Existing destination files are overwritten. These commands +must all be external programs and not bash functions or aliases—that is, they must be +callable from <span +class="ectt-1000">xargs</span>. Calling any of these commands without a filename parameter is an +error. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> + <!--l. 456--><p class="noindent" > +<span +class="ecbx-1000">dobin</span> </p></dt><dd +class="description"> + <!--l. 456--><p class="noindent" >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. In a non-offset-prefix installation this ownership is + <span +class="ectt-1000">root:root</span>, while in an offset-prefix aware installation this may be e. g. <span +class="ectt-1000">joe:users</span>. + Failure behaviour is EAPI dependent as per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 462--><p class="noindent" > +<span +class="ecbx-1000">doconfd</span> </p></dt><dd +class="description"> + <!--l. 462--><p class="noindent" >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>. For + EAPIs listed in table <a +href="#x1-130001r16">12.16<!--tex4ht:ref: tab:insopts-commands --></a> as respecting <span +class="ectt-1000">insopts </span>in <span +class="ectt-1000">doconfd</span>, the <span +class="ectt-1000">install </span>options + set by the most recent <span +class="ectt-1000">insopts </span>call override the default. Failure behaviour is EAPI + dependent as per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 467--><p class="noindent" > +<span +class="ecbx-1000">dodir</span> </p></dt><dd +class="description"> + <!--l. 467--><p class="noindent" >Creates the given directories, by default with file mode <span +class="ectt-1000">0755</span>, or with the <span +class="ectt-1000">install</span> + + + options set by the most recent <span +class="ectt-1000">diropts </span>call. Failure behaviour is EAPI dependent as + per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 471--><p class="noindent" > +<span +class="ecbx-1000">dodoc</span> </p></dt><dd +class="description"> + <!--l. 471--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">dodoc</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 <a +href="#x1-129019r9">12.9<!--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. Any directories that + don’t already exist are created using <span +class="ectt-1000">install -d </span>with no additional options. Failure + behaviour is EAPI dependent as per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 481--><p class="noindent" > +<span +class="ecbx-1000">doenvd</span> </p></dt><dd +class="description"> + <!--l. 481--><p class="noindent" >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>. + For EAPIs listed in table <a +href="#x1-130001r16">12.16<!--tex4ht:ref: tab:insopts-commands --></a> as respecting <span +class="ectt-1000">insopts </span>in <span +class="ectt-1000">doenvd</span>, the <span +class="ectt-1000">install </span>options + set by the most recent <span +class="ectt-1000">insopts </span>call override the default. Failure behaviour is EAPI + dependent as per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 486--><p class="noindent" > +<span +class="ecbx-1000">doexe</span> </p></dt><dd +class="description"> + <!--l. 486--><p class="noindent" >Installs the given files into the directory specified by the most recent <span +class="ectt-1000">exeinto </span>call. If + <span +class="ectt-1000">exeinto </span>has not yet been called, behaviour is undefined. Files are installed by default + with file mode <span +class="ectt-1000">0755</span>, or with the <span +class="ectt-1000">install </span>options set by the most recent <span +class="ectt-1000">exeopts </span>call. + Failure behaviour is EAPI dependent as per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 492--><p class="noindent" > +<span +class="ecbx-1000">dohard</span> </p></dt><dd +class="description"> + <!--l. 492--><p class="noindent" >Takes two parameters. Creates a hardlink from the second to the first. Both paths + 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. In EAPIs listed + in table <a +href="#x1-122001r3">12.3<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned as per section <a +href="#x1-12200012.3.2">12.3.2<!--tex4ht:ref: sec:banned-commands --></a>. + </p></dd><dt class="description"> + <!--l. 498--><p class="noindent" > +<span +class="ecbx-1000">doheader</span> </p></dt><dd +class="description"> + <!--l. 498--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">doheader</span></span></span> Installs the given header files into <span +class="ectt-1000">/usr/include/</span>, by default with file + mode <span +class="ectt-1000">0644</span>. For EAPIs listed in table <a +href="#x1-130001r16">12.16<!--tex4ht:ref: tab:insopts-commands --></a> as respecting <span +class="ectt-1000">insopts </span>in <span +class="ectt-1000">doheader</span>, the + <span +class="ectt-1000">install </span>options set by the most recent <span +class="ectt-1000">insopts </span>call override the default. If the first + argument is <span +class="ectt-1000">-r</span>, then operates recursively, descending into any directories given. Only + available in EAPIs listed in table <a +href="#x1-129020r10">12.10<!--tex4ht:ref: tab:doheader-table --></a> as supporting <span +class="ectt-1000">doheader</span>. Failure behaviour is + EAPI dependent as per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 506--><p class="noindent" > +<span +class="ecbx-1000">dohtml</span> </p></dt><dd +class="description"> + <!--l. 506--><p class="noindent" >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 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: + </p><dl class="compactdesc"><dt class="compactdesc"> + <span +class="ectt-1000">-r</span> </dt><dd +class="compactdesc">enables recursion into directories. + </dd><dt class="compactdesc"> + <span +class="ectt-1000">-V</span> </dt><dd +class="compactdesc">enables verbosity. + </dd><dt class="compactdesc"> + <span +class="ectt-1000">-A</span> </dt><dd +class="compactdesc">adds file type extensions to the default list. + </dd><dt class="compactdesc"> + <span +class="ectt-1000">-a</span> </dt><dd +class="compactdesc">sets file type extensions to only those specified. + </dd><dt class="compactdesc"> + <span +class="ectt-1000">-f</span> </dt><dd +class="compactdesc">list of files that are able to be installed. + </dd><dt class="compactdesc"> + <span +class="ectt-1000">-x</span> </dt><dd +class="compactdesc">list of directories that files will not be installed from (only used in conjunction with + <span +class="ectt-1000">-r</span>). + </dd><dt class="compactdesc"> + <span +class="ectt-1000">-p</span> </dt><dd +class="compactdesc">sets a document prefix for installed files, not to be confused with the global + offset-prefix.</dd></dl> + <!--l. 524--><p class="noindent" >In EAPIs listed in table <a +href="#x1-122001r3">12.3<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned as per section <a +href="#x1-12200012.3.2">12.3.2<!--tex4ht:ref: sec:banned-commands --></a>. Failure + behaviour is EAPI dependent as per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p><!--l. 528--><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"> + <!--l. 531--><p class="noindent" > +<span +class="ecbx-1000">doinfo</span> </p></dt><dd +class="description"> + <!--l. 531--><p class="noindent" >Installs the given GNU Info files 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 <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 534--><p class="noindent" > +<span +class="ecbx-1000">doinitd</span> </p></dt><dd +class="description"> + <!--l. 534--><p class="noindent" >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>. For + EAPIs listed in table <a +href="#x1-130001r16">12.16<!--tex4ht:ref: tab:insopts-commands --></a> as respecting <span +class="ectt-1000">insopts </span>in <span +class="ectt-1000">doinitd</span>, the <span +class="ectt-1000">install </span>options set by + the most recent <span +class="ectt-1000">exeopts </span>call override the default. Failure behaviour is EAPI dependent as + per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 539--><p class="noindent" > +<span +class="ecbx-1000">doins</span> </p></dt><dd +class="description"> + <!--l. 539--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">doins</span></span></span> Takes one or more files as arguments and installs them into <span +class="ectt-1000">INSDESTTREE</span>, by default + with file mode <span +class="ectt-1000">0644</span>, or with the <span +class="ectt-1000">install </span>options set by the most recent <span +class="ectt-1000">insopts </span>call. If the + first argument is <span +class="ectt-1000">-r</span>, then operates recursively, descending into any directories + given. Any directories are created as if <span +class="ectt-1000">dodir </span>was called. For EAPIs listed in + table <a +href="#x1-129021r11">12.11<!--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 <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 547--><p class="noindent" > +<span +class="ecbx-1000">dolib.a</span> </p></dt><dd +class="description"> + <!--l. 547--><p class="noindent" >For each argument, installs it into the appropriate library subdirectory under <span +class="ectt-1000">DESTTREE</span>, as + determined by algorithm <a +href="#x1-129001r3">12.3<!--tex4ht:ref: alg:ebuild-libdir --></a>. Files are installed with file mode <span +class="ectt-1000">0644</span>. Any symlinks are + installed into the same directory as relative links to their original target. Failure behaviour is + + + EAPI dependent as per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 552--><p class="noindent" > +<span +class="ecbx-1000">dolib.so</span> </p></dt><dd +class="description"> + <!--l. 552--><p class="noindent" >As for <span +class="ectt-1000">dolib.a </span>except each file is installed with mode <span +class="ectt-1000">0755</span>. + </p></dd><dt class="description"> + <!--l. 554--><p class="noindent" > +<span +class="ecbx-1000">dolib</span> </p></dt><dd +class="description"> + <!--l. 554--><p class="noindent" >As for <span +class="ectt-1000">dolib.a </span>except that the default install mode can be overriden with the <span +class="ectt-1000">install</span> + options set by the most recent <span +class="ectt-1000">libopts </span>call. In EAPIs listed in table <a +href="#x1-122001r3">12.3<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is + banned as per section <a +href="#x1-12200012.3.2">12.3.2<!--tex4ht:ref: sec:banned-commands --></a>. +</p> + <div class="algorithm"> + <!--l. 560--><p class="noindent" ><a + id="x1-129001r3"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Algorithm 12.3: </span><span +class="content">Determining the library directory</span></div><!--tex4ht:label?: x1-129001r3 --> +<div class="algorithmic"> +<a + id="x1-129002r160"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> CONF_LIBDIR_OVERRIDE is set in the environment <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-129003r161"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:14.99634pt;"> </span> return CONF_LIBDIR_OVERRIDE + </span><a + id="x1-129004r162"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-129005r163"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> CONF_LIBDIR is set in the environment <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-129006r164"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:14.99634pt;"> </span> let LIBDIR_default=CONF_LIBDIR + </span><a + id="x1-129007r165"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-129008r166"></a> + <br /><span class="ALCitem">7:</span><span class="ALIndent" style="width:14.99634pt;"> </span> let LIBDIR_default=“lib” + </span><a + id="x1-129009r167"></a> + <br /><span class="ALCitem">8:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-129010r168"></a> + <br /><span class="ALCitem">9:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> ABI is set in the environment <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-129011r169"></a> +<br /><span class="ALCitem">10:</span><span class="ALIndent" style="width:14.99634pt;"> </span> let abi=ABI + </span><a + id="x1-129012r170"></a> +<br /><span class="ALCitem">11:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> DEFAULT_ABI is set in the environment <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-129013r171"></a> +<br /><span class="ALCitem">12:</span><span class="ALIndent" style="width:14.99634pt;"> </span> let abi=DEFAULT_ABI + </span><a + id="x1-129014r172"></a> +<br /><span class="ALCitem">13:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-129015r173"></a> +<br /><span class="ALCitem">14:</span><span class="ALIndent" style="width:14.99634pt;"> </span> let abi=“default” + </span><a + id="x1-129016r174"></a> +<br /><span class="ALCitem">15:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-129017r175"></a> +<br /><span class="ALCitem">16:</span><span class="ALIndent" style="width:4.99878pt;"> </span> return the value of LIBDIR_$abi + </div> </div><hr class="endfloat" /> + </div> + </dd><dt class="description"> + <!--l. 581--><p class="noindent" > +<span +class="ecbx-1000">doman</span> </p></dt><dd +class="description"> + <!--l. 581--><p class="noindent" >Installs the given man pages 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>. + </p><!--l. 585--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">doman-langs</span></span></span> In EAPIs listed in table <a +href="#x1-129022r12">12.12<!--tex4ht:ref: tab:doman-table --></a> as supporting language detection by filename, a + man page with name of the form <span +class="ectt-1000">foo.</span><span +class="ecti-1000">lang</span><span +class="ectt-1000">.1 </span>shall go to <span +class="ectt-1000">/usr/share/man/</span><span +class="ecti-1000">lang</span><span +class="ectt-1000">/man1/foo.1</span>, + where <span +class="ecti-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 <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p><!--l. 591--><p class="noindent" >With option <span +class="ectt-1000">-i18n=</span><span +class="ecti-1000">lang</span>, a man page shall be installed into an appropriate subdirectory of + <span +class="ectt-1000">/usr/share/man/</span><span +class="ecti-1000">lang </span>(e. g. <span +class="ectt-1000">/usr/share/man/</span><span +class="ecti-1000">lang</span><span +class="ectt-1000">/man1/foo.pl.1 </span>would be the destination + for <span +class="ectt-1000">foo.pl.1</span>). The <span +class="ecti-1000">lang </span>subdirectory level is skipped if <span +class="ecti-1000">lang </span>is the empty string. In EAPIs + specified by table <a +href="#x1-129022r12">12.12<!--tex4ht:ref: tab:doman-table --></a>, the <span +class="ectt-1000">-i18n </span>option takes precedence over the language code in the + filename. + </p></dd><dt class="description"> + <!--l. 597--><p class="noindent" > +<span +class="ecbx-1000">domo</span> </p></dt><dd +class="description"> + <!--l. 597--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">domo-path</span></span></span> Installs the given <span +class="ectt-1000">.mo </span>files with file mode <span +class="ectt-1000">0644 </span>into the appropriate subdirectory + of the locale tree, 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 <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. The locale tree + location is EAPI dependent as per table <a +href="#x1-129024r14">12.14<!--tex4ht:ref: tab:domo-path --></a>. + </p></dd><dt class="description"> + <!--l. 604--><p class="noindent" > +<span +class="ecbx-1000">dosbin</span> </p></dt><dd +class="description"> + <!--l. 604--><p class="noindent" >As <span +class="ectt-1000">dobin</span>, but installs to <span +class="ectt-1000">DESTTREE/sbin</span>. + </p></dd><dt class="description"> + <!--l. 606--><p class="noindent" > +<span +class="ecbx-1000">dosym</span> </p></dt><dd +class="description"> + <!--l. 606--><p class="noindent" >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. + </p><!--l. 609--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">dosym-relative</span></span></span> In EAPIs listed in table <a +href="#x1-129025r15">12.15<!--tex4ht:ref: tab:dosym-r --></a> as supporting creation of relative paths, + when called with option <span +class="ectt-1000">-r</span>, the first parameter (the link target) is converted from an + absolute path to a path relative to the the second parameter (the link name). + The algorithm must return a result identical to the one returned by the function + in listing <a +href="#x1-129018r2">12.2<!--tex4ht:ref: lst:dosym-r --></a>, with <span +class="ectt-1000">realpath </span>and <span +class="ectt-1000">dirname </span>from GNU coreutils version 8.32. + Specifying option <span +class="ectt-1000">-r </span>together with a relative path as first (target) parameter is an + error. + </p><!--l. 616--><p class="noindent" >Failure behaviour is EAPI dependent as per section <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p><!--l. 618--><p class="noindent" ><a + id="x1-129018r2"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Listing 12.2: </span><span +class="content">Create a relative path for <span +class="ectt-1000">dosym -r</span></span></div><!--tex4ht:label?: x1-129018r2 --> + + +<pre class="verbatim" id="verbatim-19"> +dosym_relative_path() { + local link=$(realpath -m -s "/${2#/}") + local linkdir=$(dirname "${link}") + realpath -m -s --relative-to="${linkdir}" "$1" +}</pre> + <!--l. 626--><p class="nopar" > </p></div><hr class="endfloat" /> + </dd><dt class="description"> + <!--l. 629--><p class="noindent" > +<span +class="ecbx-1000">fowners</span> </p></dt><dd +class="description"> + <!--l. 629--><p class="noindent" >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 <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 632--><p class="noindent" > +<span +class="ecbx-1000">fperms</span> </p></dt><dd +class="description"> + <!--l. 632--><p class="noindent" >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 <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 635--><p class="noindent" > +<span +class="ecbx-1000">keepdir</span> </p></dt><dd +class="description"> + <!--l. 635--><p class="noindent" >For each argument, 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 <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 640--><p class="noindent" > +<span +class="ecbx-1000">newbin</span> </p></dt><dd +class="description"> + <!--l. 640--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">newfoo-stdin</span></span></span> 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. In EAPIs specified by + table <a +href="#x1-129023r13">12.13<!--tex4ht:ref: tab:newfoo-stdin-table --></a>, standard input is read when the first parameter is <span +class="ectt-1000">- </span>(a hyphen). In this case, it + is an error if standard input is a terminal. + </p></dd><dt class="description"> + <!--l. 645--><p class="noindent" > +<span +class="ecbx-1000">newconfd</span> </p></dt><dd +class="description"> + <!--l. 645--><p class="noindent" >As for <span +class="ectt-1000">doconfd</span>, but takes two parameters as for <span +class="ectt-1000">newbin</span>. + </p></dd><dt class="description"> + <!--l. 647--><p class="noindent" > +<span +class="ecbx-1000">newdoc</span> </p></dt><dd +class="description"> + <!--l. 647--><p class="noindent" >As above, for <span +class="ectt-1000">dodoc</span>. + </p></dd><dt class="description"> + <!--l. 649--><p class="noindent" > +<span +class="ecbx-1000">newenvd</span> </p></dt><dd +class="description"> + <!--l. 649--><p class="noindent" >As above, for <span +class="ectt-1000">doenvd</span>. + </p></dd><dt class="description"> + + + <!--l. 651--><p class="noindent" > +<span +class="ecbx-1000">newexe</span> </p></dt><dd +class="description"> + <!--l. 651--><p class="noindent" >As above, for <span +class="ectt-1000">doexe</span>. + </p></dd><dt class="description"> + <!--l. 653--><p class="noindent" > +<span +class="ecbx-1000">newheader</span> </p></dt><dd +class="description"> + <!--l. 653--><p class="noindent" >As above, for <span +class="ectt-1000">doheader</span>. + </p></dd><dt class="description"> + <!--l. 655--><p class="noindent" > +<span +class="ecbx-1000">newinitd</span> </p></dt><dd +class="description"> + <!--l. 655--><p class="noindent" >As above, for <span +class="ectt-1000">doinitd</span>. + </p></dd><dt class="description"> + <!--l. 657--><p class="noindent" > +<span +class="ecbx-1000">newins</span> </p></dt><dd +class="description"> + <!--l. 657--><p class="noindent" >As above, for <span +class="ectt-1000">doins</span>. + </p></dd><dt class="description"> + <!--l. 659--><p class="noindent" > +<span +class="ecbx-1000">newlib.a</span> </p></dt><dd +class="description"> + <!--l. 659--><p class="noindent" >As above, for <span +class="ectt-1000">dolib.a</span>. + </p></dd><dt class="description"> + <!--l. 661--><p class="noindent" > +<span +class="ecbx-1000">newlib.so</span> </p></dt><dd +class="description"> + <!--l. 661--><p class="noindent" >As above, for <span +class="ectt-1000">dolib.so</span>. + </p></dd><dt class="description"> + <!--l. 663--><p class="noindent" > +<span +class="ecbx-1000">newman</span> </p></dt><dd +class="description"> + <!--l. 663--><p class="noindent" >As above, for <span +class="ectt-1000">doman</span>. + </p></dd><dt class="description"> + <!--l. 665--><p class="noindent" > +<span +class="ecbx-1000">newsbin</span> </p></dt><dd +class="description"> + <!--l. 665--><p class="noindent" >As above, for <span +class="ectt-1000">dosbin</span>. +</p> + </dd></dl> +<div class="table"> + + +<!--l. 670--><p class="noindent" ><a + id="x1-129019r9"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.9: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">dodoc -r</span></span></div><!--tex4ht:label?: x1-129019r9 --> +<div class="tabular"> + <table id="TBL-50" class="tabular" + +><colgroup id="TBL-50-1g"><col +id="TBL-50-1" /><col +id="TBL-50-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-50-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-50-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-50-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-50-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-50-2-1" +class="td11"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-50-2-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-50-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-50-3-1" +class="td11"> 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-50-3-2" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-50-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-50-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 684--><p class="noindent" ><a + id="x1-129020r10"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.10: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">doheader </span>and <span +class="ectt-1000">newheader</span></span></div><!--tex4ht:label?: x1-129020r10 --> +<div class="tabular"> + <table id="TBL-51" class="tabular" + +><colgroup id="TBL-51-1g"><col +id="TBL-51-1" /><col +id="TBL-51-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-51-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-51-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-51-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">doheader </span><span +class="ecbx-1000">and </span><span +class="ectt-1000">newheader</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-51-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-51-2-1" +class="td11"> 0, 1, 2, 3, 4 </td><td style="white-space:nowrap; text-align:left;" id="TBL-51-2-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-51-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-51-3-1" +class="td11"> 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-51-3-2" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-51-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-51-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 698--><p class="noindent" ><a + id="x1-129021r11"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.11: </span><span +class="content">EAPIs supporting symlinks for <span +class="ectt-1000">doins</span></span></div><!--tex4ht:label?: x1-129021r11 --> +<div class="tabular"> + <table id="TBL-52" class="tabular" + +><colgroup id="TBL-52-1g"><col +id="TBL-52-1" /><col +id="TBL-52-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-52-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-52-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-52-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-52-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-52-2-1" +class="td11"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-52-2-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-52-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-52-3-1" +class="td11"> 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-52-3-2" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-52-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-52-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 712--><p class="noindent" ><a + id="x1-129022r12"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.12: </span><span +class="content"><span +class="ectt-1000">doman </span>language support options for EAPIs</span></div><!--tex4ht:label?: x1-129022r12 --> +<div class="tabular"> + <table id="TBL-53" class="tabular" + +><colgroup id="TBL-53-1g"><col +id="TBL-53-1" /><col +id="TBL-53-2" /><col +id="TBL-53-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-53-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-53-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-53-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Language detection by filename?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-53-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Option </span><span +class="ectt-1000">-i18n </span><span +class="ecbx-1000">takes precedence?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-53-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-53-2-1" +class="td11"> 0, 1 </td><td style="white-space:nowrap; text-align:left;" id="TBL-53-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-53-2-3" +class="td11"> Not applicable </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-53-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-53-3-1" +class="td11"> 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-53-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-53-3-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-53-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-53-4-1" +class="td11"> 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-53-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-53-4-3" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-53-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-53-5-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 728--><p class="noindent" ><a + id="x1-129023r13"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.13: </span><span +class="content">EAPIs supporting stdin for <span +class="ectt-1000">new* </span>commands</span></div><!--tex4ht:label?: x1-129023r13 --> +<div class="tabular"> + <table id="TBL-54" class="tabular" + +><colgroup id="TBL-54-1g"><col +id="TBL-54-1" /><col +id="TBL-54-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-54-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-54-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-54-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">new* </span><span +class="ecbx-1000">can read from stdin?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-54-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-54-2-1" +class="td11"> 0, 1, 2, 3, 4 </td><td style="white-space:nowrap; text-align:left;" id="TBL-54-2-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-54-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-54-3-1" +class="td11"> 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-54-3-2" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-54-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-54-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 742--><p class="noindent" ><a + id="x1-129024r14"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.14: </span><span +class="content"><span +class="ectt-1000">domo </span>destination path in EAPIs</span></div><!--tex4ht:label?: x1-129024r14 --> +<div class="tabular"> + <table id="TBL-55" class="tabular" + +><colgroup id="TBL-55-1g"><col +id="TBL-55-1" /><col +id="TBL-55-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-55-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-55-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-55-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Destination path</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-55-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-55-2-1" +class="td11"> 0, 1, 2, 3, 4, 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-55-2-2" +class="td11"> <span +class="ectt-1000">${DESTTREE}/share/locale </span></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-55-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-55-3-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-55-3-2" +class="td11"> <span +class="ectt-1000">/usr/share/locale </span></td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-55-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-55-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 756--><p class="noindent" ><a + id="x1-129025r15"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.15: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">dosym -r</span></span></div><!--tex4ht:label?: x1-129025r15 --> +<div class="tabular"> + <table id="TBL-56" class="tabular" + +><colgroup id="TBL-56-1g"><col +id="TBL-56-1" /><col +id="TBL-56-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-56-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-56-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-56-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">dosym </span><span +class="ecbx-1000">supports creation of relative paths?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-56-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-2-1" +class="td11"> 0, 1, 2, 3, 4, 5, 6, 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-2-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-56-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-3-1" +class="td11"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-56-3-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-56-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-56-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">12.3.10 </span> <a + id="x1-13000012.3.10"></a>Commands affecting install destinations</h4> +<!--l. 770--><p class="nopar" >The following commands are used to set the various destination trees and options 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"> + <!--l. 777--><p class="noindent" > +<span +class="ecbx-1000">into</span> </p></dt><dd +class="description"> + <!--l. 777--><p class="noindent" >Takes exactly one argument, and sets the value of <span +class="ectt-1000">DESTTREE </span>for future invocations of + the above utilities to it. 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 <a +href="#x1-12100012.3.1">12.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> + <!--l. 783--><p class="noindent" > +<span +class="ecbx-1000">insinto</span> </p></dt><dd +class="description"> + <!--l. 783--><p class="noindent" >As <span +class="ectt-1000">into</span>, for <span +class="ectt-1000">INSDESTTREE</span>. + </p></dd><dt class="description"> + <!--l. 785--><p class="noindent" > +<span +class="ecbx-1000">exeinto</span> </p></dt><dd +class="description"> + <!--l. 785--><p class="noindent" >As <span +class="ectt-1000">into</span>, for install path of <span +class="ectt-1000">doexe </span>and <span +class="ectt-1000">newexe</span>. + </p></dd><dt class="description"> + <!--l. 787--><p class="noindent" > +<span +class="ecbx-1000">docinto</span> </p></dt><dd +class="description"> + <!--l. 787--><p class="noindent" >As <span +class="ectt-1000">into</span>, for install subdirectory of <span +class="ectt-1000">dodoc </span>et al. + </p></dd><dt class="description"> + <!--l. 789--><p class="noindent" > +<span +class="ecbx-1000">insopts</span> </p></dt><dd +class="description"> + <!--l. 789--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">insopts</span></span></span> Takes one or more arguments, and sets the options passed by <span +class="ectt-1000">doins </span>et al. to + the <span +class="ectt-1000">install </span>command to them. Behaviour upon encountering empty arguments is + undefined. Depending on EAPI, affects only those commands that are specified by + table <a +href="#x1-130001r16">12.16<!--tex4ht:ref: tab:insopts-commands --></a> as respecting <span +class="ectt-1000">insopts</span>. + </p></dd><dt class="description"> + <!--l. 794--><p class="noindent" > +<span +class="ecbx-1000">diropts</span> </p></dt><dd +class="description"> + <!--l. 794--><p class="noindent" >As <span +class="ectt-1000">insopts</span>, for <span +class="ectt-1000">dodir </span>et al. + </p></dd><dt class="description"> + <!--l. 796--><p class="noindent" > +<span +class="ecbx-1000">exeopts</span> </p></dt><dd +class="description"> + + + <!--l. 796--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">exeopts</span></span></span> As <span +class="ectt-1000">insopts</span>, for <span +class="ectt-1000">doexe </span>et al. Depending on EAPI, affects only those + commands that are specified by table <a +href="#x1-130002r17">12.17<!--tex4ht:ref: tab:exeopts-commands --></a> as respecting <span +class="ectt-1000">exeopts</span>. + </p></dd><dt class="description"> + <!--l. 800--><p class="noindent" > +<span +class="ecbx-1000">libopts</span> </p></dt><dd +class="description"> + <!--l. 800--><p class="noindent" >As <span +class="ectt-1000">insopts</span>, for <span +class="ectt-1000">dolib </span>et al. In EAPIs listed in table <a +href="#x1-122001r3">12.3<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned + as per section <a +href="#x1-12200012.3.2">12.3.2<!--tex4ht:ref: sec:banned-commands --></a>. +</p> + </dd></dl> +<div class="table"> + + +<!--l. 807--><p class="noindent" ><a + id="x1-130001r16"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.16: </span><span +class="content">Commands respecting <span +class="ectt-1000">insopts </span>for EAPIs</span></div><!--tex4ht:label?: x1-130001r16 --> +<div class="tabular"> + <table id="TBL-57" class="tabular" + +><colgroup id="TBL-57-1g"><col +id="TBL-57-1" /><col +id="TBL-57-2" /><col +id="TBL-57-3" /><col +id="TBL-57-4" /><col +id="TBL-57-5" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-57-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-57-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-57-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">doins</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-57-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">doconfd</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-57-1-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">doenvd</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-57-1-5" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">doheader</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-57-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-57-2-1" +class="td11"> 0, 1, 2, 3, 4, 5, 6, 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-57-2-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-57-2-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-57-2-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-57-2-5" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-57-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-57-3-1" +class="td11"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-57-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-57-3-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-57-3-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-57-3-5" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-57-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-57-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 824--><p class="noindent" ><a + id="x1-130002r17"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.17: </span><span +class="content">Commands respecting <span +class="ectt-1000">exeopts </span>for EAPIs</span></div><!--tex4ht:label?: x1-130002r17 --> +<div class="tabular"> + <table id="TBL-58" class="tabular" + +><colgroup id="TBL-58-1g"><col +id="TBL-58-1" /><col +id="TBL-58-2" /><col +id="TBL-58-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-58-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-58-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-58-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">doexe</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-58-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">doinitd</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-58-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-58-2-1" +class="td11"> 0, 1, 2, 3, 4, 5, 6, 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-58-2-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-58-2-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-58-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-58-3-1" +class="td11"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-58-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-58-3-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-58-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-58-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">12.3.11 </span> <a + id="x1-13100012.3.11"></a>Commands controlling manipulation of files in the staging area</h4> +<!--l. 839--><p class="nopar" >These commands are used to control optional manipulations that the package manager may +perform on files in the staging directory <span +class="ectt-1000">ED</span>, like compressing files or stripping symbols from object +files. +</p><!--l. 843--><p class="noindent" >For each of the operations mentioned below, the package manager shall maintain an inclusion list +and an exclusion list, in order to control which directories and files the operation may or may not +be performed upon. The initial contents of the two lists is specified below for each of the +commands, respectively. +</p><!--l. 848--><p class="noindent" >Any of these operations 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 prepended, then: +</p><!--l. 853--><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, the operation may be performed on it, unless it has been excluded + as described below. + </li> + <li class="compactitem">If the item does not exist, it is ignored.</li></ul> +<!--l. 860--><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 prepended, then: +</p><!--l. 864--><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, the operation shall not be performed on it. + </li> + <li class="compactitem">If the item does not exist, it is ignored.</li></ul> +<!--l. 870--><p class="noindent" >The package manager shall take appropriate steps to ensure that any operations that it performs +on files in the staging area behave sensibly even if an item is listed in the inclusion list multiple +times or if an item is a symlink. +</p><!--l. 874--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">docompress</span></span></span> In EAPIs listed in table <a +href="#x1-131001r18">12.18<!--tex4ht:ref: tab:staging-area-commands --></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. The package +manager shall ensure that its compression mechanisms do not compress a file twice if it is already +compressed using the same compressed file format. For compression, the initial values of the two +lists are as follows: +</p><!--l. 881--><p class="noindent" > + </p><ul> + <li class="compactitem">The inclusion list 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">The exclusion list contains <span +class="ectt-1000">/usr/share/doc/${PF}/html</span>.</li></ul> +<!--l. 885--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">dostrip</span></span></span> In EAPIs listed in table <a +href="#x1-131001r18">12.18<!--tex4ht:ref: tab:staging-area-commands --></a> as supporting controllable stripping of symbols, the +package manager may strip a subset of the files under the <span +class="ectt-1000">ED </span>directory. For stripping of symbols, +the initial values of the two lists are as follows: + + +</p><!--l. 890--><p class="noindent" > + </p><ul> + <li class="compactitem">If the <span +class="ectt-1000">RESTRICT </span>variable described in section <a +href="#x1-680007.3.6">7.3.6<!--tex4ht:ref: sec:restrict --></a> enables a <span +class="ectt-1000">strip </span>token, the inclusion + list is empty; otherwise it contains <span +class="ectt-1000">/ </span>(the root path). + </li> + <li class="compactitem">The exclusion list is empty.</li></ul> +<!--l. 895--><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"> + <!--l. 899--><p class="noindent" > +<span +class="ecbx-1000">docompress</span> </p></dt><dd +class="description"> + <!--l. 899--><p class="noindent" >If the first argument is <span +class="ectt-1000">-x</span>, add each of its subsequent arguments to the exclusion list + for compression. Otherwise, add each argument to the respective inclusion list. Only + available in EAPIs listed in table <a +href="#x1-131001r18">12.18<!--tex4ht:ref: tab:staging-area-commands --></a> as supporting <span +class="ectt-1000">docompress</span>. + </p></dd><dt class="description"> + <!--l. 904--><p class="noindent" > +<span +class="ecbx-1000">dostrip</span> </p></dt><dd +class="description"> + <!--l. 904--><p class="noindent" >If the first argument is <span +class="ectt-1000">-x</span>, add each of its subsequent arguments to the exclusion list + for stripping of symbols. Otherwise, add each argument to the respective inclusion list. + Only available in EAPIs listed in table <a +href="#x1-131001r18">12.18<!--tex4ht:ref: tab:staging-area-commands --></a> as supporting <span +class="ectt-1000">dostrip</span>.</p></dd></dl> +<div class="table"> + + +<!--l. 911--><p class="noindent" ><a + id="x1-131001r18"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.18: </span><span +class="content">Commands controlling manipulation of files in the staging area in EAPIs</span></div><!--tex4ht:label?: x1-131001r18 --> +<div class="tabular"> + <table id="TBL-59" class="tabular" + +><colgroup id="TBL-59-1g"><col +id="TBL-59-1" /><col +id="TBL-59-2" /><col +id="TBL-59-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-59-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-59-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:normal; text-align:left;" id="TBL-59-1-2" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ecbx-1000">Supports</span> + <span +class="ecbx-1000">controllable</span> + <span +class="ecbx-1000">compression</span> + <span +class="ecbx-1000">and</span> + <span +class="ectt-1000">docompress</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:normal; text-align:left;" id="TBL-59-1-3" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ecbx-1000">Supports</span> + <span +class="ecbx-1000">controllable</span> + <span +class="ecbx-1000">stripping</span> + <span +class="ecbx-1000">and</span> + <span +class="ectt-1000">dostrip</span><span +class="ecbx-1000">?</span></div> + +</td></tr><tr + style="vertical-align:baseline;" id="TBL-59-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-59-2-1" +class="td11"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-59-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-59-2-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-59-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-59-3-1" +class="td11"> 4, 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-59-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-59-3-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-59-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-59-4-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-59-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-59-4-3" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-59-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-59-5-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">12.3.12 </span> <a + id="x1-13200012.3.12"></a>USE list functions</h4> +<!--l. 927--><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. It is an error if an ebuild calls any +of these functions in global scope. +</p><!--l. 931--><p class="noindent" >Unless otherwise noted, 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 <a +href="#x1-132001r19">12.19<!--tex4ht:ref: tab:use-list-strictness --></a>. + </p><dl class="description"><dt class="description"> + <!--l. 936--><p class="noindent" > +<span +class="ecbx-1000">use</span> </p></dt><dd +class="description"> + <!--l. 936--><p class="noindent" >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. + </p></dd><dt class="description"> + <!--l. 939--><p class="noindent" > +<span +class="ecbx-1000">usev</span> </p></dt><dd +class="description"> + <!--l. 939--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">usev</span></span></span> The same as <span +class="ectt-1000">use</span>, but also prints the flag name if the condition is met. In EAPIs + listed in table <a +href="#x1-132002r20">12.20<!--tex4ht:ref: tab:use-list-args --></a> as supporting an optional second argument for <span +class="ectt-1000">usev</span>, prints the + second argument instead, if it is specified and if the condition is met. + </p></dd><dt class="description"> + <!--l. 943--><p class="noindent" > +<span +class="ecbx-1000">useq</span> </p></dt><dd +class="description"> + <!--l. 943--><p class="noindent" >Deprecated synonym for <span +class="ectt-1000">use</span>. In EAPIs listed in table <a +href="#x1-122001r3">12.3<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned + as per section <a +href="#x1-12200012.3.2">12.3.2<!--tex4ht:ref: sec:banned-commands --></a>. + </p></dd><dt class="description"> + <!--l. 946--><p class="noindent" > +<span +class="ecbx-1000">use_with</span> </p></dt><dd +class="description"> + <!--l. 946--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">use-with</span></span></span> 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>). For EAPIs + listed in table <a +href="#x1-132002r20">12.20<!--tex4ht:ref: tab:use-list-args --></a> as not supporting it, an empty third argument is treated as if + it weren’t provided. 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>. The condition is inverted if the flag name is prefixed + with <span +class="ectt-1000">!</span>; this is valid only for the two- and three-argument forms. + </p></dd><dt class="description"> + <!--l. 955--><p class="noindent" > +<span +class="ecbx-1000">use_enable</span> </p></dt><dd +class="description"> + <!--l. 955--><p class="noindent" >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>. + + + </p></dd><dt class="description"> + <!--l. 957--><p class="noindent" > +<span +class="ecbx-1000">usex</span> </p></dt><dd +class="description"> + <!--l. 957--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">usex</span></span></span> Accepts at least one and at most five arguments. The first argument is a USE + flag name, any subsequent arguments (<span +class="ectt-1000">${arg2} </span>to <span +class="ectt-1000">${arg5}</span>) are string values. If not + provided, <span +class="ectt-1000">${arg2} </span>and <span +class="ectt-1000">${arg3} </span>default to <span +class="ectt-1000">yes </span>and <span +class="ectt-1000">no</span>, respectively; <span +class="ectt-1000">${arg4} </span>and + <span +class="ectt-1000">${arg5} </span>default to the empty string. If the USE flag is set, outputs <span +class="ectt-1000">${arg2}${arg4}</span>. + Otherwise, outputs <span +class="ectt-1000">${arg3}${arg5}</span>. The condition is inverted if the flag name is + prefixed with <span +class="ectt-1000">!</span>. Only available in EAPIs listed in table <a +href="#x1-132003r21">12.21<!--tex4ht:ref: tab:use-list-functions --></a> as supporting <span +class="ectt-1000">usex</span>. + </p></dd><dt class="description"> + <!--l. 964--><p class="noindent" > +<span +class="ecbx-1000">in_iuse</span> </p></dt><dd +class="description"> + <!--l. 964--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">in-iuse</span></span></span> Returns shell true (0) if the first argument (a <span +class="ectt-1000">USE </span>flag name) is included in + <span +class="ectt-1000">IUSE_EFFECTIVE</span>, false otherwise. Only available in EAPIs listed in table <a +href="#x1-132003r21">12.21<!--tex4ht:ref: tab:use-list-functions --></a> as + supporting <span +class="ectt-1000">in_iuse</span>.</p></dd></dl> +<div class="table"> + + +<!--l. 970--><p class="noindent" ><a + id="x1-132001r19"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.19: </span><span +class="content">EAPI behaviour for use queries not in <span +class="ectt-1000">IUSE_EFFECTIVE</span></span></div><!--tex4ht:label?: x1-132001r19 --> +<div class="tabular"> + <table id="TBL-60" class="tabular" + +><colgroup id="TBL-60-1g"><col +id="TBL-60-1" /><col +id="TBL-60-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-60-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-60-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-60-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-60-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-60-2-1" +class="td11"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-60-2-2" +class="td11"> Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-60-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-60-3-1" +class="td11"> 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-60-3-2" +class="td11"> Error </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-60-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-60-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 984--><p class="noindent" ><a + id="x1-132002r20"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.20: </span><span +class="content"><span +class="ectt-1000">usev</span>, <span +class="ectt-1000">use_with </span>and <span +class="ectt-1000">use_enable </span>arguments for EAPIs</span></div><!--tex4ht:label?: x1-132002r20 --> +<div class="tabular"> + <table id="TBL-61" class="tabular" + +><colgroup id="TBL-61-1g"><col +id="TBL-61-1" /><col +id="TBL-61-2" /><col +id="TBL-61-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-61-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-61-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:normal; text-align:left;" id="TBL-61-1-2" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ectt-1000">usev</span> + <span +class="ecbx-1000">has</span> + <span +class="ecbx-1000">optional</span> + <span +class="ecbx-1000">second</span> + <span +class="ecbx-1000">argument?</span></div> </td><td style="white-space:normal; text-align:left;" id="TBL-61-1-3" +class="td11"> <div class="multicolumn" style="white-space:normal; text-align:left;"><span +class="ectt-1000">use_with</span> + <span +class="ecbx-1000">and</span> + <span +class="ectt-1000">use_enable</span> + <span +class="ecbx-1000">support</span> + <span +class="ecbx-1000">empty</span> + <span +class="ecbx-1000">third</span> + <span +class="ecbx-1000">argument?</span></div> + +</td></tr><tr + style="vertical-align:baseline;" id="TBL-61-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-61-2-1" +class="td11"> 0, 1, 2, 3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-61-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-61-2-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-61-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-61-3-1" +class="td11"> 4, 5, 6, 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-61-3-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-61-3-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-61-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-61-4-1" +class="td11"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-61-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-61-4-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-61-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-61-5-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 1001--><p class="noindent" ><a + id="x1-132003r21"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.21: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">usex </span>and <span +class="ectt-1000">in_iuse</span></span></div><!--tex4ht:label?: x1-132003r21 --> +<div class="tabular"> + <table id="TBL-62" class="tabular" + +><colgroup id="TBL-62-1g"><col +id="TBL-62-1" /><col +id="TBL-62-2" /><col +id="TBL-62-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-62-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-62-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-62-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">usex</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-62-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">in_iuse</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-62-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-62-2-1" +class="td11"> 0, 1, 2, 3, 4 </td><td style="white-space:nowrap; text-align:left;" id="TBL-62-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-62-2-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-62-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-62-3-1" +class="td11"> 5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-62-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-62-3-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-62-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-62-4-1" +class="td11"> 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-62-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-62-4-3" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-62-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-62-5-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">12.3.13 </span> <a + id="x1-13300012.3.13"></a>Text list functions</h4> +<!--l. 1017--><p class="nopar" >These functions check whitespace-separated lists for a particular value. + </p><dl class="description"><dt class="description"> + <!--l. 1020--><p class="noindent" > +<span +class="ecbx-1000">has</span> </p></dt><dd +class="description"> + <!--l. 1020--><p class="noindent" >Returns shell true (0) if the first argument (a word) is found in the list of subsequent + arguments, false otherwise. Guaranteed quiet. + </p></dd><dt class="description"> + <!--l. 1022--><p class="noindent" > +<span +class="ecbx-1000">hasv</span> </p></dt><dd +class="description"> + <!--l. 1022--><p class="noindent" >The same as <span +class="ectt-1000">has</span>, but also prints the first argument if found. In EAPIs listed in + table <a +href="#x1-122001r3">12.3<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned as per section <a +href="#x1-12200012.3.2">12.3.2<!--tex4ht:ref: sec:banned-commands --></a>. + </p></dd><dt class="description"> + <!--l. 1025--><p class="noindent" > +<span +class="ecbx-1000">hasq</span> </p></dt><dd +class="description"> + <!--l. 1025--><p class="noindent" >Deprecated synonym for <span +class="ectt-1000">has</span>. In EAPIs listed in table <a +href="#x1-122001r3">12.3<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned + as per section <a +href="#x1-12200012.3.2">12.3.2<!--tex4ht:ref: sec:banned-commands --></a>.</p></dd></dl> +<h4 class="subsectionHead"><span class="titlemark">12.3.14 </span> <a + id="x1-13400012.3.14"></a>Version manipulation and comparison commands</h4> +<!--l. 1031--><p class="nopar" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">ver-commands</span></span></span> These commands provide utilities for working with version strings. They must all +be implemented internally as shell functions, i. e., they are callable in global scope. Availability of +these commands per EAPI is listed in table <a +href="#x1-134001r22">12.22<!--tex4ht:ref: tab:version-commands --></a>. +</p><!--l. 1036--><p class="noindent" >For the purpose of version manipulation commands, the specification provides a method for +splitting an arbitrary version string (not necessarily conforming to section <a +href="#x1-250003.2">3.2<!--tex4ht:ref: sec:version-spec --></a>) into a series of +version components and version separators. +</p><!--l. 1040--><p class="noindent" >A version component consists either purely of digits (<span +class="ectt-1000">[0-9]+</span>) or purely of uppercase and +lowercase ASCII letters (<span +class="ectt-1000">[A-Za-z]+</span>). A version separator is either a string of any other +characters (<span +class="ectt-1000">[^A-Za-z0-9]+</span>), or it occurs at the transition between a sequence of digits and a +sequence of letters, or vice versa. In the latter case, the version separator is an empty +string. +</p><!--l. 1046--><p class="noindent" >The version string is processed left-to-right, with the successive version components being assigned +successive indices starting with 1. The separator following a version component is assigned the +index of the preceding version component. If the first version component is preceded by a +non-empty string of version separator characters, this separator is assigned the index +0. +</p><!--l. 1051--><p class="noindent" >The version components are presumed present if not empty. The version separators between +version components are always presumed present, even if they are empty. The version separators +preceding the first version component and following the last are only presumed present if they are +not empty. + + +</p><!--l. 1055--><p class="noindent" >Whenever the commands support ranges, the range is specified as an unsigned integer, optionally +followed by a hyphen (<span +class="ectt-1000">-</span>), which in turn is optionally followed by another unsigned +integer. +</p><!--l. 1058--><p class="noindent" >A single integer specifies a single component or separator index. An integer followed by a hyphen +specifies all components or separators starting with the one at the specified index. Two integers +separated by a hyphen specify a range starting at the index specified by the first and ending at the +second, inclusively. + </p><dl class="description"><dt class="description"> + <!--l. 1064--><p class="noindent" > +<span +class="ecbx-1000">ver_cut</span> </p></dt><dd +class="description"> + <!--l. 1064--><p class="noindent" >Takes a range as the first argument, and optionally a version string as the second. + Prints a substring of the version string starting at the version component specified as + start of the range and ending at the version component specified as end of the range. + If the version string is not specified, <span +class="ectt-1000">${PV} </span>is used. + </p><!--l. 1069--><p class="noindent" >If the range spans outside the present version components, the missing components + and separators are presumed empty. In particular, the range starting at zero includes + the zeroth version separator if present, and the range spanning past the last version + component includes the suffix following it if present. A range that does not intersect + with any present version components yields an empty string. + </p></dd><dt class="description"> + <!--l. 1075--><p class="noindent" > +<span +class="ecbx-1000">ver_rs</span> </p></dt><dd +class="description"> + <!--l. 1075--><p class="noindent" >Takes one or more pairs of arguments, optionally followed by a version string. Every + argument pair specifies a range and a replacement string. Prints a version string after + performing the specified separator substitutions. If the version string is not specified, + <span +class="ectt-1000">${PV} </span>is used. + </p><!--l. 1080--><p class="noindent" >For every argument pair specified, each of the version separators present at indices + specified by the range is replaced with the replacement string, in order. If the range + spans outside the range of present version separators, it is silently truncated. + </p></dd><dt class="description"> + <!--l. 1084--><p class="noindent" > +<span +class="ecbx-1000">ver_test</span> </p></dt><dd +class="description"> + <!--l. 1084--><p class="noindent" >Takes two or three arguments. In the 3-argument form, takes an LHS version string, + followed by an operator, followed by an RHS version string. In the 2-argument form, the + first version string is omitted and <span +class="ectt-1000">${PVR} </span>is used as LHS version string. The operator + can be <span +class="ectt-1000">-eq </span>(equal to), <span +class="ectt-1000">-ne </span>(not equal to), <span +class="ectt-1000">-gt </span>(greater than), <span +class="ectt-1000">-ge </span>(greater than or + equal to), <span +class="ectt-1000">-lt </span>(less than) or <span +class="ectt-1000">-le </span>(less than or equal to). Returns shell true (0) if the + specified relation between the LHS and RHS version strings is fulfilled. + </p><!--l. 1091--><p class="noindent" >Both version strings must conform to the version specification in section <a +href="#x1-250003.2">3.2<!--tex4ht:ref: sec:version-spec --></a>. + Comparison is done using algorithm <a +href="#x1-26001r1">3.1<!--tex4ht:ref: alg:version-comparison --></a>.</p></dd></dl> +<div class="table"> + + +<!--l. 1096--><p class="noindent" ><a + id="x1-134001r22"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.22: </span><span +class="content">EAPIs supporting version manipulation commands</span></div><!--tex4ht:label?: x1-134001r22 --> +<div class="tabular"> + <table id="TBL-63" class="tabular" + +><colgroup id="TBL-63-1g"><col +id="TBL-63-1" /><col +id="TBL-63-2" /><col +id="TBL-63-3" /><col +id="TBL-63-4" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-63-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-63-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-63-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">ver_cut</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-63-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">ver_rs</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-63-1-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">ver_test</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-63-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-63-2-1" +class="td11"> 0, 1, 2, 3, 4, 5, 6 </td><td style="white-space:nowrap; text-align:left;" id="TBL-63-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-63-2-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-63-2-4" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-63-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-63-3-1" +class="td11"> 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-63-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-63-3-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-63-3-4" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-63-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-63-4-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">12.3.15 </span> <a + id="x1-13500012.3.15"></a>Misc commands</h4> +<!--l. 1112--><p class="nopar" >The following commands are always available in the ebuild environment, but don’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"> + <!--l. 1117--><p class="noindent" > +<span +class="ecbx-1000">dosed</span> </p></dt><dd +class="description"> + <!--l. 1117--><p class="noindent" >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 <a +href="#x1-122001r3">12.3<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned + as per section <a +href="#x1-12200012.3.2">12.3.2<!--tex4ht:ref: sec:banned-commands --></a>. + </p></dd><dt class="description"> + <!--l. 1125--><p class="noindent" > +<span +class="ecbx-1000">unpack</span> </p></dt><dd +class="description"> + <!--l. 1125--><p class="noindent" >Unpacks one or more source archives, in order, into the current directory. For + compressed files, creates the target file in the current directory, with the compression + suffix removed from its name. 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>. + </p><!--l. 1132--><p class="noindent" >Arguments to <span +class="ectt-1000">unpack </span>are interpreted as follows: + </p><ul> + <li class="compactitem">A filename without path (i. e., not containing any slash) is looked up in <span +class="ectt-1000">DISTDIR</span>. + </li> + <li class="compactitem">An argument starting with the string <span +class="ectt-1000">./ </span>is a path relative to the working directory. + </li> + <li class="compactitem"><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">unpack-absolute</span></span></span> Otherwise, for EAPIs listed in table <a +href="#x1-135001r23">12.23<!--tex4ht:ref: tab:unpack-behaviour --></a> as supporting + absolute and relative paths, the argument is interpreted as a literal path (absolute, + or relative to the working directory); for EAPIs listed as <span +class="ecti-1000">not </span>supporting such + paths, <span +class="ectt-1000">unpack </span>shall abort the build process.</li></ul> + <!--l. 1142--><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. 1145--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">unpack-extensions</span></span></span> Must be able to unpack the following file formats, if the relevant + binaries are available: </p> + <ul class="itemize1"> + <li class="itemize"> + <!--l. 1148--><p class="noindent" >tar files (<span +class="ectt-1000">*.tar</span>). Ebuilds must ensure that GNU tar is installed. + </p></li> + <li class="itemize"> + + + <!--l. 1149--><p class="noindent" >gzip-compressed files (<span +class="ectt-1000">*.gz, *.Z</span>). Ebuilds must ensure that GNU gzip is + installed. + </p></li> + <li class="itemize"> + <!--l. 1150--><p class="noindent" >gzip-compressed tar files (<span +class="ectt-1000">*.tar.gz, *.tgz, *.tar.Z</span>). Ebuilds must ensure that + GNU gzip and GNU tar are installed. + </p></li> + <li class="itemize"> + <!--l. 1152--><p class="noindent" >bzip2-compressed files (<span +class="ectt-1000">*.bz2, *.bz</span>). Ebuilds must ensure that bzip2 is installed. + </p></li> + <li class="itemize"> + <!--l. 1153--><p class="noindent" >bzip2-compressed tar files (<span +class="ectt-1000">*.tar.bz2, *.tbz2, *.tar.bz, *.tbz</span>). Ebuilds + must ensure that bzip2 and GNU tar are installed. + </p></li> + <li class="itemize"> + <!--l. 1155--><p class="noindent" >zip files (<span +class="ectt-1000">*.zip, *.ZIP, *.jar</span>). Ebuilds must ensure that Info-ZIP Unzip is + installed. + </p></li> + <li class="itemize"> + <!--l. 1156--><p class="noindent" >7zip files (<span +class="ectt-1000">*.7z, *.7Z</span>). Ebuilds must ensure that P7ZIP is installed. Only for + EAPIs listed in table <a +href="#x1-135002r24">12.24<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting <span +class="ectt-1000">.7z</span>. + </p></li> + <li class="itemize"> + <!--l. 1158--><p class="noindent" >rar files (<span +class="ectt-1000">*.rar, *.RAR</span>). Ebuilds must ensure that RARLAB’s unrar is installed. + Only for EAPIs listed in table <a +href="#x1-135002r24">12.24<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting <span +class="ectt-1000">.rar</span>. + </p></li> + <li class="itemize"> + <!--l. 1160--><p class="noindent" >LHA archives (<span +class="ectt-1000">*.LHA, *.LHa, *.lha, *.lzh</span>). Ebuilds must ensure that the lha + program is installed. Only for EAPIs listed in table <a +href="#x1-135002r24">12.24<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting <span +class="ectt-1000">.lha</span>. + </p></li> + <li class="itemize"> + <!--l. 1163--><p class="noindent" >ar archives (<span +class="ectt-1000">*.a</span>). Ebuilds must ensure that GNU binutils is installed. + </p></li> + <li class="itemize"> + <!--l. 1164--><p class="noindent" >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. + </p></li> + <li class="itemize"> + <!--l. 1168--><p class="noindent" >lzma-compressed files (<span +class="ectt-1000">*.lzma</span>). Ebuilds must ensure that XZ Utils is installed. + </p></li> + <li class="itemize"> + <!--l. 1169--><p class="noindent" >lzma-compressed tar files (<span +class="ectt-1000">*.tar.lzma</span>). Ebuilds must ensure that XZ Utils and + GNU tar are installed. + + + </p></li> + <li class="itemize"> + <!--l. 1171--><p class="noindent" >xz-compressed files (<span +class="ectt-1000">*.xz</span>). Ebuilds must ensure that XZ Utils is installed. Only + for EAPIs listed in table <a +href="#x1-135002r24">12.24<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting <span +class="ectt-1000">.xz</span>. + </p></li> + <li class="itemize"> + <!--l. 1173--><p class="noindent" >xz-compressed tar files (<span +class="ectt-1000">*.tar.xz, *.txz</span>). Ebuilds must ensure that XZ Utils + and GNU tar are installed. Only for EAPIs listed in table <a +href="#x1-135002r24">12.24<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting + <span +class="ectt-1000">.tar.xz </span>or <span +class="ectt-1000">.txz</span>.</p></li></ul> + <!--l. 1177--><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><!--l. 1180--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">unpack-ignore-case</span></span></span> <span +class="ectt-1000">unpack </span>matches filename extensions in a case-insensitive manner, for + EAPIs listed such in table <a +href="#x1-135001r23">12.23<!--tex4ht:ref: tab:unpack-behaviour --></a>. +</p> + <div class="table"> + <!--l. 1184--><p class="noindent" ><a + id="x1-135001r23"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Table 12.23: </span><span +class="content"><span +class="ectt-1000">unpack </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-135001r23 --> + <div class="tabular"> + <table id="TBL-64" class="tabular" + +><colgroup id="TBL-64-1g"><col +id="TBL-64-1" /><col +id="TBL-64-2" /><col +id="TBL-64-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-64-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-64-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-64-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports absolute and relative paths?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-64-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Case-insensitive matching?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-64-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-64-2-1" +class="td11"> 0, 1, 2, 3, 4, 5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-64-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-64-2-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-64-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-64-3-1" +class="td11"> 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-64-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-64-3-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-64-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-64-4-1" +class="td11"> </td></tr></table></div></div><hr class="endfloat" /> + </div> + <div class="table"> + <!--l. 1199--><p class="noindent" ><a + id="x1-135002r24"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Table 12.24: </span><span +class="content"><span +class="ectt-1000">unpack </span>extensions for EAPIs</span></div><!--tex4ht:label?: x1-135002r24 --> + <div class="tabular"> + <table id="TBL-65" class="tabular" + +><colgroup id="TBL-65-1g"><col +id="TBL-65-1" /><col +id="TBL-65-2" /><col +id="TBL-65-3" /><col +id="TBL-65-4" /><col +id="TBL-65-5" /><col +id="TBL-65-6" /><col +id="TBL-65-7" /><col +id="TBL-65-8" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-65-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-65-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-65-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">.xz</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-65-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">.tar.xz</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-65-1-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">.txz</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-65-1-5" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">.7z</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-65-1-6" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">.rar</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-65-1-7" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">.lha</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-65-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-65-2-1" +class="td11"> 0, 1, 2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-2-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-2-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-2-5" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-2-6" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-2-7" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-65-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-65-3-1" +class="td11"> 3, 4, 5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-3-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-3-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-3-5" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-3-6" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-3-7" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-65-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-65-4-1" +class="td11"> 6, 7 </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-4-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-4-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-4-5" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-4-6" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-4-7" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-65-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-65-5-1" +class="td11"> 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-5-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-5-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-5-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-5-5" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-5-6" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-65-5-7" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-65-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-65-6-1" +class="td11"> </td></tr></table></div></div><hr class="endfloat" /> + </div> + </dd><dt class="description"> + <!--l. 1219--><p class="noindent" > +<span +class="ecbx-1000">inherit</span> </p></dt><dd +class="description"> + <!--l. 1219--><p class="noindent" >See section <a +href="#x1-10500010.1">10.1<!--tex4ht:ref: sec:inherit --></a>. + </p></dd><dt class="description"> + <!--l. 1221--><p class="noindent" > +<span +class="ecbx-1000">default</span> </p></dt><dd +class="description"> + <!--l. 1221--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">default-func</span></span></span> Calls the <span +class="ectt-1000">default_ </span>function for the current phase (see section <a +href="#x1-1020009.1.17">9.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 <a +href="#x1-135034r25">12.25<!--tex4ht:ref: tab:misc-commands --></a> as supporting + <span +class="ectt-1000">default</span>. + </p></dd><dt class="description"> + <!--l. 1227--><p class="noindent" > +<span +class="ecbx-1000">einstalldocs</span> </p></dt><dd +class="description"> + <!--l. 1227--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">einstalldocs</span></span></span> Takes no arguments. Installs the files specified by the <span +class="ectt-1000">DOCS </span>and <span +class="ectt-1000">HTML_DOCS</span> + variables or a default set of files, according to algorithm <a +href="#x1-135003r4">12.4<!--tex4ht:ref: alg:einstalldocs --></a>. If called using <span +class="ectt-1000">nonfatal </span>and + any of the called commands returns a non-zero exit status, returns immediately with + + + the same exit status. Only available in EAPIs listed in table <a +href="#x1-135034r25">12.25<!--tex4ht:ref: tab:misc-commands --></a> as supporting + <span +class="ectt-1000">einstalldocs</span>. +</p> + <div class="algorithm"> + <!--l. 1234--><p class="noindent" ><a + id="x1-135003r4"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Algorithm 12.4: </span><span +class="content"><span +class="ectt-1000">einstalldocs </span>logic</span></div><!--tex4ht:label?: x1-135003r4 --> +<div class="algorithmic"> +<a + id="x1-135004r176"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </span> save the value of the install directory for <span +class="ectt-1000">dodoc</span> <a + id="x1-135005r177"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:4.99878pt;"> </span> set the install directory for <span +class="ectt-1000">dodoc </span>to <span +class="ectt-1000">/usr/share/doc/${PF}</span> <a + id="x1-135006r178"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> the DOCS variable is a non-empty array <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-135007r179"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:14.99634pt;"> </span> call <span +class="ectt-1000">dodoc -r "${DOCS[@]}"</span> + </span><a + id="x1-135008r180"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> the DOCS variable is a non-empty scalar <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-135009r181"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:14.99634pt;"> </span> call <span +class="ectt-1000">dodoc -r ${DOCS}</span> + </span><a + id="x1-135010r182"></a> + <br /><span class="ALCitem">7:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> the DOCS variable is unset <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-135011r183"></a> + <br /><span class="ALCitem">8:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">for all</span> <span +class="cmmi-10">d </span>matching the filename expansion of <span +class="ectt-1000">README* ChangeLog AUTHORS NEWS TODO</span> + <span +class="ectt-1000">CHANGES THANKS BUGS FAQ CREDITS CHANGELOG</span> <span +class="ecbx-1000">do</span><span class="for-body"> +<a + id="x1-135012r184"></a> + <br /><span class="ALCitem">9:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">if</span> file <span +class="cmmi-10">d </span>exists and has a size greater than zero <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-135013r185"></a> +<br /><span class="ALCitem">10:</span><span class="ALIndent" style="width:34.99146pt;"> </span> call <span +class="ectt-1000">dodoc </span>with <span +class="cmmi-10">d </span>as argument + </span><a + id="x1-135014r186"></a> +<br /><span class="ALCitem">11:</span><span class="ALIndent" style="width:24.9939pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-135015r187"></a> +<br /><span class="ALCitem">12:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span> + </span><a + id="x1-135016r188"></a> +<br /><span class="ALCitem">13:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-135017r189"></a> +<br /><span class="ALCitem">14:</span><span class="ALIndent" style="width:4.99878pt;"> </span> set the install directory for <span +class="ectt-1000">dodoc </span>to <span +class="ectt-1000">/usr/share/doc/${PF}/html</span> <a + id="x1-135018r190"></a> +<br /><span class="ALCitem">15:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> the HTML_DOCS variable is a non-empty array <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-135019r191"></a> +<br /><span class="ALCitem">16:</span><span class="ALIndent" style="width:14.99634pt;"> </span> call <span +class="ectt-1000">dodoc -r "${HTML_DOCS[@]}"</span> + </span><a + id="x1-135020r192"></a> +<br /><span class="ALCitem">17:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span> <span +class="ecbx-1000">if</span> the HTML_DOCS variable is a non-empty scalar <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-135021r193"></a> +<br /><span class="ALCitem">18:</span><span class="ALIndent" style="width:14.99634pt;"> </span> call <span +class="ectt-1000">dodoc -r ${HTML_DOCS}</span> + </span><a + id="x1-135022r194"></a> +<br /><span class="ALCitem">19:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-135023r195"></a> +<br /><span class="ALCitem">20:</span><span class="ALIndent" style="width:4.99878pt;"> </span> restore the value of the install directory for <span +class="ectt-1000">dodoc</span> <a + id="x1-135024r196"></a> +<br /><span class="ALCitem">21:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">return </span> shell true (0) + </div> </div><hr class="endfloat" /> + </div> + </dd><dt class="description"> + <!--l. 1261--><p class="noindent" > +<span +class="ecbx-1000">get_libdir</span> </p></dt><dd +class="description"> + <!--l. 1261--><p class="noindent" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">get-libdir</span></span></span> Prints the libdir name obtained according to algorithm <a +href="#x1-135025r5">12.5<!--tex4ht:ref: alg:get-libdir --></a>. Must be + implemented internally as a shell function. Only available in EAPIs listed in table <a +href="#x1-135034r25">12.25<!--tex4ht:ref: tab:misc-commands --></a> as + supporting <span +class="ectt-1000">get_libdir</span>. +</p> + <div class="algorithm"> + + + <!--l. 1266--><p class="noindent" ><a + id="x1-135025r5"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Algorithm 12.5: </span><span +class="content"><span +class="ectt-1000">get_libdir </span>logic</span></div><!--tex4ht:label?: x1-135025r5 --> +<div class="algorithmic"> +<a + id="x1-135026r197"></a> + <span class="ALCitem">1:</span><span class="ALIndent" style="width:4.99878pt;"> </span> let libdir=lib <a + id="x1-135027r198"></a> + <br /><span class="ALCitem">2:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> the ABI environment variable is set <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-135028r199"></a> + <br /><span class="ALCitem">3:</span><span class="ALIndent" style="width:14.99634pt;"> </span> let libvar=LIBDIR_$ABI <a + id="x1-135029r200"></a> + <br /><span class="ALCitem">4:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">if</span> the environment variable named by libvar is set <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-135030r201"></a> + <br /><span class="ALCitem">5:</span><span class="ALIndent" style="width:24.9939pt;"> </span> let libdir=the value of the variable named by libvar + </span><a + id="x1-135031r202"></a> + <br /><span class="ALCitem">6:</span><span class="ALIndent" style="width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-135032r203"></a> + <br /><span class="ALCitem">7:</span><span class="ALIndent" style="width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-135033r204"></a> + <br /><span class="ALCitem">8:</span><span class="ALIndent" style="width:4.99878pt;"> </span> print the value of libdir + </div> </div><hr class="endfloat" /> + </div> + </dd></dl> +<div class="table"> + + +<!--l. 1282--><p class="noindent" ><a + id="x1-135034r25"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.25: </span><span +class="content">Misc commands for EAPIs</span></div><!--tex4ht:label?: x1-135034r25 --> +<div class="tabular"> + <table id="TBL-66" class="tabular" + +><colgroup id="TBL-66-1g"><col +id="TBL-66-1" /><col +id="TBL-66-2" /><col +id="TBL-66-3" /><col +id="TBL-66-4" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-66-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-66-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-66-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">default</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-66-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">einstalldocs</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-66-1-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">get_libdir</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-66-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-66-2-1" +class="td11"> 0, 1 </td><td style="white-space:nowrap; text-align:left;" id="TBL-66-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-66-2-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-66-2-4" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-66-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-66-3-1" +class="td11"> 2, 3, 4, 5 </td><td style="white-space:nowrap; text-align:left;" id="TBL-66-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-66-3-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-66-3-4" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-66-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-66-4-1" +class="td11"> 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-66-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-66-4-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-66-4-4" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-66-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-66-5-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">12.3.16 </span> <a + id="x1-13600012.3.16"></a>Debug commands</h4> +<!--l. 1299--><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"> + <!--l. 1304--><p class="noindent" > +<span +class="ecbx-1000">debug-print</span> </p></dt><dd +class="description"> + <!--l. 1304--><p class="noindent" >If in a special debug mode, the arguments should be outputted or recorded using some + kind of debug logging. + </p></dd><dt class="description"> + <!--l. 1306--><p class="noindent" > +<span +class="ecbx-1000">debug-print-function</span> </p></dt><dd +class="description"> + <!--l. 1306--><p class="noindent" >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. + </p></dd><dt class="description"> + <!--l. 1308--><p class="noindent" > +<span +class="ecbx-1000">debug-print-section</span> </p></dt><dd +class="description"> + <!--l. 1308--><p class="noindent" >Calls <span +class="ectt-1000">debug-print </span>with <span +class="ectt-1000">now in section $*</span>.</p></dd></dl> +<!--l. 1311--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.3.17 </span> <a + id="x1-13700012.3.17"></a>Reserved commands and variables</h4> +<!--l. 1313--><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. 1318--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">__ </span>(two underscores) at beginning of string + </li> + <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> + + + + + + + + +<h2 class="chapterHead"><span class="titlemark">Chapter 13</span><br /><a + id="x1-13800013"></a>Merging and Unmerging</h2> +<dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 3--><p class="nopar" ><span +class="ecbx-1000">Note: </span>In this chapter, <span +class="ecti-1000">file </span>and <span +class="ecti-1000">regular file </span>have their Unix meanings.</p></dd></dl> +<h3 class="sectionHead"><span class="titlemark">13.1 </span> <a + id="x1-13900013.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’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-14000013.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-14100013.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-14200013.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-14300013.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-14400013.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-14500013.3.2"></a>File modification times</h4> +<!--l. 68--><p class="nopar" ><span class="fbox"><span +class="eccc1000-"><span +class="small-caps">mtime-preserve</span></span></span> In EAPIs listed in table <a +href="#x1-145001r1">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’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">≤</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. 90--><p class="noindent" ><a + id="x1-145001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 13.1: </span><span +class="content">Preservation of file modification times (mtimes)</span></div><!--tex4ht:label?: x1-145001r1 --> +<div class="tabular"> + <table id="TBL-67" class="tabular" + +><colgroup id="TBL-67-1g"><col +id="TBL-67-1" /><col +id="TBL-67-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-67-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-67-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-67-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-67-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-67-2-1" +class="td11"> 0, 1, 2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-67-2-2" +class="td11"> Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-67-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-67-3-1" +class="td11"> 3, 4, 5, 6, 7, 8 </td><td style="white-space:nowrap; text-align:left;" id="TBL-67-3-2" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-67-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-67-4-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-14600013.3.3"></a>Configuration file protection</h4> +<!--l. 106--><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 <a +href="#x1-550005.3">5.3<!--tex4ht:ref: sec:profile-variables --></a>) control the paths for which this must be enforced. +</p><!--l. 111--><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. 115--><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_<name></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. 130--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.4 </span> <a + id="x1-14700013.4"></a>Symlinks</h3> +<!--l. 132--><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. 137--><p class="noindent" >Ebuilds must not attempt to merge a symlink on top of a directory. +</p><!--l. 139--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">13.4.1 </span> <a + id="x1-14800013.4.1"></a>Rewriting</h4> +<!--l. 141--><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. 144--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.5 </span> <a + id="x1-14900013.5"></a>Hard Links</h3> +<!--l. 146--><p class="nopar" >A hard link may be merged either as a single file with links or as multiple independent +files. +</p><!--l. 148--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.6 </span> <a + id="x1-15000013.6"></a>Other Files</h3> +<!--l. 150--><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 14</span><br /><a + id="x1-15100014"></a>Metadata Cache</h2> +<h3 class="sectionHead"><span class="titlemark">14.1 </span> <a + id="x1-15200014.1"></a>Directory Contents</h3> +<!--l. 6--><p class="nopar" >The <span +class="ectt-1000">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"><package>-<version></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-15300014.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">Use flags that this package requires (<span +class="ectt-1000">REQUIRED_USE</span>). Blank in some EAPIs; see + table <a +href="#x1-62002r2">7.2<!--tex4ht:ref: tab:optional-vars-table --></a>. + </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">Build-time dependencies for <span +class="ectt-1000">CBUILD </span>host (<span +class="ectt-1000">BDEPEND</span>). Blank in some EAPIs; see + table <a +href="#x1-72004r4">8.4<!--tex4ht:ref: tab:depend-table --></a>. + </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 <a +href="#x1-62002r2">7.2<!--tex4ht:ref: tab:optional-vars-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 <a +href="#x1-70001r5">7.5<!--tex4ht:ref: tab:defined-phases-table --></a>. + </dd><dt class="compactenum"> + 18. </dt><dd +class="compactenum">Install-time dependencies (<span +class="ectt-1000">IDEPEND</span>). Blank in some EAPIs; see table <a +href="#x1-72004r4">8.4<!--tex4ht:ref: tab:depend-table --></a>. + </dd><dt class="compactenum"> + 19. </dt><dd +class="compactenum">Blank lines to pad the file to 22 lines long</dd></dl> +<!--l. 44--><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 15</span><br /><a + id="x1-15400015"></a>Glossary</h2> +<!--l. 4--><p class="nopar" >This chapter 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"> + <!--l. 8--><p class="noindent" > +<span +class="ecbx-1000">qualified package name</span> </p></dt><dd +class="description"> + <!--l. 8--><p class="noindent" >A package name along with its associated category. For example, <span +class="ectt-1000">app-editors/vim </span>is + a qualified package name. + </p></dd><dt class="description"> + <!--l. 10--><p class="noindent" > +<span +class="ecbx-1000">stand-alone repository</span> </p></dt><dd +class="description"> + <!--l. 10--><p class="noindent" >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">non-stand-alone repository </span>below. + </p></dd><dt class="description"> + <!--l. 12--><p class="noindent" > +<span +class="ecbx-1000">non-stand-alone repository</span> </p></dt><dd +class="description"> + <!--l. 12--><p class="noindent" >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. + </p></dd><dt class="description"> + <!--l. 15--><p class="noindent" > +<span +class="ecbx-1000">master repository</span> </p></dt><dd +class="description"> + <!--l. 15--><p class="noindent" >See above. +</p> + </dd></dl> + + + + + + +<h2 class="likechapterHead"><a + id="x1-15500015"></a>Bibliography</h2> +<a + id="Q1-1-248"></a> + <div class="thebibliography"> + <p class="bibitem" ><span class="biblabel"> + [1]<span class="bibsp"> </span></span><a + id="XGlep74"></a>Michał Górny, Robin Hugh Johnson, + and Ulrich Müller. <span +class="ecti-1000">GLEP 74: Full-tree verification using Manifest files</span>, February 2018. + URL: <a +href="https://www.gentoo.org/glep/glep-0074.html" class="url" ><span +class="ectt-1000">https://www.gentoo.org/glep/glep-0074.html</span></a>. + </p> + <p class="bibitem" ><span class="biblabel"> + [2]<span class="bibsp"> </span></span><a + id="XGlep68"></a>Michał Górny. <span +class="ecti-1000">GLEP 68: Package and category metadata</span>, February 2018. URL: + <a +href="https://www.gentoo.org/glep/glep-0068.html" class="url" ><span +class="ectt-1000">https://www.gentoo.org/glep/glep-0068.html</span></a>. + </p> + <p class="bibitem" ><span class="biblabel"> + [3]<span class="bibsp"> </span></span><a + id="XGlep37"></a>Jason Stubbs. <span +class="ecti-1000">GLEP 37: Virtuals deprecation</span>, September 2006. URL: + <a +href="https://www.gentoo.org/glep/glep-0037.html" class="url" ><span +class="ectt-1000">https://www.gentoo.org/glep/glep-0037.html</span></a>. + </p> + <p class="bibitem" ><span class="biblabel"> + [4]<span class="bibsp"> </span></span><a + id="XGlep55"></a>Piotr Jaroszyński. <span +class="ecti-1000">GLEP 55: Use EAPI-suffixed ebuilds</span>, May 2009. URL: + <a +href="https://www.gentoo.org/glep/glep-0055.html" class="url" ><span +class="ectt-1000">https://www.gentoo.org/glep/glep-0055.html</span></a>. +</p> + </div> + + + + +<a + id="x1-155005r246"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix A</span><br /><a + id="x1-156000A"></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 GLEP 68 <span class="cite">[<a +href="#XGlep68">2</a>]</span>. + + +<a + id="x1-156001r246"></a> +</p> +<h2 class="appendixHead"><span class="titlemark">Appendix B</span><br /><a + id="x1-157000B"></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—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">EMERGE_ </span>variable and any <span +class="ectt-1000">PORTAGE_ </span>variable. + </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-157001r246"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix C</span><br /><a + id="x1-158000C"></a>Historical Curiosities</h2> +<h3 class="sectionHead"><a + id="x1-159000C"></a>Long-obsolete Features</h3> +<!--l. 31--><p class="nopar" >The items described in this section are included for information only. Unless otherwise +noted, they were deprecated or abandoned long before EAPI was introduced. Ebuilds +must not use these features, and package managers should not be changed to support +them. +</p><!--l. 35--><p class="nopar" > +</p> +<h4 class="subsectionHead"><a + id="x1-160000C"></a>If-else USE blocks</h4> +<!--l. 36--><p class="nopar" >Historically, Portage supported if-else use conditionals, as shown by listing <a +href="#x1-160001r1">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. 41--><p class="noindent" ><a + id="x1-160001r1"></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-160001r1 --> + + +<pre class="verbatim" id="verbatim-20"> +DEPEND=" + flag? ( + taken/if-true + ) : ( + taken/if-false + ) + "</pre> +<!--l. 50--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> +<h4 class="subsectionHead"><a + id="x1-161000C"></a>CVS versions</h4> +<!--l. 54--><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. 59--><p class="nopar" > +</p> +<h4 class="subsectionHead"><a + id="x1-162000C"></a>use.defaults</h4> +<!--l. 60--><p class="nopar" >The <span +class="ectt-1000">use.defaults </span>file in the profile directory was used to implement ‘autouse’—switching USE +flags on or off depending upon which packages are installed. It was deprecated long ago and finally +removed in 2009. +</p><!--l. 64--><p class="nopar" > +</p> +<h3 class="sectionHead"><a + id="x1-163000C"></a>Retroactive Changes</h3> +<!--l. 66--><p class="nopar" >In some exceptional cases, changes to the specification have been approved by the Gentoo Council +without introducing a new EAPI. This section lists such retroactive changes. +</p><!--l. 69--><p class="nopar" > +</p> +<h4 class="subsectionHead"><a + id="x1-164000C"></a>Bash version</h4> +<!--l. 70--><p class="nopar" >EAPIs <span +class="ectt-1000">0</span>, <span +class="ectt-1000">1 </span>and <span +class="ectt-1000">2 </span>originally specified GNU Bash version 3.0. This was retroactively updated to +version 3.2 (see table <a +href="#x1-58001r1">6.1<!--tex4ht:ref: tab:bash-version --></a>) in November 2009. +</p><!--l. 73--><p class="nopar" > +</p> +<h4 class="subsectionHead"><a + id="x1-165000C"></a>Old-style virtuals</h4> +<!--l. 74--><p class="nopar" >Historically, virtuals were special packages rather than regular ebuilds. An ebuild could specify in +the <span +class="ectt-1000">PROVIDE </span>metadata that it supplied certain virtuals, and the package manager had to bear this +in mind when handling dependencies. +</p><!--l. 78--><p class="noindent" >Old-style virtuals were supported by EAPIs <span +class="ectt-1000">0</span>, <span +class="ectt-1000">1</span>, <span +class="ectt-1000">2</span>, <span +class="ectt-1000">3 </span>and <span +class="ectt-1000">4</span>. They were phased out via GLEP +37 <span class="cite">[<a +href="#XGlep37">3</a>]</span> and finally removed in 2011. +</p><!--l. 83--><p class="noindent" > + + +</p><dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 83--><p class="noindent" ><span +class="ecbx-1000">Note: </span>A ‘new-style virtual’ is a normal package that installs no files and uses its dependency +requirements to pull in a ‘provider’. This does not require any special handling from the +package manager.</p></dd></dl> +<!--l. 85--><p class="nopar" > +</p> +<h4 class="subsectionHead"><a + id="x1-166000C"></a>EAPI parsing</h4> +<!--l. 86--><p class="nopar" >The method to specify the EAPI of an ebuild used to be a shell variable assignment, and the +package manager had to source the ebuild in order to determine the EAPI. Therefore any ebuild +using a future EAPI would still have to be sourceable by old package managers, which imposed +restrictions e. g. on updating the Bash version or on possible changes of global scope functions. +Several approaches to overcome this limitation were discussed, notably GLEP 55 <span class="cite">[<a +href="#XGlep55">4</a>]</span>, which was +rejected though. +</p><!--l. 93--><p class="noindent" >The current syntax of the <span +class="ectt-1000">EAPI </span>assignment statement (see section <a +href="#x1-630007.3.1">7.3.1<!--tex4ht:ref: sec:eapi --></a>), allowing the package +manager to obtain the EAPI from the ebuild by a regular expression match and without sourcing +it, was introduced in May 2012. +</p><!--l. 97--><p class="nopar" > +</p> +<h4 class="subsectionHead"><a + id="x1-167000C"></a>Package names</h4> +<!--l. 98--><p class="nopar" >Previously, package names were only required not to end in a hyphen followed by one or +more digits. In October 2012 this was tightened to the specification in section <a +href="#x1-180003.1.2">3.1.2<!--tex4ht:ref: sec:package-names --></a>, +namely that they must not end in a hyphen followed by anything resembling a package +version. +</p><!--l. 102--><p class="nopar" > +</p> +<h4 class="subsectionHead"><a + id="x1-168000C"></a>Asterisk in dependency specification</h4> +<!--l. 103--><p class="nopar" >In the <span +class="ectt-1000">= </span>dependency operator specified in section <a +href="#x1-800008.3.1">8.3.1<!--tex4ht:ref: sec:dep-operator --></a>, an asterisk used to induce string prefix +comparison instead of the normal version comparison logic. That could lead to surprising results, +e. g. <span +class="ectt-1000">=dev-lang/perl-5.2* </span>matching <span +class="ectt-1000">dev-lang/perl-5.22.0</span>. Moreover, implementation in +package managers deviated from what was specified. +</p><!--l. 108--><p class="noindent" >String prefix matching was effective in EAPIs <span +class="ectt-1000">0</span>, <span +class="ectt-1000">1</span>, <span +class="ectt-1000">2</span>, <span +class="ectt-1000">3</span>, <span +class="ectt-1000">4 </span>and <span +class="ectt-1000">5</span>. It was retroactively dropped in +favour of the current behaviour in October 2015. +</p><!--l. 111--><p class="nopar" > +</p> +<h4 class="subsectionHead"><a + id="x1-169000C"></a>Empty dependency groups</h4> +<!--l. 112--><p class="nopar" >The dependency specification format (see section <a +href="#x1-730008.2">8.2<!--tex4ht:ref: sec:dependency-spec --></a>) originally permitted all-of, any-of, +exactly-one-of, at-most-one-of and use-conditional groups with zero sub-elements. However, such +empty groups were neither supported by all package managers nor used in ebuilds. They were + + +dropped from the specification in October 2017. + + + + + + + + +<a + id="x1-169001r246"></a> +</p> +<h2 class="appendixHead"><span class="titlemark">Appendix D</span><br /><a + id="x1-170000D"></a>Feature Availability by EAPI</h2> +<dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 6--><p class="nopar" ><span +class="ecbx-1000">Note: </span>This chapter is informative and for convenience only. Refer to the main text for +specifics. For lack of space, EAPIs 0, 1, 2, 3, and 4 have been consolidated into a single +column in the table below; entries marked with an asterisk differ between these EAPIs. See +the 2012-09-20 edition of this document for a complete table of previous EAPIs.</p></dd></dl> + + + <a + id="x1-170001r1"></a> +<!--l. 12--><div class="longtable"> <table id="TBL-68" class="longtable" + +><colgroup id="TBL-68-1g"><col +id="TBL-68-1" /><col +id="TBL-68-2" /><col +id="TBL-68-3" /><col +id="TBL-68-4" /><col +id="TBL-68-5" /><col +id="TBL-68-6" /><col +id="TBL-68-7" /></colgroup> +<tr + style="vertical-align:baseline;" id="TBL-68-1-"><td colspan="7" style="white-space:nowrap; text-align:center;" id="TBL-68-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"> <div class="caption" +><span class="id">Table D.1: </span><span +class="content">Features in EAPIs</span></div><!--tex4ht:label?: x1-170001r1 --> </div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-68-2-"><td colspan="7" style="white-space:nowrap; text-align:left;" id="TBL-68-2-1" +class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-68-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-68-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-68-3-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Reference</span></div> </td><td colspan="5" style="white-space:nowrap; text-align:center;" id="TBL-68-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-68-4-"><td style="white-space:nowrap; text-align:center;" id="TBL-68-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-68-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-68-4-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">0, 1, 2, 3, 4</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-68-4-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">5</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-68-4-5" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">6</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-68-4-6" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">7</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-68-4-7" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">8</div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-68-5-"><td colspan="7" style="white-space:nowrap; text-align:left;" id="TBL-68-5-1" +class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-68-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-6-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-68-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-7-1" +class="td11"></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-7-2" +class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-68-7-3" +class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-68-7-4" +class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-68-7-5" +class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-68-7-6" +class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-68-7-7" +class="td11"> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-68-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-20-1" +class="td11"> <span +class="ectt-1000">package.mask </span>directory </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-20-2" +class="td11"> <a +href="#x1-320004.4">package-mask-dir</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-20-3" +class="td11"> + <!--l. 45--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-20-4" +class="td11"> + <!--l. 45--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-20-5" +class="td11"> + <!--l. 45--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-20-6" +class="td11"> + <!--l. 45--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-20-7" +class="td11"> + <!--l. 45--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-21-1" +class="td11"> Less strict filenames in <span +class="ectt-1000">updates </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-21-2" +class="td11"> <a +href="#x1-360004.4.4">updates-filenames</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-21-3" +class="td11"> + <!--l. 48--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-21-4" +class="td11"> + <!--l. 48--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-21-5" +class="td11"> + <!--l. 48--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-21-6" +class="td11"> + <!--l. 48--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-21-7" +class="td11"> + <!--l. 48--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-22-1" +class="td11"> Profile files as directories </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-22-2" +class="td11"> <a +href="#x1-480005.2.5">profile-file-dirs</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-22-3" +class="td11"> + <!--l. 51--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-22-4" +class="td11"> + <!--l. 51--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-22-5" +class="td11"> + <!--l. 51--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-22-6" +class="td11"> + <!--l. 51--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-22-7" +class="td11"> + <!--l. 51--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-23-1" +class="td11"> <span +class="ectt-1000">package.provided </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-23-2" +class="td11"> <a +href="#x1-520005.2.9">package-provided</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-23-3" +class="td11"> + <!--l. 54--><p class="noindent" >Optional </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-23-4" +class="td11"> + <!--l. 54--><p class="noindent" >Optional </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-23-5" +class="td11"> + <!--l. 54--><p class="noindent" >Optional </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-23-6" +class="td11"> + <!--l. 54--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-23-7" +class="td11"> + <!--l. 54--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-24-1" +class="td11"> Stable use masking/forcing </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-24-2" +class="td11"> <a +href="#x1-540005.2.11">stablemask</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-24-3" +class="td11"> + <!--l. 57--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-24-4" +class="td11"> + <!--l. 57--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-24-5" +class="td11"> + <!--l. 57--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-24-6" +class="td11"> + <!--l. 57--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-24-7" +class="td11"> + <!--l. 57--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-25-1" +class="td11"> Bash version </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-25-2" +class="td11"> <a +href="#x1-580006">bash-version</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-25-3" +class="td11"> + <!--l. 60--><p class="noindent" >3.2 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-25-4" +class="td11"> + <!--l. 60--><p class="noindent" >3.2 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-25-5" +class="td11"> + <!--l. 60--><p class="noindent" >4.2 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-25-6" +class="td11"> + <!--l. 60--><p class="noindent" >4.2 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-25-7" +class="td11"> + <!--l. 60--><p class="noindent" >5.0 </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-26-1" +class="td11"> <span +class="ectt-1000">failglob </span>in global scope </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-26-2" +class="td11"> <a +href="#x1-580006">failglob</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-26-3" +class="td11"> + <!--l. 63--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-26-4" +class="td11"> + <!--l. 63--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-26-5" +class="td11"> + <!--l. 63--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-26-6" +class="td11"> + <!--l. 63--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-26-7" +class="td11"> + <!--l. 63--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-27-1" +class="td11"> <span +class="ectt-1000">IUSE </span>defaults </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-27-2" +class="td11"> <a +href="#x1-620007.3">iuse-defaults</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-27-3" +class="td11"> + <!--l. 66--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-27-4" +class="td11"> + <!--l. 66--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-27-5" +class="td11"> + <!--l. 66--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-27-6" +class="td11"> + <!--l. 66--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-27-7" +class="td11"> + <!--l. 66--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-28-1" +class="td11"> <span +class="ectt-1000">REQUIRED_USE </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-28-2" +class="td11"> <a +href="#x1-620007.3">required-use</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-28-3" +class="td11"> + <!--l. 69--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-28-4" +class="td11"> + <!--l. 69--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-28-5" +class="td11"> + <!--l. 69--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-28-6" +class="td11"> + <!--l. 69--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-28-7" +class="td11"> + <!--l. 69--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-29-1" +class="td11"> <span +class="ectt-1000">PROPERTIES </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-29-2" +class="td11"> <a +href="#x1-620007.3">properties</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-29-3" +class="td11"> + <!--l. 72--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-29-4" +class="td11"> + <!--l. 72--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-29-5" +class="td11"> + <!--l. 72--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-29-6" +class="td11"> + <!--l. 72--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-29-7" +class="td11"> + <!--l. 72--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-30-1" +class="td11"> <span +class="ectt-1000">SRC_URI </span>arrows </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-30-2" +class="td11"> <a +href="#x1-640007.3.2">src-uri-arrows</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-30-3" +class="td11"> + <!--l. 75--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-30-4" +class="td11"> + <!--l. 75--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-30-5" +class="td11"> + <!--l. 75--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-30-6" +class="td11"> + <!--l. 75--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-30-7" +class="td11"> + <!--l. 75--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-31-1" +class="td11"> Selective URI restrictions </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-31-2" +class="td11"> <a +href="#x1-640007.3.2">uri-restrict</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-31-3" +class="td11"> + <!--l. 78--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-31-4" +class="td11"> + <!--l. 78--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-31-5" +class="td11"> + <!--l. 78--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-31-6" +class="td11"> + <!--l. 78--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-31-7" +class="td11"> + <!--l. 78--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-32-1" +class="td11"> <span +class="ectt-1000">RDEPEND=DEPEND </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-32-2" +class="td11"> <a +href="#x1-690007.3.7">rdepend-depend</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-32-3" +class="td11"> + <!--l. 81--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-32-4" +class="td11"> + <!--l. 81--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-32-5" +class="td11"> + <!--l. 81--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-32-6" +class="td11"> + <!--l. 81--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-32-7" +class="td11"> + <!--l. 81--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-33-1" +class="td11"> <span +class="ectt-1000">DEFINED_PHASES </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-33-2" +class="td11"> <a +href="#x1-700007.4">defined-phases</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-33-3" +class="td11"> + <!--l. 84--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-33-4" +class="td11"> + <!--l. 84--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-33-5" +class="td11"> + <!--l. 84--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-33-6" +class="td11"> + <!--l. 84--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-33-7" +class="td11"> + <!--l. 84--><p class="noindent" >Yes </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-68-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-34-1" +class="td11"> <span +class="ectt-1000">BDEPEND </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-34-2" +class="td11"> <a +href="#x1-720008.1">bdepend</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-34-3" +class="td11"> + <!--l. 87--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-34-4" +class="td11"> + <!--l. 87--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-34-5" +class="td11"> + <!--l. 87--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-34-6" +class="td11"> + <!--l. 87--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-34-7" +class="td11"> + <!--l. 87--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-35-1" +class="td11"> <span +class="ectt-1000">IDEPEND </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-35-2" +class="td11"> <a +href="#x1-720008.1">idepend</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-35-3" +class="td11"> + <!--l. 90--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-35-4" +class="td11"> + <!--l. 90--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-35-5" +class="td11"> + <!--l. 90--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-35-6" +class="td11"> + <!--l. 90--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-35-7" +class="td11"> + <!--l. 90--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-36-1" +class="td11"> <span +class="ectt-1000">?? ( ) </span>groups </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-36-2" +class="td11"> <a +href="#x1-730008.2">at-most-one-of</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-36-3" +class="td11"> + <!--l. 93--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-36-4" +class="td11"> + <!--l. 93--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-36-5" +class="td11"> + <!--l. 93--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-36-6" +class="td11"> + <!--l. 93--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-36-7" +class="td11"> + <!--l. 93--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-37-1" +class="td11"> Empty <span +class="ectt-1000">||</span>, <span +class="ectt-1000">^^ </span>groups match </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-37-2" +class="td11"> <a +href="#x1-760008.2.3">empty-dep-groups</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-37-3" +class="td11"> + <!--l. 97--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-37-4" +class="td11"> + <!--l. 97--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-37-5" +class="td11"> + <!--l. 97--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-37-6" +class="td11"> + <!--l. 97--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-37-7" +class="td11"> + <!--l. 97--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-38-1" +class="td11"> Slot dependencies </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-38-2" +class="td11"> <a +href="#x1-820008.3.3">slot-deps</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-38-3" +class="td11"> + <!--l. 100--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-38-4" +class="td11"> + <!--l. 100--><p class="noindent" >Named + and + Operator </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-38-5" +class="td11"> + <!--l. 100--><p class="noindent" >Named + and + Operator </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-38-6" +class="td11"> + <!--l. 100--><p class="noindent" >Named + and + Operator </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-38-7" +class="td11"> + <!--l. 100--><p class="noindent" >Named + and + Operator </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-39-1" +class="td11"> Sub-slots </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-39-2" +class="td11"> <a +href="#x1-820008.3.3">sub-slot</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-39-3" +class="td11"> + <!--l. 103--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-39-4" +class="td11"> + <!--l. 103--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-39-5" +class="td11"> + <!--l. 103--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-39-6" +class="td11"> + <!--l. 103--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-39-7" +class="td11"> + <!--l. 103--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-40-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-68-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-41-1" +class="td11"> Use dependencies </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-41-2" +class="td11"> <a +href="#x1-790008.3">use-deps</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-41-3" +class="td11"> + <!--l. 106--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-41-4" +class="td11"> + <!--l. 106--><p class="noindent" >4-style </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-41-5" +class="td11"> + <!--l. 106--><p class="noindent" >4-style </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-41-6" +class="td11"> + <!--l. 106--><p class="noindent" >4-style </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-41-7" +class="td11"> + <!--l. 106--><p class="noindent" >4-style </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-42-1" +class="td11"> <span +class="ectt-1000">!</span> blockers </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-42-2" +class="td11"> <a +href="#x1-810008.3.2">bang-strength</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-42-3" +class="td11"> + <!--l. 109--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-42-4" +class="td11"> + <!--l. 109--><p class="noindent" >Weak </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-42-5" +class="td11"> + <!--l. 109--><p class="noindent" >Weak </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-42-6" +class="td11"> + <!--l. 109--><p class="noindent" >Weak </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-42-7" +class="td11"> + <!--l. 109--><p class="noindent" >Weak </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-43-1" +class="td11"> <span +class="ectt-1000">!!</span> blockers </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-43-2" +class="td11"> <a +href="#x1-810008.3.2">bang-strength</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-43-3" +class="td11"> + <!--l. 112--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-43-4" +class="td11"> + <!--l. 112--><p class="noindent" >Strong </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-43-5" +class="td11"> + <!--l. 112--><p class="noindent" >Strong </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-43-6" +class="td11"> + <!--l. 112--><p class="noindent" >Strong </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-43-7" +class="td11"> + <!--l. 112--><p class="noindent" >Strong </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-44-1" +class="td11"> Working directory in <span +class="ectt-1000">pkg_* </span>phases </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-44-2" +class="td11"> <a +href="#x1-860009.1.1">phase-function-dir</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-44-3" +class="td11"> + <!--l. 115--><p class="noindent" >Any </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-44-4" +class="td11"> + <!--l. 115--><p class="noindent" >Any </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-44-5" +class="td11"> + <!--l. 115--><p class="noindent" >Any </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-44-6" +class="td11"> + <!--l. 115--><p class="noindent" >Any </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-44-7" +class="td11"> + <!--l. 115--><p class="noindent" >Empty </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-45-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-68-45-2" +class="td11"> <a +href="#x1-860009.1.1">s-workdir-fallback</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-45-3" +class="td11"> + <!--l. 118--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-45-4" +class="td11"> + <!--l. 118--><p class="noindent" >Conditional </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-45-5" +class="td11"> + <!--l. 118--><p class="noindent" >Conditional </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-45-6" +class="td11"> + <!--l. 118--><p class="noindent" >Conditional </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-45-7" +class="td11"> + <!--l. 118--><p class="noindent" >Conditional </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-46-1" +class="td11"> <span +class="ectt-1000">pkg_pretend </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-46-2" +class="td11"> <a +href="#x1-870009.1.2">pkg-pretend</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-46-3" +class="td11"> + <!--l. 121--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-46-4" +class="td11"> + <!--l. 121--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-46-5" +class="td11"> + <!--l. 121--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-46-6" +class="td11"> + <!--l. 121--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-46-7" +class="td11"> + <!--l. 121--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-47-1" +class="td11"> <span +class="ectt-1000">src_prepare </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-47-2" +class="td11"> <a +href="#x1-900009.1.5">src-prepare</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-47-3" +class="td11"> + <!--l. 124--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-47-4" +class="td11"> + <!--l. 124--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-47-5" +class="td11"> + <!--l. 124--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-47-6" +class="td11"> + <!--l. 124--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-47-7" +class="td11"> + <!--l. 124--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-48-1" +class="td11"> <span +class="ectt-1000">src_prepare </span>style </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-48-2" +class="td11"> <a +href="#x1-900009.1.5">src-prepare</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-48-3" +class="td11"> + <!--l. 127--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-48-4" +class="td11"> + <!--l. 127--><p class="noindent" >no-op </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-48-5" +class="td11"> + <!--l. 127--><p class="noindent" >6 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-48-6" +class="td11"> + <!--l. 127--><p class="noindent" >6 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-48-7" +class="td11"> + <!--l. 127--><p class="noindent" >8 </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-49-1" +class="td11"> <span +class="ectt-1000">src_configure </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-49-2" +class="td11"> <a +href="#x1-910009.1.6">src-configure</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-49-3" +class="td11"> + <!--l. 130--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-49-4" +class="td11"> + <!--l. 130--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-49-5" +class="td11"> + <!--l. 130--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-49-6" +class="td11"> + <!--l. 130--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-49-7" +class="td11"> + <!--l. 130--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-50-1" +class="td11"> <span +class="ectt-1000">src_compile </span>style </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-50-2" +class="td11"> <a +href="#x1-920009.1.7">src-compile</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-50-3" +class="td11"> + <!--l. 133--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-50-4" +class="td11"> + <!--l. 133--><p class="noindent" >2 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-50-5" +class="td11"> + <!--l. 133--><p class="noindent" >2 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-50-6" +class="td11"> + <!--l. 133--><p class="noindent" >2 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-50-7" +class="td11"> + <!--l. 133--><p class="noindent" >2 </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-51-1" +class="td11"> Parallel tests </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-51-2" +class="td11"> <a +href="#x1-930009.1.8">parallel-tests</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-51-3" +class="td11"> + <!--l. 136--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-51-4" +class="td11"> + <!--l. 136--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-51-5" +class="td11"> + <!--l. 136--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-51-6" +class="td11"> + <!--l. 136--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-51-7" +class="td11"> + <!--l. 136--><p class="noindent" >Yes </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-68-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-52-1" +class="td11"> <span +class="ectt-1000">src_install </span>style </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-52-2" +class="td11"> <a +href="#x1-940009.1.9">src-install</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-52-3" +class="td11"> + <!--l. 139--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-52-4" +class="td11"> + <!--l. 139--><p class="noindent" >4 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-52-5" +class="td11"> + <!--l. 139--><p class="noindent" >6 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-52-6" +class="td11"> + <!--l. 139--><p class="noindent" >6 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-52-7" +class="td11"> + <!--l. 139--><p class="noindent" >6 </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-53-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-53-1" +class="td11"> <span +class="ectt-1000">pkg_info </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-53-2" +class="td11"> <a +href="#x1-1000009.1.15">pkg-info</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-53-3" +class="td11"> + <!--l. 142--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-53-4" +class="td11"> + <!--l. 142--><p class="noindent" >Both </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-53-5" +class="td11"> + <!--l. 142--><p class="noindent" >Both </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-53-6" +class="td11"> + <!--l. 142--><p class="noindent" >Both </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-53-7" +class="td11"> + <!--l. 142--><p class="noindent" >Both </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-54-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-54-1" +class="td11"> <span +class="ectt-1000">default_ </span>phase functions </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-54-2" +class="td11"> <a +href="#x1-1020009.1.17">default-phase-funcs</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-54-3" +class="td11"> + <!--l. 145--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-54-4" +class="td11"> + <!--l. 146--><p class="noindent" ><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>, + <span +class="ectt-1000">src_install</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-54-5" +class="td11"> + <!--l. 148--><p class="noindent" ><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>, + <span +class="ectt-1000">src_install</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-54-6" +class="td11"> + <!--l. 150--><p class="noindent" ><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>, + <span +class="ectt-1000">src_install</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-54-7" +class="td11"> + <!--l. 152--><p class="noindent" ><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>, + <span +class="ectt-1000">src_install</span> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-55-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-55-1" +class="td11"> Accumulate <span +class="ectt-1000">RESTRICT </span>etc. </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-55-2" +class="td11"> <a +href="#x1-10600010.2">accumulate-vars</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-55-3" +class="td11"> + <!--l. 156--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-55-4" +class="td11"> + <!--l. 156--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-55-5" +class="td11"> + <!--l. 156--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-55-6" +class="td11"> + <!--l. 156--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-55-7" +class="td11"> + <!--l. 156--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-56-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-56-1" +class="td11"> <span +class="ectt-1000">AA </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-56-2" +class="td11"> <a +href="#x1-109001r1">aa</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-56-3" +class="td11"> + <!--l. 159--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-56-4" +class="td11"> + <!--l. 159--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-56-5" +class="td11"> + <!--l. 159--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-56-6" +class="td11"> + <!--l. 159--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-56-7" +class="td11"> + <!--l. 159--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-57-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-57-1" +class="td11"> <span +class="ectt-1000">PORTDIR </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-57-2" +class="td11"> <a +href="#x1-109001r1">portdir</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-57-3" +class="td11"> + <!--l. 162--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-57-4" +class="td11"> + <!--l. 162--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-57-5" +class="td11"> + <!--l. 162--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-57-6" +class="td11"> + <!--l. 162--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-57-7" +class="td11"> + <!--l. 162--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-58-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-58-1" +class="td11"> <span +class="ectt-1000">ECLASSDIR </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-58-2" +class="td11"> <a +href="#x1-109001r1">eclassdir</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-58-3" +class="td11"> + <!--l. 165--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-58-4" +class="td11"> + <!--l. 165--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-58-5" +class="td11"> + <!--l. 165--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-58-6" +class="td11"> + <!--l. 165--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-58-7" +class="td11"> + <!--l. 165--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-59-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-59-1" +class="td11"> <span +class="ectt-1000">SYSROOT</span>, <span +class="ectt-1000">ESYSROOT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-59-2" +class="td11"> <a +href="#x1-109001r1">sysroot</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-59-3" +class="td11"> + <!--l. 168--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-59-4" +class="td11"> + <!--l. 168--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-59-5" +class="td11"> + <!--l. 168--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-59-6" +class="td11"> + <!--l. 168--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-59-7" +class="td11"> + <!--l. 168--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-60-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-60-1" +class="td11"> <span +class="ectt-1000">BROOT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-60-2" +class="td11"> <a +href="#x1-109001r1">broot</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-60-3" +class="td11"> + <!--l. 171--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-60-4" +class="td11"> + <!--l. 171--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-60-5" +class="td11"> + <!--l. 171--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-60-6" +class="td11"> + <!--l. 171--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-60-7" +class="td11"> + <!--l. 171--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-61-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-61-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-68-62-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-62-1" +class="td11"> <span +class="ectt-1000">DESTTREE </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-62-2" +class="td11"> <a +href="#x1-109001r1">desttree</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-62-3" +class="td11"> + <!--l. 174--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-62-4" +class="td11"> + <!--l. 174--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-62-5" +class="td11"> + <!--l. 174--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-62-6" +class="td11"> + <!--l. 174--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-62-7" +class="td11"> + <!--l. 174--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-63-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-63-1" +class="td11"> <span +class="ectt-1000">INSDESTTREE </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-63-2" +class="td11"> <a +href="#x1-109001r1">insdesttree</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-63-3" +class="td11"> + <!--l. 177--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-63-4" +class="td11"> + <!--l. 177--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-63-5" +class="td11"> + <!--l. 177--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-63-6" +class="td11"> + <!--l. 177--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-63-7" +class="td11"> + <!--l. 177--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-64-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-64-1" +class="td11"> <span +class="ectt-1000">KV </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-64-2" +class="td11"> <a +href="#x1-109001r1">kv</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-64-3" +class="td11"> + <!--l. 180--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-64-4" +class="td11"> + <!--l. 180--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-64-5" +class="td11"> + <!--l. 180--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-64-6" +class="td11"> + <!--l. 180--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-64-7" +class="td11"> + <!--l. 180--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-65-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-65-1" +class="td11"> <span +class="ectt-1000">EBUILD_PHASE_FUNC </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-65-2" +class="td11"> <a +href="#x1-109001r1">ebuild-phase-func</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-65-3" +class="td11"> + <!--l. 183--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-65-4" +class="td11"> + <!--l. 183--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-65-5" +class="td11"> + <!--l. 183--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-65-6" +class="td11"> + <!--l. 183--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-65-7" +class="td11"> + <!--l. 183--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-66-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-66-1" +class="td11"> <span +class="ectt-1000">MERGE_TYPE </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-66-2" +class="td11"> <a +href="#x1-109001r1">merge-type</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-66-3" +class="td11"> + <!--l. 186--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-66-4" +class="td11"> + <!--l. 186--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-66-5" +class="td11"> + <!--l. 186--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-66-6" +class="td11"> + <!--l. 186--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-66-7" +class="td11"> + <!--l. 186--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-67-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-67-1" +class="td11"> <span +class="ectt-1000">ENV_UNSET </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-67-2" +class="td11"> <a +href="#x1-10900011.1">env-unset</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-67-3" +class="td11"> + <!--l. 189--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-67-4" +class="td11"> + <!--l. 189--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-67-5" +class="td11"> + <!--l. 189--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-67-6" +class="td11"> + <!--l. 189--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-67-7" +class="td11"> + <!--l. 189--><p class="noindent" >Yes </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-68-68-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-68-1" +class="td11"> Sane locale settings </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-68-2" +class="td11"> <a +href="#x1-10900011.1">locale-settings</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-68-3" +class="td11"> + <!--l. 192--><p class="noindent" >Undefined </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-68-4" +class="td11"> + <!--l. 192--><p class="noindent" >Undefined </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-68-5" +class="td11"> + <!--l. 192--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-68-6" +class="td11"> + <!--l. 192--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-68-7" +class="td11"> + <!--l. 192--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-69-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-69-1" +class="td11"> Profile <span +class="ectt-1000">IUSE </span>injection </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-69-2" +class="td11"> <a +href="#x1-11000011.1.1">profile-iuse-inject</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-69-3" +class="td11"> + <!--l. 195--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-69-4" +class="td11"> + <!--l. 195--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-69-5" +class="td11"> + <!--l. 195--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-69-6" +class="td11"> + <!--l. 195--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-69-7" +class="td11"> + <!--l. 195--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-70-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-70-1" +class="td11"> <span +class="ectt-1000">REPLACING_VERSIONS </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-70-2" +class="td11"> <a +href="#x1-11100011.1.2">replace-version-vars</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-70-3" +class="td11"> + <!--l. 198--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-70-4" +class="td11"> + <!--l. 198--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-70-5" +class="td11"> + <!--l. 198--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-70-6" +class="td11"> + <!--l. 198--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-70-7" +class="td11"> + <!--l. 198--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-71-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-71-1" +class="td11"> <span +class="ectt-1000">REPLACED_BY_VERSION </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-71-2" +class="td11"> <a +href="#x1-11100011.1.2">replace-version-vars</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-71-3" +class="td11"> + <!--l. 201--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-71-4" +class="td11"> + <!--l. 201--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-71-5" +class="td11"> + <!--l. 201--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-71-6" +class="td11"> + <!--l. 201--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-71-7" +class="td11"> + <!--l. 201--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-72-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-72-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-68-72-2" +class="td11"> <a +href="#x1-11200011.1.3">offset-prefix-vars</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-72-3" +class="td11"> + <!--l. 204--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-72-4" +class="td11"> + <!--l. 204--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-72-5" +class="td11"> + <!--l. 204--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-72-6" +class="td11"> + <!--l. 204--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-72-7" +class="td11"> + <!--l. 204--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-73-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-73-1" +class="td11"> Trailing slash in <span +class="ectt-1000">D </span>etc. </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-73-2" +class="td11"> <a +href="#x1-11300011.1.4">trailing-slash</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-73-3" +class="td11"> + <!--l. 207--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-73-4" +class="td11"> + <!--l. 207--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-73-5" +class="td11"> + <!--l. 207--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-73-6" +class="td11"> + <!--l. 207--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-73-7" +class="td11"> + <!--l. 207--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-74-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-74-1" +class="td11"> GNU <span +class="ectt-1000">patch </span>version </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-74-2" +class="td11"> <a +href="#x1-11800012.1.1">gnu-patch</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-74-3" +class="td11"> + <!--l. 210--><p class="noindent" >Any </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-74-4" +class="td11"> + <!--l. 210--><p class="noindent" >Any </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-74-5" +class="td11"> + <!--l. 210--><p class="noindent" >Any </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-74-6" +class="td11"> + <!--l. 210--><p class="noindent" >2.7 </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-74-7" +class="td11"> + <!--l. 210--><p class="noindent" >2.7 </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-75-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-75-1" +class="td11"> <span +class="ectt-1000">find </span>is GNU? </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-75-2" +class="td11"> <a +href="#x1-11800012.1.1">gnu-find</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-75-3" +class="td11"> + <!--l. 213--><p class="noindent" >Undefined </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-75-4" +class="td11"> + <!--l. 213--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-75-5" +class="td11"> + <!--l. 213--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-75-6" +class="td11"> + <!--l. 213--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-75-7" +class="td11"> + <!--l. 213--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-76-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-76-1" +class="td11"> Most utilities die </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-76-2" +class="td11"> <a +href="#x1-12100012.3.1">die-on-failure</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-76-3" +class="td11"> + <!--l. 216--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-76-4" +class="td11"> + <!--l. 216--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-76-5" +class="td11"> + <!--l. 216--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-76-6" +class="td11"> + <!--l. 216--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-76-7" +class="td11"> + <!--l. 216--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-77-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-77-1" +class="td11"> <span +class="ectt-1000">nonfatal </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-77-2" +class="td11"> <a +href="#x1-12100012.3.1">nonfatal</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-77-3" +class="td11"> + <!--l. 219--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-77-4" +class="td11"> + <!--l. 219--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-77-5" +class="td11"> + <!--l. 219--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-77-6" +class="td11"> + <!--l. 219--><p class="noindent" >Function + / + external </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-77-7" +class="td11"> + <!--l. 219--><p class="noindent" >Function + / + external </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-78-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-78-1" +class="td11"> <span +class="ectt-1000">dohard </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-78-2" +class="td11"> <a +href="#x1-12200012.3.2">banned-commands</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-78-3" +class="td11"> + <!--l. 222--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-78-4" +class="td11"> + <!--l. 222--><p class="noindent" >Banned </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-78-5" +class="td11"> + <!--l. 222--><p class="noindent" >Banned </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-78-6" +class="td11"> + <!--l. 222--><p class="noindent" >Banned </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-78-7" +class="td11"> + <!--l. 222--><p class="noindent" >Banned </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-79-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-79-1" +class="td11"> <span +class="ectt-1000">dosed </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-79-2" +class="td11"> <a +href="#x1-12200012.3.2">banned-commands</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-79-3" +class="td11"> + <!--l. 225--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-79-4" +class="td11"> + <!--l. 225--><p class="noindent" >Banned </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-79-5" +class="td11"> + <!--l. 225--><p class="noindent" >Banned </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-79-6" +class="td11"> + <!--l. 225--><p class="noindent" >Banned </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-79-7" +class="td11"> + <!--l. 225--><p class="noindent" >Banned </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-80-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-80-1" +class="td11"> <span +class="ectt-1000">einstall </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-80-2" +class="td11"> <a +href="#x1-12200012.3.2">banned-commands</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-80-3" +class="td11"> + <!--l. 228--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-80-4" +class="td11"> + <!--l. 228--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-80-5" +class="td11"> + <!--l. 228--><p class="noindent" >Banned </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-80-6" +class="td11"> + <!--l. 228--><p class="noindent" >Banned </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-80-7" +class="td11"> + <!--l. 228--><p class="noindent" >Banned </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-81-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-81-1" +class="td11"> <span +class="ectt-1000">dohtml </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-81-2" +class="td11"> <a +href="#x1-12200012.3.2">banned-commands</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-81-3" +class="td11"> + <!--l. 231--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-81-4" +class="td11"> + <!--l. 231--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-81-5" +class="td11"> + <!--l. 231--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-81-6" +class="td11"> + <!--l. 231--><p class="noindent" >Banned </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-81-7" +class="td11"> + <!--l. 231--><p class="noindent" >Banned </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-82-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-82-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-68-83-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-83-1" +class="td11"> <span +class="ectt-1000">dolib </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-83-2" +class="td11"> <a +href="#x1-12200012.3.2">banned-commands</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-83-3" +class="td11"> + <!--l. 234--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-83-4" +class="td11"> + <!--l. 234--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-83-5" +class="td11"> + <!--l. 234--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-83-6" +class="td11"> + <!--l. 234--><p class="noindent" >Banned </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-83-7" +class="td11"> + <!--l. 234--><p class="noindent" >Banned </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-84-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-84-1" +class="td11"> <span +class="ectt-1000">libopts </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-84-2" +class="td11"> <a +href="#x1-12200012.3.2">banned-commands</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-84-3" +class="td11"> + <!--l. 237--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-84-4" +class="td11"> + <!--l. 237--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-84-5" +class="td11"> + <!--l. 237--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-84-6" +class="td11"> + <!--l. 237--><p class="noindent" >Banned </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-84-7" +class="td11"> + <!--l. 237--><p class="noindent" >Banned </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-85-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-85-1" +class="td11"> <span +class="ectt-1000">useq </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-85-2" +class="td11"> <a +href="#x1-12200012.3.2">banned-commands</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-85-3" +class="td11"> + <!--l. 240--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-85-4" +class="td11"> + <!--l. 240--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-85-5" +class="td11"> + <!--l. 240--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-85-6" +class="td11"> + <!--l. 240--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-85-7" +class="td11"> + <!--l. 240--><p class="noindent" >Banned </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-68-86-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-86-1" +class="td11"> <span +class="ectt-1000">hasv </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-86-2" +class="td11"> <a +href="#x1-12200012.3.2">banned-commands</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-86-3" +class="td11"> + <!--l. 243--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-86-4" +class="td11"> + <!--l. 243--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-86-5" +class="td11"> + <!--l. 243--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-86-6" +class="td11"> + <!--l. 243--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-86-7" +class="td11"> + <!--l. 243--><p class="noindent" >Banned </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-87-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-87-1" +class="td11"> <span +class="ectt-1000">hasq </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-87-2" +class="td11"> <a +href="#x1-12200012.3.2">banned-commands</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-87-3" +class="td11"> + <!--l. 246--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-87-4" +class="td11"> + <!--l. 246--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-87-5" +class="td11"> + <!--l. 246--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-87-6" +class="td11"> + <!--l. 246--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-87-7" +class="td11"> + <!--l. 246--><p class="noindent" >Banned </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-88-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-88-1" +class="td11"> Query command options </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-88-2" +class="td11"> <a +href="#x1-12400012.3.4">pm-query-options</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-88-3" +class="td11"> + <!--l. 249--><p class="noindent" >None </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-88-4" +class="td11"> + <!--l. 249--><p class="noindent" ><span +class="ectt-1000">--host-root</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-88-5" +class="td11"> + <!--l. 249--><p class="noindent" ><span +class="ectt-1000">--host-root</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-88-6" +class="td11"> + <!--l. 249--><p class="noindent" ><span +class="ectt-1000">-b</span>, + <span +class="ectt-1000">-d</span>, + <span +class="ectt-1000">-r</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-88-7" +class="td11"> + <!--l. 250--><p class="noindent" ><span +class="ectt-1000">-b</span>, + <span +class="ectt-1000">-d</span>, + <span +class="ectt-1000">-r</span> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-89-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-89-1" +class="td11"> Output commands use stdout </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-89-2" +class="td11"> <a +href="#x1-12500012.3.5">output-no-stdout</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-89-3" +class="td11"> + <!--l. 253--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-89-4" +class="td11"> + <!--l. 253--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-89-5" +class="td11"> + <!--l. 253--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-89-6" +class="td11"> + <!--l. 253--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-89-7" +class="td11"> + <!--l. 253--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-90-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-90-1" +class="td11"> <span +class="ectt-1000">eqawarn </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-90-2" +class="td11"> <a +href="#x1-12500012.3.5">eqawarn</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-90-3" +class="td11"> + <!--l. 256--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-90-4" +class="td11"> + <!--l. 256--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-90-5" +class="td11"> + <!--l. 256--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-90-6" +class="td11"> + <!--l. 256--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-90-7" +class="td11"> + <!--l. 256--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-91-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-91-1" +class="td11"> <span +class="ectt-1000">die -n </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-91-2" +class="td11"> <a +href="#x1-12600012.3.6">nonfatal-die</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-91-3" +class="td11"> + <!--l. 259--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-91-4" +class="td11"> + <!--l. 259--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-91-5" +class="td11"> + <!--l. 259--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-91-6" +class="td11"> + <!--l. 259--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-91-7" +class="td11"> + <!--l. 259--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-92-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-92-1" +class="td11"> <span +class="ectt-1000">die </span>in subshell </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-92-2" +class="td11"> <a +href="#x1-12600012.3.6">subshell-die</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-92-3" +class="td11"> + <!--l. 262--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-92-4" +class="td11"> + <!--l. 262--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-92-5" +class="td11"> + <!--l. 262--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-92-6" +class="td11"> + <!--l. 262--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-92-7" +class="td11"> + <!--l. 262--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-93-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-93-1" +class="td11"> <span +class="ectt-1000">eapply </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-93-2" +class="td11"> <a +href="#x1-12700012.3.7">eapply</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-93-3" +class="td11"> + <!--l. 265--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-93-4" +class="td11"> + <!--l. 265--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-93-5" +class="td11"> + <!--l. 265--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-93-6" +class="td11"> + <!--l. 265--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-93-7" +class="td11"> + <!--l. 265--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-94-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-94-1" +class="td11"> <span +class="ectt-1000">eapply_user </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-94-2" +class="td11"> <a +href="#x1-12700012.3.7">eapply-user</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-94-3" +class="td11"> + <!--l. 268--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-94-4" +class="td11"> + <!--l. 268--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-94-5" +class="td11"> + <!--l. 268--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-94-6" +class="td11"> + <!--l. 268--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-94-7" +class="td11"> + <!--l. 268--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-95-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-95-1" +class="td11"> <span +class="ectt-1000">econf </span>arguments </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-95-2" +class="td11"> <a +href="#x1-12800012.3.8">econf-options</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-95-3" +class="td11"> + <!--l. 271--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-95-4" +class="td11"> + <!--l. 272--><p class="noindent" >disable + dependency + tracking, + disable + silent + rules </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-95-5" +class="td11"> + <!--l. 273--><p class="noindent" >disable + dependency + tracking, + disable + silent + rules, + docdir, + htmldir </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-95-6" +class="td11"> + <!--l. 274--><p class="noindent" >disable + dependency + tracking, + disable + silent + rules, + docdir, + htmldir, + with + sysroot </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-95-7" +class="td11"> + <!--l. 275--><p class="noindent" >disable + dependency + tracking, + disable + silent + rules, + disable + static, + datarootdir, + docdir, + htmldir, + with + sysroot </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-68-96-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-96-1" +class="td11"> <span +class="ectt-1000">dodoc -r </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-96-2" +class="td11"> <a +href="#x1-12900012.3.9">dodoc</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-96-3" +class="td11"> + <!--l. 279--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-96-4" +class="td11"> + <!--l. 279--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-96-5" +class="td11"> + <!--l. 279--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-96-6" +class="td11"> + <!--l. 279--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-96-7" +class="td11"> + <!--l. 279--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-97-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-97-1" +class="td11"> <span +class="ectt-1000">doheader </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-97-2" +class="td11"> <a +href="#x1-12900012.3.9">doheader</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-97-3" +class="td11"> + <!--l. 282--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-97-4" +class="td11"> + <!--l. 282--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-97-5" +class="td11"> + <!--l. 282--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-97-6" +class="td11"> + <!--l. 282--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-97-7" +class="td11"> + <!--l. 282--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-98-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-98-1" +class="td11"> <span +class="ectt-1000">doins </span>handles symlinks </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-98-2" +class="td11"> <a +href="#x1-12900012.3.9">doins</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-98-3" +class="td11"> + <!--l. 285--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-98-4" +class="td11"> + <!--l. 285--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-98-5" +class="td11"> + <!--l. 285--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-98-6" +class="td11"> + <!--l. 285--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-98-7" +class="td11"> + <!--l. 285--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-99-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-99-1" +class="td11"> <span +class="ectt-1000">doman </span>languages </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-99-2" +class="td11"> <a +href="#x1-12900012.3.9">doman-langs</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-99-3" +class="td11"> + <!--l. 288--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-99-4" +class="td11"> + <!--l. 288--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-99-5" +class="td11"> + <!--l. 288--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-99-6" +class="td11"> + <!--l. 288--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-99-7" +class="td11"> + <!--l. 288--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-100-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-100-1" +class="td11"> <span +class="ectt-1000">doman -i18n </span>precedence </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-100-2" +class="td11"> <a +href="#x1-12900012.3.9">doman-langs</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-100-3" +class="td11"> + <!--l. 291--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-100-4" +class="td11"> + <!--l. 291--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-100-5" +class="td11"> + <!--l. 291--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-100-6" +class="td11"> + <!--l. 291--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-100-7" +class="td11"> + <!--l. 291--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-101-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-101-1" +class="td11"> <span +class="ectt-1000">domo </span>destination path </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-101-2" +class="td11"> <a +href="#x1-12900012.3.9">domo-path</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-101-3" +class="td11"> + <!--l. 294--><p class="noindent" ><span +class="ectt-1000">${DESTTREE}</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-101-4" +class="td11"> + <!--l. 294--><p class="noindent" ><span +class="ectt-1000">${DESTTREE}</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-101-5" +class="td11"> + <!--l. 294--><p class="noindent" ><span +class="ectt-1000">${DESTTREE}</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-101-6" +class="td11"> + <!--l. 294--><p class="noindent" ><span +class="ectt-1000">/usr</span> </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-101-7" +class="td11"> + <!--l. 294--><p class="noindent" ><span +class="ectt-1000">/usr</span> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-102-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-102-1" +class="td11"> <span +class="ectt-1000">dosym -r </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-102-2" +class="td11"> <a +href="#x1-12900012.3.9">dosym-relative</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-102-3" +class="td11"> + <!--l. 297--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-102-4" +class="td11"> + <!--l. 297--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-102-5" +class="td11"> + <!--l. 297--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-102-6" +class="td11"> + <!--l. 297--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-102-7" +class="td11"> + <!--l. 297--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-103-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-103-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-68-104-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-104-1" +class="td11"> <span +class="ectt-1000">new* </span>support stdin </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-104-2" +class="td11"> <a +href="#x1-12900012.3.9">newfoo-stdin</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-104-3" +class="td11"> + <!--l. 300--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-104-4" +class="td11"> + <!--l. 300--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-104-5" +class="td11"> + <!--l. 300--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-104-6" +class="td11"> + <!--l. 300--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-104-7" +class="td11"> + <!--l. 300--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-105-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-105-1" +class="td11"> <span +class="ectt-1000">insopts </span>affects misc. commands </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-105-2" +class="td11"> <a +href="#x1-13000012.3.10">insopts</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-105-3" +class="td11"> + <!--l. 303--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-105-4" +class="td11"> + <!--l. 303--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-105-5" +class="td11"> + <!--l. 303--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-105-6" +class="td11"> + <!--l. 303--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-105-7" +class="td11"> + <!--l. 303--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-106-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-106-1" +class="td11"> <span +class="ectt-1000">exeopts </span>affects <span +class="ectt-1000">doinitd </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-106-2" +class="td11"> <a +href="#x1-13000012.3.10">exeopts</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-106-3" +class="td11"> + <!--l. 306--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-106-4" +class="td11"> + <!--l. 306--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-106-5" +class="td11"> + <!--l. 306--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-106-6" +class="td11"> + <!--l. 306--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-106-7" +class="td11"> + <!--l. 306--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-107-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-107-1" +class="td11"> Controllable compression </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-107-2" +class="td11"> <a +href="#x1-13100012.3.11">docompress</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-107-3" +class="td11"> + <!--l. 309--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-107-4" +class="td11"> + <!--l. 309--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-107-5" +class="td11"> + <!--l. 309--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-107-6" +class="td11"> + <!--l. 309--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-107-7" +class="td11"> + <!--l. 309--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-108-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-108-1" +class="td11"> <span +class="ectt-1000">docompress </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-108-2" +class="td11"> <a +href="#x1-13100012.3.11">docompress</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-108-3" +class="td11"> + <!--l. 312--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-108-4" +class="td11"> + <!--l. 312--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-108-5" +class="td11"> + <!--l. 312--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-108-6" +class="td11"> + <!--l. 312--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-108-7" +class="td11"> + <!--l. 312--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-109-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-109-1" +class="td11"> Controllable stripping </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-109-2" +class="td11"> <a +href="#x1-13100012.3.11">dostrip</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-109-3" +class="td11"> + <!--l. 315--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-109-4" +class="td11"> + <!--l. 315--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-109-5" +class="td11"> + <!--l. 315--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-109-6" +class="td11"> + <!--l. 315--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-109-7" +class="td11"> + <!--l. 315--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-110-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-110-1" +class="td11"> <span +class="ectt-1000">dostrip </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-110-2" +class="td11"> <a +href="#x1-13100012.3.11">dostrip</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-110-3" +class="td11"> + <!--l. 318--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-110-4" +class="td11"> + <!--l. 318--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-110-5" +class="td11"> + <!--l. 318--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-110-6" +class="td11"> + <!--l. 318--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-110-7" +class="td11"> + <!--l. 318--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-111-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-111-1" +class="td11"> <span +class="ectt-1000">usev </span>second arg </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-111-2" +class="td11"> <a +href="#x1-13200012.3.12">usev</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-111-3" +class="td11"> + <!--l. 321--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-111-4" +class="td11"> + <!--l. 321--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-111-5" +class="td11"> + <!--l. 321--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-111-6" +class="td11"> + <!--l. 321--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-111-7" +class="td11"> + <!--l. 321--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-112-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-112-1" +class="td11"> <span +class="ectt-1000">use_with </span>empty third arg </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-112-2" +class="td11"> <a +href="#x1-13200012.3.12">use-with</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-112-3" +class="td11"> + <!--l. 324--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-112-4" +class="td11"> + <!--l. 324--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-112-5" +class="td11"> + <!--l. 324--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-112-6" +class="td11"> + <!--l. 324--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-112-7" +class="td11"> + <!--l. 324--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-113-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-113-1" +class="td11"> <span +class="ectt-1000">usex </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-113-2" +class="td11"> <a +href="#x1-13200012.3.12">usex</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-113-3" +class="td11"> + <!--l. 327--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-113-4" +class="td11"> + <!--l. 327--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-113-5" +class="td11"> + <!--l. 327--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-113-6" +class="td11"> + <!--l. 327--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-113-7" +class="td11"> + <!--l. 327--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-114-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-114-1" +class="td11"> <span +class="ectt-1000">in_iuse </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-114-2" +class="td11"> <a +href="#x1-13200012.3.12">in-iuse</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-114-3" +class="td11"> + <!--l. 330--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-114-4" +class="td11"> + <!--l. 330--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-114-5" +class="td11"> + <!--l. 330--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-114-6" +class="td11"> + <!--l. 330--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-114-7" +class="td11"> + <!--l. 330--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-115-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-115-1" +class="td11"> <span +class="ectt-1000">ver_* </span>commands </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-115-2" +class="td11"> <a +href="#x1-13400012.3.14">ver-commands</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-115-3" +class="td11"> + <!--l. 333--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-115-4" +class="td11"> + <!--l. 333--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-115-5" +class="td11"> + <!--l. 333--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-115-6" +class="td11"> + <!--l. 333--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-115-7" +class="td11"> + <!--l. 333--><p class="noindent" >Yes </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-68-116-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-116-1" +class="td11"> <span +class="ectt-1000">unpack </span>absolute paths </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-116-2" +class="td11"> <a +href="#x1-13500012.3.15">unpack-absolute</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-116-3" +class="td11"> + <!--l. 336--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-116-4" +class="td11"> + <!--l. 336--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-116-5" +class="td11"> + <!--l. 336--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-116-6" +class="td11"> + <!--l. 336--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-116-7" +class="td11"> + <!--l. 336--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-117-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-117-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-68-117-2" +class="td11"> <a +href="#x1-13500012.3.15">unpack-extensions</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-117-3" +class="td11"> + <!--l. 339--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-117-4" +class="td11"> + <!--l. 339--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-117-5" +class="td11"> + <!--l. 339--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-117-6" +class="td11"> + <!--l. 339--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-117-7" +class="td11"> + <!--l. 339--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-118-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-118-1" +class="td11"> <span +class="ectt-1000">unpack </span>support for <span +class="ectt-1000">txz </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-118-2" +class="td11"> <a +href="#x1-13500012.3.15">unpack-extensions</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-118-3" +class="td11"> + <!--l. 342--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-118-4" +class="td11"> + <!--l. 342--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-118-5" +class="td11"> + <!--l. 342--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-118-6" +class="td11"> + <!--l. 342--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-118-7" +class="td11"> + <!--l. 342--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-119-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-119-1" +class="td11"> <span +class="ectt-1000">unpack </span>support for <span +class="ectt-1000">7z </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-119-2" +class="td11"> <a +href="#x1-13500012.3.15">unpack-extensions</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-119-3" +class="td11"> + <!--l. 345--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-119-4" +class="td11"> + <!--l. 345--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-119-5" +class="td11"> + <!--l. 345--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-119-6" +class="td11"> + <!--l. 345--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-119-7" +class="td11"> + <!--l. 345--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-120-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-120-1" +class="td11"> <span +class="ectt-1000">unpack </span>support for <span +class="ectt-1000">lha </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-120-2" +class="td11"> <a +href="#x1-13500012.3.15">unpack-extensions</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-120-3" +class="td11"> + <!--l. 348--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-120-4" +class="td11"> + <!--l. 348--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-120-5" +class="td11"> + <!--l. 348--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-120-6" +class="td11"> + <!--l. 348--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-120-7" +class="td11"> + <!--l. 348--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-121-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-121-1" +class="td11"> <span +class="ectt-1000">unpack </span>support for <span +class="ectt-1000">rar </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-121-2" +class="td11"> <a +href="#x1-13500012.3.15">unpack-extensions</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-121-3" +class="td11"> + <!--l. 351--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-121-4" +class="td11"> + <!--l. 351--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-121-5" +class="td11"> + <!--l. 351--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-121-6" +class="td11"> + <!--l. 351--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-121-7" +class="td11"> + <!--l. 351--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-122-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-122-1" +class="td11"> <span +class="ectt-1000">unpack </span>case-insensitive </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-122-2" +class="td11"> <a +href="#x1-13500012.3.15">unpack-ignore-case</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-122-3" +class="td11"> + <!--l. 354--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-122-4" +class="td11"> + <!--l. 354--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-122-5" +class="td11"> + <!--l. 354--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-122-6" +class="td11"> + <!--l. 354--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-122-7" +class="td11"> + <!--l. 354--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-123-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-123-1" +class="td11"> <span +class="ectt-1000">default </span>function </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-123-2" +class="td11"> <a +href="#x1-13500012.3.15">default-func</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-123-3" +class="td11"> + <!--l. 357--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-123-4" +class="td11"> + <!--l. 357--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-123-5" +class="td11"> + <!--l. 357--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-123-6" +class="td11"> + <!--l. 357--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-123-7" +class="td11"> + <!--l. 357--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-124-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-124-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-68-125-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-125-1" +class="td11"> <span +class="ectt-1000">einstalldocs </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-125-2" +class="td11"> <a +href="#x1-13500012.3.15">einstalldocs</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-125-3" +class="td11"> + <!--l. 360--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-125-4" +class="td11"> + <!--l. 360--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-125-5" +class="td11"> + <!--l. 360--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-125-6" +class="td11"> + <!--l. 360--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-125-7" +class="td11"> + <!--l. 360--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-126-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-126-1" +class="td11"> <span +class="ectt-1000">get_libdir </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-68-126-2" +class="td11"> <a +href="#x1-13500012.3.15">get-libdir</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-126-3" +class="td11"> + <!--l. 363--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-126-4" +class="td11"> + <!--l. 363--><p class="noindent" >No </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-126-5" +class="td11"> + <!--l. 363--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-126-6" +class="td11"> + <!--l. 363--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-126-7" +class="td11"> + <!--l. 363--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-127-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-127-1" +class="td11"> File mtimes preserved </td><td style="white-space:nowrap; text-align:left;" id="TBL-68-127-2" +class="td11"> <a +href="#x1-14500013.3.2">mtime-preserve</a> </td><td style="white-space:normal; text-align:left;" id="TBL-68-127-3" +class="td11"> + <!--l. 366--><p class="noindent" >* </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-127-4" +class="td11"> + <!--l. 366--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-127-5" +class="td11"> + <!--l. 366--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-127-6" +class="td11"> + <!--l. 366--><p class="noindent" >Yes </p></td><td style="white-space:normal; text-align:left;" id="TBL-68-127-7" +class="td11"> + <!--l. 366--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-128-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-128-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-68-129-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-129-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-130-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-130-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-68-131-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-131-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-132-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-132-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-68-17-"><td colspan="7" style="white-space:nowrap; text-align:left;" id="TBL-68-17-1" +class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span></td></tr><tr + style="vertical-align:baseline;" id="TBL-68-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-18-1" +class="td11"> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-68-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-68-19-1" +class="td11"> </td></tr> +</table></div> + + + + + +<a + id="x1-170002r246"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix E</span><br /><a + id="x1-171000E"></a>Differences Between EAPIs</h2> +<dl class="trivlist"><dt class="trivlist"> +</dt><dd +class="trivlist"> +<!--l. 373--><p class="nopar" ><span +class="ecbx-1000">Note: </span>This chapter is informative and for convenience only. Refer to the main text for +specifics.</p></dd></dl> +<h3 class="sectionHead"><a + id="x1-172000E"></a>EAPI 0</h3> +<!--l. 377--><p class="nopar" >EAPI 0 is the base EAPI. +</p><!--l. 379--><p class="nopar" > +</p> +<h3 class="sectionHead"><a + id="x1-173000E"></a>EAPI 1</h3> +<!--l. 381--><p class="nopar" >EAPI 1 is EAPI 0 with the following changes: +</p><!--l. 384--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">IUSE </span>defaults, <a +href="#x1-620007.3"><span +class="eccc1000-"><span +class="small-caps">iuse-defaults</span></span></a>. + </li> + <li class="compactitem">Slot dependencies, <a +href="#x1-820008.3.3"><span +class="eccc1000-"><span +class="small-caps">slot-deps</span></span></a>. + </li> + <li class="compactitem">Different <span +class="ectt-1000">src_compile </span>implementation, <a +href="#x1-920009.1.7"><span +class="eccc1000-"><span +class="small-caps">src-compile</span></span></a>.</li></ul> +<!--l. 389--><p class="nopar" > +</p> +<h3 class="sectionHead"><a + id="x1-174000E"></a>EAPI 2</h3> +<!--l. 391--><p class="nopar" >EAPI 2 is EAPI 1 with the following changes: +</p><!--l. 394--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">SRC_URI </span>arrows, <a +href="#x1-640007.3.2"><span +class="eccc1000-"><span +class="small-caps">src-uri-arrows</span></span></a>. + </li> + <li class="compactitem">Use dependencies, <a +href="#x1-790008.3"><span +class="eccc1000-"><span +class="small-caps">use-deps</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">!</span> and <span +class="ectt-1000">!!</span> blockers, <a +href="#x1-810008.3.2"><span +class="eccc1000-"><span +class="small-caps">bang-strength</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">src_prepare</span>, <a +href="#x1-900009.1.5"><span +class="eccc1000-"><span +class="small-caps">src-prepare</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure</span>, <a +href="#x1-910009.1.6"><span +class="eccc1000-"><span +class="small-caps">src-configure</span></span></a>. + </li> + <li class="compactitem">Different <span +class="ectt-1000">src_compile </span>implementation, <a +href="#x1-920009.1.7"><span +class="eccc1000-"><span +class="small-caps">src-compile</span></span></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>; <a +href="#x1-1020009.1.17"><span +class="eccc1000-"><span +class="small-caps">default-phase-funcs</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">doman </span>language detection by filename, <a +href="#x1-12900012.3.9"><span +class="eccc1000-"><span +class="small-caps">doman-langs</span></span></a>. + + + </li> + <li class="compactitem"><span +class="ectt-1000">default </span>function, <a +href="#x1-13500012.3.15"><span +class="eccc1000-"><span +class="small-caps">default-func</span></span></a>.</li></ul> +<!--l. 406--><p class="nopar" > +</p> +<h3 class="sectionHead"><a + id="x1-175000E"></a>EAPI 3</h3> +<!--l. 408--><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>, <a +href="#x1-11200011.1.3"><span +class="eccc1000-"><span +class="small-caps">offset-prefix-vars</span></span></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>, <a +href="#x1-13500012.3.15"><span +class="eccc1000-"><span +class="small-caps">unpack-extensions</span></span></a>. + </li> + <li class="compactitem">File modification times are preserved, <a +href="#x1-14500013.3.2"><span +class="eccc1000-"><span +class="small-caps">mtime-preserve</span></span></a>.</li></ul> +<!--l. 416--><p class="nopar" > +</p> +<h3 class="sectionHead"><a + id="x1-176000E"></a>EAPI 4</h3> +<!--l. 418--><p class="nopar" >EAPI 4 is EAPI 3 with the following changes: +</p><!--l. 421--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">REQUIRED_USE</span>, <a +href="#x1-620007.3"><span +class="eccc1000-"><span +class="small-caps">required-use</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">PROPERTIES </span>support is mandatory, <a +href="#x1-620007.3"><span +class="eccc1000-"><span +class="small-caps">properties</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">RDEPEND=DEPEND </span>no longer done, <a +href="#x1-690007.3.7"><span +class="eccc1000-"><span +class="small-caps">rdepend-depend</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">DEFINED_PHASES </span>support is mandatory, <a +href="#x1-700007.4"><span +class="eccc1000-"><span +class="small-caps">defined-phases</span></span></a>. + </li> + <li class="compactitem">Use dependency defaults, <a +href="#x1-830008.3.4"><span +class="eccc1000-"><span +class="small-caps">use-dep-defaults</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">S </span>to <span +class="ectt-1000">WORKDIR </span>fallback restricted, <a +href="#x1-860009.1.1"><span +class="eccc1000-"><span +class="small-caps">s-workdir-fallback</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend</span>, <a +href="#x1-870009.1.2"><span +class="eccc1000-"><span +class="small-caps">pkg-pretend</span></span></a>. + </li> + <li class="compactitem">Default <span +class="ectt-1000">src_install </span>no longer a no-op, <a +href="#x1-940009.1.9"><span +class="eccc1000-"><span +class="small-caps">src-install</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_info </span>can run on non-installed packages, <a +href="#x1-1000009.1.15"><span +class="eccc1000-"><span +class="small-caps">pkg-info</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">AA </span>is gone, <a +href="#x1-109001r1"><span +class="eccc1000-"><span +class="small-caps">aa</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">KV </span>is gone, <a +href="#x1-109001r1"><span +class="eccc1000-"><span +class="small-caps">kv</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">MERGE_TYPE</span>, <a +href="#x1-109001r1"><span +class="eccc1000-"><span +class="small-caps">merge-type</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">REPLACING_VERSIONS </span>and <span +class="ectt-1000">REPLACED_BY_VERSION</span>, <a +href="#x1-11100011.1.2"><span +class="eccc1000-"><span +class="small-caps">replace-version-vars</span></span></a>. + </li> + <li class="compactitem">Utilities now die on failure, <a +href="#x1-12100012.3.1"><span +class="eccc1000-"><span +class="small-caps">die-on-failure</span></span></a>, unless called under <span +class="ectt-1000">nonfatal</span>, <a +href="#x1-12100012.3.1"><span +class="eccc1000-"><span +class="small-caps">nonfatal</span></span></a> + </li> + <li class="compactitem"><span +class="ectt-1000">dohard</span>, <span +class="ectt-1000">dosed </span>banned, <a +href="#x1-12200012.3.2"><span +class="eccc1000-"><span +class="small-caps">banned-commands</span></span></a>. + + + </li> + <li class="compactitem"><span +class="ectt-1000">econf </span>adds <span +class="ectt-1000">--disable-dependency-tracking</span>, <a +href="#x1-12800012.3.8"><span +class="eccc1000-"><span +class="small-caps">econf-options</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">dodoc -r </span>support, <a +href="#x1-12900012.3.9"><span +class="eccc1000-"><span +class="small-caps">dodoc</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">doins </span>supports symlinks, <a +href="#x1-12900012.3.9"><span +class="eccc1000-"><span +class="small-caps">doins</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">doman -i18n </span>option takes precedence, <a +href="#x1-12900012.3.9"><span +class="eccc1000-"><span +class="small-caps">doman-langs</span></span></a>. + </li> + <li class="compactitem">Controllable compression and <span +class="ectt-1000">docompress</span>, <a +href="#x1-13100012.3.11"><span +class="eccc1000-"><span +class="small-caps">docompress</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">use_with </span>and <span +class="ectt-1000">use_enable </span>support empty third argument, <a +href="#x1-13200012.3.12"><span +class="eccc1000-"><span +class="small-caps">use-with</span></span></a>.</li></ul> +<!--l. 445--><p class="nopar" > +</p> +<h3 class="sectionHead"><a + id="x1-177000E"></a>EAPI 5</h3> +<!--l. 447--><p class="nopar" >EAPI 5 is EAPI 4 with the following changes: +</p><!--l. 450--><p class="noindent" > + </p><ul> + <li class="compactitem">Stable use masking and forcing, <a +href="#x1-540005.2.11"><span +class="eccc1000-"><span +class="small-caps">stablemask</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">REQUIRED_USE </span>now supports <span +class="ectt-1000">??</span> groups, <a +href="#x1-730008.2"><span +class="eccc1000-"><span +class="small-caps">at-most-one-of</span></span></a>. + </li> + <li class="compactitem">Slot operator dependencies, <a +href="#x1-820008.3.3"><span +class="eccc1000-"><span +class="small-caps">slot-operator-deps</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">SLOT </span>now supports an optional sub-slot part, <a +href="#x1-820008.3.3"><span +class="eccc1000-"><span +class="small-caps">sub-slot</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">src_test </span>supports parallel tests, <a +href="#x1-930009.1.8"><span +class="eccc1000-"><span +class="small-caps">parallel-tests</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">EBUILD_PHASE_FUNC</span>, <a +href="#x1-109001r1"><span +class="eccc1000-"><span +class="small-caps">ebuild-phase-func</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">USE </span>is calculated differently, <a +href="#x1-11000011.1.1"><span +class="eccc1000-"><span +class="small-caps">profile-iuse-inject</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">find </span>is guaranteed to be GNU, <a +href="#x1-11800012.1.1"><span +class="eccc1000-"><span +class="small-caps">gnu-find</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">best_version </span>and <span +class="ectt-1000">has_version </span>support the <span +class="ectt-1000">--host-root </span>option, + <a +href="#x1-12400012.3.4"><span +class="eccc1000-"><span +class="small-caps">pm-query-options</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">econf </span>adds <span +class="ectt-1000">--disable-silent-rules</span>, <a +href="#x1-12800012.3.8"><span +class="eccc1000-"><span +class="small-caps">econf-options</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">doheader </span>and <span +class="ectt-1000">newheader </span>support, <a +href="#x1-12900012.3.9"><span +class="eccc1000-"><span +class="small-caps">doheader</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">new* </span>can read from standard input, <a +href="#x1-12900012.3.9"><span +class="eccc1000-"><span +class="small-caps">newfoo-stdin</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">usex </span>support, <a +href="#x1-13200012.3.12"><span +class="eccc1000-"><span +class="small-caps">usex</span></span></a>.</li></ul> +<!--l. 466--><p class="nopar" > +</p> +<h3 class="sectionHead"><a + id="x1-178000E"></a>EAPI 6</h3> +<!--l. 468--><p class="nopar" >EAPI 6 is EAPI 5 with the following changes: + + +</p><!--l. 471--><p class="noindent" > + </p><ul> + <li class="compactitem">Bash version is 4.2, <a +href="#x1-580006"><span +class="eccc1000-"><span +class="small-caps">bash-version</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">failglob </span>is enabled in global scope, <a +href="#x1-580006"><span +class="eccc1000-"><span +class="small-caps">failglob</span></span></a>. + </li> + <li class="compactitem">Default <span +class="ectt-1000">src_prepare </span>no longer a no-op, <a +href="#x1-900009.1.5"><span +class="eccc1000-"><span +class="small-caps">src-prepare</span></span></a>. + </li> + <li class="compactitem">Different <span +class="ectt-1000">src_install </span>implementation, <a +href="#x1-940009.1.9"><span +class="eccc1000-"><span +class="small-caps">src-install</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">LC_CTYPE </span>and <span +class="ectt-1000">LC_COLLATE </span>compatible with POSIX locale, <a +href="#x1-10900011.1"><span +class="eccc1000-"><span +class="small-caps">locale-settings</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">einstall </span>banned, <a +href="#x1-12200012.3.2"><span +class="eccc1000-"><span +class="small-caps">banned-commands</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">die </span>and <span +class="ectt-1000">assert </span>called with <span +class="ectt-1000">-n </span>respect <span +class="ectt-1000">nonfatal</span>, <a +href="#x1-12600012.3.6"><span +class="eccc1000-"><span +class="small-caps">nonfatal-die</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">eapply </span>support, <a +href="#x1-12700012.3.7"><span +class="eccc1000-"><span +class="small-caps">eapply</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">eapply_user </span>support, <a +href="#x1-12700012.3.7"><span +class="eccc1000-"><span +class="small-caps">eapply-user</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">econf </span>adds <span +class="ectt-1000">--docdir </span>and <span +class="ectt-1000">--htmldir</span>, <a +href="#x1-12800012.3.8"><span +class="eccc1000-"><span +class="small-caps">econf-options</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">in_iuse </span>support, <a +href="#x1-13200012.3.12"><span +class="eccc1000-"><span +class="small-caps">in-iuse</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">unpack </span>supports absolute and relative paths, <a +href="#x1-13500012.3.15"><span +class="eccc1000-"><span +class="small-caps">unpack-absolute</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">unpack </span>supports <span +class="ectt-1000">.txz</span>, <a +href="#x1-13500012.3.15"><span +class="eccc1000-"><span +class="small-caps">unpack-extensions</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">unpack </span>matches filename extensions case-insensitively, <a +href="#x1-13500012.3.15"><span +class="eccc1000-"><span +class="small-caps">unpack-ignore-case</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">einstalldocs </span>support, <a +href="#x1-13500012.3.15"><span +class="eccc1000-"><span +class="small-caps">einstalldocs</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">get_libdir </span>support, <a +href="#x1-13500012.3.15"><span +class="eccc1000-"><span +class="small-caps">get-libdir</span></span></a>.</li></ul> +<!--l. 489--><p class="nopar" > +</p> +<h3 class="sectionHead"><a + id="x1-179000E"></a>EAPI 7</h3> +<!--l. 491--><p class="nopar" >EAPI 7 is EAPI 6 with the following changes: +</p><!--l. 494--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">profiles/package.mask </span>can be a directory, <a +href="#x1-320004.4"><span +class="eccc1000-"><span +class="small-caps">package-mask-dir</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">package.mask</span>, <span +class="ectt-1000">package.use</span>, <span +class="ectt-1000">use.* </span>and <span +class="ectt-1000">package.use.* </span>in a profile can be directories, + <a +href="#x1-480005.2.5"><span +class="eccc1000-"><span +class="small-caps">profile-file-dirs</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">package.provided </span>in profiles banned, <a +href="#x1-520005.2.9"><span +class="eccc1000-"><span +class="small-caps">package-provided</span></span></a>. + </li> + <li class="compactitem">Empty <span +class="ectt-1000">|| </span>and <span +class="ectt-1000">^^ </span>dependency groups no longer count as being matched, + <a +href="#x1-760008.2.3"><span +class="eccc1000-"><span +class="small-caps">empty-dep-groups</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">PORTDIR </span>is gone, <a +href="#x1-109001r1"><span +class="eccc1000-"><span +class="small-caps">portdir</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">ECLASSDIR </span>is gone, <a +href="#x1-109001r1"><span +class="eccc1000-"><span +class="small-caps">eclassdir</span></span></a>. + + + </li> + <li class="compactitem"><span +class="ectt-1000">DESTTREE </span>is gone, <a +href="#x1-109001r1"><span +class="eccc1000-"><span +class="small-caps">desttree</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">INSDESTTREE </span>is gone, <a +href="#x1-109001r1"><span +class="eccc1000-"><span +class="small-caps">insdesttree</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">ROOT</span>, <span +class="ectt-1000">EROOT</span>, <span +class="ectt-1000">D</span>, <span +class="ectt-1000">ED </span>no longer end with a trailing slash, <a +href="#x1-11300011.1.4"><span +class="eccc1000-"><span +class="small-caps">trailing-slash</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">SYSROOT </span>and <span +class="ectt-1000">ESYSROOT</span>, <a +href="#x1-109001r1"><span +class="eccc1000-"><span +class="small-caps">sysroot</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">econf </span>adds <span +class="ectt-1000">--with-sysroot</span>, <a +href="#x1-12800012.3.8"><span +class="eccc1000-"><span +class="small-caps">econf-options</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">BDEPEND</span>, <a +href="#x1-720008.1"><span +class="eccc1000-"><span +class="small-caps">bdepend</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">BROOT</span>, <a +href="#x1-109001r1"><span +class="eccc1000-"><span +class="small-caps">broot</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">best_version </span>and <span +class="ectt-1000">has_version </span>support <span +class="ectt-1000">-b</span>, <span +class="ectt-1000">-d </span>and <span +class="ectt-1000">-r </span>options instead of + <span +class="ectt-1000">--host-root</span>, <a +href="#x1-12400012.3.4"><span +class="eccc1000-"><span +class="small-caps">pm-query-options</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">ENV_UNSET</span>, <a +href="#x1-10900011.1"><span +class="eccc1000-"><span +class="small-caps">env-unset</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">patch </span>is compatible with GNU patch 2.7, <a +href="#x1-11800012.1.1"><span +class="eccc1000-"><span +class="small-caps">gnu-patch</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">nonfatal </span>is both a shell function and an external command, <a +href="#x1-12100012.3.1"><span +class="eccc1000-"><span +class="small-caps">nonfatal</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">dohtml </span>banned, <a +href="#x1-12200012.3.2"><span +class="eccc1000-"><span +class="small-caps">banned-commands</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">dolib </span>and <span +class="ectt-1000">libopts </span>banned, <a +href="#x1-12200012.3.2"><span +class="eccc1000-"><span +class="small-caps">banned-commands</span></span></a>. + </li> + <li class="compactitem">Output commands no longer use stdout, <a +href="#x1-12500012.3.5"><span +class="eccc1000-"><span +class="small-caps">output-no-stdout</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">eqawarn</span>, <a +href="#x1-12500012.3.5"><span +class="eccc1000-"><span +class="small-caps">eqawarn</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">die </span>is guaranteed to work in a subshell, <a +href="#x1-12600012.3.6"><span +class="eccc1000-"><span +class="small-caps">subshell-die</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">domo </span>installs to <span +class="ectt-1000">/usr</span>, <a +href="#x1-12900012.3.9"><span +class="eccc1000-"><span +class="small-caps">domo-path</span></span></a>. + </li> + <li class="compactitem">Controllable stripping and <span +class="ectt-1000">dostrip</span>, <a +href="#x1-13100012.3.11"><span +class="eccc1000-"><span +class="small-caps">dostrip</span></span></a>. + </li> + <li class="compactitem">Version manipulation and comparison commands, <a +href="#x1-13400012.3.14"><span +class="eccc1000-"><span +class="small-caps">ver-commands</span></span></a>.</li></ul> +<!--l. 525--><p class="nopar" > +</p> +<h3 class="sectionHead"><a + id="x1-180000E"></a>EAPI 8</h3> +<!--l. 527--><p class="nopar" >EAPI 8 is EAPI 7 with the following changes: +</p><!--l. 530--><p class="noindent" > + </p><ul> + <li class="compactitem">Less strict naming rules for files in <span +class="ectt-1000">updates </span>directory, <a +href="#x1-360004.4.4"><span +class="eccc1000-"><span +class="small-caps">updates-filenames</span></span></a>. + </li> + <li class="compactitem">Bash version is 5.0, <a +href="#x1-580006"><span +class="eccc1000-"><span +class="small-caps">bash-version</span></span></a>. + </li> + <li class="compactitem">Selective fetch/mirror restriction, <a +href="#x1-640007.3.2"><span +class="eccc1000-"><span +class="small-caps">uri-restrict</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">IDEPEND</span>, <a +href="#x1-720008.1"><span +class="eccc1000-"><span +class="small-caps">idepend</span></span></a>. + + + </li> + <li class="compactitem">Empty working directory in <span +class="ectt-1000">pkg_* </span>phase functions, <a +href="#x1-860009.1.1"><span +class="eccc1000-"><span +class="small-caps">phase-function-dir</span></span></a>. + </li> + <li class="compactitem">Different <span +class="ectt-1000">src_prepare </span>implementation, <a +href="#x1-900009.1.5"><span +class="eccc1000-"><span +class="small-caps">src-prepare</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">PROPERTIES </span>and <span +class="ectt-1000">RESTRICT </span>accumulated across eclasses, <a +href="#x1-10600010.2"><span +class="eccc1000-"><span +class="small-caps">accumulate-vars</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">useq </span>banned, <a +href="#x1-12200012.3.2"><span +class="eccc1000-"><span +class="small-caps">banned-commands</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">hasv </span>and <span +class="ectt-1000">hasq </span>banned, <a +href="#x1-12200012.3.2"><span +class="eccc1000-"><span +class="small-caps">banned-commands</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">econf </span>adds <span +class="ectt-1000">--datarootdir</span>, <a +href="#x1-12800012.3.8"><span +class="eccc1000-"><span +class="small-caps">econf-options</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">econf </span>adds <span +class="ectt-1000">--disable-static</span>, <a +href="#x1-12800012.3.8"><span +class="eccc1000-"><span +class="small-caps">econf-options</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">dosym </span>can create relative paths, <a +href="#x1-12900012.3.9"><span +class="eccc1000-"><span +class="small-caps">dosym-relative</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">insopts </span>no longer affects <span +class="ectt-1000">doconfd</span>, <span +class="ectt-1000">doenvd </span>and <span +class="ectt-1000">doheader</span>, <a +href="#x1-13000012.3.10"><span +class="eccc1000-"><span +class="small-caps">insopts</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">exeopts </span>no longer affects <span +class="ectt-1000">doinitd</span>, <a +href="#x1-13000012.3.10"><span +class="eccc1000-"><span +class="small-caps">exeopts</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">usev </span>supports an optional second argument, <a +href="#x1-13200012.3.12"><span +class="eccc1000-"><span +class="small-caps">usev</span></span></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">unpack </span>no longer supports <span +class="ectt-1000">.7z</span>, <span +class="ectt-1000">.rar</span>, <span +class="ectt-1000">.lha</span>, <a +href="#x1-13500012.3.15"><span +class="eccc1000-"><span +class="small-caps">unpack-extensions</span></span></a>.</li></ul> + + + + + + +<a + id="x1-180001r246"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix F</span><br /><a + id="x1-181000F"></a>Desk Reference</h2> +<!--l. 96--><p class="nopar" ><a +href="eapi-cheatsheet.pdf" >EAPI Cheat Sheet</a> +</p> +<div class="footnotes"><!--l. 43--><p class="noindent" ><span class="footnote-mark"><a +href="#fn1x12-bk" id="fn1x12"><sup class="textsuperscript">1</sup></a></span><span +class="ecrm-0800">May change if a package has been updated (see </span><a +href="#x1-360004.4.4"><span +class="ecrm-0800">4.4.4</span><!--tex4ht:ref: sec:updates-dir --></a><span +class="ecrm-0800">).</span></p> +<!--l. 79--><p class="noindent" ><span class="footnote-mark"><a +href="#fn2x12-bk" id="fn2x12"><sup class="textsuperscript">2</sup></a></span><span +class="ecrm-0800">This variable is generally considered deprecated. However, ebuilds must still assume that the package manager sets it in the EAPIs supporting it. For example, a few configure scripts use this variable</span> +<span +class="ecrm-0800">to find the </span><span +class="ectt-0800">aalib </span><span +class="ecrm-0800">package; ebuilds calling such configure scripts must thus work around this.</span></p> +<!--l. 88--><p class="noindent" ><span class="footnote-mark"><a +href="#fn3x12-bk" id="fn3x12"><sup class="textsuperscript">3</sup></a></span><span +class="ecrm-0800">Not necessarily present when installing from a binary package. Ebuilds must not access the directory in global scope.</span></p> +<!--l. 136--><p class="noindent" ><span class="footnote-mark"><a +href="#fn4x12-bk" id="fn4x12"><sup class="textsuperscript">4</sup></a></span><span +class="ecrm-0800">Not necessarily present when installing from a binary package.</span></p> +<!--l. 159--><p class="noindent" ><span class="footnote-mark"><a +href="#fn5x12-bk" id="fn5x12"><sup class="textsuperscript">5</sup></a></span><span +class="ecrm-0800">Consistent and preserved across a single connected sequence of install or uninstall phases, but not between install and uninstall. When reinstalling a package, this variable must have different values for</span> +<span +class="ecrm-0800">the install and the replacement.</span></p> </div> + +</body></html> + + + + diff --git a/8/pms.pdf b/8/pms.pdf Binary files differnew file mode 100644 index 0000000..1fb7e55 --- /dev/null +++ b/8/pms.pdf @@ -1 +1 @@ -7
\ No newline at end of file +8
\ No newline at end of file |