diff options
author | 2015-04-10 16:49:24 +0200 | |
---|---|---|
committer | 2015-04-10 16:49:24 +0200 | |
commit | fce6ff9819bdc1a8146ca276f43048a432915437 (patch) | |
tree | 9d1ee4421cf31ff1d42afb2862b2e68699ca1cd8 | |
download | pms-fce6ff9819bdc1a8146ca276f43048a432915437.tar.gz pms-fce6ff9819bdc1a8146ca276f43048a432915437.tar.bz2 pms-fce6ff9819bdc1a8146ca276f43048a432915437.zip |
Initial import.
-rw-r--r-- | .htaccess | 1 | ||||
-rw-r--r-- | 2/pms.pdf | 8045 | ||||
-rw-r--r-- | 3/pms.css | 265 | ||||
-rw-r--r-- | 3/pms.html | 9899 | ||||
-rw-r--r-- | 3/pms.pdf | 11965 | ||||
-rw-r--r-- | 3/pms2.html | 24 | ||||
-rw-r--r-- | 3/pms3.html | 23 | ||||
-rw-r--r-- | 3/pms4.html | 23 | ||||
-rw-r--r-- | 3/pms5.html | 19 | ||||
-rw-r--r-- | 3/pms6.html | 21 | ||||
-rw-r--r-- | 3/pms7.html | 21 | ||||
-rw-r--r-- | 3/pms8.html | 25 | ||||
-rw-r--r-- | 4/pms.css | 265 | ||||
-rw-r--r-- | 4/pms.html | 9933 | ||||
-rw-r--r-- | 4/pms.pdf | bin | 0 -> 348747 bytes | |||
-rw-r--r-- | 4/pms2.html | 24 | ||||
-rw-r--r-- | 4/pms3.html | 23 | ||||
-rw-r--r-- | 4/pms4.html | 23 | ||||
-rw-r--r-- | 4/pms5.html | 19 | ||||
-rw-r--r-- | 4/pms6.html | 21 | ||||
-rw-r--r-- | 4/pms7.html | 21 | ||||
-rw-r--r-- | 4/pms8.html | 25 | ||||
-rw-r--r-- | 5/eapi-cheatsheet-nocombine.pdf | bin | 0 -> 86670 bytes | |||
-rw-r--r-- | 5/eapi-cheatsheet.pdf | bin | 0 -> 85203 bytes | |||
-rw-r--r-- | 5/pms.css | 314 | ||||
-rw-r--r-- | 5/pms.html | 12197 | ||||
-rw-r--r-- | 5/pms.pdf | bin | 0 -> 469297 bytes | |||
-rw-r--r-- | 5/pms2.html | 24 | ||||
-rw-r--r-- | 5/pms3.html | 23 | ||||
-rw-r--r-- | 5/pms4.html | 23 | ||||
-rw-r--r-- | 5/pms5.html | 19 | ||||
-rw-r--r-- | 5/pms6.html | 21 | ||||
-rw-r--r-- | 5/pms7.html | 25 |
33 files changed, 53331 insertions, 0 deletions
diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..a25e14e --- /dev/null +++ b/.htaccess @@ -0,0 +1 @@ +AddCharSet ISO-8859-1 .html diff --git a/2/pms.pdf b/2/pms.pdf new file mode 100644 index 0000000..9186dfb --- /dev/null +++ b/2/pms.pdf @@ -0,0 +1,8045 @@ +%PDF-1.4 +% +5 0 obj +<< /S /GoTo /D (chapter.1) >> +endobj +8 0 obj +(Introduction) +endobj +9 0 obj +<< /S /GoTo /D (section.1.1) >> +endobj +12 0 obj +(Aims and Motivation) +endobj +13 0 obj +<< /S /GoTo /D (section.1.2) >> +endobj +16 0 obj +(Rationale) +endobj +17 0 obj +<< /S /GoTo /D (section.1.3) >> +endobj +20 0 obj +(Conventions) +endobj +21 0 obj +<< /S /GoTo /D (section.1.4) >> +endobj +24 0 obj +(EAPIs) +endobj +25 0 obj +<< /S /GoTo /D (subsection.1.4.1) >> +endobj +28 0 obj +(Reserved EAPIs) +endobj +29 0 obj +<< /S /GoTo /D (chapter.2) >> +endobj +32 0 obj +(Names and Versions) +endobj +33 0 obj +<< /S /GoTo /D (section.2.1) >> +endobj +36 0 obj +(Restrictions upon Names) +endobj +37 0 obj +<< /S /GoTo /D (subsection.2.1.1) >> +endobj +40 0 obj +(Category Names) +endobj +41 0 obj +<< /S /GoTo /D (subsection.2.1.2) >> +endobj +44 0 obj +(Package Names) +endobj +45 0 obj +<< /S /GoTo /D (subsection.2.1.3) >> +endobj +48 0 obj +(Slot Names) +endobj +49 0 obj +<< /S /GoTo /D (subsection.2.1.4) >> +endobj +52 0 obj +(USE Flag Names) +endobj +53 0 obj +<< /S /GoTo /D (subsection.2.1.5) >> +endobj +56 0 obj +(Repository Names) +endobj +57 0 obj +<< /S /GoTo /D (subsection.2.1.6) >> +endobj +60 0 obj +(Keyword Names) +endobj +61 0 obj +<< /S /GoTo /D (section.2.2) >> +endobj +64 0 obj +(Version Specifications) +endobj +65 0 obj +<< /S /GoTo /D (section.2.3) >> +endobj +68 0 obj +(Version Comparison) +endobj +69 0 obj +<< /S /GoTo /D (section.2.4) >> +endobj +72 0 obj +(Uniqueness of versions) +endobj +73 0 obj +<< /S /GoTo /D (chapter.3) >> +endobj +76 0 obj +(Tree Layout) +endobj +77 0 obj +<< /S /GoTo /D (section.3.1) >> +endobj +80 0 obj +(Top Level) +endobj +81 0 obj +<< /S /GoTo /D (section.3.2) >> +endobj +84 0 obj +(Category Directories) +endobj +85 0 obj +<< /S /GoTo /D (section.3.3) >> +endobj +88 0 obj +(Package Directories) +endobj +89 0 obj +<< /S /GoTo /D (section.3.4) >> +endobj +92 0 obj +(The Profiles Directory) +endobj +93 0 obj +<< /S /GoTo /D (subsection.3.4.1) >> +endobj +96 0 obj +(The profiles.desc file) +endobj +97 0 obj +<< /S /GoTo /D (subsection.3.4.2) >> +endobj +100 0 obj +(The thirdpartymirrors file) +endobj +101 0 obj +<< /S /GoTo /D (subsection.3.4.3) >> +endobj +104 0 obj +(use.desc and related files) +endobj +105 0 obj +<< /S /GoTo /D (subsection.3.4.4) >> +endobj +108 0 obj +(The updates directory) +endobj +109 0 obj +<< /S /GoTo /D (section.3.5) >> +endobj +112 0 obj +(The Licenses Directory) +endobj +113 0 obj +<< /S /GoTo /D (section.3.6) >> +endobj +116 0 obj +(The Eclass Directory) +endobj +117 0 obj +<< /S /GoTo /D (section.3.7) >> +endobj +120 0 obj +(The Metadata Directory) +endobj +121 0 obj +<< /S /GoTo /D (subsection.3.7.1) >> +endobj +124 0 obj +(The metadata cache) +endobj +125 0 obj +<< /S /GoTo /D (chapter.4) >> +endobj +128 0 obj +(Profiles) +endobj +129 0 obj +<< /S /GoTo /D (section.4.1) >> +endobj +132 0 obj +(General principles) +endobj +133 0 obj +<< /S /GoTo /D (section.4.2) >> +endobj +136 0 obj +(Files that make up a profile) +endobj +137 0 obj +<< /S /GoTo /D (subsection.4.2.1) >> +endobj +140 0 obj +(The parent file) +endobj +141 0 obj +<< /S /GoTo /D (subsection.4.2.2) >> +endobj +144 0 obj +(deprecated) +endobj +145 0 obj +<< /S /GoTo /D (subsection.4.2.3) >> +endobj +148 0 obj +(make.defaults) +endobj +149 0 obj +<< /S /GoTo /D (subsection.4.2.4) >> +endobj +152 0 obj +(virtuals) +endobj +153 0 obj +<< /S /GoTo /D (subsection.4.2.5) >> +endobj +156 0 obj +(use.defaults) +endobj +157 0 obj +<< /S /GoTo /D (subsection.4.2.6) >> +endobj +160 0 obj +(Simple line-based files) +endobj +161 0 obj +<< /S /GoTo /D (subsection.4.2.7) >> +endobj +164 0 obj +(packages) +endobj +165 0 obj +<< /S /GoTo /D (subsection.4.2.8) >> +endobj +168 0 obj +(packages.build) +endobj +169 0 obj +<< /S /GoTo /D (subsection.4.2.9) >> +endobj +172 0 obj +(package.mask) +endobj +173 0 obj +<< /S /GoTo /D (subsection.4.2.10) >> +endobj +176 0 obj +(package.provided) +endobj +177 0 obj +<< /S /GoTo /D (subsection.4.2.11) >> +endobj +180 0 obj +(package.use) +endobj +181 0 obj +<< /S /GoTo /D (subsection.4.2.12) >> +endobj +184 0 obj +(USE masking and forcing) +endobj +185 0 obj +<< /S /GoTo /D (section.4.3) >> +endobj +188 0 obj +(Profile variables) +endobj +189 0 obj +<< /S /GoTo /D (subsection.4.3.1) >> +endobj +192 0 obj +(Incremental Variables) +endobj +193 0 obj +<< /S /GoTo /D (subsection.4.3.2) >> +endobj +196 0 obj +(Specific variables and their meanings) +endobj +197 0 obj +<< /S /GoTo /D (chapter.5) >> +endobj +200 0 obj +(Old-Style Virtual Packages) +endobj +201 0 obj +<< /S /GoTo /D (section.5.1) >> +endobj +204 0 obj +(Dependencies on virtual packages) +endobj +205 0 obj +<< /S /GoTo /D (chapter.6) >> +endobj +208 0 obj +(Ebuild File Format) +endobj +209 0 obj +<< /S /GoTo /D (chapter.7) >> +endobj +212 0 obj +(Eclasses) +endobj +213 0 obj +<< /S /GoTo /D (section.7.1) >> +endobj +216 0 obj +(The inherit command) +endobj +217 0 obj +<< /S /GoTo /D (section.7.2) >> +endobj +220 0 obj +(Eclass-defined Metadata Keys) +endobj +221 0 obj +<< /S /GoTo /D (section.7.3) >> +endobj +224 0 obj +(EXPORT\137FUNCTIONS) +endobj +225 0 obj +<< /S /GoTo /D (chapter.8) >> +endobj +228 0 obj +(Ebuild-defined Variables) +endobj +229 0 obj +<< /S /GoTo /D (section.8.1) >> +endobj +232 0 obj +(Metadata invariance) +endobj +233 0 obj +<< /S /GoTo /D (section.8.2) >> +endobj +236 0 obj +(Mandatory Ebuild-defined Variables) +endobj +237 0 obj +<< /S /GoTo /D (section.8.3) >> +endobj +240 0 obj +(Optional Ebuild-defined Variables) +endobj +241 0 obj +<< /S /GoTo /D (subsection.8.3.1) >> +endobj +244 0 obj +(EAPI) +endobj +245 0 obj +<< /S /GoTo /D (section.8.4) >> +endobj +248 0 obj +(RDEPEND value) +endobj +249 0 obj +<< /S /GoTo /D (section.8.5) >> +endobj +252 0 obj +(Magic Ebuild-defined Variables) +endobj +253 0 obj +<< /S /GoTo /D (chapter.9) >> +endobj +256 0 obj +(Dependencies) +endobj +257 0 obj +<< /S /GoTo /D (section.9.1) >> +endobj +260 0 obj +(Dependency Classes) +endobj +261 0 obj +<< /S /GoTo /D (section.9.2) >> +endobj +264 0 obj +(Dependency Specification Format) +endobj +265 0 obj +<< /S /GoTo /D (subsection.9.2.1) >> +endobj +268 0 obj +(All-of Dependency Specifications) +endobj +269 0 obj +<< /S /GoTo /D (subsection.9.2.2) >> +endobj +272 0 obj +(Use-conditional Dependency Specifications) +endobj +273 0 obj +<< /S /GoTo /D (subsection.9.2.3) >> +endobj +276 0 obj +(Any-of Dependency Specifications) +endobj +277 0 obj +<< /S /GoTo /D (subsection.9.2.4) >> +endobj +280 0 obj +(Package Dependency Specifications) +endobj +281 0 obj +<< /S /GoTo /D (subsection.9.2.5) >> +endobj +284 0 obj +(Restrict) +endobj +285 0 obj +<< /S /GoTo /D (subsection.9.2.6) >> +endobj +288 0 obj +(SRC\137URI) +endobj +289 0 obj +<< /S /GoTo /D (chapter.10) >> +endobj +292 0 obj +(Ebuild-defined Functions) +endobj +293 0 obj +<< /S /GoTo /D (section.10.1) >> +endobj +296 0 obj +(List of Functions) +endobj +297 0 obj +<< /S /GoTo /D (subsection.10.1.1) >> +endobj +300 0 obj +(pkg\137setup) +endobj +301 0 obj +<< /S /GoTo /D (subsection.10.1.2) >> +endobj +304 0 obj +(src\137unpack) +endobj +305 0 obj +<< /S /GoTo /D (subsection.10.1.3) >> +endobj +308 0 obj +(src\137prepare) +endobj +309 0 obj +<< /S /GoTo /D (subsection.10.1.4) >> +endobj +312 0 obj +(src\137configure) +endobj +313 0 obj +<< /S /GoTo /D (subsection.10.1.5) >> +endobj +316 0 obj +(src\137compile) +endobj +317 0 obj +<< /S /GoTo /D (subsection.10.1.6) >> +endobj +320 0 obj +(src\137test) +endobj +321 0 obj +<< /S /GoTo /D (subsection.10.1.7) >> +endobj +324 0 obj +(src\137install) +endobj +325 0 obj +<< /S /GoTo /D (subsection.10.1.8) >> +endobj +328 0 obj +(pkg\137preinst) +endobj +329 0 obj +<< /S /GoTo /D (subsection.10.1.9) >> +endobj +332 0 obj +(pkg\137postinst) +endobj +333 0 obj +<< /S /GoTo /D (subsection.10.1.10) >> +endobj +336 0 obj +(pkg\137prerm) +endobj +337 0 obj +<< /S /GoTo /D (subsection.10.1.11) >> +endobj +340 0 obj +(pkg\137postrm) +endobj +341 0 obj +<< /S /GoTo /D (subsection.10.1.12) >> +endobj +344 0 obj +(pkg\137config) +endobj +345 0 obj +<< /S /GoTo /D (subsection.10.1.13) >> +endobj +348 0 obj +(pkg\137info) +endobj +349 0 obj +<< /S /GoTo /D (subsection.10.1.14) >> +endobj +352 0 obj +(pkg\137nofetch) +endobj +353 0 obj +<< /S /GoTo /D (subsection.10.1.15) >> +endobj +356 0 obj +(default\137 Phase Functions) +endobj +357 0 obj +<< /S /GoTo /D (section.10.2) >> +endobj +360 0 obj +(Call Order) +endobj +361 0 obj +<< /S /GoTo /D (chapter.11) >> +endobj +364 0 obj +(The Ebuild Environment) +endobj +365 0 obj +<< /S /GoTo /D (section.11.1) >> +endobj +368 0 obj +(Defined Variables) +endobj +369 0 obj +<< /S /GoTo /D (section.11.2) >> +endobj +372 0 obj +(The state of variables between functions) +endobj +373 0 obj +<< /S /GoTo /D (section.11.3) >> +endobj +376 0 obj +(Available commands) +endobj +377 0 obj +<< /S /GoTo /D (subsection.11.3.1) >> +endobj +380 0 obj +(System commands) +endobj +381 0 obj +<< /S /GoTo /D (subsection.11.3.2) >> +endobj +384 0 obj +(Commands provided by package dependencies) +endobj +385 0 obj +<< /S /GoTo /D (subsection.11.3.3) >> +endobj +388 0 obj +(Ebuild-specific Commands) +endobj +389 0 obj +<< /S /GoTo /D (section.11.4) >> +endobj +392 0 obj +(The state of the system between functions) +endobj +393 0 obj +<< /S /GoTo /D (chapter.12) >> +endobj +396 0 obj +(Merging and Unmerging) +endobj +397 0 obj +<< /S /GoTo /D (section.12.1) >> +endobj +400 0 obj +(Overview) +endobj +401 0 obj +<< /S /GoTo /D (section.12.2) >> +endobj +404 0 obj +(Directories) +endobj +405 0 obj +<< /S /GoTo /D (subsection.12.2.1) >> +endobj +408 0 obj +(Permissions) +endobj +409 0 obj +<< /S /GoTo /D (subsection.12.2.2) >> +endobj +412 0 obj +(Empty Directories) +endobj +413 0 obj +<< /S /GoTo /D (section.12.3) >> +endobj +416 0 obj +(Regular Files) +endobj +417 0 obj +<< /S /GoTo /D (subsection.12.3.1) >> +endobj +420 0 obj +(Permissions) +endobj +421 0 obj +<< /S /GoTo /D (subsection.12.3.2) >> +endobj +424 0 obj +(Configuration File Protection) +endobj +425 0 obj +<< /S /GoTo /D (section.12.4) >> +endobj +428 0 obj +(Symlinks) +endobj +429 0 obj +<< /S /GoTo /D (subsection.12.4.1) >> +endobj +432 0 obj +(Rewriting) +endobj +433 0 obj +<< /S /GoTo /D (section.12.5) >> +endobj +436 0 obj +(Hard links) +endobj +437 0 obj +<< /S /GoTo /D (section.12.6) >> +endobj +440 0 obj +(Other Files) +endobj +441 0 obj +<< /S /GoTo /D (chapter.13) >> +endobj +444 0 obj +(Glossary) +endobj +445 0 obj +<< /S /GoTo /D (appendix.A) >> +endobj +448 0 obj +(metadata.xml) +endobj +449 0 obj +<< /S /GoTo /D (appendix.B) >> +endobj +452 0 obj +(Unspecified Items) +endobj +453 0 obj +<< /S /GoTo /D (appendix.C) >> +endobj +456 0 obj +(Historical Curiosities) +endobj +457 0 obj +<< /S /GoTo /D (section.C.1) >> +endobj +460 0 obj +(If-else use blocks) +endobj +461 0 obj +<< /S /GoTo /D (section.C.2) >> +endobj +464 0 obj +(cvs Versions) +endobj +465 0 obj +<< /S /GoTo /D (appendix.D) >> +endobj +468 0 obj +(Feature Availability by EAPI) +endobj +469 0 obj +<< /S /GoTo /D (appendix.E) >> +endobj +472 0 obj +(Differences Between EAPIs) +endobj +473 0 obj +<< /S /GoTo /D [474 0 R /Fit ] >> +endobj +478 0 obj << +/Length 261 +/Filter /FlateDecode +>> +stream +x}=O0=c"+EBl5&hϧ$:n/ yHwS'W~#Ti`$+yN2*ScM㲜IL+3\lȬ:?d1lVsTB<ɍ"rqi~ZW;RA5)-Tq>Z|h/ +% +ܹQHZ-+U+noN7 oF!YQLmLx{_'y +endstream +endobj +474 0 obj << +/Type /Page +/Contents 478 0 R +/Resources 477 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 483 0 R +/Annots [ 475 0 R 476 0 R ] +>> endobj +475 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [119.664 453.824 229.253 469.764] +/Subtype/Link/A<</Type/Action/S/URI/URI(spb@exherbo.org)>> +>> endobj +476 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [258.426 453.824 475.612 469.764] +/Subtype/Link/A<</Type/Action/S/URI/URI(ciaran.mccreesh@googlemail.com)>> +>> endobj +479 0 obj << +/D [474 0 R /XYZ 72 769.89 null] +>> endobj +480 0 obj << +/D [474 0 R /XYZ 72 769.89 null] +>> endobj +477 0 obj << +/Font << /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +528 0 obj << +/Length 1184 +/Filter /FlateDecode +>> +stream +xsF+81uLڤ㉕^6 "FȒK4Ͼ-{˳]x/Z>|hQ3kZ_iRʤ,쿗u'qSHs<ˡ><o>)sE2JKXSr~O u#"b9 +dR쭼G$2?*E" +
Ufk97?`ąLH$_^-/| +endstream +endobj +527 0 obj << +/Type /Page +/Contents 528 0 R +/Resources 526 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 483 0 R +/Annots [ 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R ] +>> endobj +484 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 611.364 142.007 620.341] +/Subtype /Link +/A << /S /GoTo /D (chapter.1) >> +>> endobj +485 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 599.309 195.596 608.276] +/Subtype /Link +/A << /S /GoTo /D (section.1.1) >> +>> endobj +486 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 587.354 149.041 596.321] +/Subtype /Link +/A << /S /GoTo /D (section.1.2) >> +>> endobj +487 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 575.399 160.677 584.365] +/Subtype /Link +/A << /S /GoTo /D (section.1.3) >> +>> endobj +488 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 563.444 136.867 572.41] +/Subtype /Link +/A << /S /GoTo /D (section.1.4) >> +>> endobj +489 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 551.608 208.159 560.455] +/Subtype /Link +/A << /S /GoTo /D (subsection.1.4.1) >> +>> endobj +490 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 529.671 173.837 538.647] +/Subtype /Link +/A << /S /GoTo /D (chapter.2) >> +>> endobj +491 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 515.678 211.027 526.582] +/Subtype /Link +/A << /S /GoTo /D (section.2.1) >> +>> endobj +492 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 503.723 209.265 514.627] +/Subtype /Link +/A << /S /GoTo /D (subsection.2.1.1) >> +>> endobj +493 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 491.768 205.937 502.672] +/Subtype /Link +/A << /S /GoTo /D (subsection.2.1.2) >> +>> endobj +494 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 481.87 188.951 490.717] +/Subtype /Link +/A << /S /GoTo /D (subsection.2.1.3) >> +>> endobj +495 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 467.857 211.915 478.761] +/Subtype /Link +/A << /S /GoTo /D (subsection.2.1.4) >> +>> endobj +496 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 455.902 216.617 466.806] +/Subtype /Link +/A << /S /GoTo /D (subsection.2.1.5) >> +>> endobj +497 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 443.947 209.464 454.851] +/Subtype /Link +/A << /S /GoTo /D (subsection.2.1.6) >> +>> endobj +498 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 431.992 199.68 442.896] +/Subtype /Link +/A << /S /GoTo /D (section.2.2) >> +>> endobj +499 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 420.037 192.487 430.941] +/Subtype /Link +/A << /S /GoTo /D (section.2.3) >> +>> endobj +500 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 408.082 203.675 418.986] +/Subtype /Link +/A << /S /GoTo /D (section.2.4) >> +>> endobj +501 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 386.298 139.626 397.177] +/Subtype /Link +/A << /S /GoTo /D (chapter.3) >> +>> endobj +502 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 374.209 150.884 385.113] +/Subtype /Link +/A << /S /GoTo /D (section.3.1) >> +>> endobj +503 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 362.253 193.982 373.157] +/Subtype /Link +/A << /S /GoTo /D (section.3.2) >> +>> endobj +504 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 350.298 190.654 361.202] +/Subtype /Link +/A << /S /GoTo /D (section.3.3) >> +>> endobj +505 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 338.343 199.949 349.247] +/Subtype /Link +/A << /S /GoTo /D (section.3.4) >> +>> endobj +506 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 326.388 226.021 337.292] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.1) >> +>> endobj +507 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 314.433 244.562 325.337] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.2) >> +>> endobj +508 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 304.535 241.782 313.382] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.3) >> +>> endobj +509 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 290.522 229.608 301.426] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.4) >> +>> endobj +510 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 278.567 204.363 289.471] +/Subtype /Link +/A << /S /GoTo /D (section.3.5) >> +>> endobj +511 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 266.612 194.958 277.516] +/Subtype /Link +/A << /S /GoTo /D (section.3.6) >> +>> endobj +512 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 254.657 206.574 265.561] +/Subtype /Link +/A << /S /GoTo /D (section.3.7) >> +>> endobj +513 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 244.759 221.847 253.606] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.7.1) >> +>> endobj +514 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 222.821 119.86 231.798] +/Subtype /Link +/A << /S /GoTo /D (chapter.4) >> +>> endobj +515 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 208.829 184.168 219.733] +/Subtype /Link +/A << /S /GoTo /D (section.4.1) >> +>> endobj +516 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 196.874 219.506 207.778] +/Subtype /Link +/A << /S /GoTo /D (section.4.2) >> +>> endobj +517 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 184.918 200.836 195.822] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.1) >> +>> endobj +518 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 172.963 185.882 183.867] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.2) >> +>> endobj +519 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 163.065 198.146 171.912] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.3) >> +>> endobj +520 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 151.11 172.622 159.957] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.4) >> +>> endobj +521 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 139.155 189.947 148.002] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.5) >> +>> endobj +522 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 125.143 233.503 136.047] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.6) >> +>> endobj +523 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 113.187 179.247 124.091] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.7) >> +>> endobj +524 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 101.232 202.022 112.136] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.8) >> +>> endobj +530 0 obj << +/D [527 0 R /XYZ 72 634.101 null] +>> endobj +526 0 obj << +/Font << /F62 529 0 R /F38 481 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +583 0 obj << +/Length 1419 +/Filter /FlateDecode +>> +stream +x[O8l.cYhW@ĮP&5&U4~$lZ2P_A.mw0pMLj
) +QsX7 +/|0Yu +- 7tKGܞ #QW3?? }нC*rsҢ1'ӳ5}-ӂmn,-+ +U/E%a%&ހMۤ'wחZ;3$ޞD}Uu;^EAgAl\U9_aZvID^c"- +FͳOI57 +endstream +endobj +582 0 obj << +/Type /Page +/Contents 583 0 R +/Resources 581 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 483 0 R +/Annots [ 525 0 R 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R ] +>> endobj +525 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 756.774 198.894 767.678] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.9) >> +>> endobj +531 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 744.819 213.13 755.723] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.10) >> +>> endobj +532 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 732.864 191.143 743.768] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.11) >> +>> endobj +533 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 720.909 245.947 731.812] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.12) >> +>> endobj +534 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 711.011 175.631 719.857] +/Subtype /Link +/A << /S /GoTo /D (section.4.3) >> +>> endobj +535 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 699.055 229.877 707.902] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.3.1) >> +>> endobj +536 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 685.043 291.346 695.947] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.3.2) >> +>> endobj +537 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 663.26 203.147 674.139] +/Subtype /Link +/A << /S /GoTo /D (chapter.5) >> +>> endobj +538 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 651.17 246.694 662.074] +/Subtype /Link +/A << /S /GoTo /D (section.5.1) >> +>> endobj +539 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 631.29 169.414 640.266] +/Subtype /Link +/A << /S /GoTo /D (chapter.6) >> +>> endobj +540 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 609.372 122.809 618.348] +/Subtype /Link +/A << /S /GoTo /D (chapter.7) >> +>> endobj +541 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 597.437 196.632 606.283] +/Subtype /Link +/A << /S /GoTo /D (section.7.1) >> +>> endobj +542 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 583.424 231.082 594.328] +/Subtype /Link +/A << /S /GoTo /D (section.7.2) >> +>> endobj +543 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 572.445 209.882 582.373] +/Subtype /Link +/A << /S /GoTo /D (section.7.3) >> +>> endobj +544 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 551.588 193.393 560.565] +/Subtype /Link +/A << /S /GoTo /D (chapter.8) >> +>> endobj +545 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 539.653 191.262 548.5] +/Subtype /Link +/A << /S /GoTo /D (section.8.1) >> +>> endobj +546 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 525.641 255.64 536.545] +/Subtype /Link +/A << /S /GoTo /D (section.8.2) >> +>> endobj +547 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 513.686 246.793 524.59] +/Subtype /Link +/A << /S /GoTo /D (section.8.3) >> +>> endobj +548 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 503.668 164.872 512.634] +/Subtype /Link +/A << /S /GoTo /D (subsection.8.3.1) >> +>> endobj +549 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 491.713 176.518 500.679] +/Subtype /Link +/A << /S /GoTo /D (section.8.4) >> +>> endobj +550 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 477.82 237.379 488.724] +/Subtype /Link +/A << /S /GoTo /D (section.8.5) >> +>> endobj +551 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 456.037 146.052 466.916] +/Subtype /Link +/A << /S /GoTo /D (chapter.9) >> +>> endobj +552 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 443.947 192.876 454.851] +/Subtype /Link +/A << /S /GoTo /D (section.9.1) >> +>> endobj +553 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 431.992 246.136 442.896] +/Subtype /Link +/A << /S /GoTo /D (section.9.2) >> +>> endobj +554 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 420.037 277.608 430.941] +/Subtype /Link +/A << /S /GoTo /D (subsection.9.2.1) >> +>> endobj +555 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 408.082 316.9 418.986] +/Subtype /Link +/A << /S /GoTo /D (subsection.9.2.2) >> +>> endobj +556 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 396.126 281.882 407.03] +/Subtype /Link +/A << /S /GoTo /D (subsection.9.2.3) >> +>> endobj +557 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 384.171 286.305 395.075] +/Subtype /Link +/A << /S /GoTo /D (subsection.9.2.4) >> +>> endobj +558 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 374.154 173.728 383.12] +/Subtype /Link +/A << /S /GoTo /D (subsection.9.2.5) >> +>> endobj +559 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 361.237 183.701 371.165] +/Subtype /Link +/A << /S /GoTo /D (subsection.9.2.6) >> +>> endobj +560 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 340.38 195.426 349.357] +/Subtype /Link +/A << /S /GoTo /D (chapter.10) >> +>> endobj +561 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 328.445 178.938 337.292] +/Subtype /Link +/A << /S /GoTo /D (section.10.1) >> +>> endobj +562 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 314.433 183.691 325.337] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.1) >> +>> endobj +563 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 302.478 188.104 313.382] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.2) >> +>> endobj +564 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 290.522 189.2 301.426] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.3) >> +>> endobj +565 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 278.567 196.961 289.471] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.4) >> +>> endobj +566 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 266.612 191.431 277.516] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.5) >> +>> endobj +567 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 255.633 173.17 265.561] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.6) >> +>> endobj +568 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 243.678 183.69 253.606] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.7) >> +>> endobj +569 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 230.747 189.778 241.651] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.8) >> +>> endobj +570 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 218.791 193.663 229.695] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.9) >> +>> endobj +571 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 206.836 186.451 217.74] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.10) >> +>> endobj +572 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 194.881 190.336 205.785] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.11) >> +>> endobj +573 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 182.926 187.566 193.83] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.12) >> +>> endobj +574 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 170.971 178.71 181.875] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.13) >> +>> endobj +575 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 159.016 192.538 169.92] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.14) >> +>> endobj +576 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 147.907 258.081 157.964] +/Subtype /Link +/A << /S /GoTo /D (subsection.10.1.15) >> +>> endobj +577 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 137.043 153.185 146.009] +/Subtype /Link +/A << /S /GoTo /D (section.10.2) >> +>> endobj +578 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 115.225 194.011 124.201] +/Subtype /Link +/A << /S /GoTo /D (chapter.11) >> +>> endobj +579 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 103.29 181.957 112.136] +/Subtype /Link +/A << /S /GoTo /D (section.11.1) >> +>> endobj +584 0 obj << +/D [582 0 R /XYZ 72 769.89 null] +>> endobj +581 0 obj << +/Font << /F38 481 0 R /F62 529 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +612 0 obj << +/Length 909 +/Filter /FlateDecode +>> +stream +xY]s0}IHyVvv_m|8vKXD x/{ &.Nlprڷ]Y"
ƚK-rH!a=7Lˊa<V%<U<{<R7Yg"R;0[}Q/noB]ەǫi9ʌBc8VZjXX3 bAtrk74a3B-o +R~$%$6 bG,&EG# C7Ҍ]VL#3r_ +:ϐjnM;ˑ!?9>Ek D1QN +6"mTF +H"4X)iIPYƞYl|];CJԺI(t.bH[.9fNj #&'e2D n{}bsQV1]dx~ +5N/KZ8_م.q*:E衶m 81UO՜$"DZR^C +9,~K/)ZԭaD +-7`q[^B2|i%}eC;YLhu,+&;,<F^Yà٪3tm[VUôكKʾbw8 k31MY5n2_ME5+ z +endstream +endobj +611 0 obj << +/Type /Page +/Contents 612 0 R +/Resources 610 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 483 0 R +/Annots [ 580 0 R 585 0 R 586 0 R 587 0 R 588 0 R 589 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R 604 0 R 605 0 R 606 0 R 607 0 R 608 0 R 609 0 R ] +>> endobj +580 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 758.831 271.351 767.678] +/Subtype /Link +/A << /S /GoTo /D (section.11.2) >> +>> endobj +585 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 746.876 194.261 755.723] +/Subtype /Link +/A << /S /GoTo /D (section.11.3) >> +>> endobj +586 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 732.864 217.733 743.768] +/Subtype /Link +/A << /S /GoTo /D (subsection.11.3.1) >> +>> endobj +587 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 720.909 329.623 731.812] +/Subtype /Link +/A << /S /GoTo /D (subsection.11.3.2) >> +>> endobj +588 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 708.953 250.739 719.857] +/Subtype /Link +/A << /S /GoTo /D (subsection.11.3.3) >> +>> endobj +589 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 696.998 277.976 707.902] +/Subtype /Link +/A << /S /GoTo /D (section.11.4) >> +>> endobj +590 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 675.215 193.454 686.094] +/Subtype /Link +/A << /S /GoTo /D (chapter.12) >> +>> endobj +591 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 665.183 149.738 674.029] +/Subtype /Link +/A << /S /GoTo /D (section.12.1) >> +>> endobj +592 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 653.227 155.118 662.074] +/Subtype /Link +/A << /S /GoTo /D (section.12.2) >> +>> endobj +593 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 641.272 190.893 650.119] +/Subtype /Link +/A << /S /GoTo /D (subsection.12.2.1) >> +>> endobj +594 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 627.26 216.059 638.164] +/Subtype /Link +/A << /S /GoTo /D (subsection.12.2.2) >> +>> endobj +595 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 615.305 164.114 626.208] +/Subtype /Link +/A << /S /GoTo /D (section.12.3) >> +>> endobj +596 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 605.407 190.893 614.253] +/Subtype /Link +/A << /S /GoTo /D (subsection.12.3.1) >> +>> endobj +597 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 591.394 259.525 602.298] +/Subtype /Link +/A << /S /GoTo /D (subsection.12.3.2) >> +>> endobj +598 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 579.439 148.503 590.343] +/Subtype /Link +/A << /S /GoTo /D (section.12.4) >> +>> endobj +599 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.862 567.484 182.336 578.388] +/Subtype /Link +/A << /S /GoTo /D (subsection.12.4.1) >> +>> endobj +600 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 557.586 152.637 566.433] +/Subtype /Link +/A << /S /GoTo /D (section.12.5) >> +>> endobj +601 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 545.631 155.407 554.477] +/Subtype /Link +/A << /S /GoTo /D (section.12.6) >> +>> endobj +602 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 521.79 125.579 532.669] +/Subtype /Link +/A << /S /GoTo /D (chapter.13) >> +>> endobj +603 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 501.775 146.321 510.751] +/Subtype /Link +/A << /S /GoTo /D (appendix.A) >> +>> endobj +604 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 477.955 163.486 488.834] +/Subtype /Link +/A << /S /GoTo /D (appendix.B) >> +>> endobj +605 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 457.94 178.429 466.916] +/Subtype /Link +/A << /S /GoTo /D (appendix.C) >> +>> endobj +606 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 445.885 180.572 454.851] +/Subtype /Link +/A << /S /GoTo /D (section.C.1) >> +>> endobj +607 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 433.93 160.936 442.896] +/Subtype /Link +/A << /S /GoTo /D (section.C.2) >> +>> endobj +608 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 410.209 211.227 421.088] +/Subtype /Link +/A << /S /GoTo /D (appendix.D) >> +>> endobj +609 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [71.004 390.194 204.512 399.17] +/Subtype /Link +/A << /S /GoTo /D (appendix.E) >> +>> endobj +613 0 obj << +/D [611 0 R /XYZ 72 769.89 null] +>> endobj +610 0 obj << +/Font << /F38 481 0 R /F62 529 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +620 0 obj << +/Length 299 +/Filter /FlateDecode +>> +stream +xKK@w,f:s3e ""Ҧi:$MI`u]]<΅qfzzMj9D[J@w'(Wn:Ҳr.fК.ZjB +endstream +endobj +619 0 obj << +/Type /Page +/Contents 620 0 R +/Resources 618 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 483 0 R +/Annots [ 614 0 R 615 0 R 616 0 R 617 0 R ] +>> endobj +614 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 619.29 188.343 630.194] +/Subtype /Link +/A << /S /GoTo /D (algorithm.1) >> +>> endobj +615 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 607.334 196.552 618.238] +/Subtype /Link +/A << /S /GoTo /D (algorithm.2) >> +>> endobj +616 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 595.379 186.111 606.283] +/Subtype /Link +/A << /S /GoTo /D (algorithm.3) >> +>> endobj +617 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 583.424 243.386 594.328] +/Subtype /Link +/A << /S /GoTo /D (algorithm.4) >> +>> endobj +621 0 obj << +/D [619 0 R /XYZ 72 769.89 null] +>> endobj +622 0 obj << +/D [619 0 R /XYZ 72 629.366 null] +>> endobj +618 0 obj << +/Font << /F62 529 0 R /F38 481 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +633 0 obj << +/Length 337 +/Filter /FlateDecode +>> +stream +x]K0+r\$;IU/Ld KGMvϷsMd(Lr7!{N +endstream +endobj +632 0 obj << +/Type /Page +/Contents 633 0 R +/Resources 631 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 483 0 R +/Annots [ 627 0 R 628 0 R 629 0 R 630 0 R ] +>> endobj +627 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 619.29 291.396 630.194] +/Subtype /Link +/A << /S /GoTo /D (listing.7.1) >> +>> endobj +628 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 609.392 258.489 618.238] +/Subtype /Link +/A << /S /GoTo /D (listing.11.1) >> +>> endobj +629 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 597.437 181.419 606.283] +/Subtype /Link +/A << /S /GoTo /D (listing.11.2) >> +>> endobj +630 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 585.362 180.572 594.328] +/Subtype /Link +/A << /S /GoTo /D (listing.C.1) >> +>> endobj +634 0 obj << +/D [632 0 R /XYZ 72 769.89 null] +>> endobj +635 0 obj << +/D [632 0 R /XYZ 72 629.366 null] +>> endobj +631 0 obj << +/Font << /F62 529 0 R /F38 481 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +655 0 obj << +/Length 711 +/Filter /FlateDecode +>> +stream +xMs0:EZ} &vrJ;Ŗm6x0N+xB +5( +endstream +endobj +654 0 obj << +/Type /Page +/Contents 655 0 R +/Resources 653 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 658 0 R +/Annots [ 640 0 R 641 0 R 642 0 R 643 0 R 644 0 R 645 0 R 646 0 R 647 0 R 648 0 R 649 0 R 650 0 R 651 0 R 652 0 R ] +>> endobj +640 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 619.29 242.31 630.194] +/Subtype /Link +/A << /S /GoTo /D (table.8.1) >> +>> endobj +641 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 597.372 255.66 608.276] +/Subtype /Link +/A << /S /GoTo /D (table.9.1) >> +>> endobj +642 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 585.417 264.537 596.321] +/Subtype /Link +/A << /S /GoTo /D (table.9.2) >> +>> endobj +643 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 573.461 258.559 584.365] +/Subtype /Link +/A << /S /GoTo /D (table.9.3) >> +>> endobj +644 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 561.506 265.254 572.41] +/Subtype /Link +/A << /S /GoTo /D (table.9.4) >> +>> endobj +645 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 539.588 250.221 550.492] +/Subtype /Link +/A << /S /GoTo /D (table.10.1) >> +>> endobj +646 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 527.633 262.176 538.537] +/Subtype /Link +/A << /S /GoTo /D (table.10.2) >> +>> endobj +647 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 516.301 261.349 526.582] +/Subtype /Link +/A << /S /GoTo /D (table.10.3) >> +>> endobj +648 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 503.723 297.035 514.627] +/Subtype /Link +/A << /S /GoTo /D (table.10.4) >> +>> endobj +649 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 483.862 180.602 492.709] +/Subtype /Link +/A << /S /GoTo /D (table.11.1) >> +>> endobj +650 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 469.85 256.686 480.754] +/Subtype /Link +/A << /S /GoTo /D (table.11.2) >> +>> endobj +651 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 457.895 276.671 468.799] +/Subtype /Link +/A << /S /GoTo /D (table.11.3) >> +>> endobj +652 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.948 438.034 183.352 446.881] +/Subtype /Link +/A << /S /GoTo /D (table.D.1) >> +>> endobj +656 0 obj << +/D [654 0 R /XYZ 72 769.89 null] +>> endobj +657 0 obj << +/D [654 0 R /XYZ 72 634.101 null] +>> endobj +653 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +674 0 obj << +/Length 121 +/Filter /FlateDecode +>> +stream +x3PHW0Pp2N!\nfF +F&z +!i +F +f&zF& +!) +>%Fi9HB#5$3?X36n0##c=Cs]3#(Z\C +endstream +endobj +673 0 obj << +/Type /Page +/Contents 674 0 R +/Resources 672 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 658 0 R +>> endobj +675 0 obj << +/D [673 0 R /XYZ 72 769.89 null] +>> endobj +676 0 obj << +/D [673 0 R /XYZ 72 634.101 null] +>> endobj +672 0 obj << +/Font << /F62 529 0 R /F38 481 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +683 0 obj << +/Length 1735 +/Filter /FlateDecode +>> +stream +xڵXKs6WHD"Sm'N&33==@$D& +q +#A pSzj1K(:4GˮiC +FȟAl4FS=?6!~&?I9r +mD<P3trk[m0{6q^)ȳؐiqPghQvEO#W:,K_@Ŀ-MH7ڛ +g1 jiE
FXCb8*X7=hBܢu.u +.y~%
ȋE1aQ\2ISڟ!LGeIZ2IS+m5%ky*" +endstream +endobj +682 0 obj << +/Type /Page +/Contents 683 0 R +/Resources 681 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 658 0 R +/Annots [ 677 0 R 678 0 R 679 0 R 680 0 R ] +>> endobj +677 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [348.613 728.53 375.513 739.434] +/Subtype /Link +/A << /S /GoTo /D (subsection.11.3.3) >> +>> endobj +678 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [101.436 716.575 113.391 727.479] +/Subtype /Link +/A << /S /GoTo /D (chapter.10) >> +>> endobj +679 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [430.62 716.575 450.047 727.479] +/Subtype /Link +/A << /S /GoTo /D (section.11.2) >> +>> endobj +680 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [165.339 583.599 442.799 593.88] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://creativecommons.org/licenses/by-sa/3.0/)>> +>> endobj +684 0 obj << +/D [682 0 R /XYZ 72 769.89 null] +>> endobj +685 0 obj << +/D [682 0 R /XYZ 72 746.704 null] +>> endobj +686 0 obj << +/D [682 0 R /XYZ 72 642.993 null] +>> endobj +688 0 obj << +/D [682 0 R /XYZ 72 533.304 null] +>> endobj +681 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F14 687 0 R /F40 482 0 R /F71 689 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +693 0 obj << +/Length 1834 +/Filter /FlateDecode +>> +stream +xڍWK6WVȪz?6H(JKE,w}g8CIv\$r807㛈[l(,$2e&fn;ql< +iCUhaYǴ`6NUzYf-EoxGQ<HGڪm_#iúH +Tae$p)'&
ZL'9Xe`i`5QS?3l'|$,4m[y֣ڰHJڲ+I#gy z}G1 +sϲl7R1 +yGI`NN_d俓2-Nq:~tgkXivC+7e:B,.,HsqsuTzp:5Zpt G09W$83n dFiC\^GIʋ9^7UYr95)I0
4 +KKD'.n*]0}yi<8N s,Rz%"#D3wA+'q,rÈBg|!Ioߋ;ܰNIcxQXCóT'FR_Q'Ct +ftw +^57n\Q+>.mbfGTkjӕZw"| + zҔ'glWwpZ8`k$ +Hu|{p=X2 +$K#BB-tk$ʁMg͌Ev]c,S/CwXY&#hypN?`QF<]yU18=J#L{5WȚύU: +qj%sBl(`r|W1*.!}iWsM7JxFQ}')|/!$Kex>ĐxQ!uګ4»#entǎ4jw!03E$\h採Kx4WLvFOG!OyV)C Uoo` s P{!@*3.b9ΧwvJ |p@-A=7=YM5
ii6CPv6*r*x܌7CV̂BSn464Q=o zdŀ!mEG.D+Ssξ_ׇϟ~ +䦞_ g < eBχݛoK +endstream +endobj +692 0 obj << +/Type /Page +/Contents 693 0 R +/Resources 691 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 658 0 R +/Annots [ 690 0 R ] +>> endobj +690 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.945 474.483 228.9 485.387] +/Subtype /Link +/A << /S /GoTo /D (chapter.13) >> +>> endobj +694 0 obj << +/D [692 0 R /XYZ 72 769.89 null] +>> endobj +6 0 obj << +/D [692 0 R /XYZ 72 769.89 null] +>> endobj +10 0 obj << +/D [692 0 R /XYZ 72 583.291 null] +>> endobj +14 0 obj << +/D [692 0 R /XYZ 72 442.235 null] +>> endobj +18 0 obj << +/D [692 0 R /XYZ 72 285.105 null] +>> endobj +22 0 obj << +/D [692 0 R /XYZ 72 163.841 null] +>> endobj +691 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F71 689 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +697 0 obj << +/Length 1032 +/Filter /FlateDecode +>> +stream +xWK6me VHlStl{ +߲h^/3Jr良7l|a/8("pvq1*͟fBv}pZnqN-w+[Ը廨H˿lV-nʾ3BuOnj,bdUMB/6tヤr0x\Q.*i^\od4T"#dMCxL=o8ŋFEZfxTd*Ueݱvk;I|Nw$^ +o +Z(Hx;u}55mf.)eCXDc~:^" =^ې,=c[ Y-Hr"6O;ܶb<W/ci_ƇV3,uy|:܇^M89AiD%Г 5DZo)qy%{XjJ%\L#wpQ ! PJYuZ%ebTW5/!$eHe@ +ch$҂Q͖3?$$
FvbLt1&=j}`|&?f;<!aZ0)Q=so#'dq<^j;g?BPRvARpFUG&.!R.r{[X)EG;;Hб +&cUkR/ ?<gQ5wW2Ba}L=?-yֹjQ#;zVQܞA'%K&IqM"JS" n5<X +endstream +endobj +696 0 obj << +/Type /Page +/Contents 697 0 R +/Resources 695 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 658 0 R +>> endobj +698 0 obj << +/D [696 0 R /XYZ 72 769.89 null] +>> endobj +26 0 obj << +/D [696 0 R /XYZ 72 593.76 null] +>> endobj +695 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F14 687 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +702 0 obj << +/Length 1308 +/Filter /FlateDecode +>> +stream +xڭWYo6~УF/]}:uQ
U6:캿CrtJ}hz{z(ܜ~sS<6w^½8fo&yD}|H 3FI2\nvU[(uuՎ:$BIb B8B_u5EكVW+'/Ym"2<Fe<%\J4lwQ=:ax8I +*|RDro;Y[TOJFt4_jBÒK];V89BSHEsh9r7hu_bNjWm5h_:
FpCIC<]QT=-*jRd*PBc9LK@8J|.Λ畑lM:1f`a6SVA5*l]Dҙ%<e1X, P?4̾HÓ$4vz/;g+<kxy4Pұ! +e"^ <h4xL\
N|(#31Ai^cdH$@)tʨ!``v:,(&|F(b$l(fE=DƩ9`QMQ,Hڛ)MH&%~0YvwuYb-2]]=ac̮]BVY%Xr `ߌPTypͪV +ouqLπ\&hVIݛΠsT +AJ"toC8K #T,/ͣVU +>B?{B ,e~&]ݸuX3^,(|ѽ+ h +f5C/k@
.yyOWb/17NR_܄0Z}Yg@v@aa@SpoC1(|qY頪zC uj.A9O˶-`Y7cm9Y_&!+/~~J0$S ++ 6o~ﭶ?-F%!ɂF*JD!˗f +endstream +endobj +701 0 obj << +/Type /Page +/Contents 702 0 R +/Resources 700 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 658 0 R +/Annots [ 699 0 R ] +>> endobj +699 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [458.786 155.649 480.704 165.835] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.3.2) >> +>> endobj +703 0 obj << +/D [701 0 R /XYZ 72 769.89 null] +>> endobj +30 0 obj << +/D [701 0 R /XYZ 72 769.89 null] +>> endobj +34 0 obj << +/D [701 0 R /XYZ 72 583.291 null] +>> endobj +38 0 obj << +/D [701 0 R /XYZ 72 502.752 null] +>> endobj +704 0 obj << +/D [701 0 R /XYZ 72 433.701 null] +>> endobj +42 0 obj << +/D [701 0 R /XYZ 72 387.185 null] +>> endobj +705 0 obj << +/D [701 0 R /XYZ 72 316.077 null] +>> endobj +46 0 obj << +/D [701 0 R /XYZ 72 271.619 null] +>> endobj +50 0 obj << +/D [701 0 R /XYZ 72 212.466 null] +>> endobj +706 0 obj << +/D [701 0 R /XYZ 72 142.075 null] +>> endobj +700 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F71 689 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +709 0 obj << +/Length 2445 +/Filter /FlateDecode +>> +stream +xڥYKQJ0 [vʱNSN%-a"nh|PyؤI7_|UMZHf5햳]iANKH5GwnWyE%/QFIxJA"hg=cC]?~-;=Қc36I~k(҅<+Y!KI~M}QL}vIۯ'RԸS߃SIqy܁G3[s+xIu9]تh1"Kk1 zb.=zB3رs05KK)
(Bk=[v|㮈dyVos:eB[pjTN{l,fFժ4c@_=`C3Kdٿ4&eQ\hݳжmwh4<|WS)?1r9dě(*&+A +;\FZV0dEXQVŤ@^#otlo(b?fR.4S ?4rQ;@$߮Փ"眚qU5if-.JJV
4/n;W&ϕwWۏfu?COZ]@ +Ajl:
m>fY܀B{m!M~"F!p+]TD~ Vzqt4. Q7~r2:)w .z4?bvh3IvbVRZRJԾE +s"ЃS?'w1;up3[9c=$WZzc4)Ԛ̫KBF$Ǒΰ1N&B=Mmiqۯ1Frn-w9䔱NMtR/,3IrPƞPojZ/ܒv݀S\Nn~UqÔ\
buҥ:[<N#nE?˻$g(9g,6$[t7Ξ;5`Drܜ;³`ݳZq.oe81w= +/D_!}ӝ +8.dv)gvHw*JՌ_z FS~1F3z_J:˂zͷ] +P%(8`W5}BvG915`˳I^{[ⱸU9ݩfoP\9x+ HyWWA= +Fɷ-?0Y0$02_A46mgg2ER+0~_A b:W&Fjų#Yizޕ$M}|5f/Ң'5Ƃ$O+6XY6Sq6oC- +5Ѐ*&2:%_]bw}|)S +#nUyM,ϖ3j)0 +)k}`CupV+*q8*@_D)C
XjX$%OV.V]se2dTx;l1E
k,ҁ&Y#ӓ}irOBsUu +OKݒE4NЏMbͬ^Y(WLz]::nKkVfh7U
GOJ9`җo~u +endstream +endobj +708 0 obj << +/Type /Page +/Contents 709 0 R +/Resources 707 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 711 0 R +>> endobj +710 0 obj << +/D [708 0 R /XYZ 72 769.89 null] +>> endobj +54 0 obj << +/D [708 0 R /XYZ 72 769.89 null] +>> endobj +58 0 obj << +/D [708 0 R /XYZ 72 718.542 null] +>> endobj +62 0 obj << +/D [708 0 R /XYZ 72 586.538 null] +>> endobj +66 0 obj << +/D [708 0 R /XYZ 72 399.14 null] +>> endobj +707 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +714 0 obj << +/Length 377 +/Filter /FlateDecode +>> +stream +xuRMO0WH$sĐ8p*'XUda>??9!@.gPy3/+EڌY#͊R% + Bzq]/ۦGoB6bXܴL<P*]اR3[lrz+˫n +1Fqg5]f(uz6+E!>ncS
@Nb0yLq-4Ff,O1+e4rieq)@#o%AJ?-gGT͘#\k)2__Vb܉pbmuDqRMP^i+ȑ颙}s +endstream +endobj +713 0 obj << +/Type /Page +/Contents 714 0 R +/Resources 712 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 711 0 R +>> endobj +715 0 obj << +/D [713 0 R /XYZ 72 769.89 null] +>> endobj +70 0 obj << +/D [713 0 R /XYZ 72 769.89 null] +>> endobj +712 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +726 0 obj << +/Length 1832 +/Filter /FlateDecode +>> +stream +xXK6WVX+gzn"EjФZmaMimMEcH{>ٜ6ڿx&p7coMn0]٧Y՝n;w,k+-0 +.p6;߷XЂ6f+"KkZl]ߪ:Z.MlǁC؋۟v^l%IqKsYS#WִrbasHU_c=dyJFUuUseowZoX9ԃ+v#Y7̆Ps5:1.0:@c'Z'
LJucyVSo4?9
K"o+ZPyґF^E fUrN)T m>xh;XzhǞZ7L%.~Ւ貄NJ}Tq,j)TRyVYq +q+|1͎Wvi_*O-=tiN8> 'Dǻzr[Ҳ{b$$6$yqAfno)"
CY~LP!e|#4DىЎ%G53
`K!~g!q1OTg4zHEI +Mz%'IN"p}HFO3sjt;nۤm}$]֛pR.-Kّg=>3#nc苍|ǖ GQ@ۏSt>IFT5 +rhЉ: E'R ߓ$WNddK8u<Q'GsI;N~DZ$"!#I=%)2-uL=GiZe2i並*>kyҿU&eLXgL:רO,ԅ74YZfW +lwEb'ϋG:۟5xzW6 +ԧZiy-s^mwTJ; +'!+|dÓb$écTSpՀQ +3ZDᣁSҖ+jA{ +eʱECit[W`5 +)9uy,.f1spBAU +V_qVkUC')ݗ.Jg.]DZbϺMӌyXQK1:8BnS} + +a44a*GVu +endstream +endobj +725 0 obj << +/Type /Page +/Contents 726 0 R +/Resources 724 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 711 0 R +/Annots [ 716 0 R 717 0 R 718 0 R 719 0 R 720 0 R 721 0 R 722 0 R 723 0 R ] +>> endobj +716 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.528 442.916 235.974 451.763] +/Subtype /Link +/A << /S /GoTo /D (section.3.2) >> +>> endobj +717 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [277.827 428.904 292.273 439.808] +/Subtype /Link +/A << /S /GoTo /D (section.3.4) >> +>> endobj +718 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.257 416.948 334.703 427.852] +/Subtype /Link +/A << /S /GoTo /D (section.3.5) >> +>> endobj +719 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.283 404.993 327.729 415.897] +/Subtype /Link +/A << /S /GoTo /D (section.3.6) >> +>> endobj +720 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.257 393.038 334.703 403.942] +/Subtype /Link +/A << /S /GoTo /D (section.3.7) >> +>> endobj +721 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [471.219 289.327 485.665 300.231] +/Subtype /Link +/A << /S /GoTo /D (section.3.4) >> +>> endobj +722 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [298.24 259.439 307.426 270.343] +/Subtype /Link +/A << /S /GoTo /D (appendix.A) >> +>> endobj +723 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [486.759 247.484 501.205 258.388] +/Subtype /Link +/A << /S /GoTo /D (section.3.3) >> +>> endobj +727 0 obj << +/D [725 0 R /XYZ 72 769.89 null] +>> endobj +74 0 obj << +/D [725 0 R /XYZ 72 769.89 null] +>> endobj +78 0 obj << +/D [725 0 R /XYZ 72 523.897 null] +>> endobj +82 0 obj << +/D [725 0 R /XYZ 72 342.478 null] +>> endobj +724 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F14 687 0 R /F40 482 0 R /F71 689 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +739 0 obj << +/Length 2477 +/Filter /FlateDecode +>> +stream +xڽZߓ۸
~_>=+}6v.s}irsm,$y7ۿ +->x3/y +Q3֯ɔuxYhC I.os˩$VBMngU)܍:ɼ`ųo]VA<" +=8\cLW97q|Pkt*[o+.Z:{ogF>0yݰ +Cx+d +m5澮N<cM'e@*67eƁj&ţ^Aǐ1:@Y_%+խfݕA*Xj*4/g]H&
%f&qtL 7)3uRFTߎEu(usC$s+4Yp.X#o貈pYϥ/486F8+CG}7|M7iE*t0Y슢erJ.%jo +'Lʭ]C,"p`鴙=~ת5(mw==q-G%uaomexQLleV҅eJò +TG`Q6/wGM+ y(g DI=Ї*A$<TrNj $2n?aC|{/" +endstream +endobj +738 0 obj << +/Type /Page +/Contents 739 0 R +/Resources 737 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 711 0 R +/Annots [ 728 0 R 729 0 R 730 0 R 731 0 R 732 0 R 733 0 R 734 0 R 735 0 R ] +>> endobj +728 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.473 712.655 325.447 721.501] +/Subtype /Link +/A << /S /GoTo /D (chapter.6) >> +>> endobj +729 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [298.24 698.642 307.426 709.546] +/Subtype /Link +/A << /S /GoTo /D (appendix.A) >> +>> endobj +730 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 0] +/Rect [293.976 676.889 300.95 685.636] +/Subtype /Link +/A << /S /GoTo /D (cite.Glep44) >> +>> endobj +731 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [452.602 457.447 459.576 468.351] +/Subtype /Link +/A << /S /GoTo /D (chapter.4) >> +>> endobj +732 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [238.534 194.567 260.451 205.446] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.1) >> +>> endobj +733 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.903 166.602 135.82 175.449] +/Subtype /Link +/A << /S /GoTo /D (subsection.2.1.5) >> +>> endobj +734 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.257 146.747 286.175 157.626] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.2) >> +>> endobj +735 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [113.903 118.782 135.82 127.628] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.3) >> +>> endobj +740 0 obj << +/D [738 0 R /XYZ 72 769.89 null] +>> endobj +86 0 obj << +/D [738 0 R /XYZ 72 769.89 null] +>> endobj +90 0 obj << +/D [738 0 R /XYZ 72 510.597 null] +>> endobj +737 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F14 687 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +747 0 obj << +/Length 2527 +/Filter /FlateDecode +>> +stream +xڽYݏ۸_@I @wE\Yr%9;Rws)'(\=՟^>jʂLK?Jbdu~[_"7}ThA&0cԽ)nBqo[r#֍lTe]~@cPwhZjG<GteߴO_àԦ~Dz?a1E
/<#>tUI17xkc8|}fDGx2=ˎ+rl W)DMSaLĸQ ОRD;^|B!W@vlUSwp("DA
s5'8-$㩖ˑӜa WHХ}_i,uKݱfBɆvY,HAE&RE%ĺ6'5QoœT:n9bE[,T ttuufn!Q1Gh +ϱk8T5h+<aMgyv%R2I)_
rl;Ah39lkoa6?>/άAށ|A7ic5}oX9sᕑ}5[dƗ4]j(wRvq"#/nEDε9gsn**t.E)ٍ_>-co`Z +vd(ba8v#@qٛ k#mߺ8 e[$z]u݁4LbM</ws}s:u_XBv[n57҅OUv=n nb!8\H6-s}=(lSb=]{RQNǻf_N:oDz^)֨FIOGpg:
iw@@zPl +Yi^=x %gaq}A=\&?qdEÏ?8ap"
2@T`wc2;@u0-_x4*cC//4Ե)0
OD/d.=;> +\RQt?s:I!ewrL=yٝ+EC٢/x)}"#FE-FRn,t#Z +bc@8C@Dκ0;
hRJJyuA2PLȋ"_sF4)?wi/|[FҡErB,Gg$H-ONx
s@gO%vL4ZUE83%rr`n?^D +KjAɃA, +2gJvJ #lJ+5,. ++Uh&M,e;:)LM;Ԯe$nw"kr-duBp?^_O}P@5 +~W~E;ݛoՋ?aeCSGɖ:L +endstream +endobj +746 0 obj << +/Type /Page +/Contents 747 0 R +/Resources 745 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 711 0 R +/Annots [ 736 0 R 742 0 R 743 0 R 744 0 R ] +>> endobj +736 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.057 744.819 312.974 755.723] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.3) >> +>> endobj +742 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [478.051 703.693 499.969 713.88] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.3) >> +>> endobj +743 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [261.387 673.088 283.305 684.101] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.4) >> +>> endobj +744 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.334 613.935 443.78 624.839] +/Subtype /Link +/A << /S /GoTo /D (section.3.4) >> +>> endobj +748 0 obj << +/D [746 0 R /XYZ 72 769.89 null] +>> endobj +94 0 obj << +/D [746 0 R /XYZ 72 659.514 null] +>> endobj +98 0 obj << +/D [746 0 R /XYZ 72 468.854 null] +>> endobj +102 0 obj << +/D [746 0 R /XYZ 72 254.284 null] +>> endobj +745 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F71 689 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +753 0 obj << +/Length 2620 +/Filter /FlateDecode +>> +stream +xڭَ8=_Gh+"s&0,\~E$Bdɑ*V:Z"U`s +W߫tY,~ML6wև~SQ.̻/i,hmrݷ-JCKNJaXnE=с>my7F˼jOК~>>ꟿjh/wz>&f?Raҗ~Q9Ad _eXUf'Eшns]_Ü*?Ncؕ!{_#oܱ+#o\q=;g)@2eǧ=j8j~U i0cϤqEaRX9
]$`٩cAxwǒ=e +0|h<gG +g)
p@dT +AGxp +aXwtªmzLԢK=`CUe^OifK)
M?뫶
"
! +~mzI5[Q66%-emK6\淋Tb5T"3Ob~c?˚3~4B + +M?$<0 o.9ED<X`ua@4KvAÅQa%<E\N(FQ1X|ǕB3Q6O]T)4\ӭ31O+"acScחPj^sУ^ +HULX] +d-Zq+$^2ylӮđ`TL*dˋ{>J./å+!êD͟`1rb6DdIQgl,jA}z{ӺZ/?ľ},;QbYSe~D$>VyᆪH}/t^[+Mg'Z%b.#[C~ޞ+܌. +2>Aie'~`L +?~^0<v*zYK@|2`m*%gߔeeGM\Iuob#0RkRܲr@u.U.y1@{+Ͱ~R8@nCm+e9ǰ+]uLi3^:m^2qRq9e9L*a9%ʁ
"eEds<C,F,bKHpvS|L^ړiEI5,өO}(YZ:҇a#tݷ\dnUH7aqum9ێ)XʲX+YߗR9L0z>Y! TTp^z:g^5:i@Sm*z +R3N0}yH8K$~9$T? +lr2%*h}:`9^s鵧^E-5irAc&)ha84v(:a@%Bez.ڦ&,KL Gm&e
ULKB=L($C,i^cdfqm4R&ǕE+Dp*ҲYϒ>.
~'v eJ2Y,f"οR7Lj;#V),:T]lgoݛ6b8㸹֮]0>ZH*lŰNNf{%lk:!/Ƥ}F,QJ+
-7!U.4*B KC\Cp3F+LX[/*,|C)ޗpUYdg{Qp[]0ٟB\K_V1Z0[<A,W(X3EGc_߭%7:db(a-w)3 +endstream +endobj +752 0 obj << +/Type /Page +/Contents 753 0 R +/Resources 751 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 711 0 R +/Annots [ 749 0 R 750 0 R ] +>> endobj +749 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.536 438.493 438.982 449.397] +/Subtype /Link +/A << /S /GoTo /D (section.8.2) >> +>> endobj +750 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.762 346.737 168.736 357.641] +/Subtype /Link +/A << /S /GoTo /D (chapter.7) >> +>> endobj +754 0 obj << +/D [752 0 R /XYZ 72 769.89 null] +>> endobj +106 0 obj << +/D [752 0 R /XYZ 72 721.292 null] +>> endobj +110 0 obj << +/D [752 0 R /XYZ 72 503.599 null] +>> endobj +114 0 obj << +/D [752 0 R /XYZ 72 411.843 null] +>> endobj +118 0 obj << +/D [752 0 R /XYZ 72 332.042 null] +>> endobj +122 0 obj << +/D [752 0 R /XYZ 72 229.452 null] +>> endobj +755 0 obj << +/D [752 0 R /XYZ 72 113.138 null] +>> endobj +751 0 obj << +/Font << /F38 481 0 R /F40 482 0 R /F62 529 0 R /F71 689 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +758 0 obj << +/Length 1120 +/Filter /FlateDecode +>> +stream +xڥW[s6~ϯўYk@L ٥v:26DeI6}8:G;wa[G˶>_أStS\+:XG yVX,~o+bۋm̗+DEK'<S^+ʟ6~ +}ЄqMZnq쮶& +]<2#o|KӣUJ} +89=vYL[VM2u&&O)$=Yeo:.FIˢK$R ʹ
P+Uݷ>Sf
PTx" +pqw#QQ&&B$P..hDoAYl4jLg)Dp\~9]Hjm_) +endstream +endobj +757 0 obj << +/Type /Page +/Contents 758 0 R +/Resources 756 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 775 0 R +>> endobj +759 0 obj << +/D [757 0 R /XYZ 72 769.89 null] +>> endobj +760 0 obj << +/D [757 0 R /XYZ 72 769.89 null] +>> endobj +761 0 obj << +/D [757 0 R /XYZ 72 757.77 null] +>> endobj +762 0 obj << +/D [757 0 R /XYZ 72 746.189 null] +>> endobj +763 0 obj << +/D [757 0 R /XYZ 72 734.234 null] +>> endobj +764 0 obj << +/D [757 0 R /XYZ 72 723.907 null] +>> endobj +765 0 obj << +/D [757 0 R /XYZ 72 709.95 null] +>> endobj +766 0 obj << +/D [757 0 R /XYZ 72 697.994 null] +>> endobj +767 0 obj << +/D [757 0 R /XYZ 72 686.039 null] +>> endobj +768 0 obj << +/D [757 0 R /XYZ 72 674.084 null] +>> endobj +769 0 obj << +/D [757 0 R /XYZ 72 662.503 null] +>> endobj +770 0 obj << +/D [757 0 R /XYZ 72 650.174 null] +>> endobj +771 0 obj << +/D [757 0 R /XYZ 72 638.219 null] +>> endobj +772 0 obj << +/D [757 0 R /XYZ 72 626.263 null] +>> endobj +773 0 obj << +/D [757 0 R /XYZ 72 614.308 null] +>> endobj +774 0 obj << +/D [757 0 R /XYZ 72 602.353 null] +>> endobj +756 0 obj << +/Font << /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +779 0 obj << +/Length 1849 +/Filter /FlateDecode +>> +stream +xڵɮ6잯[<@*)-=55oxHv"%oS{DRNχUO~!Kb!t9 dg=rUI)+8](bY/$SYƲN'{Lh$Yr!-⼀.</qz<IDH͚1G^`YgEA,bw?2z,RF6 +[.dƁ +7U4;|45=vUMaj*2gIad휲t:Ө3b_c{\
śG枏Y;/,tsLaBiz^,Ww%R2ϚN_:"ȏ[ODStSvb12H[#0(33[`m1n0SwZYU}oH=؍CwUkh/e\\!YQ[ ekc`;Phw;Px1CT<.\XFkn0[igPĝf?^)*1GJkJ )9-œfZy']%&O#bQ<a<E0[Z.z;+gVRT%Vng`H|,#e[t!jh}"CaDe&L9J{"G18^YlFq +n+H_&W+`Z; + k +endstream +endobj +778 0 obj << +/Type /Page +/Contents 779 0 R +/Resources 777 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 775 0 R +>> endobj +780 0 obj << +/D [778 0 R /XYZ 72 769.89 null] +>> endobj +126 0 obj << +/D [778 0 R /XYZ 72 769.89 null] +>> endobj +130 0 obj << +/D [778 0 R /XYZ 72 583.291 null] +>> endobj +134 0 obj << +/D [778 0 R /XYZ 72 423.922 null] +>> endobj +138 0 obj << +/D [778 0 R /XYZ 72 388.945 null] +>> endobj +142 0 obj << +/D [778 0 R /XYZ 72 235.624 null] +>> endobj +777 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F71 689 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +783 0 obj << +/Length 2790 +/Filter /FlateDecode +>> +stream +xڝY[~ + ̔w]CaF1:VއڣiۊGˮECݵKz7i{>\dZmD
)2eavn֛0Q^320w ۺE YUIs~Xgdz8N߅aVv0 Fq.LG <T1R;ܑ@è%'b˶|uZhD\[IQ5%MNbp%}3B`׃5;YFGn=Q
k
';"7?$#^4hPb[{8uDAG|_}u#PO4 +ǃhx(,ɗNy&Qq_qmRu#6v@H=ϻp7;~`$unwCaI9 PDaO0io7vHs? +/PE]SmCփj, +m-4/N^ +W1degR%_~I˝82<|B.#Me<t}.Z*Bjہ)3aL$(N%5:G(cX߰1T<9 IC%DRM1A͟jȢIE1xRF 8ái[r_l v9_Wyн.z6JPa 멖KL ++{3&Re""ٞLI+]}^sj! }=@.kv/ M +b9'\dH3Ƃt +8Knz{fp&#˂`&c:#W4҄ +OV7%ۨh0<wURFPyAuݔl7
A{{z=g(&B){/.a)uޣ,XO@Šߋ>B.8Aw2Lsy@'bBu>:[7|3òG -7܄YUW_Tgg(._Y088G0T0)HM<?I=n +endstream +endobj +782 0 obj << +/Type /Page +/Contents 783 0 R +/Resources 781 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 775 0 R +/Annots [ 776 0 R ] +>> endobj +776 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.816 708.206 228.262 719.11] +/Subtype /Link +/A << /S /GoTo /D (section.4.3) >> +>> endobj +784 0 obj << +/D [782 0 R /XYZ 72 769.89 null] +>> endobj +146 0 obj << +/D [782 0 R /XYZ 72 769.89 null] +>> endobj +150 0 obj << +/D [782 0 R /XYZ 72 587.036 null] +>> endobj +154 0 obj << +/D [782 0 R /XYZ 72 450.174 null] +>> endobj +158 0 obj << +/D [782 0 R /XYZ 72 367.111 null] +>> endobj +162 0 obj << +/D [782 0 R /XYZ 72 272.092 null] +>> endobj +166 0 obj << +/D [782 0 R /XYZ 72 177.073 null] +>> endobj +781 0 obj << +/Font << /F62 529 0 R /F40 482 0 R /F38 481 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +789 0 obj << +/Length 2383 +/Filter /FlateDecode +>> +stream +xڕYKϯ-6搔GrMza1v +vW/lËvSq#]ynQlC
\lGCU;o4gAV<H5e]UV:,3j"K|7i$9[i#TjÁ7N4
x,ȁ@< WD|ӍgR*#E*j12%EBڮXuqPӤ4nA2W߯Tdy>LwM +%TܺKvA` h՜ʮ=>hy0}=!iEѹƩ:KB\ ,%%Af3A<8Yחvu`54+늢#6g@vE1s(y:.Fj^=|?d4̘]8τ1fJt>8졧/ ,1hw^A +-we}yHaԝk_ UKs~Z~MHEWWwH\_Y%H7fmx!G_9̩-+$|H@JSp$y!; + +6(ny1Ӫ\H=b.>!wpC3|`cG&YrA$$3wlv; zk7H=:hrfd<óR +X`XAL,5Ʌe^[9B,A;4gf!z'oh%?7Ydi.D0\qg]C %~dALdcwĨcphn3ےՠ ;- +C~8硓]GqRSS|[+ɑ!%Wձ9O**f&W G7K4bD2٨קO?A9ƓF22%nGHX21q, +)031^ +_R$X:;rTRo)3ؕD2t2S@7luDC +7|埐_}߂'$bDPKCe͵o+8 +endstream +endobj +788 0 obj << +/Type /Page +/Contents 789 0 R +/Resources 787 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 775 0 R +/Annots [ 785 0 R 786 0 R ] +>> endobj +785 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.404 678.692 271.85 689.222] +/Subtype /Link +/A << /S /GoTo /D (section.3.4) >> +>> endobj +786 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.256 306.961 202.23 317.865] +/Subtype /Link +/A << /S /GoTo /D (algorithm.1) >> +>> endobj +790 0 obj << +/D [788 0 R /XYZ 72 769.89 null] +>> endobj +170 0 obj << +/D [788 0 R /XYZ 72 769.89 null] +>> endobj +791 0 obj << +/D [788 0 R /XYZ 72 665.118 null] +>> endobj +174 0 obj << +/D [788 0 R /XYZ 72 620.286 null] +>> endobj +178 0 obj << +/D [788 0 R /XYZ 72 525.267 null] +>> endobj +182 0 obj << +/D [788 0 R /XYZ 72 430.249 null] +>> endobj +186 0 obj << +/D [788 0 R /XYZ 72 226.513 null] +>> endobj +787 0 obj << +/Font << /F62 529 0 R /F40 482 0 R /F38 481 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +797 0 obj << +/Length 2721 +/Filter /FlateDecode +>> +stream +xZYsF~ׯ[-s<'lbɉG)G"* `@+sZ`3}Ͼ?+YBgI!Y9`FI
fA4ᾚ]볗c:Pxv}k2xZ>E]Ӗz3_P#2ǗY:"!vWt>T]Yg#@ifYxd,hDYcqb#~H BIW^9\˭+%pkk&]Jq;"j ɼX[mcZIXڭouVv%[FѪ2L=UsT3$84 +̯_Z8H$)&,ZY@q&<!r)XO +f +S8QG8PL2O9ȱu"f8jѳαe...6ᗲ)KucACkn}gf +9El\Ojƕa+jÌ1gBW$DNn"/cҥT$Zk5zfkfcZ?MP%X'ȏ0;K2Xܬnwn)|ps_{_;
[N~ɲaJcF]QfzZQRk4A.ˮۇy,%xnQ-B`[Y~^9&͈Zi->5$45v-]]`\A6!D+ B?zj]68>] bW$ 6;xKo.l7^7>|u?duꧯo~}8dߎ6Uo\:C$<C4Kcc$4GNy[p +4|aHTZ? +,=PK{1jrS}6uF}\Z5/t]j4(,.:ؚyUvng,V,Cv+hR,/Im +S!t۶fQo. X_G*aP eP +Mܿ*ն}U8p~Uz--}}8/:{TpCAe{ǿ $r +endstream +endobj +796 0 obj << +/Type /Page +/Contents 797 0 R +/Resources 795 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 775 0 R +/Annots [ 792 0 R 793 0 R 794 0 R ] +>> endobj +792 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [472.593 272.909 487.039 283.923] +/Subtype /Link +/A << /S /GoTo /D (section.3.4) >> +>> endobj +793 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.935 231.066 368.834 241.97] +/Subtype /Link +/A << /S /GoTo /D (subsection.12.3.2) >> +>> endobj +794 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [438.768 171.29 445.742 182.194] +/Subtype /Link +/A << /S /GoTo /D (algorithm.2) >> +>> endobj +798 0 obj << +/D [796 0 R /XYZ 72 769.89 null] +>> endobj +623 0 obj << +/D [796 0 R /XYZ 72 769.89 null] +>> endobj +799 0 obj << +/D [796 0 R /XYZ 72 753.696 null] +>> endobj +800 0 obj << +/D [796 0 R /XYZ 72 753.696 null] +>> endobj +801 0 obj << +/D [796 0 R /XYZ 163.526 758.896 null] +>> endobj +802 0 obj << +/D [796 0 R /XYZ 72 732.829 null] +>> endobj +803 0 obj << +/D [796 0 R /XYZ 72 720.993 null] +>> endobj +804 0 obj << +/D [796 0 R /XYZ 72 710.976 null] +>> endobj +805 0 obj << +/D [796 0 R /XYZ 72 697.083 null] +>> endobj +806 0 obj << +/D [796 0 R /XYZ 72 687.066 null] +>> endobj +807 0 obj << +/D [796 0 R /XYZ 122.976 687.165 null] +>> endobj +808 0 obj << +/D [796 0 R /XYZ 72 661.098 null] +>> endobj +809 0 obj << +/D [796 0 R /XYZ 72 649.262 null] +>> endobj +810 0 obj << +/D [796 0 R /XYZ 72 639.245 null] +>> endobj +811 0 obj << +/D [796 0 R /XYZ 72 625.352 null] +>> endobj +812 0 obj << +/D [796 0 R /XYZ 72 615.335 null] +>> endobj +813 0 obj << +/D [796 0 R /XYZ 72 603.36 null] +>> endobj +814 0 obj << +/D [796 0 R /XYZ 72 591.404 null] +>> endobj +190 0 obj << +/D [796 0 R /XYZ 72 555.14 null] +>> endobj +194 0 obj << +/D [796 0 R /XYZ 72 336.421 null] +>> endobj +795 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F71 689 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +817 0 obj << +/Length 656 +/Filter /FlateDecode +>> +stream +xڕTN0+Ld40ь蠑Bny$I#}s/;s݉ +gg6}_Fׂ +
剥 +cLDj:6
:B%ƣiݫm'VkSO6PF +Ocs<EGLVوMAx3a#t,dAK`
R6 +gW 1(
APpW;b:&b +endstream +endobj +816 0 obj << +/Type /Page +/Contents 817 0 R +/Resources 815 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 775 0 R +>> endobj +818 0 obj << +/D [816 0 R /XYZ 72 769.89 null] +>> endobj +624 0 obj << +/D [816 0 R /XYZ 72 769.89 null] +>> endobj +819 0 obj << +/D [816 0 R /XYZ 72 745.521 null] +>> endobj +820 0 obj << +/D [816 0 R /XYZ 72 734.707 null] +>> endobj +821 0 obj << +/D [816 0 R /XYZ 72 720.764 null] +>> endobj +822 0 obj << +/D [816 0 R /XYZ 72 710.846 null] +>> endobj +815 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F71 689 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +830 0 obj << +/Length 1541 +/Filter /FlateDecode +>> +stream +xڍXK6W(dYHOIvCiwC҃,kN+J/@hwd +`Tȸry5jx:턐Md R>8$rhmGi{oR֬y +1+T(1f[mc{GHeM@&3aql`b\IQq|&mC
ӸTt5g"A.1B4ݙG$>RFsQ&\-%zpE&3DcMZ,+"2z 5ŢHg9_ຊɓLkk,]8叿Nt0 +cP:E)2HU2z(3˳* )yUw +h#q;@ҷ
Ql|`|y['@SG̵ +}Q0(`6Ek{йKPa{&=oq"d38VK̞8#x8цM89y'n +*^0r0G4_2 {'9
&^! +I6Ŵ.l=DkΆ۠zB[]߯,\8جwpV3]GdcğM_OG-U\ +endstream +endobj +829 0 obj << +/Type /Page +/Contents 830 0 R +/Resources 828 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 833 0 R +/Annots [ 823 0 R 824 0 R 825 0 R 826 0 R 827 0 R ] +>> endobj +823 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.071 526.637 206.517 537.541] +/Subtype /Link +/A << /S /GoTo /D (section.8.3) >> +>> endobj +824 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.112 526.637 246.03 537.541] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.4) >> +>> endobj +825 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.068 348.58 285.986 359.484] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.4) >> +>> endobj +826 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [120.258 324.67 142.176 335.574] +/Subtype /Link +/A << /S /GoTo /D (subsection.4.2.4) >> +>> endobj +827 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.143 288.804 391.061 299.708] +/Subtype /Link +/A << /S /GoTo /D (section*.18) >> +>> endobj +831 0 obj << +/D [829 0 R /XYZ 72 769.89 null] +>> endobj +198 0 obj << +/D [829 0 R /XYZ 72 769.89 null] +>> endobj +832 0 obj << +/D [829 0 R /XYZ 72 471.22 null] +>> endobj +202 0 obj << +/D [829 0 R /XYZ 72 425.641 null] +>> endobj +828 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F71 689 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +839 0 obj << +/Length 582 +/Filter /FlateDecode +>> +stream +xmTK0hy\[mV'V= Dl}njy~hhDy-XhRGM,*:aYt9&0NIm~aBUm8O:ń](YaV2H1d6pUQ+(%`[8)e+`H`]:A;aU6.;+=ܹ-::90upIJZiH܅[L2&<49 ~wUžXW#N9ƪY/K( +w&(qRskBm +ţrC0j ү8*-Z$iŴ[iHo;,ûٙHH'=]-JĺWP>|Ua؍ҢIEfS+D.yFD}`N#kAʓoxFP0W3g +Z1P*˟j-`#(9]p`Y^뀈0jo_"1) E0*'\Sgs;Y'Gkŵ[Pq +S\>?.MwQ?L +endstream +endobj +838 0 obj << +/Type /Page +/Contents 839 0 R +/Resources 837 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 833 0 R +/Annots [ 835 0 R 836 0 R ] +>> endobj +835 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [328.113 538.592 335.087 549.496] +/Subtype /Link +/A << /S /GoTo /D (chapter.8) >> +>> endobj +836 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.313 538.592 365.269 549.496] +/Subtype /Link +/A << /S /GoTo /D (chapter.10) >> +>> endobj +840 0 obj << +/D [838 0 R /XYZ 72 769.89 null] +>> endobj +206 0 obj << +/D [838 0 R /XYZ 72 769.89 null] +>> endobj +837 0 obj << +/Font << /F62 529 0 R /F38 481 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +846 0 obj << +/Length 2094 +/Filter /FlateDecode +>> +stream +xڕXm6_2e%8KK$.p@s8'K>Qvw3-[NvIp^q +W}fr%Ce2]m\2^m/:
_?4ȋ<!ME^Ft`S5Zm4.V(3yW2(
4~Tucr՞Z3VFkZ=xx +*ɋ)蒅{}p~L_xѥ2R5G(']Ɓ|ϕ/KEcZ;;"{,n+It{iX}6Gk/,Ayal,SQ;zOtdJI%S l&HJ^o4>vi$LeV]Ç]S\m$sa*58 Y9Md&2g8/r\ +O\\p$,iAh3,"=1:^1{HL}xq?{}|Q<iDAZ0J9x+%"N`k<Wd!'\D(C`>0Lk2I)9IdB;c*!&=-IEuGV\ Nt,)8/i^z:tw e$t;КKE3?i(0QCK8IE膼wRK#?פđsN/+b
#.C5HvvM~!rA/&N'
Io)- ٳ/<+'/ete }\u6\$Uov Bdb.RDpAxVKBsx^\ +R4Vk6ܣS3==zJx0
YX`Hv]"*`=W6MpR0@-oQ.oiy-<رz>$F99,9y80ꙙGbxbls`/4(PBgsX>8u۱"A[mRW.bhf~<olJ/y?~N@dWuiJ?P^:n/9\|SuԘvgT4x +'}@tN8Q/^" (S[W,L&#/{g^(\e\sXF8&$V3'!0rHrHr9D,^EY$cQF<c +76,ȲxK$]FPݦ|6x)/w09E
+L{0O +:2)脊t"R{TP_G.FPVMNF} >(]r =I6Fw̐wWlzm1xW\ + +OeN-x|&SEyk.P|}: +u8j!c3[OEL/!}s ![]"/FԳ<>uB&ݑ9T,5no {sKK;H" X7q9!k}s/p +endstream +endobj +845 0 obj << +/Type /Page +/Contents 846 0 R +/Resources 844 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 833 0 R +/Annots [ 841 0 R 842 0 R ] +>> endobj +841 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [457.905 508.704 472.351 519.608] +/Subtype /Link +/A << /S /GoTo /D (section.3.6) >> +>> endobj +842 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [294.931 181.731 309.377 192.635] +/Subtype /Link +/A << /S /GoTo /D (section.8.4) >> +>> endobj +847 0 obj << +/D [845 0 R /XYZ 72 769.89 null] +>> endobj +210 0 obj << +/D [845 0 R /XYZ 72 769.89 null] +>> endobj +214 0 obj << +/D [845 0 R /XYZ 72 470.099 null] +>> endobj +218 0 obj << +/D [845 0 R /XYZ 72 270.747 null] +>> endobj +222 0 obj << +/D [845 0 R /XYZ 72 167.036 null] +>> endobj +844 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +850 0 obj << +/Length 1016 +/Filter /FlateDecode +>> +stream +xڕVm6~*h5UjR\*+`{]5=6,jl<og5|C*8A J) 6S<E1Mq!m'/fۇw>~tdD/q<ɲ}}8Xo NL!4նmO8ڇ6AE& s,0e#vdS5>Y[zcߘ^n,M-/_@W~ }.Eg7E{]{ͫ>Vbj|pbU8ús+sDŸsF5/F4B
i~s=Gi6p\wNB5@f9T6BC
wiɮS{aS^tE?":tvj@ApnM,UzhW;U~`Vt[8*ƯO*LvS`Z kǐwKߨI:.WiJ8^$(@̖ke(%Lg4CEH0&Nnj&Ag +endstream +endobj +849 0 obj << +/Type /Page +/Contents 850 0 R +/Resources 848 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 833 0 R +/Annots [ 843 0 R ] +>> endobj +843 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [292.131 577.053 306.577 587.957] +/Subtype /Link +/A << /S /GoTo /D (listing.7.1) >> +>> endobj +851 0 obj << +/D [849 0 R /XYZ 72 769.89 null] +>> endobj +636 0 obj << +/D [849 0 R /XYZ 72 769.89 null] +>> endobj +848 0 obj << +/Font << /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +861 0 obj << +/Length 2170 +/Filter /FlateDecode +>> +stream +xڵXYs6~ϯ[>'7Q1{M@$aB]"iى"~/g`xnvHEn.n?t]s߷?҆M
bnaYӫrʿ</vGJlJr7O±|[
Ai8O-NMRH;.|QhP}5/m= yt.Pa [g7Bk{𮭏bZ|t,و(*-Y+"h)
,
#'x yZvb+:AWjy`3 +ypVAYe t$EU(J1302Su8- +]}>NhҴ5R5_ֵҨ:܀;h58(|=+'V5X1bߘ<VAh AsS1M*R.bwg¬e;&Z8"g/+ي-SmId[0#J$8;`3#+PтF!)vXK*t*D:I +#0[ՑRus+R7:,(K>`Vi'>{;oct#uZTPȣ +^LVZZe$|"ZIeb+=Fbj)e.L6jzϲ/yw{lD4r}h!(Cчhx1Z g̏4
I$`1ÀYZƱԷMmjEM֑ *\D+ Iz0KۻMwZ&1ͽtjWo_-\?f$p : +TK_ +LCJ9IrЛ86Mk:'[v؈2pVUDkM"K"zSZު*վB){#&?:NJhwU>pf"499w~@ \G.E1Ms>ggAvΘ'8^-O}o<sZ7UP|P?7Z. +Is
(8S #^%M +p%6VD,IO1k1bxj:'D8eg탷?ZxL_S6)8@-("KouStF쵯/<re<iwW܆g>.Nk$sA7PK'1ꧦTo+
LJB>3j[b6B:pٹ6
g3NY?hIg3hytcRUFIFQ|
$gc% +vBUW&(㳘54$-I[mWs&ੵ7?#~:yY2YUȊz
@(;8 +endstream +endobj +860 0 obj << +/Type /Page +/Contents 861 0 R +/Resources 859 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 833 0 R +/Annots [ 852 0 R 853 0 R 854 0 R 855 0 R 856 0 R 857 0 R ] +>> endobj +852 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.11 550.547 277.537 561.451] +/Subtype /Link +/A << /S /GoTo /D (section.11.1) >> +>> endobj +853 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.501 301.282 150.475 312.186] +/Subtype /Link +/A << /S /GoTo /D (chapter.9) >> +>> endobj +854 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.093 229.551 211.539 240.455] +/Subtype /Link +/A << /S /GoTo /D (table.8.1) >> +>> endobj +855 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.809 175.753 175.727 186.657] +/Subtype /Link +/A << /S /GoTo /D (subsection.2.1.6) >> +>> endobj +856 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [504.018 133.91 518.464 144.924] +/Subtype /Link +/A << /S /GoTo /D (section.3.5) >> +>> endobj +857 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.501 121.955 150.475 132.859] +/Subtype /Link +/A << /S /GoTo /D (chapter.9) >> +>> endobj +862 0 obj << +/D [860 0 R /XYZ 72 769.89 null] +>> endobj +226 0 obj << +/D [860 0 R /XYZ 72 769.89 null] +>> endobj +863 0 obj << +/D [860 0 R /XYZ 72 583.291 null] +>> endobj +230 0 obj << +/D [860 0 R /XYZ 72 535.853 null] +>> endobj +234 0 obj << +/D [860 0 R /XYZ 72 414.209 null] +>> endobj +859 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +875 0 obj << +/Length 2370 +/Filter /FlateDecode +>> +stream +xڵYo6_5CR(=zM&nmQ(6N\I6(,ɲwO1o4xh:]u%q2a$,Xb0/lc#F/>ܴfvuWQe,!NMkkxwBenJgpE/7_\/.~e03%4 ۋ?`_HXn42<: T@F ٜqJ;Q) =|xؐaQ= U"KϿj t*er:!(&2N{ +=sH[ gi4HCվ"i%i"&bAɃ$ܰqȆ;6fx_l{",C( +۲x?mg+ü,V*ߪ78eKoK-\NFc"dWje2jYm{ +XyBX6{%1\=@s0J !IEV_9U"s*k3f(f5:xhc̪D6uW/5a╌ciuf/I7 0'Ԟ$Iʟ#קܦZMy@PۢiffSO4BQRD*v;^mcJ+h/Qm[KE,+͟3m!
Ӣw49T;e]R65Š$.6|=!JѣYADo2Q)H`_0]ZRu3Bgזhʽj5.XۼkaС`CNɰKf2+fGث9ⰨRv/|zoRP=)Q|, 9ZhWjxe@F&Lx^ܗBޘC^[#WV~e8 +ݾ"rv~N +gI|УS$oU^A.j͢ѐ[tue95`whPXC3:(&oghuA槩VR̗tmeYowdXLu Ε>ć+7ELD>T~ aȂ;?__q.x{L[ 7 '`:[<#4&ī8uq8""O'hr`P-(k'0Gᤐ$%IkWa@$E4ĿrmHeAc<}7fJx=X{ZZDm-ߒE0.~t'aPC=)wU#/6ʽHXVXr+Q(( +S\#' wM.XɆc`c ivX2QiU +<g6^kw@wzOoå(+(6-`rwzP%uNǥ}kJ] +'ƮùݾխlS1rUFHwFڞhje$>S:4zTAOl15 _ce}fEsC ڳZ%~A^?%S>om~<0lȾ80êϿ%`yu+d:VHۭ[1a +N=bК +endstream +endobj +874 0 obj << +/Type /Page +/Contents 875 0 R +/Resources 873 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 833 0 R +/Annots [ 858 0 R 864 0 R 865 0 R 866 0 R 867 0 R 868 0 R 869 0 R 870 0 R 871 0 R 872 0 R ] +>> endobj +858 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.054 656.089 365.972 667.102] +/Subtype /Link +/A << /S /GoTo /D (subsection.2.1.3) >> +>> endobj +864 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.722 614.246 225.64 625.15] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.2) >> +>> endobj +865 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [260.88 602.291 267.853 613.195] +/Subtype /Link +/A << /S /GoTo /D (chapter.9) >> +>> endobj +866 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.532 476.607 171.506 485.683] +/Subtype /Link +/A << /S /GoTo /D (chapter.9) >> +>> endobj +867 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.619 440.741 177.593 449.817] +/Subtype /Link +/A << /S /GoTo /D (chapter.9) >> +>> endobj +868 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [517.298 420.871 524.272 431.885] +/Subtype /Link +/A << /S /GoTo /D (chapter.9) >> +>> endobj +869 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.314 390.983 179.288 401.997] +/Subtype /Link +/A << /S /GoTo /D (chapter.9) >> +>> endobj +870 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.501 381.085 157.947 389.932] +/Subtype /Link +/A << /S /GoTo /D (section.8.4) >> +>> endobj +871 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.07 361.095 423.988 372.109] +/Subtype /Link +/A << /S /GoTo /D (subsection.9.2.5) >> +>> endobj +872 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [126.625 349.14 133.599 360.044] +/Subtype /Link +/A << /S /GoTo /D (chapter.9) >> +>> endobj +876 0 obj << +/D [874 0 R /XYZ 72 769.89 null] +>> endobj +659 0 obj << +/D [874 0 R /XYZ 253.255 773.476 null] +>> endobj +238 0 obj << +/D [874 0 R /XYZ 72 545.753 null] +>> endobj +242 0 obj << +/D [874 0 R /XYZ 72 317.633 null] +>> endobj +246 0 obj << +/D [874 0 R /XYZ 72 173.673 null] +>> endobj +873 0 obj << +/Font << /F38 481 0 R /F40 482 0 R /F62 529 0 R /F84 877 0 R /F71 689 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +881 0 obj << +/Length 940 +/Filter /FlateDecode +>> +stream +xڕUK6С@( f($!:mt$F{H{-& KIwlOR7|"!!ɯw$?o^eERRRlIN\ɦJ>IW,cҪ6o-U%liڦ~T U^0!p!6zm]ҝNaLxaFbڱ8GI36zɬR 3y~n@Voe{L1Ǜ99v"wUkmViC8k3õ +3=InYR,([6ZJʹ +̄LW (PUuB"XE0*,k5r +3Ⴓ臽I1ں` +byzPk$O3zR@,i7>=,MLƮٳҍ +G~$_NGMx")'MRQ=8<YzʴvXm!Ẍ́.XlRoV+ѥ(M$G~[|YM2+ߛWsh#:i6zsHax={{?]]mװ2"gw.R3W<RJ˼C;T⎎QjV4Lc8Ί䳻U1L`9&R<rPVbNՀsEJ羞>9egPM<)dْ6viB)V;.@MF^Um +endstream +endobj +880 0 obj << +/Type /Page +/Contents 881 0 R +/Resources 879 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 884 0 R +/Annots [ 878 0 R ] +>> endobj +878 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [223.783 584.694 238.229 595.708] +/Subtype /Link +/A << /S /GoTo /D (section.8.1) >> +>> endobj +882 0 obj << +/D [880 0 R /XYZ 72 769.89 null] +>> endobj +250 0 obj << +/D [880 0 R /XYZ 72 718.169 null] +>> endobj +883 0 obj << +/D [880 0 R /XYZ 72 603.623 null] +>> endobj +879 0 obj << +/Font << /F38 481 0 R /F40 482 0 R /F62 529 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +889 0 obj << +/Length 2114 +/Filter /FlateDecode +>> +stream +xYs6_>ED0H뤎M?<{/M熖`JTI=.D/}X,.G#>o^Hr2܍&aRnf_vDF|voڠF>D3
-fn1\ղ͔_b3q`O8z#vUPv$q!-ZW:ړ6ta8
r-=Z-EYMo-UϪ3JBo ^&°D}tށ#{<c>"4`5wRqܰ,H,h +Z:<PEUy($]Joskʂ'SDHh ( +U^u6ۈD)KIxe#c6`,&G6x(D&m/i^HԦT.]Z@L=_>CWE+{* P_깮bEZVvCrƎ,O8+ou\|C"&Vп~퇋!IY)tu.]<O +xs}y~3 ),-#z,Эkpy~[is𭼉YՉƏ~n}\NTM>]
pcRYfh+WJ%p6QcJD|r;Em]n3[nuE3o0(ݴ_dwyj]Za{|";ibMm΄,VYs7ᶨ%YM~!]LMhMݲs^ ˺\3hw dnx6L:2zpĮ_rm-Ir tX8<szJ8'&̱4y7D͗M*ͽvH3lVR{`Dm1**!LllLi +/O-2T^&xܴWX|[E},3TٶH!U57yHK;(<t- +(<g'r[ey#IЯw++y~9;Ē&5(b[EXX)Cl60{v=a N'Ëԗ5=w讷D1㞇.A骩
8E7Ǜaos[_yy6uj#M+ +ְv6P6<;
^_x}QPp14_B+
:$^FaӉPk aPl1[tQ!) +HjjP<8l,^8oG6p5Td2lW˗Cj<WDA);8: & +J&0}B@qջ^V +x`/<y=r݄8!^q!D +q$b +"8[}So2}8M;|M<LAPH f&"*hQ#Ӧ5$ jdvlchHE![
ݐmHk̛J +qI[.Eo^$axw^y{J3zߡ4GD# +endstream +endobj +888 0 obj << +/Type /Page +/Contents 889 0 R +/Resources 887 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 884 0 R +/Annots [ 885 0 R 886 0 R ] +>> endobj +885 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [130.513 322.951 144.959 333.855] +/Subtype /Link +/A << /S /GoTo /D (table.9.1) >> +>> endobj +886 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [469.377 310.996 491.295 321.9] +/Subtype /Link +/A << /S /GoTo /D (subsection.9.2.6) >> +>> endobj +890 0 obj << +/D [888 0 R /XYZ 72 769.89 null] +>> endobj +254 0 obj << +/D [888 0 R /XYZ 72 769.89 null] +>> endobj +258 0 obj << +/D [888 0 R /XYZ 72 578.557 null] +>> endobj +262 0 obj << +/D [888 0 R /XYZ 72 441.855 null] +>> endobj +887 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F14 687 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +898 0 obj << +/Length 1805 +/Filter /FlateDecode +>> +stream +xXێ6}WQ\^t@m"AѤY,k!Jr79Ve,'RpΜEzi9~-O[n<NIGy˵w/ UR_v3_FW48nayu@{BTyw~7p=[u5襳W3cgpƽ8H^&z2ҝǢ$1tn,&l2DڴqJ;4&AogO4~bӜ%~5/&( `lX
pw1px +j|mQ,
EUVevO, PA2HCR?aՍcoְlkBTZKwƚKwimZ̭Ȫr#`/kSh"N'"CaG4UZH 8Hp.}UvBZ8ΛތSn*Us_";qr_pz_+
W4~{[j(@Lxk3!0b +5GLQ! +,鮐;YaB5M*wR$
r 0a9j9C +endstream +endobj +897 0 obj << +/Type /Page +/Contents 898 0 R +/Resources 896 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 884 0 R +/Annots [ 891 0 R 892 0 R 893 0 R 894 0 R 895 0 R ] +>> endobj +891 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.314 305.902 262.232 316.806] +/Subtype /Link +/A << /S /GoTo /D (section*.17) >> +>> endobj +892 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.694 276.015 187.14 286.918] +/Subtype /Link +/A << /S /GoTo /D (table.9.2) >> +>> endobj +893 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.168 264.059 326.086 274.963] +/Subtype /Link +/A << /S /GoTo /D (section*.19) >> +>> endobj +894 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.335 234.171 184.78 245.075] +/Subtype /Link +/A << /S /GoTo /D (table.9.3) >> +>> endobj +895 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [331.986 222.216 353.904 233.12] +/Subtype /Link +/A << /S /GoTo /D (section*.20) >> +>> endobj +899 0 obj << +/D [897 0 R /XYZ 72 769.89 null] +>> endobj +660 0 obj << +/D [897 0 R /XYZ 246.58 773.476 null] +>> endobj +266 0 obj << +/D [897 0 R /XYZ 72 642.515 null] +>> endobj +270 0 obj << +/D [897 0 R /XYZ 72 583.362 null] +>> endobj +274 0 obj << +/D [897 0 R /XYZ 72 514.311 null] +>> endobj +278 0 obj << +/D [897 0 R /XYZ 72 393.325 null] +>> endobj +900 0 obj << +/D [897 0 R /XYZ 72 196.687 null] +>> endobj +901 0 obj << +/D [897 0 R /XYZ 72 139.661 null] +>> endobj +896 0 obj << +/Font << /F38 481 0 R /F40 482 0 R /F62 529 0 R /F84 877 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +907 0 obj << +/Length 1885 +/Filter /FlateDecode +>> +stream +xX[F~_asT*BզBسYe_{^'٥U\|w.388x}''X(hA`U"abISD.~QSwzzC$B3Ȼ|negIɺu^J'_\]|8 y<B"|{ +|`qpcnT@ +./~JGt1(qai-b^ZݔŜ8FXQ~:Hp>ՌiF5#)", +ꢙ,ouN麴G'u= +씬ϕkN43zнPz]+c
)g'.UMѕ_4ss(Mݴt"ptџ][C]pA>V͜SU.7$¡y/ѐNUI;{g"4.ل-c>FwD*r҅nu6f]%]vNQ9h\6MB;q)rhJ0u= +Iw828Y\V?OGksqc$/pUN?SV<<</w$mRl̔z 1/xHl(ij{W.]yzx:=p~J'Qw<=qb)04ڸcԅ + n-kOQ]Jq39&w/+=^U.4ah̅/A6}r7XKbw>ϥRWju:<F cܿ9O./, BD@R'G Sm4F8eI@(fտ"B"of1GN@8r6q|bI<cݦ]8ѷ0qw+zv^6/m;n҇P)8c +endstream +endobj +906 0 obj << +/Type /Page +/Contents 907 0 R +/Resources 905 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 884 0 R +/Annots [ 904 0 R ] +>> endobj +904 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.615 314.931 335.061 325.834] +/Subtype /Link +/A << /S /GoTo /D (table.9.4) >> +>> endobj +908 0 obj << +/D [906 0 R /XYZ 72 769.89 null] +>> endobj +661 0 obj << +/D [906 0 R /XYZ 242.141 773.476 null] +>> endobj +662 0 obj << +/D [906 0 R /XYZ 245.13 680.761 null] +>> endobj +834 0 obj << +/D [906 0 R /XYZ 72 417.68 null] +>> endobj +902 0 obj << +/D [906 0 R /XYZ 72 276.833 null] +>> endobj +663 0 obj << +/D [906 0 R /XYZ 241.783 218.517 null] +>> endobj +905 0 obj << +/Font << /F38 481 0 R /F40 482 0 R /F62 529 0 R /F84 877 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +913 0 obj << +/Length 1950 +/Filter /FlateDecode +>> +stream +xڽXK8WxOkmF$`1L2`n{ْD$Q#ɿ"Y=IR,V}U` +V|ݛl,fjw\%lDɒծX}Z*7[=/۲) ~t$XmYHu3ضUªhE?KٔspBQVܰh,AC\$KjKqn$agU<2G&WeA[3GQy7 +8t%t/i1@?wj YMl]~bݳ"7A" +G@&\g`d +k`ojî,.zum h
y@a002C + +E_߉bHW96*diݼAnAc|ՀsƓ>^z}O\V绩AL-Bѹ*k?<n$6$ېېnrd&4T
|m#{4U( EύBw0$TR=nw↙AڸEz_d$:[;sVL6Ĕy$]=8 :qw*": +[قg|}
,Wh4ZzfY&{v\cu'5\u :xY + +W`;})V%5撀ǓFv +endstream +endobj +912 0 obj << +/Type /Page +/Contents 913 0 R +/Resources 911 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 884 0 R +/Annots [ 909 0 R 910 0 R ] +>> endobj +909 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.353 231.245 359.27 242.149] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.2) >> +>> endobj +910 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [502.354 183.424 524.272 194.328] +/Subtype /Link +/A << /S /GoTo /D (subsection.9.2.5) >> +>> endobj +914 0 obj << +/D [912 0 R /XYZ 72 769.89 null] +>> endobj +903 0 obj << +/D [912 0 R /XYZ 72 751.18 null] +>> endobj +282 0 obj << +/D [912 0 R /XYZ 72 545.193 null] +>> endobj +286 0 obj << +/D [912 0 R /XYZ 72 348.555 null] +>> endobj +911 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +919 0 obj << +/Length 1849 +/Filter /FlateDecode +>> +stream +xڥXK6ϯCb˖;lI64d\.]rlO ).Iؓ%Dq*?^}M.w2y.+./*!i6oTqwҌLexwPJUB3>e
9N8Μh7{ۺnd"KVT9[IbIѿmדi(-wrY +edb`N^EiڽTѳu(*#ѐnC N +ڑ|ELcU kw"lGCZ7aW7]?Gq@ϓDTJW`Y;*=IGS843g[okub4zh4\tٴˠu>Q{{b=M98Coyi\5L(Mwh,'׀zU肫=ƛ,`(ȎC{`2o|=RφպN7c3j +/=JI %<i}zh|W*bgjB5db*²xVai2aa?w_q3%2YzַϋVydZg(<\<(d3!1AB`@-YыM\mzkFLfxs"\ypV(G״@86=ڐf<}"ȥ4N/K`(إLr1ȘԤDF3DYm̢ ;FQG5.tyc{uB4*o'Lˍ_5eU7O5d}(\RP>Fc%9Ih-Ue$AqgFC- 4urm=47mbҽ@*@J
x(U˪`}rU8:|PH@Yi$CApLJ<n +ttj VҞM+
&hh+h<hRܲ@R/avh~phSۏ6g^b3yTJ%P r{zlE1aL8۲nt!J?yi/OaPEYpyn]Ngi8;Ոjx2N4&3tF4q@?_׃B+УL<U;W>Mkq/|
pXJ\Ew<>幸3pr##OPwB>Qr</6Ǭ)t* +Z05|r䌜_)AqSEc02բ$9e>}%xU4}߅4y(n K + +<qR(v쌤;#kp /"iQӁ +_̋L,tcMC jp2Uq&o{p/~ֻwc0'3+;ܐ[g;[{Q?ZUɿRë? +endstream +endobj +918 0 obj << +/Type /Page +/Contents 919 0 R +/Resources 917 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 884 0 R +/Annots [ 915 0 R ] +>> endobj +915 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [101.423 480.46 120.85 491.364] +/Subtype /Link +/A << /S /GoTo /D (table.11.1) >> +>> endobj +920 0 obj << +/D [918 0 R /XYZ 72 769.89 null] +>> endobj +290 0 obj << +/D [918 0 R /XYZ 72 769.89 null] +>> endobj +294 0 obj << +/D [918 0 R /XYZ 72 583.291 null] +>> endobj +298 0 obj << +/D [918 0 R /XYZ 72 365.612 null] +>> endobj +302 0 obj << +/D [918 0 R /XYZ 72 253.006 null] +>> endobj +917 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +926 0 obj << +/Length 1354 +/Filter /FlateDecode +>> +stream +xX]o6}G0l]RÒ-q1iP(-גm.Eَ{C@s:n?zLGIe4FsD$HP&E4и_e`H`"_zp9z}pq-Qa[,ELqh{##Q"4R\"T4..q4Fʨ2ED$
<fyt +aa#6P.
oU +aL6D:F +mܒHpΉ5 +i +M.[ +c +ĕThWүT5}XE)n=ȣd}{6`d,NkW48d>!]sZo^F@YJOcbMR3N3Yt1؊EśLJAch7^t[,0P|cl
..8>8=9~w~}9ϸ=r,iXw~Yܡ⁺iMUծMx՛ڶOjUUZUapSaxztjXƆݥpҭxfrѪ.^֤4~li]ivހ;5"bu՟*T),0vR/0jʙKy]"=4uJrm[rsgRSUGtrԿd, ơ0?-M_?~yf׆BO<k,Ncp<yͨqY)͘eg2r4"h@ +endstream +endobj +925 0 obj << +/Type /Page +/Contents 926 0 R +/Resources 924 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 928 0 R +/Annots [ 916 0 R 921 0 R 922 0 R ] +>> endobj +916 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [347.335 539.573 366.762 550.477] +/Subtype /Link +/A << /S /GoTo /D (table.10.1) >> +>> endobj +921 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.29 432.728 378.717 443.632] +/Subtype /Link +/A << /S /GoTo /D (table.10.2) >> +>> endobj +922 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.721 212.309 198.149 223.213] +/Subtype /Link +/A << /S /GoTo /D (table.10.3) >> +>> endobj +927 0 obj << +/D [925 0 R /XYZ 72 769.89 null] +>> endobj +664 0 obj << +/D [925 0 R /XYZ 251.79 773.476 null] +>> endobj +665 0 obj << +/D [925 0 R /XYZ 245.812 681.047 null] +>> endobj +306 0 obj << +/D [925 0 R /XYZ 72 577.347 null] +>> endobj +310 0 obj << +/D [925 0 R /XYZ 72 478.307 null] +>> endobj +314 0 obj << +/D [925 0 R /XYZ 72 306.77 null] +>> endobj +924 0 obj << +/Font << /F38 481 0 R /F40 482 0 R /F62 529 0 R /F84 877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +933 0 obj << +/Length 1726 +/Filter /FlateDecode +>> +stream +xXo6~_!&KR~tO[fK\!
٦c!rS#-Ynҡևy<\;y9ߟ'~$$ yLKb"p3;dS7rqA]Fl|9y8;{ffWru6#9' Fv*S}V+<dQO(at4iapZDD3[..3W%Q9wFtD \I˝x~8I;=s*`OvtDx³"c$J^U졪a_1x_À1ӱ{~[0rLrY6\aMn\FąfO^[/%Nb uy6+YiEܻl,k4ȩu[<ݨ~h7N_u1Ctީe8lS֒@u<cXD3-!>jIº(pq}7gϏyYY,u%QGڹ~wUohyƷ\h[ӧa闯߬jC_Aӛj癝xHAѽby +G"qը^Kf@ +;|chӡEiiYj@/yɓ^ +Ha;Ks]V7<.
~JǐCC.WAci=u>f]'VZ/GR[M +@FYڞl7 +>Mۛ[R4&4jE|0AVV=+-46a@= +Y +endstream +endobj +932 0 obj << +/Type /Page +/Contents 933 0 R +/Resources 931 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 928 0 R +/Annots [ 923 0 R 929 0 R 930 0 R ] +>> endobj +923 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.721 656.089 198.149 666.993] +/Subtype /Link +/A << /S /GoTo /D (table.10.3) >> +>> endobj +929 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.721 524.582 198.149 535.486] +/Subtype /Link +/A << /S /GoTo /D (table.10.3) >> +>> endobj +930 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.077 315.989 376.995 326.893] +/Subtype /Link +/A << /S /GoTo /D (subsection.9.2.5) >> +>> endobj +934 0 obj << +/D [932 0 R /XYZ 72 769.89 null] +>> endobj +666 0 obj << +/D [932 0 R /XYZ 246.226 773.476 null] +>> endobj +318 0 obj << +/D [932 0 R /XYZ 72 434.36 null] +>> endobj +322 0 obj << +/D [932 0 R /XYZ 72 302.415 null] +>> endobj +326 0 obj << +/D [932 0 R /XYZ 72 213.374 null] +>> endobj +931 0 obj << +/Font << /F38 481 0 R /F40 482 0 R /F62 529 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +938 0 obj << +/Length 1799 +/Filter /FlateDecode +>> +stream +xXK6WЃ
+cn- +4hd^+KI3^w.ZГFpHqH_7/ܽxVz+u0VwU䭢0vb/ZWpsuCU6mV4^ +'qXm!;jR +HɍUwd[CWmV[W>?7\t%9IP{{LZV55czOY-%VwU4TIܛ0^mK%--7[/4<x.[~usnZ}r6[ۖN]RQZXvma6e}_ +7
Y1NdwA>b)^'nRg.D[?.n,9\'y_LA}˅Y 7Ii:QLs;t_?g푚]nM^b;9ܬYF+=;l/j@n)\9 +9BZ8ȻcA0?)l#qvXc~10QOg^4BEMEEE
zzQ^Ԅ^^6&43QdԔd=?FP*<_̈́@J.QC.DD 3 +JU3ȓIMsN!F/ |yɘ1/{̃Ę1v L1jc>y*ל{Ned./tXd_8o_1!['}:?4F;a2oC>0>ڈPZ6Ӛiu((pArKgΚV"g4.#CԐ7Xqs~<6x IF@յKؼ@dˮ[!l-J-67|%Kl4p%Ƌ}'\-(H:plPS6(#85QkLG"S2Lt<ju
X$u/SpO㥰AgP
ggFik`QS5bǭXO7)FZZÙ1]KƄ|5qLlUpvcjʮN10Jb.堕b +B YNG6?C09TekxjC# H&'kOg| $.Rr4r-i6Z5:BL]AUrNuyƩB1S
4h3.
k9xAp1>q +/}gTRW +ڧɫZxI_c rP}!Òe #, +װ|puz +endstream +endobj +937 0 obj << +/Type /Page +/Contents 938 0 R +/Resources 936 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 928 0 R +/Annots [ 935 0 R ] +>> endobj +935 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.486 150.05 182.913 160.954] +/Subtype /Link +/A << /S /GoTo /D (table.10.4) >> +>> endobj +939 0 obj << +/D [937 0 R /XYZ 72 769.89 null] +>> endobj +330 0 obj << +/D [937 0 R /XYZ 72 769.89 null] +>> endobj +334 0 obj << +/D [937 0 R /XYZ 72 676.699 null] +>> endobj +338 0 obj << +/D [937 0 R /XYZ 72 577.761 null] +>> endobj +342 0 obj << +/D [937 0 R /XYZ 72 476.764 null] +>> endobj +346 0 obj << +/D [937 0 R /XYZ 72 386.289 null] +>> endobj +350 0 obj << +/D [937 0 R /XYZ 72 296.625 null] +>> endobj +354 0 obj << +/D [937 0 R /XYZ 72 195.629 null] +>> endobj +936 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F84 877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +948 0 obj << +/Length 938 +/Filter /FlateDecode +>> +stream +xYo0~_D*m+MV%S-/SWU5 +D[`4Yפ$LA!h4 386RX &3C&XR3):#ۅ?2'CJu22LJ_R}7]qdA8];2mAԟEv- pM_wnZFB/07
a@ +I~K"i ̥DrpuM~<GGI0]"ɛJ] +VOUqG(q^j0mJ 1 +t[Psje +%UJ'B:09\T~:5JRxY1G_l# +[zCʙhZش`͙fHpJ3I&K2 2
{tݕ{QSwDT^aA~]ĮwKAzRTxB +g| F?-@ٳ!+,2ZI2?͞4Z?|㬬ݬcZP/sMҹ8;u=Gd{]iK/\N68pHPYU_,_mt^oetC!嫔Qcu쳈UO~xWCAk*'!&wc
ezpB%.9g0@Kp};]nOßaMW^IWMחldSi)&n'[WUWG]g
| E;Nؖ,f~ԘͧIY06yV6-,Ra凞uMYI>mchgfSa[Xl1dR,(R0Uf~u +endstream +endobj +947 0 obj << +/Type /Page +/Contents 948 0 R +/Resources 946 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 928 0 R +/Annots [ 940 0 R 941 0 R 942 0 R 943 0 R 944 0 R 945 0 R ] +>> endobj +940 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.464 586.002 305.891 596.906] +/Subtype /Link +/A << /S /GoTo /D (table.10.1) >> +>> endobj +941 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [298.42 574.047 317.847 584.95] +/Subtype /Link +/A << /S /GoTo /D (table.10.2) >> +>> endobj +942 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.464 406.674 305.891 417.578] +/Subtype /Link +/A << /S /GoTo /D (table.10.1) >> +>> endobj +943 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [298.42 394.719 317.847 405.623] +/Subtype /Link +/A << /S /GoTo /D (table.10.2) >> +>> endobj +944 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.464 251.257 305.891 262.161] +/Subtype /Link +/A << /S /GoTo /D (table.10.1) >> +>> endobj +945 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [298.42 239.302 317.847 250.206] +/Subtype /Link +/A << /S /GoTo /D (table.10.2) >> +>> endobj +949 0 obj << +/D [947 0 R /XYZ 72 769.89 null] +>> endobj +667 0 obj << +/D [947 0 R /XYZ 228.383 773.476 null] +>> endobj +358 0 obj << +/D [947 0 R /XYZ 72 669.205 null] +>> endobj +946 0 obj << +/Font << /F38 481 0 R /F40 482 0 R /F62 529 0 R /F84 877 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +952 0 obj << +/Length 254 +/Filter /FlateDecode +>> +stream +xuQAn0=8fm|T)p +8>ӪH;5%l}U;KPT P]@"H J i/JrN{7m$o5SD}Ėu~u{tvMa%t$1~Vc~E2X|k,ɛTBQo%ȹ|)YSy\m;g}.sQ/9,Ȩ2!9UV6*yq +endstream +endobj +951 0 obj << +/Type /Page +/Contents 952 0 R +/Resources 950 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 928 0 R +>> endobj +953 0 obj << +/D [951 0 R /XYZ 72 769.89 null] +>> endobj +950 0 obj << +/Font << /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +964 0 obj << +/Length 2286 +/Filter /FlateDecode +>> +stream +xڭYs8_ojDJ;i쵹4ݙNGX@P$+'S # +fy,Tn<si;EMC>G>nO5zf6&0kXW-ʦhZpmX%~w~>@Θ|{h/s{ `'q)`[9# +7`qwhiWq@f!U]ۢ*O!ZgӧyhiҌ rέ3 +{x@9pO c@'I U2~J|8X$IB(vWaZCDǫx`n֧ +~t>C oSvd|ƿ40Y +9-}zE_&;GBMuWƘZ?B&Y
pl\;j6EyE +z$~@)W$c>fKlBT
I7uFyCCrCv?mSO5SM:{;NTLC +. l&c
([Vv4Ra =ʆ +H&H +aDϋg̓r&e7 +cF}e̜BAf]pHxTQ94LZu%H(<2JLHessH;N];yT2{B>6ynq:8 +endstream +endobj +963 0 obj << +/Type /Page +/Contents 964 0 R +/Resources 962 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 928 0 R +/Annots [ 954 0 R 955 0 R 957 0 R 956 0 R ] +>> endobj +954 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.025 474.483 294.453 485.387] +/Subtype /Link +/A << /S /GoTo /D (section.11.2) >> +>> endobj +955 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [252.486 373.075 258.662 399.224] +/Subtype /Link +/A << /S /GoTo /D (Hfootnote.1) >> +>> endobj +957 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [88.936 133.725 95.113 183.785] +/Subtype /Link +/A << /S /GoTo /D (Hfootnote.2) >> +>> endobj +956 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [238.718 107.838 256.65 119.615] +/Subtype /Link +/A << /S /GoTo /D (subsection.3.4.4) >> +>> endobj +965 0 obj << +/D [963 0 R /XYZ 72 769.89 null] +>> endobj +362 0 obj << +/D [963 0 R /XYZ 72 769.89 null] +>> endobj +366 0 obj << +/D [963 0 R /XYZ 72 583.291 null] +>> endobj +668 0 obj << +/D [963 0 R /XYZ 72 451.569 null] +>> endobj +966 0 obj << +/D [963 0 R /XYZ 86.346 121.138 null] +>> endobj +967 0 obj << +/D [963 0 R /XYZ 86.346 111.353 null] +>> endobj +962 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +970 0 obj << +/Length 3057 +/Filter /FlateDecode +>> +stream +xr6m9[ +NnqG +|oZ0놭֑C8]c,,MWm9"ǧx2HRY!FQ땈P}/vrOUSS] ʊV:@ +;C5]͢cӍ!Y?ⰥkZmܶ^/!pjB"yDet.?uq6 +]>[-u:4{O@eϘb$~Y|PPnCQal>^Rxmk'L6C`Ug8 +xN%{$ sA$[ltҎն¸}u_\@ؒ6cvcBAۻ>{^mV©"xчk;R9p$`Y&!(73\?]L<B;ǁi8K6@x=Ln`YystQvzfEmHQϖ l7]cȍ TP |ciMSǦ+X̀̂>X}T &G+ZWTܐd7сjȱ)#mӒ(=]d0<E|(Ԑ)K(`qL +yMйR,S1{YTS%+X~|uqyu}r_e.l +]d+cpY 9" zpS,^o8hK+hL-U\cHDqD=ȘdAvA"*QLebC%=RW}CH~mWWGk6q|O9yQRaJBԉ]~닗I4CVR4 :>\V"Q=xdLB +gW,D,Q!WL>nRH&۔N뺂%öH.pf/$0{+V_n$2:}VXrz@*6Ogh(Y"ţY(/Bj!f4Z/3qT_;$0+sΤ֠ mTF/Qk{4L*&JAKG*51PBzw3Zlh]JaئtqYLJ +endstream +endobj +969 0 obj << +/Type /Page +/Contents 970 0 R +/Resources 968 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 974 0 R +/Annots [ 958 0 R 959 0 R 960 0 R 961 0 R ] +>> endobj +958 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.555 734.735 196.732 748.929] +/Subtype /Link +/A << /S /GoTo /D (Hfootnote.3) >> +>> endobj +959 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [477.815 724.21 492.26 735.114] +/Subtype /Link +/A << /S /GoTo /D (section.3.3) >> +>> endobj +960 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.925 507.341 280.101 533.49] +/Subtype /Link +/A << /S /GoTo /D (Hfootnote.4) >> +>> endobj +961 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [106.869 339.723 113.046 365.872] +/Subtype /Link +/A << /S /GoTo /D (Hfootnote.5) >> +>> endobj +971 0 obj << +/D [969 0 R /XYZ 72 769.89 null] +>> endobj +972 0 obj << +/D [969 0 R /XYZ 86.346 130.605 null] +>> endobj +973 0 obj << +/D [969 0 R /XYZ 86.346 111.355 null] +>> endobj +968 0 obj << +/Font << /F62 529 0 R /F40 482 0 R /F38 481 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +980 0 obj << +/Length 2770 +/Filter /FlateDecode +>> +stream +xڵYYs~7V!("J$;(ͱCӍn`It\yb@נx3;4ؤIA)xxng{DI&9)7~lwelr7Od䱛&.N8<pDľۋ(絼"=G%;=/NѪczB-tMNiI܍xޓa6Yn%I/yZOnA`(vvwp˝/[?vdۡ@Ȝ&zZ9Pת%g`kYҷiQooTy@y7~仑o.|GyA!g
zy8rhN+9Ql8r?0j&vEh84_^I<@%KүmP
Q(M<Њߪ9(d{側qt4OZk$0M'>yNQ=BHFƁ(zXF~VtFe߭9說si$9ͱi{ԩY<J|QmSWV_Qux~"pYW%fg^~B>clEԲ=}wu&^La9 +#>鉠N03dkz +XԴ@a4QNՒfX2{0v=Ht3M$JQ+j)nwvٝ
16?99ꎲY<$m"wAWk`0$>"y gQw9gk +p0aDNqЧ) i%簁g|H:ЃHj&{ҝg=Bך>gٔ5Cy0%(\4U7G1S3919y*}P,U{_\5V<`OSW\9KGsow_b1x4ׯ߭$w+8mjg\.;ip]c +dn13SLL&1}-u%+$/qnꋲ)4_|%ˡ/)R阥y4dVҨ"lKMBw4fJv5ntA)zC{yLiM4}.!1QEbjyӛ'|, +dCOz)h@{6GYHa\]Sl +dgҗp=7sB:WL[čuFq(cgZp1ln"m0=e%6UHi%zx2m%iRel$iaY6fTp'ANv6z*sWyuC?lJvib{5]dEyl Dj*}ne-[k3q;M28xaPEtj {[?4EcUЉ<H'[-hWV+S(A5Kӏ(Rt0 rM1`stXhFs:.hl+s>'̣^uAz}6k7Å{ɇJtWNn/f`wN|eG +ʁ;aךĕ{H8qq'k~&|?m/L]3 H qD/n>uG'GV;{q2u9;0SltohD>!/Ϭv$,Ϸ3Zms9d{)(̵(i
B0jTNpDd|bŌvs13$1d|=6+j)kq!ǒ7>>!0ɘ} oQy +*2jτ_2&^''\k~L=7ȓf +endstream +endobj +979 0 obj << +/Type /Page +/Contents 980 0 R +/Resources 978 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 974 0 R +/Annots [ 976 0 R 977 0 R ] +>> endobj +976 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [296.78 468.527 311.226 479.431] +/Subtype /Link +/A << /S /GoTo /D (section.8.1) >> +>> endobj +977 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.672 438.639 237.099 449.543] +/Subtype /Link +/A << /S /GoTo /D (listing.11.1) >> +>> endobj +981 0 obj << +/D [979 0 R /XYZ 72 769.89 null] +>> endobj +370 0 obj << +/D [979 0 R /XYZ 72 594.126 null] +>> endobj +374 0 obj << +/D [979 0 R /XYZ 72 424.554 null] +>> endobj +378 0 obj << +/D [979 0 R /XYZ 72 304.64 null] +>> endobj +982 0 obj << +/D [979 0 R /XYZ 72 161.798 null] +>> endobj +978 0 obj << +/Font << /F62 529 0 R /F40 482 0 R /F38 481 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +985 0 obj << +/Length 471 +/Filter /FlateDecode +>> +stream +xڽUQk0~Wك>4KbZulҍQ(e]*m6ڞU[;>$]rI Z njdcVr Ӑ5GTp2m)E&
ӋbO. +SIRLJ!4V^7!cXb;D!]:Ȩ9r2Qys/moݺ]O& zN; +'x[zx&*I>%E +ad,.l3Wư`Z{qNe\a"FGc"H8st]`# +endstream +endobj +984 0 obj << +/Type /Page +/Contents 985 0 R +/Resources 983 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 974 0 R +>> endobj +986 0 obj << +/D [984 0 R /XYZ 72 769.89 null] +>> endobj +637 0 obj << +/D [984 0 R /XYZ 72 605.779 null] +>> endobj +983 0 obj << +/Font << /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +989 0 obj << +/Length 2265 +/Filter /FlateDecode +>> +stream +xYKW`%`Dl>M<N6@b;9E$%)SUlrhͬ@.f]_U:^W&*<~4ν<LW?k^ڞN)6ٺsU+<((Y5jJ>[K&_mKbcي,ZIѨ=lCI?|w8^nKUkcU4/pTTykYrWpvOj/GAj#P!N-D|eSGҸ:ݡr03X{:
Sf.OZa@eh{xpt&'Sh9aZ54A¾=4^1g1m9"/"ؕziG?Hg{X0P(Y,
c/#}/ +y#|G]aMO:\:ₜAᐅxs_od'7,gn|+@InF?:Jl4%{
oad?5e5Tm9]1;tR<(!i,9F @NgjP$^C|a"za`
0(OYGa=KD;1g)e'ڎY@;@n6}6'x_x9s4>@\wh)o +MК_]FY +(GMr٦NL[B$z$2:i@"b_?vݿ
~"rVޫbY`0PU'afJEqWOxa[|L d1ݕWD4>\,?Xqi{5%cef Y\$<XɱO_Gٛ.]ʛ`sΕeuVanѠ,')ޱqVݩlŌ2ajP7HhR:ReC8<-Db
]DqnN4DI2B8Y +aچ'i-;t`,
1dZ "sq̆]
3'@H +L>q(wmѷF$aOL{]+8EjEuo!nr KOE U`{8Q5;th1Wb}l{&Q/
,:γ0<(t,qpT.%sWS `ɺV5Q>> +D.^\l=wg +Q~+=u6QFUo)rH;*UR8ZA]t]ཅ[Sű}s
|;A<G
8b*qJ;^B{f侗GTH|2 +endstream +endobj +988 0 obj << +/Type /Page +/Contents 989 0 R +/Resources 987 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 974 0 R +>> endobj +990 0 obj << +/D [988 0 R /XYZ 72 769.89 null] +>> endobj +382 0 obj << +/D [988 0 R /XYZ 72 769.89 null] +>> endobj +386 0 obj << +/D [988 0 R /XYZ 72 640.834 null] +>> endobj +991 0 obj << +/D [988 0 R /XYZ 72 535.15 null] +>> endobj +992 0 obj << +/D [988 0 R /XYZ 72 380.446 null] +>> endobj +993 0 obj << +/D [988 0 R /XYZ 72 239.599 null] +>> endobj +987 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F14 687 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +999 0 obj << +/Length 2612 +/Filter /FlateDecode +>> +stream +xYK۸W萪HU#AxIvgOEa$)R!Hۓ_n4Pq)'x6VUM0{p}2%aXp%|ru_Vi6<]'Ѭ팿hs.Gن"X=aX¾1A6δ^PӳuOe3&bo[.YEN:!K|*w$S+7>uP7uؔOxXwr-_XDnzkc|q#֏f9s'Zm%˲ބb7G
Qe+}#m1q䵡4SYs?I87K*nK6 cjUc7E/N=xw}ՠHW$eI/3>-{̝`E}:U{u7),e+7SPNk&:ء;`#g`xfk(
E<*nT5u^ݠ94q5[vFiXdgh<hc6VMrc7FW+C6]Wm=Nh>u_ˮQ-7B瘷@G!]Ϡ0PHiQs:L4隉hvV3nj]{h)Λp&f@Q/̫8lNr{߃AM}eEg +?}#<W-p{1<ZIf&@KN%F%|{k9Fr-uA6(FèvuW$Bl4O2%yc'yd;$4t9.X~C7y*>3 +0HSWa0@+21iNl1#epRԼ[f/V?"U9j3eJK;l8ѿ!Y>j_)K̡o1%Mayŀ7ƥ +,wӒ3c8&ȫUC
4>w.*iH;E1I'م" +81Td$>mBH&r貮1JAt +j߫?)9|j-|>KC +vB"Z>~ +C.6MlH
R+ 3 FPKGIpSlL2ou3T/n7fFi%"R$@/PpfՓ˹O=-$v{D"e7*m/ne^Y"{]j7" +*h}Уc?ʭ + 3HY)Ά( w]2R +R`Tu\7@dT7c4qㄧl8d^?}I2&Ym
1v2.V차f7l)@Fph0-˥)L7r<>f!tC<Bg+Pjl,f|+)#xzOi*J#d"vC+as蟚fzu5Ծ@IT:q2tw +endstream +endobj +998 0 obj << +/Type /Page +/Contents 999 0 R +/Resources 997 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 974 0 R +/Annots [ 994 0 R 995 0 R 996 0 R ] +>> endobj +994 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.883 277.82 298.857 288.724] +/Subtype /Link +/A << /S /GoTo /D (algorithm.3) >> +>> endobj +995 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.695 206.089 268.594 216.993] +/Subtype /Link +/A << /S /GoTo /D (section*.21) >> +>> endobj +996 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.513 176.201 316.94 187.215] +/Subtype /Link +/A << /S /GoTo /D (listing.11.2) >> +>> endobj +1000 0 obj << +/D [998 0 R /XYZ 72 769.89 null] +>> endobj +1001 0 obj << +/D [998 0 R /XYZ 72 648.849 null] +>> endobj +1002 0 obj << +/D [998 0 R /XYZ 72 519.957 null] +>> endobj +997 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F71 689 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1005 0 obj << +/Length 2490 +/Filter /FlateDecode +>> +stream +xڵY[~_!Tp8!hM7p[8KJR]=g.Vn"s=\EGtC_7<I6ADx䍖_Q"#9zҫv#.<d +<,\ƥQR5/kcNx +ĵٓ`N!,7y&9sƔ~ɔJf#q$)r|TLZ!K@ +SZO8R E䏁@ہg5B!0t~ ̴)>7v)e/@Q\32g2=P~{u
($pr;!@\"̾EBI{{}t +E\nWlFW
+xA1Ymb+-Qs2R:^̰!W0תwC)!cgaKt +'=bܜoRK2D.]H1HY'ॲnV=~?>>"W?̞0 bՐ=9wzCy!"_/%oB_@yX48d*d _f<jYv^\%i!4lluy +.m
;t.ձGBAH1~\
+騋Dd +PNz1v1YO +$婲,$63AC$~qA ]M 4?P+P`RE#*قDam'IF1'yCe*,uإEM/6dWWՓkQV⽡k^39v;;NaoǷ6Y*3S>
WG9u@L}Pb "8-
j2ʠ|g t|:6q֦/ }Le =uRR6i*6Mֹ;Cjjg(dxhxiY̜Zd]gq)Vx4'ƃֹr(vRcҴ,փ +endstream +endobj +1004 0 obj << +/Type /Page +/Contents 1005 0 R +/Resources 1003 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 974 0 R +>> endobj +1006 0 obj << +/D [1004 0 R /XYZ 72 769.89 null] +>> endobj +625 0 obj << +/D [1004 0 R /XYZ 72 769.89 null] +>> endobj +638 0 obj << +/D [1004 0 R /XYZ 72 567.096 null] +>> endobj +1007 0 obj << +/D [1004 0 R /XYZ 72 415.773 null] +>> endobj +1003 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1012 0 obj << +/Length 2416 +/Filter /FlateDecode +>> +stream +xZKs8W0i+$ȩ)Me2g.T(ԒTm EKqpAF?>;;n7;.uC0A9R4=:c^s&GL93r|KI\drQ()R}QfQ#hnvD"1#ןmL(i+FWAV+#gi3W{&JgffLZ1q(/~@ +J]Z /eZ7T>q㴡,ʡ"8H][8WIZ +壺-MԨ5(5-tE'ɂo*3٬ +0F +~aO
xܶ9I3Fr45Jֶ|~Q5NDnG<mض1b`="tk7k,D +}_7j;đ"q_YhS9kp|hY,?twRU.s+!&8^kޚjCU=3҇IBHDw 0G~r$ij: +m%ԕ7⩘GGj~lB}ePxP5Մ@_4[OI}H 족 ,U:~~&Z@nu[Aw6*BT1(/)>#NJZ
5$c6Ud&-y XɁ?G&v!Gz*ד`Yly!*Na825; +cOֲ^Cl!Y
ꂸlBжzM{Ȉa(I;KFMW<8]q礐\rRF0)yڕia6.K8#PnItFK,W8?E!H^qJ$9-;I|듻* y"L~nv!?D8u}5_D3Lh!QǫԬuQw6mPo_ݚ=ʅʧwTL*lciTEBၖ xEGK=Xf=<wefzH0PV"2M,;H]QڃtKtk9Fqiih0[&ӧhG/ P\3+[}? @`콴*R?7QQxJT&2dti +n%&Nsl= +endstream +endobj +1011 0 obj << +/Type /Page +/Contents 1012 0 R +/Resources 1010 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1015 0 R +/Annots [ 1008 0 R 1009 0 R ] +>> endobj +1008 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [491.853 565.491 498.827 576.505] +/Subtype /Link +/A << /S /GoTo /D (algorithm.4) >> +>> endobj +1009 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [112.361 249.945 131.788 260.849] +/Subtype /Link +/A << /S /GoTo /D (table.11.2) >> +>> endobj +1013 0 obj << +/D [1011 0 R /XYZ 72 769.89 null] +>> endobj +626 0 obj << +/D [1011 0 R /XYZ 72 508.714 null] +>> endobj +1014 0 obj << +/D [1011 0 R /XYZ 113.016 330.239 null] +>> endobj +1010 0 obj << +/Font << /F40 482 0 R /F38 481 0 R /F62 529 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1018 0 obj << +/Length 2444 +/Filter /FlateDecode +>> +stream +xZ[۸~_}ˋDJC&6mLBcc!%9$u5} 2)eLRy.9<54xh:woD$\SJDJ2sܯEBaKӐ1X +Fۗ?he{Ѳ;I>+n.+Q8h(IcHX`%*ULHw߭ΒufJHBn-Yj+p^UP<jM68֟%(hW&N}fe'秱{Ƶŵ`shI +M
ވ8O@)b!7^_:;C(ܔ<!JDL!({ +ew]֮X<[> +CofȈG!)px&&ᨈLij{ъ oϊƃ;w?zskNNbR}
RD*$kE兽~90C˵{H^TGLNwjŞ1bPPjCafn'e#=cl 9Ŏ#8u Sltl +F"a#
3ހ0/2lCCY>xM>[jbτV,>Z]+bf8Q'd/:|(?|GLɟdWWȒ\-y>ZHgP\I>mx]nD\%Ȏm)8sb_v˔>]%$a}z}oo_)#4d1{Pz5ï=`fG3S<{{a^b 'Qh:d*G,^wB%T0̕n0f)R"ZAGN1Xb2[?/ODZtwDR>WȳN?{GYuoTbdeK3z~mε(L=\ +endstream +endobj +1017 0 obj << +/Type /Page +/Contents 1018 0 R +/Resources 1016 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1015 0 R +>> endobj +1019 0 obj << +/D [1017 0 R /XYZ 72 769.89 null] +>> endobj +669 0 obj << +/D [1017 0 R /XYZ 248.557 773.476 null] +>> endobj +1020 0 obj << +/D [1017 0 R /XYZ 72 432.687 null] +>> endobj +1021 0 obj << +/D [1017 0 R /XYZ 72 186.146 null] +>> endobj +1016 0 obj << +/Font << /F38 481 0 R /F40 482 0 R /F62 529 0 R /F84 877 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1024 0 obj << +/Length 2787 +/Filter /FlateDecode +>> +stream +xZݓ۶_DjL$LNIڌsθd(K䕤|>wwKL_ v
mg|#>x~{Kb@n63̴@nֳΏU_7mȞQ&LIV.]x*9QR!!PIick}v[.>?v}UqxxǹH4~}M2Kr@@^,gx
PȄ2]%u@E(hbS#Ec +b%C yA̢(")$~̄ni},sDOyK{<4KOy&(((frG[<ŻElf|M,[m#Vhb:o,0-IەhuB3L +@g]VV4Pn5W;ͩ/+6<N!0;žmPWN]V.IL5G|lx!Ez0L߽&hI+r*td1DƗ^.PCDsU*?ʨWH6X0)uVO0¨0f! +,fG1/:Qlt8lf2T0ͧ&P~Tɔr8|# sZyd@p(<Gc%˓**.Koa?Vnb0$#$R&Jb$,L"\u2f|P`A7'C8ӪMYgA÷Ϊ{) +U&k +}! <X XEЏglgStܷ4Lrk-?fՊ_n,sSy)5T)r/0BQż%2٣ÓE;loL;%%k/B "ǀ"d]_cȱe4SOJΡSvOq)hmQf)V|0mz`Ps[5Ki։P| +ձ,0;9+mJp<Т~.t}1({wjJ'?#pvjG˫$'eJɽ}ԉ`7 +0wG( +pCm&ĒqlTic*@S{ePŕ>3ka&DGdYІׄ"hl"B_g>_a-7Mӌ}cv'L>4.Fw xj\Ӻwk#X8ifC@jfyVgɞ^Fg;UԖӯOnϥxZIB}AWc~_r~0kZ7{TCQڙ8+;NծAE
fhH*eA7[NDH1ḾeFgXIʶTƄP}S"{$D6Cu`zeH"_lʖVͪk]ʼ, +- +ʥp?5/tq5ZϤ)1S4"v~Xșju|S>>~sx[xwc-^T4VKU-0p<g&1_ -x vg{za64 +mE{F{b2g9:dt_ۤޡYUUGLNe Xxo2&A=WGR?6^kA涗8 1zV:)klÖ^dЇOl4E2.c!g@F7n78)Qj It9cV*H͂;-*T` +%o?6av?6e[:yϥD7n;
5H]$Gf ]ݝ';K)GMkS)!YhR:?+XG4}unrl&vS!"=<-YWzG +E:kP3(\3pqFDemtјB5Dj-?MTfDԌ#f&?X
F +EX
xiQ~[`Lb֖k!t+6B"H,Qxa# +{ݾcȮ>[V7Ñ*_ЗD}iIS3>aێI4o_t5ͯo~o +7y'jWJQa'8d/$Gbk +ŧsM&,_1P6]S
H+:^s^+~@$#0?~
,^
O<}1Wӱ4xc뉶Y ?<녔NW5^'8=`RLpiM Mr5~7&L-CȬFq4mF)-o4s[29*Cʓr?L1'ڿ"i'=`.x:Wn.
vBͣژ +endstream +endobj +1023 0 obj << +/Type /Page +/Contents 1024 0 R +/Resources 1022 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1015 0 R +>> endobj +1025 0 obj << +/D [1023 0 R /XYZ 72 769.89 null] +>> endobj +1026 0 obj << +/D [1023 0 R /XYZ 72 517.342 null] +>> endobj +1022 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1031 0 obj << +/Length 2169 +/Filter /FlateDecode +>> +stream +xڵYYs~¥<dr"G\*]*,0$Q0L*==3=.)%zY +qn#v'ݜm_UnH:/|ʙJgHInU_]^z3Scq2 ~z`{0[P +#o2L1ȉl>l9yǾ*۾Q.}i~7Y]R*#F<0+Cj$7/4%&&8|_獲jm`֠`6i ,$eĴTS&]׃ygH&ݜq67 +x4v:(x< iN&[ڬ_dVe"ɎKpڼ? +A` +9Y/|s!/Օ% l̔)M03_VnInXcrmo$qgG)ϔIx[47p +^htbF:!̲\ja7Z]h$mtq(lI.tXTVt:2 n>U> $Ԧˈ*U\y_"qۘrNSUk/4O
3twsX`p>}ViӉaRUiUv;f +ϳ^v:n2QIR +E>5) +V$3ZrG0ʷo܍͚Vx,7A3H +endstream +endobj +1030 0 obj << +/Type /Page +/Contents 1031 0 R +/Resources 1029 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1015 0 R +/Annots [ 1027 0 R 1028 0 R ] +>> endobj +1027 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.358 610.306 166.803 619.282] +/Subtype /Link +/A << /S /GoTo /D (section.7.1) >> +>> endobj +1028 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [477.616 590.335 497.043 601.349] +/Subtype /Link +/A << /S /GoTo /D (table.11.3) >> +>> endobj +1032 0 obj << +/D [1030 0 R /XYZ 72 769.89 null] +>> endobj +670 0 obj << +/D [1030 0 R /XYZ 238.565 773.476 null] +>> endobj +1033 0 obj << +/D [1030 0 R /XYZ 72 552.238 null] +>> endobj +1034 0 obj << +/D [1030 0 R /XYZ 72 395.362 null] +>> endobj +390 0 obj << +/D [1030 0 R /XYZ 72 258.704 null] +>> endobj +1029 0 obj << +/Font << /F38 481 0 R /F40 482 0 R /F62 529 0 R /F84 877 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1037 0 obj << +/Length 532 +/Filter /FlateDecode +>> +stream +xTK ϯ7U;!'oI*(ֺ` n2>(8daO4 w#(,(<"MAFgk[钶?$3k9X?08 BL6vLT!"zUުGne'(vRxy4akpAHUwBB5?W!1DXkif1Fkwqk6HH-5ׂ(AD{nHixkt{>(^>:*q2K}}<hDM?i3IiGH+F9gY!^td~C4d;TJ_y*C0K.eM'NBJ7f7~B^_2G +~8)<0L9Mҝn[Zw$6O{MޟCJg0X[V]sq%^QRT.FW-4;14;uFYqAĨ"0# 8 !r +endstream +endobj +1036 0 obj << +/Type /Page +/Contents 1037 0 R +/Resources 1035 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1015 0 R +>> endobj +1038 0 obj << +/D [1036 0 R /XYZ 72 769.89 null] +>> endobj +1035 0 obj << +/Font << /F14 687 0 R /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1041 0 obj << +/Length 1402 +/Filter /FlateDecode +>> +stream +xڝWK4W
qd
'B6TR0QcMY&V<fR,}<l/^-F(doJ):fm~<4'N"JđeU&!6<:!_v"=<W3ts8.:YA%eտkiqRpz7pwЖV-%"% +QxH.2v,f;ýi]HtA+ +ZX,u2''5ޛ#=/f[ oX̠%Z3"F{C<d@PT%N#[&Kn}5ڳSmHA@_f:P͙
-ȌDZ;Ɩ+ɳ!P<_.KUYN4J2.7wX'wuRX/qoȭځ>Kaktb=_3%gm!ܛаjm4֤5`}j^VNYNGsfqVoZx^-j]R5 %Nt'\MD.SCU[/ąm?2긿ozKQ) +ACZ͐Vit)z i9W#8x2Y.-X4<6+YrXΪ:&|kh'Z̀9|~4RVw̹J,hP[.t<jB)"8 +endstream +endobj +1040 0 obj << +/Type /Page +/Contents 1041 0 R +/Resources 1039 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1015 0 R +>> endobj +1042 0 obj << +/D [1040 0 R /XYZ 72 769.89 null] +>> endobj +394 0 obj << +/D [1040 0 R /XYZ 72 769.89 null] +>> endobj +1043 0 obj << +/D [1040 0 R /XYZ 72 578.557 null] +>> endobj +398 0 obj << +/D [1040 0 R /XYZ 72 547.808 null] +>> endobj +402 0 obj << +/D [1040 0 R /XYZ 72 450.074 null] +>> endobj +406 0 obj << +/D [1040 0 R /XYZ 72 329.551 null] +>> endobj +410 0 obj << +/D [1040 0 R /XYZ 72 198.667 null] +>> endobj +1039 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F71 689 0 R /F40 482 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1047 0 obj << +/Length 2354 +/Filter /FlateDecode +>> +stream +xڭYYsܸ~G*e^T6kݔCBg)V>x#kуl4/ O"ͫ7S*2˒",dwBյ(c_]$ +7Gms7|Rhw-P*E?+n\Fđ!D=JkZA/|4>h%``48h)Z~ˡ!=5]$xEB7(<a$tӨ$gQ*8OL3 +){40߶=9j{#:BCb'Hf|<Qny,&>3AߒX]e|"m:LxfZ_Rp*,/_iQ}{EйhZ.~3k-ZHv%q;6-LjbTN^;:I(~F,H{YоV(~_=u9_;#2=WOʈ.ALn^ +endstream +endobj +1046 0 obj << +/Type /Page +/Contents 1047 0 R +/Resources 1045 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1055 0 R +/Annots [ 1044 0 R ] +>> endobj +1044 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [476.243 460.784 490.689 471.688] +/Subtype /Link +/A << /S /GoTo /D (section.4.3) >> +>> endobj +1048 0 obj << +/D [1046 0 R /XYZ 72 769.89 null] +>> endobj +414 0 obj << +/D [1046 0 R /XYZ 72 769.89 null] +>> endobj +418 0 obj << +/D [1046 0 R /XYZ 72 661.158 null] +>> endobj +422 0 obj << +/D [1046 0 R /XYZ 72 518.318 null] +>> endobj +1049 0 obj << +/D [1046 0 R /XYZ 72 413.96 null] +>> endobj +1050 0 obj << +/D [1046 0 R /XYZ 72 390.049 null] +>> endobj +1051 0 obj << +/D [1046 0 R /XYZ 72 366.139 null] +>> endobj +1052 0 obj << +/D [1046 0 R /XYZ 72 342.229 null] +>> endobj +1053 0 obj << +/D [1046 0 R /XYZ 72 318.318 null] +>> endobj +1054 0 obj << +/D [1046 0 R /XYZ 72 294.408 null] +>> endobj +426 0 obj << +/D [1046 0 R /XYZ 72 266.762 null] +>> endobj +1045 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F14 687 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1058 0 obj << +/Length 504 +/Filter /FlateDecode +>> +stream +xڍTK ϯUtIeU)oU;5> y^i"ӎ!J^'1=5Q9qB !7u)Q~+9d0}LEt4Qu0C;[O<2stnj&x6!'<ǹ#@Ba9 +f~syŴ6808A=N~\M7ar8&.X]u HvNͣrXVFq"Z{$vhޕboq
}F+#2Wv)hm2vkPvsٍpؽW2:=A/ŃySm^VJ٣CӥO1F;(T` I} \! +endstream +endobj +1057 0 obj << +/Type /Page +/Contents 1058 0 R +/Resources 1056 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1055 0 R +>> endobj +1059 0 obj << +/D [1057 0 R /XYZ 72 769.89 null] +>> endobj +430 0 obj << +/D [1057 0 R /XYZ 72 769.89 null] +>> endobj +434 0 obj << +/D [1057 0 R /XYZ 72 705.467 null] +>> endobj +438 0 obj << +/D [1057 0 R /XYZ 72 637.621 null] +>> endobj +1056 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1063 0 obj << +/Length 1196 +/Filter /FlateDecode +>> +stream +xڥVM6WP;mئIР]f*KP"'m"E,:FYUFWoWygiU<<6͋讋>oObKrŬq#(Ӻ_E i2\A[xAעڴjaž;)籓IYI(CSrxޅ"vkKO'2@=yp5s/̈́:{)2GcsOQ}/W;Җs]$+g~ʞ]ꝗbn*-BB߳,xQbl~lSnBow kW!Bot:g~C-4q +}sPfrBYsvb٩Ɏ̓o') + +m&i3
:7vquK<#SqǚXy~<YŚ{鸃>>
LjEy6
,T! +2u5|[0yU/F ȬyZTWI_fs^OdpN{-*EV%ZievQy^j7ވw=O[V]]`/[XCض0+&LZ!L>IcmN1x4WMMP~5<BN)+TFDnhR^.D$\Iw</aW_PYRIJ
+?.M$ +endstream +endobj +1062 0 obj << +/Type /Page +/Contents 1063 0 R +/Resources 1061 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1055 0 R +/Annots [ 1060 0 R ] +>> endobj +1060 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.016 490.772 188.99 501.675] +/Subtype /Link +/A << /S /GoTo /D (chapter.5) >> +>> endobj +1064 0 obj << +/D [1062 0 R /XYZ 72 769.89 null] +>> endobj +442 0 obj << +/D [1062 0 R /XYZ 72 769.89 null] +>> endobj +1061 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F71 689 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1068 0 obj << +/Length 436 +/Filter /FlateDecode +>> +stream +xڍR WpĪnmJޒa+Xdf>é=Ac~GQ(v|WDJ.P}B#*sT$\qI
/PUU*TQ +ATŠb6kr@KTJrU=RA#GUAxQ{9f85p
^w +{;7SwQt)VKiK4f !-X0C<7T9niE爛x=)wz\V qQZ(R~ZȊ"2v/+; +endstream +endobj +1067 0 obj << +/Type /Page +/Contents 1068 0 R +/Resources 1066 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1055 0 R +/Annots [ 1065 0 R ] +>> endobj +1065 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [111.95 539.215 341.09 549.496] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.gentoo.org/dtd/metadata.dtd)>> +>> endobj +1069 0 obj << +/D [1067 0 R /XYZ 72 769.89 null] +>> endobj +446 0 obj << +/D [1067 0 R /XYZ 72 769.89 null] +>> endobj +1066 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1072 0 obj << +/Length 886 +/Filter /FlateDecode +>> +stream +xVێ6}߯Уi")ыxl +p92*SlٜK;A/A$fs)I2T4#l]k
FITq{[8ܕy^bK<Ե7+\n띶eM4.~"ƇMn]U~ׇ6agmCfFp>miXXp!+14c$Akd<Vi
s۴k[gO8j@ɚ~ۋmݵw.8;h8`P[\ĭtoh=fB +b)$W$yqK:L㷽$+^`d'L5z1~vi.ukg,:h̳AE) p'z +;K +pQ}ݮ+9rS"T:.OBH{3Q(!%eΫ(Btg]-{nȉwO?~]6Qc 4~xG["ק +endstream +endobj +1071 0 obj << +/Type /Page +/Contents 1072 0 R +/Resources 1070 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1055 0 R +>> endobj +1073 0 obj << +/D [1071 0 R /XYZ 72 769.89 null] +>> endobj +450 0 obj << +/D [1071 0 R /XYZ 72 769.89 null] +>> endobj +1070 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F14 687 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1077 0 obj << +/Length 1092 +/Filter /FlateDecode +>> +stream +xڭVߏ6~剕cKJ/6UUU^>,X2lwYؒDc3|484厺O7?<) 2YNxSnEx>ˡE\~7<l1s$'ݙMtr<30<N,&yZJY/s +U['qPOQox*N9;j_v.JzDǞ7W˳U1y7j5^
G 1@B +{C5|LtmN>@Dvfjɨ]39>\^9^Y~
l2%=$stNȪ1jyRU|1tᤥlspѹ-}-_QFǀ "ξ3b36k +%I--J x@ +}a9
[&JCoFqn +g=ST!c>S{wPhB$[Nb"Kӑ +ekDGۊwԾ
e.t\a,
+$V0<In7YQ%?<>W/W֓㏻(Ԧv7r99ĴlhSmuc +[䫣 +endstream +endobj +1076 0 obj << +/Type /Page +/Contents 1077 0 R +/Resources 1075 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1055 0 R +/Annots [ 1074 0 R ] +>> endobj +1074 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.689 470.747 385.798 481.651] +/Subtype /Link +/A << /S /GoTo /D (listing.C.1) >> +>> endobj +1078 0 obj << +/D [1076 0 R /XYZ 72 769.89 null] +>> endobj +454 0 obj << +/D [1076 0 R /XYZ 72 769.89 null] +>> endobj +458 0 obj << +/D [1076 0 R /XYZ 72 523.897 null] +>> endobj +462 0 obj << +/D [1076 0 R /XYZ 72 426.164 null] +>> endobj +639 0 obj << +/D [1076 0 R /XYZ 72 213.059 null] +>> endobj +1075 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R /F71 689 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1093 0 obj << +/Length 868 +/Filter /FlateDecode +>> +stream +xڵKs0f,[i0La:N;8m=+[NFMŲeiۧD~Df<z}b+$ϑfHiGc&ʖ6N$ѻ%N5uJnױefS4l0D?eyM"o_?~<ي7(ztyUce<}sLuNUcyU/&w +By蛢(exԴqs}6J);ӄrs0SK}i+WH?[p)^;?{{uqv`s{欮+P$Cl#Ew)x}C0@nT>s%P8 +#x^YՓ|a4E3
jUUVېpA +f<LnUPlU +endstream +endobj +1092 0 obj << +/Type /Page +/Contents 1093 0 R +/Resources 1091 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1096 0 R +/Annots [ 1079 0 R 1080 0 R 1081 0 R 1082 0 R 1083 0 R 1084 0 R 1085 0 R 1086 0 R 1087 0 R 1088 0 R 1089 0 R 1090 0 R ] +>> endobj +1079 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.472 485.251 294.918 499.199] +/Subtype /Link +/A << /S /GoTo /D (table.8.1) >> +>> endobj +1080 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.472 473.296 294.918 487.244] +/Subtype /Link +/A << /S /GoTo /D (table.9.1) >> +>> endobj +1081 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.472 461.341 294.918 475.288] +/Subtype /Link +/A << /S /GoTo /D (table.9.2) >> +>> endobj +1082 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.472 449.386 294.918 463.333] +/Subtype /Link +/A << /S /GoTo /D (table.9.3) >> +>> endobj +1083 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.472 437.43 294.918 451.378] +/Subtype /Link +/A << /S /GoTo /D (table.9.4) >> +>> endobj +1084 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.472 425.475 294.918 439.423] +/Subtype /Link +/A << /S /GoTo /D (table.9.4) >> +>> endobj +1085 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.472 413.52 299.9 427.468] +/Subtype /Link +/A << /S /GoTo /D (table.10.1) >> +>> endobj +1086 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.472 401.565 299.9 415.513] +/Subtype /Link +/A << /S /GoTo /D (table.10.2) >> +>> endobj +1087 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.472 389.61 299.9 403.557] +/Subtype /Link +/A << /S /GoTo /D (table.10.3) >> +>> endobj +1088 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.472 377.655 299.9 391.602] +/Subtype /Link +/A << /S /GoTo /D (table.10.4) >> +>> endobj +1089 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.472 365.699 299.9 379.647] +/Subtype /Link +/A << /S /GoTo /D (table.11.2) >> +>> endobj +1090 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.472 353.744 299.9 367.692] +/Subtype /Link +/A << /S /GoTo /D (table.11.3) >> +>> endobj +1094 0 obj << +/D [1092 0 R /XYZ 72 769.89 null] +>> endobj +466 0 obj << +/D [1092 0 R /XYZ 72 769.89 null] +>> endobj +1095 0 obj << +/D [1092 0 R /XYZ 72 578.557 null] +>> endobj +671 0 obj << +/D [1092 0 R /XYZ 72 563.499 null] +>> endobj +1091 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1111 0 obj << +/Length 783 +/Filter /FlateDecode +>> +stream +xWMo@WHfޒ6CU%)"ܤޅ&V'l3;{k|>y>=9ԡ A}g8:B2g:s3nY|>{c>bVq$I*L|ɐU$QGW屪s<),g߮.SBAEHBZ[kѨ&C$!z5]F*?yRT˨I5]e^D|v}{۠<͋"~yw7a*i4}.l2J-F<FTqz1kԵp8<IJ L
G0FD9e0@6s1 +}'j)mZpij&z!7影 +v/} Fl% x'K] %n?>^_
EUe98BlN7oXbw
8DXpXm;.P#bǬLU4GtA[TUV+`R#"IA68A`H$Bo;pB(Z
Ã]T@tWr]Uk>FzI%?BbCwgD)%^eQ5{鐱Pc=ڑ@a`$OӞ\LO~! +endstream +endobj +1110 0 obj << +/Type /Page +/Contents 1111 0 R +/Resources 1109 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1096 0 R +/Annots [ 1097 0 R 1098 0 R 1099 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R 1108 0 R ] +>> endobj +1097 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.592 409.596 195.038 419.783] +/Subtype /Link +/A << /S /GoTo /D (table.8.1) >> +>> endobj +1098 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.968 396.924 209.414 407.828] +/Subtype /Link +/A << /S /GoTo /D (table.9.2) >> +>> endobj +1099 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [292.292 384.968 311.719 395.872] +/Subtype /Link +/A << /S /GoTo /D (table.10.3) >> +>> endobj +1100 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.942 299.908 208.388 310.094] +/Subtype /Link +/A << /S /GoTo /D (table.9.1) >> +>> endobj +1101 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.4 287.235 208.846 298.139] +/Subtype /Link +/A << /S /GoTo /D (table.9.3) >> +>> endobj +1102 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.389 275.997 211.835 286.184] +/Subtype /Link +/A << /S /GoTo /D (table.9.4) >> +>> endobj +1103 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.503 263.947 207.93 274.229] +/Subtype /Link +/A << /S /GoTo /D (table.10.1) >> +>> endobj +1104 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.458 251.992 219.885 262.273] +/Subtype /Link +/A << /S /GoTo /D (table.10.2) >> +>> endobj +1105 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [292.292 239.414 311.719 250.318] +/Subtype /Link +/A << /S /GoTo /D (table.10.3) >> +>> endobj +1106 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.317 227.459 254.744 238.363] +/Subtype /Link +/A << /S /GoTo /D (table.10.4) >> +>> endobj +1107 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.346 215.504 246.774 226.408] +/Subtype /Link +/A << /S /GoTo /D (table.11.2) >> +>> endobj +1108 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.288 204.266 219.715 214.453] +/Subtype /Link +/A << /S /GoTo /D (table.11.3) >> +>> endobj +1112 0 obj << +/D [1110 0 R /XYZ 72 769.89 null] +>> endobj +470 0 obj << +/D [1110 0 R /XYZ 72 769.89 null] +>> endobj +1113 0 obj << +/D [1110 0 R /XYZ 72 583.291 null] +>> endobj +1114 0 obj << +/D [1110 0 R /XYZ 72 515.571 null] +>> endobj +1115 0 obj << +/D [1110 0 R /XYZ 72 447.897 null] +>> endobj +1116 0 obj << +/D [1110 0 R /XYZ 72 338.209 null] +>> endobj +1109 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F14 687 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1120 0 obj << +/Length 270 +/Filter /FlateDecode +>> +stream +x}=o@w~;GQjP!0 mU:t:c@;+'3`B KVjnmWSS|g<BgR|Vu^S|61+2F|Hc_ua=_LT!4pfYNXWǡDDb}!HTX87aSpD:q +`9h^N>,Sg +endstream +endobj +1119 0 obj << +/Type /Page +/Contents 1120 0 R +/Resources 1118 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1096 0 R +/Annots [ 1117 0 R ] +>> endobj +1117 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [279.718 613.87 503.379 624.216] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://glep.gentoo.org/glep-0044.html)>> +>> endobj +1121 0 obj << +/D [1119 0 R /XYZ 72 769.89 null] +>> endobj +1122 0 obj << +/D [1119 0 R /XYZ 72 629.366 null] +>> endobj +741 0 obj << +/D [1119 0 R /XYZ 72 629.366 null] +>> endobj +1118 0 obj << +/Font << /F62 529 0 R /F38 481 0 R /F40 482 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +975 0 obj +[474 0 R /Fit] +endobj +1124 0 obj +[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] +endobj +1125 0 obj +[500 500 167 333 556 278 333 333 0 333 675 0 556 389 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 214 250 333 420 500 500 833 778 333 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444] +endobj +1126 0 obj +[1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500] +endobj +1127 0 obj +[556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 0 0 0 333 500 500 1000 500 500 333 1000 556 333 1000 0 0 0 0 0 0 500 500 350 500] +endobj +1128 0 obj +[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] +endobj +1129 0 obj +[556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444 350 500 1000 333 980 389 333 722 0 0 722 0 333 500 500 500 500 200 500 333 760 276 500 564 333 760 333 400 564 300 300 333 500 453 250 333 300 310 500 750 750 750 444 722 722 722 722 722 722 889 667 611 611 611 611 333 333 333 333 722 722 722 722 722 722 722 564 722 722 722 722 722 722 556 500 444 444 444 444 444] +endobj +1130 0 obj << +/Length1 798 +/Length2 800 +/Length3 0 +/Length 1340 +/Filter /FlateDecode +>> +stream +xڭ}TLikϮ4v+LQ2/icv33W3֝;}}eH(z +=!/Y: +k*rбjoq6}~>"G<ol5"_qp!2 * +%}FL4$D%T30TdF@F*YaPx9pc@4T$G0BO) kR<5,pd! +c:rT}HQFA+VV9Q1%Hf>Gh|ٔhB"|a/jfI R\n +6\{>A5mYۀ
"[ +=gNsEկHc7hLѩl&U^z7/f祧ZOOAl:4\@mZ'n37v&MۓuJ&åX$h:ˆ#Z,k/Ch'-sG
'27!.cGFɂ
Wb"@bŷՖFpMAW{ofs{rv/#*Lpm5cwf>qNIEL+)fK
<ױ'*D1n\YxoHmaۙ^avfꑫzsF]v64E{.Ӝ7sR`[5{5./qz}CvgV*̳Zu9ܧ2+}뮺ΔVAWڄ^=st2?1Y'u4"r&~U0Qk>j سA'Li*2pDd;]<R_( +endstream +endobj +1131 0 obj << +/Type /FontDescriptor +/FontName /VDVMSW+CMSY10 +/Flags 4 +/FontBBox [-29 -960 1116 775] +/Ascent 750 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 85 +/XHeight 431 +/CharSet (/backslash/bullet/circlecopyrt) +/FontFile 1130 0 R +>> endobj +1132 0 obj << +/Length1 1606 +/Length2 11316 +/Length3 0 +/Length 12130 +/Filter /FlateDecode +>> +stream +xڭueTݒ5<и{pwiFw] %xx;3w֝5k=ή]TS3@`3+?@EIlgx3r!SQI8L!`IS
2H +?ϚbvILaF),!<LP3Xx]F}sT~Z6A_Z Dΐ>)VIws`]SqCyGFkY!'XRp@fr;uUдy{!!k(
m<4ob qu98ădH?%~",ITMPy?|>f\kXzm`M9Ƈ FoTDͥ'WjBeVmϴC3 B?y9-Eޫ[;,ZWe15/<Q&ДrxyyT9)%Kb"v4CXz93usP5ڈ{@`}X^݆'nwXΏ |{h*K*ڇhmz˔Ť}pquV^υ'dm#.qV<Te" +Q:pHDY9?~Q¡ʐƋ@$wi''ޅ^JSy9)gzzS;3わ2b`\ +="轻ay +PP>{|=,)-X,̾)~ɨn4DPx|T\ꚸP)<A@{9pZMSzm\f v8ƆB +UN%J])>!G9!^bKV:5( +!6&4/Kp^pZ"Ȗy{O9L_.TBgu%ǜÏ([p}8=E E:)9SGUM~vNcvPpMfv-DDݮ6H\-w5?Yiˉ;G8".&\s{ +921j_?jAlID|MȘBAVfS +Q.>}+N\0P
=옸Q{&vyon0&lrk,J +9}^}[}IÝ.A^_lyuDBfH-BYٕA's.)Zbh`Co'bu(L^_Dƈ[.rлfBVH@lqZp|u]JB0B5.?6?xd֬g%t}Ia̯@`
ˮ|=YVח+/7$g3k0: /"--rŃMA`4<HJ:=WB. f9Bo̝Ʈ9 +]@SGzslJ S/hWQu
tX$,xW{DΈ3_P^xݷ 3#d7X6"~aܝ+ ݵ;H0=`NAɢ~Y@~OvLqtpȟNP;/~=D5uKDC'Ȕ9|SK68Q蒚GଡF!rrQw?_[|y.zӦio4PN+W?cRW=vQxu|,[SҬ-z9W ]˧W
D{UxXҐ۴)@ưW4'xnJ=U +DCA%gZ `Mvs
[Q$xś^::rUչs[J93l
ʦvxRDvg_mdj;|و:6j4<}Z +s6 +N{,,%]OHcɎ~ 6~RD#g/33Rgf(\]/Kڵ!JmqK}AE[rߔd13eiϫh21p8hH|2 +E8vYҎ~eP}@m䨀d3u|&t/n*:c7h:MSlՓew{k'#t r\nj1'w/]4O+Lp Gh|_tl{9Xx(z,fFR@7<s"@zoPFگD(<3PfV-W|o:mϵpwLf22J}5)G^H~L MEGZ%k7_+笍ޢqNHwH>v@lD <vLOe">=W]Wp#VGZ#0I:ȶElr9H!$nz<X5^2WSm:S9]oлL
شnKlVn<&.E$gA-V7
aPl25^V}>@\7?>샵n*) +9d}r &g#4@[ݴ؇P2cBmPx+s(5:N;ۺPk7գV8p[W[ߒBM-889Xjt($a>z-(U s3Rfi5G^Yb?DyD3+q)#xkm&+hBnrJ(mY{KΘ;os:XNȃPLjEfڰ;ꎝayȾ!۔
F[{^10B-dX.S*LLUM)t=?,tHD(xµ$/r),'N-I+rv/oa.f[ĔNOd706U{,QcXh$'h(wPso +xe:RkHEp7h)giJU&=SńdG@e9Сj2i<</&YCz@$XX~p 8ϪY`=!¼ubIe-O4G Gz1zN|(ODUn+e@y +ެW+kb%SaQi>%,GXҺ#<>9``gC-͏4k '13;m -(ӣZk~ҋm;-PNpNJ0$D҂*؋HHii$:#Zlkw +-ݣwށwȮC4ʫ}\kT&IY란 +3*&r;~!^&}hG + +U~3"VN~}W/W/] +?}9;{ZxO@^Uk5+0Qଅq"NZ}1jBLC!)`1ٜiDN!8Zps\Js +.Z'?/{_m~\f<0=H?y'60M Q' Rt =?ubYM^M1e0zu-xB,
SA"F;F +%QjC3r"`:xJ+cM$2j ͖YAUTЎ=
0nq7/%ljQNl_?Xb YmO& +h(<)*Qbd1!:^Exh}e% #UUw[c=xGTKräC͡gD;(=q`GxC-)Re(ʲONJ\Wi|[CA02'Cl=G1$.+zf^TTi9a?/DQ>O1G{EMF^=9SmÜq/?n\Vͅպ04T_[L+6v) 祔E#<@L]Dٛ(i!?$5;YiW !(XIs\/="%JBHoWKd6Nt՛At\ENF_R9/
C1&sLl(Usd]ć}dN;[m"%]?5ubPGZP=[d2P!:W\q2>M@z0.|ʇ$woMN2-6nP,,"9Qgr-3ld]=J[hߟ!A%gL:EuYԑ3GQ]c
Ӱ+4V=ƲinL3cu;Q-f$H1*.u|
_vɝx|uH+OXֲVz*+Gxvpd1gHq߭[N8xՊFޠiyDH$'CbJ{]$$7$zڐྼ +_\ѰɇWFb|$]Ыlnw,] +| +7xT.^^uUYە]jw )n惴$ +MR`Ϫ>OW*\#}z-C81P=?H +\czl;w +iØ~HGN&Ep:8oEOa6_p.olE. $)~G`*q¨nn߀weHF;'eбk1 G&)oWw<xG5p(jR&=a]%09 oIWI@n+!r Yh?nn胜Q%mme^[\BQԾ tⶕ`4gR=^ _\qEBօE$əGqr1c7B8)4*">Sp#ʊ@j1p#eXeJ~, +"NZ+%NbtCKhfFfbYcYѻn JA{`!w'@B˟~K>/0ˌSmHO4*9u<U+^(ֱf4i(ި +oT)+g?H:{~g+$^E8#&n<0ß3X;P`w]G|.|^xK`[IBrK/ѬZҞg e>'x/G)Ze[?fuOXJyLlWK|P4ǫl:XE]~5}OWa4oIb7C=ZN +T7[j2NkYgش>>DLMP8BdfX옭v6 +k=15it*Cx1Qv_`pPð7GDStyZ5衏s;gp]Ej`Wymz&V
;q9y\_ޘy0Z/0Oaվ' FX,:1 UWb:X7̩)k_6TM +VXT6р-t)w^ +zmg_Kr=%9W?1ikun0^Bp0=tZl7i)hZ:E]g\jAvЛ={u6ܩNWQ-[N(XD\~JoŹ5By]phT(K;;`;h=?O , ?.87q5[*R[t?*EΡ+X
'5wrkQ]a]<GMVU?w)ƹ@g{T}C`D+R*|cŔS?qc2^'I0<FbZsu*'w"悭1+>Yz1n^Mw=78GU^EmG/8]]pC3t.,FyJoI$SXF]fװH>Mc[hJWI'4e8ڠÈelL91 CP
GYlxt_^ݸbfCR5s<YN@rk]rs +Wmc
q?nT"X~<'oc^ p&`'+@-}_5MoEeoLWIlY˥̣VDez^t;Mx{J'1P$VK0\|鞂8du0 +)3YBrS*qhOտ#'3~"(L+c0@wyIHQA}9y/u@w>eT/AH .+*VnKV:$KK5!GXWTkBސ+l%/d> +]Hݢ);
uU9َA
8V/Nc[\
")א}QHwܲ 5)ڵ,/9jvwuכ4JDF#ex[dZc>DăD=zXŻ%ZhBH=܋2rP&
̏uT&/%}a(}U!يR$Gt(::CQlE-XQv#^-f[=4C5Q;NJ8+LQW}k%R`3WT`QHId&ekXlB~=2Tɝ*:=pVXpԖfCH 87F(
#آ!q:ثt6rI& +6-ªIn;AtdDY
+YJt'%ԕ[p
2J +e]ݾL8)JHyAJ}Xxskm#C3 H't A!J#s&m4EsnUhwz&l:%xw#W$K`C06]YK9]S4~C(}$R:O!c}Q3HڎW1Pݟ|Wr𤔵h͇ZmK>^MM.X?.}g;pmc1ᲀywK%=2hO|CxZϟ/b(He_r,g"pRePJ&0vG
;Hj\d\2pBnMo5pY/@DY3=^-$Wie7<@Ѵwb~;ig}J&#I<][)z5GfdBEh)s~&")͓۾47 +endstream +endobj +1133 0 obj << +/Type /FontDescriptor +/FontName /DVRDDU+NimbusMonL-Bold +/Flags 4 +/FontBBox [-43 -278 681 871] +/Ascent 624 +/CapHeight 552 +/Descent -126 +/ItalicAngle 0 +/StemV 101 +/XHeight 439 +/CharSet (/C/D/E/I/L/N/O/P/R/S/T/U/a/asciitilde/c/d/e/equal/exclam/f/g/greater/i/l/less/m/n/o/p/r/s/t/u/underscore) +/FontFile 1132 0 R +>> endobj +1134 0 obj << +/Length1 1612 +/Length2 18292 +/Length3 0 +/Length 19133 +/Filter /FlateDecode +>> +stream +xڬcx%'xb[Ul۶m;ضmW6N{w>}~uO1ǜcENL/hbgugf`Y8+\ +(g$Ne>$oEF%{ZZ}a +o;D`jhwRښ +,!+D٢= +d+E8SZف`R;ڛTTE0sDOZNhkщZWtzFrpldx679+EC.jW5TF3<M'z^>9.Y̫Ym{2dF;?oDat`4\׆o3TPYLt5USWM
kbȌbgi[!9HKpΊ9,'6.eqQ݈wΪL$Oױ.[W?EM7"S2AZr%gQxd 0QpM-2*Oɣ%mHmxK9d\IdFa_'۶<b./i* +Ȭm4;(*~=irԖ8!NgaFv"4ڲ?/9AZi[#{"vfy49)FFX]Fv.;
7ݞf$F~VHM_}5EP1dWkE~%zDi3IPٌT7#BAw,$ݛӧyf#p":ڝe7se[mӗE%i"8i'ܫί1Мueư˘zf*R4^MB9xjú,s>A8'!d4[=,x+*3CI[|ij/J4Y7 xa/qG',eZ<4O͇EUTq&>hi +9}otxogpU%88JXd#}!Tv"rz{N썜+nّӊ[{j"5F8:Vs.";XSM~g5gK]+^SL *#)~)Xː(.vm~ͤAY2O Bʬ1'UDmvex%nZW:1Ql|Nȱ:H C\2G?os)Nc iրܐ~!+.sxS;" +Z24c,EULrc驘tY3)7x'OX,c"&aV']fcp8#F'O#C=Lۛ-CVD{'zA-`),T*qMq)DXۛՠB}4''?b<91s\dWsbM_7$,T/k<; +]9~a_hÏ]1c_1tд__B3ǢU9Y\XwQB<ϕߐT"z_>Z=p"~=x[ ?6|
c=OD9>ہsI73 ~"~t-i +Vƿs І@SX';"[# +cWRkNr0Mz?HTROr<Qg Z?/Z䘔\4>FRA4\Y
۵p:Qlg`84Q4 +:_ B/DOh-UbJp/n(0$ +dFTV|![@)X'|?_ $44R6$rdKsU3ܵ`iI +_%>R-r.@nlvkY'yΈjN/Tisy鑎v_ïvQ~RE#C(W4mL҉eA/UHP en*G>5!RڈL3/#[&rC!M?ƄEMpU:'Y1|LMv3j껣ˮH6ɍAmx̼J<Ս\4Cl@HGMrĤ酶]wVIњZ¥Ƶ#!_x1YU.n =Y-EG5ؙ10?EEkgwsbK+uQF +e{yIcdw9jkP)~P~;5! +wrsdLϱ?z/ ɕ2D1P9BH5+ƓpW?-e NwP-3@ѳ2J}3aÜރMg&Ds^{g`oR;q:E<K%5[qM>B캰}arLTv/Z7Nwo<ay.`PBH˂^h4V~'3|4KEȀx4>{dU)}DמY3W_~3ꨣGUanЍq~tB +`6V.9cidcE=Qm4I +rʺF;zN~m);/7,(Ro2@=R1~q[v{;JŇ/if`0;4q& {>hE~ސE\;';pH;g(dFTz +dgG@z_|M=@ސ0_Z#A"#vEU[-7Px~b|si +ĨfwStXrw90p§3&%7[p^=/s LdbToh J(~FS1>ÿI<Mbx3p<~LT4@Zpʯ5(/F9pV;@l&9؞.Ä\x/ȶX>P1!>G~qcŹs<~I=~Zb1R1%-=Y*N5o7^xfO>HQȵ9_w)d'g{Kt> ++%<$ +ȶgeCaѻdjÁvWaіxGNSԶh+rSe# Z|1&c!Tdu%pD22j#eJx;u +n:0B;d8O*pCU-1չs +;6Sokd~y%0 +e[*k-!k\K$Ǐ|e9d_ LD}Ȏr=)Xr^4 V;БXtЛ'1'zIi1MMV%g < +fnje;FFq*{aUܕ^{@z:*Vinrb`2; +R8 WupZ2y~b1؉GⴉΗQwm9)Xx\0(PL>3Vū
qMGrY7:Ħfj {&>˴R4xМ1Qt88z纓,CF
r)0'+B%02sxWF*a*ຫtF:FQ!iMrĈ:uO
\E3:n w>́$oMzm\])5B}xRsk` LGďafx$njih%&)RSIi먭_Q|e-cf/kw?E/l':I䃣3 ?\&8nyS!"q +R|3m+9?[=ZlySɱC /Ք7FɐXCfzۋ U(F7]X@{ԵOӾN"Di=AfA'-v1x$AⳐGjs&-5SB;GuvVBhd!HHQP:N'
n!A)ɯ1(jN|9^TUhf*.v)L"l'&_g@a0""1҇ҠXn4݂Y@uݓ m>d\XL2c
Rp!\j{AdL0?j=dCc5יJ,Nxl\ OD^l^V26\e\/q%cPniV;($Q~[qlG%v;%+w91UxXc$)qϧCߡɤ./֛!<ȳ^F +y(?O,N"9',+YsGTJ<Pa-rјd)s3*;ௗ\R1
[LoMKۄ'n^TB4 k!l<
NwNAX +3EwMD0V[(dfLu`baQu%9Gc|_fz32!T2cr},)F'[u2V#~]&oyumdEb>'
ZK +Lz8$cfhGi@gy){(x +$:>;KKN*"~?>_msPW^@3J̨!(xykF$<es9!\]jzgWRg奭a;I55qIzEC:szK,ɩB:J? .`U$ U\ըE~ܮ]0V}]>řQlRVFW=mMNu7ˀ>+XmT6[(f^Q͢0s*ywmuXE6?r,Rǐ)pǀUm:h!{?w_g0G0a#a_VW A2Uw :(XSY&y4CR7ӨB'p_
IsܺcrQGdw@fE]uڲnC!2{w.UA?ӭig_tyo>R 1xHBKoDwAόc-b(TVAZeِUBhf=E>[!vX{ l%$ʒA?9.KvFZ+
+&1CPG6( +{bϿ9F90? +5No;?u$ XTTOvݶS;HVܻsmٿ@D5Z=xds|ම! 7po
r~_3ZOpidAS|Bge2m:HIK.ᒫ-5gHNKoQ[-@N.`_Pl +dnX۪z 'fTUM,#Ժ/pMz&LE؝v>yK(&b):DOG +وX,[x +~Z\
I1e#b1rߗfmTn@4f_-OYFтƊs"tYAH%/"#˕%#ϩ!`Y3W(hr3җ
H_XA㔑u"x-jATЁcK˝7n +HTc>\fRrXKD7.vئm3%:y&eN>#ILA[EŢG=nNLmҫl +Z65V>BX]M4Wundy QJ3Wfʻ(&9])4$cR㝥fNG] y@P>w~o>p3lZqiiM=Gq9)uk[VbxƆATzw +'tE|bqƁZXY +&8tE
DsN^W(5"SG=̈́I{yT=Jng$ +< +N5g4IY9#e=)'wБ.Z;+:1X|27R| qU`iNGfN@ڼj&CϩT-{}]D,I*;^y5GΙ$E(Te$R㏋+ /Lpx-+r~F岾ڱ!vZ +jI2 ~::c,ё[-)ݘs1b0ïX/qQI}mCfsy$+'{+-4WC]ͨf)4RJR=/`D/{msRHjnJO*3EvJۊ0":yeҳaBdy|f㐠HZحX";@g +y[#aוֹ2wrsH-,mYVSaRl_A3 c@8(KCJqjp'ul7C
- ִj0=tdh +b4%23&+*#-(W[a>^9*-h}Bqz>BK\vp<.Èl ~iK>?3v{0K9:6DցmF[X9>&3qE}[hޠ/r#{UB/5'8v,Fg=ZVih^ˬl8= aGN|ůUp26^w|둼rK%6|*N'٭- `&}|]wڝO1'6 +!`@.}#1<kZ)L*J~5u5 +.<B[^vv"mg9Ѓc=Q{T8BJž<y#ݚ~VU4L!shi +dil_qV*-aMeQѵ,mx5_9Sr95v=&h;Qq
R0gaP_t`*JQR-}khb18+Dk7J%BX.Zu7Z<9QiՕ"Lvx}6=ҍ6_OVY9kNL9-3z0[2)U1μTPժy.tL-e] +4e#+QNEdoumKh,?|&q{#A*ZSJMaBuQ>E|hbWCV5$Jq+ە$ +
`Ŀ]"`ʧZ::E]1n48ď`)\KƧg G@4qvTMDm?HBNN/҈4XT\v
bg oƊ,,Niakwڝ.M'FΦ ʩփ:c3p;{hMd +.sdtrEV +\ٶ=F/#06qOWq/bB/~e)Sd9$!
&Ozsg?NF*L^lbGކ.Tf;~p0#&._@ݟFiCYog_occ{~rgJ=i{WTfhf9!XmƩB_r2k/H?q磅#i3[ArvY C|[|ӌ/et.6[NQn~5}dM첢uxMU4ތ!!CdVS +װhaGܲEGF7eOe:F*M%2x`g}~+gm{ +_}dsDmM0woz̵g[C%;V!fP\,6F}NXcxJvX)dx6DvYmo0AjU=p/ķd`$ uOlwΫXӮ&MZ=fB\)v2.koapM5 ++Lp8 iH"w'vzD? +>կ7{?/i! 4iPJe`KAi![5u0DF.l<?)eݖЯRȞDT7{qYv߿ňu_"^|EHQMs\wp7Ec55l!yn"N 2=/C6£lŲ[ښUBrf*DOD&M?n%$%\074JA@ogrp cXLNpGkU]C#JٳiԊ4"JD:EM& k?Aj㛟F2[C2Hܾ=geizQ`L8,CiXVvf
e(hNd`eWįNlVT1I-,VcfOc8
&(>zBAZ)'R'L9q,f=$ʫhvO.Mrku3ym#힏+d"h(v݅C95[.ww#嚻{lМk+R6 tp(~ڝ.VcXjW S]pK[#W?lSg)uݫ8y|͆@<=GjǸQV:DCE^F:UFH>K;n`ҝLqt\4SKЂ-n06QRPD(b8o'>SgCcynH+=!8A8%/{;ڸI5ѻ/ʦbCrp{l#XWіF;uM.DeMOpN-I߱^Kls ԱtryCOn7CbqIxKiM?iOBKXaQ_~K,-`E\!GI #tS{6+t2_4(ߗ(~foku:]Iza +挗r`I9.1j#UCr}ije䲋R?i_0vG-k3spA}oP٦NʪaV+J7F̲bues297T|}kP|V ++g?sP9neu/iJ`?hZG([ +?>Cti24s[y1(W&cOpxQfNor"$6U?-! +j%\3ND-:XZ}7Rp!sn\Klb~`Q+LZHZ )T-LcDS78Vd|X$~&q߈<1/ +m5aV5 +<z/V3dR +Xv/b:ƊAlxȼ(lXPm)Mx~Y>cZ,Ezӭ9=-5g4$'Omk]Am3b+!l-Rcl +GkWB6nr}v&/r kKYs7JFar(G< >$B"+hfjh@$x`SOdQ{;z՜3gC x +jh3tw +6fxj/O&TXb(:I,PMɻxcIAdPldD[|X]O!zeRlO&6٭HC'=G\O;,:'}^}]?5S!Rʮ#_0WљE{cD%Qҽ̸[H9nɋB?eHVЋgцNJ#u_wdKE=C轮>OhÃK&la|T]VGcE}`qpc> .~2tρyKTEW'!^j`jARJBZm/b@>^݇5#x7R3"U#8 <tcՁ[~yM⣘Ȑ96*@
ݶYHRzJzGJ:;8|XRpύ*Z3ݡme,I2WpAl>YPis3pe
jw[wN$ȦNC7Cܻ֪lpiJ ?]0Vhgč|wn>uM]VE+.S;.3֓CQSRݼ<Y +#mA,seDNΞH̤nv*Z@fi9$#ЌrOV}f>6YƑ,*}
!G%ٕ`4:^r#/$B.XO:5#IN=1aְAiS.e:7l"Y~,
uK?9]a|1Fy7A.l_ʴh֏.POZY\ҁ8,E]BmGO +[ޑcr⺋o[PyC@! MU>7L +H9q『zb4rKL#fQ0I @F<P(onT3$`Wm k(tF +WXЭe
k67zڿğƚl[PҤv>XXe
-tpUyKa^\2pDkQFS5mpr'ê4ڏa'j=ڊ?ߒR;q:dH|2.@CSe{r:*AQ0잂FDax7K!sxf[A{;KރjM;cZ)jAs[*h|& +싛c7{fqzF1|K8nJ8K'A:um"|%ԣ{Q-
7ae"8&X5#! [(v|&`YSIkQa\V +tm1Z{
02]r%{}y:7MLwGr#㖯3&5nąy:EB3zz 6'.%pRvRf%ʼ]؇VHBv|79'.< Px]Uʜ&e +SѰCoo^ȣǁ ީA7ҍ;*@~!/*J:QoT,z6>Ce~٢*ႍ}:дtw*LbQ-23PA)%mF|%\E5-Hsљפi S?R$X^:%lduHAx~b ˡqSKALp-b$rl꠫M Q4n':03=Tth^eݪ* +WX{{- +V +{!gLڠC6r-Bs;UNtI]"n~2 $eY:ZzSKkpx(Tw2l5M\eqRf-TOY=>bLZJ !Hb&˶p>pE&TmqnXP
Oĩ(R +nV]2pt7ygdVNa!ޛǯxm#י +
tCMAbYtpne]mǜ#M'vVzca%7NC[3刱ޢAlKi.'Ҕ{ +Kȶy(r[QQao*2KPhxL5aU$' z l"&D*4 E@S}ύ(GY8ת1R_m6=NbǷ
G#yB`GPӮ<2C5Ѫ"B-
.@Ly4IYV.3>c/b{u *"/HfI&K0hMCwH:!~+};= o
)H0fY;t +endstream +endobj +1135 0 obj << +/Type /FontDescriptor +/FontName /LKQZPE+NimbusMonL-Regu +/Flags 4 +/FontBBox [-12 -237 650 811] +/Ascent 625 +/CapHeight 557 +/Descent -147 +/ItalicAngle 0 +/StemV 41 +/XHeight 426 +/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/asciitilde/asterisk/at/b/backslash/bar/braceleft/braceright/bracketleft/bracketright/c/colon/comma/d/dollar/e/equal/exclam/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/question/quotedbl/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 1134 0 R +>> endobj +1136 0 obj << +/Length1 1626 +/Length2 15639 +/Length3 0 +/Length 16488 +/Filter /FlateDecode +>> +stream +xڭct&TdŶmb;YAŶm۶]mVŬԻww=cL_s^c,2"e:![#=#7@QZޖKNhbg##q +)%/WH +dnOmGf_O[cZoV'CGZF@9X!8 +I/ъI#,lcbб2}{q3zJ+rNn +/O(Fzn!qirbax\ #spT+=c0CQ]}Z]:RONk @PckCBF+Dƛ\P<Rc) FPxE:mg2~;4 6f3R.wCzme)EBgN_M|7KJ AVaqX&9#,:yįu"4!H0GzQce&RO{=jb:^B"6VYC],=v* %CpbJ +(]iƊ̼-MWhtR`Dȷ@M֦ĠJIK,Cϖ*zȯҫgxysHöSPd@q {!@odJxnmB#kydJ<okI9q롕kfEWA(>a/}'ͻ;k~ī6/UNG[fG*k]]T2Q$+0{z[w6Bi b}2Iy}4{iV;!2IDbK
&{q{
Do=W +<U٫<D8-$5Z87
!<\[~vHhihJCc((f?Tu83;\XɤqDsu3r +B47H84#&K'YfsnZg<^v, +Dـs顊w&}c<Z!U +Fv(i %o$̍@Dp'7q&FI/dWd{kyIC}R[Bɇ!+" hF)GڅJ~hoOT
Af#iy9S*ISQD]u@"9{ +쥃0؇mqms7S]nbN'v3Ϊz{U;2& +&ة<P0KXѬ0cEצ:?LHL܂D> ;wf'"ג3BE4=},!bhix[2(ރ`'4;e_k(϶>,K&,QީZMP=q>4-Q⒰]u<r'2Iy/m-:Iwe`cHag&ANJHȷTwPǛ$**iwID3X,2jhđ63!Q(mv2U,<L6O='T\r @:F,\ݝ'vICG?g+S:/N-Gf4EjԊ4qI`G$:ʪ8 nID/Ee!D%)FKoRG7.6sӇZIq5zKʋsr3
];G"#9H=} +NhX'ReMjHz}:H0;Byʯo +IO9LKnGI^d&\{diW:pFln$cN㪓6k)+فӼƜ1& +b ҥ. BJU}[bózy)]M3I2)5{~*,'A?VϘ\ωdUp ҘSK% <IhMzˌ\o}he涄kD-Jܼ{u . +~T:91@
j/Oڭ3J2+rbh`'ZQ5rH)D!| Fj191ƿـv8wgD+7Td`{ݣx.V7S7;79D +]Ǐ9!s:j,{ B p(
%ų-Eg0k[Y9~gH)VNL(i"oIQxʤfoyFK.o[2*1-{ڐH-1z2x>6*_d!/$/cpT.j܁HXc:d%9-6Y*}OL{9L"34vDgAZ$q?\bBX(ʛrGKf~U*n%Q%*`72B rmɻ|4"vꗥ|N܊<4aOWu٪rGa +i@_=oo}!% + 6]Wݾ/W-S
?c&(JJiZjHaU +nGcú\9Z[y}1n3mt/M\@y ۽rN8#uS +)v6DR,|1"2t&%wKYY%ٗ&ίiP]MjR=vN)~֮;BD6gTFF&NzgC_О1U&XxC07_HP,M75[:PY]=atA}ozurk*Bgf=jj|a˂4"mm[&m9V?d5 Q*2S+ ﷏.پE8:.[R>D['9 +AJ$|eB!2oS_{OC]o6ުQGcD<XUmqBZyǨ\Q-VP&m@KqRW +B:0I>,2iid4 U+*]}p2OФo M {~ѼMe +Obk+/7 +DQ/* gJAeM6`W\<MzDQ,ls7@kY]#ͼR)zz_P:oDe"rΰS
ųb#C~5=icMhLemlE"nhƽC!($ +۶a[m`E.99_&b"8}n3r"J~O\W8v@<6 ϪÁg8(SjcunapTۮE`wet
Y^+[0ʭZ?
+loPtT9ðs80psx +{)^EV^k>P|5?qDŽ߰b!fjKkךlPy87PvλbשDXw87_!ĺREnr3&EwV^*.ʾoH!)Ns#mpk5#ҽRAi]V!<APSČ-rөֵLf3};йϓ+if>ڇaqo(J{T]I#Kfv⅚}*Ӷ$4<1;=(2) +T:iL-uЛ\Ofa0@
)>_@ ?+0zti
l"XaC?f)ƢD8& +S*ӵU/\D#gK[A6,@1"z#B3~i"nТ)38oqf
CFup LyBr]00Ck˺͟7}ưrO0G̬ފ
%BvȻIVAUo{[k9EOUV`_o{gK[W^7"[QEq\Vj i[ +4v1M[JBXgh/`^92rV3]pUwW_oqS95:6"lm?RispMLnp1I|vb%[1.̈KL_ gX@!uz*i +ɗ8Xpxq +R{ءYtH/{=@8>kN yu{8/3N<I\Ն +0D[?ŭȃ`֞\`kVN1Ǹ7YeZHJVK"b
Dޟۚa2yW":֞/:1giD|E >w#} "xۏ}'T:K{g>J~lXq1Zcw QZ1.O 5mN^` +>gb-H!4IS u4ddq&4MD;$WEW*0 <B÷#>>wm͈xKV`a
cY$F+)yv~wά*dEYwKWOK~48r h4Jvk r(n.`LT ܕ,t:A&pln} +'ȠAvVO~El9z'T6x +ϡ +inP8>Z2ɱl{mU,,H?(Rc23!1Al66+.}Rs +zߡic,Q{j]y{Cq]5i\F7M5qX<I9~G# u\*4|f:mK`8clҫSuvxq=RKi\bMlkO\3aXbmM ˷TA=ANy5j@b/la"cbzxzޞ'nN
'"gd09QR&0dcV~CƪF+
nH9γ
,jIVb٣PG<(xrc(ҧ!OU0GEnө/rP*NutM=>dh)T f˼ŵġ&gV +̎K+B +u44<FҔWb7{ok^`&3&L@.C֬IҤ@h.P\d(Ӓ2:og]E7C(g5R?H,;ZGd[<ǭTO~ I.B:%=c3_d65v~,tGU\d3ߥQLJ6=UߓJR[N-[^5꿰w"B`Wkh:͡v`鶡NP
>3Ѷ]駬XьSvr: hO]UL4ȐGA.fPz,Zw_G-MN2 +N3ʾ8US,+h6uΙ+=*h)Dj@Lq{rY%[ij3̵tk,uk8)0kT\mij"q?V!YhmjX@Ѿ(BۛڥibA=y|ReZlhuDe^=;W{УT+IЧN*[`e֡4Izm'L>P!)z7i@d[Hhiw@iv0RDW"9YE;+%-d{ʊ4U.Î7j;¹U\Ԯou@b9>>&7
?VG<O]N`&j$otKɨ! +:6gM: [:Y^A/@0
q5A!/{j߶j +{qg`S3qnNM]mn s5`+S,+~z[w&f@x 3TZL_k/G+0qEQ7IPqH +K5r`|'T~TIFNđjn4|sh(u4 + A܄QB6|wSπ[<M}t~x9[vWE @3`Ap2pKHȆZ}|uvdC9aӼ5nְOz2+q̍)]m.7c{|u-g&gOd{1NyA{kiJ"y4 +_rX +|A W.6w[v4fɚECcn.i2q+ivo]E4%LnAD#`3G%
<yqU!Ȇy.Kqy2[>R,y{`Pɨ +Z`a*Zrl_6knQIn)j0
>()\rQtgbq9Ŝ#45ԽFyƇ2*cQ"XM!3La!ˠ'pRSX x{Uw#2Gf9Ee2;vY
=EުZjsEZ@<,ܚjG20@8<&2n)t1\l +
v-QP2GB1Jqٜ\Nke.QgbfGbdFɢI棌{̮&,ijx:Yc!#^knDN%rc97VihBϽ}\,St**0_j7X< U֫(]4|\Dtw`O2VN_v{ln!Ɏ`R:m +WxQN{> +.0WLBee%N剬&Owp/yt̄p^CJ`qOYVZn:śҗ^E>'hw_&;r)gbMK;Pqaiǃ& +ہiɉO}ߕd{A˦7RU-q{|
BdĻ{Iq~J(djюeobֈv?W6;Gdׯ?%GeR-&ƶy2_;ׄ`eo3=z+4NX?%"CWg <)yFZَ8tzxo.9jXF([?D5B
%ZgiKW-QF5RKدSz1x>6]L>c1H-ho;>b88CH+
Rʣ0ݫr2Axa'"^L cVw;XsnϜau!%dUIH2I8Gɟ-S63-;o"Nģeۨ?7r>3%܄]is5{l͂qh^ +8b`L*fjzް8ԡ K\4&mM8d,ƵKP:s|;J3sX6X
Vp74ȇ2,;ԥ2ife6D0Ls~P{ˌ"9aw&(`+ok/V@^32"ߢVLf>ֻNy(D`<9&ҕ4V1(QG<|vy{ +ߎ^Aٍ_|A3qS3w2%'9*)P]qA30Zµ^ic;3AQ2xpVHp&դ(A#De2#^qu D|`N٪Ѳ贼YvyѓA˄(L-|_wJq]HmYqP~Rv&qk2cf0O}(&<=+zb4&t^`qR,eX)6 mA#5VD;=2WV{)Q^Th1rjRؓ;А') gtO}/<䟠É4ӗ-lwI^DNQCP3V5$^Q&6dȈRX' _EY3m3HKOE4Q tu`ó/æN2?
sё-~F + +_1dMAK4t}zfɅ,xhxРh?#~\יS#^RP@gw\7%&%X$0l +t^ϑP%"qن`X\w\I)s&l%X:)>w\ns2;ߊFN6O;S~!O|O`pa_AbXH.ZULQ7W)BךB=1dٸWD*rJox-PBzJ)n*lR$J
k5BepZX`\ +^϶prrڦ>QcӒM@#끈H?h0bvY&/gA] +ײsjL0[v9zKM +1(ZF(AsOxݍZN3щ"(3SJ.'UaрK[ +Vl}2dwB&_@V|h$MhN%!M.3Uco$л +9pLy{K4db;31Jӷ.1r}']̹'};(S4%p/q w!@g30RF( W9S^I!)܆?f)Q4 z&Ϭ/»:>1o2&ofy\PP6(6Nr7Փ#.g5rՃ]6l`˶~ (b1ӊC@`IE`so#1Rhz~ %;ȡO9UE@aWA8V4yv}駡~.xJ v4BǑWՏA)ۣc>t?ee$8܆͔+F= 638o9yRH9dN.*8 +XǼ'Op*T^0 -g{BUPbt4&Md~ OI]ha0R
; +\|϶[ۦ$iXr._Cƫ?8g
^(^W}BiG)auzW[Js BudMm,I>5$S1 SH+^ӲٚPaP 8k=;Ʒ! Xٺ+_'aRbQrhigylN,yȈ4i8|8A95 +'dH[,!l<zdW=Zk&dOUg5 +1=ذ`M$t @^ +$]t%oDzdԋ9f2}w +Zb}opV.C[%;kp
( `M#4W +Hov4c^c$)9d0zTֳ>^-
&@a"r&0#06aSD9:BʼS>a)Yh0lq3Q!}Y(s"~ +!Sȅ-Z_8zԫyv`%h)4նO Yt˃"+1GTK!XRزba(*D-ekB$~bb$gcM?Vy:c+"M+b/Q~5orTС~_l :A˓[<HEF +endstream +endobj +1137 0 obj << +/Type /FontDescriptor +/FontName /EKSLTP+NimbusRomNo9L-Medi +/Flags 4 +/FontBBox [-168 -341 1000 960] +/Ascent 690 +/CapHeight 690 +/Descent -209 +/ItalicAngle 0 +/StemV 140 +/XHeight 461 +/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/a/b/c/colon/comma/d/e/eight/endash/f/fi/five/four/g/h/hyphen/i/k/l/m/n/nine/o/one/p/period/q/question/r/s/seven/six/slash/t/three/two/u/underscore/v/w/x/y/zero) +/FontFile 1136 0 R +>> endobj +1138 0 obj << +/Length1 1630 +/Length2 18935 +/Length3 0 +/Length 19779 +/Filter /FlateDecode +>> +stream +xڬct]&vRm۶+Nv\mb۶m۶zO}~15qM\sͱE:!;#Sq;[':&zFn"y,3_9VɔHԄHԘH`nDDAECCLC`nKD/))ڔHDAQKJ^RB^HКH`L$06u4"2s OiMLMQٛ: +-lm-ohw +7MYWYi2]csB +cR,rcǞ1 +6Q,d"8qD"V |!ך(3@niH,:^\yjKKVT
ѯAYQn$'q.bAeNs~D.X:$bq,G~¥1,(%kh-(kE'ۅ$1&$H^EbUtY0<z\.
[Do0fPmrKfa,{p$]t03霈ڑׇ$NORpzy.0 0|0DE +~#; +x49dR0&NpXK#Wd/8yGphv +虹uH-xã1Ƴ.jJiQY5@:PՊzV|O%aNdqD&VD 6kD)keFuy\mٮLwxUqwKՏN,c4mp'$dyGO j2͖>.i8odۼ퍪fmn;'TOϻ!#C2|v3+Aq[1Ս{4Xoڞ-t)SDxe_+KkɘwjNnvb[awK +(g:4|Sd|ܹu +p<p^2X0 +Ըdof&6jW<h +F?DTw"sV7_#FZ85Oʗq5''ޒU^T3#Z3/<?SCǍG-D~;N0)[O׀.;BV5*Td݄sȌB{
٩FH,f\Wof
ᒅ җ?}"/!r~E3[9Qe{Q?YJ3*(ӈcfJl78!k߃;F~t+{nl;= ԏ,G87u@&|+zM?N=]^ANAqO +߰Q8i^! PsFx4S~4SqSRmݥ!}fx<$.ѬώO9U2rי>ET|CtpyysV'bЃ\hSX?@Uӯ4P:p%G*a9h^Yob!@R'}i/k,AAFCFK?\fCn +`n9
?p+-(G;047qNb[hxOVFG/v+"lb#a|RH1voډ^6#p,%mɠO*!\FTk oqzR$qlPQr]1t,T*|OVWy3zaibi8A/vVS +X]i/. +rHWLeF%ȸs,RIYB_SH2ʚN a,6$֝ޥp )Oo~>)8+gUqmbJy
1|]gs;o)G8ԛCB".Ғ^~S_8r^a3~$<kL'paIµ48]B$hijSrf$nsZ7`M`'|s
z~t0!zS[jJX.#g&M$lGրɣQ*2>fFGj:9=2:I)]/XN1GV +bOFNS~:G
+MS"0+p5P(8zHϺW=q-%rLǿޙ<@\H?dnѓ.[`+[ \#OE{=z>Hue +,ѷ%Ï_dm0c[8b-]ѴCm?}.`G`f]/0HR1s#j7CeY$*DņA-%W@to^z]Ol +vӾ!
)Ji{9P
p$
Կ[yfJ<pʒwlҷ]IaUf,ȇMLzҩþt"!Fkw63v}Kk;& +EK,9Wmvq:OO6S6YRc&PؽDaQCԒwu;ēzW P`QkRA(ĩȸie%'>k̠@6ى!NRAtrE>mQlO| +zK[V3vYIz7&mqGp*Glk5vXݟ^E̽dM'_gb/(Nг3"-taJp/|xPX +avWGfs$Zs6/t8-!eJ<|,Frc4u1:|tTyU + +ȃmpS%߳|ǕBԀ-: 8˓<KkG;J@߀utx7ϱ'oӯxy-:p1`qPןm&)̂[xj7H:]pBa5+ .h* AhHndkxJ{D0RJpvMqbtbƼ/L8n9FAX{_qa)!#;ɽKk/c}
_Cb$u2i;:OM{vUߕy41N*xGQ(3^e!ŀ,Λ4& PF(c87_y)GIۼh{Iˮکǐ'{ZGeΐR-Ù[,փ۵7S->WiwqjxJ2JGI.ض%c8?`kW +'t*A?hh5d~*"E8^ʈZ?L;69%*\h}SPJn]Hv0@dHXskD25Qjt5{^qdX=T#6z9ԗ*Lʂnބ~_'wzJv8R@y@dSes%zyCҍF
ʒYCFA~~(XgF}V|["ԈD9L`P,#s_S#.~6m0cɃ H|-phdwXcl RXg4ucmG&3,=` u@E\H``> *\ +0ͨ{z%gϹ%"En};kz7O<AGBU^%.ױl/, TÚ;mߓܸIz;Ž+nxgQN6faJ:\s:Vm/ $ +ܮ -շRphT=X逻j7G啖ݠj4!J-ٔŹٛtM⧪ܾvX
J$d5 +:z4</6-Cw-3*7Q-:K$4RaWj=VüPDžpD>yx}J]kLe_ѩ=5/+*_8Ȑ| JTqTF=LXHd?d/q2<Y6ؒcz,nmKMV86^qb닅pbUmIoVBagZ9"A}s}v['m7Ta驹o,73ܽbsQ&2/wuO5mX_H_GZ
&Xen$7OkٽbQ7K~Evrll2@~.|913Ox-g-UZ̃ͣ^+J?ȵe +Q&&Fz-Lx^yB:MK.^1됤V"t3 T#r_8ll>ﰵāܟ{p`EJ[*ۤz e?f:$&)╭f@$O0Ts^Dm5#aTnZrS Y}zʜ)<_Aۜpܐ4سHFbK])RMO#v_ȦHg +[6ܕ`H1{qw7FSeݹ*$;qKqkg^=dlwu/| g8j,1 ^9 +r))~[ybϡ6B7),F\#tS0mi%C/?_
, Vk{_hgz\
RB<S}ӓI/#ͫufzm'Ogabc)'LCѐuu}N^(\}y)K*ZjƲBi<fWGDYM?qywi!nt&}?H*+ ?5$4pMuTeXo~gQGptܯ0J/q\ jjFy.!U?O^+?J?>Dd1f}1>'x.N椴=m
0[]P?EbJ57{vx'ɼ@^ 4GN[-]yG+u(Bx(@Cb^ZSG-a:kKMWet;եJ${wCъU\,$F$x"t&{_Ņޮ5p]19VBe4fő>l\j>WM47TG7z!h(GqzqlLQ#-06|ꁣuƠ +J@9$ni`M +Gϓ# $" 4h!EA9[浠 тtQ"愵A;氳]Hh]]K|GdA+ +t?!Sn)t~6T8eEԂg=qJݻJz2y=^HڣZ7ʎyCX})jɩNzz~y8oSlSph`&$ϣV,F.$Rt<2}&p(Ց@p:Xl6+*UF*(1*Ԧ,0s7Mϙ!YՇY8bJcₔ,^ +懫=6`No<@)G T[A<)3I¸ 8 ޠA)cOSeo +]?^]T;mI:j1;B˯{sbV!N=!z J4B]- Е5EDՍ0q5aì9"psP!Dyn_?eWe ea֠_P/H㞰7`]Wtss由<c-q+.%*;v'8rKғ +{cv.>fm庅_BYY8/0l7b'gIbM8{1F{x+l1`qIhLRv,qOSd{9W,RVo~v"j1Ƃ d7çPB%kQ7/ß0usj$V);P $FݡW~]?.lXNnDӶ`8h0U)$<8eF:]Z=ӠwtTJA)8ѠSV0Bj4(nE0R$ )ɾk ~ypAr/kH:!Z/>ZGT(P<!'N9q--Ø# +i~$b|U^+"8Z9>Rظڙ*Ӓ;Q9˟bEq%BSn[8/Pu=Ǩ6ʸTR.i`WrA<XZ; )>Z6-Hl?7Γ.t=ˉ}fn&~3Ǡ +~JZ;]R#9ܢO~M\~@Bw[Ȟ +W6ssqX#SMQ*F7XfGv}#I/uVۆr:8Qy@{!-\$3`\mDђSn^aIYo5^mj ЯfqDyGmTN!2k7XlcFkmov^q/Ӱ^ =0<2 rT
2xiXWlBP_>F# !G84>+"V +uk9i*.>,/!bc7'?d`MMF\#I.Z>*{STIƆ*@*W>[3?;"hVR5Կ8D6x#E4F||{pa^_(aK^>onC3 +ڏ@Cic|3^ߘ +ࡱfK-1ğKf4[لZDb +8>[jYj -߱v&P-Lb-TnM\)glAr2__՟Ě ++63Qm/w,lc[G֍}f+[; =\bMQ% +u4c_ɖ!bhMLU>T8$)aBT-I3$'OLW}OAG¥,L)b=n%(>[~y3Z?8Au"kD QM-(YƕE`,XkC(LȝiNp䱸0 +!O +Υ^.L:8){&8e:6meꙚ[;Aq@4IVjI+u,.dDQ]X>S+4i!b[/ώOh1eE&.ez߷|JG*rdCy$d5>!ivh'}4DF _yϫ iemI~xCWm ?dSNWxksZIN `Gnf[G4gAL{9*q)4<}JJ:T.˧gK`65i4|ǎ ;yspT3 +kA3I- fzo/;\9T@ "XgȶPS7*D\HQs ǃvUNwhD6QzmW Wi%?8nĩBd`B堡X1dɑqѐV<56@(/W"
fj}Gkz,H1J}݇ EtUы {:`m; +1XS_lر╄]hn- +/Dەm2<.+1|V'8;5}e)HNErC{#l4^ʩ8t?hP8}!wRDahLcL+EyQb^3nv^Eh:tKPw.4T+FϥnOQ)Էl5>Ͽw +fo{x>XybAQI3 [R- +lj7ߨƱOE<F%δL +rƤI,`BG""~xFqndkf7tlT*U꒑2*qg-36RLV8CO\gzUWOB%v0B5- +HR۔/w#I"J`SPU?3 CH)CO[,{D[Fr:g8)Ea3NffGeRjb@$Vc+?tDCa%TT5*rNkA'C"Qx5X'XP
ܭa)"_vȱ|Wք`W<j^tWr.6">8\5C({K(>*3'd
wyqw* +rS~:,4{#<rAcvf7!qNzy2H/5B0Il[!٩үe8 +j +HEYR(x`ؕ<ytb-f@N{衔gDĞ8OI,qD\x)uSϯsj1~=A6lKWZ-g=(:rH\$(-Qhv_<z^2t9/Re24 KM+6P,eAG t@ @ '%^},QKu>:jTʾg94 +endstream +endobj +1139 0 obj << +/Type /FontDescriptor +/FontName /QLLJXP+NimbusRomNo9L-Regu +/Flags 4 +/FontBBox [-168 -281 1000 924] +/Ascent 678 +/CapHeight 651 +/Descent -216 +/ItalicAngle 0 +/StemV 85 +/XHeight 450 +/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/adieresis/asterisk/b/bracketleft/bracketright/c/colon/comma/d/dollar/e/eight/emdash/equal/exclam/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/q/question/quotedblleft/quotedblright/quoteleft/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 1138 0 R +>> endobj +1140 0 obj << +/Length1 1647 +/Length2 11135 +/Length3 0 +/Length 11981 +/Filter /FlateDecode +>> +stream +xڭveTܒ-nCpCi݂{p%@}Y3o~t>O:VP|f33I:p6&Ύjv6Jv +,j sg9'ckƃBC#;l%@ +b&X +fR-qv;L˽v\+I xW|.Wߋ.(ԭ0kx #FU#4&1n#Mһ6╗df4pqF9b`8+Oq3*]$@ǢEjHɲ{R}B+.Y1HUSFđ,+odUtb9;)(wN b`}[_쳿sz_jrۋQ
RE%u:|`9XbX&ocы\80g~Vb[UgMw8Sgh[2_TPKHȭ +xQˊ7 ֖yP!I$Ml>#59Fm[xS }ix}qvvt0`. 'jOOݟ3Szy|U\8(Uum΄Z!+cȎ'0L%O抾!n4vQz8dҪ)=eC,Y_mQE\,@xڣrSeen [5>a@y>}W +1=z&"AJV,Y3`Toiq&_ڈ+R1paC;lӜϐ$d(R(*1u<c0}<j +/Ꜵ"8W0;gf}nD<-X_PdWuYUWaC܋lw@5qh1r:8%3h'=VSu"my;OE\h>zIVqdx_#fxǵOȴa2ж{'p<Poa0_l=3z` +-uC=%Ih2W/1u櫧ݮr)Dc*ѫ'G*߲6LV~L( +m<<=smk|uZI-wd2Ձ + +^O
vr:t]1hКtW``w +_*Ϧs,K>w,jy0$% J*+XQacBdGo`pʎ.,k2X$m;/ìOĻ()PTiL͚Fe +=<&g_I`309/@Q D!e,@&͔/r0}R|ʒoi-V2f|i'$jiʟ 8c~04v, nҬ瓙 +lyƜdaZW#mL,Zq8O#^&9~VG}O_g-LX;^_kڥ\.'Vֹe1?k2Fz݀h.2Ϳj~EpsǕ%{Qщg>ggexaS%^iQ҈GEk[5u]F?mڍp렉D+;eJܝ3Ad&0x%o;E
@#'xT4EqĮEH.[<hٍ)(<w.xEifXQx\̛ܿS`.<m"̠s!~^v)X]U/FW1T~;iC&zzrKͿ,g*'ՂYsB⤣2LNHۿaH0SIZbB?
|ԫG[$^ a5L|@yZ<zQ8];ؖ>eU}!Lc8ͬG +p=hƢIa
˕D-SC., +n8˿b"9FW*t'&6;;+vɹ(F<m`jF_-BS[&0*jc2\Eˇ|[OH:-|p>d~Va1gS$
3̂"{DMļqT|EG$$c
,/խז{.ϯ˿o|:y +!3c<LugVD!:^px*wp#Pt2mׄyyn*<XemWm$qڇm4#C7D8hmnǖ5/4^#0in;/z
.?1jyH/^Y@`sPU:gyK+_ܩlQ1ra=-a&\UJQKnP"ZB%w)Ҫp~VYW
GD,vf H6U:Bַ_q;y6>h-k[ۃ0RCa߷sy}v@h$Ut/̐.znNy: +ʗ~>ጟ/~u#vTE4R
g%]χc\N43 +hsz> +eܥQ>J&x
kz]; +$pD
(W_z|Lb:^Wpz *
9nl֏^7*Vm54&_]%0c(H$<0)7.۞*.hsg}n֮>ढk{q{:ѡuȗ"JFd Y^coTzO}B扝qʠAb?_)nږ-fQkے`lop"^Ul:jy͉ʢ+O*A:TIbwbB?L+Ku'Ř\P̽]YMr~)GsO2æWogs!BGh9ŭPe2x+=+k4A-Pֽkfq,>-ьR!h Zg=mFI +0z_Z]JknDBȈQOp +6 +!^99JǾT:Ib +7 +6#B+cZ-nY]Lluy7/=$$&uȌ-vcN5^6Fbkes.q<몱 +㜚X] (h/Su0* +>l":]ޔ`HU-SH*Gonzkմ!p
43lyKQjs2ZWCڎC-h7u4qT?fa&YwyK'pxX&E\u\qFll+,]V.,#,Cf'xo{[m,([릊N/MWр_Aќ%?-hbBŻ
P'/7?I'5iZ;lY,%EOs`xŋ~4D%?*Ot}DQ*7Qf&6=fh(I%;?ە6ED6r͜ݛE-6yaN# + j)gğ_k
$ۤb34}&NsͦQ\#>Ũ=04:B%>-\ʧ5eֱel7SM^a%W6pULMp=gcHcU]w-an9{;HQgفA]&#U5Ҭ7jʊ_Qax-HvX-ҽ] +[R7/r!Ō3mn!;> .ӳ26s3
hTn>g=t-zR\W,<ޡ{ҸnXnBHGkUvU2-t3OcEL: .·5.&,9ء~$7E-7/!}`#,p`\nsrX'"PUzg("m,~blSȷ=܊`Dˋ϶]TSeSwZVn1Y(( +ud
5&/.|B@`F6:w78Ba~8\n"qkqkу@ʳ%W?%KL][aw!3j"9U%Ӂ6X~kB`,tDwSapT_?:gwV/Ro&+g%SA^#q7;PU_8?j8&F)Pg^
*_3O^t$e*lp3lӬ@⟈qm +:"'3=jg5u?u0D$=֬fe7`TI!s۟ET)I"cH@m,.@p"E{e):oNf] +s.B%rύ@`[ԍԟ6l7NqnpA[6t[8+dDzʤ˙}z%}.F,=&ȟAFɏ(HCk1 +Pv
>^/2##cJk#g~CIM1|wp_UM3'm
M_cë_7$I\9S
DxpvYaZ5kEמ%AYG +~>,YaBN/7Y]sma2yWIx@IhF,#'L~I(ҹ#Pu
XW
SYܨ,>:Z-ƚ`ҮZQK)z)v[=wYE[\vĢg3?СEP6Ah_nTLR=3O9/h%+z9POJ14Q"e«inXAza9*ekAP ȫ}-?\4Xb]YW>%MZ$}
DUsl
=B";B!Y# + D*1i +C)rj0SGA
8j6ɸ#(ڜW/ HE'RJp2^ߧʨؘx<İ[2iɮz%It4M<ItW<)BT1!"<j4, Ӵ + +]q'1$ SZ +HY}%9nIgdS6^']6QlGK|"{^Z5Y]b2ݏBgrJǢ'|k!@-jc]{~u/,/^밗Ix>sMly"4oƄ B|f(YFauo=,L#u+!1R<d5#%"a}rd♸@* =\]ґtvLNw_%hMLv=4cjw_G +#c9t_(vx\s^Q_Ƞ +Zh杰;Һ[:"9[o=p&³V̮EǩVT>j9ϣ, fxUéVHtW" tL,ANOBGCMg'2@9Mg +މ+踮jީvp9_P*=CnXi\p" t+TXrۤ2S5݈;djMxX5h;J$8a*=ĕ$:1q6yR~(vlP֙zFfQceԫM֨nȇUqPtޜg D$@AgN_Ϧ:ڻO%|Q@k7rU$
5? 4&_܋"0
fv`B#.:UfWՈM2_s&2կ|#{ +qx}ZjKhۄuU$[KF&a$8/ysjL]ld@F +O%p/6Ac;x-s3Rɏy$]n泶OtwaPɶB!cZdF\*癃aY;V}/`o,^LCB&;?JYڪO4ۉ_>S G +ַQaVyÅ&7oQnZ3?#h>,5iK7k6"C t*:_>hњ,F1ur۱8_iqZ2^tۆbpFȂ"N{yp1k>({Dj
.B}̚m_VU:Ղi +degR`~3{{Ep?\&IuhRm.X8Y{aEѰF%&PkDO/&B.O6 +8ru +,gl%,gCM@#S˞}rؔ=|v{;Iv&9DA%qa#TR@abF2"ow?`163Q{Q1q8c + +fu ~BH:m)a~&ބg^ĀWb
1)&xY9|H wwv#+V^:ȑZ=_WSUٻSA+Zg=_X!KƝr%ftIeI0m̟|AY,0_ϧ>x|4臐c.y ++1b]?@Ӏ'e[v:yfxxŦ9o>όP9贝[fRԄ/# ˗aVsWʝ]0tÊ +endstream +endobj +1141 0 obj << +/Type /FontDescriptor +/FontName /BDXIKE+NimbusRomNo9L-ReguItal +/Flags 4 +/FontBBox [-169 -270 1010 924] +/Ascent 669 +/CapHeight 669 +/Descent -193 +/ItalicAngle -15 +/StemV 78 +/XHeight 441 +/CharSet (/A/E/G/H/I/M/P/S/T/V/a/c/d/e/fi/fl/g/h/hyphen/i/j/k/l/m/n/o/p/q/r/s/slash/t/u/v/w/y) +/FontFile 1140 0 R +>> endobj +1123 0 obj << +/Type /Encoding +/Differences [2/fi/fl 33/exclam/quotedbl/numbersign/dollar 39/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I 75/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright 95/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 147/quotedblleft/quotedblright 150/endash/emdash 228/adieresis] +>> endobj +687 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /VDVMSW+CMSY10 +/FontDescriptor 1131 0 R +/FirstChar 13 +/LastChar 110 +/Widths 1126 0 R +>> endobj +877 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /DVRDDU+NimbusMonL-Bold +/FontDescriptor 1133 0 R +/FirstChar 33 +/LastChar 126 +/Widths 1124 0 R +/Encoding 1123 0 R +>> endobj +482 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /LKQZPE+NimbusMonL-Regu +/FontDescriptor 1135 0 R +/FirstChar 33 +/LastChar 126 +/Widths 1128 0 R +/Encoding 1123 0 R +>> endobj +529 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /EKSLTP+NimbusRomNo9L-Medi +/FontDescriptor 1137 0 R +/FirstChar 2 +/LastChar 150 +/Widths 1127 0 R +/Encoding 1123 0 R +>> endobj +481 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /QLLJXP+NimbusRomNo9L-Regu +/FontDescriptor 1139 0 R +/FirstChar 2 +/LastChar 228 +/Widths 1129 0 R +/Encoding 1123 0 R +>> endobj +689 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /BDXIKE+NimbusRomNo9L-ReguItal +/FontDescriptor 1141 0 R +/FirstChar 2 +/LastChar 121 +/Widths 1125 0 R +/Encoding 1123 0 R +>> endobj +483 0 obj << +/Type /Pages +/Count 6 +/Parent 1142 0 R +/Kids [474 0 R 527 0 R 582 0 R 611 0 R 619 0 R 632 0 R] +>> endobj +658 0 obj << +/Type /Pages +/Count 6 +/Parent 1142 0 R +/Kids [654 0 R 673 0 R 682 0 R 692 0 R 696 0 R 701 0 R] +>> endobj +711 0 obj << +/Type /Pages +/Count 6 +/Parent 1142 0 R +/Kids [708 0 R 713 0 R 725 0 R 738 0 R 746 0 R 752 0 R] +>> endobj +775 0 obj << +/Type /Pages +/Count 6 +/Parent 1142 0 R +/Kids [757 0 R 778 0 R 782 0 R 788 0 R 796 0 R 816 0 R] +>> endobj +833 0 obj << +/Type /Pages +/Count 6 +/Parent 1142 0 R +/Kids [829 0 R 838 0 R 845 0 R 849 0 R 860 0 R 874 0 R] +>> endobj +884 0 obj << +/Type /Pages +/Count 6 +/Parent 1142 0 R +/Kids [880 0 R 888 0 R 897 0 R 906 0 R 912 0 R 918 0 R] +>> endobj +928 0 obj << +/Type /Pages +/Count 6 +/Parent 1143 0 R +/Kids [925 0 R 932 0 R 937 0 R 947 0 R 951 0 R 963 0 R] +>> endobj +974 0 obj << +/Type /Pages +/Count 6 +/Parent 1143 0 R +/Kids [969 0 R 979 0 R 984 0 R 988 0 R 998 0 R 1004 0 R] +>> endobj +1015 0 obj << +/Type /Pages +/Count 6 +/Parent 1143 0 R +/Kids [1011 0 R 1017 0 R 1023 0 R 1030 0 R 1036 0 R 1040 0 R] +>> endobj +1055 0 obj << +/Type /Pages +/Count 6 +/Parent 1143 0 R +/Kids [1046 0 R 1057 0 R 1062 0 R 1067 0 R 1071 0 R 1076 0 R] +>> endobj +1096 0 obj << +/Type /Pages +/Count 3 +/Parent 1143 0 R +/Kids [1092 0 R 1110 0 R 1119 0 R] +>> endobj +1142 0 obj << +/Type /Pages +/Count 36 +/Parent 1144 0 R +/Kids [483 0 R 658 0 R 711 0 R 775 0 R 833 0 R 884 0 R] +>> endobj +1143 0 obj << +/Type /Pages +/Count 27 +/Parent 1144 0 R +/Kids [928 0 R 974 0 R 1015 0 R 1055 0 R 1096 0 R] +>> endobj +1144 0 obj << +/Type /Pages +/Count 63 +/Kids [1142 0 R 1143 0 R] +>> endobj +1145 0 obj << +/Type /Outlines +/First 7 0 R +/Last 471 0 R +/Count 18 +>> endobj +471 0 obj << +/Title 472 0 R +/A 469 0 R +/Parent 1145 0 R +/Prev 467 0 R +>> endobj +467 0 obj << +/Title 468 0 R +/A 465 0 R +/Parent 1145 0 R +/Prev 455 0 R +/Next 471 0 R +>> endobj +463 0 obj << +/Title 464 0 R +/A 461 0 R +/Parent 455 0 R +/Prev 459 0 R +>> endobj +459 0 obj << +/Title 460 0 R +/A 457 0 R +/Parent 455 0 R +/Next 463 0 R +>> endobj +455 0 obj << +/Title 456 0 R +/A 453 0 R +/Parent 1145 0 R +/Prev 451 0 R +/Next 467 0 R +/First 459 0 R +/Last 463 0 R +/Count -2 +>> endobj +451 0 obj << +/Title 452 0 R +/A 449 0 R +/Parent 1145 0 R +/Prev 447 0 R +/Next 455 0 R +>> endobj +447 0 obj << +/Title 448 0 R +/A 445 0 R +/Parent 1145 0 R +/Prev 443 0 R +/Next 451 0 R +>> endobj +443 0 obj << +/Title 444 0 R +/A 441 0 R +/Parent 1145 0 R +/Prev 395 0 R +/Next 447 0 R +>> endobj +439 0 obj << +/Title 440 0 R +/A 437 0 R +/Parent 395 0 R +/Prev 435 0 R +>> endobj +435 0 obj << +/Title 436 0 R +/A 433 0 R +/Parent 395 0 R +/Prev 427 0 R +/Next 439 0 R +>> endobj +431 0 obj << +/Title 432 0 R +/A 429 0 R +/Parent 427 0 R +>> endobj +427 0 obj << +/Title 428 0 R +/A 425 0 R +/Parent 395 0 R +/Prev 415 0 R +/Next 435 0 R +/First 431 0 R +/Last 431 0 R +/Count -1 +>> endobj +423 0 obj << +/Title 424 0 R +/A 421 0 R +/Parent 415 0 R +/Prev 419 0 R +>> endobj +419 0 obj << +/Title 420 0 R +/A 417 0 R +/Parent 415 0 R +/Next 423 0 R +>> endobj +415 0 obj << +/Title 416 0 R +/A 413 0 R +/Parent 395 0 R +/Prev 403 0 R +/Next 427 0 R +/First 419 0 R +/Last 423 0 R +/Count -2 +>> endobj +411 0 obj << +/Title 412 0 R +/A 409 0 R +/Parent 403 0 R +/Prev 407 0 R +>> endobj +407 0 obj << +/Title 408 0 R +/A 405 0 R +/Parent 403 0 R +/Next 411 0 R +>> endobj +403 0 obj << +/Title 404 0 R +/A 401 0 R +/Parent 395 0 R +/Prev 399 0 R +/Next 415 0 R +/First 407 0 R +/Last 411 0 R +/Count -2 +>> endobj +399 0 obj << +/Title 400 0 R +/A 397 0 R +/Parent 395 0 R +/Next 403 0 R +>> endobj +395 0 obj << +/Title 396 0 R +/A 393 0 R +/Parent 1145 0 R +/Prev 363 0 R +/Next 443 0 R +/First 399 0 R +/Last 439 0 R +/Count -6 +>> endobj +391 0 obj << +/Title 392 0 R +/A 389 0 R +/Parent 363 0 R +/Prev 375 0 R +>> endobj +387 0 obj << +/Title 388 0 R +/A 385 0 R +/Parent 375 0 R +/Prev 383 0 R +>> endobj +383 0 obj << +/Title 384 0 R +/A 381 0 R +/Parent 375 0 R +/Prev 379 0 R +/Next 387 0 R +>> endobj +379 0 obj << +/Title 380 0 R +/A 377 0 R +/Parent 375 0 R +/Next 383 0 R +>> endobj +375 0 obj << +/Title 376 0 R +/A 373 0 R +/Parent 363 0 R +/Prev 371 0 R +/Next 391 0 R +/First 379 0 R +/Last 387 0 R +/Count -3 +>> endobj +371 0 obj << +/Title 372 0 R +/A 369 0 R +/Parent 363 0 R +/Prev 367 0 R +/Next 375 0 R +>> endobj +367 0 obj << +/Title 368 0 R +/A 365 0 R +/Parent 363 0 R +/Next 371 0 R +>> endobj +363 0 obj << +/Title 364 0 R +/A 361 0 R +/Parent 1145 0 R +/Prev 291 0 R +/Next 395 0 R +/First 367 0 R +/Last 391 0 R +/Count -4 +>> endobj +359 0 obj << +/Title 360 0 R +/A 357 0 R +/Parent 291 0 R +/Prev 295 0 R +>> endobj +355 0 obj << +/Title 356 0 R +/A 353 0 R +/Parent 295 0 R +/Prev 351 0 R +>> endobj +351 0 obj << +/Title 352 0 R +/A 349 0 R +/Parent 295 0 R +/Prev 347 0 R +/Next 355 0 R +>> endobj +347 0 obj << +/Title 348 0 R +/A 345 0 R +/Parent 295 0 R +/Prev 343 0 R +/Next 351 0 R +>> endobj +343 0 obj << +/Title 344 0 R +/A 341 0 R +/Parent 295 0 R +/Prev 339 0 R +/Next 347 0 R +>> endobj +339 0 obj << +/Title 340 0 R +/A 337 0 R +/Parent 295 0 R +/Prev 335 0 R +/Next 343 0 R +>> endobj +335 0 obj << +/Title 336 0 R +/A 333 0 R +/Parent 295 0 R +/Prev 331 0 R +/Next 339 0 R +>> endobj +331 0 obj << +/Title 332 0 R +/A 329 0 R +/Parent 295 0 R +/Prev 327 0 R +/Next 335 0 R +>> endobj +327 0 obj << +/Title 328 0 R +/A 325 0 R +/Parent 295 0 R +/Prev 323 0 R +/Next 331 0 R +>> endobj +323 0 obj << +/Title 324 0 R +/A 321 0 R +/Parent 295 0 R +/Prev 319 0 R +/Next 327 0 R +>> endobj +319 0 obj << +/Title 320 0 R +/A 317 0 R +/Parent 295 0 R +/Prev 315 0 R +/Next 323 0 R +>> endobj +315 0 obj << +/Title 316 0 R +/A 313 0 R +/Parent 295 0 R +/Prev 311 0 R +/Next 319 0 R +>> endobj +311 0 obj << +/Title 312 0 R +/A 309 0 R +/Parent 295 0 R +/Prev 307 0 R +/Next 315 0 R +>> endobj +307 0 obj << +/Title 308 0 R +/A 305 0 R +/Parent 295 0 R +/Prev 303 0 R +/Next 311 0 R +>> endobj +303 0 obj << +/Title 304 0 R +/A 301 0 R +/Parent 295 0 R +/Prev 299 0 R +/Next 307 0 R +>> endobj +299 0 obj << +/Title 300 0 R +/A 297 0 R +/Parent 295 0 R +/Next 303 0 R +>> endobj +295 0 obj << +/Title 296 0 R +/A 293 0 R +/Parent 291 0 R +/Next 359 0 R +/First 299 0 R +/Last 355 0 R +/Count -15 +>> endobj +291 0 obj << +/Title 292 0 R +/A 289 0 R +/Parent 1145 0 R +/Prev 255 0 R +/Next 363 0 R +/First 295 0 R +/Last 359 0 R +/Count -2 +>> endobj +287 0 obj << +/Title 288 0 R +/A 285 0 R +/Parent 263 0 R +/Prev 283 0 R +>> endobj +283 0 obj << +/Title 284 0 R +/A 281 0 R +/Parent 263 0 R +/Prev 279 0 R +/Next 287 0 R +>> endobj +279 0 obj << +/Title 280 0 R +/A 277 0 R +/Parent 263 0 R +/Prev 275 0 R +/Next 283 0 R +>> endobj +275 0 obj << +/Title 276 0 R +/A 273 0 R +/Parent 263 0 R +/Prev 271 0 R +/Next 279 0 R +>> endobj +271 0 obj << +/Title 272 0 R +/A 269 0 R +/Parent 263 0 R +/Prev 267 0 R +/Next 275 0 R +>> endobj +267 0 obj << +/Title 268 0 R +/A 265 0 R +/Parent 263 0 R +/Next 271 0 R +>> endobj +263 0 obj << +/Title 264 0 R +/A 261 0 R +/Parent 255 0 R +/Prev 259 0 R +/First 267 0 R +/Last 287 0 R +/Count -6 +>> endobj +259 0 obj << +/Title 260 0 R +/A 257 0 R +/Parent 255 0 R +/Next 263 0 R +>> endobj +255 0 obj << +/Title 256 0 R +/A 253 0 R +/Parent 1145 0 R +/Prev 227 0 R +/Next 291 0 R +/First 259 0 R +/Last 263 0 R +/Count -2 +>> endobj +251 0 obj << +/Title 252 0 R +/A 249 0 R +/Parent 227 0 R +/Prev 247 0 R +>> endobj +247 0 obj << +/Title 248 0 R +/A 245 0 R +/Parent 227 0 R +/Prev 239 0 R +/Next 251 0 R +>> endobj +243 0 obj << +/Title 244 0 R +/A 241 0 R +/Parent 239 0 R +>> endobj +239 0 obj << +/Title 240 0 R +/A 237 0 R +/Parent 227 0 R +/Prev 235 0 R +/Next 247 0 R +/First 243 0 R +/Last 243 0 R +/Count -1 +>> endobj +235 0 obj << +/Title 236 0 R +/A 233 0 R +/Parent 227 0 R +/Prev 231 0 R +/Next 239 0 R +>> endobj +231 0 obj << +/Title 232 0 R +/A 229 0 R +/Parent 227 0 R +/Next 235 0 R +>> endobj +227 0 obj << +/Title 228 0 R +/A 225 0 R +/Parent 1145 0 R +/Prev 211 0 R +/Next 255 0 R +/First 231 0 R +/Last 251 0 R +/Count -5 +>> endobj +223 0 obj << +/Title 224 0 R +/A 221 0 R +/Parent 211 0 R +/Prev 219 0 R +>> endobj +219 0 obj << +/Title 220 0 R +/A 217 0 R +/Parent 211 0 R +/Prev 215 0 R +/Next 223 0 R +>> endobj +215 0 obj << +/Title 216 0 R +/A 213 0 R +/Parent 211 0 R +/Next 219 0 R +>> endobj +211 0 obj << +/Title 212 0 R +/A 209 0 R +/Parent 1145 0 R +/Prev 207 0 R +/Next 227 0 R +/First 215 0 R +/Last 223 0 R +/Count -3 +>> endobj +207 0 obj << +/Title 208 0 R +/A 205 0 R +/Parent 1145 0 R +/Prev 199 0 R +/Next 211 0 R +>> endobj +203 0 obj << +/Title 204 0 R +/A 201 0 R +/Parent 199 0 R +>> endobj +199 0 obj << +/Title 200 0 R +/A 197 0 R +/Parent 1145 0 R +/Prev 127 0 R +/Next 207 0 R +/First 203 0 R +/Last 203 0 R +/Count -1 +>> endobj +195 0 obj << +/Title 196 0 R +/A 193 0 R +/Parent 187 0 R +/Prev 191 0 R +>> endobj +191 0 obj << +/Title 192 0 R +/A 189 0 R +/Parent 187 0 R +/Next 195 0 R +>> endobj +187 0 obj << +/Title 188 0 R +/A 185 0 R +/Parent 127 0 R +/Prev 135 0 R +/First 191 0 R +/Last 195 0 R +/Count -2 +>> endobj +183 0 obj << +/Title 184 0 R +/A 181 0 R +/Parent 135 0 R +/Prev 179 0 R +>> endobj +179 0 obj << +/Title 180 0 R +/A 177 0 R +/Parent 135 0 R +/Prev 175 0 R +/Next 183 0 R +>> endobj +175 0 obj << +/Title 176 0 R +/A 173 0 R +/Parent 135 0 R +/Prev 171 0 R +/Next 179 0 R +>> endobj +171 0 obj << +/Title 172 0 R +/A 169 0 R +/Parent 135 0 R +/Prev 167 0 R +/Next 175 0 R +>> endobj +167 0 obj << +/Title 168 0 R +/A 165 0 R +/Parent 135 0 R +/Prev 163 0 R +/Next 171 0 R +>> endobj +163 0 obj << +/Title 164 0 R +/A 161 0 R +/Parent 135 0 R +/Prev 159 0 R +/Next 167 0 R +>> endobj +159 0 obj << +/Title 160 0 R +/A 157 0 R +/Parent 135 0 R +/Prev 155 0 R +/Next 163 0 R +>> endobj +155 0 obj << +/Title 156 0 R +/A 153 0 R +/Parent 135 0 R +/Prev 151 0 R +/Next 159 0 R +>> endobj +151 0 obj << +/Title 152 0 R +/A 149 0 R +/Parent 135 0 R +/Prev 147 0 R +/Next 155 0 R +>> endobj +147 0 obj << +/Title 148 0 R +/A 145 0 R +/Parent 135 0 R +/Prev 143 0 R +/Next 151 0 R +>> endobj +143 0 obj << +/Title 144 0 R +/A 141 0 R +/Parent 135 0 R +/Prev 139 0 R +/Next 147 0 R +>> endobj +139 0 obj << +/Title 140 0 R +/A 137 0 R +/Parent 135 0 R +/Next 143 0 R +>> endobj +135 0 obj << +/Title 136 0 R +/A 133 0 R +/Parent 127 0 R +/Prev 131 0 R +/Next 187 0 R +/First 139 0 R +/Last 183 0 R +/Count -12 +>> endobj +131 0 obj << +/Title 132 0 R +/A 129 0 R +/Parent 127 0 R +/Next 135 0 R +>> endobj +127 0 obj << +/Title 128 0 R +/A 125 0 R +/Parent 1145 0 R +/Prev 75 0 R +/Next 199 0 R +/First 131 0 R +/Last 187 0 R +/Count -3 +>> endobj +123 0 obj << +/Title 124 0 R +/A 121 0 R +/Parent 119 0 R +>> endobj +119 0 obj << +/Title 120 0 R +/A 117 0 R +/Parent 75 0 R +/Prev 115 0 R +/First 123 0 R +/Last 123 0 R +/Count -1 +>> endobj +115 0 obj << +/Title 116 0 R +/A 113 0 R +/Parent 75 0 R +/Prev 111 0 R +/Next 119 0 R +>> endobj +111 0 obj << +/Title 112 0 R +/A 109 0 R +/Parent 75 0 R +/Prev 91 0 R +/Next 115 0 R +>> endobj +107 0 obj << +/Title 108 0 R +/A 105 0 R +/Parent 91 0 R +/Prev 103 0 R +>> endobj +103 0 obj << +/Title 104 0 R +/A 101 0 R +/Parent 91 0 R +/Prev 99 0 R +/Next 107 0 R +>> endobj +99 0 obj << +/Title 100 0 R +/A 97 0 R +/Parent 91 0 R +/Prev 95 0 R +/Next 103 0 R +>> endobj +95 0 obj << +/Title 96 0 R +/A 93 0 R +/Parent 91 0 R +/Next 99 0 R +>> endobj +91 0 obj << +/Title 92 0 R +/A 89 0 R +/Parent 75 0 R +/Prev 87 0 R +/Next 111 0 R +/First 95 0 R +/Last 107 0 R +/Count -4 +>> endobj +87 0 obj << +/Title 88 0 R +/A 85 0 R +/Parent 75 0 R +/Prev 83 0 R +/Next 91 0 R +>> endobj +83 0 obj << +/Title 84 0 R +/A 81 0 R +/Parent 75 0 R +/Prev 79 0 R +/Next 87 0 R +>> endobj +79 0 obj << +/Title 80 0 R +/A 77 0 R +/Parent 75 0 R +/Next 83 0 R +>> endobj +75 0 obj << +/Title 76 0 R +/A 73 0 R +/Parent 1145 0 R +/Prev 31 0 R +/Next 127 0 R +/First 79 0 R +/Last 119 0 R +/Count -7 +>> endobj +71 0 obj << +/Title 72 0 R +/A 69 0 R +/Parent 31 0 R +/Prev 67 0 R +>> endobj +67 0 obj << +/Title 68 0 R +/A 65 0 R +/Parent 31 0 R +/Prev 63 0 R +/Next 71 0 R +>> endobj +63 0 obj << +/Title 64 0 R +/A 61 0 R +/Parent 31 0 R +/Prev 35 0 R +/Next 67 0 R +>> endobj +59 0 obj << +/Title 60 0 R +/A 57 0 R +/Parent 35 0 R +/Prev 55 0 R +>> endobj +55 0 obj << +/Title 56 0 R +/A 53 0 R +/Parent 35 0 R +/Prev 51 0 R +/Next 59 0 R +>> endobj +51 0 obj << +/Title 52 0 R +/A 49 0 R +/Parent 35 0 R +/Prev 47 0 R +/Next 55 0 R +>> endobj +47 0 obj << +/Title 48 0 R +/A 45 0 R +/Parent 35 0 R +/Prev 43 0 R +/Next 51 0 R +>> endobj +43 0 obj << +/Title 44 0 R +/A 41 0 R +/Parent 35 0 R +/Prev 39 0 R +/Next 47 0 R +>> endobj +39 0 obj << +/Title 40 0 R +/A 37 0 R +/Parent 35 0 R +/Next 43 0 R +>> endobj +35 0 obj << +/Title 36 0 R +/A 33 0 R +/Parent 31 0 R +/Next 63 0 R +/First 39 0 R +/Last 59 0 R +/Count -6 +>> endobj +31 0 obj << +/Title 32 0 R +/A 29 0 R +/Parent 1145 0 R +/Prev 7 0 R +/Next 75 0 R +/First 35 0 R +/Last 71 0 R +/Count -4 +>> endobj +27 0 obj << +/Title 28 0 R +/A 25 0 R +/Parent 23 0 R +>> endobj +23 0 obj << +/Title 24 0 R +/A 21 0 R +/Parent 7 0 R +/Prev 19 0 R +/First 27 0 R +/Last 27 0 R +/Count -1 +>> endobj +19 0 obj << +/Title 20 0 R +/A 17 0 R +/Parent 7 0 R +/Prev 15 0 R +/Next 23 0 R +>> endobj +15 0 obj << +/Title 16 0 R +/A 13 0 R +/Parent 7 0 R +/Prev 11 0 R +/Next 19 0 R +>> endobj +11 0 obj << +/Title 12 0 R +/A 9 0 R +/Parent 7 0 R +/Next 15 0 R +>> endobj +7 0 obj << +/Title 8 0 R +/A 5 0 R +/Parent 1145 0 R +/Next 31 0 R +/First 11 0 R +/Last 23 0 R +/Count -4 +>> endobj +1146 0 obj << +/Names [(ALC@line.1) 800 0 R (ALC@line.10) 809 0 R (ALC@line.11) 810 0 R (ALC@line.12) 811 0 R (ALC@line.13) 812 0 R (ALC@line.14) 813 0 R] +/Limits [(ALC@line.1) (ALC@line.14)] +>> endobj +1147 0 obj << +/Names [(ALC@line.15) 814 0 R (ALC@line.16) 1014 0 R (ALC@line.2) 801 0 R (ALC@line.3) 802 0 R (ALC@line.4) 803 0 R (ALC@line.5) 804 0 R] +/Limits [(ALC@line.15) (ALC@line.5)] +>> endobj +1148 0 obj << +/Names [(ALC@line.6) 805 0 R (ALC@line.7) 806 0 R (ALC@line.8) 807 0 R (ALC@line.9) 808 0 R (ALC@rem.1) 799 0 R (ALC@rem.2) 819 0 R] +/Limits [(ALC@line.6) (ALC@rem.2)] +>> endobj +1149 0 obj << +/Names [(ALC@rem.3) 820 0 R (ALC@rem.4) 821 0 R (ALC@rem.5) 822 0 R (Doc-Start) 480 0 R (Hfootnote.1) 966 0 R (Hfootnote.2) 967 0 R] +/Limits [(ALC@rem.3) (Hfootnote.2)] +>> endobj +1150 0 obj << +/Names [(Hfootnote.3) 975 0 R (Hfootnote.4) 972 0 R (Hfootnote.5) 973 0 R (Item.1) 755 0 R (Item.10) 768 0 R (Item.11) 769 0 R] +/Limits [(Hfootnote.3) (Item.11)] +>> endobj +1151 0 obj << +/Names [(Item.12) 770 0 R (Item.13) 771 0 R (Item.14) 772 0 R (Item.15) 773 0 R (Item.16) 774 0 R (Item.17) 1049 0 R] +/Limits [(Item.12) (Item.17)] +>> endobj +1152 0 obj << +/Names [(Item.18) 1050 0 R (Item.19) 1051 0 R (Item.2) 760 0 R (Item.20) 1052 0 R (Item.21) 1053 0 R (Item.22) 1054 0 R] +/Limits [(Item.18) (Item.22)] +>> endobj +1153 0 obj << +/Names [(Item.3) 761 0 R (Item.4) 762 0 R (Item.5) 763 0 R (Item.6) 764 0 R (Item.7) 765 0 R (Item.8) 766 0 R] +/Limits [(Item.3) (Item.8)] +>> endobj +1154 0 obj << +/Names [(Item.9) 767 0 R (algorithm.1) 623 0 R (algorithm.2) 624 0 R (algorithm.3) 625 0 R (algorithm.4) 626 0 R (appendix*.39) 1122 0 R] +/Limits [(Item.9) (appendix*.39)] +>> endobj +1155 0 obj << +/Names [(appendix.A) 446 0 R (appendix.B) 450 0 R (appendix.C) 454 0 R (appendix.D) 466 0 R (appendix.E) 470 0 R (chapter*.1) 530 0 R] +/Limits [(appendix.A) (chapter*.1)] +>> endobj +1156 0 obj << +/Names [(chapter*.2) 622 0 R (chapter*.3) 635 0 R (chapter*.4) 657 0 R (chapter*.5) 676 0 R (chapter.1) 6 0 R (chapter.10) 290 0 R] +/Limits [(chapter*.2) (chapter.10)] +>> endobj +1157 0 obj << +/Names [(chapter.11) 362 0 R (chapter.12) 394 0 R (chapter.13) 442 0 R (chapter.2) 30 0 R (chapter.3) 74 0 R (chapter.4) 126 0 R] +/Limits [(chapter.11) (chapter.4)] +>> endobj +1158 0 obj << +/Names [(chapter.5) 198 0 R (chapter.6) 206 0 R (chapter.7) 210 0 R (chapter.8) 226 0 R (chapter.9) 254 0 R (cite.Glep44) 741 0 R] +/Limits [(chapter.5) (cite.Glep44)] +>> endobj +1159 0 obj << +/Names [(listing.11.1) 637 0 R (listing.11.2) 638 0 R (listing.7.1) 636 0 R (listing.C.1) 639 0 R (page.1) 479 0 R (page.10) 698 0 R] +/Limits [(listing.11.1) (page.10)] +>> endobj +1160 0 obj << +/Names [(page.11) 703 0 R (page.12) 710 0 R (page.13) 715 0 R (page.14) 727 0 R (page.15) 740 0 R (page.16) 748 0 R] +/Limits [(page.11) (page.16)] +>> endobj +1161 0 obj << +/Names [(page.17) 754 0 R (page.18) 759 0 R (page.19) 780 0 R (page.2) 584 0 R (page.20) 784 0 R (page.21) 790 0 R] +/Limits [(page.17) (page.21)] +>> endobj +1162 0 obj << +/Names [(page.22) 798 0 R (page.23) 818 0 R (page.24) 831 0 R (page.25) 840 0 R (page.26) 847 0 R (page.27) 851 0 R] +/Limits [(page.22) (page.27)] +>> endobj +1163 0 obj << +/Names [(page.28) 862 0 R (page.29) 876 0 R (page.3) 613 0 R (page.30) 882 0 R (page.31) 890 0 R (page.32) 899 0 R] +/Limits [(page.28) (page.32)] +>> endobj +1164 0 obj << +/Names [(page.33) 908 0 R (page.34) 914 0 R (page.35) 920 0 R (page.36) 927 0 R (page.37) 934 0 R (page.38) 939 0 R] +/Limits [(page.33) (page.38)] +>> endobj +1165 0 obj << +/Names [(page.39) 949 0 R (page.4) 621 0 R (page.40) 953 0 R (page.41) 965 0 R (page.42) 971 0 R (page.43) 981 0 R] +/Limits [(page.39) (page.43)] +>> endobj +1166 0 obj << +/Names [(page.44) 986 0 R (page.45) 990 0 R (page.46) 1000 0 R (page.47) 1006 0 R (page.48) 1013 0 R (page.49) 1019 0 R] +/Limits [(page.44) (page.49)] +>> endobj +1167 0 obj << +/Names [(page.5) 634 0 R (page.50) 1025 0 R (page.51) 1032 0 R (page.52) 1038 0 R (page.53) 1042 0 R (page.54) 1048 0 R] +/Limits [(page.5) (page.54)] +>> endobj +1168 0 obj << +/Names [(page.55) 1059 0 R (page.56) 1064 0 R (page.57) 1069 0 R (page.58) 1073 0 R (page.59) 1078 0 R (page.6) 656 0 R] +/Limits [(page.55) (page.6)] +>> endobj +1169 0 obj << +/Names [(page.60) 1094 0 R (page.61) 1112 0 R (page.62) 1121 0 R (page.7) 675 0 R (page.8) 684 0 R (page.9) 694 0 R] +/Limits [(page.60) (page.9)] +>> endobj +1170 0 obj << +/Names [(section*.10) 705 0 R (section*.11) 706 0 R (section*.12) 791 0 R (section*.13) 832 0 R (section*.14) 863 0 R (section*.15) 883 0 R] +/Limits [(section*.10) (section*.15)] +>> endobj +1171 0 obj << +/Names [(section*.16) 900 0 R (section*.17) 901 0 R (section*.18) 834 0 R (section*.19) 902 0 R (section*.20) 903 0 R (section*.21) 982 0 R] +/Limits [(section*.16) (section*.21)] +>> endobj +1172 0 obj << +/Names [(section*.22) 991 0 R (section*.23) 992 0 R (section*.24) 993 0 R (section*.25) 1001 0 R (section*.26) 1002 0 R (section*.27) 1007 0 R] +/Limits [(section*.22) (section*.27)] +>> endobj +1173 0 obj << +/Names [(section*.28) 1020 0 R (section*.29) 1021 0 R (section*.30) 1026 0 R (section*.31) 1033 0 R (section*.32) 1034 0 R (section*.33) 1043 0 R] +/Limits [(section*.28) (section*.33)] +>> endobj +1174 0 obj << +/Names [(section*.34) 1095 0 R (section*.35) 1113 0 R (section*.36) 1114 0 R (section*.37) 1115 0 R (section*.38) 1116 0 R (section*.6) 685 0 R] +/Limits [(section*.34) (section*.6)] +>> endobj +1175 0 obj << +/Names [(section*.7) 686 0 R (section*.8) 688 0 R (section*.9) 704 0 R (section.1.1) 10 0 R (section.1.2) 14 0 R (section.1.3) 18 0 R] +/Limits [(section*.7) (section.1.3)] +>> endobj +1176 0 obj << +/Names [(section.1.4) 22 0 R (section.10.1) 294 0 R (section.10.2) 358 0 R (section.11.1) 366 0 R (section.11.2) 370 0 R (section.11.3) 374 0 R] +/Limits [(section.1.4) (section.11.3)] +>> endobj +1177 0 obj << +/Names [(section.11.4) 390 0 R (section.12.1) 398 0 R (section.12.2) 402 0 R (section.12.3) 414 0 R (section.12.4) 426 0 R (section.12.5) 434 0 R] +/Limits [(section.11.4) (section.12.5)] +>> endobj +1178 0 obj << +/Names [(section.12.6) 438 0 R (section.2.1) 34 0 R (section.2.2) 62 0 R (section.2.3) 66 0 R (section.2.4) 70 0 R (section.3.1) 78 0 R] +/Limits [(section.12.6) (section.3.1)] +>> endobj +1179 0 obj << +/Names [(section.3.2) 82 0 R (section.3.3) 86 0 R (section.3.4) 90 0 R (section.3.5) 110 0 R (section.3.6) 114 0 R (section.3.7) 118 0 R] +/Limits [(section.3.2) (section.3.7)] +>> endobj +1180 0 obj << +/Names [(section.4.1) 130 0 R (section.4.2) 134 0 R (section.4.3) 186 0 R (section.5.1) 202 0 R (section.7.1) 214 0 R (section.7.2) 218 0 R] +/Limits [(section.4.1) (section.7.2)] +>> endobj +1181 0 obj << +/Names [(section.7.3) 222 0 R (section.8.1) 230 0 R (section.8.2) 234 0 R (section.8.3) 238 0 R (section.8.4) 246 0 R (section.8.5) 250 0 R] +/Limits [(section.7.3) (section.8.5)] +>> endobj +1182 0 obj << +/Names [(section.9.1) 258 0 R (section.9.2) 262 0 R (section.C.1) 458 0 R (section.C.2) 462 0 R (subsection.1.4.1) 26 0 R (subsection.10.1.1) 298 0 R] +/Limits [(section.9.1) (subsection.10.1.1)] +>> endobj +1183 0 obj << +/Names [(subsection.10.1.10) 334 0 R (subsection.10.1.11) 338 0 R (subsection.10.1.12) 342 0 R (subsection.10.1.13) 346 0 R (subsection.10.1.14) 350 0 R (subsection.10.1.15) 354 0 R] +/Limits [(subsection.10.1.10) (subsection.10.1.15)] +>> endobj +1184 0 obj << +/Names [(subsection.10.1.2) 302 0 R (subsection.10.1.3) 306 0 R (subsection.10.1.4) 310 0 R (subsection.10.1.5) 314 0 R (subsection.10.1.6) 318 0 R (subsection.10.1.7) 322 0 R] +/Limits [(subsection.10.1.2) (subsection.10.1.7)] +>> endobj +1185 0 obj << +/Names [(subsection.10.1.8) 326 0 R (subsection.10.1.9) 330 0 R (subsection.11.3.1) 378 0 R (subsection.11.3.2) 382 0 R (subsection.11.3.3) 386 0 R (subsection.12.2.1) 406 0 R] +/Limits [(subsection.10.1.8) (subsection.12.2.1)] +>> endobj +1186 0 obj << +/Names [(subsection.12.2.2) 410 0 R (subsection.12.3.1) 418 0 R (subsection.12.3.2) 422 0 R (subsection.12.4.1) 430 0 R (subsection.2.1.1) 38 0 R (subsection.2.1.2) 42 0 R] +/Limits [(subsection.12.2.2) (subsection.2.1.2)] +>> endobj +1187 0 obj << +/Names [(subsection.2.1.3) 46 0 R (subsection.2.1.4) 50 0 R (subsection.2.1.5) 54 0 R (subsection.2.1.6) 58 0 R (subsection.3.4.1) 94 0 R (subsection.3.4.2) 98 0 R] +/Limits [(subsection.2.1.3) (subsection.3.4.2)] +>> endobj +1188 0 obj << +/Names [(subsection.3.4.3) 102 0 R (subsection.3.4.4) 106 0 R (subsection.3.7.1) 122 0 R (subsection.4.2.1) 138 0 R (subsection.4.2.10) 174 0 R (subsection.4.2.11) 178 0 R] +/Limits [(subsection.3.4.3) (subsection.4.2.11)] +>> endobj +1189 0 obj << +/Names [(subsection.4.2.12) 182 0 R (subsection.4.2.2) 142 0 R (subsection.4.2.3) 146 0 R (subsection.4.2.4) 150 0 R (subsection.4.2.5) 154 0 R (subsection.4.2.6) 158 0 R] +/Limits [(subsection.4.2.12) (subsection.4.2.6)] +>> endobj +1190 0 obj << +/Names [(subsection.4.2.7) 162 0 R (subsection.4.2.8) 166 0 R (subsection.4.2.9) 170 0 R (subsection.4.3.1) 190 0 R (subsection.4.3.2) 194 0 R (subsection.8.3.1) 242 0 R] +/Limits [(subsection.4.2.7) (subsection.8.3.1)] +>> endobj +1191 0 obj << +/Names [(subsection.9.2.1) 266 0 R (subsection.9.2.2) 270 0 R (subsection.9.2.3) 274 0 R (subsection.9.2.4) 278 0 R (subsection.9.2.5) 282 0 R (subsection.9.2.6) 286 0 R] +/Limits [(subsection.9.2.1) (subsection.9.2.6)] +>> endobj +1192 0 obj << +/Names [(table.10.1) 664 0 R (table.10.2) 665 0 R (table.10.3) 666 0 R (table.10.4) 667 0 R (table.11.1) 668 0 R (table.11.2) 669 0 R] +/Limits [(table.10.1) (table.11.2)] +>> endobj +1193 0 obj << +/Names [(table.11.3) 670 0 R (table.8.1) 659 0 R (table.9.1) 660 0 R (table.9.2) 661 0 R (table.9.3) 662 0 R (table.9.4) 663 0 R] +/Limits [(table.11.3) (table.9.4)] +>> endobj +1194 0 obj << +/Names [(table.D.1) 671 0 R] +/Limits [(table.D.1) (table.D.1)] +>> endobj +1195 0 obj << +/Kids [1146 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R 1151 0 R] +/Limits [(ALC@line.1) (Item.17)] +>> endobj +1196 0 obj << +/Kids [1152 0 R 1153 0 R 1154 0 R 1155 0 R 1156 0 R 1157 0 R] +/Limits [(Item.18) (chapter.4)] +>> endobj +1197 0 obj << +/Kids [1158 0 R 1159 0 R 1160 0 R 1161 0 R 1162 0 R 1163 0 R] +/Limits [(chapter.5) (page.32)] +>> endobj +1198 0 obj << +/Kids [1164 0 R 1165 0 R 1166 0 R 1167 0 R 1168 0 R 1169 0 R] +/Limits [(page.33) (page.9)] +>> endobj +1199 0 obj << +/Kids [1170 0 R 1171 0 R 1172 0 R 1173 0 R 1174 0 R 1175 0 R] +/Limits [(section*.10) (section.1.3)] +>> endobj +1200 0 obj << +/Kids [1176 0 R 1177 0 R 1178 0 R 1179 0 R 1180 0 R 1181 0 R] +/Limits [(section.1.4) (section.8.5)] +>> endobj +1201 0 obj << +/Kids [1182 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R 1187 0 R] +/Limits [(section.9.1) (subsection.3.4.2)] +>> endobj +1202 0 obj << +/Kids [1188 0 R 1189 0 R 1190 0 R 1191 0 R 1192 0 R 1193 0 R] +/Limits [(subsection.3.4.3) (table.9.4)] +>> endobj +1203 0 obj << +/Kids [1194 0 R] +/Limits [(table.D.1) (table.D.1)] +>> endobj +1204 0 obj << +/Kids [1195 0 R 1196 0 R 1197 0 R 1198 0 R 1199 0 R 1200 0 R] +/Limits [(ALC@line.1) (section.8.5)] +>> endobj +1205 0 obj << +/Kids [1201 0 R 1202 0 R 1203 0 R] +/Limits [(section.9.1) (table.D.1)] +>> endobj +1206 0 obj << +/Kids [1204 0 R 1205 0 R] +/Limits [(ALC@line.1) (table.D.1)] +>> endobj +1207 0 obj << +/Dests 1206 0 R +>> endobj +1208 0 obj << +/Type /Catalog +/Pages 1144 0 R +/Outlines 1145 0 R +/Names 1207 0 R +/PageMode/UseOutlines/Lang(en)/PageLabels << /Nums [0 << /S /D >> 1 << /S /D >> ] >> +/OpenAction 473 0 R +>> endobj +1209 0 obj << +/Author(Stephen P. Bennet, Ciaran McCreesh)/Title(Package Manager Specification)/Subject(Defining a feature set for package managers in the Gentoo world)/Creator(pdfLaTeX and hyperref)/Producer(pdfLaTeX and hyperref)/Keywords(Gentoo, package manager, specification, draft) +/CreationDate (D:20090310214500-04'00') +/ModDate (D:20090310214500-04'00') +/Trapped /False +/PTEX.Fullbanner (This is pdfTeX, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6) +>> endobj +xref +0 1210 +0000000001 65535 f +0000000002 00000 f +0000000003 00000 f +0000000004 00000 f +0000000000 00000 f +0000000015 00000 n +0000046984 00000 n +0000290037 00000 n +0000000060 00000 n +0000000090 00000 n +0000047038 00000 n +0000289965 00000 n +0000000137 00000 n +0000000175 00000 n +0000047094 00000 n +0000289879 00000 n +0000000223 00000 n +0000000251 00000 n +0000047150 00000 n +0000289793 00000 n +0000000299 00000 n +0000000329 00000 n +0000047206 00000 n +0000289683 00000 n +0000000377 00000 n +0000000401 00000 n +0000048661 00000 n +0000289622 00000 n +0000000454 00000 n +0000000487 00000 n +0000050570 00000 n +0000289497 00000 n +0000000533 00000 n +0000000570 00000 n +0000050625 00000 n +0000289386 00000 n +0000000618 00000 n +0000000660 00000 n +0000050681 00000 n +0000289312 00000 n +0000000713 00000 n +0000000746 00000 n +0000050794 00000 n +0000289225 00000 n +0000000799 00000 n +0000000831 00000 n +0000050907 00000 n +0000289138 00000 n +0000000884 00000 n +0000000913 00000 n +0000050963 00000 n +0000289051 00000 n +0000000966 00000 n +0000000999 00000 n +0000053888 00000 n +0000288964 00000 n +0000001052 00000 n +0000001087 00000 n +0000053943 00000 n +0000288890 00000 n +0000001140 00000 n +0000001172 00000 n +0000053999 00000 n +0000288803 00000 n +0000001220 00000 n +0000001261 00000 n +0000054055 00000 n +0000288716 00000 n +0000001309 00000 n +0000001346 00000 n +0000054854 00000 n +0000288642 00000 n +0000001394 00000 n +0000001435 00000 n +0000058401 00000 n +0000288514 00000 n +0000001481 00000 n +0000001511 00000 n +0000058456 00000 n +0000288440 00000 n +0000001559 00000 n +0000001587 00000 n +0000058512 00000 n +0000288353 00000 n +0000001635 00000 n +0000001674 00000 n +0000062744 00000 n +0000288266 00000 n +0000001722 00000 n +0000001760 00000 n +0000062799 00000 n +0000288140 00000 n +0000001808 00000 n +0000001849 00000 n +0000066422 00000 n +0000288066 00000 n +0000001902 00000 n +0000001943 00000 n +0000066478 00000 n +0000287977 00000 n +0000001996 00000 n +0000002042 00000 n +0000066534 00000 n +0000287886 00000 n +0000002096 00000 n +0000002142 00000 n +0000069925 00000 n +0000287808 00000 n +0000002196 00000 n +0000002237 00000 n +0000069982 00000 n +0000287717 00000 n +0000002286 00000 n +0000002328 00000 n +0000070039 00000 n +0000287625 00000 n +0000002377 00000 n +0000002417 00000 n +0000070096 00000 n +0000287508 00000 n +0000002466 00000 n +0000002508 00000 n +0000070153 00000 n +0000287443 00000 n +0000002562 00000 n +0000002600 00000 n +0000074796 00000 n +0000287311 00000 n +0000002647 00000 n +0000002675 00000 n +0000074852 00000 n +0000287232 00000 n +0000002724 00000 n +0000002762 00000 n +0000074909 00000 n +0000287099 00000 n +0000002811 00000 n +0000002859 00000 n +0000074966 00000 n +0000287020 00000 n +0000002913 00000 n +0000002948 00000 n +0000075023 00000 n +0000286927 00000 n +0000003002 00000 n +0000003032 00000 n +0000078410 00000 n +0000286834 00000 n +0000003086 00000 n +0000003119 00000 n +0000078466 00000 n +0000286741 00000 n +0000003173 00000 n +0000003201 00000 n +0000078523 00000 n +0000286648 00000 n +0000003255 00000 n +0000003287 00000 n +0000078580 00000 n +0000286555 00000 n +0000003341 00000 n +0000003384 00000 n +0000078637 00000 n +0000286462 00000 n +0000003438 00000 n +0000003466 00000 n +0000078694 00000 n +0000286369 00000 n +0000003520 00000 n +0000003554 00000 n +0000081835 00000 n +0000286276 00000 n +0000003608 00000 n +0000003640 00000 n +0000081948 00000 n +0000286183 00000 n +0000003695 00000 n +0000003731 00000 n +0000082005 00000 n +0000286090 00000 n +0000003786 00000 n +0000003817 00000 n +0000082062 00000 n +0000286011 00000 n +0000003872 00000 n +0000003915 00000 n +0000082119 00000 n +0000285893 00000 n +0000003964 00000 n +0000004001 00000 n +0000086730 00000 n +0000285814 00000 n +0000004055 00000 n +0000004096 00000 n +0000086786 00000 n +0000285735 00000 n +0000004150 00000 n +0000004207 00000 n +0000090905 00000 n +0000285602 00000 n +0000004254 00000 n +0000004300 00000 n +0000091017 00000 n +0000285537 00000 n +0000004349 00000 n +0000004401 00000 n +0000092356 00000 n +0000285443 00000 n +0000004448 00000 n +0000004486 00000 n +0000095183 00000 n +0000285310 00000 n +0000004533 00000 n +0000004561 00000 n +0000095239 00000 n +0000285231 00000 n +0000004610 00000 n +0000004649 00000 n +0000095296 00000 n +0000285138 00000 n +0000004698 00000 n +0000004746 00000 n +0000095353 00000 n +0000285059 00000 n +0000004795 00000 n +0000004834 00000 n +0000100516 00000 n +0000284926 00000 n +0000004881 00000 n +0000004925 00000 n +0000100629 00000 n +0000284847 00000 n +0000004974 00000 n +0000005013 00000 n +0000100686 00000 n +0000284754 00000 n +0000005062 00000 n +0000005116 00000 n +0000105159 00000 n +0000284622 00000 n +0000005165 00000 n +0000005218 00000 n +0000105216 00000 n +0000284557 00000 n +0000005272 00000 n +0000005296 00000 n +0000105273 00000 n +0000284464 00000 n +0000005345 00000 n +0000005378 00000 n +0000106824 00000 n +0000284385 00000 n +0000005427 00000 n +0000005477 00000 n +0000109743 00000 n +0000284252 00000 n +0000005524 00000 n +0000005556 00000 n +0000109799 00000 n +0000284173 00000 n +0000005605 00000 n +0000005643 00000 n +0000109856 00000 n +0000284055 00000 n +0000005692 00000 n +0000005743 00000 n +0000112961 00000 n +0000283976 00000 n +0000005797 00000 n +0000005849 00000 n +0000113018 00000 n +0000283883 00000 n +0000005903 00000 n +0000005964 00000 n +0000113075 00000 n +0000283790 00000 n +0000006018 00000 n +0000006070 00000 n +0000113132 00000 n +0000283697 00000 n +0000006124 00000 n +0000006177 00000 n +0000118769 00000 n +0000283604 00000 n +0000006231 00000 n +0000006259 00000 n +0000118826 00000 n +0000283525 00000 n +0000006313 00000 n +0000006343 00000 n +0000121257 00000 n +0000283392 00000 n +0000006391 00000 n +0000006435 00000 n +0000121313 00000 n +0000283273 00000 n +0000006485 00000 n +0000006522 00000 n +0000121370 00000 n +0000283194 00000 n +0000006577 00000 n +0000006609 00000 n +0000121427 00000 n +0000283101 00000 n +0000006664 00000 n +0000006697 00000 n +0000123809 00000 n +0000283008 00000 n +0000006752 00000 n +0000006786 00000 n +0000123866 00000 n +0000282915 00000 n +0000006841 00000 n +0000006877 00000 n +0000123923 00000 n +0000282822 00000 n +0000006932 00000 n +0000006966 00000 n +0000126635 00000 n +0000282729 00000 n +0000007021 00000 n +0000007052 00000 n +0000126691 00000 n +0000282636 00000 n +0000007107 00000 n +0000007141 00000 n +0000126748 00000 n +0000282543 00000 n +0000007196 00000 n +0000007230 00000 n +0000129130 00000 n +0000282450 00000 n +0000007285 00000 n +0000007320 00000 n +0000129186 00000 n +0000282357 00000 n +0000007376 00000 n +0000007408 00000 n +0000129243 00000 n +0000282264 00000 n +0000007464 00000 n +0000007497 00000 n +0000129300 00000 n +0000282171 00000 n +0000007553 00000 n +0000007586 00000 n +0000129357 00000 n +0000282078 00000 n +0000007642 00000 n +0000007673 00000 n +0000129414 00000 n +0000281985 00000 n +0000007729 00000 n +0000007763 00000 n +0000129471 00000 n +0000281906 00000 n +0000007819 00000 n +0000007866 00000 n +0000131869 00000 n +0000281827 00000 n +0000007916 00000 n +0000007946 00000 n +0000135850 00000 n +0000281694 00000 n +0000007994 00000 n +0000008036 00000 n +0000135906 00000 n +0000281615 00000 n +0000008086 00000 n +0000008123 00000 n +0000143792 00000 n +0000281522 00000 n +0000008173 00000 n +0000008233 00000 n +0000143849 00000 n +0000281390 00000 n +0000008283 00000 n +0000008321 00000 n +0000143906 00000 n +0000281311 00000 n +0000008376 00000 n +0000008411 00000 n +0000147520 00000 n +0000281218 00000 n +0000008466 00000 n +0000008527 00000 n +0000147576 00000 n +0000281139 00000 n +0000008582 00000 n +0000008626 00000 n +0000166957 00000 n +0000281060 00000 n +0000008676 00000 n +0000008737 00000 n +0000169699 00000 n +0000280927 00000 n +0000008785 00000 n +0000008826 00000 n +0000169815 00000 n +0000280848 00000 n +0000008876 00000 n +0000008904 00000 n +0000169873 00000 n +0000280716 00000 n +0000008954 00000 n +0000008985 00000 n +0000169931 00000 n +0000280637 00000 n +0000009040 00000 n +0000009071 00000 n +0000169989 00000 n +0000280558 00000 n +0000009126 00000 n +0000009163 00000 n +0000172965 00000 n +0000280426 00000 n +0000009213 00000 n +0000009246 00000 n +0000173022 00000 n +0000280347 00000 n +0000009301 00000 n +0000009332 00000 n +0000173080 00000 n +0000280268 00000 n +0000009387 00000 n +0000009436 00000 n +0000173491 00000 n +0000280136 00000 n +0000009486 00000 n +0000009514 00000 n +0000174428 00000 n +0000280071 00000 n +0000009569 00000 n +0000009598 00000 n +0000174485 00000 n +0000279978 00000 n +0000009648 00000 n +0000009678 00000 n +0000174543 00000 n +0000279899 00000 n +0000009728 00000 n +0000009759 00000 n +0000176332 00000 n +0000279805 00000 n +0000009807 00000 n +0000009835 00000 n +0000177406 00000 n +0000279711 00000 n +0000009883 00000 n +0000009915 00000 n +0000178711 00000 n +0000279617 00000 n +0000009963 00000 n +0000010000 00000 n +0000180411 00000 n +0000279484 00000 n +0000010048 00000 n +0000010090 00000 n +0000180468 00000 n +0000279405 00000 n +0000010139 00000 n +0000010177 00000 n +0000180526 00000 n +0000279326 00000 n +0000010226 00000 n +0000010258 00000 n +0000183832 00000 n +0000279232 00000 n +0000010306 00000 n +0000010354 00000 n +0000187111 00000 n +0000279152 00000 n +0000010402 00000 n +0000010447 00000 n +0000010841 00000 n +0000010988 00000 n +0000011151 00000 n +0000011441 00000 n +0000010499 00000 n +0000011329 00000 n +0000011385 00000 n +0000277118 00000 n +0000276768 00000 n +0000277474 00000 n +0000013250 00000 n +0000013401 00000 n +0000013554 00000 n +0000013707 00000 n +0000013860 00000 n +0000014012 00000 n +0000014171 00000 n +0000014322 00000 n +0000014475 00000 n +0000014634 00000 n +0000014793 00000 n +0000014951 00000 n +0000015110 00000 n +0000015269 00000 n +0000015428 00000 n +0000015580 00000 n +0000015733 00000 n +0000015886 00000 n +0000016037 00000 n +0000016190 00000 n +0000016343 00000 n +0000016496 00000 n +0000016649 00000 n +0000016808 00000 n +0000016967 00000 n +0000017126 00000 n +0000017285 00000 n +0000017438 00000 n +0000017591 00000 n +0000017744 00000 n +0000017903 00000 n +0000018053 00000 n +0000018206 00000 n +0000018359 00000 n +0000018518 00000 n +0000018677 00000 n +0000018836 00000 n +0000018994 00000 n +0000019153 00000 n +0000019312 00000 n +0000019471 00000 n +0000021803 00000 n +0000019687 00000 n +0000012791 00000 n +0000011526 00000 n +0000276942 00000 n +0000019630 00000 n +0000021962 00000 n +0000022121 00000 n +0000022281 00000 n +0000022441 00000 n +0000022594 00000 n +0000022753 00000 n +0000022912 00000 n +0000023062 00000 n +0000023214 00000 n +0000023364 00000 n +0000023515 00000 n +0000023668 00000 n +0000023821 00000 n +0000023974 00000 n +0000024125 00000 n +0000024276 00000 n +0000024428 00000 n +0000024580 00000 n +0000024739 00000 n +0000024892 00000 n +0000025044 00000 n +0000025195 00000 n +0000025348 00000 n +0000025501 00000 n +0000025660 00000 n +0000025817 00000 n +0000025975 00000 n +0000026134 00000 n +0000026292 00000 n +0000026451 00000 n +0000026602 00000 n +0000026756 00000 n +0000026916 00000 n +0000027076 00000 n +0000027234 00000 n +0000027394 00000 n +0000027554 00000 n +0000027713 00000 n +0000027872 00000 n +0000028032 00000 n +0000028192 00000 n +0000028352 00000 n +0000028513 00000 n +0000028673 00000 n +0000028833 00000 n +0000028993 00000 n +0000029154 00000 n +0000029308 00000 n +0000029460 00000 n +0000031096 00000 n +0000029669 00000 n +0000021272 00000 n +0000019772 00000 n +0000029613 00000 n +0000031250 00000 n +0000031404 00000 n +0000031564 00000 n +0000031724 00000 n +0000031884 00000 n +0000032038 00000 n +0000032190 00000 n +0000032344 00000 n +0000032498 00000 n +0000032658 00000 n +0000032817 00000 n +0000032971 00000 n +0000033131 00000 n +0000033291 00000 n +0000033445 00000 n +0000033605 00000 n +0000033759 00000 n +0000033913 00000 n +0000034064 00000 n +0000034216 00000 n +0000034368 00000 n +0000034519 00000 n +0000034672 00000 n +0000034824 00000 n +0000034976 00000 n +0000035183 00000 n +0000030757 00000 n +0000029767 00000 n +0000035127 00000 n +0000035811 00000 n +0000035963 00000 n +0000036116 00000 n +0000036269 00000 n +0000036535 00000 n +0000035648 00000 n +0000035268 00000 n +0000036422 00000 n +0000036478 00000 n +0000085753 00000 n +0000087879 00000 n +0000154272 00000 n +0000157563 00000 n +0000037201 00000 n +0000037353 00000 n +0000037507 00000 n +0000037661 00000 n +0000037927 00000 n +0000037038 00000 n +0000036620 00000 n +0000037814 00000 n +0000037870 00000 n +0000096967 00000 n +0000144857 00000 n +0000154329 00000 n +0000180584 00000 n +0000039039 00000 n +0000039188 00000 n +0000039338 00000 n +0000039489 00000 n +0000039640 00000 n +0000039790 00000 n +0000039942 00000 n +0000040094 00000 n +0000040246 00000 n +0000040398 00000 n +0000040550 00000 n +0000040701 00000 n +0000040853 00000 n +0000041117 00000 n +0000038804 00000 n +0000038012 00000 n +0000041004 00000 n +0000041060 00000 n +0000277592 00000 n +0000105097 00000 n +0000112900 00000 n +0000115740 00000 n +0000115802 00000 n +0000115976 00000 n +0000123686 00000 n +0000123747 00000 n +0000126573 00000 n +0000131807 00000 n +0000135963 00000 n +0000160491 00000 n +0000166776 00000 n +0000183948 00000 n +0000041649 00000 n +0000041417 00000 n +0000041215 00000 n +0000041536 00000 n +0000041592 00000 n +0000043713 00000 n +0000043872 00000 n +0000044025 00000 n +0000044179 00000 n +0000044599 00000 n +0000043550 00000 n +0000041734 00000 n +0000044372 00000 n +0000044428 00000 n +0000044485 00000 n +0000276448 00000 n +0000044542 00000 n +0000277294 00000 n +0000046777 00000 n +0000047262 00000 n +0000046638 00000 n +0000044723 00000 n +0000046928 00000 n +0000048716 00000 n +0000048486 00000 n +0000047373 00000 n +0000048605 00000 n +0000050355 00000 n +0000051076 00000 n +0000050216 00000 n +0000048827 00000 n +0000050514 00000 n +0000050737 00000 n +0000050850 00000 n +0000051019 00000 n +0000054110 00000 n +0000053713 00000 n +0000051187 00000 n +0000053832 00000 n +0000277710 00000 n +0000054909 00000 n +0000054679 00000 n +0000054221 00000 n +0000054798 00000 n +0000057115 00000 n +0000057269 00000 n +0000057423 00000 n +0000057577 00000 n +0000057731 00000 n +0000057885 00000 n +0000058039 00000 n +0000058191 00000 n +0000058568 00000 n +0000056920 00000 n +0000055007 00000 n +0000058345 00000 n +0000061445 00000 n +0000061597 00000 n +0000061749 00000 n +0000061902 00000 n +0000062054 00000 n +0000062213 00000 n +0000062371 00000 n +0000062530 00000 n +0000065737 00000 n +0000062855 00000 n +0000061250 00000 n +0000058692 00000 n +0000062688 00000 n +0000188314 00000 n +0000065896 00000 n +0000066054 00000 n +0000066213 00000 n +0000066591 00000 n +0000065574 00000 n +0000062966 00000 n +0000066366 00000 n +0000069563 00000 n +0000069717 00000 n +0000070267 00000 n +0000069416 00000 n +0000066715 00000 n +0000069869 00000 n +0000070210 00000 n +0000072606 00000 n +0000071579 00000 n +0000070378 00000 n +0000071698 00000 n +0000071754 00000 n +0000071810 00000 n +0000071866 00000 n +0000071923 00000 n +0000071980 00000 n +0000072037 00000 n +0000072093 00000 n +0000072150 00000 n +0000072207 00000 n +0000072264 00000 n +0000072321 00000 n +0000072378 00000 n +0000072435 00000 n +0000072492 00000 n +0000072549 00000 n +0000277828 00000 n +0000078201 00000 n +0000075080 00000 n +0000074621 00000 n +0000072691 00000 n +0000074740 00000 n +0000078751 00000 n +0000078062 00000 n +0000075191 00000 n +0000078354 00000 n +0000081473 00000 n +0000081626 00000 n +0000082176 00000 n +0000081326 00000 n +0000078862 00000 n +0000081779 00000 n +0000081891 00000 n +0000085231 00000 n +0000085385 00000 n +0000085544 00000 n +0000086843 00000 n +0000085076 00000 n +0000082274 00000 n +0000085697 00000 n +0000085809 00000 n +0000085866 00000 n +0000085923 00000 n +0000085985 00000 n +0000086042 00000 n +0000086099 00000 n +0000086156 00000 n +0000086213 00000 n +0000086270 00000 n +0000086332 00000 n +0000086389 00000 n +0000086446 00000 n +0000086503 00000 n +0000086560 00000 n +0000086617 00000 n +0000086673 00000 n +0000088163 00000 n +0000087704 00000 n +0000086967 00000 n +0000087823 00000 n +0000087935 00000 n +0000087992 00000 n +0000088049 00000 n +0000088106 00000 n +0000090067 00000 n +0000090221 00000 n +0000090379 00000 n +0000090537 00000 n +0000090695 00000 n +0000091074 00000 n +0000089896 00000 n +0000088274 00000 n +0000090849 00000 n +0000090961 00000 n +0000277946 00000 n +0000115863 00000 n +0000091995 00000 n +0000092147 00000 n +0000092412 00000 n +0000091848 00000 n +0000091185 00000 n +0000092300 00000 n +0000094819 00000 n +0000094973 00000 n +0000096757 00000 n +0000095410 00000 n +0000094672 00000 n +0000092497 00000 n +0000095127 00000 n +0000097023 00000 n +0000096618 00000 n +0000095521 00000 n +0000096911 00000 n +0000099538 00000 n +0000099692 00000 n +0000099844 00000 n +0000099996 00000 n +0000100155 00000 n +0000100308 00000 n +0000103503 00000 n +0000100743 00000 n +0000099359 00000 n +0000097108 00000 n +0000100460 00000 n +0000100572 00000 n +0000103662 00000 n +0000103819 00000 n +0000103970 00000 n +0000104122 00000 n +0000104274 00000 n +0000104426 00000 n +0000104578 00000 n +0000104732 00000 n +0000104890 00000 n +0000105330 00000 n +0000103292 00000 n +0000100841 00000 n +0000105041 00000 n +0000276594 00000 n +0000106614 00000 n +0000106938 00000 n +0000106475 00000 n +0000105454 00000 n +0000106768 00000 n +0000106881 00000 n +0000278064 00000 n +0000109378 00000 n +0000109530 00000 n +0000109913 00000 n +0000109231 00000 n +0000107036 00000 n +0000109687 00000 n +0000112081 00000 n +0000112235 00000 n +0000112386 00000 n +0000112540 00000 n +0000112691 00000 n +0000113303 00000 n +0000111910 00000 n +0000110024 00000 n +0000112844 00000 n +0000113189 00000 n +0000113246 00000 n +0000115919 00000 n +0000118713 00000 n +0000115532 00000 n +0000116038 00000 n +0000115393 00000 n +0000113427 00000 n +0000115684 00000 n +0000118340 00000 n +0000118498 00000 n +0000118883 00000 n +0000118193 00000 n +0000116162 00000 n +0000118657 00000 n +0000121050 00000 n +0000123172 00000 n +0000121484 00000 n +0000120911 00000 n +0000118981 00000 n +0000121201 00000 n +0000123325 00000 n +0000123477 00000 n +0000126052 00000 n +0000123979 00000 n +0000123017 00000 n +0000121582 00000 n +0000123630 00000 n +0000278182 00000 n +0000126205 00000 n +0000126358 00000 n +0000126805 00000 n +0000125897 00000 n +0000124090 00000 n +0000126517 00000 n +0000128922 00000 n +0000129528 00000 n +0000128783 00000 n +0000126903 00000 n +0000129074 00000 n +0000130837 00000 n +0000130990 00000 n +0000131141 00000 n +0000131294 00000 n +0000131446 00000 n +0000131599 00000 n +0000131926 00000 n +0000130658 00000 n +0000129639 00000 n +0000131751 00000 n +0000132560 00000 n +0000132385 00000 n +0000132050 00000 n +0000132504 00000 n +0000135175 00000 n +0000135330 00000 n +0000135636 00000 n +0000135484 00000 n +0000139541 00000 n +0000139695 00000 n +0000139847 00000 n +0000140000 00000 n +0000136142 00000 n +0000135012 00000 n +0000132645 00000 n +0000135794 00000 n +0000136020 00000 n +0000136081 00000 n +0000140332 00000 n +0000139378 00000 n +0000136240 00000 n +0000140154 00000 n +0000140210 00000 n +0000140271 00000 n +0000278300 00000 n +0000188471 00000 n +0000143428 00000 n +0000143581 00000 n +0000144019 00000 n +0000143281 00000 n +0000140430 00000 n +0000143736 00000 n +0000143962 00000 n +0000144914 00000 n +0000144682 00000 n +0000144130 00000 n +0000144801 00000 n +0000147803 00000 n +0000147345 00000 n +0000144999 00000 n +0000147464 00000 n +0000147633 00000 n +0000147689 00000 n +0000147746 00000 n +0000150762 00000 n +0000150915 00000 n +0000151069 00000 n +0000151396 00000 n +0000150607 00000 n +0000147914 00000 n +0000151223 00000 n +0000151280 00000 n +0000151338 00000 n +0000154446 00000 n +0000154092 00000 n +0000151520 00000 n +0000154214 00000 n +0000154387 00000 n +0000157196 00000 n +0000157351 00000 n +0000157685 00000 n +0000157043 00000 n +0000154545 00000 n +0000157505 00000 n +0000157621 00000 n +0000278419 00000 n +0000160672 00000 n +0000160310 00000 n +0000157784 00000 n +0000160433 00000 n +0000160554 00000 n +0000160613 00000 n +0000163893 00000 n +0000163653 00000 n +0000160784 00000 n +0000163776 00000 n +0000163834 00000 n +0000166409 00000 n +0000166564 00000 n +0000167015 00000 n +0000166256 00000 n +0000164005 00000 n +0000166718 00000 n +0000166839 00000 n +0000166898 00000 n +0000167935 00000 n +0000167754 00000 n +0000167140 00000 n +0000167877 00000 n +0000170047 00000 n +0000169518 00000 n +0000168034 00000 n +0000169641 00000 n +0000169756 00000 n +0000172752 00000 n +0000173549 00000 n +0000172608 00000 n +0000170172 00000 n +0000172907 00000 n +0000173138 00000 n +0000173196 00000 n +0000173255 00000 n +0000173314 00000 n +0000173373 00000 n +0000173432 00000 n +0000278544 00000 n +0000174601 00000 n +0000174247 00000 n +0000173661 00000 n +0000174370 00000 n +0000176122 00000 n +0000176389 00000 n +0000175978 00000 n +0000174700 00000 n +0000176274 00000 n +0000177163 00000 n +0000177463 00000 n +0000177019 00000 n +0000176501 00000 n +0000177348 00000 n +0000178768 00000 n +0000178530 00000 n +0000177562 00000 n +0000178653 00000 n +0000180198 00000 n +0000180642 00000 n +0000180054 00000 n +0000178880 00000 n +0000180353 00000 n +0000181947 00000 n +0000182100 00000 n +0000182253 00000 n +0000182406 00000 n +0000182559 00000 n +0000182711 00000 n +0000182864 00000 n +0000183015 00000 n +0000183167 00000 n +0000183318 00000 n +0000183470 00000 n +0000183622 00000 n +0000184006 00000 n +0000181704 00000 n +0000180754 00000 n +0000183774 00000 n +0000183889 00000 n +0000278669 00000 n +0000185213 00000 n +0000185366 00000 n +0000185519 00000 n +0000185673 00000 n +0000185826 00000 n +0000185977 00000 n +0000186130 00000 n +0000186283 00000 n +0000186437 00000 n +0000186591 00000 n +0000186745 00000 n +0000186899 00000 n +0000187404 00000 n +0000184970 00000 n +0000184105 00000 n +0000187053 00000 n +0000187168 00000 n +0000187227 00000 n +0000187286 00000 n +0000187345 00000 n +0000188012 00000 n +0000188372 00000 n +0000187868 00000 n +0000187516 00000 n +0000188197 00000 n +0000188255 00000 n +0000275913 00000 n +0000188503 00000 n +0000188899 00000 n +0000189371 00000 n +0000189934 00000 n +0000190509 00000 n +0000190905 00000 n +0000191784 00000 n +0000193243 00000 n +0000193495 00000 n +0000205747 00000 n +0000206080 00000 n +0000225335 00000 n +0000225933 00000 n +0000242543 00000 n +0000242983 00000 n +0000262884 00000 n +0000263488 00000 n +0000275591 00000 n +0000278767 00000 n +0000278887 00000 n +0000279002 00000 n +0000279075 00000 n +0000290147 00000 n +0000290348 00000 n +0000290547 00000 n +0000290739 00000 n +0000290932 00000 n +0000291118 00000 n +0000291290 00000 n +0000291465 00000 n +0000291628 00000 n +0000291824 00000 n +0000292019 00000 n +0000292211 00000 n +0000292400 00000 n +0000292591 00000 n +0000292784 00000 n +0000292955 00000 n +0000293125 00000 n +0000293296 00000 n +0000293466 00000 n +0000293637 00000 n +0000293807 00000 n +0000293982 00000 n +0000294156 00000 n +0000294330 00000 n +0000294500 00000 n +0000294703 00000 n +0000294906 00000 n +0000295112 00000 n +0000295321 00000 n +0000295527 00000 n +0000295723 00000 n +0000295931 00000 n +0000296142 00000 n +0000296342 00000 n +0000296542 00000 n +0000296745 00000 n +0000296948 00000 n +0000297167 00000 n +0000297426 00000 n +0000297677 00000 n +0000297928 00000 n +0000298174 00000 n +0000298411 00000 n +0000298657 00000 n +0000298902 00000 n +0000299145 00000 n +0000299388 00000 n +0000299583 00000 n +0000299772 00000 n +0000299859 00000 n +0000299978 00000 n +0000300096 00000 n +0000300214 00000 n +0000300329 00000 n +0000300453 00000 n +0000300577 00000 n +0000300706 00000 n +0000300833 00000 n +0000300908 00000 n +0000301031 00000 n +0000301126 00000 n +0000301211 00000 n +0000301251 00000 n +0000301446 00000 n +trailer +<< /Size 1210 +/Root 1208 0 R +/Info 1209 0 R +/ID [<3D30238D8FC0AB9B0E7F7BF3CAFC5D6C> <3D30238D8FC0AB9B0E7F7BF3CAFC5D6C>] >> +startxref +301934 +%%EOF diff --git a/3/pms.css b/3/pms.css new file mode 100644 index 0000000..62eb3e2 --- /dev/null +++ b/3/pms.css @@ -0,0 +1,265 @@ + +/* start css.sty */ +.cmr-7{font-size:70%;} +.cmmi-7{font-size:70%;font-style: italic;} +.cmmi-10{font-style: italic;} +.ecrm-1728{font-size:170%;} +.ecrm-1200{font-size:120%;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecrm-0900{font-size:90%;} +.ecrm-0800{font-size:80%;} +.ectt-0800{font-size:80%; font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.small-caps{font-variant: small-caps; } +p.noindent { text-indent: 0em } +td p.noindent { text-indent: 0em; margin-top:0em; } +p.nopar { text-indent: 0em; } +p.indent{ text-indent: 1.5em } +@media print {div.crosslinks {visibility:hidden;}} +a img { border-top: 0; border-left: 0; border-right: 0; } +center { margin-top:1em; margin-bottom:1em; } +td center { margin-top:0em; margin-bottom:0em; } +.Canvas { position:relative; } +img.math{vertical-align:middle;} +li p.indent { text-indent: 0em } +li p:first-child{ margin-top:0em; } +li p:last-child, li div:last-child { margin-bottom:0.5em; } +li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; } +.enumerate1 {list-style-type:decimal;} +.enumerate2 {list-style-type:lower-alpha;} +.enumerate3 {list-style-type:lower-roman;} +.enumerate4 {list-style-type:upper-alpha;} +div.newtheorem { margin-bottom: 2em; margin-top: 2em;} +.obeylines-h,.obeylines-v {white-space: nowrap; } +div.obeylines-v p { margin-top:0; margin-bottom:0; } +.overline{ text-decoration:overline; } +.overline img{ border-top: 1px solid black; } +td.displaylines {text-align:center; white-space:nowrap;} +.centerline {text-align:center;} +.rightline {text-align:right;} +div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; } +.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.fbox {display:table} +div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.minipage{width:100%;} +div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;} +div.center div {text-align: left;} +div.flushright, div.flushright div.flushright {text-align: right;} +div.flushright div {text-align: left;} +div.flushleft {text-align: left;} +.underline{ text-decoration:underline; } +.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; } +.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +.framebox-c {text-align:center;} +.framebox-l {text-align:left;} +.framebox-r {text-align:right;} +span.thank-mark{ vertical-align: super } +span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; } +div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; } +table.tabular td p{margin-top:0em;} +table.tabular {margin-left: auto; margin-right: auto;} +td p:first-child{ margin-top:0em; } +td p:last-child{ margin-bottom:0em; } +div.td00{ margin-left:0pt; margin-right:0pt; } +div.td01{ margin-left:0pt; margin-right:5pt; } +div.td10{ margin-left:5pt; margin-right:0pt; } +div.td11{ margin-left:5pt; margin-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +td.td00{ padding-left:0pt; padding-right:0pt; } +td.td01{ padding-left:0pt; padding-right:5pt; } +td.td10{ padding-left:5pt; padding-right:0pt; } +td.td11{ padding-left:5pt; padding-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +.hline hr, .cline hr{ height : 1px; margin:0px; } +.tabbing-right {text-align:right;} +span.TEX {letter-spacing: -0.125em; } +span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;} +a span.TEX span.E {text-decoration: none; } +span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;} +span.LATEX span.TEX{ position:relative; left: -0.4em; } +div.float, div.figure {margin-left: auto; margin-right: auto;} +div.float img {text-align:center;} +div.figure img {text-align:center;} +.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} +.marginpar p{margin-top:0.4em; margin-bottom:0.4em;} +table.equation {width:100%;} +.equation td{text-align:center; } +td.equation { margin-top:1em; margin-bottom:1em; } +td.equation-label { width:5%; text-align:center; } +td.eqnarray4 { width:5%; white-space: normal; } +td.eqnarray2 { width:5%; } +table.eqnarray-star, table.eqnarray {width:100%;} +div.eqnarray{text-align:center;} +div.array {text-align:center;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.pmatrix img{vertical-align:middle;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.bar-css {text-decoration:overline;} +img.cdots{vertical-align:middle;} +.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;} +.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;} +.index-item, .index-subitem, .index-subsubitem {display:block} +div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;} +div.caption span.id{font-weight: bold; white-space: nowrap; } +h1.partHead{text-align: center} +p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;} +.subparagraphHead, .likesubparagraphHead { font-weight: bold;} +.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;} +.verse{white-space:nowrap; margin-left:2em} +div.maketitle {text-align:center;} +h2.titleHead{text-align:center;} +div.maketitle{ margin-bottom: 2em; } +div.author, div.date {text-align:center;} +div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; } +div.author{white-space: nowrap;} +.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; } +h1.partHead{text-align: center} +.abstract p {margin-left:5%; margin-right:5%;} +div.abstract {width:100%;} +dt.enumerate-enumitem{float:left; clear:left; margin-left:1em; margin-right:1em;} +.figure img.graphics {margin-left:10%;} +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +div.longtable{text-align:center;} +dt.enumerate{float:left; clear:left; margin-right:0.2em; margin-left:2em;} +dt.compactenum{float:left; clear:left; margin-right:0.2em; margin-left:2em;} +div.verbatiminput {font-family: monospace; white-space: nowrap; } +div.algorithm table.caption { border-bottom: 1px solid black; margin-bottom:1pt; } +.ALCitem {width:2em; text-align:right;} +tr#TBL-2-1- td{border-top:0.11197em solid} +tr#TBL-2-1- td{border-bottom:0.06998em solid} +tr#TBL-2-6- td{border-bottom:0.11197em solid} +tr#TBL-3-1- td{border-top:0.11197em solid} +tr#TBL-3-1- td{border-bottom:0.06998em solid} +tr#TBL-3-6- td{border-bottom:0.11197em solid} +tr#TBL-4-1- td{border-top:0.11197em solid} +tr#TBL-4-1- td{border-bottom:0.06998em solid} +tr#TBL-4-6- td{border-bottom:0.11197em solid} +tr#TBL-5-1- td{border-top:0.11197em solid} +tr#TBL-5-1- td{border-bottom:0.06998em solid} +tr#TBL-5-6- td{border-bottom:0.11197em solid} +tr#TBL-6-1- td{border-top:0.11197em solid} +tr#TBL-6-1- td{border-bottom:0.06998em solid} +tr#TBL-6-6- td{border-bottom:0.11197em solid} +tr#TBL-7-1- td{border-top:0.11197em solid} +tr#TBL-7-1- td{border-bottom:0.06998em solid} +tr#TBL-7-6- td{border-bottom:0.11197em solid} +tr#TBL-8-1- td{border-top:0.11197em solid} +tr#TBL-8-1- td{border-bottom:0.06998em solid} +tr#TBL-8-6- td{border-bottom:0.11197em solid} +tr#TBL-9-1- td{border-top:0.11197em solid} +tr#TBL-9-1- td{border-bottom:0.06998em solid} +tr#TBL-9-6- td{border-bottom:0.11197em solid} +tr#TBL-10-1- td{border-top:0.11197em solid} +tr#TBL-10-1- td{border-bottom:0.06998em solid} +tr#TBL-10-6- td{border-bottom:0.11197em solid} +tr#TBL-11-1- td{border-top:0.11197em solid} +tr#TBL-11-1- td{border-bottom:0.06998em solid} +tr#TBL-11-6- td{border-bottom:0.11197em solid} +tr#TBL-12-1- td{border-top:0.11197em solid} +tr#TBL-12-1- td{border-bottom:0.06998em solid} +tr#TBL-12-6- td{border-bottom:0.11197em solid} +tr#TBL-13-1- td{border-top:0.11197em solid} +tr#TBL-13-1- td{border-bottom:0.06998em solid} +tr#TBL-13-6- td{border-bottom:0.11197em solid} +tr#TBL-14-1- td{border-top:0.11197em solid} +tr#TBL-14-1- td{border-bottom:0.06998em solid} +tr#TBL-14-6- td{border-bottom:0.11197em solid} +tr#TBL-15-1- td{border-top:0.11197em solid} +tr#TBL-15-1- td{border-bottom:0.06998em solid} +tr#TBL-15-6- td{border-bottom:0.11197em solid} +tr#TBL-16-1- td{border-top:0.11197em solid} +tr#TBL-16-1- td{border-bottom:0.06998em solid} +tr#TBL-16-6- td{border-bottom:0.11197em solid} +tr#TBL-17-1- td{border-top:0.11197em solid} +tr#TBL-17-1- td{border-bottom:0.06998em solid} +tr#TBL-17-6- td{border-bottom:0.11197em solid} +tr#TBL-18-1- td{border-top:0.11197em solid} +tr#TBL-18-1- td{border-bottom:0.06998em solid} +tr#TBL-18-6- td{border-bottom:0.11197em solid} +tr#TBL-19-2- td{border-bottom:0.11197em solid} +tr#TBL-19-4- td{border-bottom:0.06998em solid} +tr#TBL-19-15- td{border-bottom:0.11197em solid} +tr#TBL-20-1- td{border-top:0.11197em solid} +tr#TBL-20-1- td{border-bottom:0.06998em solid} +tr#TBL-20-6- td{border-bottom:0.11197em solid} +tr#TBL-21-1- td{border-top:0.11197em solid} +tr#TBL-21-1- td{border-bottom:0.06998em solid} +tr#TBL-21-6- td{border-bottom:0.11197em solid} +tr#TBL-22-1- td{border-top:0.11197em solid} +tr#TBL-22-1- td{border-bottom:0.06998em solid} +tr#TBL-22-6- td{border-bottom:0.11197em solid} +tr#TBL-23-1- td{border-top:0.11197em solid} +tr#TBL-23-1- td{border-bottom:0.06998em solid} +tr#TBL-23-6- td{border-bottom:0.11197em solid} +tr#TBL-24-1- td{border-top:0.11197em solid} +tr#TBL-24-2- td{border-bottom:0.06998em solid} +tr#TBL-24-7- td{border-bottom:0.11197em solid} +tr#TBL-25-1- td{border-top:0.11197em solid} +tr#TBL-25-1- td{border-bottom:0.06998em solid} +tr#TBL-25-6- td{border-bottom:0.11197em solid} +tr#TBL-26-1- td{border-top:0.11197em solid} +tr#TBL-26-1- td{border-bottom:0.06998em solid} +tr#TBL-26-6- td{border-bottom:0.11197em solid} +tr#TBL-27-1- td{border-top:0.11197em solid} +tr#TBL-27-1- td{border-bottom:0.06998em solid} +tr#TBL-27-6- td{border-bottom:0.11197em solid} +tr#TBL-28-1- td{border-top:0.11197em solid} +tr#TBL-28-1- td{border-bottom:0.06998em solid} +tr#TBL-28-6- td{border-bottom:0.11197em solid} +tr#TBL-29-1- td{border-top:0.11197em solid} +tr#TBL-29-1- td{border-bottom:0.06998em solid} +tr#TBL-29-6- td{border-bottom:0.11197em solid} +tr#TBL-30-1- td{border-top:0.11197em solid} +tr#TBL-30-1- td{border-bottom:0.06998em solid} +tr#TBL-30-6- td{border-bottom:0.11197em solid} +tr#TBL-31-1- td{border-top:0.11197em solid} +tr#TBL-31-1- td{border-bottom:0.06998em solid} +tr#TBL-31-6- td{border-bottom:0.11197em solid} +tr#TBL-32-1- td{border-top:0.11197em solid} +tr#TBL-32-1- td{border-bottom:0.06998em solid} +tr#TBL-32-6- td{border-bottom:0.11197em solid} +tr#TBL-33-1- td{border-top:0.11197em solid} +tr#TBL-33-1- td{border-bottom:0.06998em solid} +tr#TBL-33-6- td{border-bottom:0.11197em solid} +tr#TBL-34-2- td{border-bottom:0.11197em solid} +tr#TBL-34-5- td{border-bottom:0.06998em solid} +tr#TBL-34-17- td{border-bottom:0.11197em solid} +/* end css.sty */ + diff --git a/3/pms.html b/3/pms.html new file mode 100644 index 0000000..8ef0e94 --- /dev/null +++ b/3/pms.html @@ -0,0 +1,9899 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title>Package Manager Specification</title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 22:39:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> +<div class="maketitle"> + + + +<h2 class="titleHead">Package Manager Specification</h2> + <div class="author" ><span +class="ecrm-1200">Stephen P. Bennett</span> +<br /><a +href="mailto:spb@exherbo.org" ><span +class="ecrm-1200">spb@exherbo.org</span></a> <br class="and" /><span +class="ecrm-1200">Ciaran McCreesh</span> +<br /> <a +href="mailto:ciaran.mccreesh@googlemail.com" ><span +class="ecrm-1200">ciaran.mccreesh@googlemail.com</span></a></div> +<br /> +<div class="date" ><span +class="ecrm-1200">18th</span><span +class="ecrm-1200"> January</span><span +class="ecrm-1200"> 2010</span></div> + + +</div> + + +<h2 class="likechapterHead"><a + id="x1-1000"></a>Contents</h2> <div class="tableofcontents"> +<span class="chapterToc" >1 <a +href="#x1-80001" id="QQ2-1-8">Introduction</a></span> +<br /> <span class="sectionToc" >1.1 <a +href="#x1-90001.1" id="QQ2-1-9">Aims and Motivation</a></span> +<br /> <span class="sectionToc" >1.2 <a +href="#x1-100001.2" id="QQ2-1-10">Rationale</a></span> +<br /> <span class="sectionToc" >1.3 <a +href="#x1-110001.3" id="QQ2-1-11">Conventions</a></span> +<br /><span class="chapterToc" >2 <a +href="#x1-120002" id="QQ2-1-12">EAPIs</a></span> +<br /> <span class="sectionToc" >2.1 <a +href="#x1-130002.1" id="QQ2-1-13">Definition</a></span> +<br /> <span class="sectionToc" >2.2 <a +href="#x1-140002.2" id="QQ2-1-14">Defined EAPIs</a></span> +<br /> <span class="sectionToc" >2.3 <a +href="#x1-150002.3" id="QQ2-1-15">Reserved EAPIs</a></span> +<br /><span class="chapterToc" >3 <a +href="#x1-160003" id="QQ2-1-16">Names and Versions</a></span> +<br /> <span class="sectionToc" >3.1 <a +href="#x1-170003.1" id="QQ2-1-17">Restrictions upon Names</a></span> +<br />  <span class="subsectionToc" >3.1.1 <a +href="#x1-180003.1.1" id="QQ2-1-18">Category Names</a></span> +<br />  <span class="subsectionToc" >3.1.2 <a +href="#x1-200003.1.2" id="QQ2-1-20">Package Names</a></span> +<br />  <span class="subsectionToc" >3.1.3 <a +href="#x1-220003.1.3" id="QQ2-1-22">Slot Names</a></span> +<br />  <span class="subsectionToc" >3.1.4 <a +href="#x1-230003.1.4" id="QQ2-1-23">USE Flag Names</a></span> +<br />  <span class="subsectionToc" >3.1.5 <a +href="#x1-250003.1.5" id="QQ2-1-25">Repository Names</a></span> +<br />  <span class="subsectionToc" >3.1.6 <a +href="#x1-260003.1.6" id="QQ2-1-26">Keyword Names</a></span> +<br /> <span class="sectionToc" >3.2 <a +href="#x1-270003.2" id="QQ2-1-27">Version Specifications</a></span> +<br /> <span class="sectionToc" >3.3 <a +href="#x1-280003.3" id="QQ2-1-28">Version Comparison</a></span> +<br /> <span class="sectionToc" >3.4 <a +href="#x1-290003.4" id="QQ2-1-36">Uniqueness of versions</a></span> +<br /><span class="chapterToc" >4 <a +href="#x1-300004" id="QQ2-1-37">Tree Layout</a></span> +<br /> <span class="sectionToc" >4.1 <a +href="#x1-310004.1" id="QQ2-1-38">Top Level</a></span> +<br /> <span class="sectionToc" >4.2 <a +href="#x1-320004.2" id="QQ2-1-39">Category Directories</a></span> +<br /> <span class="sectionToc" >4.3 <a +href="#x1-330004.3" id="QQ2-1-40">Package Directories</a></span> +<br /> <span class="sectionToc" >4.4 <a +href="#x1-340004.4" id="QQ2-1-41">The Profiles Directory</a></span> +<br />  <span class="subsectionToc" >4.4.1 <a +href="#x1-350004.4.1" id="QQ2-1-42">The profiles.desc file</a></span> +<br />  <span class="subsectionToc" >4.4.2 <a +href="#x1-360004.4.2" id="QQ2-1-43">The thirdpartymirrors file</a></span> +<br />  <span class="subsectionToc" >4.4.3 <a +href="#x1-370004.4.3" id="QQ2-1-44">use.desc and related files</a></span> +<br />  <span class="subsectionToc" >4.4.4 <a +href="#x1-380004.4.4" id="QQ2-1-45">The updates directory</a></span> +<br /> <span class="sectionToc" >4.5 <a +href="#x1-390004.5" id="QQ2-1-46">The Licenses Directory</a></span> +<br /> <span class="sectionToc" >4.6 <a +href="#x1-400004.6" id="QQ2-1-47">The Eclass Directory</a></span> +<br /> <span class="sectionToc" >4.7 <a +href="#x1-410004.7" id="QQ2-1-48">The Metadata Directory</a></span> +<br />  <span class="subsectionToc" >4.7.1 <a +href="#x1-420004.7.1" id="QQ2-1-49">The metadata cache</a></span> + + +<br /><span class="chapterToc" >5 <a +href="#x1-430005" id="QQ2-1-50">Profiles</a></span> +<br /> <span class="sectionToc" >5.1 <a +href="#x1-440005.1" id="QQ2-1-51">General principles</a></span> +<br /> <span class="sectionToc" >5.2 <a +href="#x1-450005.2" id="QQ2-1-52">Files that make up a profile</a></span> +<br />  <span class="subsectionToc" >5.2.1 <a +href="#x1-460005.2.1" id="QQ2-1-53">The parent file</a></span> +<br />  <span class="subsectionToc" >5.2.2 <a +href="#x1-470005.2.2" id="QQ2-1-54">The eapi file</a></span> +<br />  <span class="subsectionToc" >5.2.3 <a +href="#x1-480005.2.3" id="QQ2-1-55">deprecated</a></span> +<br />  <span class="subsectionToc" >5.2.4 <a +href="#x1-490005.2.4" id="QQ2-1-56">make.defaults</a></span> +<br />  <span class="subsectionToc" >5.2.5 <a +href="#x1-500005.2.5" id="QQ2-1-57">virtuals</a></span> +<br />  <span class="subsectionToc" >5.2.6 <a +href="#x1-510005.2.6" id="QQ2-1-58">Simple line-based files</a></span> +<br />  <span class="subsectionToc" >5.2.7 <a +href="#x1-520005.2.7" id="QQ2-1-59">packages</a></span> +<br />  <span class="subsectionToc" >5.2.8 <a +href="#x1-530005.2.8" id="QQ2-1-60">packages.build</a></span> +<br />  <span class="subsectionToc" >5.2.9 <a +href="#x1-540005.2.9" id="QQ2-1-61">package.mask</a></span> +<br />  <span class="subsectionToc" >5.2.10 <a +href="#x1-560005.2.10" id="QQ2-1-63">package.provided</a></span> +<br />  <span class="subsectionToc" >5.2.11 <a +href="#x1-570005.2.11" id="QQ2-1-64">package.use</a></span> +<br />  <span class="subsectionToc" >5.2.12 <a +href="#x1-580005.2.12" id="QQ2-1-65">USE masking and forcing</a></span> +<br /> <span class="sectionToc" >5.3 <a +href="#x1-590005.3" id="QQ2-1-67">Profile variables</a></span> +<br />  <span class="subsectionToc" >5.3.1 <a +href="#x1-600005.3.1" id="QQ2-1-68">Incremental Variables</a></span> +<br />  <span class="subsectionToc" >5.3.2 <a +href="#x1-610005.3.2" id="QQ2-1-70">Specific variables and their meanings</a></span> +<br /><span class="chapterToc" >6 <a +href="#x1-620006" id="QQ2-1-71">Old-Style Virtual Packages</a></span> +<br /> <span class="sectionToc" >6.1 <a +href="#x1-640006.1" id="QQ2-1-73">Dependencies on virtual packages</a></span> +<br /><span class="chapterToc" >7 <a +href="#x1-650007" id="QQ2-1-74">Ebuild File Format</a></span> +<br /><span class="chapterToc" >8 <a +href="#x1-660008" id="QQ2-1-75">Ebuild-defined Variables</a></span> +<br /> <span class="sectionToc" >8.1 <a +href="#x1-680008.1" id="QQ2-1-77">Metadata invariance</a></span> +<br /> <span class="sectionToc" >8.2 <a +href="#x1-690008.2" id="QQ2-1-78">Mandatory Ebuild-defined Variables</a></span> +<br /> <span class="sectionToc" >8.3 <a +href="#x1-700008.3" id="QQ2-1-80">Optional Ebuild-defined Variables</a></span> +<br />  <span class="subsectionToc" >8.3.1 <a +href="#x1-710008.3.1" id="QQ2-1-82">EAPI</a></span> +<br />  <span class="subsectionToc" >8.3.2 <a +href="#x1-720008.3.2" id="QQ2-1-83"><span +class="ectt-1000">RDEPEND </span>value</a></span> +<br /> <span class="sectionToc" >8.4 <a +href="#x1-730008.4" id="QQ2-1-85">Magic Ebuild-defined Variables</a></span> +<br /><span class="chapterToc" >9 <a +href="#x1-760009" id="QQ2-1-89">Dependencies</a></span> +<br /> <span class="sectionToc" >9.1 <a +href="#x1-770009.1" id="QQ2-1-90">Dependency Classes</a></span> +<br /> <span class="sectionToc" >9.2 <a +href="#x1-780009.2" id="QQ2-1-91">Dependency Specification Format</a></span> +<br />  <span class="subsectionToc" >9.2.1 <a +href="#x1-790009.2.1" id="QQ2-1-93">All-of Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >9.2.2 <a +href="#x1-800009.2.2" id="QQ2-1-94">Use-conditional Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >9.2.3 <a +href="#x1-810009.2.3" id="QQ2-1-95">Any-of Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >9.2.4 <a +href="#x1-820009.2.4" id="QQ2-1-96">Package Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >9.2.5 <a +href="#x1-890009.2.5" id="QQ2-1-106">Restrict</a></span> +<br />  <span class="subsectionToc" >9.2.6 <a +href="#x1-900009.2.6" id="QQ2-1-107">Properties</a></span> +<br />  <span class="subsectionToc" >9.2.7 <a +href="#x1-910009.2.7" id="QQ2-1-108">SRC_URI</a></span> +<br /><span class="chapterToc" >10 <a +href="#x1-9200010" id="QQ2-1-109">Ebuild-defined Functions</a></span> + + +<br /> <span class="sectionToc" >10.1 <a +href="#x1-9300010.1" id="QQ2-1-110">List of Functions</a></span> +<br />  <span class="subsectionToc" >10.1.1 <a +href="#x1-9400010.1.1" id="QQ2-1-111">Initial Working Directories</a></span> +<br />  <span class="subsectionToc" >10.1.2 <a +href="#x1-9500010.1.2" id="QQ2-1-113">pkg_pretend</a></span> +<br />  <span class="subsectionToc" >10.1.3 <a +href="#x1-9600010.1.3" id="QQ2-1-115">pkg_setup</a></span> +<br />  <span class="subsectionToc" >10.1.4 <a +href="#x1-9700010.1.4" id="QQ2-1-116">src_unpack</a></span> +<br />  <span class="subsectionToc" >10.1.5 <a +href="#x1-9800010.1.5" id="QQ2-1-117">src_prepare</a></span> +<br />  <span class="subsectionToc" >10.1.6 <a +href="#x1-9900010.1.6" id="QQ2-1-119">src_configure</a></span> +<br />  <span class="subsectionToc" >10.1.7 <a +href="#x1-10000010.1.7" id="QQ2-1-121">src_compile</a></span> +<br />  <span class="subsectionToc" >10.1.8 <a +href="#x1-10100010.1.8" id="QQ2-1-123">src_test</a></span> +<br />  <span class="subsectionToc" >10.1.9 <a +href="#x1-10200010.1.9" id="QQ2-1-124">src_install</a></span> +<br />  <span class="subsectionToc" >10.1.10 <a +href="#x1-10300010.1.10" id="QQ2-1-126">pkg_preinst</a></span> +<br />  <span class="subsectionToc" >10.1.11 <a +href="#x1-10400010.1.11" id="QQ2-1-127">pkg_postinst</a></span> +<br />  <span class="subsectionToc" >10.1.12 <a +href="#x1-10500010.1.12" id="QQ2-1-128">pkg_prerm</a></span> +<br />  <span class="subsectionToc" >10.1.13 <a +href="#x1-10600010.1.13" id="QQ2-1-129">pkg_postrm</a></span> +<br />  <span class="subsectionToc" >10.1.14 <a +href="#x1-10700010.1.14" id="QQ2-1-130">pkg_config</a></span> +<br />  <span class="subsectionToc" >10.1.15 <a +href="#x1-10800010.1.15" id="QQ2-1-131">pkg_info</a></span> +<br />  <span class="subsectionToc" >10.1.16 <a +href="#x1-10900010.1.16" id="QQ2-1-133">pkg_nofetch</a></span> +<br />  <span class="subsectionToc" >10.1.17 <a +href="#x1-11000010.1.17" id="QQ2-1-134"><span +class="ectt-1000">default_ </span>Phase Functions</a></span> +<br /> <span class="sectionToc" >10.2 <a +href="#x1-11100010.2" id="QQ2-1-136">Call Order</a></span> +<br /><span class="chapterToc" >11 <a +href="#x1-11200011" id="QQ2-1-137">Eclasses</a></span> +<br /> <span class="sectionToc" >11.1 <a +href="#x1-11300011.1" id="QQ2-1-138">The inherit command</a></span> +<br /> <span class="sectionToc" >11.2 <a +href="#x1-11400011.2" id="QQ2-1-139">Eclass-defined Metadata Keys</a></span> +<br /> <span class="sectionToc" >11.3 <a +href="#x1-11500011.3" id="QQ2-1-140">EXPORT_FUNCTIONS</a></span> +<br /><span class="chapterToc" >12 <a +href="#x1-11600012" id="QQ2-1-142">The Ebuild Environment</a></span> +<br /> <span class="sectionToc" >12.1 <a +href="#x1-11700012.1" id="QQ2-1-143">Defined Variables</a></span> +<br />  <span class="subsectionToc" >12.1.1 <a +href="#x1-11800012.1.1" id="QQ2-1-147">USE and IUSE Handling</a></span> +<br />  <span class="subsectionToc" >12.1.2 <a +href="#x1-11900012.1.2" id="QQ2-1-148"><span +class="ectt-1000">REPLACING_VERSIONS </span>and <span +class="ectt-1000">REPLACED_BY_VERSION</span></a></span> +<br />  <span class="subsectionToc" >12.1.3 <a +href="#x1-12000012.1.3" id="QQ2-1-149">Offset-prefix variables <span +class="ectt-1000">EPREFIX</span>, <span +class="ectt-1000">EROOT </span>and <span +class="ectt-1000">ED</span></a></span> +<br /> <span class="sectionToc" >12.2 <a +href="#x1-12100012.2" id="QQ2-1-151">The state of variables between functions</a></span> +<br /> <span class="sectionToc" >12.3 <a +href="#x1-12300012.3" id="QQ2-1-154">Available commands</a></span> +<br />  <span class="subsectionToc" >12.3.1 <a +href="#x1-12400012.3.1" id="QQ2-1-155">System commands</a></span> +<br />  <span class="subsectionToc" >12.3.2 <a +href="#x1-12600012.3.2" id="QQ2-1-157">Commands provided by package dependencies</a></span> +<br />  <span class="subsectionToc" >12.3.3 <a +href="#x1-12700012.3.3" id="QQ2-1-158">Ebuild-specific Commands</a></span> +<br /> <span class="sectionToc" >12.4 <a +href="#x1-14300012.4" id="QQ2-1-187">The state of the system between functions</a></span> +<br /><span class="chapterToc" >13 <a +href="#x1-14400013" id="QQ2-1-188">Merging and Unmerging</a></span> +<br /> <span class="sectionToc" >13.1 <a +href="#x1-14600013.1" id="QQ2-1-190">Overview</a></span> +<br /> <span class="sectionToc" >13.2 <a +href="#x1-14700013.2" id="QQ2-1-191">Directories</a></span> +<br />  <span class="subsectionToc" >13.2.1 <a +href="#x1-14800013.2.1" id="QQ2-1-192">Permissions</a></span> +<br />  <span class="subsectionToc" >13.2.2 <a +href="#x1-14900013.2.2" id="QQ2-1-193">Empty Directories</a></span> + + +<br /> <span class="sectionToc" >13.3 <a +href="#x1-15000013.3" id="QQ2-1-194">Regular Files</a></span> +<br />  <span class="subsectionToc" >13.3.1 <a +href="#x1-15100013.3.1" id="QQ2-1-195">Permissions</a></span> +<br />  <span class="subsectionToc" >13.3.2 <a +href="#x1-15200013.3.2" id="QQ2-1-196">File modification times</a></span> +<br />  <span class="subsectionToc" >13.3.3 <a +href="#x1-15300013.3.3" id="QQ2-1-198">Configuration File Protection</a></span> +<br /> <span class="sectionToc" >13.4 <a +href="#x1-15400013.4" id="QQ2-1-199">Symlinks</a></span> +<br />  <span class="subsectionToc" >13.4.1 <a +href="#x1-15500013.4.1" id="QQ2-1-200">Rewriting</a></span> +<br /> <span class="sectionToc" >13.5 <a +href="#x1-15600013.5" id="QQ2-1-201">Hard links</a></span> +<br /> <span class="sectionToc" >13.6 <a +href="#x1-15700013.6" id="QQ2-1-202">Other Files</a></span> +<br /><span class="chapterToc" >14 <a +href="#x1-15800014" id="QQ2-1-203">Metadata Cache</a></span> +<br /> <span class="sectionToc" >14.1 <a +href="#x1-15900014.1" id="QQ2-1-204">Directory Contents</a></span> +<br /> <span class="sectionToc" >14.2 <a +href="#x1-16000014.2" id="QQ2-1-205">Cache File Format</a></span> +<br /><span class="chapterToc" >15 <a +href="#x1-16100015" id="QQ2-1-206">Glossary</a></span> +<br /><span class="appendixToc" >A <a +href="#x1-162000A" id="QQ2-1-207">metadata.xml</a></span> +<br /><span class="appendixToc" >B <a +href="#x1-163000B" id="QQ2-1-208">Unspecified Items</a></span> +<br /><span class="appendixToc" >C <a +href="#x1-164000C" id="QQ2-1-209">Historical Curiosities</a></span> +<br /> <span class="sectionToc" >C.1 <a +href="#x1-165000C.1" id="QQ2-1-210">If-else use blocks</a></span> +<br /> <span class="sectionToc" >C.2 <a +href="#x1-166000C.2" id="QQ2-1-212">cvs Versions</a></span> +<br /> <span class="sectionToc" >C.3 <a +href="#x1-167000C.3" id="QQ2-1-213">use.defaults</a></span> +<br /><span class="appendixToc" >D <a +href="#x1-168000D" id="QQ2-1-214">Feature Availability by EAPI</a></span> +<br /><span class="appendixToc" >E <a +href="#x1-170000E" id="QQ2-1-217">Differences Between EAPIs</a></span> +</div> + + +<h2 class="likechapterHead"><a + id="x1-2000"></a>List of Algorithms</h2><div class="tableofcontents"> +1 <a +href="#x1-28001r1">Version comparison top-level logic</a> +<br />2 <a +href="#x1-28008r2">Version comparison logic for numeric components</a> +<br />3 <a +href="#x1-28025r3">Version comparison logic for each numeric component after the first</a> +<br />4 <a +href="#x1-28041r4">Version comparison logic for letter components</a> +<br />5 <a +href="#x1-28049r5">Version comparison logic for suffixes</a> +<br />6 <a +href="#x1-28069r6">Version comparison logic for each suffix</a> +<br />7 <a +href="#x1-28083r7">Version comparison logic for revision components</a> +<br />8 <a +href="#x1-58001r8">USE masking logic</a> +<br />9 <a +href="#x1-134002r9">econf --libdir logic</a> +<br />10 <a +href="#x1-135001r10">Determining the library directory</a> +</div> + + +<h2 class="likechapterHead"><a + id="x1-3000"></a>Listings</h2><div class="tableofcontents"> +11.1 <a +href="#x1-115001r1">EXPORT_FUNCTIONS example: foo.eclass</a> +<br />12.1 <a +href="#x1-122001r1">Environment state between functions</a> +<br />12.2 <a +href="#x1-134017r2">einstall command</a> +<br />C.1 <a +href="#x1-165001r1">If-else use blocks</a> +</div> + + +<h2 class="likechapterHead"><a + id="x1-4000"></a>List of Tables</h2><div class="tableofcontents"><span class="lotToc" >5.1 <a +href="#x1-60001r1">Profile-defined <span +class="ectt-1000">IUSE </span>injection for EAPIs</a></span><br /><span class="lotToc" >8.1 <a +href="#x1-69001r1">EAPIs supporting +<span +class="ectt-1000">IUSE </span>defaults</a></span><br /><span class="lotToc" >8.2 <a +href="#x1-70001r2">EAPIs supporting <span +class="ectt-1000">PROPERTIES</span></a></span><br /><span class="lotToc" >8.3 <a +href="#x1-72001r3">EAPIs with <span +class="ectt-1000">RDEPEND=DEPEND</span> +Default</a></span><br /><span class="lotToc" >8.4 <a +href="#x1-75001r4">EAPIs supporting <span +class="ectt-1000">DEFINED_PHASES</span></a></span><br /><span class="lotToc" >9.1 <a +href="#x1-78001r1">EAPIs supporting <span +class="ectt-1000">SRC_URI</span> +arrows</a></span><br /><span class="lotToc" >9.2 <a +href="#x1-83001r2">EAPIs supporting <span +class="ectt-1000">SLOT </span>dependencies</a></span><br /><span class="lotToc" >9.3 <a +href="#x1-83002r3">EAPIs supporting <span +class="ectt-1000">USE</span> +dependencies</a></span><br /><span class="lotToc" >9.4 <a +href="#x1-85001r4">Exclamation mark strengths for EAPIs</a></span><br /><span class="lotToc" >10.1 <a +href="#x1-94001r1">EAPIs with <span +class="ectt-1000">S </span>to +<span +class="ectt-1000">WORKDIR </span>fallbacks</a></span><br /><span class="lotToc" >10.2 <a +href="#x1-95001r2">EAPIs supporting <span +class="ectt-1000">pkg_pretend</span></a></span><br /><span class="lotToc" >10.3 <a +href="#x1-98001r3">EAPIs supporting +<span +class="ectt-1000">src_prepare</span></a></span><br /><span class="lotToc" >10.4 <a +href="#x1-99001r4">EAPIs supporting <span +class="ectt-1000">src_configure</span></a></span><br /><span class="lotToc" >10.5 <a +href="#x1-100001r5"><span +class="ectt-1000">src_compile </span>behaviour for +EAPIs</a></span><br /><span class="lotToc" >10.6 <a +href="#x1-102001r6"><span +class="ectt-1000">src_install </span>behaviour for EAPIs</a></span><br /><span class="lotToc" >10.7 <a +href="#x1-108001r7">EAPIs supporting <span +class="ectt-1000">pkg_info </span>on +non-installed packages</a></span><br /><span class="lotToc" >10.8 <a +href="#x1-110001r8">EAPIs supporting <span +class="ectt-1000">default_ </span>phase functions</a></span><br /><span class="lotToc" >12.1 <a +href="#x1-117002">Defined +variables</a></span><br /><span class="lotToc" >12.2 <a +href="#x1-117008r2">EAPIs supporting various env variables</a></span><br /><span class="lotToc" >12.3 <a +href="#x1-117009r3">EAPIs supporting offset-prefix +env variables</a></span><br /><span class="lotToc" >12.4 <a +href="#x1-120001r4">EAPIs supporting offset-prefix</a></span><br /><span class="lotToc" >12.5 <a +href="#x1-128001r5">EAPI Command Failure +Behaviour</a></span><br /><span class="lotToc" >12.6 <a +href="#x1-129001r6">Banned commands</a></span><br /><span class="lotToc" >12.7 <a +href="#x1-134001r7">Extra <span +class="ectt-1000">econf </span>arguments for EAPIs</a></span><br /><span class="lotToc" >12.8 <a +href="#x1-135018r8">EAPIs +supporting <span +class="ectt-1000">dodoc -r</span></a></span><br /><span class="lotToc" >12.9 <a +href="#x1-135019r9">EAPIs supporting symlinks for <span +class="ectt-1000">doins</span></a></span><br /><span class="lotToc" >12.10 <a +href="#x1-135020r10">EAPIs supporting +<span +class="ectt-1000">doman </span>languages</a></span><br /><span class="lotToc" >12.11 <a +href="#x1-137001r11">EAPIs supporting controllable compression</a></span><br /><span class="lotToc" >12.12 <a +href="#x1-138001r12">EAPI +Behaviour for Use Queries not in IUSE_EFFECTIVE</a></span><br /><span class="lotToc" >12.13 <a +href="#x1-140001r13"><span +class="ectt-1000">unpack </span>extensions +for EAPIs</a></span><br /><span class="lotToc" >12.14 <a +href="#x1-140002r14">EAPIs supporting the <span +class="ectt-1000">default </span>function</a></span><br /><span class="lotToc" >13.1 <a +href="#x1-152001r1">Preservation of +file modification times (mtimes)</a></span><br /><span class="lotToc" >D.1 <a +href="#x1-169002">Features in EAPIs</a></span><br /> +</div> + + +<h3 class="likesectionHead"><a + id="x1-5000"></a>Acknowledgements</h3> +<!--l. 3--><p class="noindent" >Thanks to Mike Kelly (package manager provided utilities, section <a +href="#x1-12700012.3.3">12.3.3<!--tex4ht:ref: sec:pkg-mgr-commands --></a>), Danny van Dyk (ebuild +functions, section <a +href="#x1-9200010">10<!--tex4ht:ref: sec:ebuild-functions --></a>), David Leverton (various sections), Petteri Räty (environment state, +section <a +href="#x1-12100012.2">12.2<!--tex4ht:ref: sec:ebuild-env-state --></a>) and Ulrich Müller (various sections) for contributions. Thanks to Christian +Faulhammer for fixing some of the more horrible formatting screwups and providing the EAPI +cheat sheet. Thanks also to Mike Frysinger and Brian Harring for proof-reading and suggestions for +fixes and/or clarification. +</p><!--l. 13--><p class="noindent" > +</p> +<h3 class="likesectionHead"><a + id="x1-6000"></a>Copyright and Licence</h3> +<!--l. 15--><p class="noindent" >The bulk of this document is <span +class="cmsy-10">© </span>2007, 2008, 2009 Stephen Bennett and Ciaran McCreesh. +Contributions are owned by their respective authors, and may have been changed substantially +before inclusion. +</p><!--l. 19--><p class="noindent" >This document is released under the Creative Commons Attribution-Share Alike 3.0 Licence. The +full text of this licence can be found at <a +href="http://creativecommons.org/licenses/by-sa/3.0/" class="url" ><span +class="ectt-1000">http://creativecommons.org/licenses/by-sa/3.0/</span></a>. +</p><!--l. 22--><p class="noindent" > +</p> +<h3 class="likesectionHead"><a + id="x1-7000"></a>Reporting Issues</h3> +<!--l. 24--><p class="noindent" >Issues (inaccuracies, wording problems, omissions etc.) in this document should be reported via +Gentoo Bugzilla using product <span +class="ecti-1000">Gentoo Hosted Projects</span>, component <span +class="ecti-1000">PMS/EAPI </span>and the default +assignee. There should be one bug per issue, and one issue per bug. +</p><!--l. 28--><p class="noindent" >Patches (in <span +class="ectt-1000">git format-patch </span>form if possible) may be submitted either via Bugzilla or to the +<span +class="ectt-1000">gentoo-pms@gentoo.org </span>mailing list. Patches will be reviewed by the PMS team, who will do one +of the following: +</p><!--l. 33--><p class="noindent" > + </p><ul> + <li class="compactitem">Accept and apply the patch. + </li> + <li class="compactitem">Explain why the patch cannot be applied as-is. The patch may then be updated and + resubmitted if appropriate. + </li> + <li class="compactitem">Reject the patch outright. + </li> + <li class="compactitem">Take special action merited by the individual circumstances.</li></ul> +<!--l. 40--><p class="noindent" >When reporting issues, remember that this document is not the appropriate place for pushing +through changes to the tree or the package manager, except where those changes are +bugs. +</p><!--l. 43--><p class="noindent" >If any issue cannot be resolved by the PMS team, it may be escalated to the Gentoo +Council. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 1</span><br /><a + id="x1-80001"></a>Introduction</h2> +<h3 class="sectionHead"><span class="titlemark">1.1 </span> <a + id="x1-90001.1"></a>Aims and Motivation</h3> +<!--l. 5--><p class="noindent" >This document aims to fully describe the format of an ebuild repository and the ebuilds therein, +as well as certain aspects of package manager behaviour required to support such a +repository. +</p><!--l. 8--><p class="noindent" >This document is <span +class="ecti-1000">not </span>designed to be an introduction to ebuild development. Prior knowledge of +ebuild creation and an understanding of how the package management system works is assumed; +certain less familiar terms are explained in the Glossary in chapter <a +href="#x1-16100015">15<!--tex4ht:ref: sec:glossary --></a>. +</p><!--l. 12--><p class="noindent" >This document does not specify any user or package manager configuration information. +</p><!--l. 14--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">1.2 </span> <a + id="x1-100001.2"></a>Rationale</h3> +<!--l. 16--><p class="noindent" >At present the only definition of what an ebuild can assume about its environment, +and the only definition of what is valid in an ebuild, is the source code of the latest +Portage release and a general consensus about which features are too new to assume +availability. This has several drawbacks: not only is it impossible to change any aspect of +Portage behaviour without verifying that nothing in the tree relies upon it, but if a new +package manager should appear it becomes impossible to fully support such an ill-defined +standard. +</p><!--l. 23--><p class="noindent" >This document aims to address both of these concerns by defining almost all aspects of what an +ebuild repository looks like, and how an ebuild is allowed to behave. Thus, both Portage and other +package managers can change aspects of their behaviour not defined here without worry of +incompatibilities with any particular repository. +</p><!--l. 28--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">1.3 </span> <a + id="x1-110001.3"></a>Conventions</h3> +<!--l. 30--><p class="noindent" >Text in <span +class="ectt-1000">teletype </span>is used for filenames or variable names. <span +class="ecti-1000">Italic </span>text is used for terms with a +particular technical meaning in places where there may otherwise be ambiguity. +</p><!--l. 33--><p class="noindent" >The term <span +class="ecti-1000">package manager </span>is used throughout this document in a broad sense. Although some +parts of this document are only relevant to fully featured package managers, many items are +equally applicable to tools or other applications that interact with ebuilds or ebuild +repositories. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 2</span><br /><a + id="x1-120002"></a>EAPIs</h2> +<h3 class="sectionHead"><span class="titlemark">2.1 </span> <a + id="x1-130002.1"></a>Definition</h3> +<!--l. 5--><p class="noindent" >An EAPI can be thought of as a ‘version’ of this specification to which a package conforms. An +EAPI value is a string, 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-470005.2.2">5.2.2<!--tex4ht:ref: sec:profile-eapi --></a>. +</p><!--l. 18--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">2.2 </span> <a + id="x1-140002.2"></a>Defined EAPIs</h3> +<!--l. 20--><p class="noindent" >The following EAPIs are defined by this specification: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">0</span> </dt><dd +class="description">The ‘original’ base EAPI. + </dd><dt class="description"> +<span +class="ecbx-1000">1</span> </dt><dd +class="description">EAPI ‘1’ contains a number of extensions to EAPI ‘0’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘0’. + </dd><dt class="description"> +<span +class="ecbx-1000">2</span> </dt><dd +class="description">EAPI ‘2’ contains a number of extensions to EAPI ‘1’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘1’. + </dd><dt class="description"> +<span +class="ecbx-1000">3</span> </dt><dd +class="description">EAPI ‘3’ contains a number of extensions to EAPI ‘2’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘2’. + </dd><dt class="description"> +<span +class="ecbx-1000">4</span> </dt><dd +class="description">EAPI ‘4’ contains a number of extensions to EAPI ‘3’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘3’.</dd></dl> +<!--l. 34--><p class="noindent" >Except where explicitly noted, everything in this specification applies to all of the above +EAPIs.<span class="footnote-mark"><a +href="pms2.html#fn1x3"><sup class="textsuperscript">1</sup></a></span><a + id="x1-14001f1"></a> +</p> +<h3 class="sectionHead"><span class="titlemark">2.3 </span> <a + id="x1-150002.3"></a>Reserved EAPIs</h3> + + +<!--l. 43--><p class="noindent" > + </p><ul> + <li class="compactitem">EAPIs whose value consists purely of an integer are reserved for future versions of this + specification. + </li> + <li class="compactitem">EAPIs whose value starts with the string <span +class="ectt-1000">paludis- </span>are reserved for experimental use + by the Paludis package manager.</li></ul> + + + + + + +<h2 class="chapterHead"><span class="titlemark">Chapter 3</span><br /><a + id="x1-160003"></a>Names and Versions</h2> +<h3 class="sectionHead"><span class="titlemark">3.1 </span> <a + id="x1-170003.1"></a>Restrictions upon Names</h3> +<!--l. 5--><p class="noindent" >No name may be empty. Package managers must not impose fixed upper boundaries upon the +length of any name. A package manager should indicate or reject any name that is invalid +according to these rules. +</p><!--l. 8--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.1 </span> <a + id="x1-180003.1.1"></a>Category Names</h4> +<!--l. 9--><p class="noindent" >A category name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_.-</span>]. It must not begin with a +hyphen or a dot. +</p> +<!--l. 12--><p class="noindent" ><span class="paragraphHead"><a + id="x1-190003.1.1"></a><span +class="ecbx-1000">Note:</span></span> +A hyphen is <span +class="ecti-1000">not </span>required because of the <span +class="ectt-1000">virtual </span>category. Usually, however, category names will +contain a hyphen. +</p><!--l. 15--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.2 </span> <a + id="x1-200003.1.2"></a>Package Names</h4> +<!--l. 16--><p class="noindent" >A package name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_-</span>]. It must not begin with a +hyphen, and must not end in a hyphen followed by one or more digits. +</p> +<!--l. 19--><p class="noindent" ><span class="paragraphHead"><a + id="x1-210003.1.2"></a><span +class="ecbx-1000">Note:</span></span> +A package name does not include the category. The term <span +class="ecti-1000">qualified package name </span>is used where a +<span +class="ectt-1000">category/package </span>pair is meant. +</p><!--l. 22--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.3 </span> <a + id="x1-220003.1.3"></a>Slot Names</h4> +<!--l. 24--><p class="noindent" >A slot name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_.-</span>]. It must not begin with a hyphen +or a dot. + + +</p><!--l. 27--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.4 </span> <a + id="x1-230003.1.4"></a>USE Flag Names</h4> +<!--l. 28--><p class="noindent" >A USE flag name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_@-</span>]. It must begin with an +alphanumeric character. Underscores should be considered reserved for <span +class="ectt-1000">USE_EXPAND</span>, as described in +section <a +href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>. +</p> +<!--l. 32--><p class="noindent" ><span class="paragraphHead"><a + id="x1-240003.1.4"></a><span +class="ecbx-1000">Note:</span></span> +The at-sign is required for <span +class="ectt-1000">LINGUAS</span>. +</p><!--l. 34--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.5 </span> <a + id="x1-250003.1.5"></a>Repository Names</h4> +<!--l. 36--><p class="noindent" >A repository name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9_-</span>]. It must not begin with a +hyphen. +</p><!--l. 39--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.6 </span> <a + id="x1-260003.1.6"></a>Keyword Names</h4> +<!--l. 41--><p class="noindent" >A keyword name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9_-</span>]. It must not begin with a +hyphen. In contexts where it makes sense to do so, a keyword name may be prefixed by a tilde or a +hyphen. In <span +class="ectt-1000">KEYWORDS</span>, <span +class="ectt-1000">-* </span>is also acceptable as a keyword, to indicate that a package will only work +on listed targets. +</p><!--l. 46--><p class="noindent" >A tilde prefixed keyword is, by convention, used to indicate a less stable package. It is generally +assumed that any user accepting keyword <span +class="ectt-1000">~foo </span>will also accept <span +class="ectt-1000">foo</span>. +</p><!--l. 49--><p class="noindent" >The exact meaning of any keywords value is beyond the scope of this specification. +</p><!--l. 51--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">3.2 </span> <a + id="x1-270003.2"></a>Version Specifications</h3> +<!--l. 52--><p class="noindent" >The package manager must not impose fixed limits upon the number of version components. +Package managers should indicate or reject any version that is invalid according to these +rules. +</p><!--l. 55--><p class="noindent" >A version starts with the number part, which is in the form <span +class="ectt-1000">[0-9]+(</span><span +class="cmsy-10">\</span><span +class="ectt-1000">.[0-9]+)* </span>(a positive +integer, followed by zero or more dot-prefixed positive integers). +</p><!--l. 58--><p class="noindent" >This may optionally be followed by one of <span +class="ectt-1000">[a-z] </span>(a lowercase letter). +</p><!--l. 60--><p class="noindent" >This may be followed by zero or more of the suffixes <span +class="ectt-1000">_alpha</span>, <span +class="ectt-1000">_beta</span>, <span +class="ectt-1000">_pre</span>, <span +class="ectt-1000">_rc </span>or <span +class="ectt-1000">_p</span>, which +themselves may be suffixed by an optional integer. +</p><!--l. 63--><p class="noindent" >This may optionally be followed by the suffix <span +class="ectt-1000">-r </span>followed immediately by an integer (the “revision +number”). If this suffix is not present, it is assumed to be <span +class="ectt-1000">-r0</span>. + + +</p><!--l. 66--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">3.3 </span> <a + id="x1-280003.3"></a>Version Comparison</h3> +<!--l. 68--><p class="noindent" >Version specifications are compared component by component, moving from left to right, as +detailed in Algorithm <a +href="#x1-28001r1">1<!--tex4ht:ref: alg:version-comparison --></a> and sub-algorithms. If a sub-algorithm returns a decision, then that is the +result of the whole comparison; if it terminates without returning a decision, the process continues +from the point from which it was invoked. +</p> +<div class="algorithm"> + + +<!--l. 75--><p class="noindent" ><a + id="x1-28001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 1: </span><span +class="content">Version comparison top-level logic</span></div><!--tex4ht:label?: x1-28001r1 --> +<div class="algorithmic"> +<a + id="x1-28002r1"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28003r2"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> compare numeric components using Algorithm <a +href="#x1-28008r2">2<!--tex4ht:ref: alg:version-comparison-numeric --></a> <a + id="x1-28004r3"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> compare letter components using Algorithm <a +href="#x1-28041r4">4<!--tex4ht:ref: alg:version-comparison-letter --></a> <a + id="x1-28005r4"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> compare suffixes using Algorithm <a +href="#x1-28049r5">5<!--tex4ht:ref: alg:version-comparison-suffix --></a> <a + id="x1-28006r5"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> compare revision components using Algorithm <a +href="#x1-28083r7">7<!--tex4ht:ref: alg:version-comparison-revision --></a> <a + id="x1-28007r6"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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. 87--><p class="noindent" ><a + id="x1-28008r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 2: </span><span +class="content">Version comparison logic for numeric components</span></div><!--tex4ht:label?: x1-28008r2 --> +<div class="algorithmic"> +<a + id="x1-28009r7"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28010r8"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28011r9"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28012r10"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28013r11"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28014r12"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-28015r13"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28016r14"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28017r15"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28018r16"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-28025r3">3<!--tex4ht:ref: alg:version-comparison --></a> + </span><a + id="x1-28019r17"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span><a + id="x1-28020r18"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </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-28021r19"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28022r20"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </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-28023r21"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28024r22"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 109--><p class="noindent" ><a + id="x1-28025r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 3: </span><span +class="content">Version comparison logic for each numeric component after the first</span></div><!--tex4ht:label?: x1-28025r3 --> +<div class="algorithmic"> +<a + id="x1-28026r23"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28027r24"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28028r25"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28029r26"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28030r27"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28031r28"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28032r29"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28033r30"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-28034r31"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-28035r32"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-28036r33"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28037r34"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-28038r35"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28039r36"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-28040r37"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 130--><p class="noindent" ><a + id="x1-28041r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 4: </span><span +class="content">Version comparison logic for letter components</span></div><!--tex4ht:label?: x1-28041r4 --> +<div class="algorithmic"> +<a + id="x1-28042r38"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28043r39"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28044r40"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28045r41"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28046r42"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28047r43"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28048r44"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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. 143--><p class="noindent" ><a + id="x1-28049r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 5: </span><span +class="content">Version comparison logic for suffixes</span></div><!--tex4ht:label?: x1-28049r5 --> +<div class="algorithmic"> +<a + id="x1-28050r45"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28051r46"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28052r47"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28053r48"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28054r49"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28069r6">6<!--tex4ht:ref: alg:version-comparison --></a> + </span><a + id="x1-28055r50"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span><a + id="x1-28056r51"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28057r52"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28058r53"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28059r54"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-28060r55"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28061r56"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-28062r57"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </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-28063r58"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-28064r59"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28065r60"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-28066r61"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">17:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28067r62"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">18:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-28068r63"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">19:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 168--><p class="noindent" ><a + id="x1-28069r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 6: </span><span +class="content">Version comparison logic for each suffix</span></div><!--tex4ht:label?: x1-28069r6 --> +<div class="algorithmic"> +<a + id="x1-28070r64"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28071r65"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28072r66"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28073r67"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28074r68"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28075r69"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28076r70"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28077r71"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-28078r72"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28079r73"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28080r74"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-28081r75"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28082r76"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 187--><p class="noindent" ><a + id="x1-28083r7"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 7: </span><span +class="content">Version comparison logic for revision components</span></div><!--tex4ht:label?: x1-28083r7 --> +<div class="algorithmic"> +<a + id="x1-28084r77"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28085r78"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28086r79"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28087r80"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28088r81"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28089r82"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28090r83"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-290003.4"></a>Uniqueness of versions</h3> +<!--l. 201--><p class="noindent" >No two packages in a given repository may have the same qualified package name and equal +versions. For example, a repository may not contain more than one of <span +class="ectt-1000">foo-bar/baz-1.0.2</span>, +<span +class="ectt-1000">foo-bar/baz-1.0.2-r0 </span>and <span +class="ectt-1000">foo-bar/baz-1.000.2</span>. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 4</span><br /><a + id="x1-300004"></a>Tree Layout</h2> +<!--l. 3--><p class="noindent" >This chapter defines the layout on-disk of an ebuild repository. In all cases below where a file or +directory is specified, a symlink to a file or directory is also valid. In this case, the package manager +must follow the operating system’s semantics for symbolic links and must not behave differently +from normal. +</p> +<h3 class="sectionHead"><span class="titlemark">4.1 </span> <a + id="x1-310004.1"></a>Top Level</h3> +<!--l. 10--><p class="noindent" >An ebuild repository shall occupy one directory on disk, with the following subdirectories: + </p><ul> + <li class="compactitem">One directory per category, whose name shall be the name of the category. The layout + of these directories shall be as described in section <a +href="#x1-320004.2">4.2<!--tex4ht:ref: sec:category-dirs --></a>. + </li> + <li class="compactitem">A <span +class="ectt-1000">profiles </span>directory, described in section <a +href="#x1-340004.4">4.4<!--tex4ht:ref: sec:profiles-dir --></a>. + </li> + <li class="compactitem">A <span +class="ectt-1000">licenses </span>directory (optional), described in section <a +href="#x1-390004.5">4.5<!--tex4ht:ref: sec:licenses-dir --></a>. + </li> + <li class="compactitem">An <span +class="ectt-1000">eclass </span>directory (optional), described in section <a +href="#x1-400004.6">4.6<!--tex4ht:ref: sec:eclass-dir --></a>. + </li> + <li class="compactitem">A <span +class="ectt-1000">metadata </span>directory (optional), described in section <a +href="#x1-410004.7">4.7<!--tex4ht:ref: sec:metadata-dir --></a>. + </li> + <li class="compactitem">Other optional support files and directories (skeleton ebuilds or ChangeLogs, for + example) may exist but are not covered by this specification. The package manager + must ignore any of these files or directories that it does not recognise. + </li></ul> +<!--l. 24--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.2 </span> <a + id="x1-320004.2"></a>Category Directories</h3> +<!--l. 27--><p class="noindent" >Each category provided by the repository (see also: the <span +class="ectt-1000">profiles/categories </span>file, section <a +href="#x1-340004.4">4.4<!--tex4ht:ref: profiles-categories --></a>) +shall be contained in one directory, whose name shall be that of the category. Each category +directory shall contain: + </p><ul> + <li class="compactitem">A <span +class="ectt-1000">metadata.xml </span>file, as described in appendix <a +href="#x1-162000A">A<!--tex4ht:ref: sec:metadata-xml --></a>. Optional. + </li> + <li class="compactitem">Zero or more package directories, one for each package in the category, as described + in section <a +href="#x1-330004.3">4.3<!--tex4ht:ref: sec:package-dirs --></a>. The name of the package directory shall be the corresponding package + name.</li></ul> +<!--l. 38--><p class="noindent" >Category directories may contain additional files, whose purpose is not covered by this +specification. Additional directories that are not for a package may <span +class="ecti-1000">not </span>be present, to avoid +conflicts with package name directories; an exception is made for filesystem components whose +name starts with a dot, which the package manager must ignore, and for any directory named +<span +class="ectt-1000">CVS</span>. +</p><!--l. 43--><p class="noindent" >It is not required that a directory exists for each category provided by the repository. A category +directory that does not exist shall be considered equivalent to an empty category (and by +extension, a package manager may treat an empty category as a category that does not +exist). + + +</p><!--l. 47--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.3 </span> <a + id="x1-330004.3"></a>Package Directories</h3> +<!--l. 50--><p class="noindent" >A package directory contains the following: + </p><ul> + <li class="compactitem">Zero or more ebuilds. These are as described in section <a +href="#x1-650007">7<!--tex4ht:ref: sec:ebuild-format --></a> and others. + </li> + <li class="compactitem">A <span +class="ectt-1000">metadata.xml </span>file, as described in appendix <a +href="#x1-162000A">A<!--tex4ht:ref: sec:metadata-xml --></a>. Optional only for legacy support. + </li> + <li class="compactitem">A <span +class="ectt-1000">ChangeLog</span>, in a format determined by the provider of the respository. Optional. + </li> + <li class="compactitem">A <span +class="ectt-1000">Manifest </span>file, whose format is described in <span class="cite">[<a +href="#XGlep44">1</a>]</span>. + </li> + <li class="compactitem">A <span +class="ectt-1000">files </span>directory, containing any support files needed by the ebuilds. Optional.</li></ul> +<!--l. 60--><p class="noindent" >Any ebuild in a package directory must be named <span +class="ectt-1000">name-ver.suffix</span>, where: +</p><!--l. 63--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">name </span>is the (unqualified) package name. + </li> + <li class="compactitem"><span +class="ectt-1000">ver </span>is the package’s version. + </li> + <li class="compactitem"> <span +class="ectt-1000">suffix </span>is <span +class="ectt-1000">ebuild</span>.</li></ul> +<!--l. 68--><p class="noindent" >Package managers must ignore any ebuild file that does not match these rules. +</p><!--l. 70--><p class="noindent" >A package directory that contains no correctly named ebuilds shall be considered a package with +no versions. A package with no versions shall be considered equivalent to a package that does not +exist (and by extension, a package manager may treat a package that does not exist as a package +with no versions). +</p><!--l. 75--><p class="noindent" >A package directory may contain other files or directories, whose purpose is not covered by this +specification. +</p><!--l. 78--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.4 </span> <a + id="x1-340004.4"></a>The Profiles Directory</h3> +<!--l. 81--><p class="noindent" >The profiles directory shall contain zero or more profile directories as described in section <a +href="#x1-430005">5<!--tex4ht:ref: sec:profiles --></a>, as +well as the following files and directories. In any line-based file, lines beginning with a # character +are treated as comments, whilst blank lines are ignored. All contents of this directory, with the +exception of <span +class="ectt-1000">repo_name</span>, are optional. +</p><!--l. 88--><p class="noindent" >The profiles directory may contain an <span +class="ectt-1000">eapi </span>file. This file, if it exists, must contain a single line +with the name of an EAPI. This specifies the EAPI to use when handling the profiles +directory; a package manager must not attempt to use any repository whose profile +directory requires an EAPI it does not support. If no <span +class="ectt-1000">eapi </span>file is present, EAPI 0 shall be +used. +</p><!--l. 93--><p class="noindent" >If the repository is not intended to be stand-alone, the contents of these files are to be taken from +or merged with the master repository as necessary. +</p><!--l. 96--><p class="noindent" >Other files not described by this specification may exist, but may not be relied upon. The package +manager must ignore any files in this directory that it does not recognise. + + + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">arch.list</span> </dt><dd +class="description"> Contains a list, one entry per line, of permissible values for the <span +class="ectt-1000">ARCH </span>variable, + and hence permissible keywords for packages in this repository. + </dd><dt class="description"> +<span +class="ecbx-1000">categories</span> </dt><dd +class="description"> Contains a list, one entry per line, of categories provided by this repository. + </dd><dt class="description"> +<span +class="ecbx-1000">eapi</span> </dt><dd +class="description">See above. + </dd><dt class="description"> +<span +class="ecbx-1000">info_pkgs</span> </dt><dd +class="description">Contains a list, one entry per line, of qualified package names. Any package + matching one of these is to be listed when a package manager displays a ‘system + information’ listing. + </dd><dt class="description"> +<span +class="ecbx-1000">info_vars</span> </dt><dd +class="description">Contains a list, one entry per line, of profile, configuration, and environment + variables which are considered to be of interest. The value of each of these variables + may be shown when the package manager displays a ‘system information’ listing. + </dd><dt class="description"> +<span +class="ecbx-1000">package.mask</span> </dt><dd +class="description"> Contains a list, one entry per line, of package dependency specifications + (using the directory’s EAPI). Any package version matching one of these is considered + to be masked, and will not be installed regardless of profile unless it is unmasked by + the user configuration. + </dd><dt class="description"> +<span +class="ecbx-1000">profiles.desc</span> </dt><dd +class="description">Described below in section <a +href="#x1-350004.4.1">4.4.1<!--tex4ht:ref: sec:profiles.desc --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">repo_name</span> </dt><dd +class="description">Contains, on a single line, the name of this repository. The repository name + must conform to section <a +href="#x1-250003.1.5">3.1.5<!--tex4ht:ref: sec:repository-names --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">thirdpartymirrors</span> </dt><dd +class="description">Described below in section <a +href="#x1-360004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">use.desc</span> </dt><dd +class="description">Contains descriptions of valid global USE flags for this repository. The format is + described in section <a +href="#x1-370004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">use.local.desc</span> </dt><dd +class="description">Contains descriptions of valid local USE flags for this repository, along with + the packages to which they apply. The format is as described in section <a +href="#x1-370004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">desc/</span> </dt><dd +class="description">This directory contains files analogous to <span +class="ectt-1000">use.desc </span>for the various <span +class="ectt-1000">USE_EXPAND</span> + variables. Each file in it is named <span +class="ectt-1000"><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-370004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>. The <span +class="ectt-1000">USE_EXPAND </span>name is <span +class="ecti-1000">not </span>included as + a prefix here. + </dd><dt class="description"> +<span +class="ecbx-1000">updates/</span> </dt><dd +class="description">This directory is described in section <a +href="#x1-380004.4.4">4.4.4<!--tex4ht:ref: sec:updates-dir --></a>.</dd></dl> +<!--l. 131--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.1 </span> <a + id="x1-350004.4.1"></a>The profiles.desc file</h4> +<!--l. 133--><p class="noindent" ><span +class="ectt-1000">profiles.desc </span>is a line-based file, with the standard commenting rules from section <a +href="#x1-340004.4">4.4<!--tex4ht:ref: sec:profiles-dir --></a>, +containing a list of profiles that are valid for use, along with their associated architecture and +status. Each line has the format: + + +</p> +<div class="verbatim" id="verbatim-1"> +<keyword> <profile path> <stability></div> +<!--l. 140--><p class="nopar" > +</p><!--l. 142--><p class="noindent" >Where: +</p><!--l. 145--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000"><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. 154--><p class="noindent" >Fields are whitespace-delimited. +</p><!--l. 156--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.2 </span> <a + id="x1-360004.4.2"></a>The thirdpartymirrors file</h4> +<!--l. 158--><p class="noindent" ><span +class="ectt-1000">thirdpartymirrors </span>is another simple line-based file, describing the valid mirrors for use with +<span +class="ectt-1000">mirror:// </span>URIs in this repository, and the associated download locations. The format of each line +is: + + +</p> +<div class="verbatim" id="verbatim-2"> +<mirror name> <mirror 1> <mirror 2> ... <mirror n></div> +<!--l. 163--><p class="nopar" >Fields are whitespace-delimited. When parsing a URI of the form <span +class="ectt-1000">mirror://name/path/filename</span>, +where the <span +class="ectt-1000">path/ </span>part is optional, the <span +class="ectt-1000">thirdpartymirrors </span>file is searched for a line whose first field +is <span +class="ectt-1000">name</span>. Then the download URIs in the subsequent fields have <span +class="ectt-1000">path/filename </span>appended to them +to generate the URIs from which a download is attempted. +</p><!--l. 169--><p class="noindent" >Each mirror name may appear at most once in a file. Behaviour when a mirror name appears +multiple times is undefined. Behaviour when a mirror is defined in terms of another mirror is +undefined. A package manager may choose to fetch from all of or a subset of the listed mirrors, and +may use an order other than the one described. +</p><!--l. 174--><p class="noindent" >The mirror with the name equal to the repository’s name (and if the repository has a master, the +master’s name) may be consulted for all downloads. +</p><!--l. 177--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.3 </span> <a + id="x1-370004.4.3"></a>use.desc and related files</h4> +<!--l. 179--><p class="noindent" ><span +class="ectt-1000">use.desc </span>contains descriptions of every valid global USE flag for this repository. It is a +line-based file with the standard rules for comments and blank lines. The format of each line +is: + + +</p> +<div class="verbatim" id="verbatim-3"> +<flagname> - <description></div> +<!--l. 183--><p class="nopar" > +</p><!--l. 185--><p class="noindent" ><span +class="ectt-1000">use.local.desc </span>contains descriptions of every valid local USE flag—those that apply only to a +small number of packages, or that have different meanings for different packages. Its format +is: + + +</p> +<div class="verbatim" id="verbatim-4"> +<category/package>:<flagname> - <description></div> +<!--l. 189--><p class="nopar" >Flags must be listed once for each package to which they apply, or if a flag is listed in both +<span +class="ectt-1000">use.desc </span>and <span +class="ectt-1000">use.local.desc</span>, it must be listed once for each package for which its meaning +differs from that described in <span +class="ectt-1000">use.desc</span>. +</p><!--l. 194--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.4 </span> <a + id="x1-380004.4.4"></a>The updates directory</h4> +<!--l. 196--><p class="noindent" >The <span +class="ectt-1000">updates </span>directory is used to inform the package manager that a package has moved +categories, names, or that a version has changed SLOT. It contains one file per quarter year, +named <span +class="ectt-1000">[1-4]Q-[YYYY] </span>for the first to fourth quarter of a given year, for example <span +class="ectt-1000">1Q-2004 </span>or +<span +class="ectt-1000">3Q-2006</span>. The format of each file is again line-based, with each line having one of the following +formats: + + +</p> +<div class="verbatim" id="verbatim-5"> +move <qpn1> <qpn2> + <br />slotmove <spec> <slot1> <slot2></div> +<!--l. 204--><p class="nopar" >The first form, where <span +class="ectt-1000">qpn1 </span>and <span +class="ectt-1000">qpn2 </span>are <span +class="ecti-1000">qualified package names</span>, instructs the package +manager that the package <span +class="ectt-1000">qpn1 </span>has changed name, category, or both, and is now called +<span +class="ectt-1000">qpn2</span>. +</p><!--l. 208--><p class="noindent" >The second form instructs the package manager that any currently installed package version +matching package dependency specification <span +class="ectt-1000">spec </span>whose <span +class="ectt-1000">SLOT </span>is set to <span +class="ectt-1000">slot1 </span>should have it +updated to <span +class="ectt-1000">slot2</span>. +</p><!--l. 212--><p class="noindent" >Any name that has appeared as the origin of a move must not be reused in the future. Any slot +that has appeared as the origin of a slot move may not be used by packages matching the spec of +that slot move in the future. +</p><!--l. 216--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.5 </span> <a + id="x1-390004.5"></a>The Licenses Directory</h3> +<!--l. 219--><p class="noindent" >The <span +class="ectt-1000">licenses </span>directory shall contain copies of the licenses used by packages in the repository. +Each file will be named according to the name used in the <span +class="ectt-1000">LICENSE </span>variable as described in +section <a +href="#x1-690008.2">8.2<!--tex4ht:ref: ebuild-var-LICENSE --></a>, and will contain the complete text of the license in human-readable form. Plain text +format is strongly preferred but not required. +</p><!--l. 224--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.6 </span> <a + id="x1-400004.6"></a>The Eclass Directory</h3> +<!--l. 227--><p class="noindent" >The <span +class="ectt-1000">eclass </span>directory shall contain copies of the eclasses provided by this repository. The format of +these files is described in section <a +href="#x1-11200011">11<!--tex4ht:ref: sec:eclasses --></a>. It may also contain, in their own directory, support files +needed by these eclasses. +</p><!--l. 231--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.7 </span> <a + id="x1-410004.7"></a>The Metadata Directory</h3> +<!--l. 234--><p class="noindent" >The <span +class="ectt-1000">metadata </span>directory contains various repository-level metadata that is not contained in +<span +class="ectt-1000">profiles/</span>. All contents are optional. In this standard only the <span +class="ectt-1000">cache </span>subdirectory is described; +other contents are optional but may include security advisories, DTD files for the various XML +files used in the repository, and repository timestamps. + + +</p><!--l. 239--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.7.1 </span> <a + id="x1-420004.7.1"></a>The metadata cache</h4> +<!--l. 241--><p class="noindent" >The <span +class="ectt-1000">metadata/cache </span>directory may contain a cached form of all important ebuild metadata +variables. The contents of this directory are described in section <a +href="#x1-15800014">14<!--tex4ht:ref: metadata-cache --></a>. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 5</span><br /><a + id="x1-430005"></a>Profiles</h2> +<h3 class="sectionHead"><span class="titlemark">5.1 </span> <a + id="x1-440005.1"></a>General principles</h3> +<!--l. 5--><p class="noindent" >Generally, a profile defines information specific to a certain ‘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-450005.2"></a>Files that make up a profile</h3> +<!--l. 18--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.1 </span> <a + id="x1-460005.2.1"></a>The parent file</h4> +<!--l. 19--><p class="noindent" >A profile may contain a <span +class="ectt-1000">parent </span>file. Each line must contain a relative path to another profile which +will be considered as one of this profile’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-470005.2.2"></a>The eapi file</h4> +<!--l. 32--><p class="noindent" >A profile directory may contain an <span +class="ectt-1000">eapi </span>file. This file, if it exists, must contain a single line with +the name of an EAPI. This specifies the EAPI to use when handling the directory in question; a +package manager must not attempt to use any profile using a directory which requires an EAPI it +does not support. If no <span +class="ectt-1000">eapi </span>file is present, EAPI 0 shall be used. The EAPI is not inherited via +the <span +class="ectt-1000">parent </span>file. + + +</p><!--l. 38--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.3 </span> <a + id="x1-480005.2.3"></a>deprecated</h4> +<!--l. 39--><p class="noindent" >If a profile contains a file named <span +class="ectt-1000">deprecated</span>, it is treated as such. The first line of this file +should contain the path from the <span +class="ectt-1000">profiles </span>directory of the repository to a valid profile +that is the recommended upgrade path from this profile. The remainder of the file can +contain any text, which may be displayed to users using this profile by the package +manager. This file is not inherited—profiles which inherit from a deprecated profile are <span +class="ecti-1000">not</span> +deprecated. +</p><!--l. 45--><p class="noindent" >This file must not contain comments or make use of line continuations. +</p><!--l. 47--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.4 </span> <a + id="x1-490005.2.4"></a>make.defaults</h4> +<!--l. 48--><p class="noindent" ><span +class="ectt-1000">make.defaults </span>is used to define defaults for various environment and configuration variables. This +file is unusual in that it is not combined at a file level with the parent—instead, each variable is +combined or overridden individually as described in section <a +href="#x1-590005.3">5.3<!--tex4ht:ref: sec:profile-variables --></a>. +</p><!--l. 52--><p class="noindent" >The file itself is a line-based key-value format. Each line contains a single <span class="obeylines-h"><span class="verb"><span +class="ectt-1000">VAR="value"</span></span></span> entry, +where the value must be double quoted. A variable name must start with one of <span +class="ectt-1000">a-zA-Z </span>and may +contain <span +class="ectt-1000">a-zA-Z0-9_ </span>only. Additional syntax, which is a small subset of bash syntax, is allowed as +follows: +</p><!--l. 58--><p class="noindent" > + </p><ul> + <li class="compactitem">Variables to the right of the equals sign in the form <span +class="ectt-1000">${foo} </span>or <span +class="ectt-1000">$foo </span>are recognised and + expanded from variables previously set in this or earlier <span +class="ectt-1000">make.defaults </span>files. + </li> + <li class="compactitem">One logical line may be continued over multiple physical lines by escaping the newline + with a backslash. A quoted string may also continue over multiple physical lines in + this fashion, so that the quoted string can begin, continue, and end on two or more + separate lines. + </li> + <li class="compactitem">Backslashes, except for line continuations, are not allowed.</li></ul> +<!--l. 66--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.5 </span> <a + id="x1-500005.2.5"></a>virtuals</h4> +<!--l. 68--><p class="noindent" >The <span +class="ectt-1000">virtuals </span>file defines default providers for “old-style” virtual packages. It is a simple line-based +file, with each line containing two whitespace-delimited tokens. The first is a virtual package name +(for example, <span +class="ectt-1000">virtual/alsa</span>) and the second is a qualified package name. Blank lines and those +beginning with a # character are ignored. When attempting to resolve a virtual name to a concrete +package, the specification defined in the active profile’s <span +class="ectt-1000">virtuals </span>list should be used if no provider +is already installed. +</p><!--l. 75--><p class="noindent" >The <span +class="ectt-1000">virtuals </span>file is inherited in the simplest manner: all entries from the parent profile are +loaded, then entries from the current profile. If a virtual package name appears in both, the entry +in the parent profile is discarded. + + +</p><!--l. 79--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.6 </span> <a + id="x1-510005.2.6"></a>Simple line-based files</h4> +<!--l. 81--><p class="noindent" >These files are a simple one-item-per-line list, which is inherited in the following manner: the +parent profile’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. Once again, blank lines and those beginning with a # are +discarded. +</p><!--l. 86--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.7 </span> <a + id="x1-520005.2.7"></a>packages</h4> +<!--l. 87--><p class="noindent" >The <span +class="ectt-1000">packages </span>file is used to define the ‘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 the atom forms part of the system set. A package +dependency specification on its own may also appear for legacy reasons, but should be ignored +when calculating the system set. +</p><!--l. 93--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.8 </span> <a + id="x1-530005.2.8"></a>packages.build</h4> +<!--l. 94--><p class="noindent" >The <span +class="ectt-1000">packages.build </span>file is used by Gentoo’s Catalyst tool to generate stage1 tarballs, and has no +relevance to the operation of a package manager. It is thus outside the scope of this document, but +is mentioned here for completeness. +</p><!--l. 98--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.9 </span> <a + id="x1-540005.2.9"></a>package.mask</h4> +<!--l. 99--><p class="noindent" ><span +class="ectt-1000">package.mask </span>is used to prevent packages from being installed on a given profile. Each line +contains one package dependency specification; anything matching this specification will not be +installed unless unmasked by the user’s configuration. +</p><!--l. 103--><p class="noindent" >Note that the <span +class="ectt-1000">-spec </span>syntax can be used to remove a mask in a parent profile, but not necessarily a +global mask (from <span +class="ectt-1000">profiles/package.mask</span>, section <a +href="#x1-340004.4">4.4<!--tex4ht:ref: profiles-package.mask --></a>). +</p> +<!--l. 106--><p class="noindent" ><span class="paragraphHead"><a + id="x1-550005.2.9"></a><span +class="ecbx-1000">Note:</span></span> +Portage currently treats <span +class="ectt-1000">profiles/package.mask </span>as being on the leftmost branch of the inherit +tree when it comes to <span +class="ectt-1000">-lines</span>. This behaviour may not be relied upon. + + +</p><!--l. 109--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.10 </span> <a + id="x1-560005.2.10"></a>package.provided</h4> +<!--l. 110--><p class="noindent" ><span +class="ectt-1000">package.provided </span>is used to tell the package manager that a certain package version should be +considered to be provided by the system regardless of whether it is actually installed. +Because it has severe adverse effects on USE-based and slot-based dependencies, its +use is strongly deprecated and package manager support must be regarded as purely +optional. +</p><!--l. 115--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.11 </span> <a + id="x1-570005.2.11"></a>package.use</h4> +<!--l. 116--><p class="noindent" >The <span +class="ectt-1000">package.use </span>file may be used by the package manager to override the default USE flags +specified by <span +class="ectt-1000">make.defaults </span>on a per package basis. The format is to have a package +dependency specification, and then a space delimited list of USE flags to enable. A USE flag +in the form of <span +class="ectt-1000">-flag </span>indicates that the package should have the USE flag disabled. +The package dependency specification is limited to the forms defined by the directory’s +EAPI. +</p><!--l. 122--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.12 </span> <a + id="x1-580005.2.12"></a>USE masking and forcing</h4> +<!--l. 124--><p class="noindent" >This section covers the four files <span +class="ectt-1000">use.mask</span>, <span +class="ectt-1000">use.force</span>, <span +class="ectt-1000">package.use.mask </span>and +<span +class="ectt-1000">package.use.force</span>. They are described together because they interact in a non-trivial +manner. +</p><!--l. 127--><p class="noindent" >Simply speaking, <span +class="ectt-1000">use.mask </span>and <span +class="ectt-1000">use.force </span>are used to say that a given USE flag must +never or always, respectively, be enabled when using this profile. <span +class="ectt-1000">package.use.mask </span>and +<span +class="ectt-1000">package.use.force </span>do the same thing on a per-package, or per-version, basis. The precise manner +in which they interact is less simple, and is best described in terms of the algorithm used to +determine whether a flag is masked for a given package version. This is described in Algorithm <a +href="#x1-58001r8">8<!--tex4ht:ref: alg:use-masking --></a>. +</p><div class="algorithm"> + + +<!--l. 133--><p class="noindent" ><a + id="x1-58001r8"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 8: </span><span +class="content">USE masking logic</span></div><!--tex4ht:label?: x1-58001r8 --> +<div class="algorithmic"> +<a + id="x1-58002r84"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> let masked = false <a + id="x1-58003r85"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58004r86"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58005r87"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> let masked = true + </span><a + id="x1-58006r88"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58007r89"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> let masked = false + </span><a + id="x1-58008r90"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-58009r91"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58010r92"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58011r93"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:34.99146pt;"> </span> let masked = true + </span><a + id="x1-58012r94"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </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-58013r95"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:34.99146pt;"> </span> let masked = false + </span><a + id="x1-58014r96"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-58015r97"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span> + </span><a + id="x1-58016r98"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 153--><p class="noindent" >The logic for <span +class="ectt-1000">use.force </span>and <span +class="ectt-1000">package.use.force </span>is identical. If a flag is both masked and forced, +the mask is considered to take precedence. +</p><!--l. 156--><p class="noindent" ><span +class="ectt-1000">USE_EXPAND </span>values may be forced or masked by using <span +class="ectt-1000">expand_name_value</span>. +</p><!--l. 158--><p class="noindent" >A package manager may treat <span +class="ectt-1000">ARCH </span>values that are not the current architecture as being +masked. +</p> +<h3 class="sectionHead"><span class="titlemark">5.3 </span> <a + id="x1-590005.3"></a>Profile variables</h3> +<!--l. 4--><p class="noindent" >This section documents variables that have special meaning, or special behaviour, when defined in +a profile’s <span +class="ectt-1000">make.defaults </span>file. +</p><!--l. 7--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.3.1 </span> <a + id="x1-600005.3.1"></a>Incremental Variables</h4> +<!--l. 8--><p class="noindent" ><span +class="ecti-1000">Incremental </span>variables must stack between parent and child profiles in the following manner: +Beginning with the highest parent profile, tokenise the variable’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-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as using profile-defined <span +class="ectt-1000">IUSE</span> +injection, the following variables must also be treated incrementally; otherwise, the following +variables may or may not be treated incrementally: + </p><ul> + <li class="compactitem"><span +class="ectt-1000">IUSE_IMPLICIT</span> + </li> + <li class="compactitem"><span +class="ectt-1000">USE_EXPAND_IMPLICIT</span> + </li> + <li class="compactitem"><span +class="ectt-1000">USE_EXPAND_UNPREFIXED</span></li></ul> +<!--l. 32--><p class="noindent" >Other variables, except where they affect only package-manager-specific functionality (such as +Portage’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. 36--><p class="noindent" ><a + id="x1-60001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 5.1: </span><span +class="content">Profile-defined <span +class="ectt-1000">IUSE </span>injection for EAPIs</span></div><!--tex4ht:label?: x1-60001r1 --> +<div class="tabular"> + <table id="TBL-2" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-2-1g"><col +id="TBL-2-1" /><col +id="TBL-2-2" /><col +id="TBL-2-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports profile-defined </span><span +class="ectt-1000">IUSE </span><span +class="ecbx-1000">injection?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">5.3.2 </span> <a + id="x1-610005.3.2"></a>Specific variables and their meanings</h4> +<!--l. 52--><p class="noindent" >The following variables have specific meanings when set in profiles. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">ARCH</span> </dt><dd +class="description">The system’s architecture. Must be a value listed in <span +class="ectt-1000">profiles/arch.list</span>; see + section <a +href="#x1-340004.4">4.4<!--tex4ht:ref: arch.list --></a> for more information. Must be equal to the primary <span +class="ectt-1000">KEYWORD </span>for this profile. + </dd><dt class="description"> +<span +class="ecbx-1000">CONFIG_PROTECT, CONFIG_PROTECT_MASK</span> </dt><dd +class="description">Contain + whitespace-delimited lists used to control the configuration file protection. Described + more fully in chapter <a +href="#x1-15300013.3.3">13.3.3<!--tex4ht:ref: sec:config-protect --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">USE</span> </dt><dd +class="description">Defines the list of default USE flags for this profile. Flags may be added or removed + by the user’s configuration. <span +class="ectt-1000">USE_EXPAND </span>values must not be specified in this way. + </dd><dt class="description"> +<span +class="ecbx-1000">USE_EXPAND</span> </dt><dd +class="description">Defines a list of variables which are to be treated incrementally and + whose contents are to be expanded into the USE variable as passed to ebuilds. See + section <a +href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for details. + </dd><dt class="description"> +<span +class="ecbx-1000">USE_EXPAND_UNPREFIXED</span> </dt><dd +class="description">Similar to <span +class="ectt-1000">USE_EXPAND</span>, but no prefix is used. If + the repository contains any package using an EAPI supporting profile-defined <span +class="ectt-1000">IUSE</span> + injection (see table <a +href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a>), this list must contain at least <span +class="ectt-1000">ARCH</span>. See section <a +href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for + details. + </dd><dt class="description"> +<span +class="ecbx-1000">USE_EXPAND_HIDDEN</span> </dt><dd +class="description">Contains a (possibly empty) subset of names from + <span +class="ectt-1000">USE_EXPAND </span>and <span +class="ectt-1000">USE_EXPAND_UNPREFIXED</span>. The package manager may use this set as + a hint to avoid displaying uninteresting or unhelpful information to an end user. + </dd><dt class="description"> +<span +class="ecbx-1000">USE_EXPAND_IMPLICIT, IUSE_IMPLICIT</span> </dt><dd +class="description">Used to inject implicit values into + <span +class="ectt-1000">IUSE</span>. See section <a +href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for details.</dd></dl> +<!--l. 75--><p class="noindent" >In addition, for EAPIs listed in table <a +href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as supporting profile defined <span +class="ectt-1000">IUSE </span>injection, the variables +named in <span +class="ectt-1000">USE_EXPAND </span>and <span +class="ectt-1000">USE_EXPAND_UNPREFIXED </span>have special handling as described in +section <a +href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>. +</p><!--l. 79--><p class="noindent" >Any other variables set in <span +class="ectt-1000">make.defaults </span>must be passed on into the ebuild environment as-is, +and are not required to be interpreted by the package manager. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 6</span><br /><a + id="x1-620006"></a>Old-Style Virtual Packages</h2> +<!--l. 4--><p class="noindent" >Old-style virtuals are pseudo-packages—they can be depended upon or installed, but do not exist +in the ebuild repository. An old-style virtual requires several things in the repository: at least one +ebuild must list the virtual in its <span +class="ectt-1000">PROVIDE </span>variable, and there must be at least one entry in a +profiles <span +class="ectt-1000">virtuals </span>file listing the default provider for each profile—see sections <a +href="#x1-700008.3">8.3<!--tex4ht:ref: ebuild-var-provide --></a> and <a +href="#x1-500005.2.5">5.2.5<!--tex4ht:ref: sec:profiles-virtuals --></a> for +specifics on these two. Old-style virtuals require special handling as regards dependencies; this is +described below. +</p><!--l. 14--><p class="noindent" >All old-style virtuals must use the category <span +class="ectt-1000">virtual</span>. Not all packages using the <span +class="ectt-1000">virtual </span>category +may be assumed to be old style virtuals. +</p> +<!--l. 17--><p class="noindent" ><span class="paragraphHead"><a + id="x1-630006"></a><span +class="ecbx-1000">Note:</span></span> +A <span +class="ecti-1000">new-style </span>virtual is simply an ebuild which install no files and use its dependency strings to +select providers. By convention, and to ease migration, these are also placed in the <span +class="ectt-1000">virtual</span> +category. +</p><!--l. 21--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">6.1 </span> <a + id="x1-640006.1"></a>Dependencies on virtual packages</h3> +<!--l. 23--><p class="noindent" >When a dependency on a virtual package is encountered, it must be resolved into a real package +before it can be satisfied. There are two factors that affect this process: whether a package +providing the virtual is installed, and the <span +class="ectt-1000">virtuals </span>file in the active profile (section <a +href="#x1-500005.2.5">5.2.5<!--tex4ht:ref: sec:profiles-virtuals --></a>). If a +package is already installed which satisfies the virtual requirement (via <span +class="ectt-1000">PROVIDE</span>), then it should be +used to satisfy the dependency. Otherwise, the profiles <span +class="ectt-1000">virtuals </span>file (section <a +href="#x1-500005.2.5">5.2.5<!--tex4ht:ref: sec:profiles-virtuals --></a>) should be +consulted to choose an appropriate provider. +</p><!--l. 33--><p class="noindent" >Dependencies on old style virtuals must not use any kind of version restriction. +</p><!--l. 35--><p class="noindent" >Blocks on provided virtuals have special behaviour documented in section <a +href="#x1-850009.2.4">9.2.4<!--tex4ht:ref: provided-blocks --></a>. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 7</span><br /><a + id="x1-650007"></a>Ebuild File Format</h2> +<!--l. 4--><p class="noindent" >The ebuild file format is in its basic form a subset of the format of a bash script. The interpreter is +assumed to be GNU bash, version 3.2 or later, see footnote <a +href="#x1-125001f6">6<!--tex4ht:ref: fn:bash3.2 --></a> on page <a +href="#x1-125001f6">172<!--tex4ht:ref: fn:bash3.2 --></a>. The file encoding must +be UTF-8 with Unix-style newlines. When sourced, the ebuild must define certain variables and +functions (see sections <a +href="#x1-660008">8<!--tex4ht:ref: sec:ebuild-vars --></a> and <a +href="#x1-9200010">10<!--tex4ht:ref: sec:ebuild-functions --></a> for specific information), and must not call any external programs, +write anything to standard output or standard error, or modify the state of the system in any +way. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 8</span><br /><a + id="x1-660008"></a>Ebuild-defined Variables</h2> +<!--l. 4--><p class="noindent" ><span class="paragraphHead"><a + id="x1-670008"></a><span +class="ecbx-1000">Note:</span></span> +This section describes variables that may or must be defined by ebuilds. For variables that are +passed from the package manager to the ebuild, see section <a +href="#x1-11700012.1">12.1<!--tex4ht:ref: sec:ebuild-env-vars --></a>. +</p><!--l. 7--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">8.1 </span> <a + id="x1-680008.1"></a>Metadata invariance</h3> +<!--l. 10--><p class="noindent" >All ebuild-defined variables discussed in this chapter must be defined independently of any system, +profile or tree dependent data, and must not vary depending upon the ebuild phase. In particular, +ebuild metadata can and will be generated on a different system from that upon which the +ebuild will be used, and the ebuild must generate identical metadata every time it is +used. +</p><!--l. 16--><p class="noindent" >Globally defined ebuild variables without a special meaning must similarly not rely upon variable +data. +</p><!--l. 19--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">8.2 </span> <a + id="x1-690008.2"></a>Mandatory Ebuild-defined Variables</h3> +<!--l. 21--><p class="noindent" >All ebuilds must define at least the following variables: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">DESCRIPTION</span> </dt><dd +class="description">A short human-readable description of the package’s purpose. May be + defined by an eclass. Must not be empty. + </dd><dt class="description"> +<span +class="ecbx-1000">HOMEPAGE</span> </dt><dd +class="description">The URI or URIs for a package’s homepage, including protocols. May be + defined by an eclass. See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax. + </dd><dt class="description"> +<span +class="ecbx-1000">IUSE</span> </dt><dd +class="description">The <span +class="ectt-1000">USE </span>flags used by the ebuild. Any eclass that works with <span +class="ectt-1000">USE </span>flags must also set + <span +class="ectt-1000">IUSE</span>, listing only the variables used by that eclass. The package manager is responsible + for merging these values. See section <a +href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for discussion on which values must be + listed this variable. + <!--l. 33--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">I</span><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span><span +class="small-caps">S</span></span></span></p><!--l. 33--><p class="noindent" >In EAPIs shown in table <a +href="#x1-69001r1">8.1<!--tex4ht:ref: tab:iuse-defaults-table --></a> as supporting <span +class="ectt-1000">IUSE </span>defaults, any use flag name in <span +class="ectt-1000">IUSE</span> + may be prefixed by at most one of a plus or a minus sign. If such a prefix is present, + the package manager may use it as a suggestion as to the default value of the use flag + if no other configuration overrides it. + </p></dd><dt class="description"> +<span +class="ecbx-1000">KEYWORDS</span> </dt><dd +class="description">A whitespace separated list of keywords for the ebuild. Each token must be + a valid keyword name, as per section <a +href="#x1-260003.1.6">3.1.6<!--tex4ht:ref: sec:keyword-names --></a>. May include <span +class="ectt-1000">-*</span>, which indicates that the + package will only work on explicitly listed archs. May include <span +class="ectt-1000">-arch</span>, which indicates + that the package will not work on the specified arch. May be empty, which indicates + uncertain functionality on any architecture. May be defined in an eclass. + + + </dd><dt class="description"> +<span +class="ecbx-1000">LICENSE</span> </dt><dd +class="description">The package’s license. Each text token must correspond to a tree “licenses/” + entry (see section <a +href="#x1-390004.5">4.5<!--tex4ht:ref: sec:licenses-dir --></a>). See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax. May be defined by an eclass. + </dd><dt class="description"> +<span +class="ecbx-1000">SLOT</span> </dt><dd +class="description">The package’s slot. Must be a valid slot name, as per section <a +href="#x1-220003.1.3">3.1.3<!--tex4ht:ref: sec:slot-names --></a>. May be defined + by an eclass. Must not be empty. + </dd><dt class="description"> +<span +class="ecbx-1000">SRC_URI</span> </dt><dd +class="description">A list of source URIs for the package. Valid protocols are <span +class="ectt-1000">http://</span>, <span +class="ectt-1000">https://</span>, + <span +class="ectt-1000">ftp:// </span>and <span +class="ectt-1000">mirror:// </span>(see section <a +href="#x1-360004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a> for mirror behaviour). Fetch restricted + packages may include URL parts consisting of just a filename. See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full + syntax.</dd></dl> +<!--l. 53--><p class="noindent" >If any of these variables are undefined, or if any of these variables are set to invalid values, the +package manager’s behaviour is undefined; ideally, an error in one ebuild should not prevent +operations upon other ebuilds or packages. +</p> +<div class="table"> + + +<!--l. 57--><p class="noindent" ><a + id="x1-69001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.1: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">IUSE </span>defaults</span></div><!--tex4ht:label?: x1-69001r1 --> +<div class="tabular"> + <table id="TBL-3" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-3-1g"><col +id="TBL-3-1" /><col +id="TBL-3-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-3-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-3-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">IUSE </span><span +class="ecbx-1000">defaults?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-3-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-3-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-2" +class="td11">Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">8.3 </span> <a + id="x1-700008.3"></a>Optional Ebuild-defined Variables</h3> +<!--l. 74--><p class="noindent" >Ebuilds may define any of the following variables: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">DEPEND</span> </dt><dd +class="description">See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">EAPI</span> </dt><dd +class="description">The EAPI. See below for defaults. + </dd><dt class="description"> +<span +class="ecbx-1000">PDEPEND</span> </dt><dd +class="description">See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">PROVIDE</span> </dt><dd +class="description">Zero or more qualified package names of any <span +class="ecti-1000">old style </span>virtuals provided by this + package. See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax. + </dd><dt class="description"> +<span +class="ecbx-1000">RDEPEND</span> </dt><dd +class="description">See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a>. For some EAPIs, <span +class="ectt-1000">RDEPEND </span>has special behaviour for its value if + unset and when used with an eclass. See section <a +href="#x1-720008.3.2">8.3.2<!--tex4ht:ref: sec:rdepend-depend --></a> for details. + </dd><dt class="description"> +<span +class="ecbx-1000">RESTRICT</span> </dt><dd +class="description">Zero or more behaviour restrictions for this package. See section <a +href="#x1-890009.2.5">9.2.5<!--tex4ht:ref: sec:restrict --></a> for + value meanings and section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax. + </dd><dt class="description"> +<span +class="ecbx-1000">PROPERTIES</span> </dt><dd +class="description"><!--l. 88--><p class="noindent" > </p><!--l. 88--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">E</span><span +class="small-caps">S</span></span></span> Zero or more properties for this package. See section <a +href="#x1-900009.2.6">9.2.6<!--tex4ht:ref: sec:properties --></a> for value + meanings and section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax. For EAPIs listed in table <a +href="#x1-70001r2">8.2<!--tex4ht:ref: tab:properties-table --></a> as having optional + support, ebuilds must not rely upon the package manager recognising or understanding + this variable in any way. + </p></dd><dt class="description"> +<span +class="ecbx-1000">S</span> </dt><dd +class="description">The path to the temporary build directory, used by <span +class="ectt-1000">src_compile</span>, <span +class="ectt-1000">src_install </span>etc. + Defaults to <span +class="ectt-1000">${WORKDIR}/${P}</span>.</dd></dl> +<div class="table"> + + +<!--l. 96--><p class="noindent" ><a + id="x1-70001r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.2: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">PROPERTIES</span></span></div><!--tex4ht:label?: x1-70001r2 --> +<div class="tabular"> + <table id="TBL-4" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-4-1g"><col +id="TBL-4-1" /><col +id="TBL-4-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-4-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-4-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-4-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">PROPERTIES</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-4-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-2" +class="td11">Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-4-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-2" +class="td11">Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-4-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-2" +class="td11">Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-4-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-2" +class="td11">Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-4-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-4-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">8.3.1 </span> <a + id="x1-710008.3.1"></a>EAPI</h4> +<!--l. 114--><p class="noindent" >An empty or unset <span +class="ectt-1000">EAPI </span>value is equivalent to <span +class="ectt-1000">0</span>. Ebuilds must not assume that they will get a +particular one of these two values if they are expecting one of these two values. +</p><!--l. 117--><p class="noindent" >The package manager must either pre-set the <span +class="ectt-1000">EAPI </span>variable to <span +class="ectt-1000">0 </span>or ensure that it is unset before +sourcing the ebuild for metadata generation. When using the ebuild for other purposes, the +package manager must either pre-set <span +class="ectt-1000">EAPI </span>to the value specified by the ebuild’s metadata or ensure +that it is unset. +</p><!--l. 122--><p class="noindent" >If any of these variables are set to invalid values, the package manager’s behaviour is +undefined; ideally, an error in one ebuild should not prevent operations upon other ebuilds or +packages. +</p><!--l. 125--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.3.2 </span> <a + id="x1-720008.3.2"></a><span +class="ectt-1000">RDEPEND </span>value</h4> + <!--l. 128--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span></span></span></p><!--l. 128--><p class="noindent" >In EAPIs listed in table <a +href="#x1-72001r3">8.3<!--tex4ht:ref: tab:rdepend-depend-table --></a> as having <span +class="ectt-1000">RDEPEND=DEPEND</span>, if <span +class="ectt-1000">RDEPEND </span>is unset (but not if it is set to +an empty string) in an ebuild, the package manager must set its value to be equal to the value of +<span +class="ectt-1000">DEPEND</span>. +</p><!--l. 132--><p class="noindent" >When dealing with eclasses, only values set in the ebuild itself are considered for this behaviour; +any <span +class="ectt-1000">DEPEND </span>or <span +class="ectt-1000">RDEPEND </span>set in an eclass does not change the implicit <span +class="ectt-1000">RDEPEND=DEPEND</span> +for the ebuild portion, and any <span +class="ectt-1000">DEPEND </span>value set in an eclass does not get added to +<span +class="ectt-1000">RDEPEND</span>. +</p> +<div class="table"> + + +<!--l. 136--><p class="noindent" ><a + id="x1-72001r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.3: </span><span +class="content">EAPIs with <span +class="ectt-1000">RDEPEND=DEPEND </span>Default</span></div><!--tex4ht:label?: x1-72001r3 --> +<div class="tabular"> + <table id="TBL-5" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-5-1g"><col +id="TBL-5-1" /><col +id="TBL-5-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-5-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-5-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-5-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">RDEPEND=DEPEND</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-5-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-2" +class="td11">Yes </td></tr><tr + style="vertical-align:baseline;" id="TBL-5-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-2" +class="td11">Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">8.4 </span> <a + id="x1-730008.4"></a>Magic Ebuild-defined Variables</h3> +<!--l. 153--><p class="noindent" >The following variables must be defined by <span +class="ectt-1000">inherit </span>(see section <a +href="#x1-11300011.1">11.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"> +<span +class="ecbx-1000">ECLASS</span> </dt><dd +class="description">The current eclass, or unset if there is no current eclass. This is handled magically + by <span +class="ectt-1000">inherit </span>and must not be modified manually. + </dd><dt class="description"> +<span +class="ecbx-1000">INHERITED</span> </dt><dd +class="description">List of inherited eclass names. Again, this is handled magically by <span +class="ectt-1000">inherit</span>.</dd></dl> +<!--l. 162--><p class="noindent" ><span class="paragraphHead"><a + id="x1-740008.4"></a><span +class="ecbx-1000">Note:</span></span> +Thus, by extension of section <a +href="#x1-680008.1">8.1<!--tex4ht:ref: sec:metadata-invariance --></a>, <span +class="ectt-1000">inherit </span>may not be used conditionally, except upon constant +conditions. +</p><!--l. 165--><p class="noindent" >The following are special variables defined by the package manager for internal use and may or +may not be exported to the ebuild environment: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">DEFINED_PHASES</span> </dt><dd +class="description"><!--l. 169--><p class="noindent" > </p><!--l. 169--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">S</span></span></span> A space separated arbitrarily ordered list of phase names (e.g. + <span +class="ectt-1000">configure setup unpack</span>) whose phase functions are defined by the ebuild or an eclass + inherited by the ebuild. If no phase functions are defined, a single hyphen is used instead + of an empty string. For EAPIs listed in table <a +href="#x1-75001r4">8.4<!--tex4ht:ref: tab:defined-phases-table --></a> as having optional <span +class="ectt-1000">DEFINED_PHASES</span> + support, package managers may not rely upon the metadata cache having this variable + defined, and must treat an empty string as “this information is not available”.</p></dd></dl> +<!--l. 177--><p class="noindent" ><span class="paragraphHead"><a + id="x1-750008.4"></a><span +class="ecbx-1000">Note:</span></span> +Thus, by extension of section <a +href="#x1-680008.1">8.1<!--tex4ht:ref: sec:metadata-invariance --></a>, phase functions must not be defined based upon any variant +condition. +</p> +<div class="table"> + + +<!--l. 180--><p class="noindent" ><a + id="x1-75001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.4: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">DEFINED_PHASES</span></span></div><!--tex4ht:label?: x1-75001r4 --> +<div class="tabular"> + <table id="TBL-6" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-6-1g"><col +id="TBL-6-1" /><col +id="TBL-6-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-6-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-6-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-6-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">DEFINED_PHASES</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-6-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-2" +class="td11">Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-2" +class="td11">Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-2" +class="td11">Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-2" +class="td11">Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> + + + + + + +<h2 class="chapterHead"><span class="titlemark">Chapter 9</span><br /><a + id="x1-760009"></a>Dependencies</h2> +<h3 class="sectionHead"><span class="titlemark">9.1 </span> <a + id="x1-770009.1"></a>Dependency Classes</h3> +<!--l. 6--><p class="noindent" >There are three classes of dependencies supported by ebuilds: +</p><!--l. 9--><p class="noindent" > + </p><ul> + <li class="compactitem">Build dependencies (<span +class="ectt-1000">DEPEND</span>). These must be installed and usable before the ebuild is + installed. + </li> + <li class="compactitem">Runtime dependencies (<span +class="ectt-1000">RDEPEND</span>). These must be installed and usable before the ebuild + is treated as usable. + </li> + <li class="compactitem">Post dependencies (<span +class="ectt-1000">PDEPEND</span>). These must be installed at some point.</li></ul> +<!--l. 16--><p class="noindent" >In addition, <span +class="ectt-1000">SRC_URI</span>, <span +class="ectt-1000">HOMEPAGE</span>, <span +class="ectt-1000">PROVIDE</span>, <span +class="ectt-1000">RESTRICT</span>, <span +class="ectt-1000">PROPERTIES </span>and <span +class="ectt-1000">LICENSE </span>use +dependency-style specifications to specify their values. +</p><!--l. 19--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">9.2 </span> <a + id="x1-780009.2"></a>Dependency Specification Format</h3> +<!--l. 21--><p class="noindent" >The following elements are recognised in at least one class of specification. All elements +must be surrounded on both sides by whitespace, except at the start and end of the +string. +</p><!--l. 25--><p class="noindent" > + </p><ul> + <li class="compactitem">A package dependency specification. Permitted in <span +class="ectt-1000">DEPEND</span>, <span +class="ectt-1000">RDEPEND</span>, <span +class="ectt-1000">PDEPEND</span>. + </li> + <li class="compactitem">A simple qualified package name. Permitted in <span +class="ectt-1000">PROVIDE </span>(and inside <span +class="ectt-1000">DEPEND </span>etc via the + previous item). + </li> + <li class="compactitem">A URI, in the form <span +class="ectt-1000">proto://host/path</span>. Permitted in <span +class="ectt-1000">SRC_URI </span>and <span +class="ectt-1000">HOMEPAGE</span>. In + EAPIs listed in table <a +href="#x1-78001r1">9.1<!--tex4ht:ref: tab:uri-arrows-table --></a> as supporting <span +class="ectt-1000">SRC_URI </span>arrows, may optionally be followed + by whitespace, then <span +class="ectt-1000">-></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-910009.2.7">9.2.7<!--tex4ht:ref: sec:src-uri-behaviour --></a>. + </li> + <li class="compactitem">A flat filename. Permitted in <span +class="ectt-1000">SRC_URI</span>. + </li> + <li class="compactitem">A license name (e.g. <span +class="ectt-1000">GPL-2</span>). Permitted in <span +class="ectt-1000">LICENSE</span>. + </li> + <li class="compactitem">A simple string. Permitted in <span +class="ectt-1000">RESTRICT </span>and <span +class="ectt-1000">PROPERTIES</span>. + </li> + <li class="compactitem">An all-of group, which consists of an open parenthesis, followed by whitespace, + followed by zero or more of (a dependency item of any kind followed by whitespace), + followed by a close parenthesis. More formally: <span +class="ectt-1000">all-of ::= ’(’ whitespace (item</span> + <span +class="ectt-1000">whitespace)* ’)’</span>. Permitted in all specification style variables. + </li> + <li class="compactitem">An any-of group, which consists of the string <span +class="ectt-1000">||</span>, followed by whitespace, followed + by an open parenthesis, followed by whitespace, followed by zero or more of + (a dependency item of any kind followed by whitespace), followed by a close + parenthesis. More formally: <span +class="ectt-1000">any-of ::= ’||’ whitespace ’(’ whitespace (item</span> + <span +class="ectt-1000">whitespace)* ’)’</span>. Permitted in <span +class="ectt-1000">DEPEND</span>, <span +class="ectt-1000">RDEPEND</span>, <span +class="ectt-1000">PDEPEND</span>, <span +class="ectt-1000">LICENSE</span>. + + + </li> + <li class="compactitem">A use-conditional group, which consists of an optional exclamation mark, + followed by a use flag name, followed by a question mark, followed by + whitespace, followed by an open parenthesis, followed by whitespace, followed + by zero or more of (a dependency item of any kind followed by whitespace), + followed by a close parenthesis. More formally: <span +class="ectt-1000">use-conditional ::= ’!’?</span> + <span +class="ectt-1000">flag-name ’?’ whitespace ’(’ whitespace (item whitespace)* ’)’</span>. Permitted + in all specification style variables.</li></ul> +<!--l. 53--><p class="noindent" >In particular, note that whitespace is not optional. +</p> +<div class="table"> + + +<!--l. 55--><p class="noindent" ><a + id="x1-78001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.1: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">SRC_URI </span>arrows</span></div><!--tex4ht:label?: x1-78001r1 --> +<div class="tabular"> + <table id="TBL-7" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-7-1g"><col +id="TBL-7-1" /><col +id="TBL-7-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-7-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-7-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-7-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">SRC_URI </span><span +class="ecbx-1000">arrows?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-7-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-7-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">9.2.1 </span> <a + id="x1-790009.2.1"></a>All-of Dependency Specifications</h4> +<!--l. 72--><p class="noindent" >In an all-of group, all of the child elements must be matched. +</p><!--l. 74--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.2 </span> <a + id="x1-800009.2.2"></a>Use-conditional Dependency Specifications</h4> +<!--l. 76--><p class="noindent" >In a use-conditional group, if the associated use flag is enabled (or disabled if it has an exclamation +mark prefix), all of the child elements must be matched. +</p><!--l. 79--><p class="noindent" >It is an error for a flag to be used if it is not included in <span +class="ectt-1000">IUSE_EFFECTIVE </span>as described in +section <a +href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>. +</p><!--l. 82--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.3 </span> <a + id="x1-810009.2.3"></a>Any-of Dependency Specifications</h4> +<!--l. 84--><p class="noindent" >Any use-conditional group that is an immediate child of an any-of group, if not enabled (disabled +for an exclamation mark prefixed use flag name), is not considered a member of the any-of group +for match purposes. +</p><!--l. 88--><p class="noindent" >In an any-of group, at least one immediate child element must be matched. A blocker +is considered to be matched if its associated package dependency specification is not +matched. +</p><!--l. 91--><p class="noindent" >An empty any-of group counts as being matched. +</p><!--l. 93--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.4 </span> <a + id="x1-820009.2.4"></a>Package Dependency Specifications</h4> +<!--l. 95--><p class="noindent" >A package dependency can be in one of the following base formats. A package manager must warn +or error on non-compliant input. +</p><!--l. 99--><p class="noindent" > + </p><ul> + <li class="compactitem">A simple <span +class="ectt-1000">category/package </span>name. + </li> + <li class="compactitem">An operator, as + described in section <a +href="#x1-840009.2.4">9.2.4<!--tex4ht:ref: sec:dep-operator --></a>, followed immediately by <span +class="ectt-1000">category/package</span>, followed by a + hyphen, followed by a version specification.</li></ul> +<!--l. 104--><p class="noindent" >In EAPIs shown in table <a +href="#x1-83001r2">9.2<!--tex4ht:ref: tab:slot-deps-table --></a> as supporting <span +class="ectt-1000">SLOT </span>dependencies, either of the above formats may +additionally be suffixed by a <span +class="ectt-1000">:slot </span>restriction, as described in section <a +href="#x1-860009.2.4">9.2.4<!--tex4ht:ref: sec:slot-dep --></a>. A package manager +must warn or error if slot dependencies are used with an EAPI not supporting <span +class="ectt-1000">SLOT</span> +dependencies. + </p><!--l. 109--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span></span></span> + + +</p><!--l. 109--><p class="noindent" >In EAPIs shown in table <a +href="#x1-83002r3">9.3<!--tex4ht:ref: tab:use-deps-table --></a> as supporting 2-style or 4-style <span +class="ectt-1000">USE </span>dependencies, a specification may +additionally be suffixed by at most one 2-style or 4-style <span +class="ectt-1000">[use] </span>restriction, as described in +section <a +href="#x1-870009.2.4">9.2.4<!--tex4ht:ref: sec:use-dep --></a>. A package manager must warn or error if this feature is used with an EAPI not +supporting use dependencies. +</p> +<!--l. 114--><p class="noindent" ><span class="paragraphHead"><a + id="x1-830009.2.4"></a><span +class="ecbx-1000">Note:</span></span> +Order is important. The slot restriction must come before use dependencies. +</p> +<div class="table"> + + +<!--l. 116--><p class="noindent" ><a + id="x1-83001r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.2: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">SLOT </span>dependencies</span></div><!--tex4ht:label?: x1-83001r2 --> +<div class="tabular"> + <table id="TBL-8" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-8-1g"><col +id="TBL-8-1" /><col +id="TBL-8-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-8-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-8-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-8-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">SLOT </span><span +class="ecbx-1000">dependencies?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-8-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-8-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-2" +class="td11">Named only</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-8-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-2" +class="td11">Named only </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-8-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-2" +class="td11">Named only </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-8-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-2" +class="td11">Named and operator </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-8-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 131--><p class="noindent" ><a + id="x1-83002r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.3: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">USE </span>dependencies</span></div><!--tex4ht:label?: x1-83002r3 --> +<div class="tabular"> + <table id="TBL-9" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-9-1g"><col +id="TBL-9-1" /><col +id="TBL-9-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-9-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-9-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">USE </span><span +class="ecbx-1000">dependencies?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-9-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-9-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-9-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-2" +class="td11">2-style </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-9-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-2" +class="td11">2-style </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-9-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-2" +class="td11">4-style </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-9-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><a + id="x1-840009.2.4"></a>Operators</h5> +<!--l. 149--><p class="noindent" >The following operators are available: + </p><dl class="description"><dt class="description"> +<span +class="ectt-1000"><</span> </dt><dd +class="description">Strictly less than the specified version. + </dd><dt class="description"> +<span +class="ectt-1000"><=</span> </dt><dd +class="description">Less than or equal to the specified version. + </dd><dt class="description"> +<span +class="ectt-1000">=</span> </dt><dd +class="description">Exactly equal to the specified version. Special exception: if the version specified has an + asterisk immediately following it, a string prefix comparison is used instead. When an + asterisk is used, the specification must remain valid if the asterisk were removed. (An + asterisk used with any other operator is illegal.) + </dd><dt class="description"> +<span +class="ectt-1000">~</span> </dt><dd +class="description">Equal to the specified version, except the revision part of the matching package may be + greater than the revision part of the specified version (<span +class="ectt-1000">-r0 </span>is assumed if no revision is + explicitly stated). + </dd><dt class="description"> +<span +class="ectt-1000">>=</span> </dt><dd +class="description">Greater than or equal to the specified version. + </dd><dt class="description"> +<span +class="ectt-1000">></span> </dt><dd +class="description">Strictly greater than the specified version.</dd></dl> +<!--l. 165--><p class="noindent" > +</p> +<h5 class="subsubsectionHead"><a + id="x1-850009.2.4"></a>Block Operator</h5> +<!--l. 167--><p class="noindent" >If the specification is prefixed with one or two exclamation marks, the named dependency is a +block rather than a requirement—that is to say, the specified package must not be installed, with +the following exceptions: +</p><!--l. 172--><p class="noindent" > + </p><ul> + <li class="compactitem">Blocks on a package provided exclusively by the ebuild do not count. + </li> + <li class="compactitem">Blocks on the ebuild itself do not count.</li></ul> + <!--l. 176--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span>-<span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">T</span><span +class="small-caps">H</span></span></span></p><!--l. 176--><p class="noindent" >There are two strengths of block: weak and strong. A weak block may be ignored by the package +manager, so long as any blocked package will be uninstalled later on. A strong block must not be +ignored. The mapping from one or two exclamation marks to strength is described in +table <a +href="#x1-85001r4">9.4<!--tex4ht:ref: tab:bang-strength-table --></a>. +</p> +<div class="table"> + + +<!--l. 181--><p class="noindent" ><a + id="x1-85001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.4: </span><span +class="content">Exclamation mark strengths for EAPIs</span></div><!--tex4ht:label?: x1-85001r4 --> +<div class="tabular"> + <table id="TBL-10" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-10-1g"><col +id="TBL-10-1" /><col +id="TBL-10-2" /><col +id="TBL-10-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-10-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-10-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-10-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">!</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-10-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">!!</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-10-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-2" +class="td11">Unspecified</td><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-3" +class="td11">Forbidden</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-2" +class="td11">Unspecified</td><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-3" +class="td11">Forbidden</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-2" +class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-3" +class="td11">Strong </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-2" +class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-3" +class="td11">Strong </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-2" +class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-3" +class="td11">Strong </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-10-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><a + id="x1-860009.2.4"></a>Slot Dependencies</h5> + <!--l. 200--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">L</span><span +class="small-caps">O</span><span +class="small-caps">T</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span></span></span></p><!--l. 200--><p class="noindent" >A named slot dependency consists of a colon followed by a slot name. A specification with a named +slot dependency matches only if the slot of the matched package is equal to the slot specified. If the +slot of the package to match cannot be determined (e.g. because it is not a supported <span +class="ectt-1000">EAPI</span>), the +match is treated as unsuccessful. + </p><!--l. 205--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">L</span><span +class="small-caps">O</span><span +class="small-caps">T</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">A</span><span +class="small-caps">T</span><span +class="small-caps">O</span><span +class="small-caps">R</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span></span></span></p><!--l. 205--><p class="noindent" >An operator slot dependency consists of a colon followed by one of the following operators: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">*</span> </dt><dd +class="description">Indicates that any slot value is acceptable. In addition, for runtime dependencies, indicates + that the package will not break if the matched package is uninstalled and replaced by + a different matching package in a different slot. + </dd><dt class="description"> +<span +class="ecbx-1000">=</span> </dt><dd +class="description">Indicates that any slot value is acceptable. In addition, for runtime dependencies, indicates + that the package will break unless a matching package with slot equal to the slot of + the best installed version at the time the package was installed is available.</dd></dl> +<!--l. 217--><p class="noindent" >To implement the equals slot operator, the package manager will need to store the slot +of the best installed version of the matching package. The package manager may do +this by appending the appropriate slot after the equals sign when saving the package’s +dependencies. This syntax is only for package manager use and must not be used by +ebuilds. +</p><!--l. 222--><p class="noindent" > +</p> +<h5 class="subsubsectionHead"><a + id="x1-870009.2.4"></a>2-Style and 4-Style Use Dependencies</h5> +<!--l. 225--><p class="noindent" >A 2-style or 4-style use dependency consists of one of the following: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">[opt]</span> </dt><dd +class="description">The flag must be enabled. + </dd><dt class="description"> +<span +class="ecbx-1000">[opt=]</span> </dt><dd +class="description">The flag must be enabled if the flag is enabled for the package with the dependency, + or disabled otherwise. + </dd><dt class="description"> +<span +class="ecbx-1000">[!opt=]</span> </dt><dd +class="description">The flag must be disabled if the flag is enabled for the package with the dependency, + or enabled otherwise. + </dd><dt class="description"> +<span +class="ecbx-1000">[opt?]</span> </dt><dd +class="description">The flag must be enabled if the flag is enabled for the package with the dependency. + </dd><dt class="description"> +<span +class="ecbx-1000">[!opt?]</span> </dt><dd +class="description">The flag must be disabled if the use flag is disabled for the package with the + dependency. + </dd><dt class="description"> +<span +class="ecbx-1000">[-opt]</span> </dt><dd +class="description">The flag must be disabled.</dd></dl> + + +<!--l. 240--><p class="noindent" >Multiple requirements may be combined using commas, e.g. <span +class="ectt-1000">[first,-second,third?]</span>. +</p><!--l. 242--><p class="noindent" >When multiple requirements are specified, all must match for a successful match. + </p><!--l. 244--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span><span +class="small-caps">S</span></span></span></p><!--l. 244--><p class="noindent" >In a 4-style use dependency, the flag name may immediately be followed by a <span +class="ecti-1000">default </span>specified by +either <span +class="ectt-1000">(+) </span>or <span +class="ectt-1000">(-)</span>. The former indicates that, when applying the use dependency to a +package that does not have the flag in question in <span +class="ectt-1000">IUSE_REFERENCEABLE</span>, the package +manager shall behave as if the flag were present and enabled; the latter, present and +disabled. +</p><!--l. 250--><p class="noindent" >Unless a 4-style default is specified, it is an error for a use dependency to be applied to an ebuild +which does not have the flag in question in <span +class="ectt-1000">IUSE_REFERENCEABLE</span>. +</p> +<!--l. 253--><p class="noindent" ><span class="paragraphHead"><a + id="x1-880009.2.4"></a><span +class="ecbx-1000">Note:</span></span> +By extension of the above, a default that could reference an ebuild using an EAPI not supporting +profile <span +class="ectt-1000">IUSE </span>injections cannot rely upon any particular behaviour for flags that would not have to +be part of <span +class="ectt-1000">IUSE</span>. +</p><!--l. 257--><p class="noindent" >It is an error for an ebuild to use a conditional use dependency when that ebuild does not have the +flag in <span +class="ectt-1000">IUSE_EFFECTIVE</span>. +</p><!--l. 260--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.5 </span> <a + id="x1-890009.2.5"></a>Restrict</h4> +<!--l. 263--><p class="noindent" >The following tokens are permitted inside <span +class="ectt-1000">RESTRICT</span>: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">mirror</span> </dt><dd +class="description">The package’s <span +class="ectt-1000">SRC_URI </span>entries may not be mirrored, and mirrors should not be + checked when fetching. + </dd><dt class="description"> +<span +class="ecbx-1000">fetch</span> </dt><dd +class="description">The package’s <span +class="ectt-1000">SRC_URI </span>entries may not be downloaded automatically. If entries are + not available, <span +class="ectt-1000">pkg_nofetch </span>is called. + </dd><dt class="description"> +<span +class="ecbx-1000">strip</span> </dt><dd +class="description">No stripping of debug symbols from files to be installed may be performed. + </dd><dt class="description"> +<span +class="ecbx-1000">userpriv</span> </dt><dd +class="description">The package manager may not drop root privileges when building the package. + </dd><dt class="description"> +<span +class="ecbx-1000">test</span> </dt><dd +class="description">The <span +class="ectt-1000">src_test </span>phase must not be run. + </dd><dt class="description"> +<span +class="ecbx-1000">sandbox</span> </dt><dd +class="description">The <span +class="ectt-1000">sandbox </span>tool must not be used when building the package.</dd></dl> +<!--l. 276--><p class="noindent" >Package managers may recognise other tokens, but ebuilds may not rely upon them being +supported. +</p><!--l. 278--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.6 </span> <a + id="x1-900009.2.6"></a>Properties</h4> + + +<!--l. 281--><p class="noindent" >The following tokens are permitted inside <span +class="ectt-1000">PROPERTIES</span>: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">interactive</span> </dt><dd +class="description">The package may require interaction with the user via the tty.</dd></dl> +<!--l. 287--><p class="noindent" >Ebuilds may not rely upon any token being supported. +</p><!--l. 289--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.7 </span> <a + id="x1-910009.2.7"></a>SRC_URI</h4> +<!--l. 292--><p class="noindent" >All filename components that are enabled (i.e. not inside a use-conditional block that is not +matched) in <span +class="ectt-1000">SRC_URI </span>must be available in the <span +class="ectt-1000">DISTDIR </span>directory. In addition, these components +are used to make the <span +class="ectt-1000">A </span>and <span +class="ectt-1000">AA </span>variables. +</p><!--l. 296--><p class="noindent" >If a component contains a full URI with protocol, that download location must be used. Package +managers may also consult mirrors for their files. +</p><!--l. 299--><p class="noindent" >The special <span +class="ectt-1000">mirror:// </span>protocol must be supported. See section <a +href="#x1-360004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a> for mirror details. +</p><!--l. 302--><p class="noindent" >If a simple filename rather than a full URI is provided, the package manager can only use mirrors +to download the file. +</p><!--l. 305--><p class="noindent" >The <span +class="ectt-1000">RESTRICT </span>metadata key can be used to impose additional restrictions upon downloading—see +section <a +href="#x1-890009.2.5">9.2.5<!--tex4ht:ref: sec:restrict --></a> for details. + </p><!--l. 308--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">I</span>-<span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">W</span><span +class="small-caps">S</span></span></span></p><!--l. 308--><p class="noindent" >In EAPIs supporting arrows, if an arrow is used, the filename used when saving to <span +class="ectt-1000">DISTDIR </span>shall +instead be the name on the right of the arrow. When consulting mirrors (except for those explicitly +listed on the left of the arrow, if <span +class="ectt-1000">mirror:// </span>is used), the filename to the right of the arrow shall be +requested instead of the filename in the URI. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 10</span><br /><a + id="x1-9200010"></a>Ebuild-defined Functions</h2> +<h3 class="sectionHead"><span class="titlemark">10.1 </span> <a + id="x1-9300010.1"></a>List of Functions</h3> +<!--l. 7--><p class="noindent" >The following is a list of functions that an ebuild, or eclass, may define, and which will be called by +the package manager as part of the build and/or install process. In all cases the package manager +must provide a default implementation of these functions; unless otherwise stated this must be a +no-op. Most functions must assume only that they have write access to the package’s working +directory (the <span +class="ectt-1000">WORKDIR </span>environment variable; see section <a +href="#x1-117001r1">12.1<!--tex4ht:ref: env-var-WORKDIR --></a>), and the temporary directory +<span +class="ectt-1000">T</span>; exceptions are noted below. All functions may assume that they have read access +to all system libraries, binaries and configuration files that are accessible to normal +users. +</p><!--l. 16--><p class="noindent" >The environment for functions run outside of the build sequence (that is, <span +class="ectt-1000">pkg_config</span>, <span +class="ectt-1000">pkg_info</span>, +<span +class="ectt-1000">pkg_prerm </span>and <span +class="ectt-1000">pkg_postrm</span>) must be the environment used for the build of the package, not the +current configuration. +</p><!--l. 20--><p class="noindent" >Ebuilds must not call nor assume the existence of any phase functions. +</p><!--l. 22--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.1 </span> <a + id="x1-9400010.1.1"></a>Initial Working Directories</h4> +<!--l. 25--><p class="noindent" >Some functions may assume that their initial working directory is set to a particular location; these +are noted below. If no initial working directory is mandated, it may be set to anything and the +ebuild must not rely upon a particular location for it. The ebuild <span +class="ecti-1000">may </span>assume that the initial +working directory for any phase is a trusted location that may only be written to by a privileged +user and group. + </p><!--l. 31--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span>-<span +class="small-caps">W</span><span +class="small-caps">O</span><span +class="small-caps">R</span><span +class="small-caps">K</span><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">R</span>-<span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span></span></span></p><!--l. 31--><p class="noindent" >Some functions are described as having an initial working directory of <span +class="ectt-1000">S </span>with an error or fallback +to <span +class="ectt-1000">WORKDIR</span>. For EAPIs listed in table <a +href="#x1-94001r1">10.1<!--tex4ht:ref: tab:s-fallback-table --></a> as having the fallback, this means that if <span +class="ectt-1000">S </span>is not a +directory before the start of the phase function, the initial working directory shall be <span +class="ectt-1000">WORKDIR</span> +instead. For EAPIs where it is a conditional error, if <span +class="ectt-1000">S </span>is not a directory before the start of the +phase function, it is a fatal error, unless all of the following conditions are true, in which case the +fallback to <span +class="ectt-1000">WORKDIR </span>is used: +</p><!--l. 40--><p class="noindent" > + </p><ul> + <li class="compactitem">The <span +class="ectt-1000">A </span>variable contains no items. + </li> + <li class="compactitem">The phase function in question is not in <span +class="ectt-1000">DEFINED_PHASES</span>. + </li> + <li class="compactitem">None of the phase functions <span +class="ectt-1000">unpack</span>, <span +class="ectt-1000">prepare</span>, <span +class="ectt-1000">configure</span>, <span +class="ectt-1000">compile </span>or <span +class="ectt-1000">install</span>, if + supported by the EAPI in question and occurring prior to the phase about to be + executed, are in <span +class="ectt-1000">DEFINED_PHASES</span>.</li></ul> +<div class="table"> + + +<!--l. 47--><p class="noindent" ><a + id="x1-94001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.1: </span><span +class="content">EAPIs with <span +class="ectt-1000">S </span>to <span +class="ectt-1000">WORKDIR </span>fallbacks</span></div><!--tex4ht:label?: x1-94001r1 --> +<div class="tabular"> + <table id="TBL-11" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-11-1g"><col +id="TBL-11-1" /><col +id="TBL-11-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-11-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-11-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Fallback to </span><span +class="ectt-1000">WORKDIR </span><span +class="ecbx-1000">permitted?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-2" +class="td11">Always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-2" +class="td11">Always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-2" +class="td11">Always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-2" +class="td11">Always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-2" +class="td11">Conditional error </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.2 </span> <a + id="x1-9500010.1.2"></a>pkg_pretend</h4> + <!--l. 65--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">K</span><span +class="small-caps">G</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span></span></span></p><!--l. 65--><p class="noindent" >The <span +class="ectt-1000">pkg_pretend </span>function is only called for EAPIs listed in table <a +href="#x1-95001r2">10.2<!--tex4ht:ref: tab:pkg-pretend-table --></a> as supporting +it. +</p><!--l. 68--><p class="noindent" >The <span +class="ectt-1000">pkg_pretend </span>function may be used to carry out sanity checks early on in the install process. +For example, if an ebuild requires a particular kernel configuration, it may perform that check in +<span +class="ectt-1000">pkg_pretend </span>and call <span +class="ectt-1000">eerror </span>and then <span +class="ectt-1000">die </span>with appropriate messages if the requirement is not +met. +</p><!--l. 73--><p class="noindent" ><span +class="ectt-1000">pkg_pretend </span>is run separately from the main phase function sequence, and does not participate in +any kind of environment saving. There is no guarantee that any of an ebuild’s dependencies will be +met at this stage, and no guarantee that the system state will not have changed substantially +before the next phase is executed. +</p><!--l. 78--><p class="noindent" ><span +class="ectt-1000">pkg_pretend </span>must not write to the filesystem. +</p> +<div class="table"> + + +<!--l. 80--><p class="noindent" ><a + id="x1-95001r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.2: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">pkg_pretend</span></span></div><!--tex4ht:label?: x1-95001r2 --> +<div class="tabular"> + <table id="TBL-12" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-12-1g"><col +id="TBL-12-1" /><col +id="TBL-12-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-12-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-12-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">pkg_pretend</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.3 </span> <a + id="x1-9600010.1.3"></a>pkg_setup</h4> +<!--l. 97--><p class="noindent" >The <span +class="ectt-1000">pkg_setup </span>function sets up the ebuild’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. 101--><p class="noindent" ><span +class="ectt-1000">pkg_setup </span>must be run with full filesystem permissions, including the ability to add new users +and/or groups to the system. +</p><!--l. 104--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.4 </span> <a + id="x1-9700010.1.4"></a>src_unpack</h4> + <!--l. 107--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span></span></span></p><!--l. 107--><p class="noindent" >The <span +class="ectt-1000">src_unpack </span>function extracts all of the package’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. 111--><p class="noindent" >The initial working directory must be <span +class="ectt-1000">WORKDIR</span>, and the default implementation used when the +ebuild lacks the <span +class="ectt-1000">src_unpack </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-6"> +src_unpack() { + <br />    if [[ -n ${A} ]]; then + <br />        unpack ${A} + <br />    fi + <br />}</div> +<!--l. 120--><p class="nopar" > +</p><!--l. 122--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.5 </span> <a + id="x1-9800010.1.5"></a>src_prepare</h4> + <!--l. 125--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">E</span></span></span></p><!--l. 125--><p class="noindent" >The <span +class="ectt-1000">src_prepare </span>function is only called for EAPIs listed in table <a +href="#x1-98001r3">10.3<!--tex4ht:ref: tab:src-prepare-table --></a> as supporting +it. +</p><!--l. 128--><p class="noindent" >The <span +class="ectt-1000">src_prepare </span>function can be used for post-unpack source preparation. The default +implementation does nothing. +</p><!--l. 131--><p class="noindent" >The initial working directory is <span +class="ectt-1000">S</span>, with an error or fallback to <span +class="ectt-1000">WORKDIR </span>as discussed in +section <a +href="#x1-9400010.1.1">10.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. +</p> +<div class="table"> + + +<!--l. 134--><p class="noindent" ><a + id="x1-98001r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.3: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">src_prepare</span></span></div><!--tex4ht:label?: x1-98001r3 --> +<div class="tabular"> + <table id="TBL-13" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-13-1g"><col +id="TBL-13-1" /><col +id="TBL-13-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-13-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-13-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">src_prepare</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.6 </span> <a + id="x1-9900010.1.6"></a>src_configure</h4> + <!--l. 152--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">G</span><span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">E</span></span></span></p><!--l. 152--><p class="noindent" >The <span +class="ectt-1000">src_configure </span>function is only called for EAPIs listed in table <a +href="#x1-99001r4">10.4<!--tex4ht:ref: tab:src-configure-table --></a> as supporting +it. +</p><!--l. 155--><p class="noindent" >The initial working directory is <span +class="ectt-1000">S</span>, with an error or fallback to <span +class="ectt-1000">WORKDIR </span>as discussed in +section <a +href="#x1-9400010.1.1">10.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. +</p><!--l. 158--><p class="noindent" >The <span +class="ectt-1000">src_configure </span>function configures the package’s build environment. The default +implementation used when the ebuild lacks the <span +class="ectt-1000">src_configure </span>function shall behave +as: + + +</p> +<div class="verbatim" id="verbatim-7"> +src_configure() { + <br />    if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then + <br />        econf + <br />    fi + <br />}</div> +<!--l. 167--><p class="nopar" > +</p> +<div class="table"> + + +<!--l. 169--><p class="noindent" ><a + id="x1-99001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.4: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">src_configure</span></span></div><!--tex4ht:label?: x1-99001r4 --> +<div class="tabular"> + <table id="TBL-14" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-14-1g"><col +id="TBL-14-1" /><col +id="TBL-14-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-14-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-14-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">src_configure</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.7 </span> <a + id="x1-10000010.1.7"></a>src_compile</h4> + <!--l. 187--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span></span></span></p><!--l. 187--><p class="noindent" >The <span +class="ectt-1000">src_compile </span>function configures the package’s build environment in EAPIs lacking +<span +class="ectt-1000">src_configure</span>, and builds the package in all EAPIs. +</p><!--l. 190--><p class="noindent" >The initial working directory is <span +class="ectt-1000">S</span>, with an error or fallback to <span +class="ectt-1000">WORKDIR </span>as discussed in +section <a +href="#x1-9400010.1.1">10.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. + </p><!--l. 193--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-0</span></span></p><!--l. 193--><p class="noindent" >For EAPIs listed in table <a +href="#x1-100001r5">10.5<!--tex4ht:ref: tab:src-compile-table --></a> as using format 0, the default implementation used when the ebuild +lacks the <span +class="ectt-1000">src_compile </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-8"> +src_compile() { + <br />    if [[ -x ./configure ]]; then + <br />        econf + <br />    fi + <br />    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + <br />        emake || die "emake failed" + <br />    fi + <br />}</div> +<!--l. 206--><p class="nopar" > + </p><!--l. 208--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-1</span></span></p><!--l. 208--><p class="noindent" >For EAPIs listed in table <a +href="#x1-100001r5">10.5<!--tex4ht:ref: tab:src-compile-table --></a> as using format 1, the default implementation used when the ebuild +lacks the <span +class="ectt-1000">src_compile </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-9"> +src_compile() { + <br />    if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then + <br />        econf + <br />    fi + <br />    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + <br />        emake || die "emake failed" + <br />    fi + <br />}</div> +<!--l. 221--><p class="nopar" > + </p><!--l. 223--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-2</span></span></p><!--l. 223--><p class="noindent" >For EAPIs listed in table <a +href="#x1-100001r5">10.5<!--tex4ht:ref: tab:src-compile-table --></a> as using format 2, the default implementation used when the ebuild +lacks the <span +class="ectt-1000">src_compile </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-10"> +src_compile() { + <br />    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + <br />        emake || die "emake failed" + <br />    fi + <br />}</div> +<!--l. 233--><p class="nopar" > +</p> +<div class="table"> + + +<!--l. 235--><p class="noindent" ><a + id="x1-100001r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.5: </span><span +class="content"><span +class="ectt-1000">src_compile </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-100001r5 --> +<div class="tabular"> + <table id="TBL-15" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-15-1g"><col +id="TBL-15-1" /><col +id="TBL-15-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-15-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-15-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Format</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-2-2" +class="td11">0 </td></tr><tr + style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-3-2" +class="td11">1</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-4-2" +class="td11">2 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-5-2" +class="td11">2 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-6-2" +class="td11">2 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.8 </span> <a + id="x1-10100010.1.8"></a>src_test</h4> +<!--l. 253--><p class="noindent" >The <span +class="ectt-1000">src_test </span>function runs unit tests for the newly built but not yet installed package as +provided. +</p><!--l. 256--><p class="noindent" >The initial working directory must be <span +class="ectt-1000">S </span>if that exists, falling back to <span +class="ectt-1000">WORKDIR </span>otherwise. The +default implementation used when the ebuild lacks the <span +class="ectt-1000">src_test </span>function must, if tests are +enabled, run <span +class="ectt-1000">make check </span>if and only if such a target is available, or if not run <span +class="ectt-1000">make test</span>, if and +only such a target is available. In both cases, if make returns non-zero the build must be +aborted. +</p><!--l. 262--><p class="noindent" >The <span +class="ectt-1000">src_test </span>function may be disabled by <span +class="ectt-1000">RESTRICT</span>. See section <a +href="#x1-890009.2.5">9.2.5<!--tex4ht:ref: sec:restrict --></a>. +</p><!--l. 264--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.9 </span> <a + id="x1-10200010.1.9"></a>src_install</h4> + <!--l. 267--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span></span></span></p><!--l. 267--><p class="noindent" >The <span +class="ectt-1000">src_install </span>function installs the package’s content to a directory specified in +<span +class="ectt-1000">D</span>. +</p><!--l. 270--><p class="noindent" >The initial working directory is <span +class="ectt-1000">S</span>, with an error or fallback to <span +class="ectt-1000">WORKDIR </span>as discussed in +section <a +href="#x1-9400010.1.1">10.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. + </p><!--l. 273--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span>-4</span></span></p><!--l. 273--><p class="noindent" >For EAPIs listed in table <a +href="#x1-102001r6">10.6<!--tex4ht:ref: tab:src-install-table --></a> as using format 4, the default implementation used when the ebuild +lacks the <span +class="ectt-1000">src_install </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-11"> +src_install() { + <br />    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + <br />        emake DESTDIR="${D}" install + <br />    fi + <br /> + <br />    if ! declare -p DOCS >/dev/null 2>&1 ; then + <br />        local d + <br />        for d in README* ChangeLog AUTHORS NEWS TODO CHANGES \ + <br />                THANKS BUGS FAQ CREDITS CHANGELOG ; do + <br />            [[ -s "${d}" ]] && dodoc "${d}" + <br />        done + <br />    elif declare -p DOCS | grep -q ’^declare -a ’ ; then + <br />        dodoc "${DOCS[@]}" + <br />    else + <br />        dodoc ${DOCS} + <br />    fi + <br />}</div> +<!--l. 295--><p class="nopar" > +</p><!--l. 297--><p class="noindent" >For other EAPIs, the default implementation used when the ebuild lacks the <span +class="ectt-1000">src_install </span>function +is a no-op. +</p> +<div class="table"> + + +<!--l. 300--><p class="noindent" ><a + id="x1-102001r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.6: </span><span +class="content"><span +class="ectt-1000">src_install </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-102001r6 --> +<div class="tabular"> + <table id="TBL-16" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-16-1g"><col +id="TBL-16-1" /><col +id="TBL-16-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-16-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-16-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Format</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-2" +class="td11">no-op </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-2" +class="td11">no-op </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-2" +class="td11">no-op </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-2" +class="td11">no-op </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-6-2" +class="td11">4 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.10 </span> <a + id="x1-10300010.1.10"></a>pkg_preinst</h4> +<!--l. 318--><p class="noindent" >The <span +class="ectt-1000">pkg_preinst </span>function performs any special tasks that are required immediately before +merging the package to the live filesystem. It must not write outside of the directories specified by +the <span +class="ectt-1000">ROOT </span>and <span +class="ectt-1000">D </span>environment variables. +</p><!--l. 322--><p class="noindent" ><span +class="ectt-1000">pkg_preinst </span>must be run with full access to all files and directories below that specified by the +<span +class="ectt-1000">ROOT </span>and <span +class="ectt-1000">D </span>environment variables. +</p><!--l. 325--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.11 </span> <a + id="x1-10400010.1.11"></a>pkg_postinst</h4> +<!--l. 328--><p class="noindent" >The <span +class="ectt-1000">pkg_postinst </span>function performs any special tasks that are required immediately after +merging the package to the live filesystem. It must not write outside of the directory specified in +the <span +class="ectt-1000">ROOT </span>environment variable. +</p><!--l. 332--><p class="noindent" ><span +class="ectt-1000">pkg_postinst</span>, like, <span +class="ectt-1000">pkg_preinst</span>, must be run with full access to all files and directories below +that specified by the <span +class="ectt-1000">ROOT </span>environment variable. +</p><!--l. 335--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.12 </span> <a + id="x1-10500010.1.12"></a>pkg_prerm</h4> +<!--l. 338--><p class="noindent" >The <span +class="ectt-1000">pkg_prerm </span>function performs any special tasks that are required immediately before +unmerging the package from the live filesystem. It must not write outside of the directory specified +by the <span +class="ectt-1000">ROOT </span>environment variable. +</p><!--l. 342--><p class="noindent" ><span +class="ectt-1000">pkg_prerm </span>must be run with full access to all files and directories below that specified by the <span +class="ectt-1000">ROOT</span> +environment variable. +</p><!--l. 345--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.13 </span> <a + id="x1-10600010.1.13"></a>pkg_postrm</h4> +<!--l. 348--><p class="noindent" >The <span +class="ectt-1000">pkg_postrm </span>function performs any special tasks that are required immediately after +unmerging the package from the live filesystem. It must not write outside of the directory specified +by the <span +class="ectt-1000">ROOT </span>environment variable. +</p><!--l. 352--><p class="noindent" ><span +class="ectt-1000">pkg_postrm </span>must be run with full access to all files and directories below that specified by the +<span +class="ectt-1000">ROOT </span>environment variable. + + +</p><!--l. 355--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.14 </span> <a + id="x1-10700010.1.14"></a>pkg_config</h4> +<!--l. 358--><p class="noindent" >The <span +class="ectt-1000">pkg_config </span>function performs any custom steps required to configure a package after it has +been fully installed. It is the only ebuild function which may be interactive and prompt for user +input. +</p><!--l. 361--><p class="noindent" ><span +class="ectt-1000">pkg_config </span>must be run with full access to all files and directories inside of <span +class="ectt-1000">ROOT</span>. +</p><!--l. 363--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.15 </span> <a + id="x1-10800010.1.15"></a>pkg_info</h4> + <!--l. 366--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">K</span><span +class="small-caps">G</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">O</span></span></span></p><!--l. 366--><p class="noindent" >The <span +class="ectt-1000">pkg_info </span>function may be called by the package manager when displaying information about +an installed package. In EAPIs listed in table <a +href="#x1-108001r7">10.7<!--tex4ht:ref: tab:pkg-info-table --></a> as supporting <span +class="ectt-1000">pkg_info </span>on non-installed +packages, it may also be called by the package manager when displaying information about a +non-installed package. In this case, ebuild authors should note that dependencies may not be +installed. +</p><!--l. 372--><p class="noindent" ><span +class="ectt-1000">pkg_info </span>must not write to the filesystem. +</p> +<div class="table"> + + +<!--l. 374--><p class="noindent" ><a + id="x1-108001r7"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.7: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">pkg_info </span>on non-installed packages</span></div><!--tex4ht:label?: x1-108001r7 --> +<div class="tabular"> + <table id="TBL-17" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-17-1g"><col +id="TBL-17-1" /><col +id="TBL-17-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-17-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-17-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">pkg_info </span><span +class="ecbx-1000">on non-installed packages?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-4-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-5-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-17-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-17-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.16 </span> <a + id="x1-10900010.1.16"></a>pkg_nofetch</h4> +<!--l. 392--><p class="noindent" >The <span +class="ectt-1000">pkg_nofetch </span>function is run when the fetch phase of an fetch-restricted ebuild is run, +and the relevant source files are not available. It should direct the user to download all +relevant source files from their respective locations, with notes concerning licensing if +applicable. +</p><!--l. 396--><p class="noindent" ><span +class="ectt-1000">pkg_nofetch </span>must require no write access to any part of the filesystem. +</p><!--l. 398--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.17 </span> <a + id="x1-11000010.1.17"></a><span +class="ectt-1000">default_ </span>Phase Functions</h4> + <!--l. 401--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span><span +class="small-caps">S</span></span></span></p><!--l. 401--><p class="noindent" >In EAPIs listed in table <a +href="#x1-110001r8">10.8<!--tex4ht:ref: tab:default-phase-function-table --></a> as supporting <span +class="ectt-1000">default_ </span>phase functions, a function named +<span +class="ectt-1000">default_</span>(phase) that behaves as the default implementation for that EAPI shall be defined when +executing any ebuild phase listed in the table. Ebuilds must not call these functions except when in +the phase in question. +</p> +<div class="table"> + + +<!--l. 407--><p class="noindent" ><a + id="x1-110001r8"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.8: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">default_ </span>phase functions</span></div><!--tex4ht:label?: x1-110001r8 --> +<div class="tabular"> + <table id="TBL-18" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-18-1g"><col +id="TBL-18-1" /><col +id="TBL-18-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-18-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-18-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">default_ </span><span +class="ecbx-1000">functions in phases</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-2-2" +class="td11">None </td></tr><tr + style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-3-2" +class="td11">None</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-4-2" +class="td11"><span +class="ectt-1000">pkg_nofetch</span>, <span +class="ectt-1000">src_unpack</span>, <span +class="ectt-1000">src_prepare</span>, +<span +class="ectt-1000">src_configure</span>, <span +class="ectt-1000">src_compile</span>, <span +class="ectt-1000">src_test</span> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-5-2" +class="td11"><span +class="ectt-1000">pkg_nofetch</span>, <span +class="ectt-1000">src_unpack</span>, <span +class="ectt-1000">src_prepare</span>, +<span +class="ectt-1000">src_configure</span>, <span +class="ectt-1000">src_compile</span>, <span +class="ectt-1000">src_test</span> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-6-2" +class="td11"><span +class="ectt-1000">pkg_nofetch</span>, <span +class="ectt-1000">src_unpack</span>, <span +class="ectt-1000">src_prepare</span>, +<span +class="ectt-1000">src_configure</span>, <span +class="ectt-1000">src_compile</span>, <span +class="ectt-1000">src_install</span>, +<span +class="ectt-1000">src_test</span> </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-18-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">10.2 </span> <a + id="x1-11100010.2"></a>Call Order</h3> +<!--l. 427--><p class="noindent" >The call order for installing a package is: +</p><!--l. 430--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend </span>(only for EAPIs listed in table <a +href="#x1-95001r2">10.2<!--tex4ht:ref: tab:pkg-pretend-table --></a>), which is called outside of the normal + call order process. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_setup</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_unpack</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_prepare </span>(only for EAPIs listed in table <a +href="#x1-98001r3">10.3<!--tex4ht:ref: tab:src-prepare-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure </span>(only for EAPIs listed in table <a +href="#x1-99001r4">10.4<!--tex4ht:ref: tab:src-configure-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_compile</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_test </span>(except if <span +class="ectt-1000">RESTRICT=test</span>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_install</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_preinst</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_postinst</span></li></ul> +<!--l. 443--><p class="noindent" >The call order for uninstalling a package is: +</p><!--l. 446--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">pkg_prerm</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_postrm</span></li></ul> +<!--l. 450--><p class="noindent" >The call order for reinstalling a package is: +</p><!--l. 453--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend </span>(only for EAPIs listed in table <a +href="#x1-95001r2">10.2<!--tex4ht:ref: tab:pkg-pretend-table --></a>), which is called outside of the normal + call order process. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_setup</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_unpack</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_prepare </span>(only for EAPIs listed in table <a +href="#x1-98001r3">10.3<!--tex4ht:ref: tab:src-prepare-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure </span>(only for EAPIs listed in table <a +href="#x1-99001r4">10.4<!--tex4ht:ref: tab:src-configure-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_compile</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_test </span>(except if <span +class="ectt-1000">RESTRICT=test</span>) + + + </li> + <li class="compactitem"><span +class="ectt-1000">src_install</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_preinst</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_prerm </span>for the package being replaced + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_postrm </span>for the package being replaced + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_postinst</span></li></ul> +<!--l. 468--><p class="noindent" >The call order for upgrading or downgrading a package is: +</p><!--l. 471--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend </span>(only for EAPIs listed in table <a +href="#x1-95001r2">10.2<!--tex4ht:ref: tab:pkg-pretend-table --></a>), which is called outside of the normal + call order process. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_setup</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_unpack</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_prepare </span>(only for EAPIs listed in table <a +href="#x1-98001r3">10.3<!--tex4ht:ref: tab:src-prepare-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure </span>(only for EAPIs listed in table <a +href="#x1-99001r4">10.4<!--tex4ht:ref: tab:src-configure-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_compile</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_test </span>(except if <span +class="ectt-1000">RESTRICT=test</span>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_install</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_preinst</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_postinst</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_prerm </span>for the package being replaced + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_postrm </span>for the package being replaced</li></ul> +<!--l. 486--><p class="noindent" >The <span +class="ectt-1000">pkg_config</span>, <span +class="ectt-1000">pkg_info </span>and <span +class="ectt-1000">pkg_nofetch </span>functions are not called in a normal sequence. The +<span +class="ectt-1000">pkg_pretend </span>function is called some unspecified time before a (possibly hypothetical) normal +sequence. +</p><!--l. 490--><p class="noindent" >For installing binary packages, the <span +class="ectt-1000">src </span>phases are not called. +</p><!--l. 492--><p class="noindent" >When building binary packages that are not to be installed locally, the <span +class="ectt-1000">pkg_preinst </span>and +<span +class="ectt-1000">pkg_postinst </span>functions are not called. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 11</span><br /><a + id="x1-11200011"></a>Eclasses</h2> +<!--l. 4--><p class="noindent" >Eclasses serve to store common code that is used by more than one ebuild, which greatly aids +maintainability and reduces the tree size. However, due to metadata cache issues, care must be +taken in their use. In format they are similar to an ebuild, and indeed are sourced as part of any +ebuild using them. The interpreter is therefore the same, and the same requirements for being +parseable hold. +</p><!--l. 10--><p class="noindent" >Eclasses must be located in the <span +class="ectt-1000">eclass </span>directory in the top level of the repository—see section <a +href="#x1-400004.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">11.1 </span> <a + id="x1-11300011.1"></a>The inherit command</h3> +<!--l. 17--><p class="noindent" >An ebuild wishing to make use of an eclass does so by using the <span +class="ectt-1000">inherit </span>command in global scope. +This will cause the eclass to be sourced as part of the ebuild—any function or variable definitions +in the eclass will appear as part of the ebuild, with exceptions for certain metadata variables, as +described below. +</p><!--l. 22--><p class="noindent" >The <span +class="ectt-1000">inherit </span>command takes one or more parameters, which must be the names of eclasses +(excluding the <span +class="ectt-1000">.eclass </span>suffix and the path). For each parameter, in order, the named eclass is +sourced. +</p><!--l. 25--><p class="noindent" >Eclasses may end up being sourced multiple times. +</p><!--l. 27--><p class="noindent" >The <span +class="ectt-1000">inherit </span>command must also ensure that: +</p><!--l. 30--><p class="noindent" > + </p><ul> + <li class="compactitem">The <span +class="ectt-1000">ECLASS </span>variable is set to the name of the current eclass, when sourcing that eclass. + </li> + <li class="compactitem">Once all inheriting has been done, the <span +class="ectt-1000">INHERITED </span>metadata variable contains the name + of every eclass used, separated by whitespace.</li></ul> +<!--l. 35--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">11.2 </span> <a + id="x1-11400011.2"></a>Eclass-defined Metadata Keys</h3> +<!--l. 37--><p class="noindent" >The <span +class="ectt-1000">IUSE</span>, <span +class="ectt-1000">DEPEND</span>, <span +class="ectt-1000">RDEPEND </span>and <span +class="ectt-1000">PDEPEND </span>variables are handled specially when set by an eclass. +They must be accumulated across eclasses, appending the value set by each eclass to the resulting +value after the previous one is loaded. Then the eclass-defined value is appended to that defined by +the ebuild. In the case of <span +class="ectt-1000">RDEPEND</span>, this is done after the implicit <span +class="ectt-1000">RDEPEND </span>rules in section <a +href="#x1-720008.3.2">8.3.2<!--tex4ht:ref: sec:rdepend-depend --></a> are +applied. +</p><!--l. 43--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">11.3 </span> <a + id="x1-11500011.3"></a>EXPORT_FUNCTIONS</h3> +<!--l. 45--><p class="noindent" >There is one command available in the eclass environment that is neither available nor meaningful +in ebuilds—<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-115001r1">11.1<!--tex4ht:ref: lst:export-functions --></a> and is a snippet from a hypothetical <span +class="ectt-1000">foo.eclass</span>. + + +</p><!--l. 52--><p class="noindent" ><a + id="x1-115001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 11.1: </span><span +class="content">EXPORT_FUNCTIONS example: foo.eclass</span></div><!--tex4ht:label?: x1-115001r1 --> + + +<div class="verbatim" id="verbatim-12"> +foo_src_compile() + <br />{ + <br />    econf --enable-gerbil \ + <br />            $(use_enable fnord) + <br />    emake gerbil || die "Couldn’t make a gerbil" + <br />    emake || die "emake failed" + <br />} + <br /> + <br />EXPORT_FUNCTIONS src_compile + <br />  </div> +<!--l. 63--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> +<!--l. 66--><p class="noindent" >This example defines an eclass <span +class="ectt-1000">src_compile </span>function and uses <span +class="ectt-1000">EXPORT_FUNCTIONS </span>to alias it. +Then any ebuild that inherits <span +class="ectt-1000">foo.eclass </span>will have a default <span +class="ectt-1000">src_compile </span>defined, but +should the author wish to override it he can access the function in <span +class="ectt-1000">foo.eclass </span>by calling +<span +class="ectt-1000">foo_src_compile</span>. +</p><!--l. 71--><p class="noindent" ><span +class="ectt-1000">EXPORT_FUNCTIONS </span>must only be used on ebuild phase functions. The function that is aliased +must be named <span +class="ectt-1000">eclassname_phasefunctionname</span>, where <span +class="ectt-1000">eclassname </span>is the name of the +eclass. +</p><!--l. 74--><p class="noindent" ><span +class="ectt-1000">EXPORT_FUNCTIONS </span>must be used at most once per eclass. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 12</span><br /><a + id="x1-11600012"></a>The Ebuild Environment</h2> +<h3 class="sectionHead"><span class="titlemark">12.1 </span> <a + id="x1-11700012.1"></a>Defined Variables</h3> +<!--l. 4--><p class="noindent" >The package manager must define the following environment variables. Not all variables are +meaningful in all phases; variables that are not meaningful in a given phase may be unset or set to +any value. Ebuilds must not attempt to modify any of these variables, unless otherwise +specified. +</p><!--l. 8--><p class="noindent" >Because of their special meanings, these variables may not be preserved consistently across all +phases as would normally happen due to environment saving (see <a +href="#x1-12100012.2">12.2<!--tex4ht:ref: sec:ebuild-env-state --></a>). For example, +<span +class="ectt-1000">EBUILD_PHASE </span>is different for every phase, and <span +class="ectt-1000">ROOT </span>may have changed between the various +different <span +class="ectt-1000">pkg_* </span>phases. Ebuilds must recalculate any variable they derive from an inconsistent +variable. + + + <a + id="x1-117001r1"></a> +</p><!--l. 16--><div class="longtable"> <table id="TBL-19" class="longtable" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-19-1g"><col +id="TBL-19-1" /><col +id="TBL-19-2" /><col +id="TBL-19-3" /><col +id="TBL-19-4" /></colgroup> +<tr + style="vertical-align:baseline;" id="TBL-19-1-"><td colspan="4" style="white-space:nowrap; text-align:center;" id="TBL-19-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"> <div class="caption" +><span class="id">Table 12.1: </span><span +class="content">Defined variables</span></div><!--tex4ht:label?: x1-117001r1 --> </div><a + id="x1-117002"></a> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-19-2-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-19-2-1" +class="td11"><!--cmidrule--> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-19-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-19-3-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Variable</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-19-3-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Legal in</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-19-3-3" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Consistent?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-19-3-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Description</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-19-4-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-19-4-1" +class="td11"><!--cmidrule--> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-5-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-19-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-1" +class="td11"></td><td style="white-space:wrap; text-align:left;" id="TBL-19-6-2" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-3" +class="td11"> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-6-4" +class="td11"> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-19-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-18-1" +class="td11"><span +class="ectt-1000">P </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-18-2" +class="td11"> +<!--l. 36--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-18-3" +class="td11">No<span class="footnote-mark"><a +href="pms3.html#fn1x13"><sup class="textsuperscript">1</sup></a></span><a + id="x1-117003f1"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-18-4" +class="td11"> +<!--l. 38--><p class="noindent" >Package name and version, without the +revision part. For example, <span +class="ectt-1000">vim-7.0.174</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-19-1" +class="td11"><span +class="ectt-1000">PN </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-19-2" +class="td11"> +<!--l. 40--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-19-3" +class="td11">ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-19-19-4" +class="td11"> +<!--l. 42--><p class="noindent" >Package name, for example <span +class="ectt-1000">vim</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-20-1" +class="td11"><span +class="ectt-1000">CATEGORY </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-20-2" +class="td11"> +<!--l. 44--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-20-3" +class="td11">ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-19-20-4" +class="td11"> +<!--l. 46--><p class="noindent" >The package’s category, for example +<span +class="ectt-1000">app-editors</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-21-1" +class="td11"><span +class="ectt-1000">PV </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-21-2" +class="td11"> +<!--l. 48--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-21-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-21-4" +class="td11"> +<!--l. 50--><p class="noindent" >Package version, with no revision. For example +<span +class="ectt-1000">7.0.174</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-22-1" +class="td11"><span +class="ectt-1000">PR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-22-2" +class="td11"> +<!--l. 52--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-22-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-22-4" +class="td11"> +<!--l. 54--><p class="noindent" >Package revision, or <span +class="ectt-1000">r0 </span>if none exists. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-23-1" +class="td11"><span +class="ectt-1000">PVR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-23-2" +class="td11"> +<!--l. 56--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-23-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-23-4" +class="td11"> +<!--l. 58--><p class="noindent" >Package version and revision (if any), for +example <span +class="ectt-1000">7.0.174 </span>or <span +class="ectt-1000">7.0.174-r1</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-24-1" +class="td11"><span +class="ectt-1000">PF </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-24-2" +class="td11"> +<!--l. 60--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-24-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-24-4" +class="td11"> +<!--l. 62--><p class="noindent" >Package name, version, and revision (if any), +for example <span +class="ectt-1000">vim-7.0.174-r1</span>. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-19-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-25-1" +class="td11"><span +class="ectt-1000">A </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-25-2" +class="td11"> +<!--l. 64--><p class="noindent" ><span +class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-25-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-25-4" +class="td11"> +<!--l. 66--><p class="noindent" >All source files available for the package, +whitespace separated with no leading or +trailing whitespace, and in the order in which +the item first appears in a matched component +of <span +class="ectt-1000">SRC_URI</span>. Does not include any that are +disabled because of USE conditionals. The +value is calculated from the base names of +each element of the <span +class="ectt-1000">SRC_URI </span>ebuild metadata +variable. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-26-1" +class="td11"><span +class="ectt-1000">AA</span><span class="footnote-mark"><a +href="pms4.html#fn2x13"><sup class="textsuperscript">2</sup></a></span><a + id="x1-117004f2"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-26-2" +class="td11"> +<!--l. 74--><p class="noindent" ><span +class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-26-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-26-4" +class="td11"><!--l. 76--><p class="noindent" > +<span class="fbox"><span +class="eccc-1000"><span +class="small-caps">A</span><span +class="small-caps">A</span></span> </span></p><!--l. 76--><p class="noindent" >All source files that could be available for +the package, including any that are disabled +in <span +class="ectt-1000">A </span>because of USE conditionals. The value +is calculated from the base names of each +element of the <span +class="ectt-1000">SRC_URI </span>ebuild metadata +variable. Only for EAPIs listed in table <a +href="#x1-117008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> +as supporting <span +class="ectt-1000">AA</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-27-1" +class="td11"><span +class="ectt-1000">FILESDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-27-2" +class="td11"> +<!--l. 81--><p class="noindent" ><span +class="ectt-1000">src_*</span><span class="footnote-mark"><a +href="pms5.html#fn3x13"><sup class="textsuperscript">3</sup></a></span> <a + id="x1-117005f3"></a> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-27-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-27-4" +class="td11"> +<!--l. 83--><p class="noindent" >The full path to the package’s files directory, +used for small support files or patches. See +section <a +href="#x1-330004.3">4.3<!--tex4ht:ref: sec:package-dirs --></a>. May or may not exist; if a +repository provides no support files for the +package in question then an ebuild must be +prepared for the situation where <span +class="ectt-1000">FILESDIR</span> +points to a non-existent directory. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-28-1" +class="td11"><span +class="ectt-1000">PORTDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-28-2" +class="td11"> +<!--l. 88--><p class="noindent" >ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-28-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-28-4" +class="td11"> +<!--l. 90--><p class="noindent" >The full path to the master repository’s base +directory. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-29-1" +class="td11"><span +class="ectt-1000">DISTDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-29-2" +class="td11"> +<!--l. 92--><p class="noindent" >ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-29-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-29-4" +class="td11"> +<!--l. 94--><p class="noindent" >The full path to the directory in which the files +in the <span +class="ectt-1000">A </span>variable are stored. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-19-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-30-1" +class="td11"><span +class="ectt-1000">ECLASSDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-30-2" +class="td11"> +<!--l. 96--><p class="noindent" >ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-30-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-30-4" +class="td11"> +<!--l. 98--><p class="noindent" >The full path to the master repository’s eclass +directory. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-31-1" +class="td11"><span +class="ectt-1000">ROOT </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-31-2" +class="td11"> +<!--l. 100--><p class="noindent" ><span +class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-31-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-31-4" +class="td11"> +<!--l. 102--><p class="noindent" >The absolute path to the root directory into +which the package is to be merged. Phases +which run with full filesystem access must not +touch any files outside of the directory given in +<span +class="ectt-1000">ROOT</span>. Also of note is that in a cross-compiling +environment, binaries inside of <span +class="ectt-1000">ROOT </span>will not +be executable on the build machine, so ebuilds +must not call them. <span +class="ectt-1000">ROOT </span>must be non-empty +and end in a trailing slash. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-32-1" +class="td11"><span +class="ectt-1000">EROOT </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-32-2" +class="td11"> +<!--l. 108--><p class="noindent" ><span +class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-32-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-32-4" +class="td11"> +<!--l. 110--><p class="noindent" >Like <span +class="ectt-1000">ROOT</span>, but with <span +class="ectt-1000">EPREFIX </span>appended. This +is a convenience variable. See also the <span +class="ectt-1000">EPREFIX</span> +variable. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-33-1" +class="td11"><span +class="ectt-1000">T </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-33-2" +class="td11"> +<!--l. 113--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-33-3" +class="td11">Partially<span class="footnote-mark"><a +href="pms6.html#fn4x13"><sup class="textsuperscript">4</sup></a></span><a + id="x1-117006f4"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-33-4" +class="td11"> +<!--l. 117--><p class="noindent" >The full path to a temporary directory for use +by the ebuild. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-34-1" +class="td11"><span +class="ectt-1000">TMPDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-34-2" +class="td11"> +<!--l. 119--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-34-3" +class="td11">Ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-19-34-4" +class="td11"> +<!--l. 121--><p class="noindent" >Must be set to the location of a usable +temporary directory, for any applications +called by an ebuild. Must not be used by +ebuilds directly; see <span +class="ectt-1000">T </span>above. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-35-1" +class="td11"><span +class="ectt-1000">HOME </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-35-2" +class="td11"> +<!--l. 124--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-35-3" +class="td11">Ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-19-35-4" +class="td11"> +<!--l. 126--><p class="noindent" >The full path to an appropriate temporary +directory for use by any programs invoked by +the ebuild that may read or modify the home +directory. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-19-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-36-1" +class="td11"><span +class="ectt-1000">EPREFIX </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-36-2" +class="td11"> +<!--l. 129--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-36-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-36-4" +class="td11"> +<!--l. 131--><p class="noindent" >The normalised offset-prefix path of an offset +installation. When <span +class="ectt-1000">EPREFIX </span>is not set in +the calling environment, <span +class="ectt-1000">EPREFIX </span>defaults to +the built-in offset-prefix that was set during +installation of the package manager. When +a different <span +class="ectt-1000">EPREFIX </span>value than the built-in +value is set in the calling environment, a +cross-prefix build is performed where using the +existing utilities, a package is built for the +given <span +class="ectt-1000">EPREFIX</span>, akin to <span +class="ectt-1000">ROOT</span>. See also <a +href="#x1-12000012.1.3">12.1.3<!--tex4ht:ref: sec:offset-vars --></a>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-37-1" +class="td11"><span +class="ectt-1000">D </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-37-2" +class="td11"> +<!--l. 137--><p class="noindent" ><span +class="ectt-1000">src_install</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-37-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-37-4" +class="td11"> +<!--l. 139--><p class="noindent" >Contains the full path to the image directory +into which the package should be installed. +Must be non-empty and end in a trailing slash.</p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-38-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-19-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-39-1" +class="td11"><span +class="ectt-1000">D </span>(continued) </td><td style="white-space:wrap; text-align:left;" id="TBL-19-39-2" +class="td11"> +<!--l. 142--><p class="noindent" ><span +class="ectt-1000">pkg_preinst</span>, +<span +class="ectt-1000">pkg_postinst</span> </p> </td> <td style="white-space:nowrap; text-align:left;" id="TBL-19-39-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-39-4" +class="td11"> +<!--l. 144--><p class="noindent" >Contains the full path to the image that is +about to be or has just been merged. Must be +non-empty and end in a trailing slash. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-40-1" +class="td11"><span +class="ectt-1000">ED </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-40-2" +class="td11"> +<!--l. 147--><p class="noindent" ><span +class="ectt-1000">src_install</span></p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-40-3" +class="td11">See <span +class="ectt-1000">D</span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-40-4" +class="td11"> +<!--l. 149--><p class="noindent" >Like <span +class="ectt-1000">D</span>, but with <span +class="ectt-1000">EPREFIX </span>appended. This is +a convenience variable. See also the <span +class="ectt-1000">EPREFIX</span> +variable. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-41-1" +class="td11"><span +class="ectt-1000">IMAGE</span><span class="footnote-mark"><a +href="pms7.html#fn5x13"><sup class="textsuperscript">5</sup></a></span><a + id="x1-117007f5"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-19-41-2" +class="td11"> +<!--l. 152--><p class="noindent" ><span +class="ectt-1000">pkg_preinst</span>, +<span +class="ectt-1000">pkg_postinst</span> </p> </td> <td style="white-space:nowrap; text-align:left;" id="TBL-19-41-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-41-4" +class="td11"> +<!--l. 154--><p class="noindent" >Equal to <span +class="ectt-1000">D</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-42-1" +class="td11"><span +class="ectt-1000">INSDESTTREE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-42-2" +class="td11"> +<!--l. 156--><p class="noindent" ><span +class="ectt-1000">src_install</span></p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-42-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-42-4" +class="td11"> +<!--l. 158--><p class="noindent" >Controls the location where doins installs +things. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-19-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-43-1" +class="td11"><span +class="ectt-1000">USE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-43-2" +class="td11"> +<!--l. 160--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-43-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-43-4" +class="td11"> +<!--l. 162--><p class="noindent" >A whitespace-delimited list of all active USE +flags for this ebuild. See section <a +href="#x1-11800012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for +details. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-44-1" +class="td11"><span +class="ectt-1000">EBUILD_PHASE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-44-2" +class="td11"> +<!--l. 165--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-44-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-19-44-4" +class="td11"> +<!--l. 167--><p class="noindent" >Takes +one of the values <span +class="ectt-1000">config</span>, <span +class="ectt-1000">setup</span>, <span +class="ectt-1000">nofetch</span>, +<span +class="ectt-1000">unpack</span>, <span +class="ectt-1000">prepare</span>, <span +class="ectt-1000">configure</span>, <span +class="ectt-1000">compile</span>, <span +class="ectt-1000">test</span>, +<span +class="ectt-1000">install</span>, <span +class="ectt-1000">preinst</span>, <span +class="ectt-1000">postinst</span>, <span +class="ectt-1000">prerm</span>, <span +class="ectt-1000">postrm</span>, +<span +class="ectt-1000">info</span>, <span +class="ectt-1000">pretend </span>according to the top level +ebuild function that was executed by the +package manager. May be unset or any single +word that is not any of the above when +the ebuild is being sourced for other (e.g. +metadata or QA) purposes. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-45-1" +class="td11"><span +class="ectt-1000">WORKDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-45-2" +class="td11"> +<!--l. 173--><p class="noindent" ><span +class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-45-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-45-4" +class="td11"> +<!--l. 175--><p class="noindent" >The full path to the ebuild’s working directory, +in which all build data should be contained. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-46-1" +class="td11"><span +class="ectt-1000">KV </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-46-2" +class="td11"> +<!--l. 178--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-46-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-46-4" +class="td11"><!--l. 180--><p class="noindent" > +<span class="fbox"><span +class="eccc-1000"><span +class="small-caps">K</span><span +class="small-caps">V</span></span> </span></p><!--l. 180--><p class="noindent" >The version of the running kernel at the time +the ebuild was first executed, as returned by +the <span +class="ectt-1000">uname</span><span +class="ectt-1000"> -r </span>command or equivalent. May be +modified by ebuilds. Only for EAPIs listed in +table <a +href="#x1-117008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as supporting <span +class="ectt-1000">KV</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-47-1" +class="td11"><span +class="ectt-1000">REPLACING_VERSIONS </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-47-2" +class="td11"> +<!--l. 184--><p class="noindent" ><span +class="ectt-1000">pkg_* </span>(see +text) </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-47-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-47-4" +class="td11"> +<!--l. 186--><p class="noindent" >A whitespace-separated list of versions of this +package (including revision, if specified) that +are being replaced (uninstalled or overwritten) +as a result of this install. See section <a +href="#x1-11900012.1.2">12.1.2<!--tex4ht:ref: sec:replacing-versions --></a>. +Only for EAPIs listed in table <a +href="#x1-117008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as +supporting <span +class="ectt-1000">REPLACING_VERSIONS</span>. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-19-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-48-1" +class="td11"><span +class="ectt-1000">REPLACED_BY_VERSION </span></td><td style="white-space:wrap; text-align:left;" id="TBL-19-48-2" +class="td11"> +<!--l. 191--><p class="noindent" ><span +class="ectt-1000">pkg_prerm</span>, +<span +class="ectt-1000">pkg_postrm</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-48-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-19-48-4" +class="td11"> +<!--l. 193--><p class="noindent" >The single version of this package (including +revision, if specified) that is replacing us, if we +are being uninstalled as part of an install, or +an empty string otherwise. See section <a +href="#x1-11900012.1.2">12.1.2<!--tex4ht:ref: sec:replacing-versions --></a>. +Only for EAPIs listed in table <a +href="#x1-117008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as +supporting <span +class="ectt-1000">REPLACED_BY_VERSION</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-49-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-19-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-50-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-51-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-19-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-52-1" +class="td11"></td> +</tr> +<tr + style="vertical-align:baseline;" id="TBL-19-15-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-19-15-1" +class="td11"><!--cmidrule--></td></tr><tr + style="vertical-align:baseline;" id="TBL-19-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-16-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-17-1" +class="td11"></td></tr> +</table></div> + + + +<div class="table"> + + +<!--l. 200--><p class="noindent" ><a + id="x1-117008r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.2: </span><span +class="content">EAPIs supporting various env variables</span></div><!--tex4ht:label?: x1-117008r2 --> +<div class="tabular"> + <table id="TBL-20" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-20-1g"><col +id="TBL-20-1" /><col +id="TBL-20-2" /><col +id="TBL-20-3" /><col +id="TBL-20-4" /><col +id="TBL-20-5" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">AA</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-3" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">KV</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-4" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">REPLACING_VERSIONS</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-5" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">REPLACED_BY_VERSION</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-2" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-3" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-5" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-2" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-3" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-5" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-2" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-3" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-5" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-2" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-3" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-5" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-5" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 218--><p class="noindent" ><a + id="x1-117009r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.3: </span><span +class="content">EAPIs supporting offset-prefix env variables</span></div><!--tex4ht:label?: x1-117009r3 --> +<div class="tabular"> + <table id="TBL-21" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-21-1g"><col +id="TBL-21-1" /><col +id="TBL-21-2" /><col +id="TBL-21-3" /><col +id="TBL-21-4" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-21-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-21-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-21-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">EPREFIX</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-21-1-3" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">EROOT</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-21-1-4" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">ED</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-2-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-2-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-2-4" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-4" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-4" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-5-2" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-5-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-5-4" +class="td11">Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-6-2" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-6-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-21-6-4" +class="td11">Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 236--><p class="noindent" >Except where otherwise noted, all variables set in the active profiles’ <span +class="ectt-1000">make.defaults </span>files must be +exported to the ebuild environment. <span +class="ectt-1000">CHOST</span>, <span +class="ectt-1000">CBUILD </span>and <span +class="ectt-1000">CTARGET</span>, if not set by profiles, must +contain either an appropriate machine tuple (the definition of appropriate is beyond the scope of +this specification) or be unset. +</p><!--l. 241--><p class="noindent" ><span +class="ectt-1000">PATH </span>must be initialized by the package manager to a “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. 245--><p class="noindent" ><span +class="ectt-1000">GZIP</span>, <span +class="ectt-1000">BZIP</span>, <span +class="ectt-1000">BZIP2</span>, <span +class="ectt-1000">CDPATH</span>, <span +class="ectt-1000">GREP_OPTIONS</span>, <span +class="ectt-1000">GREP_COLOR </span>and <span +class="ectt-1000">GLOBIGNORE </span>must not be +set. +</p> +<h4 class="subsectionHead"><span class="titlemark">12.1.1 </span> <a + id="x1-11800012.1.1"></a>USE and IUSE Handling</h4> +<!--l. 251--><p class="nopar" >This section discusses the handling of four variables: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">IUSE</span> </dt><dd +class="description">is the variable calculated from the <span +class="ectt-1000">IUSE </span>values defined in ebuilds and eclasses. + </dd><dt class="description"> +<span +class="ecbx-1000">IUSE_REFERENCEABLE</span> </dt><dd +class="description">is a variable calculated from <span +class="ectt-1000">IUSE </span>and a variety of other + sources described below. It is purely a conceptual variable; it is not exported to the + ebuild environment. Values in <span +class="ectt-1000">IUSE_REFERENCEABLE </span>may legally be used in queries + from other packages about an ebuild’s state (for example, for use dependencies). + </dd><dt class="description"> +<span +class="ecbx-1000">IUSE_EFFECTIVE</span> </dt><dd +class="description">is another + conceptual, unexported variable. Values in <span +class="ectt-1000">IUSE_EFFECTIVE </span>are those which an ebuild + may legally use in queries about itself (for example, for the <span +class="ectt-1000">use </span>function, and for use + in dependency specification conditional blocks). + </dd><dt class="description"> +<span +class="ecbx-1000">USE</span> </dt><dd +class="description">is a variable calculated by the package manager and exported to the ebuild + environment.</dd></dl> +<!--l. 265--><p class="noindent" >In all cases, the values of <span +class="ectt-1000">IUSE_REFERENCEABLE </span>and <span +class="ectt-1000">IUSE_EFFECTIVE </span>are undefined during +metadata generation. +</p><!--l. 268--><p class="noindent" >For EAPIs listed in table <a +href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as not supporting profile defined <span +class="ectt-1000">IUSE </span>injection, <span +class="ectt-1000">IUSE_REFERENCEABLE </span>is +equal to the calculated <span +class="ectt-1000">IUSE </span>value. For EAPIs where profile defined <span +class="ectt-1000">IUSE </span>injection is supported, +<span +class="ectt-1000">IUSE_REFERENCEABLE </span>is equal to <span +class="ectt-1000">IUSE_EFFECTIVE</span>. +</p><!--l. 273--><p class="noindent" >For EAPIs listed in table <a +href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as not supporting profile defined <span +class="ectt-1000">IUSE </span>injection, <span +class="ectt-1000">IUSE_EFFECTIVE</span> +contains the following values: +</p><!--l. 277--><p class="noindent" > + </p><ul> + <li class="compactitem">All values in the calculated <span +class="ectt-1000">IUSE </span>value. + </li> + <li class="compactitem">All possible values for the <span +class="ectt-1000">ARCH </span>variable. + </li> + <li class="compactitem">All legal use flag names whose name starts with the lowercase equivalent of any value + in the profile <span +class="ectt-1000">USE_EXPAND </span>variable followed by an underscore.</li></ul> + <!--l. 283--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-<span +class="small-caps">I</span><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">J</span><span +class="small-caps">E</span><span +class="small-caps">C</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span></span></span></p><!--l. 283--><p class="noindent" >For EAPIs listed in table <a +href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as supporting profile defined <span +class="ectt-1000">IUSE </span>injection, <span +class="ectt-1000">IUSE_EFFECTIVE</span> +contains the following values: + + +</p><!--l. 288--><p class="noindent" > + </p><ul> + <li class="compactitem">All values in the calculated <span +class="ectt-1000">IUSE </span>value. + </li> + <li class="compactitem">All values in the profile <span +class="ectt-1000">IUSE_IMPLICIT </span>variable. + </li> + <li class="compactitem">All values in the profile variable named <span +class="ectt-1000">USE_EXPAND_VALUES_${v}</span>, where <span +class="ectt-1000">${v}</span> + is any value in the intersection of the profile <span +class="ectt-1000">USE_EXPAND_UNPREFIXED </span>and + <span +class="ectt-1000">USE_EXPAND_IMPLICIT </span>variables. + </li> + <li class="compactitem">All values for <span +class="ectt-1000">${lower_v}_${x}</span>, where <span +class="ectt-1000">${x} </span>is all values in the profile variable named + <span +class="ectt-1000">USE_EXPAND_VALUES_${v}</span>, where <span +class="ectt-1000">${v} </span>is any value in the intersection of the profile + <span +class="ectt-1000">USE_EXPAND </span>and <span +class="ectt-1000">USE_EXPAND_IMPLICIT </span>variables and <span +class="ectt-1000">${lower_v} </span>is the lowercase + equivalent of <span +class="ectt-1000">${v}</span>.</li></ul> +<!--l. 299--><p class="noindent" >The <span +class="ectt-1000">USE </span>variable is set by the package manager. For each value in <span +class="ectt-1000">IUSE_EFFECTIVE</span>, <span +class="ectt-1000">USE </span>shall +contain that value if the flag is to be enabled for the ebuild in question, and shall not contain +that value if it is to be disabled. In EAPIs listed in table <a +href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as not supporting profile +defined <span +class="ectt-1000">IUSE </span>injection, <span +class="ectt-1000">USE </span>may contain other flag names that are not relevant for the +ebuild. +</p><!--l. 305--><p class="noindent" >For EAPIs listed in table <a +href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as supporting profile defined <span +class="ectt-1000">IUSE </span>injection, the variables named in +<span +class="ectt-1000">USE_EXPAND </span>and <span +class="ectt-1000">USE_EXPAND_UNPREFIXED </span>shall have their profile-provided values reduced to +contain only those values that are present in <span +class="ectt-1000">IUSE_EFFECTIVE</span>. +</p><!--l. 310--><p class="noindent" >For EAPIs listed in table <a +href="#x1-60001r1">5.1<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as supporting profile defined <span +class="ectt-1000">IUSE </span>injection, the package manager +must save the calculated value of <span +class="ectt-1000">IUSE_EFFECTIVE </span>when installing a package. Details are beyond +the scope of this specification. +</p><!--l. 314--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.1.2 </span> <a + id="x1-11900012.1.2"></a><span +class="ectt-1000">REPLACING_VERSIONS </span>and <span +class="ectt-1000">REPLACED_BY_VERSION</span></h4> + <!--l. 317--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">E</span>-<span +class="small-caps">V</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">S</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span>-<span +class="small-caps">V</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">S</span></span></span></p><!--l. 317--><p class="noindent" >In EAPIs listed in table <a +href="#x1-117008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as supporting it, the <span +class="ectt-1000">REPLACING_VERSIONS </span>variable shall be defined +in <span +class="ectt-1000">pkg_preinst </span>and <span +class="ectt-1000">pkg_postinst</span>. In addition, it <span +class="ecti-1000">may </span>be defined in <span +class="ectt-1000">pkg_pretend </span>and +<span +class="ectt-1000">pkg_setup</span>, although ebuild authors should take care to handle binary package creation and +installation correctly when using it in these phases. +</p><!--l. 323--><p class="noindent" ><span +class="ectt-1000">REPLACING_VERSIONS </span>is a list, not a single optional value, to handle pathological cases such as +installing <span +class="ectt-1000">foo-2:2 </span>to replace <span +class="ectt-1000">foo-2:1 </span>and <span +class="ectt-1000">foo-3:2</span>. +</p><!--l. 326--><p class="noindent" >In EAPIs listed in table <a +href="#x1-117008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as supporting it, the <span +class="ectt-1000">REPLACED_BY </span>variable shall be defined in +<span +class="ectt-1000">pkg_prerm </span>and <span +class="ectt-1000">pkg_postrm</span>. It shall contain at most one value. +</p><!--l. 329--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.1.3 </span> <a + id="x1-12000012.1.3"></a>Offset-prefix variables <span +class="ectt-1000">EPREFIX</span>, <span +class="ectt-1000">EROOT </span>and <span +class="ectt-1000">ED</span></h4> +<div class="table"> + + +<!--l. 332--><p class="noindent" ><a + id="x1-120001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.4: </span><span +class="content">EAPIs supporting offset-prefix</span></div><!--tex4ht:label?: x1-120001r4 --> +<div class="tabular"> + <table id="TBL-22" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-22-1g"><col +id="TBL-22-1" /><col +id="TBL-22-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-22-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-22-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-22-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports offset-prefix?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-22-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-22-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-22-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-4-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-22-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-22-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-22-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> + <!--l. 348--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">O</span><span +class="small-caps">F</span><span +class="small-caps">F</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">T</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">X</span>-<span +class="small-caps">V</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">S</span></span></span></p><!--l. 348--><p class="noindent" >Table <a +href="#x1-120001r4">12.4<!--tex4ht:ref: tab:offset-support-table --></a> lists the EAPIs which support offset-prefix installations. This support was initially +added in EAPI 3, in the form of three extra variables. Two of these, <span +class="ectt-1000">EROOT </span>and <span +class="ectt-1000">ED</span>, are convenience +variables using the variable <span +class="ectt-1000">EPREFIX</span>. In EAPIs that do not support an offset-prefix, the +installation offset is hardwired to <span +class="ectt-1000">/usr</span>. In offset-prefix supporting EAPIs the installation offset is +set as <span +class="ectt-1000">${EPREFIX}/usr </span>and hence can be adjusted using the variable <span +class="ectt-1000">EPREFIX</span>. Note that the +behaviour of offset-prefix aware and agnostic is the same when <span +class="ectt-1000">EPREFIX </span>is set to the empty string +in offset-prefix aware EAPIs. The latter do have the variables <span +class="ectt-1000">ED </span>and <span +class="ectt-1000">EROOT </span>properly set, +though. +</p> +<h3 class="sectionHead"><span class="titlemark">12.2 </span> <a + id="x1-12100012.2"></a>The state of variables between functions</h3> +<!--l. 4--><p class="nopar" >Exported and default scope variables are saved between functions. A non-local variable set in a +function earlier in the call sequence must have its value preserved for later functions, including +functions executed as part of a later uninstall. +</p> +<!--l. 8--><p class="nopar" ><span class="paragraphHead"><a + id="x1-12200012.2"></a><span +class="ecbx-1000">Note:</span></span> +<span +class="ectt-1000">pkg_pretend </span>is <span +class="ecti-1000">not </span>part of the normal call sequence, and does not take part in environment +saving. +</p><!--l. 11--><p class="noindent" >Variables that were exported must remain exported in later functions; variables with default +visibility may retain default visibility or be exported. +</p><!--l. 14--><p class="noindent" >Variables with special meanings to the package manager are excluded from this rule. +</p><!--l. 16--><p class="noindent" >Global variables must only contain invariant values (see <a +href="#x1-680008.1">8.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. 20--><p class="noindent" >This is demonstrated by code listing <a +href="#x1-122001r1">12.1<!--tex4ht:ref: lst:env-saving --></a>. + + +</p><!--l. 23--><p class="noindent" ><a + id="x1-122001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 12.1: </span><span +class="content">Environment state between functions</span></div><!--tex4ht:label?: x1-122001r1 --> +<div class="verbatiminput"> +<span +class="ectt-1000">GLOBAL_VARIABLE="a"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">src_compile()</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">{</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> GLOBAL_VARIABLE="b"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> DEFAULT_VARIABLE="c"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> export</span><span +class="ectt-1000"> EXPORTED_VARIABLE="d"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> local</span><span +class="ectt-1000"> LOCAL_VARIABLE="e"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">}</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">src_install(){</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> ${GLOBAL_VARIABLE}</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "a"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> ${GLOBAL_VARIABLE}</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "b"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> globals"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> ${DEFAULT_VARIABLE}</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "c"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> default"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> ${EXPORTED_VARIABLE}</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "d"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> exported"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> $(printenv</span><span +class="ectt-1000"> EXPORTED_VARIABLE</span><span +class="ectt-1000"> )</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "d"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> exported"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> -z</span><span +class="ectt-1000"> ${LOCAL_VARIABLE}</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> locals"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">}</span> +</div> + + +</div><hr class="endfloat" /> +<h3 class="sectionHead"><span class="titlemark">12.3 </span> <a + id="x1-12300012.3"></a>Available commands</h3> +<!--l. 4--><p class="nopar" >This section documents the commands available to an ebuild. Unless otherwise specified, they may +be aliases, shell functions, or executables in the ebuild’s <span +class="ectt-1000">PATH</span>. +</p><!--l. 7--><p class="noindent" >When an ebuild is being sourced for metadata querying rather than for a build (that is to say, +when none of the <span +class="ectt-1000">src_ </span>or <span +class="ectt-1000">pkg_ </span>functions are to be called), no external command may be executed. +The package manager may take steps to enforce this. +</p><!--l. 11--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.3.1 </span> <a + id="x1-12400012.3.1"></a>System commands</h4> +<!--l. 13--><p class="nopar" >Any ebuild not listed in the system set for the active profile(s) may assume the presence of every +command that is always provided by the system set for that profile. However, it must target the +lowest common denominator of all systems on which it might be installed—in most +cases this means that the only packages that can be assumed to be present are those +listed in the <span +class="ectt-1000">base </span>profile or equivalent, which is inherited by all available profiles. If an +ebuild requires any applications not provided by the system profile, or that are provided +conditionally based on USE flags, appropriate dependencies must be used to ensure their +presence. +</p><!--l. 21--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><a + id="x1-12500012.3.1"></a>Guaranteed system commands</h5> +<!--l. 24--><p class="nopar" >The following commands must always be available in the ebuild environment: + </p><ul> + <li class="compactitem">All builtin commands in GNU bash, version 3.2<span class="footnote-mark"><a +href="pms8.html#fn6x13"><sup class="textsuperscript">6</sup></a></span><a + id="x1-125001f6"></a> . + </li> + <li class="compactitem"><span +class="ectt-1000">sed </span>must be available, and must support all forms of invocations valid for GNU sed + version 4 or later. + </li> + <li class="compactitem"><span +class="ectt-1000">patch </span>must be available, and must support all inputs valid for GNU patch.</li></ul> +<!--l. 34--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.3.2 </span> <a + id="x1-12600012.3.2"></a>Commands provided by package dependencies</h4> +<!--l. 36--><p class="nopar" >In some cases a package’s build process will require the availability of executables not provided by +the core system, a common example being autotools. Commands provided by dependencies are +available in the following cases: + </p><ul> + <li class="compactitem">In the <span +class="ectt-1000">src </span>phases, any command provided by a package listed in <span +class="ectt-1000">DEPEND </span>is available. + + + </li> + <li class="compactitem">In the <span +class="ectt-1000">pkg </span>phases, at least one of the following conditions must be met: + <ul> + <li class="compactitem">Any command provided by a package listed in <span +class="ectt-1000">DEPEND </span>is available. + </li> + <li class="compactitem">Any command provided by a package listed in <span +class="ectt-1000">RDEPEND </span>is available.</li></ul> + </li></ul> +<!--l. 48--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.3.3 </span> <a + id="x1-12700012.3.3"></a>Ebuild-specific Commands</h4> +<!--l. 3--><p class="nopar" >The following commands will always be available in the ebuild environment, provided by the +package manager. Except where otherwise noted, they may be internal (shell functions or aliases) +or external commands available in <span +class="ectt-1000">PATH</span>; where this is not specified, ebuilds may not rely upon +either behaviour. +</p><!--l. 8--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><a + id="x1-12800012.3.3"></a>Failure behaviour and related commands</h5> + <!--l. 11--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">E</span>-<span +class="small-caps">O</span><span +class="small-caps">N</span>-<span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">E</span></span></span></p><!--l. 11--><p class="noindent" >Where a command is listed as having EAPI dependent failure behaviour, a failure shall either +result in a non-zero exit status or abort the build process, as determined by table <a +href="#x1-128001r5">12.5<!--tex4ht:ref: tab:commands-die-table --></a>. +</p><!--l. 15--><p class="noindent" >The following commands affect this behaviour: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">nonfatal</span> </dt><dd +class="description"><!--l. 17--><p class="noindent" > </p><!--l. 17--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">N</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span></span></span> Executes the remainder of its arguments as a command, preserving the exit + status. If this results in a command being called that would normally abort the build + process due to a failure (but not due to an explicit <span +class="ectt-1000">die </span>or <span +class="ectt-1000">assert </span>call), instead a + non-zero exit status shall be returned. Only in EAPIs listed in table <a +href="#x1-128001r5">12.5<!--tex4ht:ref: tab:commands-die-table --></a> as supporting + <span +class="ectt-1000">nonfatal</span>.</p></dd></dl> +<div class="table"> + + +<!--l. 24--><p class="noindent" ><a + id="x1-128001r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.5: </span><span +class="content">EAPI Command Failure Behaviour</span></div><!--tex4ht:label?: x1-128001r5 --> +<div class="tabular"> + <table id="TBL-23" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-23-1g"><col +id="TBL-23-1" /><col +id="TBL-23-2" /><col +id="TBL-23-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-23-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-23-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-23-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Command failure behaviour</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-23-1-3" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">nonfatal</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-23-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-2-2" +class="td11">Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-2-3" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-23-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-3-2" +class="td11">Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-3-3" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-4-2" +class="td11">Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-4-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-5-2" +class="td11">Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-5-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-6-2" +class="td11">Aborts </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-6-3" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><a + id="x1-12900012.3.3"></a>Banned commands</h5> + <!--l. 43--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">D</span><span +class="small-caps">S</span></span></span></p><!--l. 43--><p class="noindent" >Some commands are banned in some EAPIs. If a banned command is called, the package manager +must abort the build process indicating an error. +</p> +<div class="table"> + + +<!--l. 46--><p class="noindent" ><a + id="x1-129001r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.6: </span><span +class="content">Banned commands</span></div><!--tex4ht:label?: x1-129001r6 --> +<div class="tabular"> + <table id="TBL-24" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-24-1g"><col +id="TBL-24-1" /><col +id="TBL-24-2" /><col +id="TBL-24-3" /><col +id="TBL-24-4" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-24-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-24-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td colspan="3" style="white-space:nowrap; text-align:center;" id="TBL-24-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Command banned?</span></div></td></tr><tr + style="vertical-align:baseline;" id="TBL-24-2-"><td style="white-space:nowrap; text-align:center;" id="TBL-24-2-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-24-2-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">dohard</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-24-2-3" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">dosed</span></div> + +</td></tr><tr + style="vertical-align:baseline;" id="TBL-24-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-2" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-3" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><a + id="x1-13000012.3.3"></a>Sandbox commands</h5> +<!--l. 65--><p class="nopar" >These commands affect the behaviour of the sandbox. Each command takes a single directory as +argument. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">addread</span> </dt><dd +class="description">Add a directory to the permitted read list. + </dd><dt class="description"> +<span +class="ecbx-1000">addwrite</span> </dt><dd +class="description">Add a directory to the permitted write list. + </dd><dt class="description"> +<span +class="ecbx-1000">addpredict</span> </dt><dd +class="description">Add a directory to the predict list. Any write to a location in this list will be + denied, but will not trigger access violation messages or abort the build process. + </dd><dt class="description"> +<span +class="ecbx-1000">adddeny</span> </dt><dd +class="description">Add a directory to the deny list.</dd></dl> +<!--l. 75--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><a + id="x1-13100012.3.3"></a>Package manager query commands</h5> +<!--l. 76--><p class="nopar" >These commands are used to extract information about the host system. Ebuilds must not run any +of these commands in parallel with any other package manager command. Ebuilds must not run +any of these commands once the current phase function has returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">has_version</span> </dt><dd +class="description">Takes exactly one package dependency specification as an argument. Returns + true if a package matching the atom is installed in <span +class="ectt-1000">ROOT</span>, and false otherwise. + </dd><dt class="description"> +<span +class="ecbx-1000">best_version</span> </dt><dd +class="description">Takes exactly one package dependency specification as an argument. If a + matching package is installed, prints the category, package name and version of the + highest matching version.</dd></dl> +<!--l. 87--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><a + id="x1-13200012.3.3"></a>Output commands</h5> +<!--l. 88--><p class="nopar" >These commands display messages to the user. Unless otherwise stated, the entire argument list is +used as a message, with backslash-escaped characters interpreted as for the <span +class="ectt-1000">echo -e </span>command of +bash, notably <span +class="ectt-1000">\t </span>for a horizontal tab, <span +class="ectt-1000">\n </span>for a new line, and <span +class="ectt-1000">\\ </span>for a literal backslash. Ebuilds +must not run any of these commands once the current phase function has returned. +Unless otherwise noted, output may be sent to stdout, stderr or some other appropriate +facility. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">einfo</span> </dt><dd +class="description">Displays an informational message. + </dd><dt class="description"> +<span +class="ecbx-1000">einfon</span> </dt><dd +class="description">Displays an informational message without a trailing newline. + + + </dd><dt class="description"> +<span +class="ecbx-1000">elog</span> </dt><dd +class="description">Displays an informational message of slightly higher importance. The package manager + may choose to log <span +class="ectt-1000">elog </span>messages by default where <span +class="ectt-1000">einfo </span>messages are not, for example. + </dd><dt class="description"> +<span +class="ecbx-1000">ewarn</span> </dt><dd +class="description">Displays a warning message. Must not go to stdout. + </dd><dt class="description"> +<span +class="ecbx-1000">eerror</span> </dt><dd +class="description">Displays an error message. Must not go to stdout. + </dd><dt class="description"> +<span +class="ecbx-1000">ebegin</span> </dt><dd +class="description">Displays an informational message. Should be used when beginning a possibly + lengthy process, and followed by a call to <span +class="ectt-1000">eend</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">eend</span> </dt><dd +class="description">Indicates that the process begun with an <span +class="ectt-1000">ebegin </span>message has completed. Takes + one fixed argument, which is a numeric return code, and an optional message in all + subsequent arguments. If the first argument is 0, print a success indicator; otherwise, + print the message followed by a failure indicator.</dd></dl> +<!--l. 110--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><a + id="x1-13300012.3.3"></a>Error commands</h5> +<!--l. 111--><p class="nopar" >These commands are used when an error is detected that will prevent the build process from +completing. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">die</span> </dt><dd +class="description">Displays a failure message provided in its first and only argument, and then aborts + the build process. <span +class="ectt-1000">die </span>is <span +class="ecti-1000">not </span>guaranteed to work correctly if called from a subshell + environment. + </dd><dt class="description"> +<span +class="ecbx-1000">assert</span> </dt><dd +class="description">Checks the value of the shell’s pipe status variable, and if any component is non-zero + (indicating failure), calls <span +class="ectt-1000">die </span>with its first argument as a failure message.</dd></dl> +<!--l. 121--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><a + id="x1-13400012.3.3"></a>Build commands</h5> +<!--l. 122--><p class="nopar" >These commands are used during the <span +class="ectt-1000">src_compile </span>and <span +class="ectt-1000">src_install </span>phases to run the package’s +build commands. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">econf</span> </dt><dd +class="description">Calls the program’s <span +class="ectt-1000">./configure </span>script. This is designed to work with GNU + Autoconf-generated scripts. Any additional parameters passed to <span +class="ectt-1000">econf </span>are passed + directly to <span +class="ectt-1000">./configure</span>. <span +class="ectt-1000">econf </span>will look in the current working directory for a + configure script unless the <span +class="ectt-1000">ECONF_SOURCE </span>environment variable is set, in which case it + is taken to be the directory containing it. <span +class="ectt-1000">econf </span>must pass the following options to the + configure script: + <!--l. 133--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">E</span><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span></span></span></p> + + + <ul class="itemize1"> + <li class="itemize">--prefix must default to <span +class="ectt-1000">${EPREFIX}/usr </span>unless overridden by <span +class="ectt-1000">econf</span>’s caller. + </li> + <li class="itemize">--mandir must be <span +class="ectt-1000">${EPREFIX}/usr/share/man</span> + </li> + <li class="itemize">--infodir must be <span +class="ectt-1000">${EPREFIX}/usr/share/info</span> + </li> + <li class="itemize">--datadir must be <span +class="ectt-1000">${EPREFIX}/usr/share</span> + </li> + <li class="itemize">--sysconfdir must be <span +class="ectt-1000">${EPREFIX}/etc</span> + </li> + <li class="itemize">--localstatedir must be <span +class="ectt-1000">${EPREFIX}/var/lib</span> + </li> + <li class="itemize">--host must be the value of the <span +class="ectt-1000">CHOST </span>environment variable. + </li> + <li class="itemize">--libdir must be set according to Algorithm <a +href="#x1-134002r9">9<!--tex4ht:ref: alg:econf-libdir --></a>. + </li> + <li class="itemize">--disable-dependency-tracking, if the EAPI is listed in table <a +href="#x1-134001r7">12.7<!--tex4ht:ref: tab:econf-options-table --></a> as using it.</li></ul> + <div class="table"> + <!--l. 147--><p class="noindent" ><a + id="x1-134001r7"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Table 12.7: </span><span +class="content">Extra <span +class="ectt-1000">econf </span>arguments for EAPIs</span></div><!--tex4ht:label?: x1-134001r7 --> + <div class="tabular"> + <table id="TBL-25" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-25-1g"><col +id="TBL-25-1" /><col +id="TBL-25-2" /><col +id="TBL-25-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-25-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-25-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-25-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">--disable-dependency-tracking</span>?</div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-25-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-25-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-3-1" +class="td11"><span +class="ectt-1000">1 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-25-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-25-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-4-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-25-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-5-1" +class="td11"><span +class="ectt-1000">3 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-25-5-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-25-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-25-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-7-1" +class="td11"> </td></tr></table></div></div><hr class="endfloat" /> + </div> + <!--l. 162--><p class="noindent" >Note that the <span +class="ectt-1000">${EPREFIX} </span>component represents the same offset-prefix as described in + Table <a +href="#x1-117001r1">12.1<!--tex4ht:ref: tab:defined_vars --></a>. It facilitates offset-prefix installations which is supported by EAPIs listed in + Table <span +class="ecbx-1000">??</span>. When no offset-prefix installation is in effect, <span +class="ectt-1000">EPREFIX </span>becomes the empty string, + making the behaviour of <span +class="ectt-1000">econf </span>equal for both offset-prefix supporting and agnostic + EAPIs. + </p><!--l. 168--><p class="noindent" ><span +class="ectt-1000">econf </span>must be implemented internally—that is, as a bash function and not an external + script. Should any portion of it fail, it must abort the build using <span +class="ectt-1000">die</span>, unless run using + <span +class="ectt-1000">nonfatal</span>, in which case it must return non-zero exit status. +</p> + <div class="algorithm"> + <!--l. 173--><p class="noindent" ><a + id="x1-134002r9"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Algorithm 9: </span><span +class="content">econf --libdir logic</span></div><!--tex4ht:label?: x1-134002r9 --> +<div class="algorithmic"> +<a + id="x1-134003r99"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> let prefix=${EPREFIX}/usr <a + id="x1-134004r100"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-134005r101"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let prefix=$p + </span><a + id="x1-134006r102"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-134007r103"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> let libdir= <a + id="x1-134008r104"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-134009r105"></a> + + + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let libvar=LIBDIR_$ABI <a + id="x1-134010r106"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-134011r107"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> let libdir=the value of the variable named by libvar + </span><a + id="x1-134012r108"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-134013r109"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-134014r110"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> libdir is non-empty <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-134015r111"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> pass --libdir=$prefix/$libdir to configure + </span><a + id="x1-134016r112"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </div> </div><hr class="endfloat" /> + </div> + </dd><dt class="description"> +<span +class="ecbx-1000">emake</span> </dt><dd +class="description">Calls the <span +class="ectt-1000">$MAKE </span>program, or GNU make if the <span +class="ectt-1000">MAKE </span>variable is unset. Any arguments given + are passed directly to the make command, as are the user’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-12500012.3.1">12.3.1<!--tex4ht:ref: sec:guaranteed-system-commands --></a>. <span +class="ectt-1000">emake </span>must be an + external program and cannot be a function or alias—it must be callable from e.g. <span +class="ectt-1000">xargs</span>. + Failure behaviour is EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">einstall</span> </dt><dd +class="description">A shortcut for the command given in Listing <a +href="#x1-134017r2">12.2<!--tex4ht:ref: lst:einstall --></a>. Any arguments given to <span +class="ectt-1000">einstall </span>are + passed verbatim to <span +class="ectt-1000">emake</span>, as shown. Failure behaviour is EAPI dependent as per + section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + <!--l. 202--><p class="noindent" >The variable <span +class="ectt-1000">ED </span>is defined as in Table <a +href="#x1-117001r1">12.1<!--tex4ht:ref: tab:defined_vars --></a> and depends on the use of an offset-prefix. + When such offset-prefix is absent, <span +class="ectt-1000">ED </span>is equivalent to <span +class="ectt-1000">D</span>. <span +class="ectt-1000">ED </span>is always available in + EAPIs that support offset-prefix installations as listed in Table <a +href="#x1-117009r3">12.3<!--tex4ht:ref: tab:offset-env-vars-table --></a>, hence EAPIs + lacking offset-prefix support should use <span +class="ectt-1000">D </span>instead of <span +class="ectt-1000">ED </span>in the command given in + Listing <a +href="#x1-134017r2">12.2<!--tex4ht:ref: lst:einstall --></a>. + </p><!--l. 207--><p class="noindent" ><a + id="x1-134017r2"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Listing 12.2: </span><span +class="content">einstall command</span></div><!--tex4ht:label?: x1-134017r2 --> + + +<div class="verbatim" id="verbatim-13"> +emake \ + <br />   prefix="${ED}"/usr \ + <br />   mandir="${ED}"/usr/share/man \ + <br />   infodir="${ED}"/usr/share/info \ + <br />   libdir="${ED}"/usr/$(get_libdir) \ + <br />   "$@" \ + <br />   install + <br />  </div> + <!--l. 217--><p class="nopar" ></p></div><hr class="endfloat" /> + </dd></dl> +<!--l. 222--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><a + id="x1-13500012.3.3"></a>Installation commands</h5> +<!--l. 223--><p class="nopar" >These commands are used to install files into the staging area, in cases where the package’s <span +class="ectt-1000">make</span> +<span +class="ectt-1000">install </span>target cannot be used or does not install all needed files. Except where otherwise stated, +all filenames created or modified are relative to the staging directory including the offset-prefix <span +class="ectt-1000">ED</span> +in offset-prefix aware EAPIs, or just the staging directory <span +class="ectt-1000">D </span>in offset-prefix agnostic EAPIs. These +commands must all be external programs and not bash functions or aliases—that is, they must be +callable from <span +class="ectt-1000">xargs</span>. Ebuilds must not run any of these commands once the current phase function +has returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">dobin</span> </dt><dd +class="description">Installs the given files into <span +class="ectt-1000">DESTTREE/bin</span>, where <span +class="ectt-1000">DESTTREE </span>defaults to <span +class="ectt-1000">/usr</span>. Gives + the files mode <span +class="ectt-1000">0755 </span>and transfers file ownership to the superuser or its equivalent on + the system or installation at hand. For instance on Gentoo Linux in a non-offset-prefix + installation this ownership is <span +class="ectt-1000">root:root</span>, while on an offset-prefix aware installation + this may be <span +class="ectt-1000">joe:users</span>. Failure behaviour is EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">doconfd</span> </dt><dd +class="description">Installs the given config files into <span +class="ectt-1000">/etc/conf.d/</span>, by default with file mode <span +class="ectt-1000">0644</span>. + This can be overridden by setting <span +class="ectt-1000">INSOPTIONS </span>with the <span +class="ectt-1000">insopts </span>function. Failure + behaviour is EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dodir</span> </dt><dd +class="description">Creates the given directories, by default with file mode <span +class="ectt-1000">0755</span>. This can be overridden + by setting <span +class="ectt-1000">DIROPTIONS </span>with the <span +class="ectt-1000">diropts </span>function. Failure behaviour is EAPI + dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dodoc</span> </dt><dd +class="description"><!--l. 249--><p class="noindent" > </p><!--l. 249--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">C</span></span></span> Installs the given files into a subdirectory under <span +class="ectt-1000">/usr/share/doc/${PF}/ </span>with file + mode <span +class="ectt-1000">0644</span>. The subdirectory is set by the most recent call to <span +class="ectt-1000">docinto</span>. If <span +class="ectt-1000">docinto</span> + has not yet been called, instead installs to the directory <span +class="ectt-1000">/usr/share/doc/${PF}/</span>. For + EAPIs listed in table <a +href="#x1-135018r8">12.8<!--tex4ht:ref: tab:dodoc-table --></a> as supporting <span +class="ectt-1000">-r</span>, if the first argument is <span +class="ectt-1000">-r</span>, any subsequent + arguments that are directories are installed recursively to the appropriate location; in + any other case, it is an error for a directory to be specified. Failure behaviour is EAPI + dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> +<span +class="ecbx-1000">doenvd</span> </dt><dd +class="description">Installs the given environment files into <span +class="ectt-1000">/etc/env.d/</span>, by default with file mode + <span +class="ectt-1000">0644</span>. This can be overridden by setting <span +class="ectt-1000">INSOPTIONS </span>with the <span +class="ectt-1000">insopts </span>function. Failure + behaviour is EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + + + </dd><dt class="description"> +<span +class="ecbx-1000">doexe</span> </dt><dd +class="description">Installs the given files into the directory specified by the most recent <span +class="ectt-1000">exeinto </span>call, + by default with file mode <span +class="ectt-1000">0755</span>. This can be overridden by setting <span +class="ectt-1000">EXEOPTIONS </span>with the + <span +class="ectt-1000">exeopts </span>function. If <span +class="ectt-1000">exeinto </span>has not yet been called, behaviour is undefined. Failure + behaviour is EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dohard</span> </dt><dd +class="description">Takes two parameters. Creates a hardlink from the second to the first. In EAPIs + listed in table <a +href="#x1-129001r6">12.6<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned as per section <a +href="#x1-12900012.3.3">12.3.3<!--tex4ht:ref: sec:banned-commands --></a>. Failure behaviour + is EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dohtml</span> </dt><dd +class="description">Installs the given HTML files into a subdirectory under <span +class="ectt-1000">/usr/share/doc/$PF/</span>. The + subdirectory is <span +class="ectt-1000">html </span>by default, but this can be overridden by setting the <span +class="ectt-1000">DOCDESTTREE</span> + variable with the <span +class="ectt-1000">docinto </span>function. Files to be installed automatically are determined by + extension and the default extensions are <span +class="ectt-1000">css</span>, <span +class="ectt-1000">gif</span>, <span +class="ectt-1000">htm</span>, <span +class="ectt-1000">html</span>, <span +class="ectt-1000">jpeg</span>, <span +class="ectt-1000">jpg</span>, <span +class="ectt-1000">js </span>and <span +class="ectt-1000">png</span>. These + default extensions can be extended or reduced (see below). The options that can be passed to + <span +class="ectt-1000">dohtml </span>are as follows: + <dl class="description"><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-r </span>— enables recursion into directories. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-V </span>— enables verbosity. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-A </span>— adds file type extensions to the default list. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-a </span>— sets file type extensions to only those specified. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-f </span>— list of files that are able to be installed. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-x </span>— list of directories that files will not be installed from (only used in conjunction + with <span +class="ectt-1000">-r</span>). + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-p </span>— sets a document prefix for installed files, not to be confused with the global + offset-prefix.</dd></dl> + <!--l. 289--><p class="noindent" >Failure behaviour is EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p><!--l. 291--><p class="noindent" >It is undefined whether a failure shall occur if <span +class="ectt-1000">-r </span>is not specified and a directory is + encountered. Ebuilds must not rely upon any particular behaviour. + </p></dd><dt class="description"> +<span +class="ecbx-1000">doinfo</span> </dt><dd +class="description">Installs a GNU Info file into the <span +class="ectt-1000">/usr/share/info </span>area with file mode <span +class="ectt-1000">0644</span>. Failure + behaviour is EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">doinitd</span> </dt><dd +class="description">Installs the given initscript files into <span +class="ectt-1000">/etc/init.d</span>, by default with file mode <span +class="ectt-1000">0755</span>. This + can be overridden by setting <span +class="ectt-1000">EXEOPTIONS </span>with the <span +class="ectt-1000">exeopts </span>function. Failure behaviour is + EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">doins</span> </dt><dd +class="description"><!--l. 301--><p class="noindent" > </p><!--l. 301--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span></span></span> Takes any number of files as arguments and installs them into <span +class="ectt-1000">INSDESTTREE</span>, by default + with file mode <span +class="ectt-1000">0644</span>. This can be overridden by setting <span +class="ectt-1000">INSOPTIONS </span>with the <span +class="ectt-1000">insopts</span> + function. If the first argument is <span +class="ectt-1000">-r</span>, then operates recursively, descending into any directories + given. For EAPIs listed in table <a +href="#x1-135019r9">12.9<!--tex4ht:ref: tab:doins-table --></a>, <span +class="ectt-1000">doins </span>must install symlinks as symlinks; for other + EAPIs, behaviour is undefined if any symlink is encountered. Failure behaviour is EAPI + dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> +<span +class="ecbx-1000">dolib</span> </dt><dd +class="description">For each argument, installs it into the appropriate library directory as determined by + + + Algorithm <a +href="#x1-135001r10">10<!--tex4ht:ref: alg:ebuild-libdir --></a>, by default with file mode <span +class="ectt-1000">0644</span>. This can be overridden by setting <span +class="ectt-1000">LIBOPTIONS</span> + with the <span +class="ectt-1000">libopts </span>function. Any symlinks are installed into the same directory as + relative links to their original target. Failure behaviour is EAPI dependent as per + section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dolib.so</span> </dt><dd +class="description">As for dolib except each file is installed with mode <span +class="ectt-1000">0755</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">dolib.a</span> </dt><dd +class="description">As for dolib except each file is installed with mode <span +class="ectt-1000">0644</span>. + <div class="algorithm"> + <!--l. 320--><p class="noindent" ><a + id="x1-135001r10"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Algorithm 10: </span><span +class="content">Determining the library directory</span></div><!--tex4ht:label?: x1-135001r10 --> +<div class="algorithmic"> +<a + id="x1-135002r113"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-135003r114"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> return CONF_LIBDIR_OVERRIDE + </span><a + id="x1-135004r115"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-135005r116"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-135006r117"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let LIBDIR_default=CONF_LIBDIR + </span><a + id="x1-135007r118"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-135008r119"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let LIBDIR_default=“lib” + </span><a + id="x1-135009r120"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-135010r121"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-135011r122"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let abi=ABI + </span><a + id="x1-135012r123"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </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-135013r124"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let abi=DEFAULT_ABI + </span><a + id="x1-135014r125"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-135015r126"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let abi=“default” + </span><a + id="x1-135016r127"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-135017r128"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> return the value of LIBDIR_$abi + </div> </div><hr class="endfloat" /> + </div> + </dd><dt class="description"> +<span +class="ecbx-1000">doman</span> </dt><dd +class="description">Installs a man page into the appropriate subdirectory of <span +class="ectt-1000">/usr/share/man </span>depending upon + its apparent section suffix (e.g. <span +class="ectt-1000">foo.1 </span>goes to <span +class="ectt-1000">/usr/share/man/man1/foo.1 </span>with file mode + <span +class="ectt-1000">0644</span>. + <!--l. 345--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span>-<span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">S</span></span></span></p><!--l. 345--><p class="noindent" >In EAPIs listed in table <a +href="#x1-135020r10">12.10<!--tex4ht:ref: tab:doman-table --></a> as supporting language codes, a man page with name of the + form<span +class="ectt-1000">foo.lang.1 </span>shall go to <span +class="ectt-1000">/usr/share/man/lang/man1/foo.1</span>, where <span +class="ectt-1000">lang </span>refers + to a pair of lower-case ASCII letters optionally followed by an underscore and a + pair of upper-case ASCII letters. Failure behaviour is EAPI dependent as per + section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> +<span +class="ecbx-1000">domo</span> </dt><dd +class="description">Installs a <span +class="ectt-1000">.mo </span>file with file mode <span +class="ectt-1000">0644 </span>into the appropriate subdirectory of + + + <span +class="ectt-1000">DESTTREE/share/locale</span>, generated by taking the basename of the file, removing the + <span +class="ectt-1000">.* </span>suffix, and appending <span +class="ectt-1000">/LC_MESSAGES</span>. The name of the installed files is the + package name with <span +class="ectt-1000">.mo </span>appended. Failure behaviour is EAPI dependent as per + section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dosbin</span> </dt><dd +class="description">As <span +class="ectt-1000">dobin</span>, but installs to <span +class="ectt-1000">DESTTREE/sbin</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">dosym</span> </dt><dd +class="description">Creates a symbolic link named as for its second parameter, pointing to the first. If the + directory containing the new link does not exist, creates it. Failure behaviour is EAPI + dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">fowners</span> </dt><dd +class="description">Acts as for <span +class="ectt-1000">chown</span>, but takes paths relative to the image directory. Failure behaviour is + EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">fperms</span> </dt><dd +class="description">Acts as for <span +class="ectt-1000">chmod</span>, but takes paths relative to the image directory. Failure behaviour is + EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">newbin</span> </dt><dd +class="description">As for <span +class="ectt-1000">dobin</span>, but takes two parameters. The first is the file to install; the second is the + new filename under which it will be installed. + </dd><dt class="description"> +<span +class="ecbx-1000">newconfd</span> </dt><dd +class="description">As for <span +class="ectt-1000">doconfd</span>, but takes two parameters as for <span +class="ectt-1000">newbin</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newdoc</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">dodoc</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newenvd</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doenvd</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newexe</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doexe</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newinitd</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doinitd</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newins</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doins</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newlib.a</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">dolib.a</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newlib.so</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">dolib.so</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newman</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doman</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newsbin</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">dosbin</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">keepdir</span> </dt><dd +class="description">Creates a directory as for <span +class="ectt-1000">dodir</span>, and an empty file whose name starts with <span +class="ectt-1000">.keep </span>in that + directory to ensure that the directory does not get removed by the package manager + should it be empty at any point. Failure behaviour is EAPI dependent as per + section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd></dl> +<div class="table"> + + +<!--l. 398--><p class="noindent" ><a + id="x1-135018r8"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.8: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">dodoc -r</span></span></div><!--tex4ht:label?: x1-135018r8 --> +<div class="tabular"> + <table id="TBL-26" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-26-1g"><col +id="TBL-26-1" /><col +id="TBL-26-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-26-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-26-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-26-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">dodoc -r</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-26-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-26-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-4-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-5-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 413--><p class="noindent" ><a + id="x1-135019r9"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.9: </span><span +class="content">EAPIs supporting symlinks for <span +class="ectt-1000">doins</span></span></div><!--tex4ht:label?: x1-135019r9 --> +<div class="tabular"> + <table id="TBL-27" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-27-1g"><col +id="TBL-27-1" /><col +id="TBL-27-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-27-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-27-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-27-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">doins </span><span +class="ecbx-1000">supports symlinks?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-27-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-27-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-4-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-5-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 428--><p class="noindent" ><a + id="x1-135020r10"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.10: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">doman </span>languages</span></div><!--tex4ht:label?: x1-135020r10 --> +<div class="tabular"> + <table id="TBL-28" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-28-1g"><col +id="TBL-28-1" /><col +id="TBL-28-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-28-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-28-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-28-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">doman </span><span +class="ecbx-1000">languages?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-28-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-28-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><a + id="x1-13600012.3.3"></a>Commands affecting install destinations</h5> +<!--l. 444--><p class="nopar" >The following commands are used to set the various destination trees, all relative to <span +class="ectt-1000">${ED} </span>in +offset-prefix aware EAPIs and relative to <span +class="ectt-1000">${D} </span>in offset-prefix agnostic EAPIs, used by the above +installation commands. They must be shell functions or aliases, due to the need to set variables +read by the above commands. Ebuilds must not run any of these commands once the current phase +function has returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">into</span> </dt><dd +class="description">Sets the value of <span +class="ectt-1000">DESTTREE </span>for future invocations of the above utilities. Creates the + directory under <span +class="ectt-1000">${ED} </span>in offset-prefix aware EAPIs or under <span +class="ectt-1000">${D} </span>in offset-prefix + agnostic EAPIs, using <span +class="ectt-1000">install -d </span>with no additional options, if it does not already + exist. Failure behaviour is EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">insinto</span> </dt><dd +class="description">Sets the value of <span +class="ectt-1000">INSDESTTREE </span>for future invocations of the above utilities. May + create the directory, as specified for <span +class="ectt-1000">into</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">exeinto</span> </dt><dd +class="description">Sets the install path for <span +class="ectt-1000">doexe </span>and <span +class="ectt-1000">newexe</span>. May create the directory, as specified + for <span +class="ectt-1000">into</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">docinto</span> </dt><dd +class="description">Sets the install subdirectory for <span +class="ectt-1000">dodoc </span>et al. May create the directory, as specified + for <span +class="ectt-1000">into</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">insopts</span> </dt><dd +class="description">Sets the options passed by <span +class="ectt-1000">doins </span>et al. to the <span +class="ectt-1000">install </span>command. + </dd><dt class="description"> +<span +class="ecbx-1000">diropts</span> </dt><dd +class="description">Sets the options passed by <span +class="ectt-1000">dodir </span>et al. to the <span +class="ectt-1000">install </span>command. + </dd><dt class="description"> +<span +class="ecbx-1000">exeopts</span> </dt><dd +class="description">Sets the options passed by <span +class="ectt-1000">doexe </span>et al. to the <span +class="ectt-1000">install </span>command. + </dd><dt class="description"> +<span +class="ecbx-1000">libopts</span> </dt><dd +class="description">Sets the options passed by <span +class="ectt-1000">dolib </span>et al. to the <span +class="ectt-1000">install </span>command. + </dd></dl> +<!--l. 478--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><a + id="x1-13700012.3.3"></a>Commands affecting install compression</h5> + <!--l. 480--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">T</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">L</span><span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">B</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">S</span></span></span></p><!--l. 480--><p class="noindent" >In EAPIs listed in table <a +href="#x1-137001r11">12.11<!--tex4ht:ref: tab:compression-table --></a> as supporting controllable compression, the package manager may +optionally compress a subset of the files under the <span +class="ectt-1000">ED </span>directory in offset-prefix aware EAPIs or the +<span +class="ectt-1000">D </span>directory in offset-prefix agnostic EAPIs. To control which directories may or may not be +compressed, the package manager shall maintain two lists: +</p><!--l. 487--><p class="noindent" > + </p><ul> + <li class="compactitem">An inclusion list, which initially contains <span +class="ectt-1000">/usr/share/doc</span>, <span +class="ectt-1000">/usr/share/info </span>and + <span +class="ectt-1000">/usr/share/man</span>. + + + </li> + <li class="compactitem">An exclusion list, which initially contains <span +class="ectt-1000">/usr/share/doc/${PF}/html</span>.</li></ul> +<!--l. 492--><p class="noindent" >The optional compression shall be carried out after <span +class="ectt-1000">src_install </span>has completed, and before the +execution of any subsequent phase function. For each item in the inclusion list, pretend it has the +value of the <span +class="ectt-1000">ED </span>variable in offset-prefix aware EAPIs or the <span +class="ectt-1000">D </span>variable in offset-prefix agnostic +EAPIs prepended, then: +</p><!--l. 498--><p class="noindent" > + </p><ul> + <li class="compactitem">If it is a directory, act as if every file or directory immediately under this directory + were in the inclusion list. + </li> + <li class="compactitem">If the item is a file, it may be compressed unless it has been excluded as described + below. + </li> + <li class="compactitem">If the item does not exist, it is ignored.</li></ul> +<!--l. 504--><p class="noindent" >Whether an item is to be excluded is determined as follows: For each item in the exclusion list, +pretend it has the value of the <span +class="ectt-1000">ED </span>variable in offset-prefix aware EAPIs or the <span +class="ectt-1000">D </span>variable in +offset-prefix agnostic EAPIs prepended, then: +</p><!--l. 509--><p class="noindent" > + </p><ul> + <li class="compactitem">If it is a directory, act as if every file or directory immediately under this directory + were in the exclusion list. + </li> + <li class="compactitem">If the item is a file, it shall not be compressed. + </li> + <li class="compactitem">If the item does not exist, it is ignored.</li></ul> +<!--l. 515--><p class="noindent" >The package manager shall take appropriate steps to ensure that its compression mechanisms +behave sensibly even if an item is listed in the inclusion list multiple times, if an item is a symlink, +or if a file is already compressed. +</p><!--l. 519--><p class="noindent" >The following commands may be used in <span +class="ectt-1000">src_install </span>to alter these lists. It is an error to call any +of these functions from any other phase. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">docompress</span> </dt><dd +class="description">If the first argument is <span +class="ectt-1000">-x</span>, add each of its subsequent arguments to the + exclusion list. Otherwise, add each argument to the inclusion list. Only available in + EAPIs listed in table <a +href="#x1-137001r11">12.11<!--tex4ht:ref: tab:compression-table --></a> as supporting <span +class="ectt-1000">docompress</span>.</dd></dl> +<div class="table"> + + +<!--l. 528--><p class="noindent" ><a + id="x1-137001r11"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.11: </span><span +class="content">EAPIs supporting controllable compression</span></div><!--tex4ht:label?: x1-137001r11 --> +<div class="tabular"> + <table id="TBL-29" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-29-1g"><col +id="TBL-29-1" /><col +id="TBL-29-2" /><col +id="TBL-29-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-29-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-29-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-29-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports controllable compression?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-29-1-3" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">docompress</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-29-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-3" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-29-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-3" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-5-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-5-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-6-2" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-6-3" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><a + id="x1-13800012.3.3"></a>Use List Functions</h5> +<!--l. 545--><p class="nopar" >These functions provide behaviour based upon set or unset use flags. Ebuilds must not run any of +these commands once the current phase function has returned. Ebuilds must not run any of these +functions in global scope. +</p><!--l. 549--><p class="noindent" >If any of these functions is called with a flag value that is not included in <span +class="ectt-1000">IUSE_EFFECTIVE</span>, either +behaviour is undefined or it is an error as decided by table <a +href="#x1-138001r12">12.12<!--tex4ht:ref: tab:use-list-strictness --></a>. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">use</span> </dt><dd +class="description">Returns shell true (0) if the first argument (a <span +class="ectt-1000">USE </span>flag name) is enabled, false otherwise. + If the flag name is prefixed with <span +class="ectt-1000">!</span>, returns true if the flag is disabled, and false if it is + enabled. It is guaranteed that this command is quiet. + </dd><dt class="description"> +<span +class="ecbx-1000">usev</span> </dt><dd +class="description">The same as <span +class="ectt-1000">use</span>, but also prints the flag name if the condition is met. + </dd><dt class="description"> +<span +class="ecbx-1000">useq</span> </dt><dd +class="description">Deprecated synonym for <span +class="ectt-1000">use</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">use_with</span> </dt><dd +class="description">Has one-, two-, and three-argument forms. The first argument is a USE flag + name, the second a <span +class="ectt-1000">configure </span>option name (<span +class="ectt-1000">${opt}</span>), defaulting to the same as the + first argument if not provided, and the third is a string value (<span +class="ectt-1000">${value}</span>), defaulting to + nothing. If the USE flag is set, outputs <span +class="ectt-1000">--with-${opt}=${value} </span>if the third argument + was provided, and <span +class="ectt-1000">--with-${opt} </span>otherwise. If the flag is not set, then it outputs + <span +class="ectt-1000">--without-${opt}</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">use_enable</span> </dt><dd +class="description">Works the same as <span +class="ectt-1000">use_with()</span>, but outputs <span +class="ectt-1000">--enable- </span>or <span +class="ectt-1000">--disable-</span> + instead of <span +class="ectt-1000">--with- </span>or <span +class="ectt-1000">--without-</span>.</dd></dl> +<div class="table"> + + +<!--l. 568--><p class="noindent" ><a + id="x1-138001r12"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.12: </span><span +class="content">EAPI Behaviour for Use Queries not in IUSE_EFFECTIVE</span></div><!--tex4ht:label?: x1-138001r12 --> +<div class="tabular"> + <table id="TBL-30" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-30-1g"><col +id="TBL-30-1" /><col +id="TBL-30-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-30-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-30-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-30-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Behaviour</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-30-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-2-2" +class="td11">Undefined </td></tr><tr + style="vertical-align:baseline;" id="TBL-30-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-3-2" +class="td11">Undefined</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-4-2" +class="td11">Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-5-2" +class="td11">Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-6-2" +class="td11">Error </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><a + id="x1-13900012.3.3"></a>Text List Functions</h5> +<!--l. 584--><p class="nopar" >These functions check whitespace-separated lists for a particular value. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">has</span> </dt><dd +class="description">Returns shell true (0) if the first argument (a word) is found in the list of subsequent + arguments, false otherwise. Guaranteed quiet. + </dd><dt class="description"> +<span +class="ecbx-1000">hasv</span> </dt><dd +class="description">The same as <span +class="ectt-1000">has</span>, but also prints the first argument if found. + </dd><dt class="description"> +<span +class="ecbx-1000">hasq</span> </dt><dd +class="description">Deprecated synonym for <span +class="ectt-1000">has</span>.</dd></dl> +<!--l. 593--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><a + id="x1-14000012.3.3"></a>Misc Commands</h5> +<!--l. 594--><p class="nopar" >The following commands are always available in the ebuild environment, but don’t really fit in any +of the above categories. Ebuilds must not run any of these commands once the current phase +function has returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">dosed</span> </dt><dd +class="description">Takes any number of arguments, which can be files or <span +class="ectt-1000">sed </span>expressions. For each + argument, if it names, relative to <span +class="ectt-1000">ED </span>(offset-prefix aware EAPIs) or <span +class="ectt-1000">D </span>(offset-prefix + agnostic EAPIs) a file which exists, then <span +class="ectt-1000">sed </span>is run with the current expression on that + file. Otherwise, the current expression is set to the text of the argument. The initial + value of the expression is <span +class="ectt-1000">s:${ED}::g </span>in offset-prefix aware EAPIs and <span +class="ectt-1000">s:${D}::g </span>in + offset-prefix agnostic EAPIs. In EAPIs listed in table <a +href="#x1-129001r6">12.6<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned + as per section <a +href="#x1-12900012.3.3">12.3.3<!--tex4ht:ref: sec:banned-commands --></a>. Failure behaviour is EAPI dependent as per section <a +href="#x1-12800012.3.3">12.3.3<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">unpack</span> </dt><dd +class="description">Unpacks one or more source archives, in order, into the current directory. After + unpacking, must ensure that all filesystem objects inside the current working directory + (but not the current working directory itself) have permissions <span +class="ectt-1000">a+r,u+w,go-w </span>and that + all directories under the current working directory additionally have permissions <span +class="ectt-1000">a+x</span>. + <!--l. 613--><p class="noindent" >All arguments to <span +class="ectt-1000">unpack </span>must be either a filename without path, in which case <span +class="ectt-1000">unpack</span> + looks in <span +class="ectt-1000">DISTDIR </span>for the file, or start with the string <span +class="ectt-1000">./</span>, in which case <span +class="ectt-1000">unpack </span>uses the + argument as a path relative to the working directory. + </p><!--l. 617--><p class="noindent" >Any unrecognised file format shall be skipped silently. If unpacking a supported file + format fails, <span +class="ectt-1000">unpack </span>shall abort the build process. + </p><!--l. 620--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span>-<span +class="small-caps">E</span><span +class="small-caps">X</span><span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span></span></span></p><!--l. 620--><p class="noindent" >Must be able to unpack the following file formats, if the relevant binaries are available: + </p> + <ul class="itemize1"> + <li class="itemize">tar files (<span +class="ectt-1000">*.tar</span>). Ebuilds must ensure that GNU tar installed. + </li> + <li class="itemize">gzip-compressed tar files (<span +class="ectt-1000">*.tar.gz, *.tgz, *.tar.Z, *.tbz</span>). Ebuilds must + ensure that GNU gzip and GNU tar are installed. + + + </li> + <li class="itemize">bzip2-compressed tar files (<span +class="ectt-1000">*.tar.bz2, *.tbz2, *.tar.bz</span>). Ebuilds must + ensure that bzip2 and GNU tar are installed. + </li> + <li class="itemize">zip files (<span +class="ectt-1000">*.zip, *.ZIP, *.jar</span>). Ebuilds must ensure that Info-ZIP Unzip is + installed. + </li> + <li class="itemize">gzip files (<span +class="ectt-1000">*.gz, *.Z, *.z</span>). Ebuilds must ensure that GNU gzip is installed. + </li> + <li class="itemize">bzip2 files (<span +class="ectt-1000">*.bz, *.bz2</span>). Ebuilds must ensure that bzip2 is installed. + </li> + <li class="itemize">7zip files (<span +class="ectt-1000">*.7z, *.7Z</span>). Ebuilds must ensure that P7ZIP is installed. + </li> + <li class="itemize">rar files (<span +class="ectt-1000">*.rar, *.RAR</span>). Ebuilds must ensure that RARLAB’s unrar is installed. + </li> + <li class="itemize">LHA archives (<span +class="ectt-1000">*.LHA, *.LHa, *.lha, *.lhz</span>). Ebuilds must ensure that the lha + program is installed. + </li> + <li class="itemize">ar archives (<span +class="ectt-1000">*.a</span>). Ebuilds must ensure that GNU binutils is installed. + </li> + <li class="itemize">deb packages (<span +class="ectt-1000">*.deb</span>). Ebuilds must ensure that the deb2targz program is installed + on those platforms where the GNU binutils ar program is not available and the + installed ar program is incompatible with GNU archives. Otherwise, ebuilds must + ensure that GNU binutils is installed. + </li> + <li class="itemize">lzma-compressed files (<span +class="ectt-1000">*.lzma</span>). Ebuilds must ensure that LZMA Utils is installed. + </li> + <li class="itemize">lzma-compressed tar files (<span +class="ectt-1000">*.tar.lzma</span>). Ebuilds must ensure that LZMA Utils + and GNU tar are installed. + </li> + <li class="itemize">xz-compressed files (<span +class="ectt-1000">*.xz</span>). Ebuilds must ensure that XZ Utils is installed. Only + for EAPIs listed in table <a +href="#x1-140001r13">12.13<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting xz. + </li> + <li class="itemize">xz-compressed tar files (<span +class="ectt-1000">*.tar.xz</span>). Ebuilds must ensure that XZ Utils and GNU + tar are installed. Only for EAPIs listed in table <a +href="#x1-140001r13">12.13<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting xz.</li></ul> + <!--l. 647--><p class="nopar" >It is up to the ebuild to ensure that the relevant external utilities are available, whether by + being in the system set or via dependencies. +</p> + <div class="table"> + <!--l. 650--><p class="noindent" ><a + id="x1-140001r13"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Table 12.13: </span><span +class="content"><span +class="ectt-1000">unpack </span>extensions for EAPIs</span></div><!--tex4ht:label?: x1-140001r13 --> + <div class="tabular"> + <table id="TBL-31" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-31-1g"><col +id="TBL-31-1" /><col +id="TBL-31-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-31-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-31-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-31-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">.xz </span><span +class="ecbx-1000">and </span><span +class="ectt-1000">.tar.xz</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-31-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-31-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-31-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-3-1" +class="td11"><span +class="ectt-1000">1 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-31-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-31-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-31-4-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-31-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-5-1" +class="td11"><span +class="ectt-1000">3 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-31-5-2" +class="td11">Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-31-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-31-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-31-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-7-1" +class="td11"> </td></tr></table></div></div><hr class="endfloat" /> + </div> + </dd><dt class="description"> +<span +class="ecbx-1000">inherit</span> </dt><dd +class="description">See section <a +href="#x1-11300011.1">11.1<!--tex4ht:ref: sec:inherit --></a>. + + + </dd><dt class="description"> +<span +class="ecbx-1000">default</span> </dt><dd +class="description"><!--l. 668--><p class="noindent" > </p><!--l. 668--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span></span></span> Calls the <span +class="ectt-1000">default_ </span>function for the current phase (see section <a +href="#x1-11000010.1.17">10.1.17<!--tex4ht:ref: sec:default-phase-funcs --></a>). Must not be + called if the <span +class="ectt-1000">default_ </span>function does not exist for the current phase in the current EAPI. + Only available in EAPIs listed in table <a +href="#x1-140002r14">12.14<!--tex4ht:ref: tab:default-function-table --></a>.</p></dd></dl> +<div class="table"> + + +<!--l. 674--><p class="noindent" ><a + id="x1-140002r14"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.14: </span><span +class="content">EAPIs supporting the <span +class="ectt-1000">default </span>function</span></div><!--tex4ht:label?: x1-140002r14 --> +<div class="tabular"> + <table id="TBL-32" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-32-1g"><col +id="TBL-32-1" /><col +id="TBL-32-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-32-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-32-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-32-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">default </span><span +class="ecbx-1000">function?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-32-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-32-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><a + id="x1-14100012.3.3"></a>Debug Commands</h5> +<!--l. 690--><p class="nopar" >The following commands are available for debugging. Normally all of these commands should be no +ops; a package manager may provide a special debug mode where these commands instead do +something. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">debug-print</span> </dt><dd +class="description">If in a special debug mode, the arguments should be outputted or recorded + using some kind of debug logging. + </dd><dt class="description"> +<span +class="ecbx-1000">debug-print-function</span> </dt><dd +class="description">Calls <span +class="ectt-1000">debug-print </span>with <span +class="ectt-1000">$1: entering function </span>as the first + argument and the remaining arguments as additional arguments. + </dd><dt class="description"> +<span +class="ecbx-1000">debug-print-section</span> </dt><dd +class="description">Calls <span +class="ectt-1000">debug-print </span>with <span +class="ectt-1000">now in section $*</span>.</dd></dl> +<!--l. 702--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><a + id="x1-14200012.3.3"></a>Reserved Commands and Variables</h5> +<!--l. 704--><p class="nopar" >Except where documented otherwise, all functions and variables that contain any of the following +strings (ignoring case) are reserved for package manager use and may not be used or relied upon by +ebuilds: +</p><!--l. 709--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">abort</span> + </li> + <li class="compactitem"><span +class="ectt-1000">dyn</span> + </li> + <li class="compactitem"><span +class="ectt-1000">ebuild</span> + </li> + <li class="compactitem"><span +class="ectt-1000">hook</span> + </li> + <li class="compactitem"><span +class="ectt-1000">paludis</span> + </li> + <li class="compactitem"><span +class="ectt-1000">portage</span> + </li> + <li class="compactitem"><span +class="ectt-1000">prep</span></li></ul> +<!--l. 1--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">12.4 </span> <a + id="x1-14300012.4"></a>The state of the system between functions</h3> +<!--l. 4--><p class="nopar" >For the sake of this section: +</p><!--l. 7--><p class="noindent" > + + + </p><ul> + <li class="compactitem">Variancy is any package manager action that modifies either <span +class="ectt-1000">ROOT </span>or <span +class="ectt-1000">/ </span>in any way that + isn’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. 17--><p class="noindent" >The following exclusivity and invariancy requirements are mandated: +</p><!--l. 20--><p class="noindent" > + </p><ul> + <li class="compactitem">No variancy shall be introduced at any point between a package’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 13</span><br /><a + id="x1-14400013"></a>Merging and Unmerging</h2> +<!--l. 3--><p class="nopar" ><span class="paragraphHead"><a + id="x1-14500013"></a><span +class="ecbx-1000">Note:</span></span> +In this chapter, <span +class="ecti-1000">file </span>and <span +class="ecti-1000">regular file </span>have their Unix meanings. +</p><!--l. 5--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.1 </span> <a + id="x1-14600013.1"></a>Overview</h3> +<!--l. 7--><p class="nopar" >The merge process merges the contents of the <span +class="ectt-1000">D </span>directory onto the filesystem under <span +class="ectt-1000">ROOT</span>. This is +not a straight copy; there are various subtleties which must be addressed. +</p><!--l. 10--><p class="noindent" >The unmerge process removes an installed package’s files. It is not covered in detail in this +specification. +</p><!--l. 13--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.2 </span> <a + id="x1-14700013.2"></a>Directories</h3> +<!--l. 15--><p class="nopar" >Directories are merged recursively onto the filesystem. The method used to perform the merge is +not specified, so long as the end result is correct. In particular, merging a directory may alter or +remove the source directory under <span +class="ectt-1000">D</span>. +</p><!--l. 19--><p class="noindent" >Ebuilds must not attempt to merge a directory on top of any existing file that is not either a +directory or a symlink to a directory. +</p><!--l. 22--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">13.2.1 </span> <a + id="x1-14800013.2.1"></a>Permissions</h4> +<!--l. 24--><p class="nopar" >The owner, group and mode (including set*id and sticky bits) of the directory must be preserved, +except as follows: +</p><!--l. 28--><p class="noindent" > + </p><ul> + <li class="compactitem">Any directory owned by the user used to perform the build must become owned by the + root user. + </li> + <li class="compactitem">Any directory whose group is the primary group of the user used to perform the build + must have its group be that of the root user.</li></ul> +<!--l. 33--><p class="noindent" >On SELinux systems, the SELinux context must also be preserved. Other directory attributes, +including modification time, may be discarded. +</p><!--l. 36--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">13.2.2 </span> <a + id="x1-14900013.2.2"></a>Empty Directories</h4> + + +<!--l. 38--><p class="nopar" >Behaviour upon encountering an empty directory is undefined. Ebuilds must not attempt to install +an empty directory. +</p><!--l. 41--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.3 </span> <a + id="x1-15000013.3"></a>Regular Files</h3> +<!--l. 43--><p class="nopar" >Regular files are merged onto the filesystem (but see the notes on configuration file protection, +below). The method used to perform the merge is not specified, so long as the end result is +correct. In particular, merging a regular file may alter or remove the source file under +<span +class="ectt-1000">D</span>. +</p><!--l. 47--><p class="noindent" >Ebuilds must not attempt to merge a regular file on top of any existing file that is not either a +regular file or a symlink to a regular file. +</p><!--l. 50--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">13.3.1 </span> <a + id="x1-15100013.3.1"></a>Permissions</h4> +<!--l. 52--><p class="nopar" >The owner, group and mode (including set*id and sticky bits) of the file must be preserved, except +as follows: +</p><!--l. 56--><p class="noindent" > + </p><ul> + <li class="compactitem">Any file owned by the user used to perform the build must become owned by the root + user. + </li> + <li class="compactitem">Any file whose group is the primary group of the user used to perform the build must + have its group be that of the root user. + </li> + <li class="compactitem">The package manager may reduce read and write permissions on executable files that + have a set*id bit set.</li></ul> +<!--l. 63--><p class="noindent" >On SELinux systems, the SELinux context must also be preserved. Other file attributes may be +discarded. +</p><!--l. 66--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">13.3.2 </span> <a + id="x1-15200013.3.2"></a>File modification times</h4> + <!--l. 68--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">M</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">M</span><span +class="small-caps">E</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">V</span><span +class="small-caps">E</span></span></span></p><!--l. 69--><p class="noindent" >In EAPIs listed in table <a +href="#x1-152001r1">13.1<!--tex4ht:ref: tab:mtime-preserve --></a>, the package manager must preserve modification times of +regular files. This includes files being compressed before merging. Exceptions to this are +files newly created by the package manager and binary object files being stripped of +symbols. +</p><!--l. 75--><p class="noindent" >When preserving, the seconds part of every regular file’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. 89--><p class="noindent" ><a + id="x1-152001r1"></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-152001r1 --> +<div class="tabular"> + <table id="TBL-33" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-33-1g"><col +id="TBL-33-1" /><col +id="TBL-33-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-33-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-33-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-33-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">mtimes preserved?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-33-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-2-2" +class="td11">Undefined </td></tr><tr + style="vertical-align:baseline;" id="TBL-33-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-3-2" +class="td11">Undefined</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-4-2" +class="td11">Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">13.3.3 </span> <a + id="x1-15300013.3.3"></a>Configuration File Protection</h4> +<!--l. 108--><p class="nopar" >The package manager must provide a means to prevent user configuration files from +being overwritten by any package updates. The profile variables <span +class="ectt-1000">CONFIG_PROTECT </span>and +<span +class="ectt-1000">CONFIG_PROTECT_MASK </span>(section <a +href="#x1-590005.3">5.3<!--tex4ht:ref: sec:profile-variables --></a>) control the paths for which this must be enforced. +</p><!--l. 113--><p class="noindent" >In order to ensure interoperability with configuration update tools, the following scheme must be +used by all package managers when merging any regular file: +</p><!--l. 117--><p class="noindent" > + </p><dl class="compactenum"><dt class="compactenum"> + 1. </dt><dd +class="compactenum">If the directory containing the file to be merged is not listed in <span +class="ectt-1000">CONFIG_PROTECT</span>, and is + not a subdirectory of any such directory, and if the file is not listed in <span +class="ectt-1000">CONFIG_PROTECT</span>, + the file is merged normally. + </dd><dt class="compactenum"> + 2. </dt><dd +class="compactenum">If the directory containing the file to be merged is listed in <span +class="ectt-1000">CONFIG_PROTECT_MASK</span>, or + is a subdirectory of such a directory, or if the file is listed in <span +class="ectt-1000">CONFIG_PROTECT_MASK</span>, + the file is merged normally. + </dd><dt class="compactenum"> + 3. </dt><dd +class="compactenum">If no existing file with the intended filename exists, or the existing file has identical + content to the one being merged, the file is installed normally. + </dd><dt class="compactenum"> + 4. </dt><dd +class="compactenum">Otherwise, prepend the filename with <span +class="ectt-1000">._cfg0000_</span>. If no file with the new name exists, + then the file is merged with this name. + </dd><dt class="compactenum"> + 5. </dt><dd +class="compactenum">Otherwise, increment the number portion (to form <span +class="ectt-1000">._cfg0001_<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. 132--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.4 </span> <a + id="x1-15400013.4"></a>Symlinks</h3> +<!--l. 134--><p class="nopar" >Symlinks are merged as symlinks onto the filesystem. The link destination for a merged link shall +be the same as the link destination for the link under <span +class="ectt-1000">D</span>, except as noted below. The method used +to perform the merge is not specified, so long as the end result is correct; in particular, merging a +symlink may alter or remove the symlink under <span +class="ectt-1000">D</span>. +</p><!--l. 139--><p class="noindent" >Ebuilds must not attempt to merge a symlink on top of a directory. +</p><!--l. 141--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">13.4.1 </span> <a + id="x1-15500013.4.1"></a>Rewriting</h4> +<!--l. 143--><p class="nopar" >Any absolute symlink whose link starts with <span +class="ectt-1000">D </span>must be rewritten with the leading <span +class="ectt-1000">D </span>removed. The +package manager should issue a notice when doing this. + + +</p><!--l. 146--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.5 </span> <a + id="x1-15600013.5"></a>Hard links</h3> +<!--l. 148--><p class="nopar" >A hard link may be merged either as a single file with links or as multiple independent +files. +</p><!--l. 150--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.6 </span> <a + id="x1-15700013.6"></a>Other Files</h3> +<!--l. 152--><p class="nopar" >Ebuilds must not attempt to install any other type of file (FIFOs, device nodes etc). + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 14</span><br /><a + id="x1-15800014"></a>Metadata Cache</h2> +<h3 class="sectionHead"><span class="titlemark">14.1 </span> <a + id="x1-15900014.1"></a>Directory Contents</h3> +<!--l. 6--><p class="nopar" >The <span +class="ectt-1000">profiles/metadata/cache </span>directory, if it exists, contains directories whose names are the +same as categories in the repository. Each subdirectory may optionally contain one file per +package version in that category, named <span +class="ectt-1000"><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-16000014.2"></a>Cache File Format</h3> +<!--l. 14--><p class="nopar" >Each cache file contains the textual values of various metadata keys, one per line, in the +following order. Other lines may be present following these; their meanings are not defined +here. +</p><!--l. 18--><p class="noindent" > + </p><dl class="compactenum"><dt class="compactenum"> + 1. </dt><dd +class="compactenum">Build-time dependencies (<span +class="ectt-1000">DEPEND</span>) + </dd><dt class="compactenum"> + 2. </dt><dd +class="compactenum">Run-time dependencies (<span +class="ectt-1000">RDEPEND</span>) + </dd><dt class="compactenum"> + 3. </dt><dd +class="compactenum">Slot (<span +class="ectt-1000">SLOT</span>) + </dd><dt class="compactenum"> + 4. </dt><dd +class="compactenum">Source tarball URIs (<span +class="ectt-1000">SRC_URI</span>) + </dd><dt class="compactenum"> + 5. </dt><dd +class="compactenum"><span +class="ectt-1000">RESTRICT</span> + </dd><dt class="compactenum"> + 6. </dt><dd +class="compactenum">Package homepage (<span +class="ectt-1000">HOMEPAGE</span>) + </dd><dt class="compactenum"> + 7. </dt><dd +class="compactenum">Package license (<span +class="ectt-1000">LICENSE</span>) + </dd><dt class="compactenum"> + 8. </dt><dd +class="compactenum">Package description (<span +class="ectt-1000">DESCRIPTION</span>) + </dd><dt class="compactenum"> + 9. </dt><dd +class="compactenum">Package keywords (<span +class="ectt-1000">KEYWORDS</span>) + </dd><dt class="compactenum"> + 10. </dt><dd +class="compactenum">Inherited eclasses (<span +class="ectt-1000">INHERITED</span>) + </dd><dt class="compactenum"> + 11. </dt><dd +class="compactenum">Use flags that this package respects (<span +class="ectt-1000">IUSE</span>) + </dd><dt class="compactenum"> + 12. </dt><dd +class="compactenum">No longer used; this line is to be ignored. + </dd><dt class="compactenum"> + 13. </dt><dd +class="compactenum">Post dependencies (<span +class="ectt-1000">PDEPEND</span>) + </dd><dt class="compactenum"> + 14. </dt><dd +class="compactenum">Old-style virtuals provided by this package (<span +class="ectt-1000">PROVIDE</span>) + </dd><dt class="compactenum"> + 15. </dt><dd +class="compactenum">The ebuild API version to which this package conforms (<span +class="ectt-1000">EAPI</span>) + </dd><dt class="compactenum"> + 16. </dt><dd +class="compactenum">Properties (<span +class="ectt-1000">PROPERTIES</span>). In some EAPIs, may optionally be blank, regardless of ebuild + + + metadata; see table <a +href="#x1-70001r2">8.2<!--tex4ht:ref: tab:properties-table --></a>. + </dd><dt class="compactenum"> + 17. </dt><dd +class="compactenum">Defined phases (<span +class="ectt-1000">DEFINED_PHASES</span>). In some EAPIs, may optionally be blank, regardless + of ebuild metadata; see table <a +href="#x1-75001r4">8.4<!--tex4ht:ref: tab:defined-phases-table --></a>. + </dd><dt class="compactenum"> + 18. </dt><dd +class="compactenum">Blank lines to pad the file to 22 lines long</dd></dl> +<!--l. 40--><p class="noindent" >Future EAPIs may define new variables, remove existing variables, change the line number or +format used for a particular variable, add or reduce the total length of the file and so on. Any +future EAPI that uses this cache format will continue to place the EAPI value on line 15 if such a +concept makes sense for that EAPI, and will place a value that is clearly not a supported EAPI on +line 15 if it does not. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 15</span><br /><a + id="x1-16100015"></a>Glossary</h2> +<!--l. 4--><p class="nopar" >This section contains explanations of some of the terms used in this document whose meaning may +not be immediately obvious. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">qualified package name</span> </dt><dd +class="description">A package name along with its associated category. For example, + <span +class="ectt-1000">app-editors/vim </span>is a qualified package name. + </dd><dt class="description"> +<span +class="ecbx-1000">old-style virtual</span> </dt><dd +class="description">An old-style virtual is a psuedo-package which exists if it is listed in an + ebuild’s <span +class="ectt-1000">PROVIDE </span>variable. See chapter <a +href="#x1-620006">6<!--tex4ht:ref: sec:old-virtuals --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">new-style virtual</span> </dt><dd +class="description">A new-style virtual is a normal package in the <span +class="ectt-1000">virtual </span>category which + installs no files and uses its dependency requirements to pull in a ‘provider’. This + is more flexible than the old-style virtuals described above, and requires no special + package manager code. + </dd><dt class="description"> +<span +class="ecbx-1000">stand-alone repository</span> </dt><dd +class="description">An (ebuild) repository which is intended to function on its own + as the only, or primary, repository on a system. Contrast with <span +class="ecti-1000">slave repository </span>below. + </dd><dt class="description"> +<span +class="ecbx-1000">slave repository, non-stand-alone repository</span> </dt><dd +class="description">An (ebuild) repository which is not + complete enough to function on its own, but needs one or more <span +class="ecti-1000">master repositories </span>to + satisfy dependencies and provide repository-level support files. Known in Portage as + an overlay. + </dd><dt class="description"> +<span +class="ecbx-1000">master repository</span> </dt><dd +class="description">See above. + </dd></dl> + + + + + + +<a + id="x1-161001r206"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix A</span><br /><a + id="x1-162000A"></a>metadata.xml</h2> +<!--l. 4--><p class="nopar" >The <span +class="ectt-1000">metadata.xml </span>file is used to contain extra package- or category-level information beyond what +is stored in ebuild metadata. Its exact format is strictly beyond the scope of this document, and is +described in the DTD file located at <a +href="http://www.gentoo.org/dtd/metadata.dtd" class="url" ><span +class="ectt-1000">http://www.gentoo.org/dtd/metadata.dtd</span></a>. + + +<a + id="x1-162001r206"></a> +</p> +<h2 class="appendixHead"><span class="titlemark">Appendix B</span><br /><a + id="x1-163000B"></a>Unspecified Items</h2> +<!--l. 10--><p class="nopar" >The following items are not specified by this document, and must not be relied upon by ebuilds. +This is, of course, an incomplete list—it covers only the things that the authors know have been +abused in the past. + </p><ul> + <li class="compactitem">The <span +class="ectt-1000">FEATURES </span>variable. This is Portage specific. + </li> + <li class="compactitem">Similarly, any <span +class="ectt-1000">PORTAGE_ </span>variable not explicitly listed. + </li> + <li class="compactitem">Any Portage configuration file. + </li> + <li class="compactitem">The VDB (<span +class="ectt-1000">/var/db/pkg</span>). Ebuilds must not access this or rely upon it existing or being + in any particular format. + </li> + <li class="compactitem">The <span +class="ectt-1000">portageq </span>command. The <span +class="ectt-1000">has_version </span>and <span +class="ectt-1000">best_version </span>commands are + available as functions. + </li> + <li class="compactitem">The <span +class="ectt-1000">emerge </span>command. + </li> + <li class="compactitem">Binary packages. + </li> + <li class="compactitem">The <span +class="ectt-1000">PORTDIR_OVERLAY </span>variable, and overlay behaviour in general.</li></ul> + + +<a + id="x1-163001r206"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix C</span><br /><a + id="x1-164000C"></a>Historical Curiosities</h2> +<!--l. 29--><p class="nopar" >The items described in this chapter are included for information only. They were deprecated or +abandoned long before <span +class="ectt-1000">EAPI </span>was introduced. Ebuilds must not use these features, and package +managers should not be changed to support them. +</p> +<h3 class="sectionHead"><span class="titlemark">C.1 </span> <a + id="x1-165000C.1"></a>If-else use blocks</h3> +<!--l. 35--><p class="nopar" >Historically, Portage supported if-else use conditionals, as shown by listing <a +href="#x1-165001r1">C.1<!--tex4ht:ref: lst:if-else-use-listing --></a>. The block before +the colon would be taken if the condition was met, and the block after the colon would be taken if +the condition was not met. +</p><!--l. 39--><p class="noindent" >This feature was deprecated and removed from the tree long before the introduction of +<span +class="ectt-1000">EAPI</span>. + + +</p><!--l. 42--><p class="noindent" ><a + id="x1-165001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing C.1: </span><span +class="content">If-else use blocks</span></div><!--tex4ht:label?: x1-165001r1 --> +<div class="verbatiminput"> +<span +class="ectt-1000">DEPEND="</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> flag?</span><span +class="ectt-1000"> (</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> taken/if-true</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> )</span><span +class="ectt-1000"> :</span><span +class="ectt-1000"> (</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> taken/if-false</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> )</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> "</span> +<span +class="ectt-1000"> </span><br /> +</div> + + +</div><hr class="endfloat" /> +<h3 class="sectionHead"><span class="titlemark">C.2 </span> <a + id="x1-166000C.2"></a>cvs Versions</h3> +<!--l. 48--><p class="nopar" >Portage has very crude support for CVS packages. The package <span +class="ectt-1000">foo </span>could contain a file named +<span +class="ectt-1000">foo-cvs.1.2.3.ebuild</span>. This version would order <span +class="ecti-1000">higher </span>than any non-CVS version (including +<span +class="ectt-1000">foo-2.ebuild</span>). This feature has not seen real world use and breaks versioned dependencies, so it +must not be used. +</p><!--l. 53--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">C.3 </span> <a + id="x1-167000C.3"></a>use.defaults</h3> +<!--l. 55--><p class="nopar" >The <span +class="ectt-1000">use.defaults </span>file in the profile directory was used to implement ‘autouse’—switching USE +flags on or off depending upon which packages are installed. It was deprecated long ago and finally +removed in 2009. + + + + + + +<a + id="x1-167001r206"></a> +</p> +<h2 class="appendixHead"><span class="titlemark">Appendix D</span><br /><a + id="x1-168000D"></a>Feature Availability by EAPI</h2> +<!--l. 3--><p class="nopar" ><span class="paragraphHead"><a + id="x1-169000D"></a><span +class="ecbx-1000">Note:</span></span> +This chapter is informative and for convenience only. Refer to the main text for specifics. + + + <a + id="x1-169001r1"></a> +</p><!--l. 7--><div class="longtable"> <table id="TBL-34" class="longtable" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-34-1g"><col +id="TBL-34-1" /><col +id="TBL-34-2" /><col +id="TBL-34-3" /><col +id="TBL-34-4" /><col +id="TBL-34-5" /><col +id="TBL-34-6" /><col +id="TBL-34-7" /></colgroup> +<tr + style="vertical-align:baseline;" id="TBL-34-1-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-34-1-1" +class="td11"></td><div class="multicolumn" style="white-space:nowrap; text-align:center;"> <div class="caption" +><span class="id">Table D.1: </span><span +class="content">Features in EAPIs</span></div><!--tex4ht:label?: x1-169001r1 --> </div><a + id="x1-169002"></a> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-2-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-34-2-1" +class="td11"></td><!--cmidrule--> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-34-3-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Feature</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-34-3-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Reference</span></div></td><td colspan="4" style="white-space:nowrap; text-align:center;" id="TBL-34-3-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPIs</span></div></td></tr><tr + style="vertical-align:baseline;" id="TBL-34-4-"><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-3" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;">0</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-4" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;">1</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-5" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;">2</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-6" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;">3</div></td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-7" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">4</div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-34-5-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-34-5-1" +class="td11"></td><!--cmidrule--> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-6-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-34-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-1" +class="td11"></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-2" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-3" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-4" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-5" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-6" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-7" +class="td11"> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-34-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-1" +class="td11">Profile <span +class="ectt-1000">IUSE </span>injection </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-2" +class="td11">profile-iuse-injection p<a +href="#x1-11800012.1.1">165<!--tex4ht:ref: feat:profile-iuse-injection --></a></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-1" +class="td11"><span +class="ectt-1000">IUSE </span>defaults </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-2" +class="td11">iuse-defaults p<a +href="#x1-690008.2">74<!--tex4ht:ref: feat:iuse-defaults --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-1" +class="td11"><span +class="ectt-1000">PROPERTIES </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-2" +class="td11">properties p<a +href="#x1-700008.3">78<!--tex4ht:ref: feat:properties --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-3" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-4" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-5" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-6" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-1" +class="td11"><span +class="ectt-1000">RDEPEND=DEPEND </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-2" +class="td11">rdepend-depend p<a +href="#x1-720008.3.2">81<!--tex4ht:ref: feat:rdepend-depend --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-7" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-1" +class="td11"><span +class="ectt-1000">DEFINED_PHASES </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-2" +class="td11">defined-phases p<a +href="#x1-740008.4">84<!--tex4ht:ref: feat:defined-phases --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-3" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-4" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-5" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-6" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-1" +class="td11"><span +class="ectt-1000">SRC_URI </span>arrows </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-2" +class="td11">src-uri-arrows p<a +href="#x1-910009.2.7">106<!--tex4ht:ref: feat:src-uri-arrows --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-1" +class="td11">Slot dependencies </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-2" +class="td11">slot-deps p<a +href="#x1-860009.2.4">104<!--tex4ht:ref: feat:slot-deps --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-4" +class="td11">Named </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-5" +class="td11">Named </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-6" +class="td11">Named </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-7" +class="td11">Named and Operator</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-1" +class="td11">Use dependencies </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-2" +class="td11">use-deps p<a +href="#x1-820009.2.4">95<!--tex4ht:ref: feat:use-deps --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-5" +class="td11">2-style </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-6" +class="td11">2-style </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-7" +class="td11">4-style </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-1" +class="td11"><span +class="ectt-1000">! </span>blockers </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-2" +class="td11">bang-strength p<a +href="#x1-850009.2.4">101<!--tex4ht:ref: feat:bang-strength --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-3" +class="td11">Unspecified</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-4" +class="td11">Unspecified</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-5" +class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-6" +class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-7" +class="td11">Weak </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-1" +class="td11"><span +class="ectt-1000">!! </span>blockers </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-2" +class="td11">bang-strength p<a +href="#x1-850009.2.4">101<!--tex4ht:ref: feat:bang-strength --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-3" +class="td11">Forbidden </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-4" +class="td11">Forbidden </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-5" +class="td11">Strong </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-6" +class="td11">Strong </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-7" +class="td11">Strong </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-1" +class="td11"><span +class="ectt-1000">S </span>to <span +class="ectt-1000">WORKDIR </span>fallback </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-2" +class="td11">s-workdir-fallback p<a +href="#x1-9400010.1.1">109<!--tex4ht:ref: feat:s-workdir-fallback --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-3" +class="td11">Always </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-4" +class="td11">Always </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-5" +class="td11">Always </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-6" +class="td11">Always </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-7" +class="td11">Conditional </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-1" +class="td11"><span +class="ectt-1000">pkg_pretend </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-2" +class="td11">pkg-pretend p<a +href="#x1-9500010.1.2">112<!--tex4ht:ref: feat:pkg-pretend --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-1" +class="td11"><span +class="ectt-1000">src_prepare </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-2" +class="td11">src-prepare p<a +href="#x1-9800010.1.5">116<!--tex4ht:ref: feat:src-prepare --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-1" +class="td11"><span +class="ectt-1000">src_configure </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-2" +class="td11">src-configure p<a +href="#x1-9900010.1.6">119<!--tex4ht:ref: feat:src-configure --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-1" +class="td11"><span +class="ectt-1000">src_compile </span>style </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-2" +class="td11">src-compile p<a +href="#x1-10000010.1.7">123<!--tex4ht:ref: feat:src-compile --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-3" +class="td11">0 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-4" +class="td11">1 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-5" +class="td11">2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-6" +class="td11">2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-7" +class="td11">2 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-1" +class="td11"><span +class="ectt-1000">src_install </span>style </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-2" +class="td11">src-install p<a +href="#x1-10200010.1.9">129<!--tex4ht:ref: feat:src-install --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-3" +class="td11">no-op </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-4" +class="td11">no-op </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-5" +class="td11">no-op </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-6" +class="td11">no-op </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-7" +class="td11">4 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-1" +class="td11"><span +class="ectt-1000">pkg_info </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-2" +class="td11">pkg-info p<a +href="#x1-10800010.1.15">134<!--tex4ht:ref: feat:pkg-info --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-3" +class="td11">Installed </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-4" +class="td11">Installed </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-5" +class="td11">Installed </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-6" +class="td11">Installed </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-7" +class="td11">Both </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-1" +class="td11"><span +class="ectt-1000">default_ </span>phase functions</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-2" +class="td11">default-phase-funcs p<a +href="#x1-11000010.1.17">137<!--tex4ht:ref: feat:default-phase-funcs --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-3" +class="td11">None </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-4" +class="td11">None </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-5" +class="td11"><span +class="ectt-1000">pkg_nofetch</span>, +<span +class="ectt-1000">src_unpack</span>, +<span +class="ectt-1000">src_prepare</span>, +<span +class="ectt-1000">src_configure</span>, +<span +class="ectt-1000">src_compile</span>, +<span +class="ectt-1000">src_test</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-6" +class="td11"><span +class="ectt-1000">pkg_nofetch</span>, +<span +class="ectt-1000">src_unpack</span>, +<span +class="ectt-1000">src_prepare</span>, +<span +class="ectt-1000">src_configure</span>, +<span +class="ectt-1000">src_compile</span>, +<span +class="ectt-1000">src_test</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-7" +class="td11"><span +class="ectt-1000">pkg_nofetch</span>, +<span +class="ectt-1000">src_unpack</span>, +<span +class="ectt-1000">src_prepare</span>, +<span +class="ectt-1000">src_configure</span>, +<span +class="ectt-1000">src_compile</span>, +<span +class="ectt-1000">src_install</span>, +<span +class="ectt-1000">src_test</span> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-1" +class="td11"><span +class="ectt-1000">AA </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-2" +class="td11">aa p<a +href="#x1-117001r1">154<!--tex4ht:ref: feat:aa --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-7" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-1" +class="td11"><span +class="ectt-1000">KV </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-2" +class="td11">kv p<a +href="#x1-117001r1">157<!--tex4ht:ref: feat:kv --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-7" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-40-1" +class="td11"> </td></tr> + + + + <tr + style="vertical-align:baseline;" id="TBL-34-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-1" +class="td11"><span +class="ectt-1000">REPLACING_VERSIONS </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-2" +class="td11">replace-version-vars p<a +href="#x1-11900012.1.2">166<!--tex4ht:ref: feat:replace-version-vars --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-1" +class="td11"><span +class="ectt-1000">REPLACED_BY_VERSION </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-2" +class="td11">replace-version-vars p<a +href="#x1-11900012.1.2">166<!--tex4ht:ref: feat:replace-version-vars --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-1" +class="td11"><span +class="ectt-1000">EPREFIX</span>, <span +class="ectt-1000">ED</span>, <span +class="ectt-1000">EROOT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-2" +class="td11">offset-prefix-vars p<a +href="#x1-12000012.1.3">169<!--tex4ht:ref: feat:offset-prefix-vars --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-1" +class="td11">Most utilities die </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-2" +class="td11">die-on-failure p<a +href="#x1-12800012.3.3">173<!--tex4ht:ref: feat:die-on-failure --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-1" +class="td11"><span +class="ectt-1000">nonfatal </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-2" +class="td11">nonfatal p<a +href="#x1-12800012.3.3">173<!--tex4ht:ref: feat:nonfatal --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-1" +class="td11"><span +class="ectt-1000">dohard </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-2" +class="td11">banned-commands p<a +href="#x1-12900012.3.3">176<!--tex4ht:ref: feat:banned-commands --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-7" +class="td11">Banned </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-1" +class="td11"><span +class="ectt-1000">dosed </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-2" +class="td11">banned-commands p<a +href="#x1-12900012.3.3">176<!--tex4ht:ref: feat:banned-commands --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-7" +class="td11">Banned </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-1" +class="td11"><span +class="ectt-1000">econf </span>arguments </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-2" +class="td11">econf-options p<a +href="#x1-13400012.3.3">180<!--tex4ht:ref: feat:econf-options --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-3" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-4" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-5" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-6" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-7" +class="td11">disable +dependency +tracking </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-1" +class="td11"><span +class="ectt-1000">dodoc -r </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-2" +class="td11">dodoc p<a +href="#x1-13500012.3.3">183<!--tex4ht:ref: feat:dodoc --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-1" +class="td11"><span +class="ectt-1000">doins </span>handles symlinks </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-2" +class="td11">doins p<a +href="#x1-13500012.3.3">184<!--tex4ht:ref: feat:doins --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-1" +class="td11"><span +class="ectt-1000">doman </span>languages </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-2" +class="td11">doman-langs p<a +href="#x1-13500012.3.3">185<!--tex4ht:ref: feat:doman-langs --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-1" +class="td11">Controllable compression</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-2" +class="td11">controllable-compress p<a +href="#x1-13700012.3.3">195<!--tex4ht:ref: feat:controllable-compress --></a></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-53-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-1" +class="td11"><span +class="ectt-1000">docompress </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-2" +class="td11">controllable-compress p<a +href="#x1-13700012.3.3">195<!--tex4ht:ref: feat:controllable-compress --></a></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-54-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-1" +class="td11"><span +class="ectt-1000">unpack </span>support for <span +class="ectt-1000">xz</span>? </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-2" +class="td11">unpack-extensions p<a +href="#x1-14000012.3.3">202<!--tex4ht:ref: feat:unpack-extensions --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-55-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-1" +class="td11"><span +class="ectt-1000">default </span>function </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-2" +class="td11">default-func p<a +href="#x1-14000012.3.3">204<!--tex4ht:ref: feat:default-func --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-56-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-1" +class="td11">File mtimes preserved </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-2" +class="td11">mtime-preserve p<a +href="#x1-15200013.3.2">212<!--tex4ht:ref: feat:mtime-preserve --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-3" +class="td11">Undefined</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-4" +class="td11">Undefined</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-5" +class="td11">Undefined</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-57-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-57-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-34-58-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-58-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-59-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-59-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-34-60-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-60-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-61-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-61-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-34-17-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-34-17-1" +class="td11"></td><!--cmidrule--></tr><tr + style="vertical-align:baseline;" id="TBL-34-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-18-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-19-1" +class="td11"></td></tr> +</table></div> + + + + + +<a + id="x1-169003r206"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix E</span><br /><a + id="x1-170000E"></a>Differences Between EAPIs</h2> +<!--l. 156--><p class="nopar" ><span class="paragraphHead"><a + id="x1-171000E"></a><span +class="ecbx-1000">Note:</span></span> +This chapter is informative and for convenience only. Refer to the main text for specifics. +</p><!--l. 158--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-172000E"></a>EAPI 0</h3> +<!--l. 160--><p class="nopar" >EAPI 0 is the base EAPI. +</p><!--l. 162--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-173000E"></a>EAPI 1</h3> +<!--l. 164--><p class="nopar" >EAPI 1 is EAPI 0 with the following changes: +</p><!--l. 167--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">IUSE </span>defaults, <span +class="eccc-1000"><span +class="small-caps">I</span><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-690008.2">74<!--tex4ht:ref: feat:iuse-defaults --></a>. + </li> + <li class="compactitem">Slot dependencies, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">L</span><span +class="small-caps">O</span><span +class="small-caps">T</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-860009.2.4">104<!--tex4ht:ref: feat:slot-deps --></a>. + </li> + <li class="compactitem">Different <span +class="ectt-1000">src_compile </span>implementation, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-1 </span>on page <a +href="#x1-10000010.1.7">124<!--tex4ht:ref: feat:src-compile-1 --></a>.</li></ul> +<!--l. 172--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-174000E"></a>EAPI 2</h3> +<!--l. 174--><p class="nopar" >EAPI 2 is EAPI 1 with the following changes: +</p><!--l. 177--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">SRC_URI </span>arrows, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">I</span>-<span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">W</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-910009.2.7">106<!--tex4ht:ref: feat:src-uri-arrows --></a>. + </li> + <li class="compactitem">Use dependencies, <span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-820009.2.4">95<!--tex4ht:ref: feat:use-deps --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">! </span>and <span +class="ectt-1000">!! </span>blockers, <span +class="eccc-1000"><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span>-<span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">T</span><span +class="small-caps">H</span> </span>on page <a +href="#x1-850009.2.4">101<!--tex4ht:ref: feat:bang-strength --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">src_prepare</span>, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-9800010.1.5">116<!--tex4ht:ref: feat:src-prepare --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure</span>, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">G</span><span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-9900010.1.6">119<!--tex4ht:ref: feat:src-configure --></a>. + </li> + <li class="compactitem">Different <span +class="ectt-1000">src_compile </span>implementation, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-2 </span>on page <a +href="#x1-10000010.1.7">125<!--tex4ht:ref: feat:src-compile-2 --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">default_ </span>phase functions for phases <span +class="ectt-1000">pkg_nofetch</span>, <span +class="ectt-1000">src_unpack</span>, <span +class="ectt-1000">src_prepare</span>, + <span +class="ectt-1000">src_configure</span>, <span +class="ectt-1000">src_compile </span>and <span +class="ectt-1000">src_test</span>; <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-11000010.1.17">137<!--tex4ht:ref: feat:default-phase-funcs --></a>. + + + </li> + <li class="compactitem"><span +class="ectt-1000">doman </span>languages support, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span>-<span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13500012.3.3">185<!--tex4ht:ref: feat:doman-langs --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">default </span>function, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span> </span>on page <a +href="#x1-14000012.3.3">204<!--tex4ht:ref: feat:default-func --></a>.</li></ul> +<!--l. 189--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-175000E"></a>EAPI 3</h3> +<!--l. 191--><p class="nopar" >EAPI 3 is EAPI 2 with the following changes: + </p><ul> + <li class="compactitem">Offset-prefix support by definition of <span +class="ectt-1000">EPREFIX</span>, <span +class="ectt-1000">ED </span>and <span +class="ectt-1000">EROOT</span>, <span +class="eccc-1000"><span +class="small-caps">O</span><span +class="small-caps">F</span><span +class="small-caps">F</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">T</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">X</span>-<span +class="small-caps">V</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">S</span></span> + on page <a +href="#x1-12000012.1.3">169<!--tex4ht:ref: feat:offset-prefix-vars --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">unpack </span>supports <span +class="ectt-1000">.xz </span>and <span +class="ectt-1000">.tar.xz</span>, <span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span>-<span +class="small-caps">E</span><span +class="small-caps">X</span><span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-14000012.3.3">202<!--tex4ht:ref: feat:unpack-extensions --></a>. + </li> + <li class="compactitem">File modification times are preserved, <span +class="eccc-1000"><span +class="small-caps">M</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">M</span><span +class="small-caps">E</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">V</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-15200013.3.2">212<!--tex4ht:ref: feat:mtime-preserve --></a>.</li></ul> +<!--l. 199--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-176000E"></a>EAPI 4</h3> +<!--l. 201--><p class="nopar" >EAPI 4 is EAPI 3 with the following changes: +</p><!--l. 204--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend</span>, <span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">K</span><span +class="small-caps">G</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span> </span>on page <a +href="#x1-9500010.1.2">112<!--tex4ht:ref: feat:pkg-pretend --></a>. + </li> + <li class="compactitem">Slot operator dependencies, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">L</span><span +class="small-caps">O</span><span +class="small-caps">T</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">A</span><span +class="small-caps">T</span><span +class="small-caps">O</span><span +class="small-caps">R</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-860009.2.4">104<!--tex4ht:ref: feat:slot-operator-deps --></a>. + </li> + <li class="compactitem">Use dependency defaults, <span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-870009.2.4">105<!--tex4ht:ref: feat:use-dep-defaults --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">DEFINED_PHASES </span>support is mandatory, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-740008.4">84<!--tex4ht:ref: feat:defined-phases --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">PROPERTIES </span>support is mandatory, <span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">E</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-700008.3">78<!--tex4ht:ref: feat:properties --></a>. + </li> + <li class="compactitem">Default <span +class="ectt-1000">src_install </span>no longer a no-op, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span>-4 </span>on page <a +href="#x1-10200010.1.9">129<!--tex4ht:ref: feat:src-install-4 --></a>. + </li> + <li class="compactitem">Controllable compression and <span +class="ectt-1000">docompress</span>, <span +class="eccc-1000"><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">T</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">L</span><span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">B</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13700012.3.3">195<!--tex4ht:ref: feat:controllable-compress --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">dodoc -r </span>support, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">C</span> </span>on page <a +href="#x1-13500012.3.3">183<!--tex4ht:ref: feat:dodoc --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">doins </span>supports symlinks, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13500012.3.3">184<!--tex4ht:ref: feat:doins --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">dohard</span>, <span +class="ectt-1000">dosed </span>banned, <span +class="eccc-1000"><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">D</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-12900012.3.3">176<!--tex4ht:ref: feat:banned-commands --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">econf </span>adds <span +class="ectt-1000">--disable-dependency-tracking</span>, <span +class="eccc-1000"><span +class="small-caps">E</span><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13400012.3.3">180<!--tex4ht:ref: feat:econf-options --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_info </span>can run on non-installed packages, <span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">K</span><span +class="small-caps">G</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">O</span> </span>on page <a +href="#x1-10800010.1.15">134<!--tex4ht:ref: feat:pkg-info --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">USE </span>is calculated differently, <span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-<span +class="small-caps">I</span><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">J</span><span +class="small-caps">E</span><span +class="small-caps">C</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span> </span>on page <a +href="#x1-11800012.1.1">165<!--tex4ht:ref: feat:profile-iuse-injection --></a>. + + + </li> + <li class="compactitem"><span +class="ectt-1000">AA </span>is gone, <span +class="eccc-1000"><span +class="small-caps">A</span><span +class="small-caps">A</span> </span>on page <a +href="#x1-117001r1">154<!--tex4ht:ref: feat:aa --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">KV </span>is gone, <span +class="eccc-1000"><span +class="small-caps">K</span><span +class="small-caps">V</span> </span>on page <a +href="#x1-117001r1">157<!--tex4ht:ref: feat:kv --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">REPLACING_VERSIONS </span>and <span +class="ectt-1000">REPLACED_BY_VERSION</span>, <span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">E</span>-<span +class="small-caps">V</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">S</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span>-<span +class="small-caps">V</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">S</span> </span>on + page <a +href="#x1-11900012.1.2">166<!--tex4ht:ref: feat:replace-version-vars --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">S </span>to <span +class="ectt-1000">WORKDIR </span>fallback restricted, <span +class="eccc-1000"><span +class="small-caps">S</span>-<span +class="small-caps">W</span><span +class="small-caps">O</span><span +class="small-caps">R</span><span +class="small-caps">K</span><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">R</span>-<span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span> </span>on page <a +href="#x1-9400010.1.1">109<!--tex4ht:ref: feat:s-workdir-fallback --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">RDEPEND=DEPEND </span>no longer done, <span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span> </span>on page <a +href="#x1-720008.3.2">81<!--tex4ht:ref: feat:rdepend-depend --></a>. + </li> + <li class="compactitem">Utilities now die on failure, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">E</span>-<span +class="small-caps">O</span><span +class="small-caps">N</span>-<span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-12800012.3.3">173<!--tex4ht:ref: feat:die-on-failure --></a>, unless called under + <span +class="ectt-1000">nonfatal</span>, <span +class="eccc-1000"><span +class="small-caps">N</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span> </span>on page <a +href="#x1-12800012.3.3">173<!--tex4ht:ref: feat:nonfatal --></a></li></ul> + + + + +<h2 class="likechapterHead"><a + id="x1-177000E"></a>Bibliography</h2> + <div class="thebibliography"> + <p class="bibitem" ><span class="biblabel"> + [1]<span class="bibsp">   </span></span><a + id="XGlep44"></a>Marius Mauch. GLEP 44: Manifest2 format. + <a +href="http://glep.gentoo.org/glep-0044.html" class="url" ><span +class="ectt-1000">http://glep.gentoo.org/glep-0044.html</span></a>, December 2005. +</p> + </div> + +</body></html> + + + + diff --git a/3/pms.pdf b/3/pms.pdf new file mode 100644 index 0000000..b059e62 --- /dev/null +++ b/3/pms.pdf @@ -0,0 +1,11965 @@ +%PDF-1.4 +% +1 0 obj +<< /S /GoTo /D (chapter.1) >> +endobj +4 0 obj +(Introduction) +endobj +5 0 obj +<< /S /GoTo /D (section.1.1) >> +endobj +8 0 obj +(Aims and Motivation) +endobj +9 0 obj +<< /S /GoTo /D (section.1.2) >> +endobj +12 0 obj +(Rationale) +endobj +13 0 obj +<< /S /GoTo /D (section.1.3) >> +endobj +16 0 obj +(Conventions) +endobj +17 0 obj +<< /S /GoTo /D (chapter.2) >> +endobj +20 0 obj +(EAPIs) +endobj +21 0 obj +<< /S /GoTo /D (section.2.1) >> +endobj +24 0 obj +(Definition) +endobj +25 0 obj +<< /S /GoTo /D (section.2.2) >> +endobj +28 0 obj +(Defined EAPIs) +endobj +29 0 obj +<< /S /GoTo /D (section.2.3) >> +endobj +32 0 obj +(Reserved EAPIs) +endobj +33 0 obj +<< /S /GoTo /D (chapter.3) >> +endobj +36 0 obj +(Names and Versions) +endobj +37 0 obj +<< /S /GoTo /D (section.3.1) >> +endobj +40 0 obj +(Restrictions upon Names) +endobj +41 0 obj +<< /S /GoTo /D (subsection.3.1.1) >> +endobj +44 0 obj +(Category Names) +endobj +45 0 obj +<< /S /GoTo /D (subsection.3.1.2) >> +endobj +48 0 obj +(Package Names) +endobj +49 0 obj +<< /S /GoTo /D (subsection.3.1.3) >> +endobj +52 0 obj +(Slot Names) +endobj +53 0 obj +<< /S /GoTo /D (subsection.3.1.4) >> +endobj +56 0 obj +(USE Flag Names) +endobj +57 0 obj +<< /S /GoTo /D (subsection.3.1.5) >> +endobj +60 0 obj +(Repository Names) +endobj +61 0 obj +<< /S /GoTo /D (subsection.3.1.6) >> +endobj +64 0 obj +(Keyword Names) +endobj +65 0 obj +<< /S /GoTo /D (section.3.2) >> +endobj +68 0 obj +(Version Specifications) +endobj +69 0 obj +<< /S /GoTo /D (section.3.3) >> +endobj +72 0 obj +(Version Comparison) +endobj +73 0 obj +<< /S /GoTo /D (section.3.4) >> +endobj +76 0 obj +(Uniqueness of versions) +endobj +77 0 obj +<< /S /GoTo /D (chapter.4) >> +endobj +80 0 obj +(Tree Layout) +endobj +81 0 obj +<< /S /GoTo /D (section.4.1) >> +endobj +84 0 obj +(Top Level) +endobj +85 0 obj +<< /S /GoTo /D (section.4.2) >> +endobj +88 0 obj +(Category Directories) +endobj +89 0 obj +<< /S /GoTo /D (section.4.3) >> +endobj +92 0 obj +(Package Directories) +endobj +93 0 obj +<< /S /GoTo /D (section.4.4) >> +endobj +96 0 obj +(The Profiles Directory) +endobj +97 0 obj +<< /S /GoTo /D (subsection.4.4.1) >> +endobj +100 0 obj +(The profiles.desc file) +endobj +101 0 obj +<< /S /GoTo /D (subsection.4.4.2) >> +endobj +104 0 obj +(The thirdpartymirrors file) +endobj +105 0 obj +<< /S /GoTo /D (subsection.4.4.3) >> +endobj +108 0 obj +(use.desc and related files) +endobj +109 0 obj +<< /S /GoTo /D (subsection.4.4.4) >> +endobj +112 0 obj +(The updates directory) +endobj +113 0 obj +<< /S /GoTo /D (section.4.5) >> +endobj +116 0 obj +(The Licenses Directory) +endobj +117 0 obj +<< /S /GoTo /D (section.4.6) >> +endobj +120 0 obj +(The Eclass Directory) +endobj +121 0 obj +<< /S /GoTo /D (section.4.7) >> +endobj +124 0 obj +(The Metadata Directory) +endobj +125 0 obj +<< /S /GoTo /D (subsection.4.7.1) >> +endobj +128 0 obj +(The metadata cache) +endobj +129 0 obj +<< /S /GoTo /D (chapter.5) >> +endobj +132 0 obj +(Profiles) +endobj +133 0 obj +<< /S /GoTo /D (section.5.1) >> +endobj +136 0 obj +(General principles) +endobj +137 0 obj +<< /S /GoTo /D (section.5.2) >> +endobj +140 0 obj +(Files that make up a profile) +endobj +141 0 obj +<< /S /GoTo /D (subsection.5.2.1) >> +endobj +144 0 obj +(The parent file) +endobj +145 0 obj +<< /S /GoTo /D (subsection.5.2.2) >> +endobj +148 0 obj +(The eapi file) +endobj +149 0 obj +<< /S /GoTo /D (subsection.5.2.3) >> +endobj +152 0 obj +(deprecated) +endobj +153 0 obj +<< /S /GoTo /D (subsection.5.2.4) >> +endobj +156 0 obj +(make.defaults) +endobj +157 0 obj +<< /S /GoTo /D (subsection.5.2.5) >> +endobj +160 0 obj +(virtuals) +endobj +161 0 obj +<< /S /GoTo /D (subsection.5.2.6) >> +endobj +164 0 obj +(Simple line-based files) +endobj +165 0 obj +<< /S /GoTo /D (subsection.5.2.7) >> +endobj +168 0 obj +(packages) +endobj +169 0 obj +<< /S /GoTo /D (subsection.5.2.8) >> +endobj +172 0 obj +(packages.build) +endobj +173 0 obj +<< /S /GoTo /D (subsection.5.2.9) >> +endobj +176 0 obj +(package.mask) +endobj +177 0 obj +<< /S /GoTo /D (subsection.5.2.10) >> +endobj +180 0 obj +(package.provided) +endobj +181 0 obj +<< /S /GoTo /D (subsection.5.2.11) >> +endobj +184 0 obj +(package.use) +endobj +185 0 obj +<< /S /GoTo /D (subsection.5.2.12) >> +endobj +188 0 obj +(USE masking and forcing) +endobj +189 0 obj +<< /S /GoTo /D (section.5.3) >> +endobj +192 0 obj +(Profile variables) +endobj +193 0 obj +<< /S /GoTo /D (subsection.5.3.1) >> +endobj +196 0 obj +(Incremental Variables) +endobj +197 0 obj +<< /S /GoTo /D (subsection.5.3.2) >> +endobj +200 0 obj +(Specific variables and their meanings) +endobj +201 0 obj +<< /S /GoTo /D (chapter.6) >> +endobj +204 0 obj +(Old-Style Virtual Packages) +endobj +205 0 obj +<< /S /GoTo /D (section.6.1) >> +endobj +208 0 obj +(Dependencies on virtual packages) +endobj +209 0 obj +<< /S /GoTo /D (chapter.7) >> +endobj +212 0 obj +(Ebuild File Format) +endobj +213 0 obj +<< /S /GoTo /D (chapter.8) >> +endobj +216 0 obj +(Ebuild-defined Variables) +endobj +217 0 obj +<< /S /GoTo /D (section.8.1) >> +endobj +220 0 obj +(Metadata invariance) +endobj +221 0 obj +<< /S /GoTo /D (section.8.2) >> +endobj +224 0 obj +(Mandatory Ebuild-defined Variables) +endobj +225 0 obj +<< /S /GoTo /D (section.8.3) >> +endobj +228 0 obj +(Optional Ebuild-defined Variables) +endobj +229 0 obj +<< /S /GoTo /D (subsection.8.3.1) >> +endobj +232 0 obj +(EAPI) +endobj +233 0 obj +<< /S /GoTo /D (subsection.8.3.2) >> +endobj +236 0 obj +(RDEPEND value) +endobj +237 0 obj +<< /S /GoTo /D (section.8.4) >> +endobj +240 0 obj +(Magic Ebuild-defined Variables) +endobj +241 0 obj +<< /S /GoTo /D (chapter.9) >> +endobj +244 0 obj +(Dependencies) +endobj +245 0 obj +<< /S /GoTo /D (section.9.1) >> +endobj +248 0 obj +(Dependency Classes) +endobj +249 0 obj +<< /S /GoTo /D (section.9.2) >> +endobj +252 0 obj +(Dependency Specification Format) +endobj +253 0 obj +<< /S /GoTo /D (subsection.9.2.1) >> +endobj +256 0 obj +(All-of Dependency Specifications) +endobj +257 0 obj +<< /S /GoTo /D (subsection.9.2.2) >> +endobj +260 0 obj +(Use-conditional Dependency Specifications) +endobj +261 0 obj +<< /S /GoTo /D (subsection.9.2.3) >> +endobj +264 0 obj +(Any-of Dependency Specifications) +endobj +265 0 obj +<< /S /GoTo /D (subsection.9.2.4) >> +endobj +268 0 obj +(Package Dependency Specifications) +endobj +269 0 obj +<< /S /GoTo /D (subsection.9.2.5) >> +endobj +272 0 obj +(Restrict) +endobj +273 0 obj +<< /S /GoTo /D (subsection.9.2.6) >> +endobj +276 0 obj +(Properties) +endobj +277 0 obj +<< /S /GoTo /D (subsection.9.2.7) >> +endobj +280 0 obj +(SRC\137URI) +endobj +281 0 obj +<< /S /GoTo /D (chapter.10) >> +endobj +284 0 obj +(Ebuild-defined Functions) +endobj +285 0 obj +<< /S /GoTo /D (section.10.1) >> +endobj +288 0 obj +(List of Functions) +endobj +289 0 obj +<< /S /GoTo /D (subsection.10.1.1) >> +endobj +292 0 obj +(Initial Working Directories) +endobj +293 0 obj +<< /S /GoTo /D (subsection.10.1.2) >> +endobj +296 0 obj +(pkg\137pretend) +endobj +297 0 obj +<< /S /GoTo /D (subsection.10.1.3) >> +endobj +300 0 obj +(pkg\137setup) +endobj +301 0 obj +<< /S /GoTo /D (subsection.10.1.4) >> +endobj +304 0 obj +(src\137unpack) +endobj +305 0 obj +<< /S /GoTo /D (subsection.10.1.5) >> +endobj +308 0 obj +(src\137prepare) +endobj +309 0 obj +<< /S /GoTo /D (subsection.10.1.6) >> +endobj +312 0 obj +(src\137configure) +endobj +313 0 obj +<< /S /GoTo /D (subsection.10.1.7) >> +endobj +316 0 obj +(src\137compile) +endobj +317 0 obj +<< /S /GoTo /D (subsection.10.1.8) >> +endobj +320 0 obj +(src\137test) +endobj +321 0 obj +<< /S /GoTo /D (subsection.10.1.9) >> +endobj +324 0 obj +(src\137install) +endobj +325 0 obj +<< /S /GoTo /D (subsection.10.1.10) >> +endobj +328 0 obj +(pkg\137preinst) +endobj +329 0 obj +<< /S /GoTo /D (subsection.10.1.11) >> +endobj +332 0 obj +(pkg\137postinst) +endobj +333 0 obj +<< /S /GoTo /D (subsection.10.1.12) >> +endobj +336 0 obj +(pkg\137prerm) +endobj +337 0 obj +<< /S /GoTo /D (subsection.10.1.13) >> +endobj +340 0 obj +(pkg\137postrm) +endobj +341 0 obj +<< /S /GoTo /D (subsection.10.1.14) >> +endobj +344 0 obj +(pkg\137config) +endobj +345 0 obj +<< /S /GoTo /D (subsection.10.1.15) >> +endobj +348 0 obj +(pkg\137info) +endobj +349 0 obj +<< /S /GoTo /D (subsection.10.1.16) >> +endobj +352 0 obj +(pkg\137nofetch) +endobj +353 0 obj +<< /S /GoTo /D (subsection.10.1.17) >> +endobj +356 0 obj +(default\137 Phase Functions) +endobj +357 0 obj +<< /S /GoTo /D (section.10.2) >> +endobj +360 0 obj +(Call Order) +endobj +361 0 obj +<< /S /GoTo /D (chapter.11) >> +endobj +364 0 obj +(Eclasses) +endobj +365 0 obj +<< /S /GoTo /D (section.11.1) >> +endobj +368 0 obj +(The inherit command) +endobj +369 0 obj +<< /S /GoTo /D (section.11.2) >> +endobj +372 0 obj +(Eclass-defined Metadata Keys) +endobj +373 0 obj +<< /S /GoTo /D (section.11.3) >> +endobj +376 0 obj +(EXPORT\137FUNCTIONS) +endobj +377 0 obj +<< /S /GoTo /D (chapter.12) >> +endobj +380 0 obj +(The Ebuild Environment) +endobj +381 0 obj +<< /S /GoTo /D (section.12.1) >> +endobj +384 0 obj +(Defined Variables) +endobj +385 0 obj +<< /S /GoTo /D (subsection.12.1.1) >> +endobj +388 0 obj +(USE and IUSE Handling) +endobj +389 0 obj +<< /S /GoTo /D (subsection.12.1.2) >> +endobj +392 0 obj +(REPLACING\137VERSIONS and REPLACED\137BY\137VERSION) +endobj +393 0 obj +<< /S /GoTo /D (subsection.12.1.3) >> +endobj +396 0 obj +(Offset-prefix variables EPREFIX, EROOT and ED) +endobj +397 0 obj +<< /S /GoTo /D (section.12.2) >> +endobj +400 0 obj +(The state of variables between functions) +endobj +401 0 obj +<< /S /GoTo /D (section.12.3) >> +endobj +404 0 obj +(Available commands) +endobj +405 0 obj +<< /S /GoTo /D (subsection.12.3.1) >> +endobj +408 0 obj +(System commands) +endobj +409 0 obj +<< /S /GoTo /D (subsection.12.3.2) >> +endobj +412 0 obj +(Commands provided by package dependencies) +endobj +413 0 obj +<< /S /GoTo /D (subsection.12.3.3) >> +endobj +416 0 obj +(Ebuild-specific Commands) +endobj +417 0 obj +<< /S /GoTo /D (section.12.4) >> +endobj +420 0 obj +(The state of the system between functions) +endobj +421 0 obj +<< /S /GoTo /D (chapter.13) >> +endobj +424 0 obj +(Merging and Unmerging) +endobj +425 0 obj +<< /S /GoTo /D (section.13.1) >> +endobj +428 0 obj +(Overview) +endobj +429 0 obj +<< /S /GoTo /D (section.13.2) >> +endobj +432 0 obj +(Directories) +endobj +433 0 obj +<< /S /GoTo /D (subsection.13.2.1) >> +endobj +436 0 obj +(Permissions) +endobj +437 0 obj +<< /S /GoTo /D (subsection.13.2.2) >> +endobj +440 0 obj +(Empty Directories) +endobj +441 0 obj +<< /S /GoTo /D (section.13.3) >> +endobj +444 0 obj +(Regular Files) +endobj +445 0 obj +<< /S /GoTo /D (subsection.13.3.1) >> +endobj +448 0 obj +(Permissions) +endobj +449 0 obj +<< /S /GoTo /D (subsection.13.3.2) >> +endobj +452 0 obj +(File modification times) +endobj +453 0 obj +<< /S /GoTo /D (subsection.13.3.3) >> +endobj +456 0 obj +(Configuration File Protection) +endobj +457 0 obj +<< /S /GoTo /D (section.13.4) >> +endobj +460 0 obj +(Symlinks) +endobj +461 0 obj +<< /S /GoTo /D (subsection.13.4.1) >> +endobj +464 0 obj +(Rewriting) +endobj +465 0 obj +<< /S /GoTo /D (section.13.5) >> +endobj +468 0 obj +(Hard links) +endobj +469 0 obj +<< /S /GoTo /D (section.13.6) >> +endobj +472 0 obj +(Other Files) +endobj +473 0 obj +<< /S /GoTo /D (chapter.14) >> +endobj +476 0 obj +(Metadata Cache) +endobj +477 0 obj +<< /S /GoTo /D (section.14.1) >> +endobj +480 0 obj +(Directory Contents) +endobj +481 0 obj +<< /S /GoTo /D (section.14.2) >> +endobj +484 0 obj +(Cache File Format) +endobj +485 0 obj +<< /S /GoTo /D (chapter.15) >> +endobj +488 0 obj +(Glossary) +endobj +489 0 obj +<< /S /GoTo /D (appendix.A) >> +endobj +492 0 obj +(metadata.xml) +endobj +493 0 obj +<< /S /GoTo /D (appendix.B) >> +endobj +496 0 obj +(Unspecified Items) +endobj +497 0 obj +<< /S /GoTo /D (appendix.C) >> +endobj +500 0 obj +(Historical Curiosities) +endobj +501 0 obj +<< /S /GoTo /D (section.C.1) >> +endobj +504 0 obj +(If-else use blocks) +endobj +505 0 obj +<< /S /GoTo /D (section.C.2) >> +endobj +508 0 obj +(cvs Versions) +endobj +509 0 obj +<< /S /GoTo /D (section.C.3) >> +endobj +512 0 obj +(use.defaults) +endobj +513 0 obj +<< /S /GoTo /D (appendix.D) >> +endobj +516 0 obj +(Feature Availability by EAPI) +endobj +517 0 obj +<< /S /GoTo /D (appendix.E) >> +endobj +520 0 obj +(Differences Between EAPIs) +endobj +521 0 obj +<< /S /GoTo /D (appendix.F) >> +endobj +524 0 obj +(Desk Reference) +endobj +525 0 obj +<< /S /GoTo /D [526 0 R /Fit ] >> +endobj +530 0 obj << +/Length 263 +/Filter /FlateDecode +>> +stream +xuMO@9qf]ִQ&MLM=l#Bxy@p?s[7wI +`%xS!@%3Jx!bfJBQx0>{g'"aXwm\콕1WJ8QIC,sxGW9Dm8Φ[ANbN07\ͷ}Tn8u
gaXTopW,Tk*>{ŰJlʮ+Ϯ1mRugc[}7çV-/o? +endstream +endobj +526 0 obj << +/Type /Page +/Contents 530 0 R +/Resources 529 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 534 0 R +/Annots [ 527 0 R 528 0 R ] +>> endobj +527 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [112.791 467.861 199.438 483.802] +/Subtype/Link/A<</Type/Action/S/URI/URI(mailto:spb@exherbo.org)>> +>> endobj +528 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [232.404 467.861 400.117 483.802] +/Subtype/Link/A<</Type/Action/S/URI/URI(mailto:ciaran.mccreesh@googlemail.com)>> +>> endobj +531 0 obj << +/D [526 0 R /XYZ 54.865 827.598 null] +>> endobj +532 0 obj << +/D [526 0 R /XYZ 55.865 793.722 null] +>> endobj +529 0 obj << +/Font << /F37 533 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +580 0 obj << +/Length 1212 +/Filter /FlateDecode +>> +stream +xMs8VH6M:mw2KvZ$b`w~jƸ=lGE +p༿v}-"~謟J}ΨwѽNBEskhC|8~#pA +BVCoeʣCoc]`)2+2R8Crʁ1cz6ͬ[`R>?KXzy c +h5Y
ysSD/'Ř~y8>ΨUw +{|a+_˭H_V斫|( BxiR[I3/21z.5V_stN)Xi6BƄ}[d*sGrTD]IR_aI +76c0_`
G61陑:=>*eb8gqG"'_'Tf:ሲ%hs/ XSm<Ǻ.?^P#'[Vwe3ڏr_t+w:ϚuzōMS"U7KF=rtR` Ѣ_ә +Mjl0PL^8By d6r(/]iNԴ~Lf6Ziߨ</W9 +endstream +endobj +579 0 obj << +/Type /Page +/Contents 580 0 R +/Resources 578 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 534 0 R +/Annots [ 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R ] +>> endobj +535 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 635.196 125.872 644.172] +/A << /S /GoTo /D (chapter.1) >> +>> endobj +536 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 623.261 179.461 632.107] +/A << /S /GoTo /D (section.1.1) >> +>> endobj +537 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 611.306 132.906 620.152] +/A << /S /GoTo /D (section.1.2) >> +>> endobj +538 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 599.35 144.543 608.197] +/A << /S /GoTo /D (section.1.3) >> +>> endobj +539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 577.413 99.481 586.389] +/A << /S /GoTo /D (chapter.2) >> +>> endobj +540 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 565.358 135.128 574.324] +/A << /S /GoTo /D (section.2.1) >> +>> endobj +541 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 553.403 154.764 562.369] +/A << /S /GoTo /D (section.2.2) >> +>> endobj +542 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 541.448 160.144 550.414] +/A << /S /GoTo /D (section.2.3) >> +>> endobj +543 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 519.629 157.703 528.606] +/A << /S /GoTo /D (chapter.3) >> +>> endobj +544 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 505.637 194.893 516.541] +/A << /S /GoTo /D (section.3.1) >> +>> endobj +545 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 493.682 193.13 504.586] +/A << /S /GoTo /D (subsection.3.1.1) >> +>> endobj +546 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 481.727 189.803 492.631] +/A << /S /GoTo /D (subsection.3.1.2) >> +>> endobj +547 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 471.829 172.816 480.675] +/A << /S /GoTo /D (subsection.3.1.3) >> +>> endobj +548 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 457.816 195.78 468.72] +/A << /S /GoTo /D (subsection.3.1.4) >> +>> endobj +549 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 445.861 200.482 456.765] +/A << /S /GoTo /D (subsection.3.1.5) >> +>> endobj +550 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 433.906 193.329 444.81] +/A << /S /GoTo /D (subsection.3.1.6) >> +>> endobj +551 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 421.951 183.545 432.855] +/A << /S /GoTo /D (section.3.2) >> +>> endobj +552 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 409.996 176.353 420.9] +/A << /S /GoTo /D (section.3.3) >> +>> endobj +553 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 398.04 187.541 408.944] +/A << /S /GoTo /D (section.3.4) >> +>> endobj +554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 376.257 123.491 387.136] +/A << /S /GoTo /D (chapter.4) >> +>> endobj +555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 364.167 134.749 375.071] +/A << /S /GoTo /D (section.4.1) >> +>> endobj +556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 352.212 177.847 363.116] +/A << /S /GoTo /D (section.4.2) >> +>> endobj +557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 340.257 174.519 351.161] +/A << /S /GoTo /D (section.4.3) >> +>> endobj +558 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 328.302 183.815 339.206] +/A << /S /GoTo /D (section.4.4) >> +>> endobj +559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 316.347 209.887 327.251] +/A << /S /GoTo /D (subsection.4.4.1) >> +>> endobj +560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 304.392 228.427 315.296] +/A << /S /GoTo /D (subsection.4.4.2) >> +>> endobj +561 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 294.494 225.647 303.34] +/A << /S /GoTo /D (subsection.4.4.3) >> +>> endobj +562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 280.481 213.473 291.385] +/A << /S /GoTo /D (subsection.4.4.4) >> +>> endobj +563 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 268.526 188.228 279.43] +/A << /S /GoTo /D (section.4.5) >> +>> endobj +564 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 256.571 178.823 267.475] +/A << /S /GoTo /D (section.4.6) >> +>> endobj +565 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 244.616 190.44 255.52] +/A << /S /GoTo /D (section.4.7) >> +>> endobj +566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 234.598 205.713 243.565] +/A << /S /GoTo /D (subsection.4.7.1) >> +>> endobj +567 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 212.78 103.726 221.756] +/A << /S /GoTo /D (chapter.5) >> +>> endobj +568 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 198.788 168.034 209.692] +/A << /S /GoTo /D (section.5.1) >> +>> endobj +569 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 186.832 203.371 197.736] +/A << /S /GoTo /D (section.5.2) >> +>> endobj +570 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 174.877 184.702 185.781] +/A << /S /GoTo /D (subsection.5.2.1) >> +>> endobj +571 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 162.922 176.403 173.826] +/A << /S /GoTo /D (subsection.5.2.2) >> +>> endobj +572 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 150.967 169.748 161.871] +/A << /S /GoTo /D (subsection.5.2.3) >> +>> endobj +573 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 141.069 182.012 149.916] +/A << /S /GoTo /D (subsection.5.2.4) >> +>> endobj +574 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 129.114 156.487 137.961] +/A << /S /GoTo /D (subsection.5.2.5) >> +>> endobj +575 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 115.101 217.368 126.005] +/A << /S /GoTo /D (subsection.5.2.6) >> +>> endobj +576 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 103.146 163.113 114.05] +/A << /S /GoTo /D (subsection.5.2.7) >> +>> endobj +581 0 obj << +/D [579 0 R /XYZ 55.865 793.722 null] +>> endobj +578 0 obj << +/Font << /F60 582 0 R /F37 533 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +637 0 obj << +/Length 1525 +/Filter /FlateDecode +>> +stream +xMs8$c6;ntwXNܙ~Jp6v,z#0>1;4ƮmN5fPB`ڔ8ln|Mff\ +'E^(aq9}SP0$;rv̫]έW9q)81$S]";:6wvO3s)"N¢ +PMVjNndUj8/^8/3w8O|kHV=OMŅ{,.sa/eJriEVx]>+Uol}",? +AȽc\j&̾t>e8B'+ޡO) MEƁh53IgTaEm{2}[3O/ڂ36}lĴn&/Ǜod+Fj!PȪ +C/^iQ:xiwCx^u(=V6$WA,4[C>-GO;]~~|X"Cߚ,_%hQ$&"ݬ{,vurI?lBy?NTPeX{WCҊx<nZHYʭ#]Վv
B@.TVQMZdXMywI-vGy +cJ8 +endstream +endobj +636 0 obj << +/Type /Page +/Contents 637 0 R +/Resources 635 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 534 0 R +/Annots [ 577 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R 588 0 R 589 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R 604 0 R 605 0 R 606 0 R 607 0 R 608 0 R 609 0 R 610 0 R 611 0 R 612 0 R 613 0 R 614 0 R 615 0 R 616 0 R 617 0 R 618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R 628 0 R 629 0 R 630 0 R 631 0 R 632 0 R 633 0 R ] +>> endobj +577 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 780.606 185.887 791.51] +/A << /S /GoTo /D (subsection.5.2.8) >> +>> endobj +583 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 768.651 182.759 779.555] +/A << /S /GoTo /D (subsection.5.2.9) >> +>> endobj +584 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 756.695 196.996 767.599] +/A << /S /GoTo /D (subsection.5.2.10) >> +>> endobj +585 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 744.74 175.008 755.644] +/A << /S /GoTo /D (subsection.5.2.11) >> +>> endobj +586 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 732.785 229.812 743.689] +/A << /S /GoTo /D (subsection.5.2.12) >> +>> endobj +587 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 722.887 159.496 731.734] +/A << /S /GoTo /D (section.5.3) >> +>> endobj +588 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 710.932 213.742 719.779] +/A << /S /GoTo /D (subsection.5.3.1) >> +>> endobj +589 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 696.92 275.211 707.824] +/A << /S /GoTo /D (subsection.5.3.2) >> +>> endobj +590 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 675.136 187.012 686.015] +/A << /S /GoTo /D (chapter.6) >> +>> endobj +591 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 663.047 230.559 673.951] +/A << /S /GoTo /D (section.6.1) >> +>> endobj +592 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 643.166 153.279 652.142] +/A << /S /GoTo /D (chapter.7) >> +>> endobj +593 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 621.248 177.259 630.225] +/A << /S /GoTo /D (chapter.8) >> +>> endobj +594 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 609.313 175.127 618.16] +/A << /S /GoTo /D (section.8.1) >> +>> endobj +595 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 595.301 239.505 606.205] +/A << /S /GoTo /D (section.8.2) >> +>> endobj +596 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 583.346 230.658 594.249] +/A << /S /GoTo /D (section.8.3) >> +>> endobj +597 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 573.448 148.737 582.294] +/A << /S /GoTo /D (subsection.8.3.1) >> +>> endobj +598 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 561.373 192.264 570.339] +/A << /S /GoTo /D (subsection.8.3.2) >> +>> endobj +599 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 547.48 221.244 558.384] +/A << /S /GoTo /D (section.8.4) >> +>> endobj +600 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 525.697 129.917 536.576] +/A << /S /GoTo /D (chapter.9) >> +>> endobj +601 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 513.607 176.741 524.511] +/A << /S /GoTo /D (section.9.1) >> +>> endobj +602 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 501.652 230.001 512.556] +/A << /S /GoTo /D (section.9.2) >> +>> endobj +603 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 489.697 261.473 500.601] +/A << /S /GoTo /D (subsection.9.2.1) >> +>> endobj +604 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 477.742 300.765 488.645] +/A << /S /GoTo /D (subsection.9.2.2) >> +>> endobj +605 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 465.786 265.747 476.69] +/A << /S /GoTo /D (subsection.9.2.3) >> +>> endobj +606 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 453.831 270.171 464.735] +/A << /S /GoTo /D (subsection.9.2.4) >> +>> endobj +607 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 443.814 157.593 452.78] +/A << /S /GoTo /D (subsection.9.2.5) >> +>> endobj +608 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 429.921 166.998 440.825] +/A << /S /GoTo /D (subsection.9.2.6) >> +>> endobj +609 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 418.942 167.566 428.87] +/A << /S /GoTo /D (subsection.9.2.7) >> +>> endobj +610 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 398.085 179.291 407.061] +/A << /S /GoTo /D (chapter.10) >> +>> endobj +611 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 386.15 162.804 394.997] +/A << /S /GoTo /D (section.10.1) >> +>> endobj +612 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 372.138 234.265 383.041] +/A << /S /GoTo /D (subsection.10.1.1) >> +>> endobj +613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 360.182 176.403 371.086] +/A << /S /GoTo /D (subsection.10.1.2) >> +>> endobj +614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 348.227 167.556 359.131] +/A << /S /GoTo /D (subsection.10.1.3) >> +>> endobj +615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 336.272 171.97 347.176] +/A << /S /GoTo /D (subsection.10.1.4) >> +>> endobj +616 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 324.317 173.065 335.221] +/A << /S /GoTo /D (subsection.10.1.5) >> +>> endobj +617 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 312.362 180.826 323.266] +/A << /S /GoTo /D (subsection.10.1.6) >> +>> endobj +618 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 300.407 175.297 311.31] +/A << /S /GoTo /D (subsection.10.1.7) >> +>> endobj +619 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 289.428 157.035 299.355] +/A << /S /GoTo /D (subsection.10.1.8) >> +>> endobj +620 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 277.472 167.556 287.4] +/A << /S /GoTo /D (subsection.10.1.9) >> +>> endobj +621 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 264.541 173.643 275.445] +/A << /S /GoTo /D (subsection.10.1.10) >> +>> endobj +622 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 252.586 177.529 263.49] +/A << /S /GoTo /D (subsection.10.1.11) >> +>> endobj +623 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 240.631 170.316 251.535] +/A << /S /GoTo /D (subsection.10.1.12) >> +>> endobj +624 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 228.676 174.201 239.579] +/A << /S /GoTo /D (subsection.10.1.13) >> +>> endobj +625 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 216.72 171.432 227.624] +/A << /S /GoTo /D (subsection.10.1.14) >> +>> endobj +626 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 204.765 162.575 215.669] +/A << /S /GoTo /D (subsection.10.1.15) >> +>> endobj +627 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 192.81 176.403 203.714] +/A << /S /GoTo /D (subsection.10.1.16) >> +>> endobj +628 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 181.702 241.947 191.759] +/A << /S /GoTo /D (subsection.10.1.17) >> +>> endobj +629 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 170.957 137.05 179.804] +/A << /S /GoTo /D (section.10.2) >> +>> endobj +630 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 149.019 106.674 157.995] +/A << /S /GoTo /D (chapter.11) >> +>> endobj +631 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 137.084 180.497 145.931] +/A << /S /GoTo /D (section.11.1) >> +>> endobj +632 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 123.072 214.947 133.975] +/A << /S /GoTo /D (section.11.2) >> +>> endobj +633 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 112.093 193.748 122.02] +/A << /S /GoTo /D (section.11.3) >> +>> endobj +638 0 obj << +/D [636 0 R /XYZ 54.865 827.598 null] +>> endobj +635 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +678 0 obj << +/Length 1426 +/Filter /FlateDecode +>> +stream +xZKsHWpU+eޏ#᰻)SJ08pI}f4#asF-{Fuś>-HXk<kQ@HZQO[as< +Z(DJ9(Ӡ +Qۧ +𮍀S;i=i +o,Toik}{mycHIH׆@]+ +JVaZ;&71\c&U+Zځ5{ +eƎ\[8U|6)g_{#}i"bEeM$D ;C{GuEx]p|=E>+tHb_ُͣ%gf$fgfx1U'/S[hGt%c{7W&0eזWtk`2WE]]'8AVn8R0:2IlJJ6""zy +z(ubS͎}s2ssY*$gZ?!IM<rKwUcRm]\ LrYYqDkoڠe"pxg>*5_fY{K>"]Vr|KdG'M}ż
yn\}wT W3=eww{gfub]<x2a9N#]CB`o0<s.*/I=]s~k1POOT#|NCN
گ͊h5'FYZvKE1MG|aLc>MqL[ᠾ
0NRth)fL&7"~FCNƄ7&ʾXQ#^ < +endstream +endobj +677 0 obj << +/Type /Page +/Contents 678 0 R +/Resources 676 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 534 0 R +/Annots [ 634 0 R 640 0 R 641 0 R 642 0 R 643 0 R 644 0 R 645 0 R 646 0 R 647 0 R 648 0 R 649 0 R 650 0 R 651 0 R 652 0 R 653 0 R 654 0 R 655 0 R 656 0 R 657 0 R 658 0 R 659 0 R 660 0 R 661 0 R 662 0 R 663 0 R 664 0 R 665 0 R 666 0 R 667 0 R 668 0 R 669 0 R 670 0 R 671 0 R 672 0 R 673 0 R 674 0 R 675 0 R ] +>> endobj +634 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 782.643 177.877 791.619] +/A << /S /GoTo /D (chapter.12) >> +>> endobj +640 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 770.708 165.822 779.555] +/A << /S /GoTo /D (section.12.1) >> +>> endobj +641 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 756.695 226.495 767.599] +/A << /S /GoTo /D (subsection.12.1.1) >> +>> endobj +642 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 745.587 367.138 755.644] +/A << /S /GoTo /D (subsection.12.1.2) >> +>> endobj +643 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 732.785 326.539 743.689] +/A << /S /GoTo /D (subsection.12.1.3) >> +>> endobj +644 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 722.887 255.216 731.734] +/A << /S /GoTo /D (section.12.2) >> +>> endobj +645 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 710.932 178.126 719.779] +/A << /S /GoTo /D (section.12.3) >> +>> endobj +646 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 696.92 201.598 707.824] +/A << /S /GoTo /D (subsection.12.3.1) >> +>> endobj +647 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 684.964 313.488 695.868] +/A << /S /GoTo /D (subsection.12.3.2) >> +>> endobj +648 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 673.009 234.604 683.913] +/A << /S /GoTo /D (subsection.12.3.3) >> +>> endobj +649 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 661.054 261.841 671.958] +/A << /S /GoTo /D (section.12.4) >> +>> endobj +650 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 639.271 177.319 650.15] +/A << /S /GoTo /D (chapter.13) >> +>> endobj +651 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 629.238 133.604 638.085] +/A << /S /GoTo /D (section.13.1) >> +>> endobj +652 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 617.283 138.983 626.13] +/A << /S /GoTo /D (section.13.2) >> +>> endobj +653 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 605.328 174.759 614.175] +/A << /S /GoTo /D (subsection.13.2.1) >> +>> endobj +654 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 591.316 199.924 602.22] +/A << /S /GoTo /D (subsection.13.2.2) >> +>> endobj +655 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 579.36 147.979 590.264] +/A << /S /GoTo /D (section.13.3) >> +>> endobj +656 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 569.463 174.759 578.309] +/A << /S /GoTo /D (subsection.13.3.1) >> +>> endobj +657 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 557.507 219.042 566.354] +/A << /S /GoTo /D (subsection.13.3.2) >> +>> endobj +658 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 543.495 243.391 554.399] +/A << /S /GoTo /D (subsection.13.3.3) >> +>> endobj +659 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 531.54 132.368 542.444] +/A << /S /GoTo /D (section.13.4) >> +>> endobj +660 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [92.727 519.585 166.201 530.489] +/A << /S /GoTo /D (subsection.13.4.1) >> +>> endobj +661 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 509.687 136.503 518.533] +/A << /S /GoTo /D (section.13.5) >> +>> endobj +662 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 497.732 139.272 506.578] +/A << /S /GoTo /D (section.13.6) >> +>> endobj +663 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 475.794 141.803 484.77] +/A << /S /GoTo /D (chapter.14) >> +>> endobj +664 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 461.801 170.813 472.705] +/A << /S /GoTo /D (section.14.1) >> +>> endobj +665 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 451.784 168.731 460.75] +/A << /S /GoTo /D (section.14.2) >> +>> endobj +666 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 428.063 109.444 438.942] +/A << /S /GoTo /D (chapter.15) >> +>> endobj +667 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 408.048 130.186 417.024] +/A << /S /GoTo /D (appendix.A) >> +>> endobj +668 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 384.227 147.351 395.106] +/A << /S /GoTo /D (appendix.B) >> +>> endobj +669 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 364.212 162.295 373.188] +/A << /S /GoTo /D (appendix.C) >> +>> endobj +670 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 352.277 164.437 361.124] +/A << /S /GoTo /D (section.C.1) >> +>> endobj +671 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 340.322 144.801 349.168] +/A << /S /GoTo /D (section.C.2) >> +>> endobj +672 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 328.367 141.932 337.213] +/A << /S /GoTo /D (section.C.3) >> +>> endobj +673 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 304.526 195.092 315.405] +/A << /S /GoTo /D (appendix.D) >> +>> endobj +674 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 284.511 188.377 293.487] +/A << /S /GoTo /D (appendix.E) >> +>> endobj +675 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [54.869 262.593 137.738 271.57] +/A << /S /GoTo /D (appendix.F) >> +>> endobj +679 0 obj << +/D [677 0 R /XYZ 54.865 827.598 null] +>> endobj +676 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +692 0 obj << +/Length 456 +/Filter /FlateDecode +>> +stream +xO Wpl P>nVME=Jgȶj^F:SudLt̞~}`pC#_ +(CRI +p@h-L.lקr*yۯ.GsGiAaH3 'Hamq'%$wֵf隻n#&<yH OLյ[rkUp ` J!%tK=~ +endstream +endobj +691 0 obj << +/Type /Page +/Contents 692 0 R +/Resources 690 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 534 0 R +/Annots [ 680 0 R 681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R ] +>> endobj +680 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 643.121 234.056 654.025] +/A << /S /GoTo /D (algorithm.1) >> +>> endobj +681 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 631.166 296.431 642.07] +/A << /S /GoTo /D (algorithm.2) >> +>> endobj +682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 619.211 366.697 630.115] +/A << /S /GoTo /D (algorithm.3) >> +>> endobj +683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 607.256 284.257 618.16] +/A << /S /GoTo /D (algorithm.4) >> +>> endobj +684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 595.301 243.739 606.205] +/A << /S /GoTo /D (algorithm.5) >> +>> endobj +685 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 583.346 256.332 594.249] +/A << /S /GoTo /D (algorithm.6) >> +>> endobj +686 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 571.39 295.634 582.294] +/A << /S /GoTo /D (algorithm.7) >> +>> endobj +687 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 559.435 172.208 570.339] +/A << /S /GoTo /D (algorithm.8) >> +>> endobj +688 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 547.48 169.977 558.384] +/A << /S /GoTo /D (algorithm.9) >> +>> endobj +689 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 535.525 227.251 546.429] +/A << /S /GoTo /D (algorithm.10) >> +>> endobj +693 0 obj << +/D [691 0 R /XYZ 54.865 827.598 null] +>> endobj +694 0 obj << +/D [691 0 R /XYZ 55.865 793.722 null] +>> endobj +690 0 obj << +/Font << /F60 582 0 R /F37 533 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +711 0 obj << +/Length 323 +/Filter /FlateDecode +>> +stream +xQK0 +endstream +endobj +710 0 obj << +/Type /Page +/Contents 711 0 R +/Resources 709 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 534 0 R +/Annots [ 705 0 R 706 0 R 707 0 R 708 0 R ] +>> endobj +705 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 643.121 275.261 654.025] +/A << /S /GoTo /D (listing.11.1) >> +>> endobj +706 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 633.223 242.354 642.07] +/A << /S /GoTo /D (listing.12.1) >> +>> endobj +707 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 621.268 165.284 630.115] +/A << /S /GoTo /D (listing.12.2) >> +>> endobj +708 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 609.313 164.437 618.16] +/A << /S /GoTo /D (listing.C.1) >> +>> endobj +712 0 obj << +/D [710 0 R /XYZ 54.865 827.598 null] +>> endobj +713 0 obj << +/D [710 0 R /XYZ 55.865 793.722 null] +>> endobj +709 0 obj << +/Font << /F60 582 0 R /F37 533 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +753 0 obj << +/Length 1437 +/Filter /FlateDecode +>> +stream +xMwFZ|,
91Ÿ]$=>2X5HI$οBȦ'ǐ ?s#z]CS @x0$gW@錧Χ/`+%q[{QtD8 +( +Q(u: y2A1L멝<9$c37dP0l'ɳ0{?ԑX@ |EŤp;u! &N#HpȜx`"ZVA{a"S=k#rA\R
V[.PgZz};c E[NzЯ)r!'e_@Ffhu{/ɥ"%Hlxw0~]ت +`JvW7Ѡ")lAגxsC9Oq<Hp=n4Wڟjr#!cƤ@@1iz&q^o]\&wn}
eC:AZMA+Q +uld_JNWZܜGM{-9nz,Iϼz?p6䀿D@ + Z\y]\5aFm+JOR)uUB +endstream +endobj +752 0 obj << +/Type /Page +/Contents 753 0 R +/Resources 751 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 756 0 R +/Annots [ 718 0 R 719 0 R 720 0 R 721 0 R 722 0 R 723 0 R 724 0 R 725 0 R 726 0 R 727 0 R 728 0 R 729 0 R 730 0 R 731 0 R 732 0 R 733 0 R 734 0 R 735 0 R 736 0 R 737 0 R 738 0 R 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R ] +>> endobj +718 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 643.121 260.307 654.025] +/A << /S /GoTo /D (table.5.1) >> +>> endobj +719 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 621.204 226.176 632.107] +/A << /S /GoTo /D (table.8.1) >> +>> endobj +720 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 609.248 228.109 620.152] +/A << /S /GoTo /D (table.8.2) >> +>> endobj +721 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 599.231 259.381 608.197] +/A << /S /GoTo /D (table.8.3) >> +>> endobj +722 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 585.338 252.019 596.242] +/A << /S /GoTo /D (table.8.4) >> +>> endobj +723 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 563.42 239.526 574.324] +/A << /S /GoTo /D (table.9.1) >> +>> endobj +724 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 551.465 248.402 562.369] +/A << /S /GoTo /D (table.9.2) >> +>> endobj +725 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 539.51 242.425 550.414] +/A << /S /GoTo /D (table.9.3) >> +>> endobj +726 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 527.555 249.119 538.459] +/A << /S /GoTo /D (table.9.4) >> +>> endobj +727 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 507.639 242.335 516.541] +/A << /S /GoTo /D (table.10.1) >> +>> endobj +728 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 493.682 234.086 504.586] +/A << /S /GoTo /D (table.10.2) >> +>> endobj +729 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 481.727 234.086 492.631] +/A << /S /GoTo /D (table.10.3) >> +>> endobj +730 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 469.771 246.042 480.675] +/A << /S /GoTo /D (table.10.4) >> +>> endobj +731 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 458.439 245.215 468.72] +/A << /S /GoTo /D (table.10.5) >> +>> endobj +732 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 446.708 245.215 456.765] +/A << /S /GoTo /D (table.10.6) >> +>> endobj +733 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 433.906 322.125 444.81] +/A << /S /GoTo /D (table.10.7) >> +>> endobj +734 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 421.951 280.9 432.855] +/A << /S /GoTo /D (table.10.8) >> +>> endobj +735 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 402.09 164.467 410.937] +/A << /S /GoTo /D (table.12.1) >> +>> endobj +736 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 388.078 252.098 398.982] +/A << /S /GoTo /D (table.12.2) >> +>> endobj +737 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 376.123 272.013 387.027] +/A << /S /GoTo /D (table.12.3) >> +>> endobj +738 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 364.167 217.329 375.071] +/A << /S /GoTo /D (table.12.4) >> +>> endobj +739 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 354.27 235.222 363.116] +/A << /S /GoTo /D (table.12.5) >> +>> endobj +740 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 342.314 170.814 351.161] +/A << /S /GoTo /D (table.12.6) >> +>> endobj +741 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 328.302 235.102 339.206] +/A << /S /GoTo /D (table.12.7) >> +>> endobj +742 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 316.347 216.154 327.251] +/A << /S /GoTo /D (table.12.8) >> +>> endobj +743 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 304.392 250.803 315.296] +/A << /S /GoTo /D (table.12.9) >> +>> endobj +744 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 292.436 240.552 303.34] +/A << /S /GoTo /D (table.12.10) >> +>> endobj +745 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 280.481 268.775 291.385] +/A << /S /GoTo /D (table.12.11) >> +>> endobj +746 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 268.9 333.871 279.43] +/A << /S /GoTo /D (table.12.12) >> +>> endobj +747 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 257.194 217.598 267.475] +/A << /S /GoTo /D (table.12.13) >> +>> endobj +748 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 244.616 260.537 255.52] +/A << /S /GoTo /D (table.12.14) >> +>> endobj +749 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 223.072 285.691 233.602] +/A << /S /GoTo /D (table.13.1) >> +>> endobj +750 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [69.813 202.837 167.217 211.684] +/A << /S /GoTo /D (table.D.1) >> +>> endobj +754 0 obj << +/D [752 0 R /XYZ 54.865 827.598 null] +>> endobj +755 0 obj << +/D [752 0 R /XYZ 55.865 793.722 null] +>> endobj +751 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +796 0 obj << +/Length 2015 +/Filter /FlateDecode +>> +stream +xڵXKs8WHU紎'xgJ<5` +Ўo7D"
я7l݇w(Atp$i& M~w,(2}!>OCWɎ?ODyX6[$9 +7"=r0r@HAuٽ4F?ؼ8vUCעo#tǁP7%uTUqz׃*+"}8}#ʡsˮ5"=t!A6 +J4O"x8`jD]#b*GhAvtcN,e56¥3WD*+)u% 2I=QF64EhfxpU[q`avPt
@R5wDG{.NYZlW(k/r +(-D]uX6üT)R ͖ +T[֣peWNGф0<w4Dd-ll6Bi`Xq+R!+"k¾zRF#௸~X4fh(TjvR"*pnDgrE7hl9V?v,I;{z昧!Xhz..^<QPsK!|g'>˾\V!n9lR(qkMBDiA3wEXLae9)'LWXiN`U|VȟdZLU ʼ?q{z&#~Ґ52~f2{niX8CH&a +|{k }jso>r?FE: +o,& wB +D}aEa"<#B۳&Ϊ T,v% +endstream +endobj +795 0 obj << +/Type /Page +/Contents 796 0 R +/Resources 794 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 756 0 R +/Annots [ 790 0 R 791 0 R 792 0 R 793 0 R 801 0 R ] +>> endobj +790 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.82 752.362 352.719 763.266] +/A << /S /GoTo /D (subsection.12.3.3) >> +>> endobj +791 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.886 740.407 143.842 751.31] +/A << /S /GoTo /D (chapter.10) >> +>> endobj +792 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [74.208 728.825 93.635 739.355] +/A << /S /GoTo /D (section.12.2) >> +>> endobj +793 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [205.114 571.565 455.367 581.846] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://creativecommons.org/licenses/by-sa/3.0/)>> +>> endobj +801 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [54.869 560.357 80.772 569.507] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://creativecommons.org/licenses/by-sa/3.0/)>> +>> endobj +797 0 obj << +/D [795 0 R /XYZ 54.865 827.598 null] +>> endobj +798 0 obj << +/D [795 0 R /XYZ 55.865 801.692 null] +>> endobj +799 0 obj << +/D [795 0 R /XYZ 55.865 674.07 null] +>> endobj +802 0 obj << +/D [795 0 R /XYZ 55.865 540.471 null] +>> endobj +794 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F14 800 0 R /F67 639 0 R /F72 803 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +807 0 obj << +/Length 1715 +/Filter /FlateDecode +>> +stream +xڍWM66]lbn[q,W7_R;bQdQ#.h]~vIEϻ<"ߕQFE{nv_Fi$xo*˪qU;H?UqY"
KECEQ𤮖v}CzT8 +Gcx,TaeVoǠtH=AiԞ{F$OhY8ksn=驕}9hFm^ov1R4apx8yNǹɮ[۩r#DhQU OhW'VwwAwꖷkyv1MnHtᆴeɅepay/^n0O?.=Z[st Gn3̥r䈳<p(8l648;8bYF +$+vB;4v/4C-KJ'nfW;+0|yuA4?mnNZFUuJ0|59<(@ikp̈́\B?hw`'Y"XC4;BQ\&Υu"|cXD'IFtD"*#-W + :հng ++l"{iDTOS{D*G $&#S ZK4v;R8ALӇ4|V`䇦;ec*n'@#x.ZV1@;r{Daթw-yay~Gz`8~ScK* +kfQؔ`jo*#Yw+GI."<"<I3Bݝ3sv,BW߆ړxV]+詢YS=]u݁#KD4kM$CUt'XrziƸ\?ѵnZ+1PIS_Iyz]&NC%דfAn_oYtZctz'S"9-U]}mYt.v'ɺ +5y'Y$GoL5=Qג3:)CcXTKAXXؒ4P!xd>GVk[ۍT=3zy4}+/MY9Td{c_C,WIW/_G 박\?) +2' ;"DF иIF1ݎ~O#dz&|eiy{obMbhCq9?͏eJAdҬ}uwcQi抍妬!.Ӝ(7J*uUf +jNFFA)g:K#b71=w9?5seCQª'Md?Q +ޢgCjT +endstream +endobj +806 0 obj << +/Type /Page +/Contents 807 0 R +/Resources 805 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 756 0 R +/Annots [ 804 0 R ] +>> endobj +804 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [321.057 498.314 333.013 509.218] +/A << /S /GoTo /D (chapter.15) >> +>> endobj +808 0 obj << +/D [806 0 R /XYZ 54.865 827.598 null] +>> endobj +2 0 obj << +/D [806 0 R /XYZ 55.865 793.722 null] +>> endobj +6 0 obj << +/D [806 0 R /XYZ 55.865 607.123 null] +>> endobj +10 0 obj << +/D [806 0 R /XYZ 55.865 465.687 null] +>> endobj +14 0 obj << +/D [806 0 R /XYZ 55.865 284.267 null] +>> endobj +805 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F72 803 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +813 0 obj << +/Length 1471 +/Filter /FlateDecode +>> +stream +xXK6m噘I=fI{i%YZʒG6,z}L9) +^Et{/iHJ I&M,"Jep[8nVIէ_XdLWQ]?oqx[E6UB2EmCSwj#TwZԝ$,Om-þw=2=
5w_V2 máa_h ++S>bϲihc%oC/V$Pm0
RIrR -
Ql
5U5hzhmnW* +Ǫ.WILi#f2kM*2dlfd@ +6k hUFv:<.A</ZI0&뾝=2epZ̍5-vDJ]TJ9ϗR-%B ugn4Rӭ[eor[ɏx"|J-3#=1.Lƞ_;W5f}H3;|M=J_dYk@L2,5x:BZʤmzN0څK7_ +f!Ṟjpk!? 7)<GCԬ]8 +endstream +endobj +812 0 obj << +/Type /Page +/Contents 813 0 R +/Resources 811 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 756 0 R +/Annots [ 809 0 R 810 0 R ] +>> endobj +809 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [319.374 438.539 341.292 449.442] +/A << /S /GoTo /D (subsection.5.2.2) >> +>> endobj +810 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.982 215.276 443.159 228.04] +/A << /S /GoTo /D (Hfootnote.1) >> +>> endobj +814 0 obj << +/D [812 0 R /XYZ 54.865 827.598 null] +>> endobj +18 0 obj << +/D [812 0 R /XYZ 55.865 793.722 null] +>> endobj +22 0 obj << +/D [812 0 R /XYZ 55.865 607.123 null] +>> endobj +26 0 obj << +/D [812 0 R /XYZ 55.865 423.844 null] +>> endobj +30 0 obj << +/D [812 0 R /XYZ 55.865 200.581 null] +>> endobj +815 0 obj << +/D [812 0 R /XYZ 70.212 138.059 null] +>> endobj +811 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +818 0 obj << +/Length 371 +/Filter /FlateDecode +>> +stream +xuRMS0+rbHBvvz@@[. ЪxY6@Q4 j+\l$%(eHl,|nN(s89xF[L\>2qJ(Um]&@tfui9n]aqR+5u2Zcڬ^a(V1Z+j{_(S?IY +i ծ4>=\|}heʡR|*VۥJ^*1%q^QRn^kJc!}e>1usol1*_{o"~XB(87Boܔ |iao!>(_ +endstream +endobj +817 0 obj << +/Type /Page +/Contents 818 0 R +/Resources 816 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 756 0 R +>> endobj +819 0 obj << +/D [817 0 R /XYZ 54.865 827.598 null] +>> endobj +816 0 obj << +/Font << /F37 533 0 R /F14 800 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +823 0 obj << +/Length 1329 +/Filter /FlateDecode +>> +stream +xڭWݏ6ǬvܧR +:rTU)BoM${Wwq73K7
<@)(z#%ɔh*Ulso$O +{]qI}{3J4fA{tr:G-4qmW6u7`)QDo +¶;B_]47U34* +--!PrOiYUlS"u駠,\*8T+Q.Hك~YƐi>(.zg:ue!^={@PݏɈ_D17e۟m\* |[dVuU")[oBUh=ZB(UP2FTTo˪Bj)\o?$5!G$AɣS0)bVsq䩀#Oň#qXg8uAX*тa$!>FA +q +>>\^7U'_Rn cƝ<}MAj0l˰}7W<rbTaw
/.ѵǕ: +8O +/oK,V3Vsaj%:?|YtVeI5cIͼq4`40T|t +endstream +endobj +822 0 obj << +/Type /Page +/Contents 823 0 R +/Resources 821 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 756 0 R +/Annots [ 820 0 R ] +>> endobj +820 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [95.825 144.955 122.724 153.802] +/A << /S /GoTo /D (subsection.12.1.1) >> +>> endobj +824 0 obj << +/D [822 0 R /XYZ 54.865 827.598 null] +>> endobj +34 0 obj << +/D [822 0 R /XYZ 55.865 793.722 null] +>> endobj +38 0 obj << +/D [822 0 R /XYZ 55.865 607.123 null] +>> endobj +42 0 obj << +/D [822 0 R /XYZ 55.865 516.686 null] +>> endobj +825 0 obj << +/D [822 0 R /XYZ 55.865 439.699 null] +>> endobj +46 0 obj << +/D [822 0 R /XYZ 55.865 399.062 null] +>> endobj +826 0 obj << +/D [822 0 R /XYZ 55.865 324.133 null] +>> endobj +50 0 obj << +/D [822 0 R /XYZ 55.865 283.495 null] +>> endobj +54 0 obj << +/D [822 0 R /XYZ 55.865 214.444 null] +>> endobj +827 0 obj << +/D [822 0 R /XYZ 55.865 125.503 null] +>> endobj +821 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R /F72 803 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +837 0 obj << +/Length 2520 +/Filter /FlateDecode +>> +stream +xڥYK۸ϯБJ, +%JI)žʾiAH]yRgPufv9˚Fzg췼f|mGW$G<_VW*{G"X0^}wzڷnx@ni~r#w +^jI!h֣B<-ڂ&˞w9;<,2kط[)o`{eaꦵZ˹N͵
j}(gϯ)ub| @`
CYp"1\a
.&4eG +Ug-|^uU@D[[gzS ~:-ޕUEOM]Sd)(0P5>P65We}.!$nYpLptj@x.`P( K#OvuݗMm ,kG[NUu4
ֆgV8mQm^;g
kv|r_@kpsYҫOSq"zi_.vGe1صV?{)FI,"Ț/~Tzk83y'lyu`%Sojg~&;oUݾX?eDhb2#y!ۮ͜ݹ& +m \Rj]^sK3ɶ/w9x,p*w%y$<h +0}}]kM1JAX7C
Iҙ,'YP̳ok_z%ކAq
!bo\tu{|%=֥$o& VvKO`z0$ЧIK^\2C^B^;d2 +Ļ?$Z8:LqIwz1S}]e0 +YeD%zGe +B4`Vj\czkpV0̭`e";Vء?e7m#ʪiHi-oҼ#
*6>TִIu۴*v۫ŕeN17zaA9ѰEhnFutrB ٲ4)>ݡf({m\KCEQ{!:zGxd'$3#m;Άa`ՄϴYf%1(bIgMg/@vPJTbz'E%;K[Y*"5Z']&Cͮ3^ dTd]<J(X3ziUU + +endstream +endobj +836 0 obj << +/Type /Page +/Contents 837 0 R +/Resources 835 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 846 0 R +/Annots [ 828 0 R 829 0 R 830 0 R 831 0 R 832 0 R ] +>> endobj +828 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [108.669 333.956 115.642 344.86] +/A << /S /GoTo /D (algorithm.1) >> +>> endobj +829 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.459 263.087 269.433 273.991] +/A << /S /GoTo /D (algorithm.2) >> +>> endobj +830 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.284 251.132 257.258 262.036] +/A << /S /GoTo /D (algorithm.4) >> +>> endobj +831 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.767 239.177 216.741 250.081] +/A << /S /GoTo /D (algorithm.5) >> +>> endobj +832 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [261.662 227.222 268.636 238.126] +/A << /S /GoTo /D (algorithm.7) >> +>> endobj +838 0 obj << +/D [836 0 R /XYZ 54.865 827.598 null] +>> endobj +58 0 obj << +/D [836 0 R /XYZ 55.865 793.722 null] +>> endobj +62 0 obj << +/D [836 0 R /XYZ 55.865 730.419 null] +>> endobj +66 0 obj << +/D [836 0 R /XYZ 55.865 586.459 null] +>> endobj +70 0 obj << +/D [836 0 R /XYZ 55.865 399.062 null] +>> endobj +695 0 obj << +/D [836 0 R /XYZ 55.865 301.144 null] +>> endobj +839 0 obj << +/D [836 0 R /XYZ 55.865 284.95 null] +>> endobj +840 0 obj << +/D [836 0 R /XYZ 245.304 290.151 null] +>> endobj +841 0 obj << +/D [836 0 R /XYZ 270.927 278.195 null] +>> endobj +842 0 obj << +/D [836 0 R /XYZ 258.753 266.24 null] +>> endobj +843 0 obj << +/D [836 0 R /XYZ 218.235 254.285 null] +>> endobj +844 0 obj << +/D [836 0 R /XYZ 270.13 242.33 null] +>> endobj +74 0 obj << +/D [836 0 R /XYZ 55.865 192.248 null] +>> endobj +835 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R /F14 800 0 R /F72 803 0 R /F8 845 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +849 0 obj << +/Length 1826 +/Filter /FlateDecode +>> +stream +xZnF}WQ/Q +)ڦї$EB$*&V(/2e-wvϜ93$__ #o!!<Є )xpN^O_J)d&8D)9O3J'Ϧ3I&?'2~^^aa0 ~Iu:5)0 dq0ŀڳ鞥W狫lkOLe훧# c.p닿.,z8 HK()4\}%*H|NGnf4nj=Į6^%M VpDY ֟SB$wms|Zī]}[d86a\ް(٥Wdnxp|^ǧ:
'pCc
Db4 +3F$/mH +g"ZzgAzdw. +%{蜭b CG 'arY +qŶUP_}W=9t(Q$|]Hȳ =[܈>\}~u_C/Vk%d%Nl1@ɹ?k.; +mvJn[KM}(3;v7YcnUvKbU!F `p;0O6jK1=SK*5/Yg1}C\U0ڻ1>rΏ>{G\Cڳut4=$x@?/Ի(9zQ2=TIar{5`\;8Z )[WDM=G)a'ze Ƈ0oҕ;EE)EƨQX08vXPA&xe>Pd7E1S잌z{eZuzi{2N*nkU6mU\Q|udg +qH,e㾋=&!nPD#Y
nV\;Ya+&}r2`-9H +endstream +endobj +848 0 obj << +/Type /Page +/Contents 849 0 R +/Resources 847 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 846 0 R +/Annots [ 833 0 R ] +>> endobj +833 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.731 618.436 242.705 629.34] +/A << /S /GoTo /D (algorithm.3) >> +>> endobj +850 0 obj << +/D [848 0 R /XYZ 54.865 827.598 null] +>> endobj +696 0 obj << +/D [848 0 R /XYZ 55.865 765.95 null] +>> endobj +851 0 obj << +/D [848 0 R /XYZ 55.865 749.756 null] +>> endobj +852 0 obj << +/D [848 0 R /XYZ 167.566 741.141 null] +>> endobj +854 0 obj << +/D [848 0 R /XYZ 55.865 715.074 null] +>> endobj +855 0 obj << +/D [848 0 R /XYZ 55.865 704.887 null] +>> endobj +856 0 obj << +/D [848 0 R /XYZ 55.865 691.164 null] +>> endobj +857 0 obj << +/D [848 0 R /XYZ 55.865 680.977 null] +>> endobj +858 0 obj << +/D [848 0 R /XYZ 96.881 681.365 null] +>> endobj +859 0 obj << +/D [848 0 R /XYZ 279.216 669.41 null] +>> endobj +860 0 obj << +/D [848 0 R /XYZ 279.216 657.455 null] +>> endobj +861 0 obj << +/D [848 0 R /XYZ 55.865 631.388 null] +>> endobj +862 0 obj << +/D [848 0 R /XYZ 55.865 619.433 null] +>> endobj +863 0 obj << +/D [848 0 R /XYZ 103.267 621.589 null] +>> endobj +864 0 obj << +/D [848 0 R /XYZ 55.865 597.291 null] +>> endobj +865 0 obj << +/D [848 0 R /XYZ 55.865 585.336 null] +>> endobj +866 0 obj << +/D [848 0 R /XYZ 55.865 573.38 null] +>> endobj +867 0 obj << +/D [848 0 R /XYZ 55.865 561.425 null] +>> endobj +697 0 obj << +/D [848 0 R /XYZ 55.865 481.842 null] +>> endobj +868 0 obj << +/D [848 0 R /XYZ 55.865 465.648 null] +>> endobj +869 0 obj << +/D [848 0 R /XYZ 55.865 456.627 null] +>> endobj +870 0 obj << +/D [848 0 R /XYZ 256.922 458.784 null] +>> endobj +871 0 obj << +/D [848 0 R /XYZ 256.922 446.829 null] +>> endobj +872 0 obj << +/D [848 0 R /XYZ 55.865 420.076 null] +>> endobj +873 0 obj << +/D [848 0 R /XYZ 55.865 410.575 null] +>> endobj +874 0 obj << +/D [848 0 R /XYZ 55.865 396.165 null] +>> endobj +875 0 obj << +/D [848 0 R /XYZ 55.865 386.665 null] +>> endobj +876 0 obj << +/D [848 0 R /XYZ 55.865 374.978 null] +>> endobj +877 0 obj << +/D [848 0 R /XYZ 55.865 362.967 null] +>> endobj +878 0 obj << +/D [848 0 R /XYZ 55.865 349.031 null] +>> endobj +879 0 obj << +/D [848 0 R /XYZ 55.865 338.844 null] +>> endobj +880 0 obj << +/D [848 0 R /XYZ 55.865 325.12 null] +>> endobj +881 0 obj << +/D [848 0 R /XYZ 55.865 314.934 null] +>> endobj +882 0 obj << +/D [848 0 R /XYZ 55.865 303.247 null] +>> endobj +698 0 obj << +/D [848 0 R /XYZ 55.865 223.396 null] +>> endobj +883 0 obj << +/D [848 0 R /XYZ 55.865 207.201 null] +>> endobj +884 0 obj << +/D [848 0 R /XYZ 348.385 212.297 null] +>> endobj +885 0 obj << +/D [848 0 R /XYZ 348.385 200.342 null] +>> endobj +886 0 obj << +/D [848 0 R /XYZ 55.865 174.275 null] +>> endobj +887 0 obj << +/D [848 0 R /XYZ 55.865 164.088 null] +>> endobj +888 0 obj << +/D [848 0 R /XYZ 55.865 150.365 null] +>> endobj +889 0 obj << +/D [848 0 R /XYZ 55.865 140.178 null] +>> endobj +847 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F72 803 0 R /F11 853 0 R /F14 800 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +892 0 obj << +/Length 1890 +/Filter /FlateDecode +>> +stream +xZYoF~D۽ImKDB$!.a|s8 +pdzvk28D@"8z?|ήS(L:D)vDoIׯw00V{60 Q + #8U +)ypƋ5aҋv}:GDPDŽaYqp`Gap!w^.V"RV+B4ݯLK_@d/Ѳ& + +.:ujEb?Rۯ4Gk^$Ji4-!\,fY<Kpp8 ²ti tr}Q4"YK+LBӞHxM,Ml.jN~y2HAߕ]UGc4yߜzl9)(+mYƳJexV]bܘg**5ɏܓ@ƇGHM=*PQnӔ"F5
" x-lXfCKAK8lrwҌu N@AB5G ET/$Mb^{HF庇Fb
FD|K"6D?+>F ,@lOvǘrݛh~Ί9gHC7~!ޥV݆zFu={mX0$J&Wө{ɔz]{$"L 8`A/r g9 + +'}tnm@WNMdaB>ٷ066Q 2Js'
-̌!,?>*n-c_!BfG3lslNjNp>}sA=c;6LX1>d8jQ$CXQ*ju/Җ@@TK~]QGSR%F{/t\4ij(2;z@}F.ggm݁Q^"lmVWǁz(RI~q6%)2cwY룤皆6R̺w =[C&w借$geT:)<9 Xʛ9s``j93vwb?<{F͏rwrHc(|ç(6HJxJ
4tDa~эbbHEDRѭa{@܉`klzeM_N6|p5)cHEDn{,a٣Ʃ;J[A"ϤKtl۹p +endstream +endobj +891 0 obj << +/Type /Page +/Contents 892 0 R +/Resources 890 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 846 0 R +/Annots [ 834 0 R ] +>> endobj +834 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [233.52 682.189 240.493 693.093] +/A << /S /GoTo /D (algorithm.6) >> +>> endobj +893 0 obj << +/D [891 0 R /XYZ 54.865 827.598 null] +>> endobj +699 0 obj << +/D [891 0 R /XYZ 55.865 769.927 null] +>> endobj +894 0 obj << +/D [891 0 R /XYZ 55.865 753.733 null] +>> endobj +895 0 obj << +/D [891 0 R /XYZ 110.012 745.118 null] +>> endobj +896 0 obj << +/D [891 0 R /XYZ 225.418 733.163 null] +>> endobj +897 0 obj << +/D [891 0 R /XYZ 225.418 721.208 null] +>> endobj +898 0 obj << +/D [891 0 R /XYZ 55.865 695.141 null] +>> endobj +899 0 obj << +/D [891 0 R /XYZ 55.865 683.185 null] +>> endobj +900 0 obj << +/D [891 0 R /XYZ 103.267 685.342 null] +>> endobj +901 0 obj << +/D [891 0 R /XYZ 55.865 661.043 null] +>> endobj +902 0 obj << +/D [891 0 R /XYZ 55.865 647.32 null] +>> endobj +903 0 obj << +/D [891 0 R /XYZ 55.865 637.133 null] +>> endobj +904 0 obj << +/D [891 0 R /XYZ 55.865 625.447 null] +>> endobj +905 0 obj << +/D [891 0 R /XYZ 55.865 613.223 null] +>> endobj +906 0 obj << +/D [891 0 R /XYZ 55.865 601.537 null] +>> endobj +907 0 obj << +/D [891 0 R /XYZ 55.865 589.312 null] +>> endobj +908 0 obj << +/D [891 0 R /XYZ 55.865 575.589 null] +>> endobj +909 0 obj << +/D [891 0 R /XYZ 55.865 565.402 null] +>> endobj +910 0 obj << +/D [891 0 R /XYZ 55.865 553.716 null] +>> endobj +911 0 obj << +/D [891 0 R /XYZ 55.865 541.492 null] +>> endobj +912 0 obj << +/D [891 0 R /XYZ 55.865 529.806 null] +>> endobj +700 0 obj << +/D [891 0 R /XYZ 55.865 457.852 null] +>> endobj +913 0 obj << +/D [891 0 R /XYZ 55.865 441.658 null] +>> endobj +914 0 obj << +/D [891 0 R /XYZ 55.865 432.637 null] +>> endobj +915 0 obj << +/D [891 0 R /XYZ 287.397 434.793 null] +>> endobj +916 0 obj << +/D [891 0 R /XYZ 287.397 422.838 null] +>> endobj +917 0 obj << +/D [891 0 R /XYZ 55.865 396.085 null] +>> endobj +918 0 obj << +/D [891 0 R /XYZ 55.865 386.584 null] +>> endobj +919 0 obj << +/D [891 0 R /XYZ 55.865 372.175 null] +>> endobj +920 0 obj << +/D [891 0 R /XYZ 55.865 362.674 null] +>> endobj +921 0 obj << +/D [891 0 R /XYZ 55.865 350.988 null] +>> endobj +922 0 obj << +/D [891 0 R /XYZ 55.865 325.663 null] +>> endobj +923 0 obj << +/D [891 0 R /XYZ 55.865 314.853 null] +>> endobj +924 0 obj << +/D [891 0 R /XYZ 55.865 303.167 null] +>> endobj +925 0 obj << +/D [891 0 R /XYZ 55.865 290.943 null] +>> endobj +701 0 obj << +/D [891 0 R /XYZ 55.865 219.314 null] +>> endobj +926 0 obj << +/D [891 0 R /XYZ 55.865 203.12 null] +>> endobj +927 0 obj << +/D [891 0 R /XYZ 375.255 208.32 null] +>> endobj +928 0 obj << +/D [891 0 R /XYZ 375.255 196.365 null] +>> endobj +929 0 obj << +/D [891 0 R /XYZ 55.865 170.298 null] +>> endobj +930 0 obj << +/D [891 0 R /XYZ 55.865 160.111 null] +>> endobj +931 0 obj << +/D [891 0 R /XYZ 55.865 146.388 null] +>> endobj +932 0 obj << +/D [891 0 R /XYZ 55.865 136.201 null] +>> endobj +890 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F72 803 0 R /F14 800 0 R /F11 853 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +943 0 obj << +/Length 1852 +/Filter /FlateDecode +>> +stream +xXKs6WVj&bHI'POMzHH"XN]"%:qz!VUEn^z(4JV7Uy@AnG AuM^WY8+Xm`bV:nR4齼_Gg-Ui,!"tbR j
EZ㲶mM[/: +;]WTkz=~& Re=Y|ٻ-6(~9 d:eCHҝ*햠ᡠQy}JU)1hnn{0s!yg@ֺyk/ +̇:Vr{eEw=Z"ɼOʂ>+=ӪNua$^B<nMKVzZQ6N7[uh0*ÃzP/ɱ̑1Qa8mEADsb?\o H˞pk?TQG1;UCӦΊ~MSw-C9}I/z8PMLgmdۺ_cy6'Ҁz +ef~!X10;3 +˒
g#U3g(x)DP2DWW%,C½i d (~0t`eo[~~^Uy;BAiRHLȄCqYpY0 +Zk1!P0m/U'.7=B`N +`rL6dRIZyIWPoGʺrO"@XEhtVń`]80{Sōl*0+Mש5`ow-[.N=zC< +:`YڱyMv-oeZeo!'Yaqu +endstream +endobj +942 0 obj << +/Type /Page +/Contents 943 0 R +/Resources 941 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 846 0 R +/Annots [ 933 0 R 934 0 R 935 0 R 936 0 R 937 0 R 938 0 R 939 0 R 940 0 R ] +>> endobj +933 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [249.935 454.793 264.381 463.639] +/A << /S /GoTo /D (section.4.2) >> +>> endobj +934 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [261.692 440.78 276.138 451.684] +/A << /S /GoTo /D (section.4.4) >> +>> endobj +935 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.122 428.825 318.568 439.729] +/A << /S /GoTo /D (section.4.5) >> +>> endobj +936 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.149 416.87 311.594 427.774] +/A << /S /GoTo /D (section.4.6) >> +>> endobj +937 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.122 404.915 318.568 415.819] +/A << /S /GoTo /D (section.4.7) >> +>> endobj +938 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [437.604 301.204 452.05 312.108] +/A << /S /GoTo /D (section.4.4) >> +>> endobj +939 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.106 259.361 291.291 270.265] +/A << /S /GoTo /D (appendix.A) >> +>> endobj +940 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [97.768 235.45 112.214 246.354] +/A << /S /GoTo /D (section.4.3) >> +>> endobj +944 0 obj << +/D [942 0 R /XYZ 54.865 827.598 null] +>> endobj +78 0 obj << +/D [942 0 R /XYZ 55.865 793.722 null] +>> endobj +82 0 obj << +/D [942 0 R /XYZ 55.865 537.831 null] +>> endobj +86 0 obj << +/D [942 0 R /XYZ 55.865 354.354 null] +>> endobj +941 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F14 800 0 R /F67 639 0 R /F72 803 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +953 0 obj << +/Length 2715 +/Filter /FlateDecode +>> +stream +xZK۸W*,.H4'ص;[J$)KR3tCqʕЈa!?xziD"<W(TKc:/|ܭA|ZGo7M[#Oخiԓa88 +c^8XJ$\(>XJ:ɚؒVJMEV
}OUl*s^Zo ny2Ts7zGݼoͫr⃙7@
|k'
ïi1D'e˼ϧbFG!B"du]yNw%K] +OY<Ysaz*Ϸ纮QJ/o)WǬ<WAҋS^Ndy:+N7b<M\ <;©Fup*ҊT-SV{vsXR\mc058:mqDDB2dЗt
$YTֻuGfÔrw0k뷒2&(z)@HGN:H~Ѝמ{ +=i& HMⰾ B2v +.sl Gcvxuh
431b^E֮o6Fk)BrK(s^`D2ok7(S6pE}nj&Ȁ1`G%f;Rքmh8`%[).m}ojۇu(~^%` ;Z%X-;tDB] +VSuQ̉H(IacTPo1SToKK;&knTIwCL^\r#}@1kmg'=w3F"1MO'HhA +}GC8,cn/\C[@zICPe +v@0]O'z<cp}jrw:}CA5 +d^~~.[Mm +W1u%=_=O~fͪٵb:kJ@"<AO% w&0GmX`=oȃQ_/|mv a_u͠NzFԼܣ
U՟*:>,tH FDWjKsRT +) +endstream +endobj +952 0 obj << +/Type /Page +/Contents 953 0 R +/Resources 951 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 846 0 R +/Annots [ 945 0 R 946 0 R 947 0 R 948 0 R 949 0 R ] +>> endobj +945 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [302.339 736.486 309.313 745.333] +/A << /S /GoTo /D (chapter.7) >> +>> endobj +946 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.106 722.474 291.291 733.378] +/A << /S /GoTo /D (appendix.A) >> +>> endobj +947 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[0 1 0] +/Rect [277.841 700.72 284.815 709.467] +/A << /S /GoTo /D (cite.Glep44) >> +>> endobj +948 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.489 457.368 422.463 468.272] +/A << /S /GoTo /D (chapter.5) >> +>> endobj +949 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [222.399 110.803 244.317 121.682] +/A << /S /GoTo /D (subsection.4.4.1) >> +>> endobj +954 0 obj << +/D [952 0 R /XYZ 54.865 827.598 null] +>> endobj +90 0 obj << +/D [952 0 R /XYZ 55.865 793.722 null] +>> endobj +94 0 obj << +/D [952 0 R /XYZ 55.865 510.519 null] +>> endobj +951 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F14 800 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +964 0 obj << +/Length 2749 +/Filter /FlateDecode +>> +stream +xڽYܶbUdy"ap;usE$E[nkpcusSD9qn6]zM.D%M)M&Hhs]l~>lu';/yJ;O(%a;vTfKdgx*1:aY9 :'F?¦ZĭiD:s>Xi7>߽mIe.W9Ozes^,vzE;e"fR12Skcly|6Wm(0A_5wuI]uՔ<k8p=log8T=t@L_
mM@ll\Q;s?P߾mvȉe4-۶;¼8}*`g;b +iPrnoz.I{hV;4;SN.Ia-4q+v"Jʞe`Ԩ 5e{VMŀjJ[_vr +#/Y'H4?-LPth,-'1r([w~3LWRc +MbBHl1$v4|qLR4}+?Tp~vGܨ"Μz՜G8gc7Lէo~6MNf8a-,6:˅_U{* +S(\?'{lCހhՠT@WovNvtTGN<gdS"(^`uD +np%- żuXK_23!Ks7%ri(t$$#"!4;P?ɸ1@#N0hx
O@x{{MCTQlVpDL~?STa@e;[0C]Y6u@Lo]3qry.iCL2L-;7q5ƍRZAX썵*ʚh3[ +/ZrW\ZbvϢV +<5N"WUJoT;ir1ӑc?6S4$nh;ZBLZ8^?G#۴vu+침8b9
Mݚf`I~k_8i2x{18cOQ7I4BLf/:w +!VFg !2gƺrjhko
.h(8|[`/MEřHrR0^atK$R<^l#@aT)I\cO=yOD9N:#[[J45zN9) +/W$q<\[FW9Ța['I͞W2 +<Sy|W[ݓd=OOu/N84d46LEt$Z^N~CyOluI3q
ꢁv>P1:)ZIF߅HxVƭ)dydp +>f0{䔨4kl dYr/mͭXʘI^ve
Y
2(lA|lp]Qq˵xGTo[a
HF''\^-p +endstream +endobj +963 0 obj << +/Type /Page +/Contents 964 0 R +/Resources 962 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 846 0 R +/Annots [ 950 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R 961 0 R ] +>> endobj +950 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [142.589 770.708 164.507 779.555] +/A << /S /GoTo /D (subsection.3.1.5) >> +>> endobj +956 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.122 750.852 270.04 761.731] +/A << /S /GoTo /D (subsection.4.4.2) >> +>> endobj +957 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [120.732 722.887 142.649 731.734] +/A << /S /GoTo /D (subsection.4.4.3) >> +>> endobj +958 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [351.006 690.942 372.924 701.846] +/A << /S /GoTo /D (subsection.4.4.3) >> +>> endobj +959 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.399 637.144 183.316 648.048] +/A << /S /GoTo /D (subsection.4.4.3) >> +>> endobj +960 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.253 619.211 267.171 630.225] +/A << /S /GoTo /D (subsection.4.4.4) >> +>> endobj +961 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.484 560.058 431.93 570.962] +/A << /S /GoTo /D (section.4.4) >> +>> endobj +965 0 obj << +/D [963 0 R /XYZ 54.865 827.598 null] +>> endobj +98 0 obj << +/D [963 0 R /XYZ 55.865 605.637 null] +>> endobj +102 0 obj << +/D [963 0 R /XYZ 55.865 391.067 null] +>> endobj +106 0 obj << +/D [963 0 R /XYZ 55.865 152.586 null] +>> endobj +962 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R /F72 803 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +971 0 obj << +/Length 2460 +/Filter /FlateDecode +>> +stream +xڭ]۸=2P3"%Q5&\Z ۲-DINn}g8CcI +>Xï7\W'{urkWwU*R$^Www4R4Rp
/덖/xg߸#(ao=r%Ʉ +&y=7 +ʵJ/kewOK_p=
INQqCt8}Ié*.
AQ0hxۘn:ҟ +zޖt0OűӼlXy}u@^eW6\M{,NKO7a<s$'=,`gb(mwi<Gmb׀n)smKU?{fdzFD_5~=Uv}8({u^BX| PZY/oT5|v83 Fi]'ح3*"M)oW$tBBSBX:p\ll%*c{^6˫=s0N2=jk.?D!D0pEщIKrb皶(55N^٭eo*BDQr.d<*{HD:>4D:5&_Þ t`@9Q+St-2&AcC\N*00Rm D>{-4AaT4GCf߿m
uN@\ٶ) +t(ClTq^ uDɡj1?#T[P9{0c$E@1PqTڇJleAF"=A V:
S +/w0㨮r-[8]
nn +mH.XxnQ_f{ni?_|XMK&gKgpIN6;MF2b$$H<RƻjW-tr#)0RM#7JQ,R]!S& +R}Qc1HjZc9F ,m4i)~N5\(Jj< )t@yg'j!G\=$Gb=E$];,/q,}aw 1&KfDŽ=
ГfQ NQ<h*5a_MsN&ܙdػP9.߯ePCTbĘS{$yD*&FoRި +T?^E6l|<9@TP>#o +gLod7A|sy'Dvcٛۗ7=@ƱȜ骫i;iy!qOX,_ +\9 +tԗ#Z/$kq8M:Fr2@-jAumC[؟ +endstream +endobj +970 0 obj << +/Type /Page +/Contents 971 0 R +/Resources 969 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 973 0 R +/Annots [ 966 0 R 967 0 R ] +>> endobj +966 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [72.924 360.706 87.37 371.61] +/A << /S /GoTo /D (section.8.2) >> +>> endobj +967 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.196 268.95 199.151 279.854] +/A << /S /GoTo /D (chapter.11) >> +>> endobj +972 0 obj << +/D [970 0 R /XYZ 54.865 827.598 null] +>> endobj +110 0 obj << +/D [970 0 R /XYZ 55.865 679.37 null] +>> endobj +114 0 obj << +/D [970 0 R /XYZ 55.865 439.824 null] +>> endobj +118 0 obj << +/D [970 0 R /XYZ 55.865 334.056 null] +>> endobj +122 0 obj << +/D [970 0 R /XYZ 55.865 242.3 null] +>> endobj +969 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F72 803 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +976 0 obj << +/Length 418 +/Filter /FlateDecode +>> +stream +xuQN0+|tqmvcZE&)gl'egyWD"[,I1+T14cDI=%2#3UsQGM TGC)Oj/figi TGEh'=ȭv{aU$μXsc8g_nEpa#%w8њHDI bF)١%M96D!=%R6)"R>8 /)Qj|(NGyjjG)w}n?:8Um/wys
U80_Ķ.de;C亻w8T#rm?1[n7\uٿgb0l6[ +endstream +endobj +975 0 obj << +/Type /Page +/Contents 976 0 R +/Resources 974 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 973 0 R +/Annots [ 968 0 R ] +>> endobj +968 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.251 743.993 324.206 754.897] +/A << /S /GoTo /D (chapter.14) >> +>> endobj +977 0 obj << +/D [975 0 R /XYZ 54.865 827.598 null] +>> endobj +126 0 obj << +/D [975 0 R /XYZ 55.865 793.722 null] +>> endobj +974 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +980 0 obj << +/Length 1799 +/Filter /FlateDecode +>> +stream +xڍM6_[dɖ
mѝ +slEcܷ"8N(7iFl>ZlH)tM)T*tyh6&qH_ӭ<-ef>![f,OU%k"ͶL|4FvyrsHZjf!sbVɛNEENNx;"w-D{Z[mF_َp`^ܟys"ei=6>"y:ѠRF 5?d4C
o"1-6DRMw<zQuߡ*8k˫?W>Bn>/Y^iIƹj$nZ[WGѦ߶\l'opO[)>Nhk:?bFNZX~j¡8 9{)F\qQXtL@/P9 +]Sd"clM X'Wn8zflNJT]m8( + SoS$JAs]q%(a~dҠM!B?Y+⩧f?Ģt<u<Ky@2) +g2v!o>|~mژ!D&?::ϏT$!ba9WTl0d[I)hi0 @`1i\5X̢ZxcçQ~ +On,@AO"ggn,u +DuzdJz4D~:8+:[ +OCR?k:m-[G*Rކޯ8ȋvq[u_ g!Z~vS)i~Xj#]v9IōHʅ!$fJ'ʠǨ\z)i&FE8%!Ç4XG~ +q݅ѥ3}h+߸R?{/D,~OTg,agNi|+ԛG&;` B"Z;@1 +endstream +endobj +979 0 obj << +/Type /Page +/Contents 980 0 R +/Resources 978 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 973 0 R +>> endobj +981 0 obj << +/D [979 0 R /XYZ 54.865 827.598 null] +>> endobj +130 0 obj << +/D [979 0 R /XYZ 55.865 793.722 null] +>> endobj +134 0 obj << +/D [979 0 R /XYZ 55.865 607.123 null] +>> endobj +138 0 obj << +/D [979 0 R /XYZ 55.865 435.799 null] +>> endobj +142 0 obj << +/D [979 0 R /XYZ 55.865 400.822 null] +>> endobj +146 0 obj << +/D [979 0 R /XYZ 55.865 247.5 null] +>> endobj +978 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +985 0 obj << +/Length 3048 +/Filter /FlateDecode +>> +stream +xڝYY~_!L#yal&Hl7HZ"gD,E$I:;^E쳺ίJf1o_}yolSEMAo $ܕ"30 +?J@@4'ҁ#?|$?&utw&o?v5y;ye_|
pHW<8ϋ7h1^Ym{Ur1,o@4,~wo G];ںx|AkOzJ:?%kx(),sb==m.eAv x'JQ'Y1&ñ4pb@ѳܺ4(s0y$naƏoc?1
`xmbkGgҥG;ry2<!KUөjKC۲0Zh1iV'-B)>VNЁ Yv~o>If
Q{e=D*]d$~/Cڬe-`?!{wA:'B&lHؠ&*mQcנo0[{;1nj^he3LUWY8wZ\N\ďMbr^6xsϝtlL*(;^vwxB(eϠbǺk_lwuQVN6weuo/8ؾzL5rP*@0"(2A{6 uw{_]cr$p%Kv*&.P%$y:vi/62x!yG*nC=ȫa+A{GP5<X[Iv) dFS6Vʲċ'NTa~I:</uYVZbY<
jáJL{ +ܚ! +A)FKS4VvWZaFN"}vuM +?185시r|rrB>>5裦2(Rȁlq +\`E4R®zVV/PW]پb _) +s,18-Ic5MWʪO5[:Qx +̸TȹQL<r+),AjaMLUE-2fEԣ< z", + +o'(Ȱ[T
$~wM̻(ˢ|RDDtGY$Z|uH H5W+'5)k_>/Za V'Rb7T>r [ge$h33?) fP!%l"~Z.XРwY DB`\rEl)˗LT?!WD.ci}H +"9WQIAz!X +"m-+A.<h"b5]uĎz
B3L}.k0*>gLJqr)RH4v)3~24ͽ=S&)A +#XzXܫu - +(˸8,W( +endstream +endobj +984 0 obj << +/Type /Page +/Contents 985 0 R +/Resources 983 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 973 0 R +/Annots [ 982 0 R ] +>> endobj +982 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.604 607.131 310.05 618.035] +/A << /S /GoTo /D (section.5.3) >> +>> endobj +986 0 obj << +/D [984 0 R /XYZ 54.865 827.598 null] +>> endobj +150 0 obj << +/D [984 0 R /XYZ 55.865 793.722 null] +>> endobj +154 0 obj << +/D [984 0 R /XYZ 55.865 678.678 null] +>> endobj +158 0 obj << +/D [984 0 R /XYZ 55.865 462.051 null] +>> endobj +162 0 obj << +/D [984 0 R /XYZ 55.865 301.279 null] +>> endobj +166 0 obj << +/D [984 0 R /XYZ 55.865 206.26 null] +>> endobj +983 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R /F72 803 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +991 0 obj << +/Length 2643 +/Filter /FlateDecode +>> +stream +xڭYݏ۸_@̈>O{&MMw["e"K$'}g8C}xd5"Gr>C*\7tEd_ʼn2ZeR$Vo?p|P:>5zTvId*yQD.ȅ +1HDٓ>6.1STY{]J$c +Ъز@NN(gkO
*<=Uֳi:;ftNhմeWrnB܍UØ +Neo*]E +>D+Vmik%~9]v@
K}+-8 +cYJLTq'1+(o4'Uyޕi8qQ
y2!s-É;wob] oڧ)п{ҶQ*TN#:a͒]!h,(p+b::HQZ Q*25b4"POKi5"/5ѷ8C_uPR⿹O^#tA+D6י_AlWvtlGxAF( +bҖR볡$?ΠO5$O_PA +endstream +endobj +990 0 obj << +/Type /Page +/Contents 991 0 R +/Resources 989 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 973 0 R +/Annots [ 987 0 R 988 0 R ] +>> endobj +987 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [292.188 619.58 306.634 630.484] +/A << /S /GoTo /D (section.4.4) >> +>> endobj +988 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [327.086 238.244 334.06 249.148] +/A << /S /GoTo /D (algorithm.8) >> +>> endobj +992 0 obj << +/D [990 0 R /XYZ 54.865 827.598 null] +>> endobj +170 0 obj << +/D [990 0 R /XYZ 55.865 793.722 null] +>> endobj +174 0 obj << +/D [990 0 R /XYZ 55.865 718.958 null] +>> endobj +993 0 obj << +/D [990 0 R /XYZ 55.865 602.68 null] +>> endobj +178 0 obj << +/D [990 0 R /XYZ 55.865 562.536 null] +>> endobj +182 0 obj << +/D [990 0 R /XYZ 55.865 468.011 null] +>> endobj +186 0 obj << +/D [990 0 R /XYZ 55.865 361.531 null] +>> endobj +190 0 obj << +/D [990 0 R /XYZ 55.865 158.289 null] +>> endobj +989 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +998 0 obj << +/Length 2299 +/Filter /FlateDecode +>> +stream +xY[s6~R;7q9U8Xt'xh I9 +(hg)d3gvϚ-Jza +%~hmERnui=Ihzf>$7i~, X4$+}m:ŎHadc9#UUDŽQWT$[&GƝC)zNKq7ល#Vg^ȵ)T$3պX+ph-DU(uj+,Qa0D6WA9 +p~LYD!#!QH0 Hna={x?CLF%חvl ؏.*~Xwx_v8G"#3#2@~6[{q("JPOtNnc{$E&H5^tpA 95ͱg|")kOe +̳_$JMD: &D ͠2a4D$mψj
)-@[VP[U=*M\ +g*@Ԅy}MQgje73[FA6
PUn,%EKos|nRU# +N*UB
k +Ҕ/Q,oLčQL'xS久zqgz$݂Ȼ)soˁ:Dw:GO ɻǤ4-&|p>8d
F gMnuGrk˪<_I|]+ FU2(_J86:6'w +"+uZzԮacZP X!ƘC-mi;3YQsPq؆qg'=aHzlZN,ieWf..n rr(S~"[5UYjOJ +Ify&U2%Ev +HVPoM3\ Y}W)ޗmmzqR6a*/ {_b)[E`5݁Z3uqZtJذ)GYߞ6eclq?-? +endstream +endobj +997 0 obj << +/Type /Page +/Contents 998 0 R +/Resources 996 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 973 0 R +/Annots [ 994 0 R ] +>> endobj +994 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.556 269.08 295.002 279.984] +/A << /S /GoTo /D (table.5.1) >> +>> endobj +999 0 obj << +/D [997 0 R /XYZ 54.865 827.598 null] +>> endobj +702 0 obj << +/D [997 0 R /XYZ 55.865 793.722 null] +>> endobj +1000 0 obj << +/D [997 0 R /XYZ 55.865 777.527 null] +>> endobj +1001 0 obj << +/D [997 0 R /XYZ 147.391 782.728 null] +>> endobj +1002 0 obj << +/D [997 0 R /XYZ 55.865 756.661 null] +>> endobj +1003 0 obj << +/D [997 0 R /XYZ 55.865 744.825 null] +>> endobj +1004 0 obj << +/D [997 0 R /XYZ 55.865 734.808 null] +>> endobj +1005 0 obj << +/D [997 0 R /XYZ 55.865 720.915 null] +>> endobj +1006 0 obj << +/D [997 0 R /XYZ 55.865 710.897 null] +>> endobj +1007 0 obj << +/D [997 0 R /XYZ 106.841 710.997 null] +>> endobj +1008 0 obj << +/D [997 0 R /XYZ 55.865 684.93 null] +>> endobj +1009 0 obj << +/D [997 0 R /XYZ 55.865 673.094 null] +>> endobj +1010 0 obj << +/D [997 0 R /XYZ 55.865 663.077 null] +>> endobj +1011 0 obj << +/D [997 0 R /XYZ 55.865 649.184 null] +>> endobj +1012 0 obj << +/D [997 0 R /XYZ 55.865 639.166 null] +>> endobj +1013 0 obj << +/D [997 0 R /XYZ 55.865 627.191 null] +>> endobj +1014 0 obj << +/D [997 0 R /XYZ 55.865 615.236 null] +>> endobj +757 0 obj << +/D [997 0 R /XYZ 193.669 590.529 null] +>> endobj +194 0 obj << +/D [997 0 R /XYZ 55.865 462.271 null] +>> endobj +198 0 obj << +/D [997 0 R /XYZ 55.865 147.91 null] +>> endobj +996 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R /F72 803 0 R /F106 1015 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1025 0 obj << +/Length 1769 +/Filter /FlateDecode +>> +stream +xڽXmo6_o)
%NuI:C@LM\lɊn"䑼{c~ū $X4?PG $ +h}nUb>Uct g cxQ-2#yS|Mߏ
R&J5u
Ȯ "~ 7Zݹ˙W;ԛ}gu=K~]q7fWh$ y0$ih~{SN\1_$WFn~Q-Y#M[I2i]u[eBHt;+}}iLb)U~{\=`#$L~)ji/ \f+ 2
Y,:f}8C⇲Ʀne79s̑[fSڌml#ݐ5OB^sglYm(?>a]$X
+wח7rߛO{/ WgwoODCyY4@z+rylX!TImm`Sa$yKP\y E<j9!^j +q?1DGcc?'t$ +@rkEnBT.f?4wa:XKpjEڬIb5AFNGo[й* +uߴT@mA%@۲ΚR'F0X'1CP +[\uIiI]k$uhgЈCDO˛dP $h4U<&g +FCUnG{SR^4H& A{=ہ$d?X,lDvv*fDi@CП50n)ULqJVYmjx{Ŷh'Xj̷P]/?szFOUt>8>rO:ca5ǦЋem-3-8ZR?O4NFu[82g`uFh81b8SKx|atuH|@ړY$[KѧY\OLط[i8ztWO#*z<P~9J]պ6o}tU`G5tְu +7Wr4&N/0;, +endstream +endobj +1024 0 obj << +/Type /Page +/Contents 1025 0 R +/Resources 1023 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1027 0 R +/Annots [ 995 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R ] +>> endobj +995 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [97.768 768.651 112.214 779.555] +/A << /S /GoTo /D (section.4.4) >> +>> endobj +1016 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.18 738.763 398.079 749.667] +/A << /S /GoTo /D (subsection.13.3.3) >> +>> endobj +1017 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.217 678.987 404.117 689.891] +/A << /S /GoTo /D (subsection.12.1.1) >> +>> endobj +1018 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [435.113 649.099 449.559 660.003] +/A << /S /GoTo /D (table.5.1) >> +>> endobj +1019 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [271.942 639.146 298.842 648.048] +/A << /S /GoTo /D (subsection.12.1.1) >> +>> endobj +1020 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [97.768 567.47 124.667 576.317] +/A << /S /GoTo /D (subsection.12.1.1) >> +>> endobj +1021 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.718 547.48 218.164 558.384] +/A << /S /GoTo /D (table.5.1) >> +>> endobj +1022 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.583 525.627 112.483 534.474] +/A << /S /GoTo /D (subsection.12.1.1) >> +>> endobj +1026 0 obj << +/D [1024 0 R /XYZ 54.865 827.598 null] +>> endobj +1023 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1035 0 obj << +/Length 1562 +/Filter /FlateDecode +>> +stream +xڍXK6W(,ESҤdڝ@KZnVjӜL +~6Nd"]hCtg걵7kO^c zmEj +_ QUz/]# #+6^O;b ;=cn<
qkָ=f8TρU*ey2_zDNWXM( #َmc\T7(e:wzu3VbrI A\wh)У%FRT ^=#NCF;7a3hD1=Ng1ϳJ ՆI"jk(Ԃc'k=coDBUsڻKlՇapn}0B"aA2#xz2*SB9YOJmpif=<zlE~m.mhuzʭIp9/]~❛Id9 8WP>T$iBrU"JXJ]t~|9L9u6-NuI<)]
rz +A +y,v
XmS!:j_p Id nHD
~aӄ64Hk@g ['2QZ恔sPGgas1;W +endstream +endobj +1034 0 obj << +/Type /Page +/Contents 1035 0 R +/Resources 1033 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1027 0 R +/Annots [ 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R ] +>> endobj +1028 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.301 550.469 364.747 561.373] +/A << /S /GoTo /D (section.8.3) >> +>> endobj +1029 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.331 550.469 404.249 561.373] +/A << /S /GoTo /D (subsection.5.2.5) >> +>> endobj +1030 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.491 348.501 385.409 359.405] +/A << /S /GoTo /D (subsection.5.2.5) >> +>> endobj +1031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [347.328 324.591 369.245 335.495] +/A << /S /GoTo /D (subsection.5.2.5) >> +>> endobj +1032 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.008 276.77 374.926 287.674] +/A << /S /GoTo /D (section*.18) >> +>> endobj +1036 0 obj << +/D [1034 0 R /XYZ 54.865 827.598 null] +>> endobj +202 0 obj << +/D [1034 0 R /XYZ 55.865 793.722 null] +>> endobj +1037 0 obj << +/D [1034 0 R /XYZ 55.865 479.276 null] +>> endobj +206 0 obj << +/D [1034 0 R /XYZ 55.865 425.562 null] +>> endobj +1033 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R /F72 803 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1045 0 obj << +/Length 621 +/Filter /FlateDecode +>> +stream +xmT=o0+8R@REC'LYdJ 8v<ݻȞ0}\2YZ\'Bu)HiwM6\0Z%۟UU]e&V
?m<QE+N =iҦY +59Ur
cz[m&Cc+%n:OqAs@uV>M6E^/Z0*Teh2FlR:Th,[˯d9}O]Y'\r4&(!gQ\?ML^A+@V +bAAi` +uo +nk!+SPڝ^j;V/q`j +a98&ط^aL2=f;<{8Z +endstream +endobj +1044 0 obj << +/Type /Page +/Contents 1045 0 R +/Resources 1043 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1027 0 R +/Annots [ 1039 0 R 1040 0 R 1041 0 R 1042 0 R ] +>> endobj +1039 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [299.176 574.379 306.15 585.283] +/A << /S /GoTo /D (Hfootnote.7) >> +>> endobj +1040 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.346 574.379 354.302 585.283] +/A << /S /GoTo /D (Hfootnote.7) >> +>> endobj +1041 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.449 550.469 155.423 561.373] +/A << /S /GoTo /D (chapter.8) >> +>> endobj +1042 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.39 550.469 185.345 561.373] +/A << /S /GoTo /D (chapter.10) >> +>> endobj +1046 0 obj << +/D [1044 0 R /XYZ 54.865 827.598 null] +>> endobj +210 0 obj << +/D [1044 0 R /XYZ 55.865 793.722 null] +>> endobj +1043 0 obj << +/Font << /F60 582 0 R /F37 533 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1060 0 obj << +/Length 2316 +/Filter /FlateDecode +>> +stream +xڵv-`[(؎%'/3lxBQ4r!kZ»Log?O U]xQq%B"~ +$M$6&_lVJCYm[6[U-MePdD}ӛ M'34ŀmweLїMߚhˍW*~ Դ/mAtsOfV0Vrة f1RY0ykHUnfO~7._[l9BX<'@g'/vI@`ƊM@6Y +Rl|9U֫P:s®@K +֫\JmeM=y @ѝakh??oOWR^iwٟ[ˊMm$+8@~XH'j
Lc Gl F|nx&Kop{`i~KF>m_Ch(
7Ye~ழf0ܚڴyoq;-oPMkuPR/:hn0$yyعeCπmy:!ۆ/ +*k;z(ځT6 a+{57ܗց-Q)b +CT+G + +Fm=e64/|b({=a1Ʉ7&j5n?3T܁IR٨TE\GARr~Ձ"39Szɱ +xʑVx[}Fv=9vD|vrP9z)ԏI<vJ.O \ZZe^׳#">]xtoC$˞4UTy(1t9%9^,i:DBOE)gu?$Um1D$ř} '=Q{C>%@Mg|s'
|e~ZJsnq
=8Ȉ'0~N)![h=$G^DF{XhOD{˄g3ϓAѥ\ǁ/B3hm"oB{rJHk +endstream +endobj +1059 0 obj << +/Type /Page +/Contents 1060 0 R +/Resources 1058 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1027 0 R +/Annots [ 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R ] +>> endobj +1048 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.539 574.379 326.966 585.283] +/A << /S /GoTo /D (section.12.1) >> +>> endobj +1049 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.631 314.354 175.605 325.258] +/A << /S /GoTo /D (chapter.9) >> +>> endobj +1050 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.114 274.568 208.013 283.415] +/A << /S /GoTo /D (subsection.12.1.1) >> +>> endobj +1051 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.592 254.578 194.038 265.482] +/A << /S /GoTo /D (table.8.1) >> +>> endobj +1052 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.5 188.825 225.418 199.729] +/A << /S /GoTo /D (subsection.3.1.6) >> +>> endobj +1053 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [110.49 123.072 124.936 133.975] +/A << /S /GoTo /D (section.4.5) >> +>> endobj +1054 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.431 123.072 186.405 133.975] +/A << /S /GoTo /D (chapter.9) >> +>> endobj +1055 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.7 105.139 359.618 116.152] +/A << /S /GoTo /D (subsection.3.1.3) >> +>> endobj +1061 0 obj << +/D [1059 0 R /XYZ 54.865 827.598 null] +>> endobj +214 0 obj << +/D [1059 0 R /XYZ 55.865 793.722 null] +>> endobj +1062 0 obj << +/D [1059 0 R /XYZ 55.865 601.443 null] +>> endobj +218 0 obj << +/D [1059 0 R /XYZ 55.865 560.282 null] +>> endobj +222 0 obj << +/D [1059 0 R /XYZ 55.865 429.338 null] +>> endobj +1058 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1075 0 obj << +/Length 2315 +/Filter /FlateDecode +>> +stream +xY[oF~C@5+>X)vUVMh]3^=4Hs\3ލ:{I/FqHCou½ +6^(}R4WRu0|R;ϻ=!e{1bB +${|[:6{f}ȣ~Z?"|C}v(mFD$N#a$DX^F!鑈-bwru1t I=q̽3D3cR8qK<.e̿=q'&躓t S#ݾ"z=4ϧɾ +ujޙ*=RfؤEw:Ө3Bcf"+=ZaX(δؖ`jՆ`ׁEc124ߌKeT'Py3G8٩HDz|cmy0/LAp[hjODyFa_@#zf=[Wi}uŞ +YBlQ y2Ƽ#>TcV~ba" +3SâצI#6BeU +eGgcDp-\
4)ZC[FVv⒎bT{hIZEJDB͐@ŤUd͋NjS`p`yxl'9|[=shAKyx^ջy^tDϏ^+eGd~
yDa.e1s +},@@t0XEu"Opqe mVe]Tp6(MAL
F?:8G|u6
i +T+q̃j(wXީ6ҁM +d(+_WҏzYwjݩjغȨ,dV<uk.:Ίl;ěTrS7=p*[Ć|ۃSr%(h&߫eB?b +endstream +endobj +1074 0 obj << +/Type /Page +/Contents 1075 0 R +/Resources 1073 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1027 0 R +/Annots [ 1056 0 R 1057 0 R 1063 0 R 1064 0 R 1065 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R ] +>> endobj +1056 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.119 527.278 262.037 538.182] +/A << /S /GoTo /D (subsection.4.4.2) >> +>> endobj +1057 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [340.485 515.323 347.459 526.227] +/A << /S /GoTo /D (chapter.9) >> +>> endobj +1063 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.397 389.639 155.371 398.715] +/A << /S /GoTo /D (chapter.9) >> +>> endobj +1064 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.485 353.774 161.458 362.85] +/A << /S /GoTo /D (chapter.9) >> +>> endobj +1065 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [127.367 321.948 134.34 332.852] +/A << /S /GoTo /D (chapter.9) >> +>> endobj +1066 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.168 304.015 163.142 315.029] +/A << /S /GoTo /D (chapter.9) >> +>> endobj +1067 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.534 294.117 272.451 302.964] +/A << /S /GoTo /D (subsection.8.3.2) >> +>> endobj +1068 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.96 274.127 390.878 285.141] +/A << /S /GoTo /D (subsection.9.2.5) >> +>> endobj +1069 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.465 262.172 153.439 273.076] +/A << /S /GoTo /D (chapter.9) >> +>> endobj +1070 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [339.088 242.81 361.006 256.757] +/A << /S /GoTo /D (subsection.9.2.6) >> +>> endobj +1071 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [110.286 232.284 117.26 243.188] +/A << /S /GoTo /D (chapter.9) >> +>> endobj +1072 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.947 232.284 293.393 243.188] +/A << /S /GoTo /D (table.8.2) >> +>> endobj +1076 0 obj << +/D [1074 0 R /XYZ 54.865 827.598 null] +>> endobj +758 0 obj << +/D [1074 0 R /XYZ 210.735 797.308 null] +>> endobj +759 0 obj << +/D [1074 0 R /XYZ 209.768 680.607 null] +>> endobj +226 0 obj << +/D [1074 0 R /XYZ 55.865 458.785 null] +>> endobj +230 0 obj << +/D [1074 0 R /XYZ 55.865 177.714 null] +>> endobj +1073 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F106 1015 0 R /F72 803 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1084 0 obj << +/Length 2725 +/Filter /FlateDecode +>> +stream +xڭZms۸_of"t:7V|sN'mq*:RL], +G2/dLj=8 +
@SMh +F`Ȁxj㏶ +hlKI?q1b>,6_qXyj|=8A5RvZE۲=Xr6
';nqJ|B2@^O+QUq0dPa0 +F#Lx\ӂ>mh/+ctܭۂ|2~^Pd@|A{E9|l >υm) +%spc{JPSngS(<DA
3`!a\OTj<q(Ma+E-nɫ|Ef$-.t +endstream +endobj +1083 0 obj << +/Type /Page +/Contents 1084 0 R +/Resources 1082 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1027 0 R +/Annots [ 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1081 0 R ] +>> endobj +1077 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.251 531.028 165.697 541.932] +/A << /S /GoTo /D (table.8.3) >> +>> endobj +1078 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [327.254 397.429 346.681 408.333] +/A << /S /GoTo /D (section.11.1) >> +>> endobj +1079 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.827 305.15 226.273 316.164] +/A << /S /GoTo /D (section.8.1) >> +>> endobj +1080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.185 209.509 223.631 220.413] +/A << /S /GoTo /D (table.8.4) >> +>> endobj +1081 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.097 153.095 229.542 164.109] +/A << /S /GoTo /D (section.8.1) >> +>> endobj +1085 0 obj << +/D [1083 0 R /XYZ 54.865 827.598 null] +>> endobj +760 0 obj << +/D [1083 0 R /XYZ 194.132 797.308 null] +>> endobj +234 0 obj << +/D [1083 0 R /XYZ 55.865 576.607 null] +>> endobj +238 0 obj << +/D [1083 0 R /XYZ 55.865 450.58 null] +>> endobj +1086 0 obj << +/D [1083 0 R /XYZ 55.865 320.258 null] +>> endobj +1087 0 obj << +/D [1083 0 R /XYZ 55.865 168.204 null] +>> endobj +1082 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F106 1015 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1090 0 obj << +/Length 445 +/Filter /FlateDecode +>> +stream +xڵSMO1ﯘa3\64TB" +endstream +endobj +1089 0 obj << +/Type /Page +/Contents 1090 0 R +/Resources 1088 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1092 0 R +>> endobj +1091 0 obj << +/D [1089 0 R /XYZ 54.865 827.598 null] +>> endobj +761 0 obj << +/D [1089 0 R /XYZ 197.813 500.989 null] +>> endobj +1088 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F106 1015 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1097 0 obj << +/Length 2158 +/Filter /FlateDecode +>> +stream +xYKs8Wi+ U;UGzk.[)J-V(RCRV~6SLǓÜFC<N/\|Sܟ,&OTO$lL~^o}ٜt'TUt22DzӍNױ.jiIJ}Hl(':!$$a+=U,:&6nvzMqﳼrVՌ!N6ť1Z6 C0h$ @~LtaF&f\}&:0 +T@x*
%̵b7 +;E/Wq +o4JR78*qW!ݒr
j(ι`✰HhYQ9Zgp;e3v#;t(Ra$#}E5ljPW8 +EuTx<wzfÑwr +^ 7CƵ{ӂbᦋlYaA)N7lQ16ʶuw4ħ?~qq{q1 Vt{o/ڢzzy"6Zt[,t̡d%jXSD7Ow{\P> ig̟>͋)qnR:R8.StY 'r$Do@OQ;1yӇ,I28}4T'zӲ@Z 1V Ng#o0n84)^% u7w VxM9y +oH6N5k`"Tx#keCՄk`P`Lʞb\qH%T=8;8a_M!shoUZY]^\lG*0 +N;
^neO<ƟIҦV +I
p"&Maj:Mȣ]֪kb'L7:*pkL8MJ(h dV{BMwZ
A~zX?<M(t];(74x +gvЩ@ l +>e<kџSV13A+00_jh=JЏ+T[+m[,}K]E OVQ
3*6ٶ/x4ٷuG`Ҫgp/gԙ]~;&YrwN(fWA#e^ws5"ˮaͮ#K5`װfsD|OnkiMFbWψ۱~mCNZDtLxؿQM><"c<ܲX?b +endstream +endobj +1096 0 obj << +/Type /Page +/Contents 1097 0 R +/Resources 1095 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1092 0 R +/Annots [ 1093 0 R 1094 0 R ] +>> endobj +1093 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.446 310.917 184.892 321.821] +/A << /S /GoTo /D (table.9.1) >> +>> endobj +1094 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.927 287.724 191.845 297.911] +/A << /S /GoTo /D (subsection.9.2.7) >> +>> endobj +1098 0 obj << +/D [1096 0 R /XYZ 54.865 827.598 null] +>> endobj +242 0 obj << +/D [1096 0 R /XYZ 55.865 793.722 null] +>> endobj +246 0 obj << +/D [1096 0 R /XYZ 55.865 602.388 null] +>> endobj +250 0 obj << +/D [1096 0 R /XYZ 55.865 441.776 null] +>> endobj +1095 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F14 800 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1107 0 obj << +/Length 2274 +/Filter /FlateDecode +>> +stream +xڵYmo8_PsI +ru1_h%gW75
ֻxJn>`i%UU`T;ng=;TQk02VϞ6ޓVD(zݞJ6!{6 +=" +XhmP[&kjTs9(~}B +f`vJ0(|9euRN,Rq/{T&giC#h^@5/X9D("..0 +ި(l,Vb`G i8,pe[.OOB])y1Qk"Rؕ;T%PzLhv_TxC!R2n'Q ÆBE[^ÃǠ{uo)c"諉օ(g
++0y+#q(a%|RX/sx[ +|a~ߤ7BU n -=Qbp'aqWןn +endstream +endobj +1106 0 obj << +/Type /Page +/Contents 1107 0 R +/Resources 1105 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1092 0 R +/Annots [ 1099 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R ] +>> endobj +1099 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [72.861 467.955 99.761 476.801] +/A << /S /GoTo /D (subsection.12.1.1) >> +>> endobj +1100 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.59 234.017 248.507 244.921] +/A << /S /GoTo /D (section*.17) >> +>> endobj +1101 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.85 204.129 174.296 215.033] +/A << /S /GoTo /D (table.9.2) >> +>> endobj +1102 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [346.243 192.174 368.161 203.078] +/A << /S /GoTo /D (section*.19) >> +>> endobj +1103 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [155.176 162.286 169.621 173.19] +/A << /S /GoTo /D (table.9.3) >> +>> endobj +1104 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [72.661 138.376 94.579 149.28] +/A << /S /GoTo /D (section*.20) >> +>> endobj +1108 0 obj << +/D [1106 0 R /XYZ 54.865 827.598 null] +>> endobj +762 0 obj << +/D [1106 0 R /XYZ 204.06 797.308 null] +>> endobj +254 0 obj << +/D [1106 0 R /XYZ 55.865 612.472 null] +>> endobj +258 0 obj << +/D [1106 0 R /XYZ 55.865 553.319 null] +>> endobj +262 0 obj << +/D [1106 0 R /XYZ 55.865 454.381 null] +>> endobj +266 0 obj << +/D [1106 0 R /XYZ 55.865 321.439 null] +>> endobj +1109 0 obj << +/D [1106 0 R /XYZ 55.865 109.026 null] +>> endobj +1105 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F106 1015 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1116 0 obj << +/Length 2222 +/Filter /FlateDecode +>> +stream +xYݓ۶ԌiNשsz%tHlK, +T1h0sDIMՑn#f4ѕůcųLJIVٜqJ+ԭEՃƜj5b~VߟQKI"iRfJ)In{:噊gRO! +Syye|QWcgg$OaUa]d]:1)}ҧSJT~O?BYNc#<!RP
(IXr6%t0 +'EY:O̬f+f}f5m*ql2Bh9XK,s<Q}}DͺՍ9elO49ssX_!dIzY`2$.1ƥp%mT.1z{cֶmدU}҇eh]Y3np&m&[[w"O=?~ަi/Q_Etzu/E2Ń(|aۡ`<<`u%Ke0fm"T8o$LS{ZH9OpŁ]Q*<QD`mUu.2zY7\B=NG @{ʡsBJ9a>Qf9mEs6!5u^si+ùa˻Hȗ6_!hz_u䜮s|Z{,6/vTHm
93DjJPPɘ<.TqNilE//[_T|Zv5*х
oOͦ$?遇IL? Xjxc5쀃v2t7-v]`:Kk[ϢZ4
gb'ds;(6UOz}N6`Ao +bu* +~:CQ%eN읡?Wپ%\Nm<T(A_ݳD
} Udl18*qsSvZm{/Dj +endstream +endobj +1115 0 obj << +/Type /Page +/Contents 1116 0 R +/Resources 1114 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1092 0 R +/Annots [ 1113 0 R ] +>> endobj +1113 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.695 194.401 432.141 205.305] +/A << /S /GoTo /D (table.9.4) >> +>> endobj +1117 0 obj << +/D [1115 0 R /XYZ 54.865 827.598 null] +>> endobj +763 0 obj << +/D [1115 0 R /XYZ 199.622 797.308 null] +>> endobj +764 0 obj << +/D [1115 0 R /XYZ 202.61 680.607 null] +>> endobj +1110 0 obj << +/D [1115 0 R /XYZ 55.865 554.341 null] +>> endobj +1038 0 obj << +/D [1115 0 R /XYZ 55.865 329.809 null] +>> endobj +1111 0 obj << +/D [1115 0 R /XYZ 55.865 177.007 null] +>> endobj +1114 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F106 1015 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1120 0 obj << +/Length 2688 +/Filter /FlateDecode +>> +stream +xڽZ_s۸P*M'o|=27DQBRwAm.be:g^BYBGLE19#va'\,9Z,#6mJu J
+FEKۼ*qhֿai물ion/^6V٧3setfL'$l5#zw#m`%:ѳ;;u7cTIhDtpX+x0UF0*(40N1KE4$bCďPOPr' +e)QDfl:RmK)_,W*l9<(QNDGEl+Kpj~Uy(Y۽|:ib +$v@ZՈG@˷uk%Dv}knꈑ=#e^6mZ8K:[lcw@g>۷}{ѦuS1}0Jh>8}po<Z0r.$>,>]:}I#0e. +:t81`;2LPYcƱ;7N@>m$`u~3ֱZeM&wn|n#q[@6yݦ8yf2iM6
yΚ'mtw%[OBgv<efZ +oj@9@ )ݿa_6=rHI+>T}1%ތ嗢4y$!|sr?&D~P~h+ +3?i]S[#ĕ_䏴rJ-?@/xP/GQ4&Z'ӐG C.jMaCjN]?R``T!e#.%Njۼn&pyMA?? +QC6⨳|d.V9(or +{~cI/3fz\ +d.e?XufK_dd]"7b-2A6(,Vu(T$lN" +5O\uiJц3燽-ƙ%EZc#F^j\ק~VM̻!n6-t06Řci1 06ʊY>Ks +*DW~@B +wW +endstream +endobj +1119 0 obj << +/Type /Page +/Contents 1120 0 R +/Resources 1118 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1092 0 R +>> endobj +1121 0 obj << +/D [1119 0 R /XYZ 54.865 827.598 null] +>> endobj +765 0 obj << +/D [1119 0 R /XYZ 199.263 797.308 null] +>> endobj +1112 0 obj << +/D [1119 0 R /XYZ 55.865 495.078 null] +>> endobj +1122 0 obj << +/D [1119 0 R /XYZ 55.865 186.859 null] +>> endobj +1118 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F106 1015 0 R /F67 639 0 R /F72 803 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1127 0 obj << +/Length 2130 +/Filter /FlateDecode +>> +stream +xڽXKs6WTC<IxRڭxer(XC +Iy
44Gvr؋At<R*>P*R6y9_4GpX2~X,
dw~EOHH r +<DU~ۉ늻 +s)QI<kmWdH[wHqPS>:ldbGhU}^KF'?&Ms]> pUxO/-aAU;7ccW2q0
<oϜ^rCCQ蘣w۩vd렘&P +endstream +endobj +1126 0 obj << +/Type /Page +/Contents 1127 0 R +/Resources 1125 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1092 0 R +/Annots [ 1123 0 R 1124 0 R ] +>> endobj +1123 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [321.218 380.606 343.136 391.51] +/A << /S /GoTo /D (subsection.4.4.2) >> +>> endobj +1124 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [85.583 322.768 107.501 331.734] +/A << /S /GoTo /D (subsection.9.2.5) >> +>> endobj +1128 0 obj << +/D [1126 0 R /XYZ 54.865 827.598 null] +>> endobj +270 0 obj << +/D [1126 0 R /XYZ 55.865 793.722 null] +>> endobj +274 0 obj << +/D [1126 0 R /XYZ 55.865 592.935 null] +>> endobj +278 0 obj << +/D [1126 0 R /XYZ 55.865 497.916 null] +>> endobj +1125 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1134 0 obj << +/Length 2598 +/Filter /FlateDecode +>> +stream +xڭ]s6ݿBoGT +34Az (ݕ(oфyߚm/w;zhuEԦbqջiBd R#C}oT#`
L(I`20ײ5ү^xiMkD£G[}KXM+gr7@M[h-~:_:,.ԈNRNGڤ8dk٢]"̓n[kEVxtnM/5+r3+>\Շ?RXouwPuFGSmMm!GkjC[Z!Z B*3%8W2oݴܒ?[E +6IZ<WP'RsdނRH!.>}-vL=KGrCm9ݎ-c֠}38*mgg_ϐ VBtbvO$=,8<ޢV, /W>H +5 /r =G:%IѰ,ܨJE.ĠtC(CfD(q>Џ
0F~YƎ<p +V<RsK7K~Bσp0D)gD#N/Y^'(2s"©K8wݮ*nUƲa8L +~ ͚59fL51 Iy\dxt
i"jZf
rBVD˔-Uj;ݺL7'cLf_^rn[TY*W>v/7[;r +vn,?.|ƫKffXV<N,xp My_#Ice֗|UE_BOgJ'zsp߯f(4u`,Ƈz{w<p4S\{<KmoQ|6u9XC +ا_ u8J?@bVAHcΏsY({7MKYET!FVai +Urm3s4pN
T۶Ac_ + yp)5Rf%Pퟮgs,lT%bt߿wPiTXk.P);ߺ*q5\o2m=OOB S/E\׆t'E ao|}٬DEp`
KG9:K `
rN$ +endstream +endobj +1133 0 obj << +/Type /Page +/Contents 1134 0 R +/Resources 1132 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1136 0 R +/Annots [ 1129 0 R 1130 0 R 1131 0 R ] +>> endobj +1129 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.664 504.292 276.091 515.196] +/A << /S /GoTo /D (table.12.1) >> +>> endobj +1130 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.164 283.744 219.592 294.648] +/A << /S /GoTo /D (table.10.1) >> +>> endobj +1131 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [331.2 111.017 350.628 121.921] +/A << /S /GoTo /D (table.10.2) >> +>> endobj +1135 0 obj << +/D [1133 0 R /XYZ 54.865 827.598 null] +>> endobj +282 0 obj << +/D [1133 0 R /XYZ 55.865 793.722 null] +>> endobj +286 0 obj << +/D [1133 0 R /XYZ 55.865 607.123 null] +>> endobj +290 0 obj << +/D [1133 0 R /XYZ 55.865 407.032 null] +>> endobj +294 0 obj << +/D [1133 0 R /XYZ 55.865 157.443 null] +>> endobj +1132 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R /F72 803 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1140 0 obj << +/Length 2325 +/Filter /FlateDecode +>> +stream +xڵnF_\83df"
&^,iP&B +/E}ϙ3D"y83g2mģ.~ukeeF&҆ D$ZGǫ=e1) +yz!@k`Tp/Rkg99Mk6Egp$Ka1HfsqΨwxW+4^<+ћ<e]$rMS7-Mcq8L#Ƥ&ɩ!FouKd:tq3لqF&s?9)|#(z=pT #gR(gx);v~Oڪy>yO]J_pp2=x2Qܜ/Av9 +^vM_0Úx?֭iIWyhͫ{ws)pCݝ'Amzږ!TGB +#m龁v*@\/$.D}HPV}7 k*W~\MW%qG㚛Фþ-ǺSxTy|s^n +v5"]n"l Weo"P +doQU
Xڸ"@VuG&"2ͲDLmd:vBP+DA[1M曥qh
oްq!aix{aq<ϽVxyDڅQmآ<S*Tx\ +5oESWA)AfeS4=>j|9GBqw<sǿ.ڵۂ@g29f}X +5ണ#&(P TpjwDvn3'F`]^ݺpe_+7赃 +ѐf`X +6'>,Z!b8W<pl}Cx Vʲ`kqТK3xsYb5iF+xo +)oNS6-[/mM/I>;ԕd+Zq4w%Rov0
qZ,24AE0Z7_i +XnR[
5(ó.X>@<\<!Sa\Bl*oP1aJ?C&z9,M::. +͐8F6꽒G?O?'QBиUWc0gZca<=z^(#襸/@/CZ@ q=$d0w 2t|<%f=݅NTO4٧÷!1JwD5?"^RLYخ!ć]V/ǏK) Q`M7?A"/H'ir6RZ>"" I]f* An^2^j&-)LXԀ>?T>T=1OZkY]
e =D߰?QvBH/ G +endstream +endobj +1139 0 obj << +/Type /Page +/Contents 1140 0 R +/Resources 1138 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1136 0 R +/Annots [ 1137 0 R ] +>> endobj +1137 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [331.2 93.184 350.628 104.088] +/A << /S /GoTo /D (table.10.3) >> +>> endobj +1141 0 obj << +/D [1139 0 R /XYZ 54.865 827.598 null] +>> endobj +766 0 obj << +/D [1139 0 R /XYZ 205.146 797.308 null] +>> endobj +767 0 obj << +/D [1139 0 R /XYZ 209.27 680.699 null] +>> endobj +298 0 obj << +/D [1139 0 R /XYZ 55.865 418.381 null] +>> endobj +302 0 obj << +/D [1139 0 R /XYZ 55.865 305.471 null] +>> endobj +306 0 obj << +/D [1139 0 R /XYZ 55.865 139.824 null] +>> endobj +1138 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F106 1015 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1149 0 obj << +/Length 1737 +/Filter /FlateDecode +>> +stream +xY[o6~ϯT0tYZ]q1iP(ulϲm/%.Ї/|#GO~<|TTRGiB<e̎S(UqR2ǽH?_[jzƪ"@@ V4Y6, d5,DjKwhcL{iܷU{\?2i3 +ˌ4q +أ^<.]kͦE1rD}|v6g<z>0#:R E498:ETEvMDDd +qtv;=UD +j1JB1ϜҥS`YL%[Tn#RUc0Jp&TwB&qةTqV'dؖďI Re{EwG`rDOI:$Uj8D>"FRj>-"t2*`|sp}ˮ`"bXܪokZӮH1Dvb"В|G,;ďhvrvŢs${X(sT i'<Vo
Vd(,d5,|juͦ"YNf)wfF"%e]|ދx7q
D+ĵnnM>YdN7+if2]\ ;$1pbR,ll>h|kVPb_a@p5v +8ѷI54-|ng\ /MbKּW;;.
aYYXevO\YwF0-tyEDZ=1Z᠓AB+UY̔ +"㦭j;
,?ZQOB+Fn+\ǣӓ'oN_:<z6?¸x%)>7ܾzGE+ZVfV;2/r}|ؖy)\=)dȼTq_;_ǻVe Pi3{{kʥBUTȹ*V;KwVʹX0KIT
(]!yEࢊ3< +lQorقGo^:Pj-R:őawxWSݍqP b8ef^};6`CֶlB}7'CRV +endstream +endobj +1148 0 obj << +/Type /Page +/Contents 1149 0 R +/Resources 1147 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1136 0 R +/Annots [ 1142 0 R 1143 0 R 1144 0 R 1145 0 R 1146 0 R ] +>> endobj +1142 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [72.861 499.447 99.761 508.294] +/A << /S /GoTo /D (subsection.10.1.1) >> +>> endobj +1143 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.156 438.237 362.583 449.141] +/A << /S /GoTo /D (table.10.4) >> +>> endobj +1144 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [72.861 410.406 99.761 419.253] +/A << /S /GoTo /D (subsection.10.1.1) >> +>> endobj +1145 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [72.861 213.769 99.761 222.616] +/A << /S /GoTo /D (subsection.10.1.1) >> +>> endobj +1146 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.772 193.779 178.199 204.683] +/A << /S /GoTo /D (table.10.5) >> +>> endobj +1150 0 obj << +/D [1148 0 R /XYZ 54.865 827.598 null] +>> endobj +768 0 obj << +/D [1148 0 R /XYZ 209.27 797.308 null] +>> endobj +769 0 obj << +/D [1148 0 R /XYZ 203.293 680.607 null] +>> endobj +310 0 obj << +/D [1148 0 R /XYZ 55.865 485.873 null] +>> endobj +314 0 obj << +/D [1148 0 R /XYZ 55.865 300.195 null] +>> endobj +1147 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F106 1015 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1158 0 obj << +/Length 1970 +/Filter /FlateDecode +>> +stream +xYo6_!&5oIХIkPlj˙$7˺#)YicWxK
}?PDABu0Jd3FhooG/]D2CG8g<9C𗻙f|n_14jTG +.難h{0uӀIB_Ĉ*`/J"X2 JRoh}LӮq8%4RA+wh;2Nix8*\ޡDk!xOI("&dQ(NJȊݖv +)9r/JSKqvfOǯߝtdH>3^,۷An͚;7~~Ȧhp'~OO;mXu:i{\'xYw&;/1Ƀ6$:`|wsl +лye?Kcppbށ}};m
"$2M5 *,ꬪ= +endstream +endobj +1157 0 obj << +/Type /Page +/Contents 1158 0 R +/Resources 1156 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1136 0 R +/Annots [ 1151 0 R 1152 0 R 1153 0 R 1154 0 R 1155 0 R ] +>> endobj +1151 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.772 626.047 178.199 636.95] +/A << /S /GoTo /D (table.10.5) >> +>> endobj +1152 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.772 494.54 178.199 505.444] +/A << /S /GoTo /D (table.10.5) >> +>> endobj +1153 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [338.942 285.947 360.86 296.851] +/A << /S /GoTo /D (subsection.9.2.5) >> +>> endobj +1154 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [72.861 198.963 99.761 207.81] +/A << /S /GoTo /D (subsection.10.1.1) >> +>> endobj +1155 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.772 178.973 178.199 189.877] +/A << /S /GoTo /D (table.10.6) >> +>> endobj +1159 0 obj << +/D [1157 0 R /XYZ 54.865 827.598 null] +>> endobj +770 0 obj << +/D [1157 0 R /XYZ 203.706 797.308 null] +>> endobj +318 0 obj << +/D [1157 0 R /XYZ 55.865 404.318 null] +>> endobj +322 0 obj << +/D [1157 0 R /XYZ 55.865 272.373 null] +>> endobj +1156 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1162 0 obj << +/Length 1724 +/Filter /FlateDecode +>> +stream +xX_o6ϧЊ%E6X8imbiV(6%W[<JlκKx;wߝC+:{{O$t3GH)<g<u{F'O#Q\wH{]96:R【p!`40YmZ=r$<܁{b^m!Q:nm?V_УZgڰW 9pڋ.7(y9(ɧ8-(I:q=ҽTQߥ8[x,pIa>ia<BCψG3_Pg +%>C"ޗ8g{$mǥEHa/Ki^ϣ+~u/0~KPWflёU 5Ǿ9;̿wNs| +knpCȸɉ3b+ñ[KÓYq+L(sG?9\?LIKmemujSh3v/\reEϸG{gdٻy}o_J + +ӊ[1.Wq80 +S"ﳠoqw=|; +닢mS6. +Ù[ho^ߣXIALKʨ)_^CO6yZ8x>W8*UrKg(Ε +0!҇kՖ͜h56JtE+~=YvX ''<KQXjBiQ}`ɺ*10CeFjf"x蓉* +i6JntX<+PV+Z2JWxVe3B:eDX> kv:ЇVe}@RчW[GJݪ4>,A^W|\5k)m欁۾P2 >|Zu#]Ն͌XMDXw-<ǮZ$[1<([^ 7zPO:=Tપv>SNgNYNYd\Ӏ4
d2\LD&SnqCnD
Wbh+
:bG~@༶!9^njn8_L8!k)4'$1oB| +b49 +jB5zgk4&\/Ɛ2|MV*><=p) +endstream +endobj +1161 0 obj << +/Type /Page +/Contents 1162 0 R +/Resources 1160 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1136 0 R +>> endobj +1163 0 obj << +/D [1161 0 R /XYZ 54.865 827.598 null] +>> endobj +771 0 obj << +/D [1161 0 R /XYZ 203.706 797.308 null] +>> endobj +326 0 obj << +/D [1161 0 R /XYZ 55.865 480.966 null] +>> endobj +330 0 obj << +/D [1161 0 R /XYZ 55.865 370.017 null] +>> endobj +334 0 obj << +/D [1161 0 R /XYZ 55.865 255.063 null] +>> endobj +1160 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1169 0 obj << +/Length 2349 +/Filter /FlateDecode +>> +stream +xڵYs6_Gj& ٗN.i>ܤMQ'T|oP+v&bb؏<xo.NQr#MtÄQ&3nVϛ)vR;b)ef4"ߎˏۨql3$
@{Yb{bׁ
*>XI}wiȴ7+2Ze2UξYd<.nXXpX*㷯?\}
usGۛB +&3nm@ф3%ƋlͲnnEzkۛG63,IiD<Z螧ѽdXfe]_JgTs%Y.e&9tf/Br_="MSp*6zɋՉf:ϾbsYK iCN/ݜ%p8Y;ʒC;*?tMY'/`>ͤd^̀Pde&8L(pf~v9$
IحT@4wL3gi3>4Px_uԢY$~~_u?6w(vT\vժ.j歇CRd5Fd6QLmKsت"
#Xw)q_P{s~vlԊǗ
]=T$=}rR#EV`f9g[Yہqp\pzi|noWW7b U5/u5/hnX+X(PsD1Lj#RPto+v<
և햨,'zhs۬YjۢUN2\?;c;O Y<YG4d3v=mІ3~%ޥ2x.i4S3 w*m\ +bR4N %nLJz)#M]nh`W4.`,Ǻ-{=m;bzk?Ot芷PDB) +E|("moy~pEm֙"2)&6ZI\y.1±4@4;$v +b +IB+D +qdvvO{vnAQh#7?/]b6KeW%̿avߴ? +WվjVUSI\< vR&%Y<-C~4O*
T~RO?~3IM%,ԧhe46K" αܔ:i(eWKl|czZBa+U,vAj1l\{ʊ#ȤkKw +DzzKw]()ЄS +m?Qӏ}> +ܿD̺qq/vMEDdǬ +;k7$!̅ +endstream +endobj +1168 0 obj << +/Type /Page +/Contents 1169 0 R +/Resources 1167 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1136 0 R +/Annots [ 1164 0 R 1165 0 R 1166 0 R ] +>> endobj +1164 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.604 417.329 257.031 428.233] +/A << /S /GoTo /D (table.10.7) >> +>> endobj +1165 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.351 215.337 166.778 226.241] +/A << /S /GoTo /D (table.10.8) >> +>> endobj +1166 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.294 105.648 294.721 116.552] +/A << /S /GoTo /D (table.10.2) >> +>> endobj +1170 0 obj << +/D [1168 0 R /XYZ 54.865 827.598 null] +>> endobj +772 0 obj << +/D [1168 0 R /XYZ 165.251 797.308 null] +>> endobj +338 0 obj << +/D [1168 0 R /XYZ 55.865 669.05 null] +>> endobj +342 0 obj << +/D [1168 0 R /XYZ 55.865 565.907 null] +>> endobj +346 0 obj << +/D [1168 0 R /XYZ 55.865 475.486 null] +>> endobj +350 0 obj << +/D [1168 0 R /XYZ 55.865 361.912 null] +>> endobj +354 0 obj << +/D [1168 0 R /XYZ 55.865 260.916 null] +>> endobj +358 0 obj << +/D [1168 0 R /XYZ 55.865 176.732 null] +>> endobj +1167 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F106 1015 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1181 0 obj << +/Length 1122 +/Filter /FlateDecode +>> +stream +xX[oH~G,ճsanFnMxKblV~ظƉ-_ +b &g@e~ec*@Xu{пp_@y/0ɓԼ6+''{qi26{SP=$LnmBe[-]HURV**vw{
+tDZ6,CM":e`JGɋ)-,Am1⼪s7fz\]o3rtyŦK3OX3q"5P''+h/]|ZzRd`b{+f։2kNXt .jIz z9|DӗK&D?I8oj+수z~RBcόPӌPc;B=BI}eLfI&=MU&aek4+ʩӚGzY%<yKn5Ys5q5G%W<mrەP5eg-0gs휑Sm@B9QGIB0E8k4g٘0!<|z!g^Xz16S:ˤЛ4o +endstream +endobj +1180 0 obj << +/Type /Page +/Contents 1181 0 R +/Resources 1179 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1183 0 R +/Annots [ 1171 0 R 1172 0 R 1173 0 R 1174 0 R 1175 0 R 1176 0 R 1177 0 R 1178 0 R ] +>> endobj +1171 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [270.33 590.455 289.757 601.359] +/A << /S /GoTo /D (table.10.3) >> +>> endobj +1172 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.285 578.5 301.712 589.404] +/A << /S /GoTo /D (table.10.4) >> +>> endobj +1173 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.294 435.038 294.721 445.942] +/A << /S /GoTo /D (table.10.2) >> +>> endobj +1174 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [270.33 387.217 289.757 398.121] +/A << /S /GoTo /D (table.10.3) >> +>> endobj +1175 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.285 375.262 301.712 386.166] +/A << /S /GoTo /D (table.10.4) >> +>> endobj +1176 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.294 255.711 294.721 266.615] +/A << /S /GoTo /D (table.10.2) >> +>> endobj +1177 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [270.33 207.89 289.757 218.794] +/A << /S /GoTo /D (table.10.3) >> +>> endobj +1178 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.285 195.935 301.712 206.839] +/A << /S /GoTo /D (table.10.4) >> +>> endobj +1182 0 obj << +/D [1180 0 R /XYZ 54.865 827.598 null] +>> endobj +773 0 obj << +/D [1180 0 R /XYZ 185.863 797.308 null] +>> endobj +1179 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F106 1015 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1186 0 obj << +/Length 626 +/Filter /FlateDecode +>> +stream +xڅTn0+tC| Ңm +) +E-"Z_+)4r]:cpdT$*R$$xgz*?E?$!JYNiz傤HۈaB +:n1aS-H̵+AGսm]oڙ +^)Z$5Uݙތe.09O=tHm]Q<ݻnkj1H̪
sm>md<=l۾11jBFqCJ ]ӺA$D?&#<\ӺXu +}> +s
qe=q{\ +endstream +endobj +1185 0 obj << +/Type /Page +/Contents 1186 0 R +/Resources 1184 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1183 0 R +>> endobj +1187 0 obj << +/D [1185 0 R /XYZ 54.865 827.598 null] +>> endobj +1184 0 obj << +/Font << /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1193 0 obj << +/Length 2106 +/Filter /FlateDecode +>> +stream +xڝX[۸~ϯZJ͋6tO/Ix%,P|i_!9Qb?fb0t?4,t,Z/[oTQ/- "pXm`g
VjK2_mmg1m
'Ȏ/(
4eз<ݷO64]&?
K:<ʙe8چa`0uVLyNf)T|YfIQnӔLaALmzܳMTDtJg+fLY_7I"u_5Ku"N4UzER^vЖ`{^:nx_hI@2CC3Ƕ;k +w^iOF*VI +Z ut4nQ7e3YMyCC1b)/XTg#_4yRAgȜyMJ].{y5Bm2~5Њ_K}!ܜ%HCdB+^6:ML-;s_ׄSY,rg)>F/ŵ&E4KC?=Pk;%9.:07,^[qY<N0p9.ɠ~cY=!+I$cqQ Bt-*\ +U|6J&7I\i>(4oo@zö1ivoçO˨M^Mѭlf@f#Mʡ +!`=om2Vw?>>w?.?GIAsn
<uncq0W@L +ᅲfM?D`mBx
8]Ȃ'R|$xagh +Ȧ~tgy#s8w(L;XZKdxnU2Dwy^;*(HG'X.P=})+G,STenS`/<tgP"=UƜ/)}`zExq-\8lml0~@;Xy$ +endstream +endobj +1192 0 obj << +/Type /Page +/Contents 1193 0 R +/Resources 1191 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1183 0 R +/Annots [ 1188 0 R 1189 0 R ] +>> endobj +1188 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [438.431 532.536 452.877 543.44] +/A << /S /GoTo /D (section.4.6) >> +>> endobj +1189 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [433.449 193.607 455.367 204.511] +/A << /S /GoTo /D (subsection.8.3.2) >> +>> endobj +1194 0 obj << +/D [1192 0 R /XYZ 54.865 827.598 null] +>> endobj +362 0 obj << +/D [1192 0 R /XYZ 55.865 793.722 null] +>> endobj +366 0 obj << +/D [1192 0 R /XYZ 55.865 493.931 null] +>> endobj +370 0 obj << +/D [1192 0 R /XYZ 55.865 282.623 null] +>> endobj +374 0 obj << +/D [1192 0 R /XYZ 55.865 166.957 null] +>> endobj +1191 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1197 0 obj << +/Length 1189 +/Filter /FlateDecode +>> +stream +xڕVmo6_!&KR%m )$h=`@3Mdɐe#%[6C)ﮓ,(H! 1`>^F2G8g*b(, |& e&@A4 +X"HΧߘN-
6uӮ<3+pH_nes=~ʱB-nJ +\ Fr~[x²6#cixުV(\MT(u<ouչVt*
6(lLiT|VeUsBx \^ +ʼfiL$¸5,4GyIU-{ƙ4 dIGܙif:BၩD1cCW^8VQ +:Mz&)=i%D~̡^R8m<X7oTt{3h1J$%'i +Uķ$QL! >&MIΆ,s"lP%ˁMQMF%iK|fP +endstream +endobj +1196 0 obj << +/Type /Page +/Contents 1197 0 R +/Resources 1195 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1183 0 R +/Annots [ 1190 0 R ] +>> endobj +1190 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [435.94 615.884 455.367 626.788] +/A << /S /GoTo /D (listing.11.1) >> +>> endobj +1198 0 obj << +/D [1196 0 R /XYZ 54.865 827.598 null] +>> endobj +714 0 obj << +/D [1196 0 R /XYZ 55.865 793.722 null] +>> endobj +1195 0 obj << +/Font << /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1202 0 obj << +/Length 837 +/Filter /FlateDecode +>> +stream +x}UKs0WpNJc:Mu{i:6 +NXiw}}Zx
xL)Ml 1J"76ɔBF-a<ƃxf99,wHp((ci#1zo&'Jz4l/$Lpksǹ2ԶԫtgAr%s&4/^??u
I*|(:5ᦩ&iTF"!pK&f,.t̐EXe+uUMXy3amX,OS +5/&錱(QXl-YTAuSwe=+<c +Ğ)iGO`hvR¾h(!
L'IvGE338nm _ܣ@rix6o+szaB<W_?X&,,Kj,lLqXjc,UI&\q1TXccoˉb"Fֺz[?7,-&#Ϛ#yE s1Fo?2f96eILWCqB'FD@[r +endstream +endobj +1201 0 obj << +/Type /Page +/Contents 1202 0 R +/Resources 1200 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1183 0 R +/Annots [ 1199 0 R ] +>> endobj +1199 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [290.46 498.314 309.887 509.218] +/A << /S /GoTo /D (section.12.2) >> +>> endobj +1203 0 obj << +/D [1201 0 R /XYZ 54.865 827.598 null] +>> endobj +378 0 obj << +/D [1201 0 R /XYZ 55.865 793.722 null] +>> endobj +382 0 obj << +/D [1201 0 R /XYZ 55.865 607.123 null] +>> endobj +1200 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1221 0 obj << +/Length 2163 +/Filter /FlateDecode +>> +stream +xڭYs6_nB ='ڙN"mqJ +I +iΨ7mG#I%HYi"jsG@qdX6IEqթ'S DBi4wrah%QјqH#|[n8o+:tF4UL9Q/Hw0CDIѽ%DRk1tI?9 f +^N_A$bd$%G+kqW.MT$O R5c#Q%fU]_n[ +Έ2YXRxYvU=.1017֓Nl>2<7ktJ$|J\֧"ڭd]&<Q2Bg?;P6|[HS"BUn~A[bLy'._!˦uafW/m&Fq@bʀ5- pCI T_㔢,AAp
"q0ґ!a +h2w߾U%z)[(wvīwbP\:Ug=MvI 24m.l\ט_@DJgi,'01'ܶqq>@k-q`#_2bfJr̂>V'hy@l!BKCBH"偤lqRх@$ +(FT3Iٷ+mcb,NjUC]83.nV/ʫ"mVtܕPiR8.MquM]uܷ Փ4Gp#lRtt:M[tX2ˍ{C#]>]zʼE3RfbsU>Vfжgs~b]?~~ +INP +%^T
!Ek[F@5P0sWnZ;H( +@V+ {kfd!il{t&[cE7]x9+hhcdo<ދ]k5*Gj0:V״;#ݾ{Sق1끬Q!Fbhnx-}2F;H +QFDUąᝃ8{Uoh*wi><ˣLv +endstream +endobj +1220 0 obj << +/Type /Page +/Contents 1221 0 R +/Resources 1219 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1183 0 R +/Annots [ 1204 0 R 1206 0 R 1207 0 R 1205 0 R ] +>> endobj +1204 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [97.915 425.985 124.064 433.158] +/A << /S /GoTo /D (Hfootnote.2) >> +>> endobj +1206 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.264 228.508 411.234 235.681] +/A << /S /GoTo /D (Hfootnote.3) >> +>> endobj +1207 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.9 556.942 411.234 577.365] +/A << /S /GoTo /D (table.12.2) >> +>> endobj +1205 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.179 263.054 438.956 281.983] +/A << /S /GoTo /D (subsection.4.4.4) >> +>> endobj +1222 0 obj << +/D [1220 0 R /XYZ 54.865 827.598 null] +>> endobj +774 0 obj << +/D [1220 0 R /XYZ 59.85 96.337 null] +>> endobj +1223 0 obj << +/D [1220 0 R /XYZ 425.335 4191.38 null] +>> endobj +1224 0 obj << +/D [1220 0 R /XYZ 435.253 4191.38 null] +>> endobj +1219 0 obj << +/Font << /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1227 0 obj << +/Length 1975 +/Filter /FlateDecode +>> +stream +xڥ]o=Bo+~IPC{ib"+M;lJ{p83Oc?^}y:
2%* M&pRĚ` +>7ߖ?^*4'@.REU#ͯkq ڣ/@i9d87sA"bɽ5}?\v0Y)~l_2П4q.b.d`:A
G3dMld.x"m`Dd5 .9ÕfEi00ZH)üM҈B)9-2eBqa|h㰪2il#`̞1ZXxwMU]_CIa]6τZ(cx_vE[P$ iR3Gdg@:PpE⼂?\{}RaɄHGĠiTiv,MFNL)dKLbl\P`
>X.?2n_OkÎ~c);_UmYMHllhw d?CӢt=N]8P#g`"چweGei\x3$ߖp; +KVЖHk<Z DiQp$8H4zm7#}ّ\ɍj}Y5.g%;&oKϘ 899_˧uٖ,'p"ac5UwIay:"C'(f8tiAfSn>. +XeCG>NSRC:|H{a} +653֨-i!4me;?_U[~2k=>Au$ckuRN*z5}W`F##m(rbdxq^H<Q(Xa1㽇oA҅hQ +Yv}=؟*Cƃ@5I̋CT8#Qx}At<8 +R.1xZ(f +d@.NM]I SΙ_罇<<muQlwզܛn[H
?7{w8QQ
ޒkX-S"Tc UB]{Ft5QU`܍m^DYy42+170)r<Tm%4cCk ^d挽K(zZaxO}Z1A[%/E/]˜D<Au8)P +-G':USPB<|;]_W۾Gy~+1tdFhy3e@tC=P(NMMSq4G1 +wuP,KOSh74q3bp6 h<.(7yQb="W{~q +endstream +endobj +1226 0 obj << +/Type /Page +/Contents 1227 0 R +/Resources 1225 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1231 0 R +/Annots [ 1208 0 R 1209 0 R 1210 0 R ] +>> endobj +1208 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [77.413 371.97 91.607 379.143] +/A << /S /GoTo /D (Hfootnote.4) >> +>> endobj +1209 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [91.229 656.569 102.133 672.011] +/A << /S /GoTo /D (section.4.3) >> +>> endobj +1210 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.584 447.424 390.733 454.597] +/A << /S /GoTo /D (Hfootnote.5) >> +>> endobj +1228 0 obj << +/D [1226 0 R /XYZ 54.865 827.598 null] +>> endobj +1229 0 obj << +/D [1226 0 R /XYZ 425.502 4191.38 null] +>> endobj +1230 0 obj << +/D [1226 0 R /XYZ 435.182 4191.38 null] +>> endobj +1225 0 obj << +/Font << /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1234 0 obj << +/Length 2010 +/Filter /FlateDecode +>> +stream +xXs6_Gj&BOӇ\ҫ\$-6/T][ +n(xswe,5@ƹ +Ι*XoO,^8 A"\,_-W7vld¢(_0HĒi~|6E2>XW~_ +*%ȫ}>#EVL<H
ٝ}=CJ9.U 'য়`ATwu(cXIepyIJY>tFq,psfM]9(P2fH-,,*8/o:JQGaQdHC"O(4vzUWmvybtdBc)vqeNMTsol&q":
)u|y3V%SDyub)š0dx_m,os7(Mf5`kߡv;ݾnީSF5CEo(F/`Xe뺡,]d/Ǹn̷zu?lj!P[fGSD;O!wvJSj ]mܩ}b$nK$Lq#dW5WlR (//VdQ@p֍Q +S4ZNGK>jlgXnH4*hiLvCAj /<@Z$N= &7N]v2Hg[7Ύŵ:;?x묍FNlq?c8*tRBpfQ#}"oHbdH[zQ-7Y!l136fG,N_~W$B䂐^(NV.`@\R!An"hQ +-4IxΙg/ٍDBqH1s(+f@siNb˥GDD:+G1G~ihA=u!ZڡAqJbheVS +W8JEJˏ6>wnrWRmWɓ]؋mgc/IEȹȫ_mET;l m"
:YW1V +7]H0Ao<դtg ^jX$d{'.fZ#$z_Yfkx><qĝAJzqEi6uyCw~^!zfVdvV$t<I]ޢdm^;̶{eptVtVlEC"i,n?
_щfAt:"LI'O<2,GD0{<zn4c4HSQ~$,Jb3Rpk$jj:H6P11 jr +endstream +endobj +1233 0 obj << +/Type /Page +/Contents 1234 0 R +/Resources 1232 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1231 0 R +/Annots [ 1211 0 R 1212 0 R 1213 0 R ] +>> endobj +1211 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.355 490.801 270.689 518.696] +/A << /S /GoTo /D (subsection.12.1.3) >> +>> endobj +1212 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.293 246.44 402.442 253.614] +/A << /S /GoTo /D (Hfootnote.6) >> +>> endobj +1213 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.973 581.131 438.307 609.026] +/A << /S /GoTo /D (subsection.12.1.1) >> +>> endobj +1235 0 obj << +/D [1233 0 R /XYZ 54.865 827.598 null] +>> endobj +1236 0 obj << +/D [1233 0 R /XYZ 444.906 110.683 null] +>> endobj +1232 0 obj << +/Font << /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1239 0 obj << +/Length 1917 +/Filter /FlateDecode +>> +stream +xXs6_ɻD>6vmd]ODW[Ѭ +fL898Q{W?z|14b ^Tu5Kd*qyhlYIW k?aˌMtt!Uy]L":Ʉ$@Feض[O&Z''aYaQڶ -}37u:~ Grֵ]yw yj],gC65B43bisn=JҴU 7=& +]5n}n-QPݒsoNdqЇ`l{+K|DLbb1#$g`pcԀR^Ct]}
P0:&qg?Xw +s05I!zѦsZv%% +_Y\ +gel_3EARڝ(wBT~@0$LqICډU|s$JҾ+xSd:Tޕ!=FwuBo7xsW +Y6ݲsHFzL
> +ށ"35v?·cIl/nç!p
} lpkm>YH,\σ{3>N3(ɖ +"~|.v2C^f'Q桷é|TpCG:84"\mr(tRRtNRXUƉQA?{8&`:N +endstream +endobj +1238 0 obj << +/Type /Page +/Contents 1239 0 R +/Resources 1237 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1231 0 R +/Annots [ 1214 0 R 1215 0 R 1216 0 R 1217 0 R 1218 0 R ] +>> endobj +1214 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.355 486.925 270.689 507.349] +/A << /S /GoTo /D (table.12.2) >> +>> endobj +1215 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.176 644.116 315.022 672.011] +/A << /S /GoTo /D (subsection.12.1.2) >> +>> endobj +1216 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.131 597 329.035 617.424] +/A << /S /GoTo /D (table.12.2) >> +>> endobj +1217 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.907 644.116 388.811 672.011] +/A << /S /GoTo /D (subsection.12.1.2) >> +>> endobj +1218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.862 597 400.766 617.424] +/A << /S /GoTo /D (table.12.2) >> +>> endobj +1240 0 obj << +/D [1238 0 R /XYZ 54.865 827.598 null] +>> endobj +1237 0 obj << +/Font << /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1245 0 obj << +/Length 2537 +/Filter /FlateDecode +>> +stream +xZYs~ׯےUdNDS2wIl-b `eק!&"nPytsyr8 +(Bp\GeÂۻN8;LH
gnnAlw2ɤ>*+Գ)) .],f~x01?p?;lᱷnp0gߢx]Ux)ĺ~I +ꏲ2YuGa9}fQ]Edz!aT&rc"Fo%k,pa/1ZƫJ¢w|o<WE)WH#Vb]y*87IRQ}$]%iM=Y, C76}s]v:~_WUǴfKۑh3g8ԧSd
msyxYOuG +GyV +02v%yІ$4}Dhe)L,u7?a`R,)<k@ޘ<[j)}|w䨱D!4ԻPDnrs817&Ye<h@3
3.)YZ<<y0MS_ +0>0L3ԏO-F!E-W~LVfЌ<aig~L<UVHyJ^ 2i,̤3R*(0Z^RG'C0[C +")"3ESM +k(:{ +J6٭7Wݯ%&ftr@yXj7E>CR# K=Va]ms$*cWa +endstream +endobj +1244 0 obj << +/Type /Page +/Contents 1245 0 R +/Resources 1243 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1231 0 R +/Annots [ 1241 0 R 1242 0 R ] +>> endobj +1241 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.741 193.156 167.187 204.06] +/A << /S /GoTo /D (table.5.1) >> +>> endobj +1242 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.227 151.313 170.673 162.217] +/A << /S /GoTo /D (table.5.1) >> +>> endobj +1246 0 obj << +/D [1244 0 R /XYZ 54.865 827.598 null] +>> endobj +775 0 obj << +/D [1244 0 R /XYZ 200.264 797.308 null] +>> endobj +776 0 obj << +/D [1244 0 R /XYZ 190.307 680.607 null] +>> endobj +386 0 obj << +/D [1244 0 R /XYZ 55.865 420.12 null] +>> endobj +1243 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F106 1015 0 R /F67 639 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1256 0 obj << +/Length 3329 +/Filter /FlateDecode +>> +stream +xڵZKs6WjI +%Ǭٟ?_Ȋo{v27An^1HV)ª\->sCmzv;N0ԳPzX.u)/ˌl+L4a#q;T5z& ~i,р3wF/,HZ J%QFn`x;Ib6 Ak;6QfIՑDMd!t܅k? +LjBa^d?q綀y~|{&TNژ>Z2}bCRuP-qeN(m߾]ǜ(zv8W8x1y`eA5J76ֱc3 +#dIi0v.}]x)+pà }703!28!rrM61ócy5@u]nQ)Xւ"Y6_@E,PÈZ3e* +,qAi+;6}]q:
N'-2!4vN^Uqka&ʛZ`DYL2QZL^& +{3Qa%ݙ("S!jlj!YP^eR$ ړb@Ԯnt45YߥM!Rw6;sժ7sNYXJo=l)t\k/1FRƈNʬjkt$NQ+>C9kx3\:$4Gc##c
BAGFYT9a5ۄwxûT (@3lX0ʕ$5dP(`b<bG"D<ㅟ+/5+LP-z}J2*矗.1U + +y~AŶ[[ +#:w>W_ +WA"M[,ޯR؝1oq6x|UDLiaoc_NH (Az5."g#5ie.;Hwg5ϴ%<Iʄw݆Ѧ&6oBZy]_[nM>rs:w$xXs7 }顃;gTr 3P3avżSf}U +H(j4=f~<
9Ƈ{elPIPS +f$>YiQU{P5گ`3>9uHƾ0Ab{فg)?G?If?(}?'_ &
Ý)PaS +AckGR^W +-╯0=nKhɝ}i,Y\*i]qp0;MtL.d4/%VG0:p [E<$CȺRY1Ϯx1w0L6tpѠwQ8.ik1_ÛF!
Fv ^ACŔ! +W5vgwק>3C°o6U댯?)C"lfLֶs}`CmL. +endstream +endobj +1255 0 obj << +/Type /Page +/Contents 1256 0 R +/Resources 1254 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1231 0 R +/Annots [ 1247 0 R 1248 0 R 1249 0 R 1250 0 R 1251 0 R 1252 0 R 1253 0 R ] +>> endobj +1247 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.482 626.047 176.927 636.95] +/A << /S /GoTo /D (table.5.1) >> +>> endobj +1248 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.047 458.674 255.493 469.578] +/A << /S /GoTo /D (table.5.1) >> +>> endobj +1249 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.19 428.786 173.636 439.69] +/A << /S /GoTo /D (table.5.1) >> +>> endobj +1250 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.792 386.943 168.238 397.847] +/A << /S /GoTo /D (table.5.1) >> +>> endobj +1251 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.438 303.88 173.865 314.784] +/A << /S /GoTo /D (table.12.2) >> +>> endobj +1252 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.086 220.194 178.513 231.097] +/A << /S /GoTo /D (table.12.2) >> +>> endobj +1253 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [79.267 149.085 98.694 159.989] +/A << /S /GoTo /D (table.12.4) >> +>> endobj +1257 0 obj << +/D [1255 0 R /XYZ 54.865 827.598 null] +>> endobj +777 0 obj << +/D [1255 0 R /XYZ 217.649 797.308 null] +>> endobj +390 0 obj << +/D [1255 0 R /XYZ 55.865 349.459 null] +>> endobj +394 0 obj << +/D [1255 0 R /XYZ 55.865 195.287 null] +>> endobj +1254 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R /F14 800 0 R /F106 1015 0 R /F72 803 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1262 0 obj << +/Length 1643 +/Filter /FlateDecode +>> +stream +xڽXmo6_a&5K,u致ulYd^Q - +Z-%i#eIVР!y:=|x/d37G/GN|(`dq]o. |oL&WW7'ќZ0
p<1漚
3#yNjv
sq +M^c<@]\.NN?krm{y\<Sble"k6ޥzQ_KN2LA=85Gy. v/-jieƳjp3Ck1e=
\Փ' ^WJhN}F1u}nv]J#REbІc>5[y> +`nr#33N +GVkW;Yf_IO-\*qJ e 9p1cәKieLBk="0T)p8AdОhQ(b"ÓuꤵZ +0k~װsFSgM2nJ?F}Rč>2nNu?JDg6͚\!osU4čl>'#$Rjq:*S&/걬Ijfq'p%yQnU1//0Ωg1h$Pn7*9 GIc4
u>L7=`JwSZQ'7-dx6QTJ87
Pjs6Lg}86U/F"v+L
@T>Pko5踍fENƩltoL"6/DԦܺ,Nj,M&X헮6QTT e
{bٕy5¹rWR +Bޭ1y +endstream +endobj +1261 0 obj << +/Type /Page +/Contents 1262 0 R +/Resources 1260 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1231 0 R +/Annots [ 1258 0 R 1259 0 R ] +>> endobj +1258 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.574 198.066 293.02 208.97] +/A << /S /GoTo /D (section.8.1) >> +>> endobj +1259 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.537 168.178 220.964 179.082] +/A << /S /GoTo /D (listing.12.1) >> +>> endobj +1263 0 obj << +/D [1261 0 R /XYZ 54.865 827.598 null] +>> endobj +715 0 obj << +/D [1261 0 R /XYZ 55.865 793.722 null] +>> endobj +398 0 obj << +/D [1261 0 R /XYZ 55.865 385.338 null] +>> endobj +1264 0 obj << +/D [1261 0 R /XYZ 55.865 290.883 null] +>> endobj +1260 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F72 803 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1271 0 obj << +/Length 2689 +/Filter /FlateDecode +>> +stream +x]۶~*D8 A2}ru<}3XSLR_]")I;~a6`/W/T2Db-0a(tn׳7_oj%Ahᄔ! +Pe3|yQw!|Uvyn'( + x$d"eD "")[h_up Z&2ƶoxX'곕.MiP~iʊήk[#dƴZꯥSv(}!??4$"[o +'vx )Ϛ$)/-wC\6$d0;`uʹ%">5bD)@Ӂ} TdTc[A<)8%ua{¶s6'ETj3|E; +kU{.9:ؽN=4盂sn0pߠjq9CUgۂ@P&.{Pz2j+N%tN>M]a(;ԮMD"Fۇ LFklc' \n}C>oƲn)q%%PT,if +n!91#c\<& C~P(~+*93Uzy(.(6M(ڐ]` ]@̵$.X0k? +v6GԙK3p0FF;e+{%ƹca#%saNCeѝ +&Rs1e T!ӕo|TZ:x.\j9[W"&=*n0ud|rin9[66 +dUi'͕gS}Jτ].4;瀬wK%Ɣ<tӃ+j=~AE}8ߏ_~_64o#
c}yEtrE:"H:jw`98P`h!w$=r + 1SDa8U,Jd"$;ދkKn9ئDzKE"/}jrw*HOzXa;5qj X
6Tǀ +ޓ=Aл4~G1ͳ7~9vQL÷[A"9xVui].]^~篙>v~咶ji& x4/xVV~f՝^>LzzIc*ƙ.4.#Ji- 'Nt+][&E
M[h+U4>, +ݓ̰(i_\TuQ^@XݞFj0D*yBX~[P +endstream +endobj +1270 0 obj << +/Type /Page +/Contents 1271 0 R +/Resources 1269 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1276 0 R +/Annots [ 1265 0 R 1267 0 R 1266 0 R 1275 0 R ] +>> endobj +1265 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [270.648 493.303 276.825 505.35] +/A << /S /GoTo /D (Hfootnote.7) >> +>> endobj +1267 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.856 155.725 370.283 166.629] +/A << /S /GoTo /D (table.12.5) >> +>> endobj +1266 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [367.297 120.154 455.367 130.818] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.gentoo.org/proj/en/council/meeting-logs/20091109.txt)>> +>> endobj +1275 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [54.869 109.576 272.553 119.811] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.gentoo.org/proj/en/council/meeting-logs/20091109.txt)>> +>> endobj +1272 0 obj << +/D [1270 0 R /XYZ 54.865 827.598 null] +>> endobj +402 0 obj << +/D [1270 0 R /XYZ 55.865 793.722 null] +>> endobj +406 0 obj << +/D [1270 0 R /XYZ 55.865 684.989 null] +>> endobj +1273 0 obj << +/D [1270 0 R /XYZ 55.865 550.285 null] +>> endobj +410 0 obj << +/D [1270 0 R /XYZ 55.865 443.147 null] +>> endobj +414 0 obj << +/D [1270 0 R /XYZ 55.865 306.285 null] +>> endobj +1274 0 obj << +/D [1270 0 R /XYZ 55.865 207.445 null] +>> endobj +1047 0 obj << +/D [1270 0 R /XYZ 70.212 132.34 null] +>> endobj +1269 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1279 0 obj << +/Length 2235 +/Filter /FlateDecode +>> +stream +xڽYY6~_G&/wr.{=夶 " +_
4Ch<8/"4}|ݠhtwWx-(#:FJd2F&[vKHPx8ŒbY#r?{bDJ(MgdD(5 +2AБ)2%G,spk̾9STE +f<T=@3Hn>٢օbq(7yjϢu<6Ay&<QEy"hKmӚk5lQ&y ++t +!Ԣuv5NumihK
%}l˭kƈ}s3k#1vn=
WiK>1k[#iڗJ5 +ݟreH5ȯϞ3@Molk`5% ^06Z&Idf(QU8{ܙqە붨s +!ek'њƻgh;>X8geZ,!S3PPwl hj[}D>/wWv7>`rG?K6g#gXAa5T kPA`Tߏ֍x Jϐ}pbA뉶E1Ǘncrl1_R{I0Vt bw ~ h?'ho;#kV o;߾ +4/BK&샻]>M1
Vy~S{ABvvvx&VV-wUF#~{ +/7g9l3;yWlM'6߮Busߛиn*w=$}`È.mS +endstream +endobj +1278 0 obj << +/Type /Page +/Contents 1279 0 R +/Resources 1277 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1276 0 R +/Annots [ 1268 0 R ] +>> endobj +1268 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.889 491.413 255.316 502.316] +/A << /S /GoTo /D (table.12.5) >> +>> endobj +1280 0 obj << +/D [1278 0 R /XYZ 54.865 827.598 null] +>> endobj +778 0 obj << +/D [1278 0 R /XYZ 208.703 797.308 null] +>> endobj +779 0 obj << +/D [1278 0 R /XYZ 240.907 680.607 null] +>> endobj +1281 0 obj << +/D [1278 0 R /XYZ 55.865 474.018 null] +>> endobj +1282 0 obj << +/D [1278 0 R /XYZ 55.865 404.902 null] +>> endobj +1283 0 obj << +/D [1278 0 R /XYZ 55.865 252.1 null] +>> endobj +1277 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F106 1015 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1288 0 obj << +/Length 2946 +/Filter /FlateDecode +>> +stream +xڵnܸ_1<H>e]'MM +$FghY]CRc;F<"o~!v+w볋2\,DY[EVa?Լš<&=ԄWzp+4j_12b?/3`wivk~`Z8 `̄ +wRUߪ"ڋkդNj-~s\ׁ;Q|O6"dQӚ}w; w>*kNrah>oFbX=dE{,;:mr=zexA|5w` Ma^s[c.:<ȫht;i<rvEY&4.5@"tszm MomMަѬNI]] +&&n(&mr%]Nylx@7܍"&R@YUwɶ[@a|P>gf)$(oB}UȃQճ[:,\Y8هgTTxPjs]鋒, +r*CJ*<%
lH+$՚AA +ؑ!h=TÕ} (FBJh`@e3V,R:ݚ!6щ#r@OmNߖAe5`ŹM߶> +j&cS|ni2[SNxB<ΊէZ : +#7jl*>usHIN{/#UJrNGH,i`e.ӄht$c2\ !D|$ +R+!oSˣr(YM[ RQ&fX#-Ep7zDI%RCv> +;IMw2Tmrϡ$<O84&eL"9+K<G3%]ߎs[*ǪsquέjG.OMLMyG +endstream +endobj +1287 0 obj << +/Type /Page +/Contents 1288 0 R +/Resources 1286 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1276 0 R +/Annots [ 1284 0 R ] +>> endobj +1284 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.749 103.645 282.723 114.549] +/A << /S /GoTo /D (algorithm.9) >> +>> endobj +1289 0 obj << +/D [1287 0 R /XYZ 54.865 827.598 null] +>> endobj +1290 0 obj << +/D [1287 0 R /XYZ 55.865 795.714 null] +>> endobj +1291 0 obj << +/D [1287 0 R /XYZ 55.865 505.428 null] +>> endobj +1292 0 obj << +/D [1287 0 R /XYZ 55.865 376.536 null] +>> endobj +1286 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R /F72 803 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1303 0 obj << +/Length 2588 +/Filter /FlateDecode +>> +stream +xڭn_ +JD%R!$n93CRGE"rwzFg^\=}%YF'Jcr#Cv/\J2{p +6Qf=1
(ٟz@
K2B9hDeD+:"njShP +L26.u;M&={O$Se!>
/9љr(iH护ʋ|.S;%9K0'L1(RSz.ļ<eR));p|3
7fp<}rS4Yᐘه>Tslߠ8X-y@#Lf 4 +E +BTwͅFjdu:Ƀrq7>Lrjoz4
o*OXds>+^yڛvߠv1XLX%GSHp'B͍{ޗKg4qe!~`P갸 +cʽ95v7 f{g㔯`JQeT&&'YYWulY@6=Ǜb*n5QDJΦt@dw3PⰒeTd7K0φTtw!
cj\sNk"n@ +{H)iU!>9$jA2F$k-ezL@#Z3Is{ݿ6ȸB$P%
NA~/vu-.9D=vNtgL#A$ +endstream +endobj +1302 0 obj << +/Type /Page +/Contents 1303 0 R +/Resources 1301 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1276 0 R +/Annots [ 1285 0 R 1293 0 R 1294 0 R 1295 0 R 1296 0 R 1297 0 R 1298 0 R 1299 0 R 1300 0 R ] +>> endobj +1285 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.432 655.934 360.859 666.838] +/A << /S /GoTo /D (table.12.7) >> +>> endobj +1293 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [94.007 626.047 113.434 637.06] +/A << /S /GoTo /D (table.12.1) >> +>> endobj +1294 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [339.789 317.205 366.688 328.109] +/A << /S /GoTo /D (section*.23) >> +>> endobj +1295 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.389 293.295 313.288 304.199] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1296 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.019 275.362 297.446 286.375] +/A << /S /GoTo /D (listing.12.2) >> +>> endobj +1297 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [97.768 253.509 124.667 262.355] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1298 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.835 233.519 254.262 244.423] +/A << /S /GoTo /D (table.12.1) >> +>> endobj +1299 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.874 209.608 277.301 220.512] +/A << /S /GoTo /D (table.12.3) >> +>> endobj +1300 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.909 197.653 340.337 208.557] +/A << /S /GoTo /D (listing.12.2) >> +>> endobj +1304 0 obj << +/D [1302 0 R /XYZ 54.865 827.598 null] +>> endobj +780 0 obj << +/D [1302 0 R /XYZ 208.762 797.308 null] +>> endobj +703 0 obj << +/D [1302 0 R /XYZ 55.865 551.391 null] +>> endobj +1305 0 obj << +/D [1302 0 R /XYZ 55.865 535.197 null] +>> endobj +1306 0 obj << +/D [1302 0 R /XYZ 186.504 539.955 null] +>> endobj +1307 0 obj << +/D [1302 0 R /XYZ 55.865 513.887 null] +>> endobj +1308 0 obj << +/D [1302 0 R /XYZ 55.865 501.932 null] +>> endobj +1309 0 obj << +/D [1302 0 R /XYZ 96.881 504.089 null] +>> endobj +1310 0 obj << +/D [1302 0 R /XYZ 114.953 492.134 null] +>> endobj +1311 0 obj << +/D [1302 0 R /XYZ 55.865 468.104 null] +>> endobj +1312 0 obj << +/D [1302 0 R /XYZ 186.492 468.224 null] +>> endobj +1313 0 obj << +/D [1302 0 R /XYZ 55.865 442.156 null] +>> endobj +1314 0 obj << +/D [1302 0 R /XYZ 55.865 430.201 null] +>> endobj +1315 0 obj << +/D [1302 0 R /XYZ 55.865 420.283 null] +>> endobj +1316 0 obj << +/D [1302 0 R /XYZ 96.881 420.403 null] +>> endobj +1317 0 obj << +/D [1302 0 R /XYZ 55.865 394.336 null] +>> endobj +1318 0 obj << +/D [1302 0 R /XYZ 55.865 382.38 null] +>> endobj +1301 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1331 0 obj << +/Length 3408 +/Filter /FlateDecode +>> +stream +xZ68(Rb\/ۻ5p@Sd[*%W,7Ç^iD1$Pt٫-x<SDPΖۙh0Ff?t2ݏ!E/ɂ35tMBi@.Do M4i֒ƿL Fݐ{yw־G*Xi}mu>}ݠHl-BHĦ7y'hB/8Aua]id1%|p($$RLl1`~(wm/Ϟ|{˳S]a\]^_i]Cy-C}} +˚6bi<{g=[9>tl("woƥM^c=CX+ˇsw0apjJn%?Q,j50iCr@7 +EOBW;qZџ*c?ͅj<5L1y`ܑijΒ +
'蹡U/*dž*C"8g"L31C![7eh:zڴv-Y +Ue-aԛAsnP"C|nHm˱*wUzC?Zȴ~0XMQ߅a<vT,f[^ǎԭx`Uy]EjW{(II2]C=r*Ү2*
Uթ05sL6ƤbUsl(7rUSUe|H@Gs <LlWYslC.
z=xSb#_pЩ/v= +F8co6}[7d T<"ʼnb} +2(Gq*4̾F!Lh,o5(ժ[$TiQo`3h{gAE}:fQNvHFca jB@~R Qd&'e!Z"iFmdF)'QlL.5,~<䵝n3Z-C1n*>|IF;o^x=A!}4OA- W/(" 13Mɬ)yyLUn zBSdǬX +Qgib\\s\#.撅`a;3<* g3_)r)ZY_.#43L7bT{2LІ +6Fk@Pvs9ZUdmUo6k4:!nmwo_Yg2$,nmeEDuk8U0$m?4FDs
YSaHh\Z +뎰0r<4Č>x`0%'X5㧼HP˯&e#ɪntqZ/oܡ<+*_mOoFWgbcmEJ}Q +8(I@ OWxtfW`W?Hgh +h%M/xm5؏Ó$,9O&+NPfD(nĚp_cm∉tE}ZrXs|B%Ӓ~X` ~s2lCEDIeg"&135J`z1mkܰCi# +ѵVQ] R!۔.CcHђ﷾:4E3%\MOe*H + -i0` +ysL/N&C>fk|&Ɣag0WV 8U&x (L!h݈ tvc?Vb؉w~fi*Ǫj2{^ +C +AK=. +P?h¾Q4&1i1|ƬuiV#n}{1VUL4]41`B28kǬI쇛Y_p aǛ:[mΠقXj%]&IAC|r*iOy9O`Pg4b:]cZ*}_d/y_< +9>JL"sr:S⣯Xc +endstream +endobj +1330 0 obj << +/Type /Page +/Contents 1331 0 R +/Resources 1329 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1276 0 R +/Annots [ 1319 0 R 1320 0 R 1321 0 R 1322 0 R 1323 0 R 1324 0 R 1325 0 R 1326 0 R 1327 0 R 1328 0 R ] +>> endobj +1319 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.389 486.992 313.288 497.896] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1320 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.557 445.149 231.456 456.053] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1321 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.703 403.306 152.602 414.21] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1322 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [135.024 349.508 154.451 360.412] +/A << /S /GoTo /D (table.12.8) >> +>> endobj +1323 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.977 325.597 452.877 336.501] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1324 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.419 283.754 273.318 294.658] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1325 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.557 229.956 231.456 240.86] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1326 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [101.302 200.068 120.729 210.972] +/A << /S /GoTo /D (table.12.6) >> +>> endobj +1327 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.919 200.068 303.818 210.972] +/A << /S /GoTo /D (section*.25) >> +>> endobj +1328 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.492 188.113 163.391 199.017] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1332 0 obj << +/D [1330 0 R /XYZ 54.865 827.598 null] +>> endobj +716 0 obj << +/D [1330 0 R /XYZ 55.865 793.722 null] +>> endobj +1333 0 obj << +/D [1330 0 R /XYZ 55.865 664.242 null] +>> endobj +1329 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1343 0 obj << +/Length 2744 +/Filter /FlateDecode +>> +stream +xZ[s~ׯCpW +
qm|<` +l\PzfxU<lrH@FQhH:ZYṉ~:=YAֹhzua|0i$St +`þuke@ +jԘꤍR^ϯ!㉌y$\zFUѱpȠmup%4,s~Yf.i2wF1`=i}j@;"p,ݤ +ցSu'ѐ;H'"?U(JDwbl7$c^jeV(,rJ_7o7 a B(`H间U]]@uC<QWPdyk:jHa)h^}V0 >`Qk!)z+ %WM=*#J"a/ /jmΜ"Oc0]~D=z29$Ě(((-;q+I)kZZNܚ$rޤ~ +?epgeWШƍ)G,mp29qN\ca@ +Mo3mKd;?n7Y!A_a,tXD@DSKiCAAxA\*,fDVW;eo{Uܼm/Z,aUx%nŹԓ2;&{AtPaU_q4FnW2(,pЪbg/Tro7/;A%.Ga%t3Yx8>ޟd!Mӗ:2v[۴U۞>L[uX|]aWP;,4:}^'ɫR:aNiඇ;"Qe_LmH04W(j@5M^H3 +!|[<Ko] 0VNFڟO˙<[#xЏ{#c
Fl)7>}z3F{7vB7 hHMl-Mz:Xl +v%.z;?y{s_i)a'+M]ύ鱕JfRtO/eȹ +ϲ=k
dsHp/ =}3Ri'UNI~66XlM[6.O#Wƾs;X?,ln:Q@h^+>s1֗ZC,k*[O +endstream +endobj +1342 0 obj << +/Type /Page +/Contents 1343 0 R +/Resources 1341 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1276 0 R +/Annots [ 1334 0 R 1335 0 R 1336 0 R 1337 0 R 1338 0 R 1339 0 R 1340 0 R ] +>> endobj +1334 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.389 631.166 313.288 642.07] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1335 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.824 571.39 282.723 582.294] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1336 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.557 529.547 231.456 540.451] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1337 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.725 475.749 260.152 486.653] +/A << /S /GoTo /D (table.12.9) >> +>> endobj +1338 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.929 451.839 206.828 462.743] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1339 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [104.314 421.951 116.27 432.855] +/A << /S /GoTo /D (algorithm.10) >> +>> endobj +1340 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [400.818 398.04 427.717 408.944] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1344 0 obj << +/D [1342 0 R /XYZ 54.865 827.598 null] +>> endobj +704 0 obj << +/D [1342 0 R /XYZ 55.865 351.216 null] +>> endobj +1345 0 obj << +/D [1342 0 R /XYZ 55.865 335.022 null] +>> endobj +1346 0 obj << +/D [1342 0 R /XYZ 55.865 326.977 null] +>> endobj +1347 0 obj << +/D [1342 0 R /XYZ 55.865 315.022 null] +>> endobj +1348 0 obj << +/D [1342 0 R /XYZ 96.881 316.202 null] +>> endobj +1349 0 obj << +/D [1342 0 R /XYZ 55.865 291.112 null] +>> endobj +1350 0 obj << +/D [1342 0 R /XYZ 55.865 279.156 null] +>> endobj +1351 0 obj << +/D [1342 0 R /XYZ 55.865 268.262 null] +>> endobj +1352 0 obj << +/D [1342 0 R /XYZ 55.865 255.246 null] +>> endobj +1353 0 obj << +/D [1342 0 R /XYZ 96.881 256.427 null] +>> endobj +1354 0 obj << +/D [1342 0 R /XYZ 55.865 232.341 null] +>> endobj +1355 0 obj << +/D [1342 0 R /XYZ 55.865 220.462 null] +>> endobj +1356 0 obj << +/D [1342 0 R /XYZ 55.865 207.425 null] +>> endobj +1357 0 obj << +/D [1342 0 R /XYZ 55.865 195.47 null] +>> endobj +1358 0 obj << +/D [1342 0 R /XYZ 55.865 184.576 null] +>> endobj +1359 0 obj << +/D [1342 0 R /XYZ 55.865 172.641 null] +>> endobj +1360 0 obj << +/D [1342 0 R /XYZ 96.881 172.74 null] +>> endobj +1341 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1370 0 obj << +/Length 2653 +/Filter /FlateDecode +>> +stream +xZKsW𐃔Zx$CʙLywg3Y뒚l(X# +IJ忧 +l3'&UD_F 4"NX*
IH05HVL"X[ˇPO@$T<H:(ATբC&s
yƁkSP5jsW +̱&ؑDB$pGF6 +S0Y< +6w&) *M=GpfpP +IxqH;ᓷB+ +){?("G1y:,37;y{: +|b+T
Sa&L`Tucd4[mAZ[tg`b07^Ѥy9hÅB^eLgvN,Ni̚/М:/;Sax+9=#XHk_On桦a;@1}Y煈mF5&.X˧8ԡ1ۥ
+IxDhtk7omþnl6GM4$VTQ~W +m;SBLSarڙIߔ,qrf4tf
ș:zurٌ֙ơ3<HNtLE;gй±uf.>aq.O1_^y2@}BO}{}-ۇ}wqrv&3wwG{bZ^oà>!Sr{`u +%Bg&_`g(qz +Zc=.^= +ÓĎUQw3^D*x5 +endstream +endobj +1369 0 obj << +/Type /Page +/Contents 1370 0 R +/Resources 1368 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1373 0 R +/Annots [ 1361 0 R 1362 0 R 1363 0 R 1364 0 R 1365 0 R 1366 0 R 1367 0 R ] +>> endobj +1361 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.201 649.957 204.61 660.861] +/A << /S /GoTo /D (table.12.10) >> +>> endobj +1362 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.455 614.091 391.354 624.995] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1363 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.557 560.293 231.456 571.197] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1364 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [125.703 500.517 152.602 511.421] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1365 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.557 470.629 231.456 481.533] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1366 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.557 440.741 231.456 451.645] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1367 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [378.154 189.683 405.053 200.587] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1371 0 obj << +/D [1369 0 R /XYZ 54.865 827.598 null] +>> endobj +781 0 obj << +/D [1369 0 R /XYZ 218.237 797.308 null] +>> endobj +1372 0 obj << +/D [1369 0 R /XYZ 55.865 172.288 null] +>> endobj +1368 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F106 1015 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1378 0 obj << +/Length 2538 +/Filter /FlateDecode +>> +stream +xZ[s۶~CїN8iN3i-Q6TO +AO79ZEJcHd$d'cgа{wTf}v2D;Mψ %<'):R&G +T)SE1Y U*"UHWJvS-?:^W` +74ihWA У˛m`%z_Γ}˺ݺ-{ys":o.ߐI0~bVӌh]dD8+CD^^]VBޝa6bnp0_[+u2i(ȭrluCo:_Uh"Mʕ{pѝ?^'B @&ou3G"#| +DզW!p>1$|H#O{B0$[r
u*R)*tzfV{n\2@}x6H7A|R*9nؙ#& +Y0\8 +S>j#KActj5CR8R.@NP$Ktp>yo5M(nCJбa
hJ>$l=d73y왨^J/D_, +RD_NƗ$DA`"9)XsDY,RdAO)E`'CA + !y |IbTo-f]c; +i +?İ!R2uo_i +XfYKשܼX߹a[a5 ݆'lJ?eͳY -z˲]J3Hob翵Z +k6*V@*v{ uA aÕN(6! +2vb4¹Amsr+@2b|/@S~<aMpׅd# +endstream +endobj +1377 0 obj << +/Type /Page +/Contents 1378 0 R +/Resources 1376 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1373 0 R +/Annots [ 1374 0 R 1375 0 R ] +>> endobj +1374 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.692 473.48 240.591 484.384] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1375 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [155.27 254.924 179.678 265.828] +/A << /S /GoTo /D (table.12.11) >> +>> endobj +1379 0 obj << +/D [1377 0 R /XYZ 54.865 827.598 null] +>> endobj +782 0 obj << +/D [1377 0 R /XYZ 200.912 797.308 null] +>> endobj +783 0 obj << +/D [1377 0 R /XYZ 208.528 680.607 null] +>> endobj +1380 0 obj << +/D [1377 0 R /XYZ 55.865 294.69 null] +>> endobj +1376 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F106 1015 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1385 0 obj << +/Length 2815 +/Filter /FlateDecode +>> +stream +xkܶ +-UER#@9xӠC+qoJk=|>\I;۩~91=z^}{˂,汷y2 )W/4\dI4\9;4՚s:f𗛕o?i=Y !~KS}5sW@ c{8Ej^hoٍޠ=]EC}nȺD3s9\Eȃ85t!f~=(x}A$_ւ7-wԴ}UҼhm9ZuUSkכwW(c^^ +W^z%}A%ޝ<z/{ywR8a2%2Ri^HFX_D,LX bn\6<!(K_?b(K?dLpIGeu,y0^5Xf&ͭ7[c:#~Z +#q?q +'>$憭虦t"̼0LSuȒ_G>fGvT:1>ÐEc~O9C}@˙=j0)UW.oաYq߭bgNXwNKl!nqrVdQAZ3 +P5} u"Č)ƐU{jxHbb_w4ʋi^h UtЏSBF"B_8+v#IaPV˸LYt}[QlФl:կTDQÆs按X(IԥK4DE)IdΔkm( d'N3#d"fZSů6#i"2!ɭHZUM{0 +9{!D(靄xTepO0{'Z_[h5Qp1 _>=0aN/an4S^ocX
v,[`o
T~:ͩE52:u.T
yOPai8녣*y]uGsV/iZ(,CM+P91G}Q1u05Eg%64::X_US stCU5Ǵ ^zٶG:}hU^/*>?`bt]#XGAeG +PJ8QfAya)U n(b~^t+eD8j=ڦq
NchiRc (cHО#H%&df5Θ+Z9 +U|!Q +t + þ"":a4iݾk<5{<_riuAK]c-N:?QF +1I!LU$1y 2w"3HF:F(ε+f%iX1[rPVOў$FR!1+1a1?c]U?=nٕ@O31n^Ye7Gkwk<wCG|.BUǠ~S:&饸$*cRsK"JFC9EUۆаZtTh]nyv2~w2+ + 9s +^gw_7@LkEUTaa +ڣRdb41r:Θ&]["JpGIYSǴz\ +u
s!(ą8U,PP& qj$~4|,[bb +:ظ13>ߴo;$ܚ%06VL,* +рtrGxGJ\/(tL A6"ϗ\k鶘"unKSD2,_2%[|MP!@fYe>Bث-
US^uNyDE7#)7b8f9`_R7W +endstream +endobj +1384 0 obj << +/Type /Page +/Contents 1385 0 R +/Resources 1383 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1373 0 R +/Annots [ 1381 0 R 1382 0 R ] +>> endobj +1381 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [101.633 434.764 126.042 445.668] +/A << /S /GoTo /D (table.12.11) >> +>> endobj +1382 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [288.192 323.805 312.6 334.709] +/A << /S /GoTo /D (table.12.12) >> +>> endobj +1386 0 obj << +/D [1384 0 R /XYZ 54.865 827.598 null] +>> endobj +784 0 obj << +/D [1384 0 R /XYZ 194.417 797.308 null] +>> endobj +1387 0 obj << +/D [1384 0 R /XYZ 55.865 417.369 null] +>> endobj +1388 0 obj << +/D [1384 0 R /XYZ 55.865 133.06 null] +>> endobj +1383 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F106 1015 0 R /F67 639 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1394 0 obj << +/Length 2930 +/Filter /FlateDecode +>> +stream +xڽZs۸:sR7'q2Dtt(xH8N{w +DCMZ4;xvϸK-;{^迯.:TEٻO4%9FיI1Dp|I&pRO˄l:O./hy.|NunW[iRCW4H3z{W_/tr>?tvp\:A ➳ܝ;+xY^sਁBSm'O!A@ˋXCIQ<sq1<P \F <cAyW*%+Z#:3g.gASE~IՃDϋ"~qG0X{ÐDe/" +7IUFrl4:q>I66{eEq1%Ynix3(ϋ%&'aleg
^ɧaeZ!{kdomȁ~q 8dE?iR{,<?w}ʇ=ҋ#M̈l7EB6.kfE)]sJEk9E +qeehkvĺLub"Ÿk#?=)/},Zl*-zP(2% +.9/i$/.VcĹv>ȻXnR¬:T[RC[S<x]Y. ;ݮhAMV"А8lYhvI+t8{2MB8b~$aBE>şBu"Oq99o.iծ^#0(mXCT\-fYP4<CΖU +N6r$#mB'~}_%;=j2GaջERXoj7rC˖qF M]h"ѤȾܜ5m/e ZDJ_M^Fn?H])_c:)stIZ/\` +.A66R*9U$YcfpL
Ȍ0<Tڤ +Z`]XGAhLuxA>"DM2t#ДLjgDs[mbGЯ +O*z*hAs
-2 q@kk("@ݚfiB)okСt; k}z>иGw>u5kp|] +_GqQl/M ̺;$#(FbbJ-0WM{ +NB!O̩pzSȥ-ԯԔ^%l}#o!u죲M]}x_a+l5\na|A\kF%(aittj.0w[80 f{a(v{+4:Sx/)YIIi8KJ[oOw(_KzfeJhLVX4[ oI3* +Ic +IZ a`QQGK1d-_41jQ!̀R
ci$9hHcqZxsznF2I+f1dd#RpGLB hk(4;gU;chu.ZJV@v(u!;FU +]ُ;Q@4
aFL Hsobx{_|FTf>6P+nX.*Aa"R61HS!uP%Ҥ:ľ-hhQwKYa#ၭjˌ4tj@$(!A +^1ÉZD*2)ch(]GᎢ}U=A3Mcݰ]:u"Bfxi +F'^tڊq5X[&\h,ߑLw[.bk]dQKa@{}/{Oґt
Svo~s٧@e + +:\t5qL <rL
TW}(Y؍XM&'6TJmudo뎌/ 7GMhr>,F +endstream +endobj +1393 0 obj << +/Type /Page +/Contents 1394 0 R +/Resources 1392 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1373 0 R +/Annots [ 1389 0 R 1390 0 R 1391 0 R ] +>> endobj +1389 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.976 449.334 194.403 460.238] +/A << /S /GoTo /D (table.12.6) >> +>> endobj +1390 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [352.755 449.334 379.654 460.238] +/A << /S /GoTo /D (section*.25) >> +>> endobj +1391 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.692 437.379 240.591 448.283] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1395 0 obj << +/D [1393 0 R /XYZ 54.865 827.598 null] +>> endobj +785 0 obj << +/D [1393 0 R /XYZ 161.869 797.308 null] +>> endobj +1396 0 obj << +/D [1393 0 R /XYZ 55.865 590.719 null] +>> endobj +1392 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1404 0 obj << +/Length 2401 +/Filter /FlateDecode +>> +stream +xڽZ[s۸~CNJNMRol83;Z-R˯9 +猃:>#6!:xÑC MTtPY*[ +
0 +
7+J_r2rG!ojYopahWndԇЪ5`}U4$K|&Ϋ F`7]6q]gsĤΛj=#$KGqz<GxˇWn@bu+D;P +vc&ALMf<R(`_y +,.Lxчv'Sp};ւP$IPA:Tnxy''j:QQ_ܳEChy\7sXqZap@+f,stppu!zhoXR]Lj9AZ܌MTӴ4hv^tilHf&qy4wn`%S[Us9w[7o7m>H#/X\p +2ҭ`-uH )C^ +`?>]}?4>/yAoZ__!w"L~Ax=HibMZuazP9͝Dچn;X:Z7ٮƯc>hr?9` +'75.Ca1;T'N߭>T=PP-a',W4~pRؕ=nj26R،BK|B |Ojt(^ +NAGb|zY!6e(-)Y<ՕM~5b lZ! +p&M@$~;"NhdtA=m]TGRD>Ot\:W2E]
tPW/Wg^iS732<wk]ݵaV8\MVwhEAroECUH#-7[[+M~:ԊH"7.ݍ +tχ*pL1IOk/?j"C bl'Kf`T +endstream +endobj +1403 0 obj << +/Type /Page +/Contents 1404 0 R +/Resources 1402 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1373 0 R +/Annots [ 1397 0 R 1398 0 R 1399 0 R 1400 0 R 1401 0 R ] +>> endobj +1397 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.375 377.838 210.783 388.742] +/A << /S /GoTo /D (table.12.13) >> +>> endobj +1398 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.894 347.95 301.303 358.854] +/A << /S /GoTo /D (table.12.13) >> +>> endobj +1399 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.223 302.167 155.65 311.143] +/A << /S /GoTo /D (section.11.1) >> +>> endobj +1400 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [362.657 280.767 394.538 294.715] +/A << /S /GoTo /D (subsection.10.1.17) >> +>> endobj +1401 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.121 258.287 259.53 269.191] +/A << /S /GoTo /D (table.12.14) >> +>> endobj +1405 0 obj << +/D [1403 0 R /XYZ 54.865 827.598 null] +>> endobj +786 0 obj << +/D [1403 0 R /XYZ 220.005 797.308 null] +>> endobj +787 0 obj << +/D [1403 0 R /XYZ 198.536 680.607 null] +>> endobj +1406 0 obj << +/D [1403 0 R /XYZ 55.865 240.892 null] +>> endobj +1402 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R /F106 1015 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1409 0 obj << +/Length 1678 +/Filter /FlateDecode +>> +stream +xڽXKs6WЙ@${K;vdM.MC1E|.(I&E\ +ϫ(cF~{4z?f50R +A)\,$@pH˭vyHƵ;WӺ!g;J#}*9t%'uB،Y]Bi3,)S9IQrHQҔogR;at>W%2\ci̜ p!!ٌ%GrFݕˠF'H=Х};(d0r^[vSEQpmNѱrЕ+`(1iաfI;2? NC^C|2g~m}`\Aw"4!Q͜8ұosj(v#iĠ`4&8smOv8î&6ar=;]r43ltӀ>8\cSPS[oz#Xx.BB鄾z|q5^
ñw-ɤL_;2wxc6{W.Z7(%1%Q|X~jàm[c8MH81k#CSfou,!u
ShiQʜZ:4c=nNWmewd +jmZ:ğ`(ŝ ]%8?"uv +endstream +endobj +1408 0 obj << +/Type /Page +/Contents 1409 0 R +/Resources 1407 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1373 0 R +>> endobj +1410 0 obj << +/D [1408 0 R /XYZ 54.865 827.598 null] +>> endobj +1411 0 obj << +/D [1408 0 R /XYZ 55.865 763.211 null] +>> endobj +418 0 obj << +/D [1408 0 R /XYZ 55.865 595.799 null] +>> endobj +1407 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1414 0 obj << +/Length 1447 +/Filter /FlateDecode +>> +stream +xڝWK4W
Ȗp"dCD8xm*%kv37ސV%}46l+F7Wl(|y\d<fEwhҜE ղĪ4~E9P:$N7TuN V342;e yH;7G9!ҍ3ݠzEe?0b$Xr/f2zHc!^qZί86۔E$!M~B$=&ϊZ%eu:./1=ZR< +\VqG
g<r-GZ1MhmR#Clp/பݪZFzv:"?]&#N9\u,Mqw_9>qx-]Y +y%I\9 +P&g2#1[5Z\)O<nVR)ħ酑OG)DfNDƺ8)iY:Ӳ:jqR6:1D'hܔd)6 yD[ͣ%"@h34 Ȟ4GYiW.h#հ6%%|y+.,.o)(/ 1Cz֯b7J +d+a iή9*yzyJKIwNXAnUt7 X +TcMJ>x -IUd7쎍6un`^t.Oͅ{lUS ܵmVnO勥а/<u
SO-2;TVTJJ`5`$sst(/H,2$%,INmj`nex1!mz++,S/Tbjȣ 980~ +}$faIlv>
~hMVXyTGXgY0J$
`B$^ ts_$u<NFH31»5ѯ}'9Qk_K4TC[tZGO$p@@KB/:>|*gmJs2@{Ѫ j(%n0! ++O8!|8D%o͞һުEB +;d3:{*':L?BK?,ZC\eKrX[|)q\#YБ'qCee'}_S3s-}7<Ӫ9%VYGHCGe녥k5 +endstream +endobj +1413 0 obj << +/Type /Page +/Contents 1414 0 R +/Resources 1412 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1417 0 R +>> endobj +1415 0 obj << +/D [1413 0 R /XYZ 54.865 827.598 null] +>> endobj +422 0 obj << +/D [1413 0 R /XYZ 55.865 793.722 null] +>> endobj +1416 0 obj << +/D [1413 0 R /XYZ 55.865 601.443 null] +>> endobj +426 0 obj << +/D [1413 0 R /XYZ 55.865 571.639 null] +>> endobj +430 0 obj << +/D [1413 0 R /XYZ 55.865 464.008 null] +>> endobj +434 0 obj << +/D [1413 0 R /XYZ 55.865 341.428 null] +>> endobj +438 0 obj << +/D [1413 0 R /XYZ 55.865 186.633 null] +>> endobj +1412 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F72 803 0 R /F67 639 0 R /F14 800 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1422 0 obj << +/Length 2575 +/Filter /FlateDecode +>> +stream +xYݓ۶o:'HwKzV8%Nl(RI;X)9gb]ޓxo6J"K<2ΙHbo>7ji5C<4:7wz|3,2]naEIl +%qG S nDkꮡQwm'v& 0&Z)'Bn:<>wMzeȜ'vcLoϊsoj0|p0
E'Ǒ߷rOx$|zlLҚhO2,ʖpޞN0ƙo
hTDYAdm0WekC +Օ;}q_PjD-0QC}gC\u|o]xlp'1tMvan-SHőu?-)ttL>b!$5E&(}ބcߢ!y:ȓwH`=NJbUF{/eۑg<Ca)$&L4)W&7>lڼ +*:z(qqQR˶_nb@e&ZOYKkQ +G_>;̱HˉY>̑S e!KE>@)rDLїxP:E֤֎S9C[cqw!h7e\LG)V<65],~˹<_Pؤ;
[V +3v-hqn(Z\=M!vÎKq`Hju`UcMPyj(KZJE +6]v6U +|n|z8, Tϝ/J0u+CB#LE>c1'6xZ4eZNC[XHfq!]/HBK]D}Y[ LWJVbP#Г;mI13>Eガw6tXlAcx4R,3_8LX,H̴;8<x"`q2ЀV)5j^Җ!2urb28Ad3ƾ^VL8\;hz^J˦7t!,i53ԏ=7Fl+ͼi[40_6 );]wz\Ш64kޔ#;vGmJ^NPa:<>>/É?1S1D+iEӨ/RS%ȥf?{zf2%c/O4_fӻ[،$$hGØ@`0EslZ[GT3o9ahIYw9+nieְbg`[#e#C!a +Za¶(_yMOߴe +XijfkpM;ȣԤSBhF7Cϻr[5Y_=WB!̅ +endstream +endobj +1421 0 obj << +/Type /Page +/Contents 1422 0 R +/Resources 1420 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1417 0 R +/Annots [ 1418 0 R 1419 0 R ] +>> endobj +1418 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.9 347.989 169.327 358.893] +/A << /S /GoTo /D (table.13.1) >> +>> endobj +1419 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [88.901 139.397 103.347 150.301] +/A << /S /GoTo /D (section.5.3) >> +>> endobj +1423 0 obj << +/D [1421 0 R /XYZ 54.865 827.598 null] +>> endobj +788 0 obj << +/D [1421 0 R /XYZ 183.468 797.308 null] +>> endobj +442 0 obj << +/D [1421 0 R /XYZ 55.865 669.05 null] +>> endobj +446 0 obj << +/D [1421 0 R /XYZ 55.865 560.318 null] +>> endobj +450 0 obj << +/D [1421 0 R /XYZ 55.865 395.626 null] +>> endobj +454 0 obj << +/D [1421 0 R /XYZ 55.865 208.886 null] +>> endobj +1420 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F67 639 0 R /F14 800 0 R /F72 803 0 R /F8 845 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1426 0 obj << +/Length 1671 +/Filter /FlateDecode +>> +stream +xڭXo6~_G9QdYeE[;MBeɐfw(Qۮ[,:xJ=zO"2av瑗rbykKXȱ0\-a_/1_oH+n̈A3c cBʑPF53d0c fH{wwTwm~yGZD2C|{On4fS-s[H3o&,$JsH{24hԦgnˋ'r ,i\OGy⳪;Eٗ4vN*3foo^={^ +609f^ +o |$kᷧ>j܋m8c9,lb DK8ED "gI"bNWusxB%YdQOxyIH$a;K ^p!<
`mB('#psFdՇ3s.LbU76+9ClJ8ᲞcB/&"4@
LEdZ6`f1 +o0e,3H8O3A>N$Sqà:Um)NU~Pu%j3#[2UUWl@jܡZ1`QY&UHc +*]T<,l1R$lAHD2X8Ѓu@_ЄcUC͡>e}@Ѧ'C +\ō7>E5uiO[M~E_ԸEP)txšMBN-x>E W +[6ءKh$ͱaVe˔1 ]uzS0B HQ5&a3-\/Z\6=G)tl%$$3+k}OM9m"\ŕF4j}56
f|>cks*fh(4b'C)ʯsPk5R-n;-%,%M!ZWSQnvMd:ĔACvӈJ5z!"ePd2^=5iLb' m]:w&Fë}* 'Z8QPkIYcP&7@ЯlHʷq-g7mlp|9}+}}*˧mO.'GņHmٛ&xqH +yCB齳ok5LB>t;ˆnqm]q$nj_}n .꓄1}㤛ۻڒɃ//U
$Efu% +endstream +endobj +1425 0 obj << +/Type /Page +/Contents 1426 0 R +/Resources 1424 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1417 0 R +>> endobj +1427 0 obj << +/D [1425 0 R /XYZ 54.865 827.598 null] +>> endobj +1428 0 obj << +/D [1425 0 R /XYZ 55.865 793.722 null] +>> endobj +1429 0 obj << +/D [1425 0 R /XYZ 55.865 757.692 null] +>> endobj +1430 0 obj << +/D [1425 0 R /XYZ 55.865 721.826 null] +>> endobj +1431 0 obj << +/D [1425 0 R /XYZ 55.865 697.916 null] +>> endobj +1432 0 obj << +/D [1425 0 R /XYZ 55.865 674.006 null] +>> endobj +1433 0 obj << +/D [1425 0 R /XYZ 55.865 650.095 null] +>> endobj +458 0 obj << +/D [1425 0 R /XYZ 55.865 622.449 null] +>> endobj +462 0 obj << +/D [1425 0 R /XYZ 55.865 501.926 null] +>> endobj +466 0 obj << +/D [1425 0 R /XYZ 55.865 429.697 null] +>> endobj +470 0 obj << +/D [1425 0 R /XYZ 55.865 361.851 null] +>> endobj +1424 0 obj << +/Font << /F37 533 0 R /F67 639 0 R /F60 582 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1438 0 obj << +/Length 1957 +/Filter /FlateDecode +>> +stream +xڝX[~_G,Yh(I2cy(J"=6Z̿OuW56,l扦սn~~ͻ3c̟mgo?g;;d?}rle=_0߱\>?"SD7&Y&&IrMgs
̸8us7dV3R,,tm9o;_䆶`!kuyw .w`ٗ5 +||q|+o+o7mCRe\j$`Iٜ0pGW;j`14i5Z&7Atj=qO=$8Uۼ*b&KtV]G0ʼnC,$`
nbY7p4r_FsȲ)}n#]')e&}s>Vd0߭,R*Uk lAaG;Y6Yq"!!/p,dKdYG"9)AtJu
e;";pXﴌc^E%s|#'KR#3.n;ŊyR&ET::8^}zv]@hаU^T䥤Imop͓Vu<չkـNgx&)統5t +(d.tR&pKIfPVyf.p=hˋli>2et|gOl?nU|w;a+JLYC'=Pl+_َEܵC5r!VoCau\sï Ds +&ER!fʓ<ӉOū?SvȮ)hC|"Oe\Gڱ˛!~=gbu#S8yY/W ++hOyfy|(.%]Ưl!ƬTR~$nљ|f)̪]Q};U6HA4bBҬ+[lQ ezg +Y2 +'1m<ztҽ2PN@-L:[kRm_hq-\Y! +VF#lF!m!RPȖ=v&aso*FO0䳋j!qSRoZ}z0 XcMӗI&hB0|c +N/T@c&I^vS$!~I[ +N`}Q@RCzUMIh㭩<8{H.nk)Q028D,$#_s2 +(i!ZW;c@`BK +endstream +endobj +1437 0 obj << +/Type /Page +/Contents 1438 0 R +/Resources 1436 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1417 0 R +/Annots [ 1434 0 R 1435 0 R ] +>> endobj +1434 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.071 221.971 172.517 232.157] +/A << /S /GoTo /D (table.8.2) >> +>> endobj +1435 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.269 198.06 199.714 208.247] +/A << /S /GoTo /D (table.8.4) >> +>> endobj +1439 0 obj << +/D [1437 0 R /XYZ 54.865 827.598 null] +>> endobj +474 0 obj << +/D [1437 0 R /XYZ 55.865 793.722 null] +>> endobj +478 0 obj << +/D [1437 0 R /XYZ 55.865 607.123 null] +>> endobj +482 0 obj << +/D [1437 0 R /XYZ 55.865 495.575 null] +>> endobj +1440 0 obj << +/D [1437 0 R /XYZ 55.865 425.488 null] +>> endobj +1441 0 obj << +/D [1437 0 R /XYZ 55.865 413.532 null] +>> endobj +1442 0 obj << +/D [1437 0 R /XYZ 55.865 401.577 null] +>> endobj +1443 0 obj << +/D [1437 0 R /XYZ 55.865 389.996 null] +>> endobj +1444 0 obj << +/D [1437 0 R /XYZ 55.865 378.041 null] +>> endobj +1445 0 obj << +/D [1437 0 R /XYZ 55.865 367.714 null] +>> endobj +1446 0 obj << +/D [1437 0 R /XYZ 55.865 353.757 null] +>> endobj +1447 0 obj << +/D [1437 0 R /XYZ 55.865 341.801 null] +>> endobj +1448 0 obj << +/D [1437 0 R /XYZ 55.865 329.846 null] +>> endobj +1449 0 obj << +/D [1437 0 R /XYZ 55.865 317.891 null] +>> endobj +1450 0 obj << +/D [1437 0 R /XYZ 55.865 306.309 null] +>> endobj +1451 0 obj << +/D [1437 0 R /XYZ 55.865 293.981 null] +>> endobj +1452 0 obj << +/D [1437 0 R /XYZ 55.865 282.026 null] +>> endobj +1453 0 obj << +/D [1437 0 R /XYZ 55.865 270.07 null] +>> endobj +1454 0 obj << +/D [1437 0 R /XYZ 55.865 258.115 null] +>> endobj +1455 0 obj << +/D [1437 0 R /XYZ 55.865 246.16 null] +>> endobj +1456 0 obj << +/D [1437 0 R /XYZ 55.865 222.967 null] +>> endobj +1457 0 obj << +/D [1437 0 R /XYZ 55.865 199.057 null] +>> endobj +1436 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1461 0 obj << +/Length 1214 +/Filter /FlateDecode +>> +stream +xڥV6Wp3Se$@1qlWC\T.N3T@}Zꆅ&[ jԯĢSĢOwow>J J)hEZ"*Y2ɣ}}ߟ0qżiYOcQ3'|sjgVFuZK!g?"v8L54w:ewqci5әb\np54HKK̈́dzu4ʴ^ +8Oƶ{ݴj
ڋK} +"NaG`mvD,N%w'y.ݩaH +y}YY*l>"C}| +37fhT]_|[Con-Y6[$hY +ٚPЛ[$7 |RƸ ?#ADn\U=PDӌM[nT[.9OSwy=A9YZlK$>gyib $DoQj?"Qj~6JN]}o⫈X1xaT3a۽Dy_<-gK:` +endstream +endobj +1460 0 obj << +/Type /Page +/Contents 1461 0 R +/Resources 1459 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1417 0 R +/Annots [ 1458 0 R ] +>> endobj +1458 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.216 514.603 217.189 525.507] +/A << /S /GoTo /D (chapter.6) >> +>> endobj +1462 0 obj << +/D [1460 0 R /XYZ 54.865 827.598 null] +>> endobj +486 0 obj << +/D [1460 0 R /XYZ 55.865 793.722 null] +>> endobj +1459 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R /F72 803 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1466 0 obj << +/Length 430 +/Filter /FlateDecode +>> +stream +xڍR0*a&I $%sLR%)d$c&1X +ϵTٳ{VHGc~nvhU IJ +*NK~&R!iroi&$TiŗRF2V5\0Coх"5+Qm`%A\S+rbL.͊Lbrv3cc0Irl0Lt.C1ۚ:?3h +
˶c h +endstream +endobj +1465 0 obj << +/Type /Page +/Contents 1466 0 R +/Resources 1464 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1417 0 R +/Annots [ 1463 0 R ] +>> endobj +1463 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [208.71 563.047 437.851 573.328] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://www.gentoo.org/dtd/metadata.dtd)>> +>> endobj +1467 0 obj << +/D [1465 0 R /XYZ 54.865 827.598 null] +>> endobj +490 0 obj << +/D [1465 0 R /XYZ 55.865 793.722 null] +>> endobj +1464 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1470 0 obj << +/Length 897 +/Filter /FlateDecode +>> +stream +xVo6_Gi)Aŀ[`hi,5>JS[
؋u>~A{ZHpJ"Xo!H*EЈPɂ&.g\M:sATI&̩`IJх
jСf$bfb\5$eY;j,s4UŪ"q~tHm?ʾU%}gY5iui}SWu>4MlQ7 ]XLtiz뜧aQm=S9QMFtE=c"|t?P'<{Wn`*;p5ToPah\@ + +>,֨KFc,]ZW\s<K?{s0jf)*0z_ 6{{^ZT{\}mJS{5ԛˁ3_|>E]VYslK`:Cҥ_ /N²tP[<vn + S. s%(pm3?BxdН?/'x, D+f;F!k<{F=T+Aٿ@Jh44X;_~rl.Ӧ%lG1"W#LcWBgbug⪒d<dr$zvx~):hS<xqەq۾*\Gu}DD"Kz6j*/)rW-Ua)?n@;}[ʇk$0^Ot$"#CE BG]τV? +endstream +endobj +1469 0 obj << +/Type /Page +/Contents 1470 0 R +/Resources 1468 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1472 0 R +>> endobj +1471 0 obj << +/D [1469 0 R /XYZ 54.865 827.598 null] +>> endobj +494 0 obj << +/D [1469 0 R /XYZ 55.865 793.722 null] +>> endobj +1468 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F14 800 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1476 0 obj << +/Length 1350 +/Filter /FlateDecode +>> +stream +xڕWݏ6_ae0l0tlah֗ހ9X?z~H;u{H<ͫ7&%ަdY"G'OJYBrfY^ +b*׃:JeqAu]tlj
C1hiU"} +\:B?ᣚUةPa>,/E[1%ߘvVw<e"ɯ.DILlbz\/zTۡ3X: s] 0R!bWI +ATH&~aT#,!9WxL\|(Z8z|~oƦBg/TSt:G't`s1b&JSjްpsTDlS>|#DD_g+f^N&ݣROF<HniJlVMOJYr`\'zwm3b*`q9tLлrJ46-鲇[{Lu.j.!fͅl'J[;g3LX<OGZRGф>X]@t`,r|?iݙÜDt(DSe1@0e!HpY,0@583AuV~|p{t= +;R,8(uO]vx0G<&4d>0U|D@#kc2,tv(\ˁܻ\4dn[B3 !HS<8 1(`Mr@LٙSzLt`iJu7z9Mg{O| Ym +T[jS]"螺u &T/,HJ/T[LBǟ_iczz
,nl$xcgNү4*'<=a.YqVبjd\?z(a+aC2ع|ȎvmۮqωZa9'ǽ.HN+7ZB +H;ڮ5)kP/JRwڙ5j6gn!-Ao`:s.yB;*ʺWS^5CۍW #qz4]o^ݔ +endstream +endobj +1475 0 obj << +/Type /Page +/Contents 1476 0 R +/Resources 1474 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1472 0 R +/Annots [ 1473 0 R ] +>> endobj +1473 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [362.747 494.578 378.856 505.482] +/A << /S /GoTo /D (listing.C.1) >> +>> endobj +1477 0 obj << +/D [1475 0 R /XYZ 54.865 827.598 null] +>> endobj +498 0 obj << +/D [1475 0 R /XYZ 55.865 793.722 null] +>> endobj +502 0 obj << +/D [1475 0 R /XYZ 55.865 547.729 null] +>> endobj +506 0 obj << +/D [1475 0 R /XYZ 55.865 438.041 null] +>> endobj +510 0 obj << +/D [1475 0 R /XYZ 55.865 336.387 null] +>> endobj +717 0 obj << +/D [1475 0 R /XYZ 55.865 204.455 null] +>> endobj +1474 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R /F72 803 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1480 0 obj << +/Length 284 +/Filter /FlateDecode +>> +stream +x]R y +p.!@⭎qrS4dtڷh/,,. +endstream +endobj +1479 0 obj << +/Type /Page +/Contents 1480 0 R +/Resources 1478 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1472 0 R +>> endobj +1481 0 obj << +/D [1479 0 R /XYZ 54.865 827.598 null] +>> endobj +514 0 obj << +/D [1479 0 R /XYZ 55.865 793.722 null] +>> endobj +1482 0 obj << +/D [1479 0 R /XYZ 55.865 601.443 null] +>> endobj +1478 0 obj << +/Font << /F60 582 0 R /F37 533 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1521 0 obj << +/Length 1596 +/Filter /FlateDecode +>> +stream +xY[o6~ϯ$`x8`ntnĵE[^ɕ;%Ƕ([InbQ!}C{7=rʔTzkOHD"Bܛ̼08yQ)&@/)P%Ҫy?l"@#&,KwԲc0ja.w\A9`IٴTȚFWjOG<.8bxZ"+L> +`SOaVӒ$2$_-P "!#?M}g7??y\Q$`W#f0Hi}-E<I v9`qDPaF^#@C!#ocl\'yNe.XkD=18Ab!GU8W' +ST,#K]uⲡC:됃?` k2 +ʳtX/^ZWN:B<38zp~_ðtAwzB"ϲ J톢x. I +$HCNg\ò~|Xf%~'v5^WȅܻABEn8:GAHO5G02WID(ϗƐb-V wtU"6:g'ar,Y&,6z $=`00sWJ'Yr{o^DT姸hZh3V//F7s1^S<&Q +4怓-
G= s[pJ/Njle1X34֊5"+2KIt9fsx%l"q8m*kRD.ҰX}3EPxWoM_=Ү֤$#ԿXNէJEZ,Ē'`xW[S%h}uE9wTXDY~5Qgxg1W[ۑỮWH0"oG/Olj9{/W1("j:v6p[ȭ::*#fj^̈́['iKq64*hmkty{s̓97a-ܕ*_J2ΓM[7**!424Yz=JM)'iU.?rpQ:UiE&JVv^WFIy) +|+G# oJpY-SrW[b]Yx.%9i +endstream +endobj +1520 0 obj << +/Type /Page +/Contents 1521 0 R +/Resources 1519 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1472 0 R +/Annots [ 1483 0 R 1484 0 R 1485 0 R 1486 0 R 1487 0 R 1488 0 R 1489 0 R 1490 0 R 1491 0 R 1492 0 R 1493 0 R 1494 0 R 1495 0 R 1496 0 R 1497 0 R 1498 0 R 1499 0 R 1500 0 R 1501 0 R 1502 0 R 1503 0 R 1504 0 R ] +>> endobj +1483 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [109.282 353.597 123.23 366.549] +/A << /S /GoTo /D (subsection.12.1.1) >> +>> endobj +1484 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [121.237 320.84 135.185 333.792] +/A << /S /GoTo /D (section.8.2) >> +>> endobj +1485 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [133.193 309.872 147.14 322.823] +/A << /S /GoTo /D (section.8.3) >> +>> endobj +1486 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.148 334.211 159.096 347.162] +/A << /S /GoTo /D (subsection.8.3.2) >> +>> endobj +1487 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.103 329.239 171.051 342.191] +/A << /S /GoTo /D (section*.14) >> +>> endobj +1488 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.058 326.21 183.006 339.162] +/A << /S /GoTo /D (subsection.9.2.7) >> +>> endobj +1489 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.013 306.006 194.961 318.958] +/A << /S /GoTo /D (section*.19) >> +>> endobj +1490 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.968 304.891 206.916 317.842] +/A << /S /GoTo /D (subsection.9.2.4) >> +>> endobj +1491 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.924 324.816 218.871 337.767] +/A << /S /GoTo /D (section*.18) >> +>> endobj +1492 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.879 324.816 230.827 337.767] +/A << /S /GoTo /D (section*.18) >> +>> endobj +1493 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.834 343.774 242.782 356.726] +/A << /S /GoTo /D (subsection.10.1.1) >> +>> endobj +1494 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.789 318.171 254.737 331.122] +/A << /S /GoTo /D (subsection.10.1.2) >> +>> endobj +1495 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [252.744 314.833 266.692 327.785] +/A << /S /GoTo /D (subsection.10.1.5) >> +>> endobj +1496 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.699 322.594 278.647 335.546] +/A << /S /GoTo /D (subsection.10.1.6) >> +>> endobj +1497 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.655 317.065 290.602 330.016] +/A << /S /GoTo /D (subsection.10.1.7) >> +>> endobj +1498 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [288.61 309.324 302.558 322.275] +/A << /S /GoTo /D (subsection.10.1.9) >> +>> endobj +1499 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [300.565 304.343 314.513 317.294] +/A << /S /GoTo /D (subsection.10.1.15) >> +>> endobj +1500 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.52 348.497 395.922 361.448] +/A << /S /GoTo /D (subsection.10.1.17) >> +>> endobj +1501 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.93 278.878 407.877 291.83] +/A << /S /GoTo /D (table.12.1) >> +>> endobj +1502 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [405.885 279.994 419.833 292.946] +/A << /S /GoTo /D (table.12.1) >> +>> endobj +1503 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.84 350.957 431.788 363.909] +/A << /S /GoTo /D (subsection.12.1.2) >> +>> endobj +1504 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.795 350.957 443.743 363.909] +/A << /S /GoTo /D (subsection.12.1.2) >> +>> endobj +1522 0 obj << +/D [1520 0 R /XYZ 54.865 827.598 null] +>> endobj +789 0 obj << +/D [1520 0 R /XYZ 59.85 96.337 null] +>> endobj +1519 0 obj << +/Font << /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1525 0 obj << +/Length 1104 +/Filter /FlateDecode +>> +stream +xWK6W(%7SZ$9("K$mYZ7Mؒf8yqHr0F5R0&QJewg5y=9^"Ĝ!, ~y`%i6v3(ݯ=&TDޚ7Zj?܂@hۯ;Ja,~_U^[(bGdNE ^ J^s4W +3q +endstream +endobj +1524 0 obj << +/Type /Page +/Contents 1525 0 R +/Resources 1523 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1472 0 R +/Annots [ 1505 0 R 1506 0 R 1507 0 R 1508 0 R 1509 0 R 1510 0 R 1511 0 R 1512 0 R 1513 0 R 1514 0 R 1515 0 R 1516 0 R 1517 0 R 1518 0 R ] +>> endobj +1505 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [88.781 338.693 102.729 351.645] +/A << /S /GoTo /D (table.12.4) >> +>> endobj +1506 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [100.736 324.706 114.684 337.657] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1507 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [112.691 302.579 126.639 315.531] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1508 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [124.647 345.289 138.594 358.24] +/A << /S /GoTo /D (section*.25) >> +>> endobj +1509 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [136.602 345.289 150.549 358.24] +/A << /S /GoTo /D (section*.25) >> +>> endobj +1510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [148.557 324.816 173.03 337.767] +/A << /S /GoTo /D (section*.30) >> +>> endobj +1511 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.037 294.38 184.985 307.332] +/A << /S /GoTo /D (section*.31) >> +>> endobj +1512 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.993 291.621 196.94 304.572] +/A << /S /GoTo /D (section*.31) >> +>> endobj +1513 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.948 321.498 208.895 334.45] +/A << /S /GoTo /D (ALC@unique.128) >> +>> endobj +1514 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.903 358.569 220.851 371.52] +/A << /S /GoTo /D (section*.33) >> +>> endobj +1515 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.858 358.569 232.806 371.52] +/A << /S /GoTo /D (section*.33) >> +>> endobj +1516 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.813 344.034 244.761 356.985] +/A << /S /GoTo /D (section*.36) >> +>> endobj +1517 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.768 318.619 256.716 331.57] +/A << /S /GoTo /D (table.12.13) >> +>> endobj +1518 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [254.724 332.407 268.671 345.358] +/A << /S /GoTo /D (subsection.13.3.2) >> +>> endobj +1526 0 obj << +/D [1524 0 R /XYZ 54.865 827.598 null] +>> endobj +1523 0 obj << +/Font << /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1544 0 obj << +/Length 1653 +/Filter /FlateDecode +>> +stream +xY[sF~ϯ oL}q q +o'%Q7Y@=&'ĥcGOv_)O[wb.t{oZ볤#_RYQ .T/c1D| U8cv?S89P~h_.~/Gq(QJ vFzQF}t5
KyLIb=>cLg L@8b\Rs~q>%b0
STJ~&U
\(@e} +<[o鶈[U~
tBo7T +P0ő)A2uAPO=MLaZdz`^NֳY\U ^
VR@* +8CmIO?̆:`Vtճ'E_(hnl(ŝ4č219I7-$Gr8\ܔ`'JydӮ8p~,}#Oy;mٞ-:@1)"<(0ż:2}5D偫{EhlU~gi:)re<(TWP m QGxZA&Smt8Un {6dk#lh Fl=XMOa_5(gxVQMGCDC_/ңb(gH@UМxg?Y<3㑤h![ +0EB +
Ng]qCD>̀z)4f:7"- +p8m]3}2_0R2UŊ1>)TE!y@R\dXaqAN)9FȜӌ1p<&4Miй8is^.גZO;7<$V' +Fr3((T@>36?hNr]*!|ϳa`"&_-l/8¤Jh0<hEٚ&VJAZF \(95FWWq}M@Vke:4AgڜΙpՙҒYXrc{f+ 5$CrO9pkea +endstream +endobj +1543 0 obj << +/Type /Page +/Contents 1544 0 R +/Resources 1542 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1472 0 R +/Annots [ 1527 0 R 1528 0 R 1529 0 R 1530 0 R 1531 0 R 1532 0 R 1533 0 R 1534 0 R 1535 0 R 1536 0 R 1537 0 R 1538 0 R 1539 0 R 1540 0 R 1541 0 R ] +>> endobj +1527 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.243 433.49 257.199 444.394] +/A << /S /GoTo /D (section.8.2) >> +>> endobj +1528 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.236 421.535 251.191 432.439] +/A << /S /GoTo /D (section*.19) >> +>> endobj +1529 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [358.618 409.58 370.573 420.484] +/A << /S /GoTo /D (subsection.10.1.7) >> +>> endobj +1530 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [268.029 324.191 279.984 335.095] +/A << /S /GoTo /D (subsection.9.2.7) >> +>> endobj +1531 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.444 312.236 246.399 323.14] +/A << /S /GoTo /D (subsection.9.2.4) >> +>> endobj +1532 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.283 300.281 281.238 311.185] +/A << /S /GoTo /D (section*.18) >> +>> endobj +1533 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [244.806 288.326 256.761 299.229] +/A << /S /GoTo /D (subsection.10.1.5) >> +>> endobj +1534 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [268.597 276.37 280.552 287.274] +/A << /S /GoTo /D (subsection.10.1.6) >> +>> endobj +1535 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [358.618 264.415 370.573 275.319] +/A << /S /GoTo /D (subsection.10.1.7) >> +>> endobj +1536 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [437.552 240.505 449.507 251.409] +/A << /S /GoTo /D (subsection.10.1.17) >> +>> endobj +1537 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.002 228.55 302.957 239.454] +/A << /S /GoTo /D (ALC@unique.128) >> +>> endobj +1538 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.748 216.595 274.703 227.498] +/A << /S /GoTo /D (table.12.13) >> +>> endobj +1539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [101.076 119.251 113.031 130.155] +/A << /S /GoTo /D (table.12.4) >> +>> endobj +1540 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.295 107.296 379.251 118.2] +/A << /S /GoTo /D (section*.36) >> +>> endobj +1541 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.157 95.34 357.113 106.244] +/A << /S /GoTo /D (subsection.13.3.2) >> +>> endobj +1545 0 obj << +/D [1543 0 R /XYZ 54.865 827.598 null] +>> endobj +518 0 obj << +/D [1543 0 R /XYZ 55.865 793.722 null] +>> endobj +1546 0 obj << +/D [1543 0 R /XYZ 55.865 601.443 null] +>> endobj +1547 0 obj << +/D [1543 0 R /XYZ 55.865 568.208 null] +>> endobj +1548 0 obj << +/D [1543 0 R /XYZ 55.865 500.753 null] +>> endobj +1549 0 obj << +/D [1543 0 R /XYZ 55.865 391.454 null] +>> endobj +1550 0 obj << +/D [1543 0 R /XYZ 55.865 198.469 null] +>> endobj +1542 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F14 800 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1573 0 obj << +/Length 1836 +/Filter /FlateDecode +>> +stream +xڵY[o8~w'+C[hm"J;Zͮ5Tj'q.uJ3/I}}n{S=y|{.!H +ޛ/{q +y +lـӁCi|Hҿ+\fϣj"UWbBDͦ&uְ$-L3tu]/zk٣&HAcNp{#%MG;uP\OFSX +0v{ӷɓ~J0PEɏ;rjT"<X! +}H${ N'm]HaT&s6@XCqd4|~9w!$W4m__^MRw?h@ +L&+[c +%=XM8rۖ&uIb$i4Mg7l>R$)RԻC/Z&Ҍ`z^k\ݎB@!,(`)am?m$t(zayL|}b'~Q pk1A
`2q(a>`$ܑYB ixJe]S$wql y`Z?!nׅ~x&e4CJ}ya)R-Sװ&D3Ȯk>0jXf:cA`1;a"+sh
t4h>X m!JCrDlrSh}gkȎUPV&uO0$9 +';BWKy ~K.rq)Yz(0aU,9C|5a
AA#LS^˭֬,yuzyޜd/ޅgbT{̘AXDo۹b1ɚ{1ښ[31?`&:Z{ef8rl6h/\9F.5~h!͍8ѮÎ| +"p5H#X2R4Y5z6W&` (6+y]ٜB{ueoC
;y۵Rkvq{K;jpzjÉìrW(Bcf|ìnp
+&wT#G#!Hgxrp?ݎo&qM"ZEp=hpw1mb9Bb2GywڲTqM!ࢵ37~fYKSQ,jkY՚6ijOOa@nzLnmSIt#KV̮V>Ldylzw%rGBoGJ5Ft8[6A,<JM ,ۡ|\~
Gdqzw,MO]hNwNd=4bj<7/$6(G$%pz)q\t&_7P":XF7J;QָB!76h`?d^;Opi{3u>PnljehC.W)0hS^LU9@NeE<l?Guq +endstream +endobj +1572 0 obj << +/Type /Page +/Contents 1573 0 R +/Resources 1571 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1576 0 R +/Annots [ 1551 0 R 1552 0 R 1553 0 R 1554 0 R 1555 0 R 1556 0 R 1557 0 R 1558 0 R 1559 0 R 1560 0 R 1561 0 R 1562 0 R 1563 0 R 1564 0 R 1565 0 R 1566 0 R 1567 0 R 1568 0 R 1569 0 R 1570 0 R ] +>> endobj +1551 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.286 734.429 259.242 745.333] +/A << /S /GoTo /D (subsection.10.1.2) >> +>> endobj +1552 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [323.708 722.474 335.664 733.378] +/A << /S /GoTo /D (section*.19) >> +>> endobj +1553 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [303.943 710.519 315.898 721.423] +/A << /S /GoTo /D (section*.20) >> +>> endobj +1554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.117 698.563 376.073 709.467] +/A << /S /GoTo /D (section*.14) >> +>> endobj +1555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [317.801 686.608 329.757 697.512] +/A << /S /GoTo /D (section.8.3) >> +>> endobj +1556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.622 674.653 369.577 685.557] +/A << /S /GoTo /D (subsection.10.1.9) >> +>> endobj +1557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.083 662.698 433.038 673.602] +/A << /S /GoTo /D (section*.33) >> +>> endobj +1558 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.994 650.743 243.949 661.647] +/A << /S /GoTo /D (section*.31) >> +>> endobj +1559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [252.427 638.788 264.382 649.692] +/A << /S /GoTo /D (section*.31) >> +>> endobj +1560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.578 626.832 325.533 637.736] +/A << /S /GoTo /D (section*.25) >> +>> endobj +1561 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.97 614.877 428.925 625.781] +/A << /S /GoTo /D (section*.30) >> +>> endobj +1562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [348.675 602.922 360.63 613.826] +/A << /S /GoTo /D (subsection.10.1.15) >> +>> endobj +1563 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.009 590.967 353.964 601.871] +/A << /S /GoTo /D (subsection.12.1.1) >> +>> endobj +1564 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.443 579.012 188.398 589.916] +/A << /S /GoTo /D (table.12.1) >> +>> endobj +1565 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.443 567.057 188.398 577.961] +/A << /S /GoTo /D (table.12.1) >> +>> endobj +1566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [464.252 555.101 476.207 566.005] +/A << /S /GoTo /D (subsection.12.1.2) >> +>> endobj +1567 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.413 543.146 366.368 554.05] +/A << /S /GoTo /D (subsection.10.1.1) >> +>> endobj +1568 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.328 531.191 357.283 542.095] +/A << /S /GoTo /D (subsection.8.3.2) >> +>> endobj +1569 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [305.911 519.236 317.866 530.14] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1570 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.681 507.281 172.637 518.185] +/A << /S /GoTo /D (section*.24) >> +>> endobj +1574 0 obj << +/D [1572 0 R /XYZ 54.865 827.598 null] +>> endobj +1575 0 obj << +/D [1572 0 R /XYZ 55.865 801.692 null] +>> endobj +1571 0 obj << +/Font << /F37 533 0 R /F60 582 0 R /F14 800 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1582 0 obj << +/Length 261 +/Filter /FlateDecode +>> +stream +x}=o@w~G}&V2/ "dIU:t9@p5haZ@Br֧!뫀)+8&o?^1\O2L,);!
\Y+Bax}.'qo#_l?7'B#+8(*2]Py8HBf%2"X|c.0fe/%9oOdH)FX|ī]}g8 +endstream +endobj +1581 0 obj << +/Type /Page +/Contents 1582 0 R +/Resources 1580 0 R +/MediaBox [0 0 595.276 841.89] +/Parent 1576 0 R +/Annots [ 1577 0 R 1585 0 R ] +>> endobj +1577 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [255.616 637.702 455.367 648.048] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://glep.gentoo.org/glep-0044.html)>> +>> endobj +1585 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [71.467 625.906 97.37 636.093] +/Subtype/Link/A<</Type/Action/S/URI/URI(http://glep.gentoo.org/glep-0044.html)>> +>> endobj +1583 0 obj << +/D [1581 0 R /XYZ 54.865 827.598 null] +>> endobj +1584 0 obj << +/D [1581 0 R /XYZ 55.865 793.722 null] +>> endobj +955 0 obj << +/D [1581 0 R /XYZ 55.865 653.198 null] +>> endobj +1580 0 obj << +/Font << /F60 582 0 R /F37 533 0 R /F67 639 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1589 0 obj << +/Length 80 +/Filter /FlateDecode +>> +stream +x3T0 + +endstream +endobj +1588 0 obj << +/Type /Page +/Contents 1589 0 R +/Resources 1587 0 R +/MediaBox [0 0 595.276 841.89] +/Rotate 90 +/Parent 1576 0 R +>> endobj +1586 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (./eapi-cheatsheet.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 1591 0 R +/BBox [0 0 841.877 595.276] +/Resources << +/Font << /F81 1594 0 R /F83 1597 0 R /F84 1600 0 R /F85 1603 0 R /F88 1606 0 R >> +/ProcSet [ /PDF /Text ] +>> +/Length 3401 +/Filter /FlateDecode +>> +stream +xZs6_{B$y}r\I}{s3m'CKE*$U~X"eNӛ{9gh@<ų_ľ|ubUg)ˌL=Z1.r=qޖusqTj_Z{MWMEvyY5e!6mQWDȻϗ +JÌL\XN^ (/2cR`,"#>y4뿉J;|=w\d3?wyK X乾f9,B2;ډ'Zì}b#|&H&,IP4g4nmj}Owe; +ETQB#i2ۼ5:,6kat]PE,k"~uC46k+`6̗@Nh.mear=X<sq1IAX0a]PncQN@ʯ;x*Qh8
qMQ`ۼjmT\݂!HlvULh~G6T4,_;>\SѪ%!QV=̬@L˼CX$z.ڡ3+1?+yeܵ0I`i}NY<,ԡT +2smbS4 +w@hG:1+x%-}PՔdi2(m[T7U v%1XȮvEٽGQ9FL%3A G0>f"M0(oX$p泆jS +62ԙSI)K su/(:AVptj+=p]H'o H6:x##mXd&iM ]ʫ;Pp!נfPHpӑ3NDLܫA][Kojc$@UH8K@r}J};3oQg7;2QB_]Qˌ7͋/M=6dD|.a9L?Yp&4?YHϨ\<υDԚʧVf*o%xaHNܝ^v
֙\1$ww[n!kͅ=a>%DTN,e:Nٗ2c(J8ũ4^s4)hyg*wx(|8%6YB'x
pkUw{>>J@B`z/rшcF(T6yGw+eo0} +?~4|x1oe$wu*e p>aP{xJ |Q/7(::4ȽoWy_$اygmٕOcD1b2#0}QIi;ۧ7ՐCڱ]MTcW>֮v>ZH7WG,rp+;31KzU})|p>ht~op;bLḳڏ?GVY6os +H);~߄0ݾ"̯l_ 3W=fvkmi\t> +,wʂ<+J3
3,2|2OT=n0HŌ>Z@+Ɣ:ˤڧnZ쩪35ޖŪmny6_Uէߗ¤Åx%%YUfwQּL|Uڶ,uDM]kIub6xi;$@iyJ]Sz`[N\+ +9Mh4>mm\ݑEV77KZ~̗
Wzs3A3d.plfqe!i PV#ś8P([xI,,h [ +endstream +endobj +1591 0 obj +<< +/Author (Christian Faulhammer) +/Title (EAPI Desk Reference) +/Subject (Making look-up faster for EAPI features) +/Creator (LaTeX with hyperref package) +/Producer (pdfLaTeX and hyperref) +/Keywords (Gentoo, package manager, reference) +/CreationDate (D:20100119111229+01'00') +/ModDate (D:20100119111229+01'00') +/Trapped /False +/PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.10-2.2 \(Web2C 2009\) kpathsea version 5.0.0) +>> +endobj +1594 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 2 +/LastChar 122 +/Widths 1607 0 R +/FontDescriptor 1592 0 R +/BaseFont 1608 0 R +/Encoding 1593 0 R +>> +endobj +1597 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 2 +/LastChar 121 +/Widths 1609 0 R +/FontDescriptor 1595 0 R +/BaseFont 1610 0 R +/Encoding 1596 0 R +>> +endobj +1600 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 34 +/LastChar 125 +/Widths 1611 0 R +/FontDescriptor 1598 0 R +/BaseFont 1612 0 R +/Encoding 1599 0 R +>> +endobj +1603 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 42 +/LastChar 122 +/Widths 1613 0 R +/FontDescriptor 1601 0 R +/BaseFont 1614 0 R +/Encoding 1602 0 R +>> +endobj +1606 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 3 +/LastChar 3 +/Widths 1615 0 R +/FontDescriptor 1604 0 R +/BaseFont 1616 0 R +/Encoding 1605 0 R +>> +endobj +1607 0 obj +[ 500 500 167 333 556 222 333 333 0 333 584 0 611 500 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 191 278 278 355 556 556 889 667 222 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 222 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500] +endobj +1609 0 obj +[ 611 611 167 333 611 278 333 333 0 333 584 0 611 500 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 238 278 333 474 556 556 889 722 278 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 333 333 584 584 584 611 975 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 667 778 722 667 611 722 667 944 667 667 611 333 278 333 584 556 278 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 611 611 389 556 333 611 556 778 556 556] +endobj +1611 0 obj +[ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] +endobj +1613 0 obj +[ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] +endobj +1615 0 obj +[ 500] +endobj +1605 0 obj << +/Type /Encoding +/Differences [3/asteriskmath] +>> endobj +1602 0 obj << +/Type /Encoding +/Differences [2/fi/fl 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 161/exclamdown/cent/sterling/fraction/yen/florin/section/currency/quotesingle/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl 177/endash/dagger/daggerdbl/periodcentered 182/paragraph/bullet/quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand 191/questiondown 193/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis 202/ring/cedilla 205/hungarumlaut/ogonek/caron/emdash 225/AE 227/ordfeminine 232/Lslash/Oslash/OE/ordmasculine 241/ae 245/dotlessi 248/lslash/oslash/oe/germandbls] +>> endobj +1599 0 obj << +/Type /Encoding +/Differences [2/fi/fl 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 161/exclamdown/cent/sterling/fraction/yen/florin/section/currency/quotesingle/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl 177/endash/dagger/daggerdbl/periodcentered 182/paragraph/bullet/quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand 191/questiondown 193/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis 202/ring/cedilla 205/hungarumlaut/ogonek/caron/emdash 225/AE 227/ordfeminine 232/Lslash/Oslash/OE/ordmasculine 241/ae 245/dotlessi 248/lslash/oslash/oe/germandbls] +>> endobj +1596 0 obj << +/Type /Encoding +/Differences [2/fi/fl 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 161/exclamdown/cent/sterling/fraction/yen/florin/section/currency/quotesingle/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl 177/endash/dagger/daggerdbl/periodcentered 182/paragraph/bullet/quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand 191/questiondown 193/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis 202/ring/cedilla 205/hungarumlaut/ogonek/caron/emdash 225/AE 227/ordfeminine 232/Lslash/Oslash/OE/ordmasculine 241/ae 245/dotlessi 248/lslash/oslash/oe/germandbls] +>> endobj +1593 0 obj << +/Type /Encoding +/Differences [2/fi/fl 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 161/exclamdown/cent/sterling/fraction/yen/florin/section/currency/quotesingle/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl 177/endash/dagger/daggerdbl/periodcentered 182/paragraph/bullet/quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand 191/questiondown 193/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis 202/ring/cedilla 205/hungarumlaut/ogonek/caron/emdash 225/AE 227/ordfeminine 232/Lslash/Oslash/OE/ordmasculine 241/ae 245/dotlessi 248/lslash/oslash/oe/germandbls] +>> endobj +1590 0 obj << +/D [1588 0 R /XYZ 54.865 827.598 null] +>> endobj +522 0 obj << +/D [1588 0 R /XYZ 55.865 793.722 null] +>> endobj +1587 0 obj << +/XObject << /Im3 1586 0 R >> +/ProcSet [ /PDF ] +>> endobj +1620 0 obj << +/Length 80 +/Filter /FlateDecode +>> +stream +x3T0 + +endstream +endobj +1619 0 obj << +/Type /Page +/Contents 1620 0 R +/Resources 1618 0 R +/MediaBox [0 0 595.276 841.89] +/Rotate 90 +/Parent 1576 0 R +>> endobj +1617 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (./eapi-cheatsheet.pdf) +/PTEX.PageNumber 2 +/PTEX.InfoDict 1591 0 R +/BBox [0 0 841.877 595.276] +/Resources << +/Font << /F83 1597 0 R /F81 1594 0 R /F84 1600 0 R /F101 1624 0 R /F85 1603 0 R >> +/ProcSet [ /PDF /Text ] +>> +/Length 4737 +/Filter /FlateDecode +>> +stream +x\8rB/,xVmLvVRrq$cԊzF$ȁ4q<AuCj~x'rSk/gB,gZ+ƥ/gߝE^$d;\HE/Ox,]6ݳesu2{Gm<gBqeuYWpx& \G̕TOSY^a['rɧZҨekaL\lrV9gFkzS֗0iw]ypZT4lVޭnώ;]E~+xN?ktW3ŸbR{Zٍ5wCFW
vm<H䬪rsq<ep(L$ؿg'#Ӽ_<2d@z? 2|\NOO'$yyL6}'ni[?>}cD> r_sKD2\w1jU*mȶE\5'i2=aρ8M~WΝmELv՜iϤV",~e~Gyʃy=
P/I5:빧iv9"x4L\pf'2?'>c, +L<HJ!cR([NU\,I0D̅kirDOx!g_~ii +t<]y=k٠W+.ٗZ]O{TN6QmUрUN3[\W@TɋwNpOgϺv]=oW?i 92dq./4COhdJ'B[ۇ]eYʘ)z;eJmL{FgdMc}oe3r~oK0il:ɲB{tW #R$HP"@b'>Z@?81mr8WG
HʹU&+ryCf_|"lh@HUn\eQX]o]^U@f6bE7MK4A'
znGp"C#2@9 _HS$v[QkCzufܯLQ:"J-[M脄} .utpȗS;H+4DtAc#Rb`@+;sхQ5|FN.뒩
dF.h3.:Ic8fRQGzxQL +NS;:^!8KM? +_@p_s13=*S!እ7/XrÑȝ`MZ$7ڣ1tp?ûfğDx{ᨎFCƦ)^I8S(#T~HB#kq
՝C<{!x39üX+q/+.Fxx|)rMbUKsɌ@-łiii:R"ji:0ru&εY]=*nWT3pa
\
ܴkmޟJEpuZ4`5wGSLzX?k:[EX8q]
<ofٓݚ [{]spG1sz6`.wdB8AWT햦`ͅzYIiC`l@4>tŬm\Vko2EuVd?2{"}º1A0}"lܣO=ொ?b Dƿ"|T1c.>.沾olbf[mˇdd=m[o3^Mub
=\XB +Fx8ΞXq6U70^SOZ\K?Hn;!1Aa}x+ )b%g _CL[X6衈]oFq2N}H4kD$,U(+Sढ़@پ9
td8@x-!nG=CMOE0cd$f夙GrDU@ao2ti/+P R
RFC?Zc栞
Աq/|$uQ "\k"L +w.\9m܌iymx50uZh;-4Q|Ҽ!}1}cDy9}ij+T[վD79{XR0X}-`R!d W5<*T>XK;¤DErE{@)Ŭ?\zeL@X#֥}p:x9m%\:WA3m"!Ca35y1佈A?S$8&B,=.mKxhmHLg +)*-RH*lPl>[Nmf@?Z/n@>=cÚaYFs,\Ҡ^2:i]h7FZ1'PR"A;T67جʅݜ}uC}ᰧOڡocuFha?)<|]5t?6DŽ-G_ci핛@RPt/Y$mm#Kt ^w{c)q[m*i³hzkRZb=P(` 7&_/> W1o@G%]b,ͣS8QB2x!O'p75¢xPg*Inؼw*DgOˎ%yTIh_;ah&&')^J|[Ug[+&| oq6b7TWH,|bn svŨO#E Bs&ced׃|j92omfZewǮ<a0a1XA)X̋4~/y>mkTkgl o.^A'O$J3T-*hkg]_]IhwQZ=AjvFqȌjw-ѹݑmO2Q|]7qQ[]zNPa뷯\Td_hΤܞqI3t҅q!2h'bS;hA2eŀ7XdkffȪ״77 Ψ]3`g*8171{4-jKQGlx9zo5T[ rClPRn#RdɅ.u+̤ 5O +endstream +endobj +1624 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 76 +/LastChar 115 +/Widths 1625 0 R +/FontDescriptor 1622 0 R +/BaseFont 1626 0 R +/Encoding 1623 0 R +>> +endobj +1625 0 obj +[ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] +endobj +1623 0 obj << +/Type /Encoding +/Differences [2/fi/fl 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 161/exclamdown/cent/sterling/fraction/yen/florin/section/currency/quotesingle/quotedblleft/guillemotleft/guilsinglleft/guilsinglright/fi/fl 177/endash/dagger/daggerdbl/periodcentered 182/paragraph/bullet/quotesinglbase/quotedblbase/quotedblright/guillemotright/ellipsis/perthousand 191/questiondown 193/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis 202/ring/cedilla 205/hungarumlaut/ogonek/caron/emdash 225/AE 227/ordfeminine 232/Lslash/Oslash/OE/ordmasculine 241/ae 245/dotlessi 248/lslash/oslash/oe/germandbls] +>> endobj +1621 0 obj << +/D [1619 0 R /XYZ 54.865 827.598 null] +>> endobj +1618 0 obj << +/XObject << /Im4 1617 0 R >> +/ProcSet [ /PDF ] +>> endobj +1628 0 obj +[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] +endobj +1629 0 obj +[777.8 500 777.8] +endobj +1630 0 obj +[388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8] +endobj +1631 0 obj +[500 500 167 333 556 278 333 333 0 333 675 0 556 389 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 214 250 333 420 500 500 833 778 333 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444] +endobj +1632 0 obj +[1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500] +endobj +1633 0 obj +[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] +endobj +1634 0 obj +[556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 0 0 0 333 500 500 1000 500 500 333 1000 556 333 1000 0 0 0 0 0 0 500 500 350 500] +endobj +1635 0 obj +[556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444 350 500 1000 333 980 389 333 722 0 0 722 0 333 500 500 500 500 200 500 333 760 276 500 564 333 760 333 400 564 300 300 333 500 453 250 333 300 310 500 750 750 750 444 722 722 722 722 722 722 889 667 611 611 611 611 333 333 333 333 722 722 722 722 722 722 722 564 722 722 722 722 722 722 556 500 444 444 444 444 444 444 667 444 444 444 444 444 278 278 278 278 500 500 500 500 500 500 500 564 500 500 500 500 500] +endobj +1636 0 obj << +/Length1 1438 +/Length2 6052 +/Length3 0 +/Length 7022 +/Filter /FlateDecode +>> +stream +xڍwT}?RPIf*p)cm#TRDBR@ABBExz?s?9{v|=qkįh!X~ + A aHiǺ8Mahe4T X.z +bR`q)(IDKU p{ +*p(ԅ``nP+ ðH-Ţ=== n$Qu00xq& +@H7
G80 +]/0 +^*^C`1Thނ@z"|{P& +o#IKa@I𢀱7 +P1( +A"@q?FK{dD8 %.Po$gox,7-A (ނ_!?_d_=pue!npW?xB?C_~o.X~IxE@"pf:&p#`wŃˆ=rgk2jCE_줐FCxJ%Q0_ + + X|D.-&tǀ7ցM\(Q
+@B[+=WdHͅ +ɰݪ6 FYS&jmzJ9sv|kkE&/'ܚl$xb&U&EN.omIWuDO.5qʒ,zI/Mv}+~r
ZH˸-zHZb +x#K*Ǣ"rt鵟4>v +/yR7nr';&9DXQ3tJiH0v^ig:\\'VmΑS5-{&Ȟ.|JWe +*}φC}q3!4c +oBӫqn^V:nB2\ׅԏR@gm1ʦJ J^ҿA<J7q@= +r"KFͱ~sa_ 20#jUbg>ָiz0h_>@^iq!夨ԝcPXޙ i>4.cr;pqӐ6W<x
z?q4qqXQK.wp<d9J3yHDȋx>Gm`i觯ye>:\~lɥourS˵y=3 +YA}s-ַNּړUEx1nx^(Yt2z_3!? 7Jї"@.J =g<7d>i܋!yEϑy+ӎ&wE+]{mݹ+ۅbYq_lT(}wfY7q4yU59wgJ&( +҇u.5(ӟ!GqGEC1hȯi-6!G.<8Ǹ&sU]y3ZrT#y`=X:˩TT4nk?|oZ
s=6`CygvLzzbBg"!CV +Uf\S^9W2S{B]$t楍a5\GQkGAmB"b^yހjOG5v.?Uy#;Kʯ6zFd]ǃ!ߜcH툔gAtH +I;k(KKC/<Y9Uz}n6K7r6:<,h:Vv:~rC.4_d
<ꟉӋ,Szu7Wt÷_KF3|re0f*kQc97"#Ϙ֧tm
R49S:qdw3t_=ײ`Hw"B
q'3;$X 2 yoWGK:/؉Lh}Y#og|0KgL'7DXh?2MYZe eEf+8}M%8:lJ
W%꜎ziFwRNc/8+ٯʖ&ڍ'[V-[۞z䝡 +f3>ǮWU.$au]/2V# r 47GXmxTa@EU^TzQyۦY[!P'kCת +wʣAD^D4|&ȳhɖO9J"UgD
_^ĢI(7F9 +S +F}jTN} +Pg?Yal ɾ͉U"ߕO]Z^6.f+wU)PkCv;0rq3nɽYzҷHGJZQ-Ջ$˭|5+
ԾM]q`vYJ3"Nc1fˏ;JS2+w9PDe=랝>x@xNq+{!~O*+>pXҕtR'̭ç|RaSeidx +t6AԜ%`J/R]E9Y]ڇId4ppmYVgԎm-(zqո|FM#{<3:ְ**Pje*yU-V[
Y>#[x{F??($o'8sr"3O>ʣ
}CPB:5fAX15(`YfPr))*c%<|]{!f͵ިuT46pVhmtUbP#"BsgML㦴7RGJ{n2pd69)nJuT +1^HW+^$QM>;]̚};X]/g$*=ulӭqVͅ.M'UޠB+48j7G'_3fo_-#N? LO>8n21tY ÿG0xb~w<U7:nndN=,o(Jz S4e|?3{CDh+jKD塘7U3'!i[B\$iH +-]ᛲTw֓Rɸ7Udk+'5W0tOOkCFB{6@.W~lVI';M٦ru/mK׃1gk%jX)?(cҶ]ot.={.z͜U÷"-5n%tI{I/m@,DNj\a9ZRl06F$DyVO\^mjtbtN2JUճ?;g^JCY)QkM9\zQSmf
ƍIP!ο^RhV`;1}Ol홚̽w!?;}_4̓SN+6ZzkO]K9]q?s]e=mUy?ɷ6]n&(jQjX3I0W Hٲ*<-{B駹uw$
kQ"
msemŘzHIWi$\OHe쎒r.rؤefO?|7BB9"\*,EAt_ܠ_
=I۵ĖNq&1RJhgwB%O%̗.l&f[</bT_r%To%Ţ5Y/&$/c矈铅9+M-Iȇ^Q!yCbx[%iY(y'eY'`^hen )*pz+Ji )ia{ +Rp?;DE7H+^1lsh +r0)ص3erFJ'=T[=#|9<:)*SdgށGyk+U5ޭr\^aE WQ7WXOwCֶwa7 +7{]L_Ա1jeRq^!o=} +?)z0ZqYgs"z)?/F +endstream +endobj +1637 0 obj << +/Type /FontDescriptor +/FontName /SYFPBV+CMMI10 +/Flags 4 +/FontBBox [-32 -250 1048 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 72 +/XHeight 431 +/CharSet (/greater/less) +/FontFile 1636 0 R +>> endobj +1638 0 obj << +/Length1 1434 +/Length2 6162 +/Length3 0 +/Length 7128 +/Filter /FlateDecode +>> +stream +xڍt46D$:QFE7z%F3D}BFMAQQN$jIy9oZ}e뾯{s(9!`$# +AP7 IЃC3$L\a߸1AA ++C }60ON^BTS"7 +Loeq<34!P +X +Xi+f/2DąOIALMj +P^MѢ(,8[+WuU2Q,ܻ{=h);j)ŮOSVoK)e^}<ӰoiRz0LnRpR9Q iagubSK6&m5W)t槄XLϥFs&uIdSBH\nj|aa+)nMJP
лpt{;UT>#'']鯜xnC +hpVh{VPȏU'qA|{;Gz˗~nGyf%ٖczVB;"ZVmi"͎K|;}6QF~R#-$6Lܫ)M/48jrrLi +;Z:Dw<xW3<X"e9Mc[x-c=l9%6/Zk +^<-%@D9PƵQIBE]c.>`'>ߍ9.Br+Oᅰd ^uߪ>Ϙtݞ+B\UuB'®d-]w6u])_91Lߡ$DjmMJU$TF[) +g=i3bSW,/fnwYzM)eXF9]#¯$蟌 +7w -
Hsn܂&Jd'{.`4LjBdzdg}A<X;KfG5:9S;r%rwL+>h-G([Q?[cmVg3.H(أbf-Rq3xse3Ǘ;`9[/(ikhՃ 2W\=κ,]2r=#Rh$c*5&ɋ| +razcu%94u`\IJ.7?#~QZ$`9m/k=軼#g\+U_*'z'q5 +j4iB0ĠCc +T{FsQ|R?lڅHɫyCOZ,x\ #)ԃ2һ2vW̐_*e\P'W+^Mdzn7]^uykUx5&~ZKposqxW^v?ؿrY_6K!h9۷9tp9wO5۫1~}/=w3#R +Qq j,UJT@ǭ⭃B){zQñگd
'C<Ddvc^.p:|XrtvC9ɋmTTXti*xr5:[9izHw79߱6HI[šKXQG2zO +;C{OYîf2DpPɖ9E̷*|f">K;\}aǼ6{?Cr'670qz]}X~1:m2b>ukTAi^Ն'4|jAe^0Z! +UVμFB^Vٮ̫_- oMZs[Rvd-Z2bEҊOi%Uzહm{͈oi7uOAMskN)tsŒ~qSܕ.6wwVsSt ~dl**tĂVoXd.hgN6e\:r.SPOZ=lMyWٮBٿ+ybKvƢZ,!ylR#)SQ.>lWH%I,Rj<U kJ7juɃ3sǛEjs·b!4߮VNR_bU!>{|YÆ}ؚқ(w(ԪW>ۭBlƼuQKc
#o] Փn a5+A}Wbּo^jllX}c=f)S!VG%U7O#&rflr3t`F
-j94^Ptc4KH;F',+#hQ)~#C.bt)Ofim"\g~gyݿQ5-m}4ZPC*d#!87x1mQUPc{2KZnߨ}߄wLz^zT wvu,Ǟ7K^ +(ɢa|J09XR1kd3 +O| fv~rז7?LBb4RJjļL>($6>X&;b$R8Asձ@f$Dݛ!DP
kֆ:XK/ zH,8,hc#CgxI32[ª;U5ܢr/iP4|SH'Gr=-rݒ[L{}<OnV]tS4J lHܼFIQf0,cEv!%Jl~~
2߇| S8鞏Y9Ht.%}ӋEv%+κ+ìgAU5Uqd!cn=lb5.;{] NXЪιVzw),Bx\1sƧMJ3I *CSc"<;D(ꗷnSK̥uܚr/9{C]Orʞmڒ#ϬL_8<Z"7́IM"urlov6sw$a5SleN{)R;~Wfs~"ZW^2џeEkXpƛnx7ⱐ/R3Yy+zbm^Z+V`H4888Թ/^Zޙ7wH %wbj}^26ިʛ6UoԽӯVM^P`u/lU*ADy-;c]]9*nُ֪kˊ_^Dyn):+=z<Բn`k}u+L|ܤ I s +<mَoux1uVʴ77N!9/:czcVkal"\ܼсQu^T<ɋKeJD3ak +VE]5+R:\y'[}e!g}J̇N4VSG[ӿn'Ҍv}.spjx?d'xiJ?ͥW%8{ UoK.b +"wj䦏6{@L7v_=(HL엔_xuDIkjLˋ{Қ?2.N&^XL!3[cm)ck,eL[nS\JZW?SNRK!]ahby[S:O/z_n(quFVh4mj<+[.w>lxutd?\xU +}'\Vvcr֘p@%tOmWFӯ̒,ΈZ<-0hCvq~nY>|.ݷ).4+0"=*\]t&
kjLɥNҷ5hliDM'?~Zg8tOGv=xpjZq[BsXfVAm4Mv4\V1T@]2~$а?2`xת3RiLS qox٬$?mL&z!aSxҩVZZI#@OnJ+Ɓsn-f~m@|ʈdǏ3HWZOʙ6Y0]~09ȷ9_NW?l,.y?2ښek̒Cy1OmѫU^IzlKH.:SY%'MBѡAn +hR7vDmu&\<@b,SӨUl:t1ͱ_p߷|}O»d-g-.@S7dҝb:=\}~M\%Gi\z1N'uVZ{!D/LBR`11gjtA7y˱~w6xGbJFw:Dhi~-MdbRNVij4S&GcjĽ{
`Plu9BZ-"QX)o7qÇ4٩ +Yr$Hu^e6ڛ\ ,77
+Dbj#_@1%YoAD} Hv53}xUzg#<)z0mvϤ/Nɛpp0Fm(o^K]lBQdl}Mwz$LƴcڧY -KU_x( +endstream +endobj +1639 0 obj << +/Type /FontDescriptor +/FontName /CZKGAS+CMR10 +/Flags 4 +/FontBBox [-40 -250 1009 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle 0 +/StemV 69 +/XHeight 431 +/CharSet (/equal/parenleft/parenright) +/FontFile 1638 0 R +>> endobj +1640 0 obj << +/Length1 1540 +/Length2 6840 +/Length3 0 +/Length 7879 +/Filter /FlateDecode +>> +stream +xڍXm6@:GwwwK1`06dCSiD@PRABRB@@%}ǎcUy_uoXxU+(Y +0v"2!Q +wpEӝ} Pテ9AP +Ov4qk`DO +p5" +?n~>}`9M2xܤ!rԔKEU5LK +6ϻ֩&e)/17Μh*D\`L:kg!2EBDzPNj2a2![_Ij|cdq/kilWˮN6%]n+ZL,+^ے=w|3iaB]%,6k2x;ˁ/[>
?nI2G*EZ>PĚX
Oq=z96~':un=tYHQp}.RBhJ'M6Ai27{08c#LNkpϊqsi5^dt~s0U^BKD* j*`XD5Z$N+4W9Ҿ\l[RPO&ejhC^0e7|v\ݒ8y-m=ƨzC0XYjג@h҅5x7q8v?Wgo.&GZa> 6|i]AZU74q7[^̤ۢ}xPzWJ6uyo Ϫe0q/iq&Q)f +e=UkRuLׄJᦈEּ/)r=uiRi2#K<륕+7?0ܿe>W|;@hJޖ'or${Gؖƅ
fE]S!u?WP$/F&uZ4-xI*h9ЬͪW zOzY=AbW4 +Ӹj86ZLĩi9Қ-{Tcg2ptM:_khU0 K}GciDap5%nLUf7(XgUqrT>R?9RXX҉}B]S,d0H?wZ_k*w/dK|?XSUGO[ޒ8Fi9ԚܟuAϵ)?16 +㛉y6ڳWKmt%f%\bVnʠ JL}֟0L3OĢ|&]q>FəV~ke8pU+UGM{r3V[̋h +{P|[>(W~!,ݽZ[rסޔ(\~tQ"-\1?HaHqS8RzkvC͵z0M-O)/pMf'-ji(CˮJ$ϖ{/Dx]4bq$n~hdMS +*
|&H9̨nȜ# W-jfsW[0!4]D!!3nшzڵۣ]`5.E # V$rgwmEUꄟ)foo|Q(1JpNCtQ+}^狞ߡ{QTj'ڟON}Xni#wZFKk*ZT}}&s#-F +>l-oXCVOlny_Ț3uK|Q0O*o_<J5|G"Wד[\W2pҭ/ &ivUаҹ n4*ܼȘ7Є=Nf+ILfcݿdk +^/<dٯw;_& +i.ew6 pg,5h_^Vz'K}u=fܼ~E{8!GT\ۏ; +] .0 +5धE24fsv$B4Dt\:t4;yRJ/VywP\嫒Ґtŀ#}558ϰsmrNs)nӊPAhz\i峐.F%X?:VsYUyZo&mZQQܕ129`%G.ԁv+ě{I0W)6q%_=_PHmXkSo4xJMăEC)1Df2L[Xb4Y֜s]nUmaݘ%#cJIG-<驌[voeMՏ,vxa8BHt]A'OM1g$^]Zf:SBrOuKQKz1&Ed1_Ș[jNȧ!%d\ۄufb*<Ef<UH}w\GJW:k=^ 3ȆOQ[ + rTr*T'&jõsļ=} e.1EIYEqm"rH$Z - yX6nCq[3h_If(h[`Fa[d]3z#NwU!KW1qJU{??p*hcW*KP]'
iEch&Vrm1{.,WN$$OndM-/Xq%G]xW;m3o|ATXPk\$k-J漰ãҴۯO똪REnF]5>I:f7H/OPэ7.Q%̥I3CVSq (8"b+שXqSb
8EV#}UH7w.b):~?Ígyو^"֨}a%o@ +X=^X`ֲPN%*R2ÎYW5^z{vqKSW4D2kT.
}`yeaBI$'Sg }jr6
TQRv ~^0.T[g qj&4.OV*#|P^>Ӓɔ䯍S+^soыU|b>^5DҥŠC&1Iڱ4{j78h/^@
K5jF[^~?>7/$ps*w,e6DH;Hy$;f]G1?|7oZLVKW]jq$h/VcbIl=#_0סbCYLB?Oz_LJ9ߤR7Cİ.cA?xZU[^l,O6Kw7#e:M=BYXf+}>6|w}O,Hw|
[֧-4G5F{.g$j?/j吵 V>2-q[*8<SIR*'9o&xS$ɼD@Tf.zW&~O\il+Ksscd_veYϮ?x{ˣ XQKϕ|Jh
B_+Ma#D>z{ L#j/qwB=:?Uj2$ =ԭz%g#~m_>6.5i3&HdZZ!8SϢky1.*?r!ZH+6\ٹo79o]ʵ+*ex:0Wf
8"sf4Udy=9;ўB՚8 +aNT{c+J/0ڣxWplfzQ<ZH<9Q*I1yo4τ#ֶC&)y=?y<Zwa_2/ӛ\搃j;QZ*g
3Ao)LͰૈt,Ɖᶹi@6+6
e3JuTR}~.Xe"]e
G+3aE3nϯ9c<d{AHK{73Dj +kP˃r7oCުN$V$4Rhw37uws괰(*e:.qbm-f{$xMqѪ%me~3J12꺕RYx|ʭy&˫SI&2IY
=v +*.@Cly1bܴ-[CZFj*kBѾ*o?d=)o<J\?<\"~?2R_rͧ:<F»Se*lrDj}{LkG<rHx;ޫ8K*"G.5j@~gΞXfQZ0qH˵aRO/ߞ~- +H7Ԕx%p燚|wܰeнig*|mtLQ#X sqIEu<_r'n5V´5yJeL#/BXfLer?Ȕp;ea䝺hUЁ負u3*a:X۲^w'vwu|逴no;'B1*LAX fx:ݲya"yD&&->~,a]'Gz^PYY6: a[r,]e*&rr&o<ZC-F%g1[?\lvuhoV +endstream +endobj +1616 0 obj +/ZBVKZB+CMSY10 +endobj +1604 0 obj << +/Type /FontDescriptor +/FontName /ZBVKZB+CMSY10 +/Flags 4 +/FontBBox [-29 -960 1116 775] +/Ascent 775 +/CapHeight 775 +/Descent -960 +/ItalicAngle -14 +/StemV 40 +/CharSet (/asteriskmath/backslash/bullet/circlecopyrt/greaterequal/lessequal/prime) +/FontFile 1640 0 R +>> endobj +1641 0 obj << +/Length1 1606 +/Length2 14983 +/Length3 0 +/Length 15808 +/Filter /FlateDecode +>> +stream +xڭct_-tlض͎1wl۶ӱm۶ӱs9w~|cVUYj֪Ɉ鄌m
6NtL +m{|pU7Ns/}HSbXQ + Gҁ!꒔hY:!CY`%MЄij
,z + U舝$ +2s.>]\lu35*'eQb*VTZ>[_m{Bt0YT]o7W
. +-;ٓ?Г BAp8l2|+ijqZ]CP6f1m>9tnk/!n[_t(sջ;D:S 82 +|$
&חl7߭s왖~htEC#G>:>/*tHƷ,|҂ugIUW+LMGadQھ"@Ӆkclǒ2~yB!jYؕT0itV_{=f y/j3~k8(zʖ$k,i2萆8\Z:-w$liXECO1ݹ0
XD? kd/<t~5m܍gG^Hӫ\D9'\6ُf!XrIh*v8!7Hyfm>(m3fn
EpK l*P1P):D8q8jhr![Ψ=ŸNF~Xk<?}x"[/ 1c2/Kgؔj/twjvavU@k 'E1]
1xSg5iΔB@˼y +QntC/R~ƣ7gEekRk*dpEyV>gѹ +6BfVQ\"Ą06͵y"]MH^@n@>wuZY`,a۹%L߱$
?gßuCsܻKBP4 #;+iqJiŪoayʹM +Y3rPYJ{Fp"f4dAO!~FHc,7vj I8" +j{Y|OkXjZuyKxaDo,Bz_^g<CnPɁd|,GB(F%NM}&{XK*yY 3BΏH8taY|g2fHB *5-.~Y>4qS9dW0|;x3:!0qDZjhwͺImohNm^vdhg\\VB^hÃY]^I#nP"g)3Ž<-S&DT5KP5`9~J;
;# z +Ey,?|_odWQ&A*f+q;FOa)0;~x#聑
Hکcͩ?
_s@>m4r,8赋ml
Mwm2qb81j%E|7*#֩iU([ĞcEӂ4M
8W%%5~%[ـ+{iSRSxXk"˘ki"Or]zuL#)BZ!I8.K +>6_eI[)> SP,.M}*=koFQw{oWn*<LGҋص7DGkTRW/U_}>6ZN6ˠϦgdzJXF|'Q +J}&i%@F p46{'P(A|^gOhRI:ڔKG)ʋ
QZKL6} + +gK__r3F'3aɰS] ɭ()+cY|gdTKmL\m0%li8sOŇ
Zj'j1- Rz¤dxҗ@Gr[n%`Mk2fNAcwĽl!y"&NHv*dXSm0Ӌ4L݄&U^2HWcnHF+<r|Pp}gzYh +xHHDC,.lN+*;(&Oz1!;2=E_f^bV///Q!$^ץsMs
e]*E +}V +b5d?}̹I7~nn%,FaN3gT^cH62o8KR?٠s$f4$-y|0hݚԮ\
qHZ "Nn㢇} PĻ-Sffʺjj^ Lfn. +)|Lh2wRYZ/?+a
y7$=)2maOo/Eاz*:%T{qPrm7@05>͉\6lwJFaa}k3P;xTy&+rD-UhXL
֊}R%LyUa9vǀ[M9=Ut,a|$řȵqGHɰ[XqPڑ
;bF +!"t!_[tEO+s&(\Gr +>U1N+yP fgUN&HfdXѺ;y' +,.A6$DV&>Q
u.iA|A)&<#0~O d boj.}:|sImĬeT +BQ}ZlzDs3R?}f)ѝ}tvqS9cknꢷ2^ +nJ'LmɂVʼnqMZ=ҌuAS0|"<M9zk[;i:v
L(q&S>Rz1WxEh=~ or[HLM; +FYy7 D1&kٰ9M?ђ^GfME<6n +PԆKEr1$ +Z=A>+ehvpv]ybg ;xz(P=ͼ}Hh|ub.HMu3ﭚj?{8\-_A +6puNU[װ<4*P _dQnҾ=!$[ouSbVUשBnMg- 塺3ҫ>@1pJd{k>mmk"P4ٶo+rbQxE1!ޔʿEW5?B!lTNH +쇛N +% o#:[ &Fke0x$ ²aL紊`֔̅1iCFk=љ
J^k +q!ߨ/S+U/ɟD2<?|XVt5v,Q+vXvpGggqFslћհ2kܑxۯ0{
5\:,vsQThR>a&EoZ=m,V~do3VQ~b'NN?UxJy2Ohs1㏧ WB؏D)@:!v)PٷY4ڲީ@DD)_]ntGcWJ-~sRnl3ջvt cv&(1$1wU!%[DJ2q4+Dj +BLE[bYK"" +?D^s0w], +vw{ĐFH+WܯihH%5t$" X}#L"D +%Gp7E3WWۧ)?t(:ZX`?dXWqB`^26K;d%
-qN.G>6F
|[,eȌkp>iGdj?rhv8ϐ3X0vB0 I&)>4_KVIc\$|uqM*t(1QTAYĤu:^yηpp[GH$}%UP]CJ41#gll6Dž}JX~
^qEòH2tlwE"a&3ӎ!#Mk"+1Q8*7x)H`IB5K|ËNil;_36B^lx8#pVOx V]߿']?% ^3b|M1"<y_
Z
j٣Lʉt21Z{;ӗk$r1E99)lq2-|rWݑ#nం!0®?ֳ~7h:>1w4[^`htI0s2WIWJw/kMSWgj*&A8f}~їt+z7]3si_m'Kt575(?)!jWv8Ѿ$gOwM9bލ>~LiCSaM#OYՖuv3֫.po#[g<z)/N%CM`+6-"?hUV{I8E \BcC\r4\.w,㡽Rx,N<SLbZ~`~yzK:;>ɬg8j.4Ժ=,'14EvIBfT'Pj'eq))<
Btcdn/Z#H8CSSWL*P~˪m!qK/O9f>w(U顴L:gq23>JƵde考VkOdb +Y(yHjݸ +C +26M `(2dC<Wy' UHZƴ<8 mjUˉR̚t:I!xGĻg8:jh`q' +)4flZzC?Q 4oQ6\%l_az",G-A\Ѐ!X +60em9c6'俁? cf%jj3V8=[7Ca"i^ xw5\}(y3 +r414xkA(fz2D]*%A趘?uȫ6Vɜ 2T'~o4gQq*JΊ?;OqbBkS(z wE,ل=SS֯ѣ^ֻ@~EH4ݭ'?2N=?Plt pt)v|Ws~'tӑڿIjӐ:NoL0Td'H[YG! Vd +WT@ F(j-GdqW9ZqijwƜ +L#chvnࢎ:H1-/rTcjw (ŗ쇱Ї@B!zѢ=)ktLu9>TP43ʢZ= +jyE64M=ָBjNxȿx,(5?ē+h.K:@je%U:(CMR-&Gi~Qُ1ٸJEޒvXx*cѪ2j~??/6mbZyE|4HP23-`Iu. 8|QbyTG"!h܁#hAbQaOl8u5l3qmKFpe^.)`T˿`+ +!nQ1Z56S`! ut3l&$8\Jcd/s9)Ȯ<ӱcsiCbTX%T:;h۹-sFM$cHKt)ޛPOʅ𲄲gHHtv:u=ȷ(Bcdc#Td,g|h6;ΐ]].8t,^ʙ[%EknXF7$/]/z܌=#\ev\e>gZ;Z(+A7J-t*̠,Q(EAe- :6UXb曍ZI{N]nT Vf@ߜUtN刱N>Y&"LJkZ X2yFsi^oMp@|Blî\3o%}2SQ'XYnMcQ=__X2`3FXז|l嵣&.u%-pWɈ$(w3Ss> +f<)}ONYr.~KI"9NԫQ+H屢A$D%n8=\ٿX9j瞃|Y?dpܡs> m$[KKEWVTg!HhdB),>.}Kt4ʎZB}pzn3en>xc5TW
]לւNH9KY{z)k`^MWYH&QJ +=ʑܩ:CkMm\i\_LGv։TaGS~z<Y +:`Rf}WvOt6VwSS%S-<k:12?BcN +\ +.}"}`[rT#ߕ1CiI4Y9IN9
!`b
?Ȅ,c XAػ;G^BH:R%k/ +Vz-xȹCI[h\;-<umR8"hov|V
m{"y*jAz4R'Vx߶unrJʌ(?jS +=\ "lBUnMF}mz+m4_[ގ5`ܾܕ;ri,tQkza +ɬ_){mNaYHS +"-<X'i'eaQ"*4oHNMW&ϔ+t0rypLx;.~}b{OvQddIܑ㧔Qew[{ѕMO2c\Z`Go;^Ǡp'~9F$jϚL#8GTg(iNЂ{ +tV74ئI\X+D~sܶ#ߟg42)V2Y +/GZby!@G6Qa)y-S#)2/SEGwt9nFyB0/E*hh w3g
ѧ6cdtV|[րK8C'i#SUcu~
3q;$Xz;fU-eӃ1:
Ugwh_W1ZPUwx~e.%2g
]HKV54D%G.(0xY$"=((eKz~b(A@5&SNbM`Sl.bR+R8;P|n%t'-$
PчQQ0#'h%zJYLG25c"75}d~VPs<H-u$/H`hq^lW_'_h]nKa;PcsI҅=Fçϖal3F<\s?$v}ȟBU,,{}ƺ dN?6x+,Y,_Ô%xu_R)+ Kdfl}yN >et6:<Xc@A0vmԍ,@YW%?D.8X[t' $G@3spcqKfe͕uLh +[>aБl&!0Ą$h&jΫ4if\uJӵCㇰȇrOB(EdPG]ֆpqnǒ[~
ެbUo/HhR8+,fZ6mkc +7&?rJ28LGU*TV'{s+H &Lyְy0OyCUda\zl{X7: +o` +Q۔ "s[,u9n`L{ +ZV-E<a/e܁f6^!yI5 +lW QD{a/A~nӛB)eE K#w"eF +endstream +endobj +1614 0 obj +/MKMAJJ+NimbusMonL-Bold +endobj +1601 0 obj << +/Type /FontDescriptor +/FontName /MKMAJJ+NimbusMonL-Bold +/Flags 4 +/FontBBox [-43 -278 681 871] +/Ascent 871 +/CapHeight 871 +/Descent -278 +/ItalicAngle 0 +/StemV 101 +/CharSet (/A/B/C/D/E/F/G/H/I/K/L/N/O/P/R/S/T/U/V/W/X/Y/a/asciitilde/asterisk/c/colon/comma/d/e/equal/exclam/f/g/greater/h/hyphen/i/k/l/less/m/n/o/p/period/r/s/t/u/underscore/x/z) +/FontFile 1641 0 R +>> endobj +1642 0 obj << +/Length1 1612 +/Length2 18735 +/Length3 0 +/Length 19577 +/Filter /FlateDecode +>> +stream +xڬctf].v'۶mtlv:NǶu9g?kV|zj52P֙ gac$kg+à4s5QP8
-lE
< +$g7%Ne>$oEWC<Whqkk9C
csX:
m,=k:?HH9m_Ah$n4Qp66ZԿvU[-6_|*V?\@[JHRgWRwQ +wVK"kg`۹@o +'!/@ݤ;d+E8W^ن`V;ܝTT+y"sDOZAhkمVWxvNtH54kd +8i[Om|XE$%)
'_4c8!?ղZ@QHзnEnDun}ȱ)HchѸ%( +;ĶwݖbRu/)HA{ <_Kx!(|I +ꍮ3f|1_y+NU: +uh뗅&Ws7
t))3qS ZF#yNޚ2,I8߸[|Ws0;+~?PK:ؖێ(a
TX<&|ĆZR`"*q0WpkBh?*XY=gO;ed{<a[n}q0{a7P}PHNzS$M!9Βlaz!e4[[7p|ֽO Bm + +^1Zsi {hi~"]-SkN0$lp ++ +ѣ#OeF{)Џ*[|59ޓQ_C+F"0|LosՒ`P
){->[D+>q><X#[Y+2dH{0<#)9FikWbGg\XtfnC'LOz +Jum◪݂*uxt--T2 +8٥\u7I +~Bnԉcw{tXz̏Gҵ t/q+/a +zB2&vkE
Y
&^,Q]Y!3/XvfX|&-KP #r1V\ /3YU$ޖFeB +.$϶0L%)ٱ9ނR3[ؐz)ln2Faz6<\*3N ik [;5zk$`E[9b<dF;zV +2fv(_F'tX_d7}aZgӍ?[R+|8ҪkB +Y7Z3'6XS:S;(O&CfxSU '{F.o.ϰjѹKK.3?^]98<1U]CPl[b[/ⷱyWoEXFjbuono:\R.ǗH׆ C8cʳBq + (((ap^*d-H}%6yy*mApH^NiDdG=S +*Z:ź/hЏ7;Wd{uEИc:{s|pT3nQlFR^Xzn~MP4#/$(P]J+@"FvlG*yU~'G;-mFYiJlDjpuj Wk҂5kwL=f*b4?b|al|'b/ь\P`SA96}b=پt&/:?ecQ?V6W +b +$z7qZ_(tـjВdDk@ok
a/0aWlZCd&R >4<gA2Aco BAgKgOj^s~L$QSߛۧ[+ig^ +i3e~bzlJ>
H?ΞTQN ~^7X!sVtgw6@#-Iit2t.
"c +',|PBg{Sp!h; +kdD{Rq`cD +>ʔ~IO4.'FIZyM
5DUuu/vhIB\hJUgeYyqrnSpf#P,XC|AD
Rt 56' lmW# 8.c"w>>Xl-;L!~U L|iSFrA˼jIF &6pbV!M8&aLr-/C(R#q͠$>*# +% +DJ3Jofij%.pAyD%|͈N4^QQ'\asi|,J9(Qr]
]cQcƝ +7CqHQZb&, +YQ
MیK9_}͒2^L;64y2ck$s+MUs,]Zȅ.WuKx8y6mjOoitharLIGLgWAK\m}E
+#ŻzZ:EBZv197#S|53˥BсB5CAPB5a%13~u:=?a>Ɍ3Cj#פM\P|1ITU^U5yW$!סBhO(Yg9tqeưtei_ebU%A)ν:E#3t"( Y\¿֛mcxGҥ`.V7X[sm
Z8V²bQ{c1AF6l)k\7ƚ1~^@_1ZM
^*jpid0 "4z[wuŴ?9q`=s6G MDog]Q7n=#?vU3UJªNuXJǘ luO'v}qZSٷaTRbP4P妪@5FhZ~MسNMF58BةFi0հkN*~]@9a[Y[Sp)bEN += +ײ#ˉEX_]f
)HE|ۂS\!Rk~ZRZ}tOb̦bC S05&'ԯ-aJAy*=*u{ئ-t]ܞ3*%_T^0w8b,r4]&\~h95A1Lڍmp])J
4Rbl=Vlµ~Kbl=2guh!m9좃i>,Lj>fԳ/o/zEGz`ƒ
I\FEؙcS2I6^>sdh(M9,mAE7imO>˩np"tv\ӟPGVYw=7ȲvR1!Ty!*Q"607-}5+E\uOݫwy9Vט5'NSb@!-f|X-u U6t X?Dnyzxcw|}+;4ДyGtn]Ok߰Pl\ + +zqz!a2ZàiBeg$[\1Gv;b{\BO&b(!CvJm0 zWB{ˏ(*Pt8{o.vBJDnbm%-Y5 +el95FʔF]#2 ֜ aO&jfwR^&Jʀ7>ݯީ$ˤ;D +n/Ko1/F/wdpK;d;o3Vcۭΐ%.TkɫfJG,zܩP߲a_(|8f&˵y)Ĩ!"%R{qAy[YIȽ,'D%wv
=M(LW%63Ԅ>UĔYYx٨A@V>d5#n2,xV#`gQB!1y`W~>=$,g,0Tq<o[FGIFA_,R4*K?GgbE/s/PmvTu)&- 07.ch@PžG:mИ`"13_|$
/e5V56
L;GHy",|C!FqeAoQ~9H)≀cqSm4OZ)kUDEF2&!UZ/aN3;'c/ʟ +EudkE'zRfy?
v|qv'XVR3 + Z[EJ7<β@pSB]MB2' \cqAfҷ.4r+Oܵ1Iߝ`?P{S
pwF#b,/
c1q%Jkʷ)P.țEKi6Hi#Xr-BO)C0I^jbxf_Ì ͊xL7hXm./|t[,s{^d/Ꮹ{lFcg=LlACԉ9Ŋf:&Y'}zs7>ChBNPju߃ob>
5 +LUWQ9gmbQt@Kߕ`@4f(V*@{@l4p۪3@%J@+1lMt^{T:4=Ǽ2ے.bq71jm+ΩŋVr\A4'v +O%Zzt! +jj&ă۟F~ڢ9"G@<?tBCE3ºNBQz
#cC&fu[G`e9DwtѯvLwBYZ&gr6|ɷ$NJCpiI,)GHO{VIHYlw\u1Y#V|Y*XG094GhlFP?P}%pAHznߌD J}ۢ~[*ZeXWz..ד
cǣP3Ƈe
]y(M`k|e9WH+Vޅ46 +q,%ېm$ɢ泌r=zb1f[gRౙHY;@۲Ay<貺rTlA54W.#t,Sin%0.Dum춫6>gmUwzYcU0֢ւ̹oaSK!;sHINw
j +.n&?+ލ{Ɇ0\ĭhЮmLꖤ0^mݣg6 Cf +q=H$nC(0QL
64u<H/!$HdN?f]?gw(߄=!6P?uLp~ieg).S1rX@>^sX8o3c#eaCޢ9 n +};fTRو-DZ{T=BrRxVηw-yejD]ip<0I;j߱;o)j*lh|y
uP$K${._+$4OAN)%4~h$ORKV9ԸH-
+ؚE: }\^CeJwt%^M63!R$M'"V6$rC;d`]jo7\j"50PRMݼ:S4*1!rXNAVwm2?,$[=*tYnޯMvn`hC KtjjzTX=YȊwNOXy!"ְWhغcY7 +3>ק +C1*8' +۟족'nR`աCK>[2t9'18֝)#HٖtuUlQj\-rX}2#-,y|N'myQZ4s":pt +?45 o6O}fh&? ̥ ^ثmPeZ&DG#hYLab6-}~|We-Gopua{AIke]ɹB_N*,
yG*[eJixeODn"/yi)d+NQnQ=?$5WAS.BA pH$;unKT̀IzV]R>_' +֕RϪV d^Qwxňfg}
2a +cV^R +,g܅[|'^!QaפLD>i+ne*NJ/),MuXv2$?)`Ij&SH@x}JnOqE9e|@KFߍD)uU6y&:;J)۪s.vdG슩o"I-ГQ+>b۶-T,B`8)ZZiEȣn5&/gđj\Kp(,)l ,:<+먵ӝ#ԔtAK7Dw5h%\QPe-<[/-XedWgm<.
+<3r$&+ִMU6Z%Q땋x ^Dc;^]Gn}RV8i`JLN\MiK!{ښf1 +
xʳ""!Qqi]~}MJA2߃@SݓI|~-d~d('$GPf"RQhW1R娍f"Bsl[v/J$)B 3 2']呰tv
9poo|U$/gaa﮻> +2['gLk;x"F%cHU50*4ѡ^
@FPLN`X)h܄vM +D +R>ڞtm`i)ںv#rdN&qV'G;/t\ +R'#j6+L%K~L,^]|QP*\$hXel8}BX:Zw+ld.xuBkI6I3,{ٌ2ӻD$<?dvbDu)r0BI"jqvwT4Dé}Өc鱿E +˥Qeux[Q컗$ +Zs0ӈ>as(sA??$Q^Q@V +Z]Y˝. +ϴTvlG!L#q'irXw6f_aN[oOeiἜ岊-<d8͘lET6.>7Yۑ/Ky:!G s+iZEt,lY],OQ:EoA_ +vm*f +.y<bThMƝUvMk(_UQҦsR̥W*/дCwP]:5XI5GZnaQ˕r'rTljN15~<ق/c,rsQG3[ +qsQڴQiE-tˎN˸KCg"7}ϯZi<wvGJ<ϑi孤[^
{5r ߇9D)DJkOY0pU-MvuB+6uqvq_u}MhCFr;LFVAt3q`M vN,#Fb1>oզ7KTF疹W2wChBW׳ +[(Xs;ѓt4b/$lы^,ksC.5`(I]>VO`ʕ;|nei,|9m
DY^j.`4i$5g݄sLJ9y@C B]m6.R0U17o">Y IXlCIRٜWnBj0XE>ArAƽ*bmję:Ash_Zk6:nDu>l}DJv,o>qf/ +}6#"Ax&ȅfI!<iWexZ6&\80h: +;}#UrvRZ]OUyѪ#N/.XY3NOt0 +v/!er\dD y%w\Hhlzu|~``7`cʵTI/%i$Rx*FE\SDUf10v) +,?;/a=kA%Pn:֛ H:NtڹrWGS>߇(s:1J +˾u?^w}Ǐ.PF]<BĖt0 .$J-|;ir^ +:[O{I"QHDIkP)$?TDhȗ
.e7cRm=^
x|1LN(-6/9CA n{cz0O(OH|Ú`o"Yc
igz2':sgq}>uRpp: +ݶfl82=][Qf,ĖՔ#F_D:&E"µQ$gSYV@˗ufAt-gob<`ͷEb_6Xٓ+ݞk43QECO\+x'Β&V˖́?<{+ܖ_Rwf- +)YUz4EW>ŴI{ÏHEwʫ))9ϴp驇wVY +uC~IkU}f͓Кi|tUE026
1FDҹcGyby ӯ*PTF]̄?bwWa[d4㧇j2H*?ۮ5^WĖwccvBg$iaD]maՒuup#*rM[$-k``X]u3vA1{\jE"0:b2cӞ4xtb뤑
f/`<"#ٌ:|!1| +G@SĶk"SFG!~<E2m +8)Tv8#W6ƕp~VOM1G2)c譟ZFAc#{4orehq2=PiЈEԜOv +69('zG Dk<31 ]@
lҡe2}fK ߜEpf\b4$v}@r{4ў&CoeOs~c}iK)Rr.0{\r/`J +ZXW̺ʺun`* +OJŻP=VT+ݸL]lًoW3q>z3 +5oװppb0Vwgf n}[ ۑ:b{*R&[W Z 1DYvҴC߇Ǡ#AWWOҾ7]h{z-UA.ѿ/miG +x"wѶ{mOH͟dxAzP?SB)ԯ:1d,;H4D3JO=m?`eNhwvԔ4P0 *L#'>K_Q +o4]x_轔wTlq*ףAw%m"KGEmn0rwq^QB5<1[>ra + +endstream +endobj +1612 0 obj +/MFRSIF+NimbusMonL-Regu +endobj +1598 0 obj << +/Type /FontDescriptor +/FontName /MFRSIF+NimbusMonL-Regu +/Flags 4 +/FontBBox [-12 -237 650 811] +/Ascent 811 +/CapHeight 811 +/Descent -237 +/ItalicAngle 0 +/StemV 41 +/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciicircum/asciitilde/asterisk/at/b/backslash/bar/braceleft/braceright/bracketleft/bracketright/c/colon/comma/d/dollar/e/equal/exclam/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/question/quotedbl/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 1642 0 R +>> endobj +1643 0 obj << +/Length1 1630 +/Length2 6018 +/Length3 0 +/Length 6846 +/Filter /FlateDecode +>> +stream +xڭTeX&ΡAFaf@:$AnPi8{;9>^^qacs$ +gcSm (D + +(W"Ӂ"{8(*U';7PGwK0
+Eڂ +Ba +~gpl]A`wGc_7a5-j(r'0<Ae'Aw8ڂQ3c78 +R}4WD6ֆtя4qιY<X`S[HjT'nqaw~ΈcOezb_yX
&){7d<0핫x)]-u\7 YI!88\5U4u xȑO[L"L0 !7٘cki-Zuo[=ĩV-۸PaIj.5Z: ï0V[)t=Fi/G +^-$BROt/Ģ|d("M@~Ei pIfz86$]y0~9~oknDGh@'/YܫAr_Qr+Q:`ed#2#.X +h}`I@yn9uKVq>ƞpb +)C!Q7+a~ASyndTF'`7ѷ6vZKn:^|(TLUK^xa[bwZS$O^mtB eh"U]<Π7,+Ǝ^}_NրC?\,*yÓBOKG T\WG̔*z<V+~Y;s +A1 +ye cF}=QWN>jSh&]rVcۡ6/3T@ gQY\kʼGLH솙)vieLANj
+qYO?nP,sUʲf _'bbIZX]S8W|~}1Dc˓y!90VmŖ4V$c[[L>J1ʌX6maI*qxuv$@Bd+qFCW<7Eyf^Mҗ^[{e TV@-øj}&}ajߋYwvyvNӉ3h?#:AIԷէC +'0eT:;}>C+SrPXP#0_baŰ \#[3!c<=\纬ũ-Ov0==]Sͪ{--Yc\W\`8C3@\u9gx!-GE vƪՋL]"~bQ~Ҍb֯xA,nб7) fQ4˳]u$xύzs1+?0T/bO.|Ec5̸'i{2e\E./5nI,2#RE#sTF +Y5ۉZhtʎ
$D.5gM9CJq^Kv)Ɍ\\"N"߷R&DkcG]*9!SՕd
}"[lڋ hÏ4!Rx˜L@y_{*~J~l݈^]kU=ÏۉR>by+{TB +Ciia3Q&/{B\ rϙKԍ r(EEZ09?I^6|A}-XY34
Ǥ;ZX85 q/jEtfbm ɇٙDp +P<*P[6 ;=,]M{U!,,Z[PWd.ttėn)t9e4rs4&;ݎ<ɆFN>c6Ik+R㸻L}.UZUshr]w&9~_{$ԍY1r"YstE +ͧ3e{&liUsiFR>m5mOJTrDna:K3#E+$?،i6_lX߂Ң=!wr c.}W +>+_ZN^ź̽oHcK,sKMT`ajڠy?2xI +OqS AGu#j+?Ҳ|8ã%pABD9q@q37s@t{C0*\§聚iad~zjwnNN*N<P̗Ȓ]ܢ}'5YqGTnB'r{.Γ+8K_Ľ{UV8! +. +k͔_یg4;:Ua3l{/.X)g`4q 8V__&/ۭQ6nә%$$Ca;nX\6yeZ>?CsxjLZ%0b-R:.A(ʺ<\}9GS<DݖTgG +Ufybk˽4Ȱ=:덊tks^d`FdKeyuu{swv(t??1_n|rep5Gfht!7$TQv5ux[hLL*!xfr> +ԿnX7"#|F]3m@l'9VKǖ'95Ԫ +jOϚd~y737P/:1)Kl2R/Hj5\P~çk +dtU /Wΰs0tVMǦ&yzQnMӺ AkUǬ_YͫlbاWKQiS=K^Sq֠rno F ̃~ް2κBe_6e)QZ~#9i(ck8ycARsd8}tsb QK!5#ց;֍smt8/to3V*JUϚ Y62hBgVr#NQwDf^c,Ļ/Svsw4ʾM/dē'F779"ӇO3Uv*#=(xN9#
`{F_PVvLmh&Jn\;@#XE[^yO*%tY{`ޣӉ +endstream +endobj +1626 0 obj +/FBCEHX+NimbusMonL-ReguObli +endobj +1622 0 obj << +/Type /FontDescriptor +/FontName /FBCEHX+NimbusMonL-ReguObli +/Flags 4 +/FontBBox [-61 -237 774 811] +/Ascent 811 +/CapHeight 811 +/Descent -237 +/ItalicAngle -12 +/StemV 43 +/CharSet (/L/O/S/T/a/e/h/m/n/p/s/underscore) +/FontFile 1643 0 R +>> endobj +1644 0 obj << +/Length1 1608 +/Length2 10337 +/Length3 0 +/Length 11165 +/Filter /FlateDecode +>> +stream +xڭwePݖ5A{Ah!$Hp ݡqK h}ܩͯ-gT5
P a`e-ݴ,NVW' +
+rKC +n +`Z7
w7@sW+++_gֽߧ/ %䵶
ע( +s>:jS6ûd V;҆DMH2{Ry͏~Lr*CWƑ\ce"!rΖ/OGؑKIBnpmX#.x4gd\pijE`87~pQDH}O-$];Q[_rCVkc"b7Ӓ$';vϕoEgXN)ś9Kd>͂'zbkfhX:%}1QI/SD5Mx!e.0田h}u4OhK !NJ)i"b`9Wi.'ʌN ڹ2+_[f1[T{/rlWbX"^LXJfdCՐ*m<_hJ~=N #Ls"zn\:u +?[ug44* _;<<]vuO"n +`+.o*ecǯBx4;RcЦ?q+մGێp:VfH:2pp7^)IOBT9#]^סkk-'[+3?c3xTCo|eks$N[r*X(IH95 "0r4?^WlQ.}(q]1 +ٱr +S=fƒȃ~t#^}dnnf|p)aQ6>cxF?'OB5܇Asw4Ĕ};Mh?G<Q_>#>3̵G
+3[i8f0;wL1X%DugL+tLefZq=.L`Xq0pi]5sǴ%!) [m>?R0^jdzpƸa1?[Stf_$dmϪ'ߣhNgO)HzSqNLRmX*#f
<.R[nTn`Ңi7"5u5-"&:{M%$>H(9 + +22MYM'3ԻgnҜg;ʴkM?\s0Tf1۪\)%RE?G#JKʓ>wleiZ/L0&<t["4Nbs~n%~9.KrG
=ěj
Se3r7pNoR\>ǫ#_*,4cD*RAb;7hS MQ?٣3rBHnQdžlЌ@\nۀ̰E\qƏhׅRmrff,5~GZ8?W1q擯лhN]F+7eN/mcWvSdQ,0o[qx|QOJx\ެ%܅JmN0W[*e=&X۹º~Յ/U1OZH8ld췘LڸiY";#M6~3(}a0)y{EuoOf[[ +HО:<PKnxPx~p+N{RmR|.Z$ +]8Un4T|y;OYm5Ysx)Va3ʤJ9W8&[?Y~-u?yӓ?5(qcT +~tfS̶M<_t:OSPIdy +\ +I4ʱy;Gh鶫{ngTսj<t@\FHILS1R:"lR.bR.[*6,YDoho.U[xw:8=ݥŷWY_9naSqv'!V>ш-%`/*,a0=%rbm /u9@ϿG+U]ɂ9FUdC4]Q$[[KaV=rdߵIJWXBl +z3;7f/wHE.m;1*kB5/J:H?;I$мH\u|:Ǥ"( VRmVPFtMBr5XN,L#Tȵ6Ԝ`J#`QĿO >90Djװ4AI(q7* k[";1˨ur"Zgq}UEgcyk5ޟ=p'RKأg[+O5Trg0s$K&̾D)%p%U.g'jbؗj) uͽS+Wb!HvoEÿta785 w
/(`YhQ?/^:،@h|Ӻu oF͙{/v>oI
WRtqj=/yܟG׳<_m8hPg0݀q
DA#C3f4u,0&pބĦq"xŔ^0+%b)2vino${Xj[;t2e̢jaʥ1N,%\Jaq1/JwM;п_zo81tI\ +*>cT:i?t`嘌6msM +<[dǁuŞ?~|B;=' +>+YubTD`2[n&aLo))(*,}1J#&4iP@J&@I9`}"pVk/,jGz^LÛJS +i-ߞ@(>ù*.P;i.(ĬeZJR +fXku'"MZ&4RFc&;Ue7\w+¬QD%V g lbu}Qi<3TYiPԴ&2.P9a'0TL7J-Rj"[>
(,hD}"X+j9+Jsl3R3ON,3JIv1%7qr)O73ܿW07z uvb߈T[;o]05(K."Q03Tdg@qdT3pC4zv'U7w``
F8o!*S|M_kXc;=I]2fqzyf\T9VN",Өyܼ{h`"PnhV؈m !4[?]RWSɂ
226렜Ψi^T^`ٟ-Sc'\*ݝ8^RbOm^Цa:sd|+}:F(('ZV覛䄆TD%+5e~>9ɷoීw肣'G'8~?S [jՎiנnrJ2e76U +j8%;X+(z@>ñe=cJ +_D<dwn[Bi=>XTh]d9zW̊{zjx]˧Ԯ/p߀(gOݱ:K'뿻d.NR<6u]F^{Q\t`'BҘT0ubddMv m
a=٧"6M0 viWr#CEۚCoI CL_1,aGE7<U5h<(M5ʹ4 u혙'HLM7URmf{b3nHR!
Al9lxf +XN0ڪQ0 @"7DbcQFJ0.9:[ +Zn?`Ŧ7D4`ezcysļ3jS +VsX +G\]$t#Lԃ{!AZxD[Fȋo#! MAvGD_}^!,mB|ꥩ'x +\1> +G"y)s^7|uy'b©iں1rؖOnGUva3(s^xf7B7@[a gqi1Xu֨hfl%<iOO%]iGBlty)4p9Q̙8af]O+t^s_sD[0 +&}l^lV:\PfsUW-}ŁЖҭ-\ns屠--{&E1_uƮJ= JLZ4wyM%' +"m"vuWb,TS<7q7_qQ
>=ĽygN.mx
0 ⛴i +mZko_SR1H"?AY,>ɱdxMGԺe!Q yYV].~ZEZHձ%҆?z/smib?= +JEj'ņ+Ɠp>$%f]_#m4qR1^|ƻf;[HLǠ(of=mv`m;'iԵ3IBQPzI_lTnW~$>-ۿx y,'hۆ`b|+**%~Bxi;CRR3M+V\Rϖ:״0^l\xr@eWԁV/i iȧ7U7thNCPߑ)Ķk+QνBYX PFCe\F\풳zٵ,ҲG\K4㧝U؏KYRz/AڞZ\xTjo4c˰>;CY*?;YRqNՙ#ᦉZch5C"<h2JU,DI]5nG"ƈ?cVQ.]Q% +^*vmz)ae^R|&|W!lG!o^uCLxIwi~~Z\y6lyg q|#BoZ)w
i֖[Ń-[C!01Բ݅vl:az҆6&Tyru[r2gm<.w[˦dȥeVWQϬ GJv-+^Ĭ/pɴw'9})t^fJbURӬq+Ag:Ftt(UqdO4R&͂ivk)5 M4|4-ltb3"M7[dOg J2I}a';0ѦW|dgf+Eh!&2bJEl\y~ے
h`J0+#_ӎQJLZi`Q+t7g0M ]G!3/
Y׳> +yb>b^z#eˆnRFKT ӥ[4NR}vzʵNxt13)T2~39NCiešQr⦺aR2|g*R:9]EN0.&k=]kn{FDR,S0Gm: +#e9#CBDY7v~mK40NK|zYx蒁6$KkoYyr0"inB윕jEt)_QŨ;ΥqH~o ub_nDu?_ĩs֕v!6g;!fR{Esfک"ʳ;~k'ENln&ѐ OQ|6&D; M&!Ta&kU,d3%_hQVPH}ۛ'E*Y̜%DHJ7O4yzګeqWޅbiZKr?YNx.3Ǩ5;n=3c}6EzK2}Jm}>%t[DQlQ<EZŕ06BHѓ`@)>G!s6[Lr2ʸ mqP:o-}~t'&jnveSæjk2~apA㝛z f2*.80"s=q'%rR3mo(7<S5j{ӫOOZ- c?HѠ ;E^e(0Ҫbe:y{Q8$Ԑ!wv +/,q`%Ķ7&eL?A..qգӟJ<IGFNQCJ\*<}[AB:Fh*w +7q>u{ϵq(oD-7$]lKT7f!GOCJEȻ[VWҝp; cLT˱%2,+Ycz=PE}4hweM@uw4]rl<ܞsM$s~ejQK6Av0,7%̯HPPkE,H2u)Ce9Nx#K`.}\;enlOh8IQi[`vc|Ƶ#X)a}fS+GOTފ榽xޠ@/ez)HV&`
vHknRuQ,ßF#KE[#>lYK7&~gn*%E +($chm&d&-(~F#I>n]ۙ_O +endstream +endobj +1610 0 obj +/XMBSCN+NimbusSanL-Bold +endobj +1595 0 obj << +/Type /FontDescriptor +/FontName /XMBSCN+NimbusSanL-Bold +/Flags 4 +/FontBBox [-173 -307 1003 949] +/Ascent 949 +/CapHeight 949 +/Descent -307 +/ItalicAngle 0 +/StemV 141 +/CharSet (/A/B/C/D/E/I/N/O/P/R/S/U/a/b/bracketleft/bracketright/c/comma/d/e/eight/equal/exclam/f/fi/five/four/g/h/hyphen/i/k/l/m/n/nine/o/one/p/parenleft/parenright/question/r/s/slash/t/three/two/u/v/w/x/y/zero) +/FontFile 1644 0 R +>> endobj +1645 0 obj << +/Length1 1166 +/Length2 9385 +/Length3 0 +/Length 10158 +/Filter /FlateDecode +>> +stream +xuueX]K-wpww,d۸ww.w֏U5Ƭ)Gu&1S1PlP;;*0͝ _;! +2q߯a?FN 7+3++_/j +vw
. )?gW8=%')83㿴*F'Sٚ|]tp|&og~%uYX]b_-?XYCoUh!]G/E+dGd"fkn/@ 7 +vʦ@#/~S@[()ek6ٚԝ]i`//]/?f@7 D Ȳ6ZȕiG/ݛ3'R563TU g-orʨp"4dHT4OfXd OQ.h'/Y{ gJȞ,ӡ%y?W#"-˫@T>} +8SQ凛d,F^燯s}\3!2HND:%<O??v@v1Dd_!nϠ'ƓOs), M;»$fظʕ<bͣ$3Y^fcky}tKT v{sc֜
ԗ=Oc5ľ +Ll+%XyW,oGe\FQ&5,J]< +n>B~mΛ̼\}(|KL1Խx,әm_'/]p1so1٩CZq)8[;kz5)g|lY٭ȇp_Us_vT4J.D~U">kp/u$ذ>@?"SATO.9xRS֢IxYpc\ES-7C'(W5G[߂\-bK%Z?FUevx}WW5 +R!$BV>s9O՜c+6[Sh/ +n+s+>+WN]KGYuK~$sfhWjvwiKY~ԝom% +J2kƪZ'wZ 7ӓvȡ+5ݯ}En3C!pY験wded&}v5- p pS}yԄBF6<(Rh?ɺ1j*n}侉,%`M?)ExDK^~d]jY]N{~yÇEv5cKYj(EZ9[2ͷ +>aMUi4rdž0c2dIn$4G +|7k劙M"Iצ]Vv\֚{}S,N0z)
w[Rh_1IS7V[!kM9%I5n^de1LM#SN+^[KbAD&&V2.l([UǀtAͨ">l +L(|4=2A +Lcp眮i۔.0Bq$\\I|3'E.@/WCY?m7~??YUoEWT1^ASl6&.,SF0ޥCCᚆ:o;ޭN6zpDW3{6?j!zKJGj]JxvYGO(lmOdNnllpu9(isJ.a8Vq5c]ksSTMG[ǚ:Cb^<4O]FThQ323Ӷ|%]CKġVv?m=+cHpY>MfK 5 +˒TwKF`ecV&C+Gro\j"n˙G곟q_UK|hKHw-lļf,v!S&?x>j^1B_ GsrGVNO^y֍TMGgq xaCON=8J|rGb(jv^9P8cȫ}D>zŎ%[~o!aDt~kA|ѝY!bZ9n(+e9$zYǞxx30%
)G*尴PemDj;f=Cghf +>1$4++Z-BsKHofX#[p:DInC7Ԯy0$^_V|&JGiثƋ,< +@f"Oy^CCP3UּѤpʬfEIa'GY1]mUސ;{&d_Uu PPkK\"EJ +n6iqT={;f:TNE䠼YW*/,ᩁ +#՝"%$TWߏMI7TbXNK0k}MG/FbV)D['Iʻ}3лn
+%*?D3p7S(CFdjIG4g78USnjiԾQȹtY^p(y^wfO0@N$2ݠJ&0u*]|'R#j:joDB2+5W j"L#ol65}{ +"?pw"<6<mXLk#Ѓv(qWN?SxvnP<ZMs"뫊}m>?9ɬZLJq2V .Ƭ姇
a=eɦfX.vO=˵\6p)u,DU\,'pC<қ7ܫSwVmKvS;Jt($/|V-ƕx&زHh"arYբ9xgt^MB_O:#&@yTr*TKO)ZY S15^Y! DVGl^=;KעeE\jO^%r-zi/Ƞ<(h6kR$ʎQ%V'v ++MԜ}q5\EFV + }x68ر(E%C
ʌ:=¼ v|?A2h)1P2^ȻxZ%O." #Le{6௦ٹ%0xi>*"ƾ?3r$7\4]/]dɭ̿_"DNB=-<a<Jf@[<x0~= YV7aG7f]W7q[:J8їyMc8~m_ +%"Ќ
qx*%|F46]WXoAMcVcٛxy6$asR"1T4=HEڔ"c^wWmYR)Xrj8D4Q#D
+j ?|jSѩEQu,j16EGj{D*aaT)O&Uϴ ׄhouGLkFޮrA +Z:%dJ)+11Jܰ0۲SP;Ys5AV+iԵtfFF9hlg| c( +Vp}N(V9Vt:Z"Xg;};m{EfH2x*pV^ҫ^_wZqK[2\t`AOX_Ypha'Iي6_mcDVVMO3ݾh^|xic2wˀs-1ٵGW&o:xUaOs\D~Ys3-TAZB}n~^'zavEX^
x04O\ߵl;g~,/.]|eU}tX:IgǺqk\0a(H=vU +LA)qx-DF|= +FCzo~znηv-L +RLX(ѧ 6>#!u\t2[5ܲDX2@^c%ڷjYhdO
t٧7
%ճyYf](}И"7A{;x$# +ZZEGVȌm)xd4f8,'R]J [続
#04JQ[Y;52]pK`237Ӄ/t2zLP=UME .k:[w~#砞t/:I<&vma˕TcP#s#r[j;!! +Q +cYhx3LٲHղ k_j뼢YFtJ.PH)5Oa~a ͰFTn2c ,n;2m=|$銛C HcF*~FM+8R;:b[8lWue촉@ѹR-
~X$O +;Pߓ +w>}q+LfΝUy* /GݫABBMڐdݼZ-gaQa;c+ż\fSRg.bU㥈t/ܚzw[j
4=HRF^o]TH}h7 +UL!KNB'P~O[6geTB*xD$2Y؞oۼ`q\K7cnZoD܊^RCЈ<ra W ;}\5sم7z@\&PJe]T+u@1RMƷpOY4=/yq!nXϰOjFp),b'\/\|w Xe"C$8[oˎ5lО~~v<:எsf H;hxGzN$ng_IQZ +2ʾu9@OeCr+)ĨWu]Po0҅uBb6] +>9 ?ҐHWz|qGIi]qNx,U4w|2 .<ny`i_yMScDqH}</ܚg"c.IVo}g=S[ @j$<zr +;:uNgaRql=>^y[P/OUôQG2Zgc<X,+~l;@
SJjV}0DK"cfFBqds2}S ͯ\BҋOxrZж{ȝȫjH^Pğt:JѲQ=;nO;RG[1"ZZũ\X`t,NOſ>O갿yPl\|=Ŗh~.tc87m-/V[G@X~|ӄ#K<oK9S<Q=V.M8-Nq7vPkn,4}mB5 Y]p6tg^Qi;[IP Bc|Ujd%JNK'~@\5})DEq,/d"c)[*MqYi+댦v%7μ^χ,`JZfGm,srjXeԝ}4a1N+DGRNܸwЪK^H]ۏuXrPq+JYմ͆!8M}OLChe3DQ<+vĞ'Z/q?|u/g]B Y]C54>]U9M_<ſlQjbW7$!Mo74ۧv(N&
uE݉/QRILvWrMcIAI122oƢÖwеu{D&n{Єa7As7߫ݜ˒ז=!_rɩ[-zPoA6
+@ݫ2ZEnolkٳo +4M=M[ϱxhZR=hܟ[KTDT]H-Rug^Bq^8B.ߏDZl}6@8h 7gͰVmƍfHpVWc*(c>1aC5bmK^CS2T'
0-6;[!petDdapOb<0: zY,R% h a6 Vj?"JM:0D{ՂƎ;% +\L^NJkX,*1<ZųXr,ԐҴS9pV*sL됎ZI%j2l4'Rْk1ɜʙC"&DZk)гñRm93s]r9hX/T_e]"j8Fs[Erw5]̢1)(jZ~M+\RPh +=!"M.}B2B°+>4AP]IEx|EO'͏֊˲gar@0}S0V|LܩCEyH{wgΜC^F6/Yl䟨H2BJPj!F@3V'2'5yyK$l>6ȱAec~XzxU4Þ/I\:Z9Ls5}+dv.2sۿKX'1&6]P*bޗGZgFLΒyIT Ӽb*%*s/ͼso^Mr]i5ZcwM2uShB"gQrWgëm9xy"5^I2m *O +xd5-5E{[3b'L\%E}Z2@IHi~
Fl?w[TZ_F qG0c׳ʼnTa.V'j"ڪp}]z)[KQj-5-{68|,QW"_Z5NrzI! +endstream +endobj +1608 0 obj +/SBLDHK+NimbusSanL-Regu +endobj +1592 0 obj << +/Type /FontDescriptor +/FontName /SBLDHK+NimbusSanL-Regu +/Flags 4 +/FontBBox [-174 -285 1001 953] +/Ascent 953 +/CapHeight 953 +/Descent -285 +/ItalicAngle 0 +/StemV 85 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/a/b/c/colon/comma/d/e/eight/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 1645 0 R +>> endobj +1646 0 obj << +/Length1 1626 +/Length2 16372 +/Length3 0 +/Length 17224 +/Filter /FlateDecode +>> +stream +xڬct&۶m۶m';mf%TTXq*mNntܾ_55^Jf&L<D + +=oR2V| p#If}5$`u-`3]?R60|ٌyKӛ8?Oxe1n5v"].('i^
| +@.^{wŜ<DT)7wzJNZZEjlK:'Dw eWt0c0Z +@qUi|NGv\^ ~ύ1kP"-*G^@bէPv*nB<뫯%l'viǿ^#[ߔ=LoY+ !,c
9N"8߯m\sz']/hrW4Vl$21/4ؕ +t ld݄ܵޱJސ"Vu +7{G+rpNBq_Jɬ}x7?GvuazPп>RW<(|Y<_́[Oˊٽ +:ڗO@a:1e.&K!TJ/:gW`NOX7$Mf'Eh{ƗakZ2Gu);k]mY]'UMd7syȖ9qI3c5o?6ͫ9Wѝ.3PZ)NA xGsG擀ꕙE#}'4lGǴʶv<ne0yBi*M]XfO0&5UCN]_rq}^8/+4ܪrv_?ݩN7ME +D͍o"-d0d?hjX2`
39}-ֻP>iI[t4;gu~H}躺yӻ +MX,xb +k09n2ԭG^_c)1`JPLT$1;5z d6va?pi| x%/],uҮ\0@)k%U}=CC ?nJ5f#pj,y(D TN5rXo9+<dߒgb'|1+w{[RʶnL~)u,RH`^,>جEd_=2VvHט+͗ت^={K]Pee_J(3Zj. +#27IKCbhO;[f2*Oz
v0_x~*?MdxchW>!;ō$ab,.zw&[+[^1XWne^A:.#_}풽
+jp^Ծ;)ljт% +j|P!.nskCfNG`(Ɵy"q}cJ +?ˢHj]bf8ous0@vO?w 0P٘JhM+0F"BPx\6QYw}^o:IZ-<&kE|Ș%6ߐk氈΄ E{/=S;FL*T%(C9X8"}WKߤn%t +%-XOa)0^qXH^HxnTk)zWTbg #x%fę3ݡyN].*."KMjwqS#@Dyѯ>BGBe
aReUؕLѠH
ax4Km$MٔloSnVȬ%,rke&%MƏI!<$T(/.iĨKoCqVn;M<QTB}k7ڬjN)!`\HP/MѕtVڟdtj=T;Ӧ/|DC^|0HTa>s<q:6"(UgXlZ\Z
Uߠk +ˉ)t
9;
dFB30r"57eI4T Í!t!c({JhnYKn13鼘xҴ.92si,ً\X +5`nb}]M:i>*DTN< +Vw@}~X(6ke83pO|Ǫm)o%vSMDɾ7\|]Չ3ko2Ү
S4TW40N1JHiܶ>!!?Tn*tNۀ +!M3&Iӓ$H|V!/YH=hĊ4Hs~IPjPcRM$zd't)Ooܑޭ\JeLRLрڦvBb rroza1,"{tτd<~%gz&[E8hc7̬T^/-\yT;F͊\ͽꌿ̅ފ>Kn1KERH5G닠J ==7f:M$.R( qA(f6;KqN9iE)!m8Bɻ%d\'1Ғi$+P)єeR +ƒ|Roa܀04Dosx?%<8CfDP.RnBG'Cvk$ưy+gs]yy_`q+RưwqM+EMWT/lJq@_5!p tpo9oc;\*s|ܩ_Dg/= +\9e19sװ(BQit!ðgptkIj +Ra`T<ߠH#٢s'BQwK<yu(,@E'LLrHnjN5EKD0n'_?WuV0\7fJ|AU-H=WSddP m/ŤzgӃy<RfowBU@VXxVM)+'˓(F;,Ȣ X@o m+CA}?uvT) ά +2H<iv '^ 0-~Ew0Z^s%㶡>@ڨwx%-}ϱ2s6+e>ns+ cl~j^`y6FnH8y&j=2H#mRՖJH!?ϨfyvnycJ{Ӡǜ +Esi* Ԃtn7K<!u̵4|d7AFegtᝎR/,Uq'(ڜ8O1d͕Z)a)#$ȩi!.=BJW +"i%9$K4KV9Z#Nў̰ +ؽ, X*)$j aƱ^9/%Nտm@TȹbsNJ>/B\b_g yM-YKJX +.j%R$ĝá +?nuu焆pER%mpOxn|@#
ox9x;֎fz-9W1@b3fsɤ/EC1=,Œe-w_SA5(3vx~7<szQO# +Y$~11DܘYJ;^XS
7f{vVf>HY#Ֆn!f+AMuP9>0EM&u'z):nHQ>|˔KQ$
jڸ,KA!Cܵc\jlwSک5ٗۡ[
a_#r ِ1e +viE-S"6`c |(9Nf( CnUs]AwW9*vhRܤ~Wg:
eoR
X'j+ +4$]F6m_Aymag('%2oQ1Tr;sXM}{GPVo$a7=KU0=8<tpgéV:UKTUQIbAᓵikSXps;gBL[+twYV2kX/,ĦH̟e
g>#>R+#|%%eK\-ф44.+Ƙmr +̼H@;8 @Ytb
k
=}]SVvAau>9^59u게]'l խa*ϭG?8%z1 @k8G)9 +THdSͶɰMpأ3MYz!#:x*'{6kn}@Z~ׂp)A{9=L +T3!NZ$MG=A+@(_vwv7\Wd4vw(l8GpR}J9ąĉ<q]zk8Ü`XTGEx.g, 2U
s@ag;{ +%#ۦ>Qý0|G]I5\y7)[*h駻k>*%`O̭+I
_!0 +&}%hJ%tTu~G>-V|)Mz|WJP} +2i2K'[iXNۋgЧJ1p8wDu%0aaX(q';1R{ +p O2rDr6!;XN~93d1&c3~ŪsOPi Vnp3D͓DE(GpN,8f<oDGyy K,A|e'-^-0E +Wc'*o7z%\ <rWh+t4PnsT+-OMhqe7OSգ\98bV{sҸ; y\J$u9%I_Kh +p9WyพюVΓcL~չ?ۚ1 1%kv8,ڔֱu hmo\;zةh%ߛԙN:D8Q(SIe1 s.c=&m3O)ub/wXs32V$b~z5M
*\Eؓ9LZڶS3dGMYq5іܽs6 LƦz#=8+Pd>k/Vn,!iׄP!>m3Ya"-Nҍ-@`b,$3ִJCN+R"bEqNtVrSiͱZ+ 5wvVe;Q + OK6:h9otMJ}8[&oSp~QT.*QʓW]5 +c:n._\\F+?vRPH˫K7<I|2FF)!bk
uhnrRAo<R}#ݷ7£w-A~-7:-S[eCj1]$,_ I#\Ȩ +,92z. +rO\v3sz迗ٝٓT7m~R_wjyU +H9CY5xݍD)b2ͮ
!41r:b\iIF@,WG6>xeWŕD
CN
+(]JjPPP +*Eό
ܟnLrpz{ZUԆc9=bvnFXLxb:gڛ]^(s)e\pKsB,J'8g`Anjҳ$]k9[<f
{bo?NZU܌Љf(.` +[d
}>|̒M~ֿѹk-|E16!31̆<Ұ(WfsJ *f!3YGM̥3@?Od377mF*/{ +JfIxUG=;{ +=Rw4® +XDSt=6 +մ1&&ubƕl/ڱ
1g*[Pc/b͇_&2#Nblt.rѠ\;ϐX&*3Y6^akO9[8Iɋ41,EZ.q Ŵ (f.ysgjKOSUU͞@&(1O:LfPEh9J!y0(ܱC]O@/ݽlΉHNt&hH $?+P~Gq>>!Jr4m;>ox!?%D=&O=!**y87e(-]qT) |[yͮ=n: +4X"{$ +s +GfdPUV>Ek0AoQ
GK4"usL=[!~,S[J1c~3N~Q +t|PmwSlD!>H7{|x7[?A<mX|G*콝 ,Mq ţ~̧uq#ݝʌ\Vh8*`#fVh[t[/&˰cQ + +xOO/N)!?脿;+B eh`윧F)ty ƺsZNTڼE$ɗ$d;LIly}3\vV{% |`/4'5,p~"Ie +Hgi%l|o*p"yd٢`4|?KD`(r`и^F[B;XT<b=y04fI(QuAnzyT`1b֯071IԚw?m~nW D1^{g0/L4 +,52;) +^B=^:<5:H}JbEgyV`;,Wճa,ɵ +4L͕-niTT!M247Q|?Dä/xvqG +|ʢ@a.Ves$7^0rbdyI7{4<9ẃ-7+-%q<{YЯ8_J<@j&~ +Ht!2LE@F(jY6uUMu[f2MJ\rH3x|c-69{Ja1bhNy*]L+Fݽ"L&xW{FۖzwRVͲ텦ɼ̯Msq +=lK*k0$\_ys< Fy|n2zm=G%`;^,V%ѵMÊ6ig7T5ʗ<xNZ&e@Q`77zVt`!c¬a?0ܯy[j(>< +wU&+{Eʉq>ԋ^$6n5Pk{)
Md5(-͊=
'}ҜFρ1u卵Kc<AO$ݨ"-!
4h~Z:t ]EnS(Z૾~i+ ^3.<DU!ϗ@(|J'dj`ͺAᶚżIJb'YZM + B)Hpv +f|Qά'W >& +Yw`jUAM+ʱB;h̫0d$y%4;.33 Qʻ<9 xO +_($165UqQ?L)Y낧qDQ2ZI@_&. Ty
OD!'.e-F*4g(Gw>* +9mOqfhodsWZ#ן/uK;cK"8V}ύr1$pݤ~-N|J,wcb,)ũ/0(\LZZ=d'c+G8S? '4A__
eT:s10/vCL»Y7xOm~,ep1ޣƔDߨ8R^3#NB^>+Rn-##' +i +'PlM}(cS4S/dt}m|Ʌ +<CpUgM{ +c:Mc
nFUح9Z
GiU([u +endstream +endobj +1647 0 obj << +/Type /FontDescriptor +/FontName /VACROR+NimbusRomNo9L-Medi +/Flags 4 +/FontBBox [-168 -341 1000 960] +/Ascent 690 +/CapHeight 690 +/Descent -209 +/ItalicAngle 0 +/StemV 140 +/XHeight 461 +/CharSet (/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/a/asterisk/b/bracketleft/bracketright/c/colon/comma/d/e/eight/endash/equal/exclam/f/fi/five/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/period/q/question/r/s/seven/six/slash/t/three/two/u/underscore/v/w/x/y/zero) +/FontFile 1646 0 R +>> endobj +1648 0 obj << +/Length1 1630 +/Length2 19832 +/Length3 0 +/Length 20678 +/Filter /FlateDecode +>> +stream +xڬctfm&۶m۶m'OlvRmQmzwt?kꚸ=ɉTL%]x +r*nD0Ʈ +8x3spѳp1}faߤƮ +H(~r3gk\/p0iM)}@uLH^Fo)"p-!.m^491qC;KRNfr7!c.*s%+0вIUD8l<KI +wA phqGCFK&S:-&"ޟ:1XM/v &{rӛ 1оK=Kn>isz͙39V%&6cu`j=ʭ2j6Or9ʓr䚱}fZRMrbvHvAa.HO!h̏EJ@JDmZHb%/$Ѭ +ѣ{@v!8/i9{OJg>'
m8Py/{M
pthڰx^^~I?EHV0jQ7K痑 ߠ+%᳹ɤ~ _.MlޜSp ]9OMB@r4$l7rTɼeP$Ϛd|m6ƇώD~њ@$@uHx=p<a~A;%o7~%
HZL};xʘ0ፀ! "BC~#v)
?֩QY4|fR)3gm,&'6i(K`!Jե $g%g|Qd- 0̮f:DD>?q|2A#uhH bHFM}dlȿNh;4HgWzX t`pz>SO!:艘̺k;\=c骏!91ķ8Dž8%w +Y7
gt,Iw}AHAثj +,߮s穒}U2"&G"%áQ&4 +i>βFL Vn@%opl8Ds
~[Z]:C0FK8}4(Pॴa +5bZIOzvk#KRA+7 +\a +xo+gX"5b +p}̼d@ψkmv+А.tKm +]G^x;nn4~f'aIт*2\mg8Dixv5 +Kgk(fq1rs@rJj氷b*S`$or@2^{X32燄DdA~@'4 +m1ҔPZT"Uᔋ\we.TExЂ-97zT!̧^g<X-rܵe64iP|.IT +@,#O³#DL$MD#{6XFa9eu'X$G"sIV"];-b%-bq]ת\Ntݢ: +.=-: p}aOKHK3ĹxJ|^JN9٪&+ғufR97<agRU9ˀd0MT]81':9皂Y2wMiβҌô:AM, .p~W %r5D|ߣ|$[63#At;R, +]<boǸ4dl8k憽Z*dՎd,)eHҙ,)ifp ?<<1Xzo*)r'XqP|si3N5xnr*gB[fVH6q{-bhs[ _7VA;nFGkXXG0ab_+ٺ1 +9#AM"ZEDȐ<JXf<Fd^d/hl b\gPE?\~I~Td2<k_?<UZ5`W/тiT1\aG7M~1L?%]9;].HnQ^Z6@f1eehUM/"L$ASg;+leplKϤVb7R/oCEzklRRޚP9xi7I]}ccFfgR`x%
'sBUK!"Ĺ)&'m!C٤$46{
nkRŻЦ<|ڿa_ Wء.XVxX B3q2zҎ>ާ?p5.VΈKwzᰊdѓHE%v*3,E{۷~>7pAԦyP.-O"+鹶mX-+HU\0jM`݊x^M֛p~v?2%eSgÝ
>O@¼)9A4My9b.ັxX1#sD~i[?UEGvOIy-M +&Hרk[j<t)Ѥ>e'<M|!](&CeCI +OAxfdyy`Qcghy425㰷z
mC>w립clz^-JzaX&6{ +lgfJ4PvRZ9[K&39)2hA?Ȗik%1J:;k.397[8K{#1bAƻ2ܔjKH>M``*Xa'J(kL=|LI0dGIt+D|P| +Ewj,F;U@R +Il4wذmi vCgpbMPm!`$uJҦ;I*izt'<z/1aʙP +/#ZKi/,S0TQ(fT<|ak1q`{g4l;'A +{8R81d!$y[qfY$`.аzd
r?CM,~(rMCmR%BXU@
A^hDLS}A{>)rach6_!SكIʐxX[PbG&_%Oӧi;v(>'(cM$G +Squr{6J7uYҍaKWn5Y\e9^!*2kQ(pLD|=>),)J.I
>V~%I/2qpiW6,ca
ǣʤ CpD<Aa:,Ls.nbo~.C!HQ57LbT¨~S-0Ճ3?h$&b7t΄T(ZΚI3+rI܉K-eSܘa2i < +>C)+Ylvn
ac +ō)ad-"۴#G3zՖ@
\^_
]0N\gžm/ҦѢ4%4(=+M!c+ĝ(^CT[]pΏp
_S7;# +lu HPaW]e˵dl C]H:)ľk#cc,~W[Ka%fZFS5el +)&a5g9١δ1!ԭpUA"1w,R +V^m47jO)ؾd:QXXKM>Cƽڒ_Z[a[O1f8R]'{ rhւ@ +0oJmb%26L6q=pLƍPIrc%"I~:!]: eLâMW~p;?x:s`w2yDB +}-u1$U͏jE SfڶUi^5
˹dЗ# +u}Py`D vMb/썙3Җ桅9F3)/~7Y-[WO=K0- +ߤ/.@Sƨo)a]FjFU=-m%@`C7eVΌQv +(\n x$gQ?{B40xH,(g(]
H_-w\lxdoQx|8;5Zi?X ʾ`ňk<~ISHܼjoost\,T*%2ɇqHELNx6q#.5# +UX./UC!xr6K_58B;p_)UzGܶ=xJ]#z.<Y,hYdJr^y=:vrb5rS}̥ـ{_,q/c +y̥dV'|#8x}s-l}W=n[|rY2#fc'y,[ܕ<zjHnqR0T>2*;-n*x.|y|h.4#rgtjKШ_ed|kk3?IX%G'l}\;dg+BzA;pȄFu]s(MrI{.T3"VUHx]&kT7M+r-֔ iB )U3-HAcUtq
#;<^mDcE.D]tj"*Um+F!{֦f7d^cFqA:䡋5N`SfP}qʒe_2Ue-n ++R孨zܘl;av|mK+](]2]?bOKwmhL [<hD3D{;tq?"'oFNw +jfxŬcmv@;y6oL?<_!w9k9H4%{:ԫ8U?lhqK(C6~ϐ"uZ؋]jYUo +ZvD1jsǠ@;Ux +Yr?LI-3oi:"
N*+Sz ~_c?L8t/}HN[Jj+2k,i+2Res{#x[,Q=apA6´FCE=yՀ8i5V( JEGEi_X؉nq +P&4GEZ| 0Xv +fMTsQ#mQp0*,CNhB)gMUțo2"B
bl{GnHxY$OwOe'xg£G?~;mEm) +UhE׃O_`u[j9ߤo+B)Sp7UB} Rp :r(VѣZN/Hy9r7\g]oHa95 bY[h"mx,|ᑼ +)Kq<әMTN돣KAfrV3PT}m88A达LtudMObrхSknfyON[;
?ljj9ysD$;rX<)i}etһ0NyP
z6YDRTMDu&6#[HT'%xik+̨%"=V<$-IL _p~~/RF}f[s3@ﴦhJCZ +S$$|~]"x!xPC̫ECǁS=\xzTHmIjUQT)Iq +L<]|ӸJp),0tGSQВ2٫.x +ݷ~|zXۑqvhA)!y!>M+b@ +ޝ%009R^XW(#ћ;^_ݓ.L8cs|0rR9D-5߄抌B \?q>!(lxNp;(=d!XY$܉Р?R5GPƳEYX{c +o^ P`BO<$T1jr`PgT8zMssM)ݱF_oi=NjV1Ca??iPX_:TLNϑ5IGbsԔrbΎ[ +Ú
-6?=݀A~ӰTY56Wq:<LINqhLu u:Ϟl S܈)QWg?pܶl;Bi->g,^FUw;q]㽴j15zmC,7Rp{uaP" +!5oFnh-bRfRb`m6:k@W/ugI?q|iv8~JT"?v}D|Xh[(h0-'y
(=L!Gm]Nac7*Qyy;ffUi@ }A JEā1f +pΝ͵{ͬ,Z\}x儫M[i]Ʋ
?d i]_6,P>}oFɪ2Vzse,$ɀ=M1ImI $:`u*YG(d:@NB?(Uuۢ[NL~T0R!Qt0|;{2?(&UI̼ s SrJP X@.У +RG7K@8M70*=A;v'*FV2~'ѣ<$S]B/QW5 +9{ +ݩ6 b!f'@5I$,VZH80ˢDUsMjh1r^d9jp}^QIHR˙мoM3syYfRq A DpRҙfsNB/_B;s+x,iZRPiǛn[5T*@}?bP卛䂪}u8ُ٤ƄA+梦~gZlBj~mfWY NFpI#e#0dg&i23"#3[;A
VpZqiT.t'~I)'h՟_vbI%Po`&m}8HґK,5wş_ȪY'ٜNUBWjKwR5B5l~X}cvMtj!i%OpY7@Dyy?av.W0 DٽS%{ڤb?%;e| 4Z' +?(
s]+ڳ<\OWZ@.DYs) /7vxCgI1nW
"[[li{\-m( +|"g=늸"WhAR֊Yz]nɚQXjl&۪1CY8u%Y0]_X3l#c^W}}<սՍa99FAo/我^I>Ԟ$
A, 샿j"+X=3VN譆 <4RlsY5+VY+ +~Ơ{;Ow.y0\/o+|qCUkAodљB p#x +5=˜Ũ EG +CCޢ%q&؉
ug'f^ĄiigLG+ޔah-YAO0~|#[яE
$
Pl 8'2͊aʰ"hGiJR
v"2ؔ]1gϐᤏ\`<DclQjc $p BH!'cޟ+3 X;ށl)mҟU]B^ਕESwD;Օ㝡F%Ƣ-ew|\.a`8sKc\MoTJ@ءRVy˗ FA?s{b3t$m<\JKR~ߩfE9AuX[ +yf9z^;͎Hr)=2=y,JǐؤHun$M +^4,=^JGP9_^r0C랺7w5kؗb@|qQWDYxB"գn\8?Q`()M jc(D +NA+"z)${!%6@B_EƔEnTdbėRwLqWP@w +!wF.K+]/SA?jv7C`iF?/BMwO&36jl+yVAsj`Ҁac.!QB; }Wj9+]F3+h#XpJxh[y[ +D(Fe(5nGTƑD3̻n +`dUU˔&y f%St)_%n`
2_u9J#$Fi +vl@SLVXsbwvz3PzN9;^!އ:E~\w]
+Gy6"1@aRWO299v'yPϓvilqͽ"Juɰ0CG~+JR)bҹ,kTȇ}~aZ*Z3G`<k}n_\p: +mR)@H<'<:[8൴V| +Q'6Q]B&܁GUxHF@pHtg(d(ɱ2a۲o +nYfZnM1E@(ʀqɋGh7ڟ7>cQ8Lƍ"؏}\蚏Zr8y8) +rC +b^ZZUq`u\SUhsɲ Q[jz'q +Jxcmޞ;ɜPQ{t|1?I^ΈlEu%[>'$wl=;S]4b;ǫs2hsUpt*Xz8`c #t?YY3ߙ7&8bz")䲵1<ȋ? +.ҲfBt$: +:ʜ6!L
ջ!E}+'=5H9p-~YݐqXx^bhΩ~pM=8vYX|BI[$wґLaȶU!I5ŚE%)vhwt3<W;qYRPo:V +p$d((}G]O;%e<z +^'uH--IUɛ*xHA1GA8~#'NFۤ +UZ8ݏïi3|p6Y5, q\~r\kZs'0<SPD[9N`i$NDZQ;)1 éB;t֣-p
uEז&FR⋟oD $8;7sʿw`lq8{}.BUlgtCƐe*mnа{;AҀ%uIڈtFWi]gϷh;K":Ʒ߰ퟄ6{>PRw{=,M(w\h4Wߴ.N(['S_9fkvmNZ4;NWzj|dz[[?f^}DYW>)9E#oscɔGDSh(_O>I<'J.~aY3 +څotcAjDuBd߆ +9 +\A]2 +Nݔ̈́1PMt|nL6QfmMdN
b;<ڗ})Njc<T*_h+68u=!N^u\匼iSa$q +:UDNRE$W-?]Q%l9LVJ=&)(*O}7F%muܥ%6RN~A,. k23ȇ[0 +TUncP1g\oD}v2f~pJ7 @Ӈd3ȓ$mT_Q&LRsWzO˷ 7+EFya>Ǹ}dqGxS3@ZoBn;\:HW5y+A
YsSQFzJl_5+}$<TMR]*G-n=iym+
7cO_$<`[ZbGNEG!,O;} B?(-ZjW(Y//2F)pk;ehj'CX2Ύ!BW[Xnh8)-hArM(?RV_g8_5&i>Lkyh g~N@)zRTܐGron̍xf<"z7/^ޫ!RTm7q+VDTN7kY0;K5I1P.f4JP!J'p+7'z@+uO+6 +tJDSc$*<=vh9ʼn(ѷUP\ `ͽd +endstream +endobj +1649 0 obj << +/Type /FontDescriptor +/FontName /OQRDJH+NimbusRomNo9L-Regu +/Flags 4 +/FontBBox [-168 -281 1000 924] +/Ascent 678 +/CapHeight 651 +/Descent -216 +/ItalicAngle 0 +/StemV 85 +/XHeight 450 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/adieresis/asterisk/at/b/braceleft/braceright/bracketleft/bracketright/c/colon/comma/d/dollar/e/eight/emdash/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/macron/n/nine/numbersign/o/one/p/parenleft/parenright/period/q/question/quotedblleft/quotedblright/quoteleft/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/udieresis/underscore/v/w/x/y/z/zero) +/FontFile 1648 0 R +>> endobj +1650 0 obj << +/Length1 1647 +/Length2 11597 +/Length3 0 +/Length 12449 +/Filter /FlateDecode +>> +stream +xڭxeXݒ-`.!8whwww' +PƉ 6;*Z|eR + jk +.?^D衖/4փb}ݕ]^vDn1\Py>B>)MMb6,=kjDSj3'& +#e.>D2[t%m(Gי7ǃy[BXE +!8fhK%bJuОbm۪ +2R]1(!K1*y, 6dTVG\%Ǖ^CGsi^%U~MN|vqF=ur]3snoBG +% +gX pF0um\Kj"|m!n3db@-_8(_J}Hb#=Ϣi|GUO#*Gn
<;vb1;$zeXW<&]?Q?l%S +m$]8P"a{ְI4EHue*=Utk:rFEFQzu!!eZ
'EUS+C9Xϳ3%וgv2z16Pa9`_j +f 11.)!3巫B?F9*ۈ۠h`zi/ ++v3T
9^?3o1!2g +]֡;Sm/'Z\(iG- +!cZB2i햕qd?3vhqm.j|(@4y)gV<,;aj<y4!]CHL\'Hˤ#d#j^s8A?9VmB2i'hc=e +j,J+!Z2;K<:^Le{J&\y`ICNuQ? +(V #+Q78q~!_L"ڔ;qҌ<GBw
DĬy1OYrV^;#E/KV$y܌-u;|m~iE +ryZ=:6]*zhby.J^Bi! +>NDZǖkIXU@/mԫaiOi}OpXp.'JB7y22@N5o*d9+3Â%cc]Zk[p fKR;ǯLqK&$F#(Ip -QE&NO`5qq.UBa\[ƓO+9FDotBp,ӘZ#Ι|W!_wu/yغBO}s +Kk +\ؓCd>*m)"ޟ{nYhf6v+N$:8{ԡ\U
q,R[b/;hoN_+E)ȐZ;Sm*ZqY?O:KaThm}@k{qh0^qsdD_I"'r?EU6[`qѦBxAKj67;>HXyB&3p]P"a-XK8OXG +WZS-VSvO[cQVgߝ4_¢<C6B<Dnmf`-:X +[Y -ֻk[u#<~6S/uRx"z;8zhM`bVa +If="x:{ˀJQ"zĆs>J; +>A7cG-,}h#G; с
2KJڅ$Yf% |&0)È9|קG{5W1"q
G!9u>J9* 8L٦:Ƀ&wC=z&99iRbP6o.&_̞_ۆz8{@y\ޥ6v=a_eD +I-y$!A0hWK;,Hj.
WI>-@$CHA\,uyKaXFEo'tk4MUЈQn@\<u_k&Bil7%Պ\ +?X#_+TLVFpsO^#50Q3Od5PѾnKd|nvϰI{W>la<swVa vKdIys\Fԥ\X/|O8tZR)eC,G2V"S}0/n~qlO&s[rb*
AkEleTϗm`dDc6EcW]Ts'(Rp
S@cVǥl/$+åT}:k~H{[<}Pӿ1kL6)!c?8";>]LNYyɫaڐezvs9X1YWƚU큋6c c3M̧WM
_ =6A +r3RqAVGNz
24( _] &x_lY(+Sϑ0P`ް@H
.юLg|pcVJqLhj6:L^bgBK0>X5 +Ǘ!6y!Yy0f9`hw +9c
}19Оz@]343ɿf/Gѻ^p[[Oێd2j)U|%rU@owTzM_9ܭ476.^`h9AQvlzyS.V +GA(PD$X(o_~Ӄ [[ +M xHnS.7;<;ěKꯕKhoLƻjkB{Wz'+l|xH}Fh|q%N]#eCyF@^8ˋg/N;Xl9sP; /C[}V2\bbS/: +f9S;jW~wLLM6攤r!4^P]sJ"J|^K +}16+LƜVŊ;4v/1[¶Jh݅m.=H1% eح`w`'w;&8cgz4Ouj!W̲NnA<VOtqehT1-˙ MXjz;xb#ҋ$ wmx!RS
v i&\4\Iܖ~T*q`GLܸMAap6{IwҚ6b<S +--"U/Q3I]tsSзS:j!Bh_ǓK-2zR|0qMHOUg8WW" +x +A s3={ʾ"!g#m?'T0 mfU(-['mIӗ\J)jM̊ +H/ +sX|'1N/M5:9_Ry08)jXL/զ ,VkҎ&$9 +z&o,_&Wúhe:m,g| +dbfyb#X25vhjeb!|ܿwXZ7)k.<DU|5Ɯ_V>7xxveDOzwZk +Y˫"v%,9,:gC'
g×
bFm@g$')MLqi
u>4c"U%< O3&kkA\oªѳI%n
XHAJDn3H'_Ly
(
̣kTĔBx^XT#%Vo"'([x:'iV=
FE,rֳ-j?YH,Xo?{BL)h-%֟ꗔ$Y%AGՒX +\d=-,GBfsDQL{r&spQUvֽjRVz}Mkpt[ўq:Oqr1rVD0uV#}쮈8X64_rHܞLa!(EG鉎9[?-[X#gDAFr%)Ǐn6<\levt|M4Wd-lXI7TytY֢.d/.U,qa?E? +|OV SlCN"a*X%(kk0 +7Ƒ8DdnsLgIs"GT$<GCkz9SKWfnn>8qraNsnkǠqeFtjEɩA˕EGPš+Gus?=SkR$m@h9 +ś +?=T!H6<egEs0z95(kDl_z]A'Kr9Fr
fi>vE4FW2!I{*74Ot){V7hYlwEZm4hvO&&C]"݈, +SXJQt)gzIoMWviJ\Ho! UF 6d@DFu<fEKENɢ~v΄Qv0R0qB?(4T7}5+u Ҭسԫmr +1ߝl#
'^$!)6xvЂT5W:β*lGV/t[Ug!tȘ1ғvxU`"<d2Vi0r2jfMf0p6{4 +XOGIМ5!.9g~: ̵pK9N.V/A$r[pv9PqDPx:RCRNԮ#zgQ!^ez!<3gw(ϢwCWoȯ>]5aH *7Cb~&sDž5D
}w9frqrcțр! iՇ\MXa*Q`5M +ei}T/2ԱXApOX(&Kݱ9oF$%F?#jKt&#NFsCIۖbT@*5~Utۤv)>5&0ןEygٻy>Ap7;1"qW>!u4-λ
˩Ϸ +L +)4仠>$Cs^\B=c%3m.j՜錤q/OܕʌVzHgn5!Uácy<=i8+*C
uZuC;FZ#|:>V8d* {z҇aYBTRi_f<pm+AcxFP7x8CJpG/ +/G/dDbI-nG]}1ZҘR-s6Q(?Yi[/akѧ\&"z0vըvq$-(5B[sQmexb1T]h#(btJg*Gt{csهl,E'?ҮrMtg#Lo=oN)%(<1PeO~/ie|)VJ%"SSYo~W lSiӏMxio7>lq *Zȱ7 +oGaQrIS|TО +endstream +endobj +1651 0 obj << +/Type /FontDescriptor +/FontName /OVMDHY+NimbusRomNo9L-ReguItal +/Flags 4 +/FontBBox [-169 -270 1010 924] +/Ascent 669 +/CapHeight 669 +/Descent -193 +/ItalicAngle -15 +/StemV 78 +/XHeight 441 +/CharSet (/A/B/E/G/H/I/M/P/S/T/a/b/c/d/e/f/fi/fl/g/h/hyphen/i/j/k/l/m/n/o/p/q/r/s/slash/t/u/v/w/y) +/FontFile 1650 0 R +>> endobj +1627 0 obj << +/Type /Encoding +/Differences [2/fi/fl 33/exclam/quotedbl/numbersign/dollar 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 147/quotedblleft/quotedblright 150/endash/emdash 175/macron 228/adieresis 252/udieresis] +>> endobj +853 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /SYFPBV+CMMI10 +/FontDescriptor 1637 0 R +/FirstChar 60 +/LastChar 62 +/Widths 1629 0 R +>> endobj +845 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /CZKGAS+CMR10 +/FontDescriptor 1639 0 R +/FirstChar 40 +/LastChar 61 +/Widths 1630 0 R +>> endobj +800 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /ZBVKZB+CMSY10 +/FontDescriptor 1604 0 R +/FirstChar 13 +/LastChar 110 +/Widths 1632 0 R +>> endobj +1015 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /MKMAJJ+NimbusMonL-Bold +/FontDescriptor 1601 0 R +/FirstChar 33 +/LastChar 126 +/Widths 1628 0 R +/Encoding 1627 0 R +>> endobj +639 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /MFRSIF+NimbusMonL-Regu +/FontDescriptor 1598 0 R +/FirstChar 33 +/LastChar 126 +/Widths 1633 0 R +/Encoding 1627 0 R +>> endobj +582 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /VACROR+NimbusRomNo9L-Medi +/FontDescriptor 1647 0 R +/FirstChar 2 +/LastChar 150 +/Widths 1634 0 R +/Encoding 1627 0 R +>> endobj +533 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /OQRDJH+NimbusRomNo9L-Regu +/FontDescriptor 1649 0 R +/FirstChar 2 +/LastChar 252 +/Widths 1635 0 R +/Encoding 1627 0 R +>> endobj +803 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /OVMDHY+NimbusRomNo9L-ReguItal +/FontDescriptor 1651 0 R +/FirstChar 2 +/LastChar 121 +/Widths 1631 0 R +/Encoding 1627 0 R +>> endobj +534 0 obj << +/Type /Pages +/Count 6 +/Parent 1652 0 R +/Kids [526 0 R 579 0 R 636 0 R 677 0 R 691 0 R 710 0 R] +>> endobj +756 0 obj << +/Type /Pages +/Count 6 +/Parent 1652 0 R +/Kids [752 0 R 795 0 R 806 0 R 812 0 R 817 0 R 822 0 R] +>> endobj +846 0 obj << +/Type /Pages +/Count 6 +/Parent 1652 0 R +/Kids [836 0 R 848 0 R 891 0 R 942 0 R 952 0 R 963 0 R] +>> endobj +973 0 obj << +/Type /Pages +/Count 6 +/Parent 1652 0 R +/Kids [970 0 R 975 0 R 979 0 R 984 0 R 990 0 R 997 0 R] +>> endobj +1027 0 obj << +/Type /Pages +/Count 6 +/Parent 1652 0 R +/Kids [1024 0 R 1034 0 R 1044 0 R 1059 0 R 1074 0 R 1083 0 R] +>> endobj +1092 0 obj << +/Type /Pages +/Count 6 +/Parent 1652 0 R +/Kids [1089 0 R 1096 0 R 1106 0 R 1115 0 R 1119 0 R 1126 0 R] +>> endobj +1136 0 obj << +/Type /Pages +/Count 6 +/Parent 1653 0 R +/Kids [1133 0 R 1139 0 R 1148 0 R 1157 0 R 1161 0 R 1168 0 R] +>> endobj +1183 0 obj << +/Type /Pages +/Count 6 +/Parent 1653 0 R +/Kids [1180 0 R 1185 0 R 1192 0 R 1196 0 R 1201 0 R 1220 0 R] +>> endobj +1231 0 obj << +/Type /Pages +/Count 6 +/Parent 1653 0 R +/Kids [1226 0 R 1233 0 R 1238 0 R 1244 0 R 1255 0 R 1261 0 R] +>> endobj +1276 0 obj << +/Type /Pages +/Count 6 +/Parent 1653 0 R +/Kids [1270 0 R 1278 0 R 1287 0 R 1302 0 R 1330 0 R 1342 0 R] +>> endobj +1373 0 obj << +/Type /Pages +/Count 6 +/Parent 1653 0 R +/Kids [1369 0 R 1377 0 R 1384 0 R 1393 0 R 1403 0 R 1408 0 R] +>> endobj +1417 0 obj << +/Type /Pages +/Count 6 +/Parent 1653 0 R +/Kids [1413 0 R 1421 0 R 1425 0 R 1437 0 R 1460 0 R 1465 0 R] +>> endobj +1472 0 obj << +/Type /Pages +/Count 6 +/Parent 1654 0 R +/Kids [1469 0 R 1475 0 R 1479 0 R 1520 0 R 1524 0 R 1543 0 R] +>> endobj +1576 0 obj << +/Type /Pages +/Count 4 +/Parent 1654 0 R +/Kids [1572 0 R 1581 0 R 1588 0 R 1619 0 R] +>> endobj +1652 0 obj << +/Type /Pages +/Count 36 +/Parent 1655 0 R +/Kids [534 0 R 756 0 R 846 0 R 973 0 R 1027 0 R 1092 0 R] +>> endobj +1653 0 obj << +/Type /Pages +/Count 36 +/Parent 1655 0 R +/Kids [1136 0 R 1183 0 R 1231 0 R 1276 0 R 1373 0 R 1417 0 R] +>> endobj +1654 0 obj << +/Type /Pages +/Count 10 +/Parent 1655 0 R +/Kids [1472 0 R 1576 0 R] +>> endobj +1655 0 obj << +/Type /Pages +/Count 82 +/Kids [1652 0 R 1653 0 R 1654 0 R] +>> endobj +1656 0 obj << +/Type /Outlines +/First 3 0 R +/Last 523 0 R +/Count 21 +>> endobj +523 0 obj << +/Title 524 0 R +/A 521 0 R +/Parent 1656 0 R +/Prev 519 0 R +>> endobj +519 0 obj << +/Title 520 0 R +/A 517 0 R +/Parent 1656 0 R +/Prev 515 0 R +/Next 523 0 R +>> endobj +515 0 obj << +/Title 516 0 R +/A 513 0 R +/Parent 1656 0 R +/Prev 499 0 R +/Next 519 0 R +>> endobj +511 0 obj << +/Title 512 0 R +/A 509 0 R +/Parent 499 0 R +/Prev 507 0 R +>> endobj +507 0 obj << +/Title 508 0 R +/A 505 0 R +/Parent 499 0 R +/Prev 503 0 R +/Next 511 0 R +>> endobj +503 0 obj << +/Title 504 0 R +/A 501 0 R +/Parent 499 0 R +/Next 507 0 R +>> endobj +499 0 obj << +/Title 500 0 R +/A 497 0 R +/Parent 1656 0 R +/Prev 495 0 R +/Next 515 0 R +/First 503 0 R +/Last 511 0 R +/Count -3 +>> endobj +495 0 obj << +/Title 496 0 R +/A 493 0 R +/Parent 1656 0 R +/Prev 491 0 R +/Next 499 0 R +>> endobj +491 0 obj << +/Title 492 0 R +/A 489 0 R +/Parent 1656 0 R +/Prev 487 0 R +/Next 495 0 R +>> endobj +487 0 obj << +/Title 488 0 R +/A 485 0 R +/Parent 1656 0 R +/Prev 475 0 R +/Next 491 0 R +>> endobj +483 0 obj << +/Title 484 0 R +/A 481 0 R +/Parent 475 0 R +/Prev 479 0 R +>> endobj +479 0 obj << +/Title 480 0 R +/A 477 0 R +/Parent 475 0 R +/Next 483 0 R +>> endobj +475 0 obj << +/Title 476 0 R +/A 473 0 R +/Parent 1656 0 R +/Prev 423 0 R +/Next 487 0 R +/First 479 0 R +/Last 483 0 R +/Count -2 +>> endobj +471 0 obj << +/Title 472 0 R +/A 469 0 R +/Parent 423 0 R +/Prev 467 0 R +>> endobj +467 0 obj << +/Title 468 0 R +/A 465 0 R +/Parent 423 0 R +/Prev 459 0 R +/Next 471 0 R +>> endobj +463 0 obj << +/Title 464 0 R +/A 461 0 R +/Parent 459 0 R +>> endobj +459 0 obj << +/Title 460 0 R +/A 457 0 R +/Parent 423 0 R +/Prev 443 0 R +/Next 467 0 R +/First 463 0 R +/Last 463 0 R +/Count -1 +>> endobj +455 0 obj << +/Title 456 0 R +/A 453 0 R +/Parent 443 0 R +/Prev 451 0 R +>> endobj +451 0 obj << +/Title 452 0 R +/A 449 0 R +/Parent 443 0 R +/Prev 447 0 R +/Next 455 0 R +>> endobj +447 0 obj << +/Title 448 0 R +/A 445 0 R +/Parent 443 0 R +/Next 451 0 R +>> endobj +443 0 obj << +/Title 444 0 R +/A 441 0 R +/Parent 423 0 R +/Prev 431 0 R +/Next 459 0 R +/First 447 0 R +/Last 455 0 R +/Count -3 +>> endobj +439 0 obj << +/Title 440 0 R +/A 437 0 R +/Parent 431 0 R +/Prev 435 0 R +>> endobj +435 0 obj << +/Title 436 0 R +/A 433 0 R +/Parent 431 0 R +/Next 439 0 R +>> endobj +431 0 obj << +/Title 432 0 R +/A 429 0 R +/Parent 423 0 R +/Prev 427 0 R +/Next 443 0 R +/First 435 0 R +/Last 439 0 R +/Count -2 +>> endobj +427 0 obj << +/Title 428 0 R +/A 425 0 R +/Parent 423 0 R +/Next 431 0 R +>> endobj +423 0 obj << +/Title 424 0 R +/A 421 0 R +/Parent 1656 0 R +/Prev 379 0 R +/Next 475 0 R +/First 427 0 R +/Last 471 0 R +/Count -6 +>> endobj +419 0 obj << +/Title 420 0 R +/A 417 0 R +/Parent 379 0 R +/Prev 403 0 R +>> endobj +415 0 obj << +/Title 416 0 R +/A 413 0 R +/Parent 403 0 R +/Prev 411 0 R +>> endobj +411 0 obj << +/Title 412 0 R +/A 409 0 R +/Parent 403 0 R +/Prev 407 0 R +/Next 415 0 R +>> endobj +407 0 obj << +/Title 408 0 R +/A 405 0 R +/Parent 403 0 R +/Next 411 0 R +>> endobj +403 0 obj << +/Title 404 0 R +/A 401 0 R +/Parent 379 0 R +/Prev 399 0 R +/Next 419 0 R +/First 407 0 R +/Last 415 0 R +/Count -3 +>> endobj +399 0 obj << +/Title 400 0 R +/A 397 0 R +/Parent 379 0 R +/Prev 383 0 R +/Next 403 0 R +>> endobj +395 0 obj << +/Title 396 0 R +/A 393 0 R +/Parent 383 0 R +/Prev 391 0 R +>> endobj +391 0 obj << +/Title 392 0 R +/A 389 0 R +/Parent 383 0 R +/Prev 387 0 R +/Next 395 0 R +>> endobj +387 0 obj << +/Title 388 0 R +/A 385 0 R +/Parent 383 0 R +/Next 391 0 R +>> endobj +383 0 obj << +/Title 384 0 R +/A 381 0 R +/Parent 379 0 R +/Next 399 0 R +/First 387 0 R +/Last 395 0 R +/Count -3 +>> endobj +379 0 obj << +/Title 380 0 R +/A 377 0 R +/Parent 1656 0 R +/Prev 363 0 R +/Next 423 0 R +/First 383 0 R +/Last 419 0 R +/Count -4 +>> endobj +375 0 obj << +/Title 376 0 R +/A 373 0 R +/Parent 363 0 R +/Prev 371 0 R +>> endobj +371 0 obj << +/Title 372 0 R +/A 369 0 R +/Parent 363 0 R +/Prev 367 0 R +/Next 375 0 R +>> endobj +367 0 obj << +/Title 368 0 R +/A 365 0 R +/Parent 363 0 R +/Next 371 0 R +>> endobj +363 0 obj << +/Title 364 0 R +/A 361 0 R +/Parent 1656 0 R +/Prev 283 0 R +/Next 379 0 R +/First 367 0 R +/Last 375 0 R +/Count -3 +>> endobj +359 0 obj << +/Title 360 0 R +/A 357 0 R +/Parent 283 0 R +/Prev 287 0 R +>> endobj +355 0 obj << +/Title 356 0 R +/A 353 0 R +/Parent 287 0 R +/Prev 351 0 R +>> endobj +351 0 obj << +/Title 352 0 R +/A 349 0 R +/Parent 287 0 R +/Prev 347 0 R +/Next 355 0 R +>> endobj +347 0 obj << +/Title 348 0 R +/A 345 0 R +/Parent 287 0 R +/Prev 343 0 R +/Next 351 0 R +>> endobj +343 0 obj << +/Title 344 0 R +/A 341 0 R +/Parent 287 0 R +/Prev 339 0 R +/Next 347 0 R +>> endobj +339 0 obj << +/Title 340 0 R +/A 337 0 R +/Parent 287 0 R +/Prev 335 0 R +/Next 343 0 R +>> endobj +335 0 obj << +/Title 336 0 R +/A 333 0 R +/Parent 287 0 R +/Prev 331 0 R +/Next 339 0 R +>> endobj +331 0 obj << +/Title 332 0 R +/A 329 0 R +/Parent 287 0 R +/Prev 327 0 R +/Next 335 0 R +>> endobj +327 0 obj << +/Title 328 0 R +/A 325 0 R +/Parent 287 0 R +/Prev 323 0 R +/Next 331 0 R +>> endobj +323 0 obj << +/Title 324 0 R +/A 321 0 R +/Parent 287 0 R +/Prev 319 0 R +/Next 327 0 R +>> endobj +319 0 obj << +/Title 320 0 R +/A 317 0 R +/Parent 287 0 R +/Prev 315 0 R +/Next 323 0 R +>> endobj +315 0 obj << +/Title 316 0 R +/A 313 0 R +/Parent 287 0 R +/Prev 311 0 R +/Next 319 0 R +>> endobj +311 0 obj << +/Title 312 0 R +/A 309 0 R +/Parent 287 0 R +/Prev 307 0 R +/Next 315 0 R +>> endobj +307 0 obj << +/Title 308 0 R +/A 305 0 R +/Parent 287 0 R +/Prev 303 0 R +/Next 311 0 R +>> endobj +303 0 obj << +/Title 304 0 R +/A 301 0 R +/Parent 287 0 R +/Prev 299 0 R +/Next 307 0 R +>> endobj +299 0 obj << +/Title 300 0 R +/A 297 0 R +/Parent 287 0 R +/Prev 295 0 R +/Next 303 0 R +>> endobj +295 0 obj << +/Title 296 0 R +/A 293 0 R +/Parent 287 0 R +/Prev 291 0 R +/Next 299 0 R +>> endobj +291 0 obj << +/Title 292 0 R +/A 289 0 R +/Parent 287 0 R +/Next 295 0 R +>> endobj +287 0 obj << +/Title 288 0 R +/A 285 0 R +/Parent 283 0 R +/Next 359 0 R +/First 291 0 R +/Last 355 0 R +/Count -17 +>> endobj +283 0 obj << +/Title 284 0 R +/A 281 0 R +/Parent 1656 0 R +/Prev 243 0 R +/Next 363 0 R +/First 287 0 R +/Last 359 0 R +/Count -2 +>> endobj +279 0 obj << +/Title 280 0 R +/A 277 0 R +/Parent 251 0 R +/Prev 275 0 R +>> endobj +275 0 obj << +/Title 276 0 R +/A 273 0 R +/Parent 251 0 R +/Prev 271 0 R +/Next 279 0 R +>> endobj +271 0 obj << +/Title 272 0 R +/A 269 0 R +/Parent 251 0 R +/Prev 267 0 R +/Next 275 0 R +>> endobj +267 0 obj << +/Title 268 0 R +/A 265 0 R +/Parent 251 0 R +/Prev 263 0 R +/Next 271 0 R +>> endobj +263 0 obj << +/Title 264 0 R +/A 261 0 R +/Parent 251 0 R +/Prev 259 0 R +/Next 267 0 R +>> endobj +259 0 obj << +/Title 260 0 R +/A 257 0 R +/Parent 251 0 R +/Prev 255 0 R +/Next 263 0 R +>> endobj +255 0 obj << +/Title 256 0 R +/A 253 0 R +/Parent 251 0 R +/Next 259 0 R +>> endobj +251 0 obj << +/Title 252 0 R +/A 249 0 R +/Parent 243 0 R +/Prev 247 0 R +/First 255 0 R +/Last 279 0 R +/Count -7 +>> endobj +247 0 obj << +/Title 248 0 R +/A 245 0 R +/Parent 243 0 R +/Next 251 0 R +>> endobj +243 0 obj << +/Title 244 0 R +/A 241 0 R +/Parent 1656 0 R +/Prev 215 0 R +/Next 283 0 R +/First 247 0 R +/Last 251 0 R +/Count -2 +>> endobj +239 0 obj << +/Title 240 0 R +/A 237 0 R +/Parent 215 0 R +/Prev 227 0 R +>> endobj +235 0 obj << +/Title 236 0 R +/A 233 0 R +/Parent 227 0 R +/Prev 231 0 R +>> endobj +231 0 obj << +/Title 232 0 R +/A 229 0 R +/Parent 227 0 R +/Next 235 0 R +>> endobj +227 0 obj << +/Title 228 0 R +/A 225 0 R +/Parent 215 0 R +/Prev 223 0 R +/Next 239 0 R +/First 231 0 R +/Last 235 0 R +/Count -2 +>> endobj +223 0 obj << +/Title 224 0 R +/A 221 0 R +/Parent 215 0 R +/Prev 219 0 R +/Next 227 0 R +>> endobj +219 0 obj << +/Title 220 0 R +/A 217 0 R +/Parent 215 0 R +/Next 223 0 R +>> endobj +215 0 obj << +/Title 216 0 R +/A 213 0 R +/Parent 1656 0 R +/Prev 211 0 R +/Next 243 0 R +/First 219 0 R +/Last 239 0 R +/Count -4 +>> endobj +211 0 obj << +/Title 212 0 R +/A 209 0 R +/Parent 1656 0 R +/Prev 203 0 R +/Next 215 0 R +>> endobj +207 0 obj << +/Title 208 0 R +/A 205 0 R +/Parent 203 0 R +>> endobj +203 0 obj << +/Title 204 0 R +/A 201 0 R +/Parent 1656 0 R +/Prev 131 0 R +/Next 211 0 R +/First 207 0 R +/Last 207 0 R +/Count -1 +>> endobj +199 0 obj << +/Title 200 0 R +/A 197 0 R +/Parent 191 0 R +/Prev 195 0 R +>> endobj +195 0 obj << +/Title 196 0 R +/A 193 0 R +/Parent 191 0 R +/Next 199 0 R +>> endobj +191 0 obj << +/Title 192 0 R +/A 189 0 R +/Parent 131 0 R +/Prev 139 0 R +/First 195 0 R +/Last 199 0 R +/Count -2 +>> endobj +187 0 obj << +/Title 188 0 R +/A 185 0 R +/Parent 139 0 R +/Prev 183 0 R +>> endobj +183 0 obj << +/Title 184 0 R +/A 181 0 R +/Parent 139 0 R +/Prev 179 0 R +/Next 187 0 R +>> endobj +179 0 obj << +/Title 180 0 R +/A 177 0 R +/Parent 139 0 R +/Prev 175 0 R +/Next 183 0 R +>> endobj +175 0 obj << +/Title 176 0 R +/A 173 0 R +/Parent 139 0 R +/Prev 171 0 R +/Next 179 0 R +>> endobj +171 0 obj << +/Title 172 0 R +/A 169 0 R +/Parent 139 0 R +/Prev 167 0 R +/Next 175 0 R +>> endobj +167 0 obj << +/Title 168 0 R +/A 165 0 R +/Parent 139 0 R +/Prev 163 0 R +/Next 171 0 R +>> endobj +163 0 obj << +/Title 164 0 R +/A 161 0 R +/Parent 139 0 R +/Prev 159 0 R +/Next 167 0 R +>> endobj +159 0 obj << +/Title 160 0 R +/A 157 0 R +/Parent 139 0 R +/Prev 155 0 R +/Next 163 0 R +>> endobj +155 0 obj << +/Title 156 0 R +/A 153 0 R +/Parent 139 0 R +/Prev 151 0 R +/Next 159 0 R +>> endobj +151 0 obj << +/Title 152 0 R +/A 149 0 R +/Parent 139 0 R +/Prev 147 0 R +/Next 155 0 R +>> endobj +147 0 obj << +/Title 148 0 R +/A 145 0 R +/Parent 139 0 R +/Prev 143 0 R +/Next 151 0 R +>> endobj +143 0 obj << +/Title 144 0 R +/A 141 0 R +/Parent 139 0 R +/Next 147 0 R +>> endobj +139 0 obj << +/Title 140 0 R +/A 137 0 R +/Parent 131 0 R +/Prev 135 0 R +/Next 191 0 R +/First 143 0 R +/Last 187 0 R +/Count -12 +>> endobj +135 0 obj << +/Title 136 0 R +/A 133 0 R +/Parent 131 0 R +/Next 139 0 R +>> endobj +131 0 obj << +/Title 132 0 R +/A 129 0 R +/Parent 1656 0 R +/Prev 79 0 R +/Next 203 0 R +/First 135 0 R +/Last 191 0 R +/Count -3 +>> endobj +127 0 obj << +/Title 128 0 R +/A 125 0 R +/Parent 123 0 R +>> endobj +123 0 obj << +/Title 124 0 R +/A 121 0 R +/Parent 79 0 R +/Prev 119 0 R +/First 127 0 R +/Last 127 0 R +/Count -1 +>> endobj +119 0 obj << +/Title 120 0 R +/A 117 0 R +/Parent 79 0 R +/Prev 115 0 R +/Next 123 0 R +>> endobj +115 0 obj << +/Title 116 0 R +/A 113 0 R +/Parent 79 0 R +/Prev 95 0 R +/Next 119 0 R +>> endobj +111 0 obj << +/Title 112 0 R +/A 109 0 R +/Parent 95 0 R +/Prev 107 0 R +>> endobj +107 0 obj << +/Title 108 0 R +/A 105 0 R +/Parent 95 0 R +/Prev 103 0 R +/Next 111 0 R +>> endobj +103 0 obj << +/Title 104 0 R +/A 101 0 R +/Parent 95 0 R +/Prev 99 0 R +/Next 107 0 R +>> endobj +99 0 obj << +/Title 100 0 R +/A 97 0 R +/Parent 95 0 R +/Next 103 0 R +>> endobj +95 0 obj << +/Title 96 0 R +/A 93 0 R +/Parent 79 0 R +/Prev 91 0 R +/Next 115 0 R +/First 99 0 R +/Last 111 0 R +/Count -4 +>> endobj +91 0 obj << +/Title 92 0 R +/A 89 0 R +/Parent 79 0 R +/Prev 87 0 R +/Next 95 0 R +>> endobj +87 0 obj << +/Title 88 0 R +/A 85 0 R +/Parent 79 0 R +/Prev 83 0 R +/Next 91 0 R +>> endobj +83 0 obj << +/Title 84 0 R +/A 81 0 R +/Parent 79 0 R +/Next 87 0 R +>> endobj +79 0 obj << +/Title 80 0 R +/A 77 0 R +/Parent 1656 0 R +/Prev 35 0 R +/Next 131 0 R +/First 83 0 R +/Last 123 0 R +/Count -7 +>> endobj +75 0 obj << +/Title 76 0 R +/A 73 0 R +/Parent 35 0 R +/Prev 71 0 R +>> endobj +71 0 obj << +/Title 72 0 R +/A 69 0 R +/Parent 35 0 R +/Prev 67 0 R +/Next 75 0 R +>> endobj +67 0 obj << +/Title 68 0 R +/A 65 0 R +/Parent 35 0 R +/Prev 39 0 R +/Next 71 0 R +>> endobj +63 0 obj << +/Title 64 0 R +/A 61 0 R +/Parent 39 0 R +/Prev 59 0 R +>> endobj +59 0 obj << +/Title 60 0 R +/A 57 0 R +/Parent 39 0 R +/Prev 55 0 R +/Next 63 0 R +>> endobj +55 0 obj << +/Title 56 0 R +/A 53 0 R +/Parent 39 0 R +/Prev 51 0 R +/Next 59 0 R +>> endobj +51 0 obj << +/Title 52 0 R +/A 49 0 R +/Parent 39 0 R +/Prev 47 0 R +/Next 55 0 R +>> endobj +47 0 obj << +/Title 48 0 R +/A 45 0 R +/Parent 39 0 R +/Prev 43 0 R +/Next 51 0 R +>> endobj +43 0 obj << +/Title 44 0 R +/A 41 0 R +/Parent 39 0 R +/Next 47 0 R +>> endobj +39 0 obj << +/Title 40 0 R +/A 37 0 R +/Parent 35 0 R +/Next 67 0 R +/First 43 0 R +/Last 63 0 R +/Count -6 +>> endobj +35 0 obj << +/Title 36 0 R +/A 33 0 R +/Parent 1656 0 R +/Prev 19 0 R +/Next 79 0 R +/First 39 0 R +/Last 75 0 R +/Count -4 +>> endobj +31 0 obj << +/Title 32 0 R +/A 29 0 R +/Parent 19 0 R +/Prev 27 0 R +>> endobj +27 0 obj << +/Title 28 0 R +/A 25 0 R +/Parent 19 0 R +/Prev 23 0 R +/Next 31 0 R +>> endobj +23 0 obj << +/Title 24 0 R +/A 21 0 R +/Parent 19 0 R +/Next 27 0 R +>> endobj +19 0 obj << +/Title 20 0 R +/A 17 0 R +/Parent 1656 0 R +/Prev 3 0 R +/Next 35 0 R +/First 23 0 R +/Last 31 0 R +/Count -3 +>> endobj +15 0 obj << +/Title 16 0 R +/A 13 0 R +/Parent 3 0 R +/Prev 11 0 R +>> endobj +11 0 obj << +/Title 12 0 R +/A 9 0 R +/Parent 3 0 R +/Prev 7 0 R +/Next 15 0 R +>> endobj +7 0 obj << +/Title 8 0 R +/A 5 0 R +/Parent 3 0 R +/Next 11 0 R +>> endobj +3 0 obj << +/Title 4 0 R +/A 1 0 R +/Parent 1656 0 R +/Next 19 0 R +/First 7 0 R +/Last 15 0 R +/Count -3 +>> endobj +1657 0 obj << +/Names [(ALC@unique.1) 839 0 R (ALC@unique.10) 855 0 R (ALC@unique.100) 1306 0 R (ALC@unique.101) 1307 0 R (ALC@unique.102) 1308 0 R (ALC@unique.103) 1309 0 R] +/Limits [(ALC@unique.1) (ALC@unique.103)] +>> endobj +1658 0 obj << +/Names [(ALC@unique.104) 1310 0 R (ALC@unique.105) 1311 0 R (ALC@unique.106) 1312 0 R (ALC@unique.107) 1313 0 R (ALC@unique.108) 1314 0 R (ALC@unique.109) 1315 0 R] +/Limits [(ALC@unique.104) (ALC@unique.109)] +>> endobj +1659 0 obj << +/Names [(ALC@unique.11) 856 0 R (ALC@unique.110) 1316 0 R (ALC@unique.111) 1317 0 R (ALC@unique.112) 1318 0 R (ALC@unique.113) 1345 0 R (ALC@unique.114) 1346 0 R] +/Limits [(ALC@unique.11) (ALC@unique.114)] +>> endobj +1660 0 obj << +/Names [(ALC@unique.115) 1347 0 R (ALC@unique.116) 1348 0 R (ALC@unique.117) 1349 0 R (ALC@unique.118) 1350 0 R (ALC@unique.119) 1351 0 R (ALC@unique.12) 857 0 R] +/Limits [(ALC@unique.115) (ALC@unique.12)] +>> endobj +1661 0 obj << +/Names [(ALC@unique.120) 1352 0 R (ALC@unique.121) 1353 0 R (ALC@unique.122) 1354 0 R (ALC@unique.123) 1355 0 R (ALC@unique.124) 1356 0 R (ALC@unique.125) 1357 0 R] +/Limits [(ALC@unique.120) (ALC@unique.125)] +>> endobj +1662 0 obj << +/Names [(ALC@unique.126) 1358 0 R (ALC@unique.127) 1359 0 R (ALC@unique.128) 1360 0 R (ALC@unique.13) 858 0 R (ALC@unique.14) 859 0 R (ALC@unique.15) 860 0 R] +/Limits [(ALC@unique.126) (ALC@unique.15)] +>> endobj +1663 0 obj << +/Names [(ALC@unique.16) 861 0 R (ALC@unique.17) 862 0 R (ALC@unique.18) 863 0 R (ALC@unique.19) 864 0 R (ALC@unique.2) 840 0 R (ALC@unique.20) 865 0 R] +/Limits [(ALC@unique.16) (ALC@unique.20)] +>> endobj +1664 0 obj << +/Names [(ALC@unique.21) 866 0 R (ALC@unique.22) 867 0 R (ALC@unique.23) 868 0 R (ALC@unique.24) 869 0 R (ALC@unique.25) 870 0 R (ALC@unique.26) 871 0 R] +/Limits [(ALC@unique.21) (ALC@unique.26)] +>> endobj +1665 0 obj << +/Names [(ALC@unique.27) 872 0 R (ALC@unique.28) 873 0 R (ALC@unique.29) 874 0 R (ALC@unique.3) 841 0 R (ALC@unique.30) 875 0 R (ALC@unique.31) 876 0 R] +/Limits [(ALC@unique.27) (ALC@unique.31)] +>> endobj +1666 0 obj << +/Names [(ALC@unique.32) 877 0 R (ALC@unique.33) 878 0 R (ALC@unique.34) 879 0 R (ALC@unique.35) 880 0 R (ALC@unique.36) 881 0 R (ALC@unique.37) 882 0 R] +/Limits [(ALC@unique.32) (ALC@unique.37)] +>> endobj +1667 0 obj << +/Names [(ALC@unique.38) 883 0 R (ALC@unique.39) 884 0 R (ALC@unique.4) 842 0 R (ALC@unique.40) 885 0 R (ALC@unique.41) 886 0 R (ALC@unique.42) 887 0 R] +/Limits [(ALC@unique.38) (ALC@unique.42)] +>> endobj +1668 0 obj << +/Names [(ALC@unique.43) 888 0 R (ALC@unique.44) 889 0 R (ALC@unique.45) 894 0 R (ALC@unique.46) 895 0 R (ALC@unique.47) 896 0 R (ALC@unique.48) 897 0 R] +/Limits [(ALC@unique.43) (ALC@unique.48)] +>> endobj +1669 0 obj << +/Names [(ALC@unique.49) 898 0 R (ALC@unique.5) 843 0 R (ALC@unique.50) 899 0 R (ALC@unique.51) 900 0 R (ALC@unique.52) 901 0 R (ALC@unique.53) 902 0 R] +/Limits [(ALC@unique.49) (ALC@unique.53)] +>> endobj +1670 0 obj << +/Names [(ALC@unique.54) 903 0 R (ALC@unique.55) 904 0 R (ALC@unique.56) 905 0 R (ALC@unique.57) 906 0 R (ALC@unique.58) 907 0 R (ALC@unique.59) 908 0 R] +/Limits [(ALC@unique.54) (ALC@unique.59)] +>> endobj +1671 0 obj << +/Names [(ALC@unique.6) 844 0 R (ALC@unique.60) 909 0 R (ALC@unique.61) 910 0 R (ALC@unique.62) 911 0 R (ALC@unique.63) 912 0 R (ALC@unique.64) 913 0 R] +/Limits [(ALC@unique.6) (ALC@unique.64)] +>> endobj +1672 0 obj << +/Names [(ALC@unique.65) 914 0 R (ALC@unique.66) 915 0 R (ALC@unique.67) 916 0 R (ALC@unique.68) 917 0 R (ALC@unique.69) 918 0 R (ALC@unique.7) 851 0 R] +/Limits [(ALC@unique.65) (ALC@unique.7)] +>> endobj +1673 0 obj << +/Names [(ALC@unique.70) 919 0 R (ALC@unique.71) 920 0 R (ALC@unique.72) 921 0 R (ALC@unique.73) 922 0 R (ALC@unique.74) 923 0 R (ALC@unique.75) 924 0 R] +/Limits [(ALC@unique.70) (ALC@unique.75)] +>> endobj +1674 0 obj << +/Names [(ALC@unique.76) 925 0 R (ALC@unique.77) 926 0 R (ALC@unique.78) 927 0 R (ALC@unique.79) 928 0 R (ALC@unique.8) 852 0 R (ALC@unique.80) 929 0 R] +/Limits [(ALC@unique.76) (ALC@unique.80)] +>> endobj +1675 0 obj << +/Names [(ALC@unique.81) 930 0 R (ALC@unique.82) 931 0 R (ALC@unique.83) 932 0 R (ALC@unique.84) 1000 0 R (ALC@unique.85) 1001 0 R (ALC@unique.86) 1002 0 R] +/Limits [(ALC@unique.81) (ALC@unique.86)] +>> endobj +1676 0 obj << +/Names [(ALC@unique.87) 1003 0 R (ALC@unique.88) 1004 0 R (ALC@unique.89) 1005 0 R (ALC@unique.9) 854 0 R (ALC@unique.90) 1006 0 R (ALC@unique.91) 1007 0 R] +/Limits [(ALC@unique.87) (ALC@unique.91)] +>> endobj +1677 0 obj << +/Names [(ALC@unique.92) 1008 0 R (ALC@unique.93) 1009 0 R (ALC@unique.94) 1010 0 R (ALC@unique.95) 1011 0 R (ALC@unique.96) 1012 0 R (ALC@unique.97) 1013 0 R] +/Limits [(ALC@unique.92) (ALC@unique.97)] +>> endobj +1678 0 obj << +/Names [(ALC@unique.98) 1014 0 R (ALC@unique.99) 1305 0 R (Doc-Start) 532 0 R (Hfootnote.1) 815 0 R (Hfootnote.2) 1223 0 R (Hfootnote.3) 1224 0 R] +/Limits [(ALC@unique.98) (Hfootnote.3)] +>> endobj +1679 0 obj << +/Names [(Hfootnote.4) 1229 0 R (Hfootnote.5) 1230 0 R (Hfootnote.6) 1236 0 R (Hfootnote.7) 1047 0 R (Item.1) 1428 0 R (Item.10) 1443 0 R] +/Limits [(Hfootnote.4) (Item.10)] +>> endobj +1680 0 obj << +/Names [(Item.11) 1444 0 R (Item.12) 1445 0 R (Item.13) 1446 0 R (Item.14) 1447 0 R (Item.15) 1448 0 R (Item.16) 1449 0 R] +/Limits [(Item.11) (Item.16)] +>> endobj +1681 0 obj << +/Names [(Item.17) 1450 0 R (Item.18) 1451 0 R (Item.19) 1452 0 R (Item.2) 1429 0 R (Item.20) 1453 0 R (Item.21) 1454 0 R] +/Limits [(Item.17) (Item.21)] +>> endobj +1682 0 obj << +/Names [(Item.22) 1455 0 R (Item.23) 1456 0 R (Item.24) 1457 0 R (Item.3) 1430 0 R (Item.4) 1431 0 R (Item.5) 1432 0 R] +/Limits [(Item.22) (Item.5)] +>> endobj +1683 0 obj << +/Names [(Item.6) 1433 0 R (Item.7) 1440 0 R (Item.8) 1441 0 R (Item.9) 1442 0 R (algorithm.1) 695 0 R (algorithm.10) 704 0 R] +/Limits [(Item.6) (algorithm.10)] +>> endobj +1684 0 obj << +/Names [(algorithm.2) 696 0 R (algorithm.3) 697 0 R (algorithm.4) 698 0 R (algorithm.5) 699 0 R (algorithm.6) 700 0 R (algorithm.7) 701 0 R] +/Limits [(algorithm.2) (algorithm.7)] +>> endobj +1685 0 obj << +/Names [(algorithm.8) 702 0 R (algorithm.9) 703 0 R (appendix*.47) 1584 0 R (appendix.A) 490 0 R (appendix.B) 494 0 R (appendix.C) 498 0 R] +/Limits [(algorithm.8) (appendix.C)] +>> endobj +1686 0 obj << +/Names [(appendix.D) 514 0 R (appendix.E) 518 0 R (appendix.F) 522 0 R (chapter*.1) 581 0 R (chapter*.2) 694 0 R (chapter*.3) 713 0 R] +/Limits [(appendix.D) (chapter*.3)] +>> endobj +1687 0 obj << +/Names [(chapter*.4) 755 0 R (chapter.1) 2 0 R (chapter.10) 282 0 R (chapter.11) 362 0 R (chapter.12) 378 0 R (chapter.13) 422 0 R] +/Limits [(chapter*.4) (chapter.13)] +>> endobj +1688 0 obj << +/Names [(chapter.14) 474 0 R (chapter.15) 486 0 R (chapter.2) 18 0 R (chapter.3) 34 0 R (chapter.4) 78 0 R (chapter.5) 130 0 R] +/Limits [(chapter.14) (chapter.5)] +>> endobj +1689 0 obj << +/Names [(chapter.6) 202 0 R (chapter.7) 210 0 R (chapter.8) 214 0 R (chapter.9) 242 0 R (cite.Glep44) 955 0 R (listing.11.1) 714 0 R] +/Limits [(chapter.6) (listing.11.1)] +>> endobj +1690 0 obj << +/Names [(listing.12.1) 715 0 R (listing.12.2) 716 0 R (listing.C.1) 717 0 R (page.1) 531 0 R (page.10) 819 0 R (page.11) 824 0 R] +/Limits [(listing.12.1) (page.11)] +>> endobj +1691 0 obj << +/Names [(page.12) 838 0 R (page.13) 850 0 R (page.14) 893 0 R (page.15) 944 0 R (page.16) 954 0 R (page.17) 965 0 R] +/Limits [(page.12) (page.17)] +>> endobj +1692 0 obj << +/Names [(page.18) 972 0 R (page.19) 977 0 R (page.2) 638 0 R (page.20) 981 0 R (page.21) 986 0 R (page.22) 992 0 R] +/Limits [(page.18) (page.22)] +>> endobj +1693 0 obj << +/Names [(page.23) 999 0 R (page.24) 1026 0 R (page.25) 1036 0 R (page.26) 1046 0 R (page.27) 1061 0 R (page.28) 1076 0 R] +/Limits [(page.23) (page.28)] +>> endobj +1694 0 obj << +/Names [(page.29) 1085 0 R (page.3) 679 0 R (page.30) 1091 0 R (page.31) 1098 0 R (page.32) 1108 0 R (page.33) 1117 0 R] +/Limits [(page.29) (page.33)] +>> endobj +1695 0 obj << +/Names [(page.34) 1121 0 R (page.35) 1128 0 R (page.36) 1135 0 R (page.37) 1141 0 R (page.38) 1150 0 R (page.39) 1159 0 R] +/Limits [(page.34) (page.39)] +>> endobj +1696 0 obj << +/Names [(page.4) 693 0 R (page.40) 1163 0 R (page.41) 1170 0 R (page.42) 1182 0 R (page.43) 1187 0 R (page.44) 1194 0 R] +/Limits [(page.4) (page.44)] +>> endobj +1697 0 obj << +/Names [(page.45) 1198 0 R (page.46) 1203 0 R (page.47) 1222 0 R (page.48) 1228 0 R (page.49) 1235 0 R (page.5) 712 0 R] +/Limits [(page.45) (page.5)] +>> endobj +1698 0 obj << +/Names [(page.50) 1240 0 R (page.51) 1246 0 R (page.52) 1257 0 R (page.53) 1263 0 R (page.54) 1272 0 R (page.55) 1280 0 R] +/Limits [(page.50) (page.55)] +>> endobj +1699 0 obj << +/Names [(page.56) 1289 0 R (page.57) 1304 0 R (page.58) 1332 0 R (page.59) 1344 0 R (page.6) 754 0 R (page.60) 1371 0 R] +/Limits [(page.56) (page.60)] +>> endobj +1700 0 obj << +/Names [(page.61) 1379 0 R (page.62) 1386 0 R (page.63) 1395 0 R (page.64) 1405 0 R (page.65) 1410 0 R (page.66) 1415 0 R] +/Limits [(page.61) (page.66)] +>> endobj +1701 0 obj << +/Names [(page.67) 1423 0 R (page.68) 1427 0 R (page.69) 1439 0 R (page.7) 797 0 R (page.70) 1462 0 R (page.71) 1467 0 R] +/Limits [(page.67) (page.71)] +>> endobj +1702 0 obj << +/Names [(page.72) 1471 0 R (page.73) 1477 0 R (page.74) 1481 0 R (page.75) 1522 0 R (page.76) 1526 0 R (page.77) 1545 0 R] +/Limits [(page.72) (page.77)] +>> endobj +1703 0 obj << +/Names [(page.78) 1574 0 R (page.79) 1583 0 R (page.8) 808 0 R (page.80) 1590 0 R (page.81) 1621 0 R (page.9) 814 0 R] +/Limits [(page.78) (page.9)] +>> endobj +1704 0 obj << +/Names [(section*.10) 827 0 R (section*.11) 993 0 R (section*.12) 1037 0 R (section*.13) 1062 0 R (section*.14) 1086 0 R (section*.15) 1087 0 R] +/Limits [(section*.10) (section*.15)] +>> endobj +1705 0 obj << +/Names [(section*.16) 1109 0 R (section*.17) 1110 0 R (section*.18) 1038 0 R (section*.19) 1111 0 R (section*.20) 1112 0 R (section*.21) 1122 0 R] +/Limits [(section*.16) (section*.21)] +>> endobj +1706 0 obj << +/Names [(section*.22) 1264 0 R (section*.23) 1273 0 R (section*.24) 1274 0 R (section*.25) 1281 0 R (section*.26) 1282 0 R (section*.27) 1283 0 R] +/Limits [(section*.22) (section*.27)] +>> endobj +1707 0 obj << +/Names [(section*.28) 1290 0 R (section*.29) 1291 0 R (section*.30) 1292 0 R (section*.31) 1333 0 R (section*.32) 1372 0 R (section*.33) 1380 0 R] +/Limits [(section*.28) (section*.33)] +>> endobj +1708 0 obj << +/Names [(section*.34) 1387 0 R (section*.35) 1388 0 R (section*.36) 1396 0 R (section*.37) 1406 0 R (section*.38) 1411 0 R (section*.39) 1416 0 R] +/Limits [(section*.34) (section*.39)] +>> endobj +1709 0 obj << +/Names [(section*.40) 1482 0 R (section*.41) 1546 0 R (section*.42) 1547 0 R (section*.43) 1548 0 R (section*.44) 1549 0 R (section*.45) 1550 0 R] +/Limits [(section*.40) (section*.45)] +>> endobj +1710 0 obj << +/Names [(section*.46) 1575 0 R (section*.5) 798 0 R (section*.6) 799 0 R (section*.7) 802 0 R (section*.8) 825 0 R (section*.9) 826 0 R] +/Limits [(section*.46) (section*.9)] +>> endobj +1711 0 obj << +/Names [(section.1.1) 6 0 R (section.1.2) 10 0 R (section.1.3) 14 0 R (section.10.1) 286 0 R (section.10.2) 358 0 R (section.11.1) 366 0 R] +/Limits [(section.1.1) (section.11.1)] +>> endobj +1712 0 obj << +/Names [(section.11.2) 370 0 R (section.11.3) 374 0 R (section.12.1) 382 0 R (section.12.2) 398 0 R (section.12.3) 402 0 R (section.12.4) 418 0 R] +/Limits [(section.11.2) (section.12.4)] +>> endobj +1713 0 obj << +/Names [(section.13.1) 426 0 R (section.13.2) 430 0 R (section.13.3) 442 0 R (section.13.4) 458 0 R (section.13.5) 466 0 R (section.13.6) 470 0 R] +/Limits [(section.13.1) (section.13.6)] +>> endobj +1714 0 obj << +/Names [(section.14.1) 478 0 R (section.14.2) 482 0 R (section.2.1) 22 0 R (section.2.2) 26 0 R (section.2.3) 30 0 R (section.3.1) 38 0 R] +/Limits [(section.14.1) (section.3.1)] +>> endobj +1715 0 obj << +/Names [(section.3.2) 66 0 R (section.3.3) 70 0 R (section.3.4) 74 0 R (section.4.1) 82 0 R (section.4.2) 86 0 R (section.4.3) 90 0 R] +/Limits [(section.3.2) (section.4.3)] +>> endobj +1716 0 obj << +/Names [(section.4.4) 94 0 R (section.4.5) 114 0 R (section.4.6) 118 0 R (section.4.7) 122 0 R (section.5.1) 134 0 R (section.5.2) 138 0 R] +/Limits [(section.4.4) (section.5.2)] +>> endobj +1717 0 obj << +/Names [(section.5.3) 190 0 R (section.6.1) 206 0 R (section.8.1) 218 0 R (section.8.2) 222 0 R (section.8.3) 226 0 R (section.8.4) 238 0 R] +/Limits [(section.5.3) (section.8.4)] +>> endobj +1718 0 obj << +/Names [(section.9.1) 246 0 R (section.9.2) 250 0 R (section.C.1) 502 0 R (section.C.2) 506 0 R (section.C.3) 510 0 R (subsection.10.1.1) 290 0 R] +/Limits [(section.9.1) (subsection.10.1.1)] +>> endobj +1719 0 obj << +/Names [(subsection.10.1.10) 326 0 R (subsection.10.1.11) 330 0 R (subsection.10.1.12) 334 0 R (subsection.10.1.13) 338 0 R (subsection.10.1.14) 342 0 R (subsection.10.1.15) 346 0 R] +/Limits [(subsection.10.1.10) (subsection.10.1.15)] +>> endobj +1720 0 obj << +/Names [(subsection.10.1.16) 350 0 R (subsection.10.1.17) 354 0 R (subsection.10.1.2) 294 0 R (subsection.10.1.3) 298 0 R (subsection.10.1.4) 302 0 R (subsection.10.1.5) 306 0 R] +/Limits [(subsection.10.1.16) (subsection.10.1.5)] +>> endobj +1721 0 obj << +/Names [(subsection.10.1.6) 310 0 R (subsection.10.1.7) 314 0 R (subsection.10.1.8) 318 0 R (subsection.10.1.9) 322 0 R (subsection.12.1.1) 386 0 R (subsection.12.1.2) 390 0 R] +/Limits [(subsection.10.1.6) (subsection.12.1.2)] +>> endobj +1722 0 obj << +/Names [(subsection.12.1.3) 394 0 R (subsection.12.3.1) 406 0 R (subsection.12.3.2) 410 0 R (subsection.12.3.3) 414 0 R (subsection.13.2.1) 434 0 R (subsection.13.2.2) 438 0 R] +/Limits [(subsection.12.1.3) (subsection.13.2.2)] +>> endobj +1723 0 obj << +/Names [(subsection.13.3.1) 446 0 R (subsection.13.3.2) 450 0 R (subsection.13.3.3) 454 0 R (subsection.13.4.1) 462 0 R (subsection.3.1.1) 42 0 R (subsection.3.1.2) 46 0 R] +/Limits [(subsection.13.3.1) (subsection.3.1.2)] +>> endobj +1724 0 obj << +/Names [(subsection.3.1.3) 50 0 R (subsection.3.1.4) 54 0 R (subsection.3.1.5) 58 0 R (subsection.3.1.6) 62 0 R (subsection.4.4.1) 98 0 R (subsection.4.4.2) 102 0 R] +/Limits [(subsection.3.1.3) (subsection.4.4.2)] +>> endobj +1725 0 obj << +/Names [(subsection.4.4.3) 106 0 R (subsection.4.4.4) 110 0 R (subsection.4.7.1) 126 0 R (subsection.5.2.1) 142 0 R (subsection.5.2.10) 178 0 R (subsection.5.2.11) 182 0 R] +/Limits [(subsection.4.4.3) (subsection.5.2.11)] +>> endobj +1726 0 obj << +/Names [(subsection.5.2.12) 186 0 R (subsection.5.2.2) 146 0 R (subsection.5.2.3) 150 0 R (subsection.5.2.4) 154 0 R (subsection.5.2.5) 158 0 R (subsection.5.2.6) 162 0 R] +/Limits [(subsection.5.2.12) (subsection.5.2.6)] +>> endobj +1727 0 obj << +/Names [(subsection.5.2.7) 166 0 R (subsection.5.2.8) 170 0 R (subsection.5.2.9) 174 0 R (subsection.5.3.1) 194 0 R (subsection.5.3.2) 198 0 R (subsection.8.3.1) 230 0 R] +/Limits [(subsection.5.2.7) (subsection.8.3.1)] +>> endobj +1728 0 obj << +/Names [(subsection.8.3.2) 234 0 R (subsection.9.2.1) 254 0 R (subsection.9.2.2) 258 0 R (subsection.9.2.3) 262 0 R (subsection.9.2.4) 266 0 R (subsection.9.2.5) 270 0 R] +/Limits [(subsection.8.3.2) (subsection.9.2.5)] +>> endobj +1729 0 obj << +/Names [(subsection.9.2.6) 274 0 R (subsection.9.2.7) 278 0 R (table.10.1) 766 0 R (table.10.2) 767 0 R (table.10.3) 768 0 R (table.10.4) 769 0 R] +/Limits [(subsection.9.2.6) (table.10.4)] +>> endobj +1730 0 obj << +/Names [(table.10.5) 770 0 R (table.10.6) 771 0 R (table.10.7) 772 0 R (table.10.8) 773 0 R (table.12.1) 774 0 R (table.12.10) 783 0 R] +/Limits [(table.10.5) (table.12.10)] +>> endobj +1731 0 obj << +/Names [(table.12.11) 784 0 R (table.12.12) 785 0 R (table.12.13) 786 0 R (table.12.14) 787 0 R (table.12.2) 775 0 R (table.12.3) 776 0 R] +/Limits [(table.12.11) (table.12.3)] +>> endobj +1732 0 obj << +/Names [(table.12.4) 777 0 R (table.12.5) 778 0 R (table.12.6) 779 0 R (table.12.7) 780 0 R (table.12.8) 781 0 R (table.12.9) 782 0 R] +/Limits [(table.12.4) (table.12.9)] +>> endobj +1733 0 obj << +/Names [(table.13.1) 788 0 R (table.5.1) 757 0 R (table.8.1) 758 0 R (table.8.2) 759 0 R (table.8.3) 760 0 R (table.8.4) 761 0 R] +/Limits [(table.13.1) (table.8.4)] +>> endobj +1734 0 obj << +/Names [(table.9.1) 762 0 R (table.9.2) 763 0 R (table.9.3) 764 0 R (table.9.4) 765 0 R (table.D.1) 789 0 R] +/Limits [(table.9.1) (table.D.1)] +>> endobj +1735 0 obj << +/Kids [1657 0 R 1658 0 R 1659 0 R 1660 0 R 1661 0 R 1662 0 R] +/Limits [(ALC@unique.1) (ALC@unique.15)] +>> endobj +1736 0 obj << +/Kids [1663 0 R 1664 0 R 1665 0 R 1666 0 R 1667 0 R 1668 0 R] +/Limits [(ALC@unique.16) (ALC@unique.48)] +>> endobj +1737 0 obj << +/Kids [1669 0 R 1670 0 R 1671 0 R 1672 0 R 1673 0 R 1674 0 R] +/Limits [(ALC@unique.49) (ALC@unique.80)] +>> endobj +1738 0 obj << +/Kids [1675 0 R 1676 0 R 1677 0 R 1678 0 R 1679 0 R 1680 0 R] +/Limits [(ALC@unique.81) (Item.16)] +>> endobj +1739 0 obj << +/Kids [1681 0 R 1682 0 R 1683 0 R 1684 0 R 1685 0 R 1686 0 R] +/Limits [(Item.17) (chapter*.3)] +>> endobj +1740 0 obj << +/Kids [1687 0 R 1688 0 R 1689 0 R 1690 0 R 1691 0 R 1692 0 R] +/Limits [(chapter*.4) (page.22)] +>> endobj +1741 0 obj << +/Kids [1693 0 R 1694 0 R 1695 0 R 1696 0 R 1697 0 R 1698 0 R] +/Limits [(page.23) (page.55)] +>> endobj +1742 0 obj << +/Kids [1699 0 R 1700 0 R 1701 0 R 1702 0 R 1703 0 R 1704 0 R] +/Limits [(page.56) (section*.15)] +>> endobj +1743 0 obj << +/Kids [1705 0 R 1706 0 R 1707 0 R 1708 0 R 1709 0 R 1710 0 R] +/Limits [(section*.16) (section*.9)] +>> endobj +1744 0 obj << +/Kids [1711 0 R 1712 0 R 1713 0 R 1714 0 R 1715 0 R 1716 0 R] +/Limits [(section.1.1) (section.5.2)] +>> endobj +1745 0 obj << +/Kids [1717 0 R 1718 0 R 1719 0 R 1720 0 R 1721 0 R 1722 0 R] +/Limits [(section.5.3) (subsection.13.2.2)] +>> endobj +1746 0 obj << +/Kids [1723 0 R 1724 0 R 1725 0 R 1726 0 R 1727 0 R 1728 0 R] +/Limits [(subsection.13.3.1) (subsection.9.2.5)] +>> endobj +1747 0 obj << +/Kids [1729 0 R 1730 0 R 1731 0 R 1732 0 R 1733 0 R 1734 0 R] +/Limits [(subsection.9.2.6) (table.D.1)] +>> endobj +1748 0 obj << +/Kids [1735 0 R 1736 0 R 1737 0 R 1738 0 R 1739 0 R 1740 0 R] +/Limits [(ALC@unique.1) (page.22)] +>> endobj +1749 0 obj << +/Kids [1741 0 R 1742 0 R 1743 0 R 1744 0 R 1745 0 R 1746 0 R] +/Limits [(page.23) (subsection.9.2.5)] +>> endobj +1750 0 obj << +/Kids [1747 0 R] +/Limits [(subsection.9.2.6) (table.D.1)] +>> endobj +1751 0 obj << +/Kids [1748 0 R 1749 0 R 1750 0 R] +/Limits [(ALC@unique.1) (table.D.1)] +>> endobj +1752 0 obj << +/Dests 1751 0 R +>> endobj +1753 0 obj << +/Type /Catalog +/Pages 1655 0 R +/Outlines 1656 0 R +/Names 1752 0 R +/PageMode/UseOutlines/Lang(en)/PageLabels<</Nums[0<</S/D>>1<</S/D>>]>> +/OpenAction 525 0 R +>> endobj +1754 0 obj << +/Author(Stephen P. Bennett, Ciaran McCreesh)/Title(Package Manager Specification)/Subject(Defining a feature set for package managers in the Gentoo world)/Creator(pdfLaTeX and hyperref)/Producer(pdfLaTeX and hyperref)/Keywords(Gentoo, package manager, specification) +/CreationDate (D:20100119111230+01'00') +/ModDate (D:20100119111230+01'00') +/Trapped /False +/PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-1.40.10-2.2 (Web2C 2009) kpathsea version 5.0.0) +>> endobj +xref +0 1755 +0000001578 65535 f +0000000015 00000 n +0000056123 00000 n +0000469211 00000 n +0000000060 00000 n +0000000090 00000 n +0000056182 00000 n +0000469141 00000 n +0000000137 00000 n +0000000174 00000 n +0000056241 00000 n +0000469057 00000 n +0000000221 00000 n +0000000249 00000 n +0000056301 00000 n +0000468984 00000 n +0000000297 00000 n +0000000327 00000 n +0000058544 00000 n +0000468859 00000 n +0000000373 00000 n +0000000397 00000 n +0000058604 00000 n +0000468785 00000 n +0000000445 00000 n +0000000474 00000 n +0000058664 00000 n +0000468698 00000 n +0000000522 00000 n +0000000554 00000 n +0000058724 00000 n +0000468624 00000 n +0000000602 00000 n +0000000635 00000 n +0000061442 00000 n +0000468498 00000 n +0000000681 00000 n +0000000718 00000 n +0000061502 00000 n +0000468387 00000 n +0000000766 00000 n +0000000808 00000 n +0000061562 00000 n +0000468313 00000 n +0000000861 00000 n +0000000894 00000 n +0000061683 00000 n +0000468226 00000 n +0000000947 00000 n +0000000979 00000 n +0000061804 00000 n +0000468139 00000 n +0000001032 00000 n +0000001061 00000 n +0000061864 00000 n +0000468052 00000 n +0000001114 00000 n +0000001147 00000 n +0000065698 00000 n +0000467965 00000 n +0000001200 00000 n +0000001235 00000 n +0000065758 00000 n +0000467891 00000 n +0000001288 00000 n +0000001320 00000 n +0000065818 00000 n +0000467804 00000 n +0000001368 00000 n +0000001409 00000 n +0000065878 00000 n +0000467717 00000 n +0000001457 00000 n +0000001494 00000 n +0000066366 00000 n +0000467643 00000 n +0000001542 00000 n +0000001583 00000 n +0000079907 00000 n +0000467515 00000 n +0000001629 00000 n +0000001659 00000 n +0000079967 00000 n +0000467441 00000 n +0000001707 00000 n +0000001735 00000 n +0000080027 00000 n +0000467354 00000 n +0000001783 00000 n +0000001822 00000 n +0000084008 00000 n +0000467267 00000 n +0000001870 00000 n +0000001908 00000 n +0000084068 00000 n +0000467141 00000 n +0000001956 00000 n +0000001997 00000 n +0000088423 00000 n +0000467065 00000 n +0000002050 00000 n +0000002092 00000 n +0000088483 00000 n +0000466974 00000 n +0000002146 00000 n +0000002192 00000 n +0000088544 00000 n +0000466882 00000 n +0000002246 00000 n +0000002292 00000 n +0000091780 00000 n +0000466804 00000 n +0000002346 00000 n +0000002387 00000 n +0000091840 00000 n +0000466713 00000 n +0000002436 00000 n +0000002478 00000 n +0000091901 00000 n +0000466621 00000 n +0000002527 00000 n +0000002567 00000 n +0000091962 00000 n +0000466504 00000 n +0000002616 00000 n +0000002658 00000 n +0000092984 00000 n +0000466439 00000 n +0000002712 00000 n +0000002750 00000 n +0000095203 00000 n +0000466307 00000 n +0000002797 00000 n +0000002825 00000 n +0000095264 00000 n +0000466228 00000 n +0000002874 00000 n +0000002912 00000 n +0000095325 00000 n +0000466095 00000 n +0000002961 00000 n +0000003009 00000 n +0000095386 00000 n +0000466016 00000 n +0000003063 00000 n +0000003098 00000 n +0000095447 00000 n +0000465923 00000 n +0000003152 00000 n +0000003185 00000 n +0000099086 00000 n +0000465830 00000 n +0000003239 00000 n +0000003269 00000 n +0000099147 00000 n +0000465737 00000 n +0000003323 00000 n +0000003356 00000 n +0000099208 00000 n +0000465644 00000 n +0000003410 00000 n +0000003438 00000 n +0000099269 00000 n +0000465551 00000 n +0000003492 00000 n +0000003535 00000 n +0000099330 00000 n +0000465458 00000 n +0000003589 00000 n +0000003617 00000 n +0000102752 00000 n +0000465365 00000 n +0000003671 00000 n +0000003705 00000 n +0000102813 00000 n +0000465272 00000 n +0000003759 00000 n +0000003791 00000 n +0000102934 00000 n +0000465179 00000 n +0000003846 00000 n +0000003882 00000 n +0000102995 00000 n +0000465086 00000 n +0000003937 00000 n +0000003968 00000 n +0000103056 00000 n +0000465007 00000 n +0000004023 00000 n +0000004066 00000 n +0000103117 00000 n +0000464889 00000 n +0000004115 00000 n +0000004152 00000 n +0000107061 00000 n +0000464810 00000 n +0000004206 00000 n +0000004247 00000 n +0000107122 00000 n +0000464731 00000 n +0000004301 00000 n +0000004358 00000 n +0000113475 00000 n +0000464598 00000 n +0000004405 00000 n +0000004451 00000 n +0000113600 00000 n +0000464533 00000 n +0000004500 00000 n +0000004552 00000 n +0000115326 00000 n +0000464439 00000 n +0000004599 00000 n +0000004637 00000 n +0000119388 00000 n +0000464306 00000 n +0000004684 00000 n +0000004728 00000 n +0000119513 00000 n +0000464227 00000 n +0000004777 00000 n +0000004816 00000 n +0000119575 00000 n +0000464134 00000 n +0000004865 00000 n +0000004919 00000 n +0000124424 00000 n +0000464002 00000 n +0000004968 00000 n +0000005021 00000 n +0000124486 00000 n +0000463923 00000 n +0000005075 00000 n +0000005099 00000 n +0000128559 00000 n +0000463844 00000 n +0000005153 00000 n +0000005186 00000 n +0000128621 00000 n +0000463765 00000 n +0000005235 00000 n +0000005285 00000 n +0000132581 00000 n +0000463632 00000 n +0000005332 00000 n +0000005364 00000 n +0000132643 00000 n +0000463553 00000 n +0000005413 00000 n +0000005451 00000 n +0000132705 00000 n +0000463435 00000 n +0000005500 00000 n +0000005551 00000 n +0000136473 00000 n +0000463356 00000 n +0000005605 00000 n +0000005657 00000 n +0000136535 00000 n +0000463263 00000 n +0000005711 00000 n +0000005772 00000 n +0000136597 00000 n +0000463170 00000 n +0000005826 00000 n +0000005878 00000 n +0000136659 00000 n +0000463077 00000 n +0000005932 00000 n +0000005985 00000 n +0000146034 00000 n +0000462984 00000 n +0000006039 00000 n +0000006067 00000 n +0000146096 00000 n +0000462891 00000 n +0000006121 00000 n +0000006151 00000 n +0000146158 00000 n +0000462812 00000 n +0000006205 00000 n +0000006235 00000 n +0000149684 00000 n +0000462679 00000 n +0000006283 00000 n +0000006327 00000 n +0000149746 00000 n +0000462560 00000 n +0000006377 00000 n +0000006414 00000 n +0000149808 00000 n +0000462481 00000 n +0000006469 00000 n +0000006516 00000 n +0000149870 00000 n +0000462388 00000 n +0000006571 00000 n +0000006605 00000 n +0000152947 00000 n +0000462295 00000 n +0000006660 00000 n +0000006692 00000 n +0000153009 00000 n +0000462202 00000 n +0000006747 00000 n +0000006780 00000 n +0000153071 00000 n +0000462109 00000 n +0000006835 00000 n +0000006869 00000 n +0000156219 00000 n +0000462016 00000 n +0000006924 00000 n +0000006960 00000 n +0000156281 00000 n +0000461923 00000 n +0000007015 00000 n +0000007049 00000 n +0000159592 00000 n +0000461830 00000 n +0000007104 00000 n +0000007135 00000 n +0000159654 00000 n +0000461737 00000 n +0000007190 00000 n +0000007224 00000 n +0000161870 00000 n +0000461644 00000 n +0000007280 00000 n +0000007314 00000 n +0000161932 00000 n +0000461551 00000 n +0000007370 00000 n +0000007405 00000 n +0000161994 00000 n +0000461458 00000 n +0000007461 00000 n +0000007493 00000 n +0000165336 00000 n +0000461365 00000 n +0000007549 00000 n +0000007582 00000 n +0000165397 00000 n +0000461272 00000 n +0000007638 00000 n +0000007671 00000 n +0000165459 00000 n +0000461179 00000 n +0000007727 00000 n +0000007758 00000 n +0000165521 00000 n +0000461086 00000 n +0000007814 00000 n +0000007848 00000 n +0000165583 00000 n +0000461007 00000 n +0000007904 00000 n +0000007951 00000 n +0000165645 00000 n +0000460928 00000 n +0000008001 00000 n +0000008031 00000 n +0000172422 00000 n +0000460795 00000 n +0000008079 00000 n +0000008107 00000 n +0000172484 00000 n +0000460716 00000 n +0000008157 00000 n +0000008196 00000 n +0000172546 00000 n +0000460623 00000 n +0000008246 00000 n +0000008294 00000 n +0000172608 00000 n +0000460544 00000 n +0000008344 00000 n +0000008383 00000 n +0000175844 00000 n +0000460411 00000 n +0000008431 00000 n +0000008473 00000 n +0000175906 00000 n +0000460293 00000 n +0000008523 00000 n +0000008560 00000 n +0000191711 00000 n +0000460214 00000 n +0000008615 00000 n +0000008656 00000 n +0000196702 00000 n +0000460121 00000 n +0000008711 00000 n +0000008782 00000 n +0000196764 00000 n +0000460042 00000 n +0000008837 00000 n +0000008902 00000 n +0000199278 00000 n +0000459949 00000 n +0000008952 00000 n +0000009012 00000 n +0000203251 00000 n +0000459817 00000 n +0000009062 00000 n +0000009100 00000 n +0000203313 00000 n +0000459738 00000 n +0000009155 00000 n +0000009190 00000 n +0000203438 00000 n +0000459645 00000 n +0000009245 00000 n +0000009306 00000 n +0000203500 00000 n +0000459566 00000 n +0000009361 00000 n +0000009405 00000 n +0000248236 00000 n +0000459487 00000 n +0000009455 00000 n +0000009516 00000 n +0000250125 00000 n +0000459354 00000 n +0000009564 00000 n +0000009605 00000 n +0000250250 00000 n +0000459275 00000 n +0000009655 00000 n +0000009683 00000 n +0000250312 00000 n +0000459143 00000 n +0000009733 00000 n +0000009764 00000 n +0000250374 00000 n +0000459064 00000 n +0000009819 00000 n +0000009850 00000 n +0000250436 00000 n +0000458985 00000 n +0000009905 00000 n +0000009942 00000 n +0000253865 00000 n +0000458853 00000 n +0000009992 00000 n +0000010025 00000 n +0000253926 00000 n +0000458774 00000 n +0000010080 00000 n +0000010111 00000 n +0000253988 00000 n +0000458681 00000 n +0000010166 00000 n +0000010209 00000 n +0000254050 00000 n +0000458602 00000 n +0000010264 00000 n +0000010313 00000 n +0000256566 00000 n +0000458470 00000 n +0000010363 00000 n +0000010391 00000 n +0000256628 00000 n +0000458405 00000 n +0000010446 00000 n +0000010475 00000 n +0000256690 00000 n +0000458312 00000 n +0000010525 00000 n +0000010555 00000 n +0000256752 00000 n +0000458233 00000 n +0000010605 00000 n +0000010636 00000 n +0000259473 00000 n +0000458100 00000 n +0000010684 00000 n +0000010718 00000 n +0000259535 00000 n +0000458021 00000 n +0000010768 00000 n +0000010806 00000 n +0000259597 00000 n +0000457942 00000 n +0000010856 00000 n +0000010893 00000 n +0000262546 00000 n +0000457848 00000 n +0000010941 00000 n +0000010969 00000 n +0000263625 00000 n +0000457754 00000 n +0000011017 00000 n +0000011049 00000 n +0000264951 00000 n +0000457660 00000 n +0000011097 00000 n +0000011134 00000 n +0000266919 00000 n +0000457527 00000 n +0000011182 00000 n +0000011224 00000 n +0000266981 00000 n +0000457448 00000 n +0000011273 00000 n +0000011311 00000 n +0000267043 00000 n +0000457355 00000 n +0000011360 00000 n +0000011392 00000 n +0000267105 00000 n +0000457276 00000 n +0000011441 00000 n +0000011473 00000 n +0000267893 00000 n +0000457182 00000 n +0000011521 00000 n +0000011569 00000 n +0000282003 00000 n +0000457088 00000 n +0000011617 00000 n +0000011662 00000 n +0000300498 00000 n +0000457008 00000 n +0000011710 00000 n +0000011744 00000 n +0000012140 00000 n +0000012287 00000 n +0000012457 00000 n +0000012764 00000 n +0000011796 00000 n +0000012642 00000 n +0000012703 00000 n +0000454451 00000 n +0000454807 00000 n +0000014596 00000 n +0000014747 00000 n +0000014900 00000 n +0000015053 00000 n +0000015205 00000 n +0000015355 00000 n +0000015508 00000 n +0000015661 00000 n +0000015814 00000 n +0000015965 00000 n +0000016118 00000 n +0000016275 00000 n +0000016433 00000 n +0000016591 00000 n +0000016747 00000 n +0000016905 00000 n +0000017062 00000 n +0000017215 00000 n +0000017366 00000 n +0000017518 00000 n +0000017669 00000 n +0000017822 00000 n +0000017975 00000 n +0000018128 00000 n +0000018281 00000 n +0000018439 00000 n +0000018597 00000 n +0000018754 00000 n +0000018912 00000 n +0000019064 00000 n +0000019217 00000 n +0000019368 00000 n +0000019526 00000 n +0000019676 00000 n +0000019829 00000 n +0000019982 00000 n +0000020140 00000 n +0000020298 00000 n +0000020456 00000 n +0000020614 00000 n +0000020772 00000 n +0000020930 00000 n +0000023386 00000 n +0000021148 00000 n +0000014129 00000 n +0000012836 00000 n +0000021087 00000 n +0000454275 00000 n +0000023543 00000 n +0000023701 00000 n +0000023860 00000 n +0000024018 00000 n +0000024177 00000 n +0000024330 00000 n +0000024488 00000 n +0000024645 00000 n +0000024796 00000 n +0000024949 00000 n +0000025100 00000 n +0000025251 00000 n +0000025403 00000 n +0000025556 00000 n +0000025709 00000 n +0000025867 00000 n +0000026025 00000 n +0000026177 00000 n +0000026328 00000 n +0000026481 00000 n +0000026634 00000 n +0000026792 00000 n +0000026950 00000 n +0000027107 00000 n +0000027265 00000 n +0000027422 00000 n +0000027580 00000 n +0000027737 00000 n +0000027889 00000 n +0000028042 00000 n +0000028201 00000 n +0000028360 00000 n +0000028519 00000 n +0000028677 00000 n +0000028836 00000 n +0000028995 00000 n +0000029153 00000 n +0000029312 00000 n +0000029469 00000 n +0000029629 00000 n +0000029788 00000 n +0000029948 00000 n +0000030108 00000 n +0000030267 00000 n +0000030427 00000 n +0000030586 00000 n +0000030746 00000 n +0000030899 00000 n +0000031051 00000 n +0000031205 00000 n +0000031359 00000 n +0000033605 00000 n +0000031573 00000 n +0000022839 00000 n +0000021233 00000 n +0000031512 00000 n +0000454101 00000 n +0000033757 00000 n +0000033911 00000 n +0000034070 00000 n +0000034229 00000 n +0000034388 00000 n +0000034542 00000 n +0000034696 00000 n +0000034854 00000 n +0000035013 00000 n +0000035172 00000 n +0000035326 00000 n +0000035477 00000 n +0000035631 00000 n +0000035784 00000 n +0000035943 00000 n +0000036101 00000 n +0000036254 00000 n +0000036413 00000 n +0000036572 00000 n +0000036731 00000 n +0000036884 00000 n +0000037043 00000 n +0000037197 00000 n +0000037351 00000 n +0000037502 00000 n +0000037656 00000 n +0000037809 00000 n +0000037961 00000 n +0000038113 00000 n +0000038265 00000 n +0000038417 00000 n +0000038570 00000 n +0000038723 00000 n +0000038876 00000 n +0000039028 00000 n +0000039180 00000 n +0000039392 00000 n +0000033178 00000 n +0000031671 00000 n +0000039331 00000 n +0000040238 00000 n +0000040391 00000 n +0000040543 00000 n +0000040696 00000 n +0000040848 00000 n +0000041001 00000 n +0000041154 00000 n +0000041306 00000 n +0000041459 00000 n +0000041611 00000 n +0000041887 00000 n +0000040027 00000 n +0000039490 00000 n +0000041765 00000 n +0000041826 00000 n +0000065938 00000 n +0000068822 00000 n +0000069860 00000 n +0000070837 00000 n +0000073788 00000 n +0000075011 00000 n +0000075867 00000 n +0000106007 00000 n +0000215010 00000 n +0000225784 00000 n +0000042539 00000 n +0000042693 00000 n +0000042846 00000 n +0000043000 00000 n +0000043274 00000 n +0000042376 00000 n +0000041972 00000 n +0000043152 00000 n +0000043213 00000 n +0000174415 00000 n +0000199216 00000 n +0000221392 00000 n +0000267167 00000 n +0000045272 00000 n +0000045423 00000 n +0000045574 00000 n +0000045725 00000 n +0000045876 00000 n +0000046027 00000 n +0000046177 00000 n +0000046328 00000 n +0000046478 00000 n +0000046629 00000 n +0000046781 00000 n +0000046933 00000 n +0000047085 00000 n +0000047237 00000 n +0000047388 00000 n +0000047540 00000 n +0000047691 00000 n +0000047841 00000 n +0000047992 00000 n +0000048144 00000 n +0000048296 00000 n +0000048448 00000 n +0000048599 00000 n +0000048751 00000 n +0000048903 00000 n +0000049055 00000 n +0000049207 00000 n +0000049359 00000 n +0000049512 00000 n +0000049662 00000 n +0000049815 00000 n +0000049967 00000 n +0000050119 00000 n +0000050392 00000 n +0000044877 00000 n +0000043359 00000 n +0000050270 00000 n +0000050331 00000 n +0000454925 00000 n +0000106999 00000 n +0000124298 00000 n +0000124361 00000 n +0000128496 00000 n +0000129635 00000 n +0000136411 00000 n +0000139575 00000 n +0000139638 00000 n +0000142972 00000 n +0000152822 00000 n +0000152885 00000 n +0000156094 00000 n +0000156156 00000 n +0000159529 00000 n +0000161807 00000 n +0000165273 00000 n +0000168534 00000 n +0000179167 00000 n +0000191585 00000 n +0000191648 00000 n +0000196639 00000 n +0000206477 00000 n +0000206540 00000 n +0000214947 00000 n +0000231031 00000 n +0000234415 00000 n +0000234478 00000 n +0000238151 00000 n +0000242167 00000 n +0000245911 00000 n +0000245974 00000 n +0000253802 00000 n +0000273660 00000 n +0000052757 00000 n +0000052916 00000 n +0000053068 00000 n +0000053221 00000 n +0000053850 00000 n +0000052586 00000 n +0000050490 00000 n +0000053607 00000 n +0000053668 00000 n +0000053729 00000 n +0000453780 00000 n +0000053415 00000 n +0000053789 00000 n +0000454627 00000 n +0000055909 00000 n +0000056361 00000 n +0000055770 00000 n +0000053974 00000 n +0000056062 00000 n +0000058171 00000 n +0000058330 00000 n +0000058845 00000 n +0000058024 00000 n +0000056472 00000 n +0000058483 00000 n +0000058784 00000 n +0000059575 00000 n +0000059395 00000 n +0000058943 00000 n +0000059514 00000 n +0000061222 00000 n +0000061985 00000 n +0000061083 00000 n +0000059673 00000 n +0000061381 00000 n +0000061622 00000 n +0000061743 00000 n +0000061924 00000 n +0000064868 00000 n +0000065021 00000 n +0000065175 00000 n +0000065329 00000 n +0000065483 00000 n +0000068608 00000 n +0000073574 00000 n +0000066426 00000 n +0000064697 00000 n +0000062096 00000 n +0000065637 00000 n +0000065999 00000 n +0000066059 00000 n +0000066121 00000 n +0000066183 00000 n +0000066244 00000 n +0000066306 00000 n +0000453636 00000 n +0000455043 00000 n +0000071327 00000 n +0000068469 00000 n +0000066562 00000 n +0000068761 00000 n +0000068882 00000 n +0000068943 00000 n +0000453491 00000 n +0000069005 00000 n +0000069066 00000 n +0000069127 00000 n +0000069188 00000 n +0000069249 00000 n +0000069310 00000 n +0000069371 00000 n +0000069433 00000 n +0000069494 00000 n +0000069555 00000 n +0000069617 00000 n +0000069678 00000 n +0000069739 00000 n +0000069799 00000 n +0000069921 00000 n +0000069982 00000 n +0000070043 00000 n +0000070105 00000 n +0000070167 00000 n +0000070228 00000 n +0000070289 00000 n +0000070350 00000 n +0000070411 00000 n +0000070472 00000 n +0000070533 00000 n +0000070594 00000 n +0000070655 00000 n +0000070715 00000 n +0000070776 00000 n +0000070898 00000 n +0000070959 00000 n +0000071021 00000 n +0000071083 00000 n +0000071144 00000 n +0000071205 00000 n +0000071266 00000 n +0000076355 00000 n +0000073435 00000 n +0000071464 00000 n +0000073727 00000 n +0000073849 00000 n +0000073910 00000 n +0000073972 00000 n +0000074034 00000 n +0000074096 00000 n +0000074157 00000 n +0000074218 00000 n +0000074280 00000 n +0000074341 00000 n +0000074401 00000 n +0000074462 00000 n +0000074523 00000 n +0000074584 00000 n +0000074645 00000 n +0000074706 00000 n +0000074767 00000 n +0000074828 00000 n +0000074889 00000 n +0000074950 00000 n +0000075072 00000 n +0000075133 00000 n +0000075194 00000 n +0000075256 00000 n +0000075318 00000 n +0000075379 00000 n +0000075440 00000 n +0000075501 00000 n +0000075562 00000 n +0000075623 00000 n +0000075684 00000 n +0000075745 00000 n +0000075806 00000 n +0000075928 00000 n +0000075988 00000 n +0000076049 00000 n +0000076111 00000 n +0000076172 00000 n +0000076233 00000 n +0000076294 00000 n +0000078620 00000 n +0000078774 00000 n +0000078927 00000 n +0000079081 00000 n +0000079234 00000 n +0000079388 00000 n +0000079541 00000 n +0000079694 00000 n +0000080087 00000 n +0000078425 00000 n +0000076492 00000 n +0000079846 00000 n +0000083178 00000 n +0000083330 00000 n +0000083483 00000 n +0000083636 00000 n +0000083788 00000 n +0000087256 00000 n +0000084128 00000 n +0000083007 00000 n +0000080211 00000 n +0000083947 00000 n +0000289090 00000 n +0000087415 00000 n +0000087573 00000 n +0000087732 00000 n +0000087891 00000 n +0000088050 00000 n +0000088209 00000 n +0000088605 00000 n +0000087069 00000 n +0000084239 00000 n +0000088362 00000 n +0000091417 00000 n +0000091567 00000 n +0000092770 00000 n +0000092021 00000 n +0000091270 00000 n +0000088729 00000 n +0000091719 00000 n +0000455161 00000 n +0000093045 00000 n +0000092631 00000 n +0000092132 00000 n +0000092923 00000 n +0000095506 00000 n +0000095023 00000 n +0000093143 00000 n +0000095142 00000 n +0000098872 00000 n +0000099390 00000 n +0000098733 00000 n +0000095604 00000 n +0000099025 00000 n +0000102385 00000 n +0000102538 00000 n +0000103178 00000 n +0000102238 00000 n +0000099514 00000 n +0000102691 00000 n +0000102874 00000 n +0000105795 00000 n +0000109378 00000 n +0000107182 00000 n +0000105656 00000 n +0000103276 00000 n +0000105946 00000 n +0000106068 00000 n +0000106130 00000 n +0000106193 00000 n +0000106255 00000 n +0000106317 00000 n +0000106379 00000 n +0000106441 00000 n +0000106503 00000 n +0000106566 00000 n +0000106627 00000 n +0000106689 00000 n +0000106751 00000 n +0000106813 00000 n +0000106875 00000 n +0000106937 00000 n +0000453926 00000 n +0000109531 00000 n +0000109691 00000 n +0000109852 00000 n +0000110005 00000 n +0000110166 00000 n +0000110325 00000 n +0000110477 00000 n +0000110700 00000 n +0000109172 00000 n +0000107321 00000 n +0000110637 00000 n +0000455279 00000 n +0000112623 00000 n +0000112778 00000 n +0000112938 00000 n +0000113098 00000 n +0000113258 00000 n +0000113662 00000 n +0000112443 00000 n +0000110799 00000 n +0000113412 00000 n +0000113537 00000 n +0000139763 00000 n +0000114648 00000 n +0000114802 00000 n +0000114957 00000 n +0000115110 00000 n +0000115388 00000 n +0000114477 00000 n +0000113774 00000 n +0000115263 00000 n +0000203625 00000 n +0000118079 00000 n +0000118235 00000 n +0000118388 00000 n +0000118549 00000 n +0000118702 00000 n +0000118860 00000 n +0000119014 00000 n +0000119167 00000 n +0000122376 00000 n +0000122536 00000 n +0000119637 00000 n +0000117872 00000 n +0000115474 00000 n +0000119325 00000 n +0000119450 00000 n +0000122689 00000 n +0000122842 00000 n +0000122994 00000 n +0000123146 00000 n +0000123299 00000 n +0000123459 00000 n +0000123618 00000 n +0000123771 00000 n +0000123930 00000 n +0000124082 00000 n +0000124548 00000 n +0000122133 00000 n +0000119736 00000 n +0000124235 00000 n +0000127662 00000 n +0000127815 00000 n +0000127971 00000 n +0000128125 00000 n +0000128278 00000 n +0000128808 00000 n +0000127482 00000 n +0000124675 00000 n +0000128433 00000 n +0000128682 00000 n +0000128745 00000 n +0000129698 00000 n +0000129449 00000 n +0000128922 00000 n +0000129572 00000 n +0000455404 00000 n +0000132205 00000 n +0000132358 00000 n +0000132767 00000 n +0000132052 00000 n +0000129812 00000 n +0000132518 00000 n +0000135424 00000 n +0000135583 00000 n +0000135737 00000 n +0000135889 00000 n +0000136044 00000 n +0000136196 00000 n +0000136784 00000 n +0000135235 00000 n +0000132879 00000 n +0000136348 00000 n +0000136721 00000 n +0000139700 00000 n +0000139826 00000 n +0000143035 00000 n +0000139359 00000 n +0000139889 00000 n +0000139215 00000 n +0000136911 00000 n +0000139512 00000 n +0000143161 00000 n +0000142786 00000 n +0000140016 00000 n +0000142909 00000 n +0000143098 00000 n +0000145653 00000 n +0000145812 00000 n +0000146220 00000 n +0000145500 00000 n +0000143288 00000 n +0000145971 00000 n +0000149161 00000 n +0000149315 00000 n +0000149469 00000 n +0000149932 00000 n +0000148999 00000 n +0000146319 00000 n +0000149621 00000 n +0000455529 00000 n +0000152608 00000 n +0000153133 00000 n +0000152464 00000 n +0000150057 00000 n +0000152759 00000 n +0000155246 00000 n +0000155405 00000 n +0000155559 00000 n +0000155718 00000 n +0000155877 00000 n +0000156343 00000 n +0000155066 00000 n +0000153247 00000 n +0000156031 00000 n +0000158689 00000 n +0000158842 00000 n +0000158995 00000 n +0000159154 00000 n +0000159312 00000 n +0000159716 00000 n +0000158509 00000 n +0000156457 00000 n +0000159466 00000 n +0000162056 00000 n +0000161621 00000 n +0000159815 00000 n +0000161744 00000 n +0000164748 00000 n +0000164902 00000 n +0000165056 00000 n +0000165707 00000 n +0000164586 00000 n +0000162155 00000 n +0000165210 00000 n +0000167245 00000 n +0000167398 00000 n +0000167550 00000 n +0000167704 00000 n +0000167857 00000 n +0000168011 00000 n +0000168165 00000 n +0000168317 00000 n +0000168597 00000 n +0000167038 00000 n +0000165834 00000 n +0000168471 00000 n +0000455654 00000 n +0000169618 00000 n +0000169432 00000 n +0000168724 00000 n +0000169555 00000 n +0000172045 00000 n +0000172199 00000 n +0000174197 00000 n +0000172670 00000 n +0000171892 00000 n +0000169704 00000 n +0000172359 00000 n +0000174477 00000 n +0000174053 00000 n +0000172782 00000 n +0000174352 00000 n +0000175626 00000 n +0000175968 00000 n +0000175482 00000 n +0000174563 00000 n +0000175781 00000 n +0000178483 00000 n +0000178944 00000 n +0000178637 00000 n +0000178792 00000 n +0000181660 00000 n +0000181812 00000 n +0000181966 00000 n +0000184652 00000 n +0000184813 00000 n +0000184967 00000 n +0000187520 00000 n +0000187674 00000 n +0000187835 00000 n +0000187985 00000 n +0000188146 00000 n +0000179355 00000 n +0000178312 00000 n +0000176067 00000 n +0000179104 00000 n +0000179227 00000 n +0000179291 00000 n +0000182312 00000 n +0000181498 00000 n +0000179441 00000 n +0000182121 00000 n +0000182184 00000 n +0000182248 00000 n +0000455779 00000 n +0000185255 00000 n +0000184490 00000 n +0000182398 00000 n +0000185128 00000 n +0000185191 00000 n +0000188359 00000 n +0000187340 00000 n +0000185341 00000 n +0000188296 00000 n +0000191217 00000 n +0000191369 00000 n +0000191772 00000 n +0000191064 00000 n +0000188445 00000 n +0000191522 00000 n +0000195508 00000 n +0000195660 00000 n +0000195813 00000 n +0000195964 00000 n +0000196117 00000 n +0000196270 00000 n +0000196424 00000 n +0000196826 00000 n +0000195310 00000 n +0000191899 00000 n +0000196576 00000 n +0000198844 00000 n +0000198997 00000 n +0000199403 00000 n +0000198691 00000 n +0000196966 00000 n +0000199153 00000 n +0000199340 00000 n +0000202457 00000 n +0000202765 00000 n +0000202611 00000 n +0000206260 00000 n +0000203687 00000 n +0000202286 00000 n +0000199515 00000 n +0000203188 00000 n +0000203375 00000 n +0000203562 00000 n +0000202977 00000 n +0000455904 00000 n +0000206790 00000 n +0000206116 00000 n +0000203799 00000 n +0000206414 00000 n +0000206603 00000 n +0000206666 00000 n +0000206729 00000 n +0000210076 00000 n +0000213494 00000 n +0000210483 00000 n +0000209932 00000 n +0000206904 00000 n +0000210231 00000 n +0000210294 00000 n +0000210357 00000 n +0000210420 00000 n +0000213648 00000 n +0000213800 00000 n +0000213955 00000 n +0000214110 00000 n +0000214266 00000 n +0000214420 00000 n +0000214574 00000 n +0000214728 00000 n +0000215956 00000 n +0000213278 00000 n +0000210608 00000 n +0000214884 00000 n +0000215072 00000 n +0000215135 00000 n +0000215199 00000 n +0000215262 00000 n +0000215325 00000 n +0000215388 00000 n +0000215452 00000 n +0000215515 00000 n +0000215579 00000 n +0000215642 00000 n +0000215705 00000 n +0000215768 00000 n +0000215831 00000 n +0000215894 00000 n +0000219783 00000 n +0000219938 00000 n +0000220093 00000 n +0000220247 00000 n +0000220401 00000 n +0000220556 00000 n +0000220711 00000 n +0000220865 00000 n +0000221019 00000 n +0000221174 00000 n +0000221517 00000 n +0000219558 00000 n +0000216068 00000 n +0000221329 00000 n +0000221454 00000 n +0000224640 00000 n +0000224794 00000 n +0000224948 00000 n +0000225103 00000 n +0000225257 00000 n +0000225412 00000 n +0000225567 00000 n +0000226852 00000 n +0000224442 00000 n +0000221616 00000 n +0000225721 00000 n +0000225846 00000 n +0000225909 00000 n +0000225972 00000 n +0000226035 00000 n +0000226098 00000 n +0000226161 00000 n +0000226224 00000 n +0000226287 00000 n +0000226350 00000 n +0000226413 00000 n +0000226476 00000 n +0000226539 00000 n +0000226602 00000 n +0000226664 00000 n +0000226727 00000 n +0000226790 00000 n +0000229884 00000 n +0000230038 00000 n +0000230193 00000 n +0000230348 00000 n +0000230503 00000 n +0000230658 00000 n +0000230813 00000 n +0000231157 00000 n +0000229686 00000 n +0000226951 00000 n +0000230968 00000 n +0000231094 00000 n +0000456029 00000 n +0000234044 00000 n +0000234198 00000 n +0000234603 00000 n +0000233891 00000 n +0000231271 00000 n +0000234352 00000 n +0000234541 00000 n +0000237780 00000 n +0000237935 00000 n +0000238339 00000 n +0000237627 00000 n +0000234730 00000 n +0000238088 00000 n +0000238214 00000 n +0000238277 00000 n +0000241640 00000 n +0000241794 00000 n +0000241949 00000 n +0000242293 00000 n +0000241478 00000 n +0000238466 00000 n +0000242104 00000 n +0000242230 00000 n +0000245068 00000 n +0000245223 00000 n +0000245377 00000 n +0000245532 00000 n +0000245694 00000 n +0000246100 00000 n +0000244888 00000 n +0000242405 00000 n +0000245848 00000 n +0000246037 00000 n +0000248298 00000 n +0000247987 00000 n +0000246227 00000 n +0000248110 00000 n +0000248173 00000 n +0000250498 00000 n +0000249939 00000 n +0000248410 00000 n +0000250062 00000 n +0000250187 00000 n +0000456154 00000 n +0000253433 00000 n +0000253585 00000 n +0000254112 00000 n +0000253280 00000 n +0000250623 00000 n +0000253739 00000 n +0000256814 00000 n +0000256002 00000 n +0000254249 00000 n +0000256125 00000 n +0000256188 00000 n +0000256251 00000 n +0000256314 00000 n +0000256377 00000 n +0000256440 00000 n +0000256503 00000 n +0000259105 00000 n +0000259258 00000 n +0000260791 00000 n +0000258952 00000 n +0000256913 00000 n +0000259410 00000 n +0000259659 00000 n +0000259722 00000 n +0000259785 00000 n +0000259848 00000 n +0000259911 00000 n +0000259974 00000 n +0000260037 00000 n +0000260100 00000 n +0000260163 00000 n +0000260226 00000 n +0000260289 00000 n +0000260352 00000 n +0000260415 00000 n +0000260478 00000 n +0000260540 00000 n +0000260603 00000 n +0000260665 00000 n +0000260728 00000 n +0000262330 00000 n +0000262608 00000 n +0000262186 00000 n +0000260890 00000 n +0000262483 00000 n +0000263376 00000 n +0000263687 00000 n +0000263232 00000 n +0000262720 00000 n +0000263562 00000 n +0000265013 00000 n +0000264765 00000 n +0000263786 00000 n +0000264888 00000 n +0000456279 00000 n +0000266701 00000 n +0000267229 00000 n +0000266557 00000 n +0000265125 00000 n +0000266856 00000 n +0000268018 00000 n +0000267707 00000 n +0000267341 00000 n +0000267830 00000 n +0000267955 00000 n +0000270115 00000 n +0000270275 00000 n +0000270429 00000 n +0000270583 00000 n +0000270743 00000 n +0000270898 00000 n +0000271057 00000 n +0000271212 00000 n +0000271372 00000 n +0000271527 00000 n +0000271682 00000 n +0000271843 00000 n +0000272004 00000 n +0000272165 00000 n +0000272326 00000 n +0000272487 00000 n +0000272647 00000 n +0000272809 00000 n +0000272970 00000 n +0000273122 00000 n +0000273276 00000 n +0000273436 00000 n +0000275253 00000 n +0000275406 00000 n +0000275561 00000 n +0000275716 00000 n +0000275870 00000 n +0000276024 00000 n +0000276178 00000 n +0000276332 00000 n +0000276486 00000 n +0000276643 00000 n +0000276797 00000 n +0000276951 00000 n +0000277106 00000 n +0000277260 00000 n +0000273720 00000 n +0000269782 00000 n +0000268104 00000 n +0000273597 00000 n +0000277484 00000 n +0000274992 00000 n +0000273806 00000 n +0000277421 00000 n +0000279575 00000 n +0000279729 00000 n +0000279884 00000 n +0000280044 00000 n +0000280204 00000 n +0000280363 00000 n +0000280518 00000 n +0000280679 00000 n +0000280839 00000 n +0000281000 00000 n +0000281162 00000 n +0000281319 00000 n +0000281474 00000 n +0000281628 00000 n +0000281781 00000 n +0000282380 00000 n +0000279305 00000 n +0000277570 00000 n +0000281940 00000 n +0000282065 00000 n +0000282128 00000 n +0000282191 00000 n +0000282254 00000 n +0000282317 00000 n +0000284725 00000 n +0000284886 00000 n +0000285041 00000 n +0000285196 00000 n +0000285351 00000 n +0000285506 00000 n +0000285667 00000 n +0000285822 00000 n +0000285977 00000 n +0000286132 00000 n +0000286287 00000 n +0000286441 00000 n +0000286602 00000 n +0000286763 00000 n +0000286917 00000 n +0000287071 00000 n +0000287232 00000 n +0000287392 00000 n +0000287552 00000 n +0000287706 00000 n +0000287987 00000 n +0000284410 00000 n +0000282492 00000 n +0000287861 00000 n +0000287924 00000 n +0000456404 00000 n +0000288595 00000 n +0000001579 00000 f +0000000000 00000 f +0000289152 00000 n +0000288442 00000 n +0000288099 00000 n +0000288964 00000 n +0000289027 00000 n +0000288781 00000 n +0000289547 00000 n +0000300560 00000 n +0000289413 00000 n +0000289251 00000 n +0000300435 00000 n +0000293299 00000 n +0000400285 00000 n +0000299407 00000 n +0000293748 00000 n +0000389546 00000 n +0000298379 00000 n +0000293907 00000 n +0000370343 00000 n +0000297351 00000 n +0000294066 00000 n +0000350219 00000 n +0000296323 00000 n +0000294226 00000 n +0000333966 00000 n +0000296253 00000 n +0000294386 00000 n +0000294543 00000 n +0000400243 00000 n +0000295021 00000 n +0000389504 00000 n +0000295494 00000 n +0000370301 00000 n +0000295883 00000 n +0000350177 00000 n +0000296228 00000 n +0000333933 00000 n +0000300927 00000 n +0000307448 00000 n +0000300793 00000 n +0000300631 00000 n +0000307385 00000 n +0000377963 00000 n +0000306357 00000 n +0000306016 00000 n +0000306176 00000 n +0000377917 00000 n +0000452913 00000 n +0000307519 00000 n +0000307915 00000 n +0000307951 00000 n +0000308079 00000 n +0000308551 00000 n +0000309114 00000 n +0000309510 00000 n +0000310085 00000 n +0000311060 00000 n +0000318203 00000 n +0000318438 00000 n +0000325687 00000 n +0000325933 00000 n +0000334247 00000 n +0000350602 00000 n +0000370950 00000 n +0000378217 00000 n +0000389964 00000 n +0000400741 00000 n +0000418087 00000 n +0000418576 00000 n +0000439376 00000 n +0000440016 00000 n +0000452587 00000 n +0000456511 00000 n +0000456633 00000 n +0000456759 00000 n +0000456849 00000 n +0000456931 00000 n +0000469320 00000 n +0000469546 00000 n +0000469779 00000 n +0000470009 00000 n +0000470239 00000 n +0000470472 00000 n +0000470698 00000 n +0000470916 00000 n +0000471135 00000 n +0000471353 00000 n +0000471572 00000 n +0000471790 00000 n +0000472009 00000 n +0000472227 00000 n +0000472446 00000 n +0000472663 00000 n +0000472880 00000 n +0000473099 00000 n +0000473317 00000 n +0000473539 00000 n +0000473762 00000 n +0000473987 00000 n +0000474198 00000 n +0000474394 00000 n +0000474571 00000 n +0000474747 00000 n +0000474920 00000 n +0000475104 00000 n +0000475307 00000 n +0000475508 00000 n +0000475703 00000 n +0000475895 00000 n +0000476082 00000 n +0000476277 00000 n +0000476466 00000 n +0000476637 00000 n +0000476807 00000 n +0000476983 00000 n +0000477158 00000 n +0000477335 00000 n +0000477509 00000 n +0000477683 00000 n +0000477860 00000 n +0000478035 00000 n +0000478212 00000 n +0000478387 00000 n +0000478564 00000 n +0000478736 00000 n +0000478943 00000 n +0000479152 00000 n +0000479361 00000 n +0000479570 00000 n +0000479779 00000 n +0000479988 00000 n +0000480186 00000 n +0000480389 00000 n +0000480600 00000 n +0000480811 00000 n +0000481013 00000 n +0000481210 00000 n +0000481412 00000 n +0000481615 00000 n +0000481830 00000 n +0000482089 00000 n +0000482343 00000 n +0000482594 00000 n +0000482845 00000 n +0000483091 00000 n +0000483329 00000 n +0000483575 00000 n +0000483820 00000 n +0000484063 00000 n +0000484306 00000 n +0000484519 00000 n +0000484716 00000 n +0000484916 00000 n +0000485111 00000 n +0000485300 00000 n +0000485467 00000 n +0000485594 00000 n +0000485722 00000 n +0000485850 00000 n +0000485972 00000 n +0000486091 00000 n +0000486210 00000 n +0000486326 00000 n +0000486446 00000 n +0000486569 00000 n +0000486693 00000 n +0000486823 00000 n +0000486958 00000 n +0000487085 00000 n +0000487206 00000 n +0000487331 00000 n +0000487413 00000 n +0000487509 00000 n +0000487549 00000 n +0000487730 00000 n +trailer +<< /Size 1755 +/Root 1753 0 R +/Info 1754 0 R +/ID [<E15649D0D789AEAED1D20F4DA26A4232> <E15649D0D789AEAED1D20F4DA26A4232>] >> +startxref +488213 +%%EOF diff --git a/3/pms2.html b/3/pms2.html new file mode 100644 index 0000000..7f17920 --- /dev/null +++ b/3/pms2.html @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 22:39:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> + <div class="footnote-text"> + <!--l. 38--><p class="noindent" ><span class="footnote-mark"><a + id="fn1x3"> <sup class="textsuperscript">1</sup></a></span><span +class="ecrm-0800">Another unofficial EAPI ‘kdebuild-1’ was a series of extensions to EAPI ‘1’ formerly used by the Gentoo KDE</span> + <span +class="ecrm-0800">project. Some of its features have been included in EAPI ‘2’ or later.</span></p></div> + +</body></html> diff --git a/3/pms3.html b/3/pms3.html new file mode 100644 index 0000000..108e21d --- /dev/null +++ b/3/pms3.html @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 22:39:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn1x13"> <sup class="textsuperscript">1</sup></a></span><span +class="ecrm-0800">May change if a package has been updated (see</span><span +class="ecrm-0800"> </span><a +href="pms.html#x1-380004.4.4"><span +class="ecrm-0800">4.4.4</span><!--tex4ht:ref: sec:updates-dir --></a><span +class="ecrm-0800">)</span></div> +</body></html> diff --git a/3/pms4.html b/3/pms4.html new file mode 100644 index 0000000..2575f7c --- /dev/null +++ b/3/pms4.html @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 22:39:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn2x13"> <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. For example, a few configure scripts use this variable to find the </span><span +class="ectt-0800">aalib </span><span +class="ecrm-0800">package;</span> + <span +class="ecrm-0800">ebuilds calling such configure scripts must thus work around this.</span></div> +</body></html> diff --git a/3/pms5.html b/3/pms5.html new file mode 100644 index 0000000..5e94dda --- /dev/null +++ b/3/pms5.html @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 22:39:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn3x13"> <sup class="textsuperscript">3</sup></a></span><span +class="ecrm-0800">Not necessarily present when installing from a binary package</span></div> +</body></html> diff --git a/3/pms6.html b/3/pms6.html new file mode 100644 index 0000000..499b8ca --- /dev/null +++ b/3/pms6.html @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 22:39:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn4x13"> <sup class="textsuperscript">4</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</span> + <span +class="ecrm-0800">for the install and the replacement.</span></div> +</body></html> diff --git a/3/pms7.html b/3/pms7.html new file mode 100644 index 0000000..af319a1 --- /dev/null +++ b/3/pms7.html @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 22:39:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn5x13"> <sup class="textsuperscript">5</sup></a></span><span +class="ecrm-0800">Deprecated in favour of </span><span +class="ectt-0800">D</span><span +class="ecrm-0800">.</span></div> +</body></html> diff --git a/3/pms8.html b/3/pms8.html new file mode 100644 index 0000000..58b4a60 --- /dev/null +++ b/3/pms8.html @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 22:39:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> + <div class="footnote-text"> + <!--l. 28--><p class="noindent" ><span class="footnote-mark"><a + id="fn6x13"> <sup class="textsuperscript">6</sup></a></span><span +class="ecrm-0800">The required bash version was retroactively updated from 3.0 to 3.2 in November 2009 (see</span> + <a +href="http://www.gentoo.org/proj/en/council/meeting-logs/20091109.txt" class="url" ><span +class="ectt-0800">http://www.gentoo.org/proj/en/council/meeting-logs/20091109.txt</span></a><span +class="ecrm-0800">).</span></p></div> +</body></html> diff --git a/4/pms.css b/4/pms.css new file mode 100644 index 0000000..24e56d9 --- /dev/null +++ b/4/pms.css @@ -0,0 +1,265 @@ + +/* start css.sty */ +.cmr-7{font-size:70%;} +.cmmi-7{font-size:70%;font-style: italic;} +.cmmi-10{font-style: italic;} +.ecrm-1728{font-size:170%;} +.ecrm-1200{font-size:120%;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecrm-0900{font-size:90%;} +.ecrm-0800{font-size:80%;} +.ectt-0800{font-size:80%; font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.small-caps{font-variant: small-caps; } +p.noindent { text-indent: 0em } +td p.noindent { text-indent: 0em; margin-top:0em; } +p.nopar { text-indent: 0em; } +p.indent{ text-indent: 1.5em } +@media print {div.crosslinks {visibility:hidden;}} +a img { border-top: 0; border-left: 0; border-right: 0; } +center { margin-top:1em; margin-bottom:1em; } +td center { margin-top:0em; margin-bottom:0em; } +.Canvas { position:relative; } +img.math{vertical-align:middle;} +li p.indent { text-indent: 0em } +li p:first-child{ margin-top:0em; } +li p:last-child, li div:last-child { margin-bottom:0.5em; } +li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; } +.enumerate1 {list-style-type:decimal;} +.enumerate2 {list-style-type:lower-alpha;} +.enumerate3 {list-style-type:lower-roman;} +.enumerate4 {list-style-type:upper-alpha;} +div.newtheorem { margin-bottom: 2em; margin-top: 2em;} +.obeylines-h,.obeylines-v {white-space: nowrap; } +div.obeylines-v p { margin-top:0; margin-bottom:0; } +.overline{ text-decoration:overline; } +.overline img{ border-top: 1px solid black; } +td.displaylines {text-align:center; white-space:nowrap;} +.centerline {text-align:center;} +.rightline {text-align:right;} +div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; } +.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.fbox {display:table} +div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.minipage{width:100%;} +div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;} +div.center div {text-align: left;} +div.flushright, div.flushright div.flushright {text-align: right;} +div.flushright div {text-align: left;} +div.flushleft {text-align: left;} +.underline{ text-decoration:underline; } +.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; } +.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +.framebox-c {text-align:center;} +.framebox-l {text-align:left;} +.framebox-r {text-align:right;} +span.thank-mark{ vertical-align: super } +span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; } +div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; } +table.tabular td p{margin-top:0em;} +table.tabular {margin-left: auto; margin-right: auto;} +td p:first-child{ margin-top:0em; } +td p:last-child{ margin-bottom:0em; } +div.td00{ margin-left:0pt; margin-right:0pt; } +div.td01{ margin-left:0pt; margin-right:5pt; } +div.td10{ margin-left:5pt; margin-right:0pt; } +div.td11{ margin-left:5pt; margin-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +td.td00{ padding-left:0pt; padding-right:0pt; } +td.td01{ padding-left:0pt; padding-right:5pt; } +td.td10{ padding-left:5pt; padding-right:0pt; } +td.td11{ padding-left:5pt; padding-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +.hline hr, .cline hr{ height : 1px; margin:0px; } +.tabbing-right {text-align:right;} +span.TEX {letter-spacing: -0.125em; } +span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;} +a span.TEX span.E {text-decoration: none; } +span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;} +span.LATEX span.TEX{ position:relative; left: -0.4em; } +div.float, div.figure {margin-left: auto; margin-right: auto;} +div.float img {text-align:center;} +div.figure img {text-align:center;} +.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} +.marginpar p{margin-top:0.4em; margin-bottom:0.4em;} +table.equation {width:100%;} +.equation td{text-align:center; } +td.equation { margin-top:1em; margin-bottom:1em; } +td.equation-label { width:5%; text-align:center; } +td.eqnarray4 { width:5%; white-space: normal; } +td.eqnarray2 { width:5%; } +table.eqnarray-star, table.eqnarray {width:100%;} +div.eqnarray{text-align:center;} +div.array {text-align:center;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.pmatrix img{vertical-align:middle;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.bar-css {text-decoration:overline;} +img.cdots{vertical-align:middle;} +.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;} +.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;} +.index-item, .index-subitem, .index-subsubitem {display:block} +div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;} +div.caption span.id{font-weight: bold; white-space: nowrap; } +h1.partHead{text-align: center} +p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;} +.subparagraphHead, .likesubparagraphHead { font-weight: bold;} +.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;} +.verse{white-space:nowrap; margin-left:2em} +div.maketitle {text-align:center;} +h2.titleHead{text-align:center;} +div.maketitle{ margin-bottom: 2em; } +div.author, div.date {text-align:center;} +div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; } +div.author{white-space: nowrap;} +.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; } +h1.partHead{text-align: center} +.abstract p {margin-left:5%; margin-right:5%;} +div.abstract {width:100%;} +dt.enumerate-enumitem{float:left; clear:left; margin-left:1em; margin-right:1em;} +.figure img.graphics {margin-left:10%;} +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +div.longtable{text-align:center;} +dt.enumerate{float:left; clear:left; margin-right:0.2em; margin-left:2em;} +dt.compactenum{float:left; clear:left; margin-right:0.2em; margin-left:2em;} +div.verbatiminput {font-family: monospace; white-space: nowrap; } +div.algorithm table.caption { border-bottom: 1px solid black; margin-bottom:1pt; } +.ALCitem {width:2em; text-align:right;} +tr#TBL-2-1- td{border-top:0.11197em solid} +tr#TBL-2-1- td{border-bottom:0.06998em solid} +tr#TBL-2-6- td{border-bottom:0.11197em solid} +tr#TBL-3-1- td{border-top:0.11197em solid} +tr#TBL-3-2- td{border-bottom:0.06998em solid} +tr#TBL-3-7- td{border-bottom:0.11197em solid} +tr#TBL-4-1- td{border-top:0.11197em solid} +tr#TBL-4-1- td{border-bottom:0.06998em solid} +tr#TBL-4-6- td{border-bottom:0.11197em solid} +tr#TBL-5-1- td{border-top:0.11197em solid} +tr#TBL-5-1- td{border-bottom:0.06998em solid} +tr#TBL-5-6- td{border-bottom:0.11197em solid} +tr#TBL-6-1- td{border-top:0.11197em solid} +tr#TBL-6-1- td{border-bottom:0.06998em solid} +tr#TBL-6-6- td{border-bottom:0.11197em solid} +tr#TBL-7-1- td{border-top:0.11197em solid} +tr#TBL-7-1- td{border-bottom:0.06998em solid} +tr#TBL-7-6- td{border-bottom:0.11197em solid} +tr#TBL-8-1- td{border-top:0.11197em solid} +tr#TBL-8-1- td{border-bottom:0.06998em solid} +tr#TBL-8-6- td{border-bottom:0.11197em solid} +tr#TBL-9-1- td{border-top:0.11197em solid} +tr#TBL-9-1- td{border-bottom:0.06998em solid} +tr#TBL-9-6- td{border-bottom:0.11197em solid} +tr#TBL-10-1- td{border-top:0.11197em solid} +tr#TBL-10-1- td{border-bottom:0.06998em solid} +tr#TBL-10-6- td{border-bottom:0.11197em solid} +tr#TBL-11-1- td{border-top:0.11197em solid} +tr#TBL-11-1- td{border-bottom:0.06998em solid} +tr#TBL-11-6- td{border-bottom:0.11197em solid} +tr#TBL-12-1- td{border-top:0.11197em solid} +tr#TBL-12-1- td{border-bottom:0.06998em solid} +tr#TBL-12-6- td{border-bottom:0.11197em solid} +tr#TBL-13-1- td{border-top:0.11197em solid} +tr#TBL-13-1- td{border-bottom:0.06998em solid} +tr#TBL-13-6- td{border-bottom:0.11197em solid} +tr#TBL-14-1- td{border-top:0.11197em solid} +tr#TBL-14-1- td{border-bottom:0.06998em solid} +tr#TBL-14-6- td{border-bottom:0.11197em solid} +tr#TBL-15-1- td{border-top:0.11197em solid} +tr#TBL-15-1- td{border-bottom:0.06998em solid} +tr#TBL-15-6- td{border-bottom:0.11197em solid} +tr#TBL-16-1- td{border-top:0.11197em solid} +tr#TBL-16-1- td{border-bottom:0.06998em solid} +tr#TBL-16-6- td{border-bottom:0.11197em solid} +tr#TBL-17-1- td{border-top:0.11197em solid} +tr#TBL-17-1- td{border-bottom:0.06998em solid} +tr#TBL-17-6- td{border-bottom:0.11197em solid} +tr#TBL-18-2- td{border-bottom:0.11197em solid} +tr#TBL-18-4- td{border-bottom:0.06998em solid} +tr#TBL-18-15- 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-6- td{border-bottom:0.11197em solid} +tr#TBL-20-1- td{border-top:0.11197em solid} +tr#TBL-20-1- td{border-bottom:0.06998em solid} +tr#TBL-20-6- td{border-bottom:0.11197em solid} +tr#TBL-21-1- td{border-top:0.11197em solid} +tr#TBL-21-1- td{border-bottom:0.06998em solid} +tr#TBL-21-6- td{border-bottom:0.11197em solid} +tr#TBL-22-1- td{border-top:0.11197em solid} +tr#TBL-22-1- td{border-bottom:0.06998em solid} +tr#TBL-22-6- td{border-bottom:0.11197em solid} +tr#TBL-23-1- td{border-top:0.11197em solid} +tr#TBL-23-2- td{border-bottom:0.06998em solid} +tr#TBL-23-7- 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-6- td{border-bottom:0.11197em solid} +tr#TBL-25-1- td{border-top:0.11197em solid} +tr#TBL-25-1- td{border-bottom:0.06998em solid} +tr#TBL-25-6- td{border-bottom:0.11197em solid} +tr#TBL-26-1- td{border-top:0.11197em solid} +tr#TBL-26-1- td{border-bottom:0.06998em solid} +tr#TBL-26-6- td{border-bottom:0.11197em solid} +tr#TBL-27-1- td{border-top:0.11197em solid} +tr#TBL-27-1- td{border-bottom:0.06998em solid} +tr#TBL-27-6- td{border-bottom:0.11197em solid} +tr#TBL-28-1- td{border-top:0.11197em solid} +tr#TBL-28-1- td{border-bottom:0.06998em solid} +tr#TBL-28-6- td{border-bottom:0.11197em solid} +tr#TBL-29-1- td{border-top:0.11197em solid} +tr#TBL-29-1- td{border-bottom:0.06998em solid} +tr#TBL-29-6- td{border-bottom:0.11197em solid} +tr#TBL-30-1- td{border-top:0.11197em solid} +tr#TBL-30-1- td{border-bottom:0.06998em solid} +tr#TBL-30-6- td{border-bottom:0.11197em solid} +tr#TBL-31-1- td{border-top:0.11197em solid} +tr#TBL-31-1- td{border-bottom:0.06998em solid} +tr#TBL-31-6- td{border-bottom:0.11197em solid} +tr#TBL-32-1- td{border-top:0.11197em solid} +tr#TBL-32-1- td{border-bottom:0.06998em solid} +tr#TBL-32-6- td{border-bottom:0.11197em solid} +tr#TBL-33-1- td{border-top:0.11197em solid} +tr#TBL-33-1- td{border-bottom:0.06998em solid} +tr#TBL-33-6- td{border-bottom:0.11197em solid} +tr#TBL-34-2- td{border-bottom:0.11197em solid} +tr#TBL-34-5- td{border-bottom:0.06998em solid} +tr#TBL-34-17- td{border-bottom:0.11197em solid} +/* end css.sty */ + diff --git a/4/pms.html b/4/pms.html new file mode 100644 index 0000000..c89d793 --- /dev/null +++ b/4/pms.html @@ -0,0 +1,9933 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title>Package Manager Specification</title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 11:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> +<div class="maketitle"> + + + +<h2 class="titleHead">Package Manager Specification</h2> + <div class="author" ><span +class="ecrm-1200">Stephen P. Bennett</span> +<br /><a +href="mailto:spb@exherbo.org" ><span +class="ecrm-1200">spb@exherbo.org</span></a> <br class="and" /><span +class="ecrm-1200">Ciaran McCreesh</span> +<br /> <a +href="mailto:ciaran.mccreesh@googlemail.com" ><span +class="ecrm-1200">ciaran.mccreesh@googlemail.com</span></a></div> +<br /> +<div class="date" ><span +class="ecrm-1200">18th</span><span +class="ecrm-1200"> January</span><span +class="ecrm-1200"> 2011</span></div> + + +</div> + + +<h2 class="likechapterHead"><a + id="x1-1000"></a>Contents</h2> <div class="tableofcontents"> +<span class="chapterToc" >1 <a +href="#x1-80001" id="QQ2-1-8">Introduction</a></span> +<br /> <span class="sectionToc" >1.1 <a +href="#x1-90001.1" id="QQ2-1-9">Aims and Motivation</a></span> +<br /> <span class="sectionToc" >1.2 <a +href="#x1-100001.2" id="QQ2-1-10">Rationale</a></span> +<br /> <span class="sectionToc" >1.3 <a +href="#x1-110001.3" id="QQ2-1-11">Conventions</a></span> +<br /><span class="chapterToc" >2 <a +href="#x1-120002" id="QQ2-1-12">EAPIs</a></span> +<br /> <span class="sectionToc" >2.1 <a +href="#x1-130002.1" id="QQ2-1-13">Definition</a></span> +<br /> <span class="sectionToc" >2.2 <a +href="#x1-140002.2" id="QQ2-1-14">Defined EAPIs</a></span> +<br /> <span class="sectionToc" >2.3 <a +href="#x1-150002.3" id="QQ2-1-15">Reserved EAPIs</a></span> +<br /><span class="chapterToc" >3 <a +href="#x1-160003" id="QQ2-1-16">Names and Versions</a></span> +<br /> <span class="sectionToc" >3.1 <a +href="#x1-170003.1" id="QQ2-1-17">Restrictions upon Names</a></span> +<br />  <span class="subsectionToc" >3.1.1 <a +href="#x1-180003.1.1" id="QQ2-1-18">Category Names</a></span> +<br />  <span class="subsectionToc" >3.1.2 <a +href="#x1-200003.1.2" id="QQ2-1-20">Package Names</a></span> +<br />  <span class="subsectionToc" >3.1.3 <a +href="#x1-220003.1.3" id="QQ2-1-22">Slot Names</a></span> +<br />  <span class="subsectionToc" >3.1.4 <a +href="#x1-230003.1.4" id="QQ2-1-23">USE Flag Names</a></span> +<br />  <span class="subsectionToc" >3.1.5 <a +href="#x1-250003.1.5" id="QQ2-1-25">Repository Names</a></span> +<br />  <span class="subsectionToc" >3.1.6 <a +href="#x1-260003.1.6" id="QQ2-1-26">Keyword Names</a></span> +<br /> <span class="sectionToc" >3.2 <a +href="#x1-270003.2" id="QQ2-1-27">Version Specifications</a></span> +<br /> <span class="sectionToc" >3.3 <a +href="#x1-280003.3" id="QQ2-1-28">Version Comparison</a></span> +<br /> <span class="sectionToc" >3.4 <a +href="#x1-290003.4" id="QQ2-1-36">Uniqueness of versions</a></span> +<br /><span class="chapterToc" >4 <a +href="#x1-300004" id="QQ2-1-37">Tree Layout</a></span> +<br /> <span class="sectionToc" >4.1 <a +href="#x1-310004.1" id="QQ2-1-38">Top Level</a></span> +<br /> <span class="sectionToc" >4.2 <a +href="#x1-320004.2" id="QQ2-1-39">Category Directories</a></span> +<br /> <span class="sectionToc" >4.3 <a +href="#x1-330004.3" id="QQ2-1-40">Package Directories</a></span> +<br /> <span class="sectionToc" >4.4 <a +href="#x1-340004.4" id="QQ2-1-41">The Profiles Directory</a></span> +<br />  <span class="subsectionToc" >4.4.1 <a +href="#x1-350004.4.1" id="QQ2-1-42">The profiles.desc file</a></span> +<br />  <span class="subsectionToc" >4.4.2 <a +href="#x1-360004.4.2" id="QQ2-1-43">The thirdpartymirrors file</a></span> +<br />  <span class="subsectionToc" >4.4.3 <a +href="#x1-370004.4.3" id="QQ2-1-44">use.desc and related files</a></span> +<br />  <span class="subsectionToc" >4.4.4 <a +href="#x1-380004.4.4" id="QQ2-1-45">The updates directory</a></span> +<br /> <span class="sectionToc" >4.5 <a +href="#x1-390004.5" id="QQ2-1-46">The Licenses Directory</a></span> +<br /> <span class="sectionToc" >4.6 <a +href="#x1-400004.6" id="QQ2-1-47">The Eclass Directory</a></span> +<br /> <span class="sectionToc" >4.7 <a +href="#x1-410004.7" id="QQ2-1-48">The Metadata Directory</a></span> +<br />  <span class="subsectionToc" >4.7.1 <a +href="#x1-420004.7.1" id="QQ2-1-49">The metadata cache</a></span> + + +<br /><span class="chapterToc" >5 <a +href="#x1-430005" id="QQ2-1-50">Profiles</a></span> +<br /> <span class="sectionToc" >5.1 <a +href="#x1-440005.1" id="QQ2-1-51">General principles</a></span> +<br /> <span class="sectionToc" >5.2 <a +href="#x1-450005.2" id="QQ2-1-52">Files that make up a profile</a></span> +<br />  <span class="subsectionToc" >5.2.1 <a +href="#x1-460005.2.1" id="QQ2-1-53">The parent file</a></span> +<br />  <span class="subsectionToc" >5.2.2 <a +href="#x1-470005.2.2" id="QQ2-1-54">The eapi file</a></span> +<br />  <span class="subsectionToc" >5.2.3 <a +href="#x1-480005.2.3" id="QQ2-1-55">deprecated</a></span> +<br />  <span class="subsectionToc" >5.2.4 <a +href="#x1-490005.2.4" id="QQ2-1-56">make.defaults</a></span> +<br />  <span class="subsectionToc" >5.2.5 <a +href="#x1-500005.2.5" id="QQ2-1-57">virtuals</a></span> +<br />  <span class="subsectionToc" >5.2.6 <a +href="#x1-510005.2.6" id="QQ2-1-58">Simple line-based files</a></span> +<br />  <span class="subsectionToc" >5.2.7 <a +href="#x1-520005.2.7" id="QQ2-1-59">packages</a></span> +<br />  <span class="subsectionToc" >5.2.8 <a +href="#x1-530005.2.8" id="QQ2-1-60">packages.build</a></span> +<br />  <span class="subsectionToc" >5.2.9 <a +href="#x1-540005.2.9" id="QQ2-1-61">package.mask</a></span> +<br />  <span class="subsectionToc" >5.2.10 <a +href="#x1-560005.2.10" id="QQ2-1-63">package.provided</a></span> +<br />  <span class="subsectionToc" >5.2.11 <a +href="#x1-570005.2.11" id="QQ2-1-64">package.use</a></span> +<br />  <span class="subsectionToc" >5.2.12 <a +href="#x1-580005.2.12" id="QQ2-1-65">USE masking and forcing</a></span> +<br /> <span class="sectionToc" >5.3 <a +href="#x1-590005.3" id="QQ2-1-67">Profile variables</a></span> +<br />  <span class="subsectionToc" >5.3.1 <a +href="#x1-600005.3.1" id="QQ2-1-68">Incremental Variables</a></span> +<br />  <span class="subsectionToc" >5.3.2 <a +href="#x1-610005.3.2" id="QQ2-1-69">Specific variables and their meanings</a></span> +<br /><span class="chapterToc" >6 <a +href="#x1-620006" id="QQ2-1-70">Old-Style Virtual Packages</a></span> +<br /> <span class="sectionToc" >6.1 <a +href="#x1-640006.1" id="QQ2-1-72">Dependencies on virtual packages</a></span> +<br /><span class="chapterToc" >7 <a +href="#x1-650007" id="QQ2-1-73">Ebuild File Format</a></span> +<br /><span class="chapterToc" >8 <a +href="#x1-660008" id="QQ2-1-74">Ebuild-defined Variables</a></span> +<br /> <span class="sectionToc" >8.1 <a +href="#x1-680008.1" id="QQ2-1-76">Metadata invariance</a></span> +<br /> <span class="sectionToc" >8.2 <a +href="#x1-690008.2" id="QQ2-1-77">Mandatory Ebuild-defined Variables</a></span> +<br /> <span class="sectionToc" >8.3 <a +href="#x1-700008.3" id="QQ2-1-79">Optional Ebuild-defined Variables</a></span> +<br />  <span class="subsectionToc" >8.3.1 <a +href="#x1-710008.3.1" id="QQ2-1-81">EAPI</a></span> +<br />  <span class="subsectionToc" >8.3.2 <a +href="#x1-720008.3.2" id="QQ2-1-82"><span +class="ectt-1000">RDEPEND </span>value</a></span> +<br /> <span class="sectionToc" >8.4 <a +href="#x1-730008.4" id="QQ2-1-84">Magic Ebuild-defined Variables</a></span> +<br /><span class="chapterToc" >9 <a +href="#x1-760009" id="QQ2-1-88">Dependencies</a></span> +<br /> <span class="sectionToc" >9.1 <a +href="#x1-770009.1" id="QQ2-1-89">Dependency Classes</a></span> +<br /> <span class="sectionToc" >9.2 <a +href="#x1-780009.2" id="QQ2-1-90">Dependency Specification Format</a></span> +<br />  <span class="subsectionToc" >9.2.1 <a +href="#x1-790009.2.1" id="QQ2-1-92">All-of Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >9.2.2 <a +href="#x1-800009.2.2" id="QQ2-1-93">Use-conditional Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >9.2.3 <a +href="#x1-810009.2.3" id="QQ2-1-94">Any-of Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >9.2.4 <a +href="#x1-820009.2.4" id="QQ2-1-95">Exactly-one-of Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >9.2.5 <a +href="#x1-830009.2.5" id="QQ2-1-96">Package Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >9.2.6 <a +href="#x1-900009.2.6" id="QQ2-1-106">Use State Constraints</a></span> +<br />  <span class="subsectionToc" >9.2.7 <a +href="#x1-910009.2.7" id="QQ2-1-107">Restrict</a></span> +<br />  <span class="subsectionToc" >9.2.8 <a +href="#x1-920009.2.8" id="QQ2-1-108">Properties</a></span> + + +<br />  <span class="subsectionToc" >9.2.9 <a +href="#x1-930009.2.9" id="QQ2-1-109">SRC_URI</a></span> +<br /><span class="chapterToc" >10 <a +href="#x1-9400010" id="QQ2-1-110">Ebuild-defined Functions</a></span> +<br /> <span class="sectionToc" >10.1 <a +href="#x1-9500010.1" id="QQ2-1-111">List of Functions</a></span> +<br />  <span class="subsectionToc" >10.1.1 <a +href="#x1-9600010.1.1" id="QQ2-1-112">Initial Working Directories</a></span> +<br />  <span class="subsectionToc" >10.1.2 <a +href="#x1-9700010.1.2" id="QQ2-1-114">pkg_pretend</a></span> +<br />  <span class="subsectionToc" >10.1.3 <a +href="#x1-9800010.1.3" id="QQ2-1-116">pkg_setup</a></span> +<br />  <span class="subsectionToc" >10.1.4 <a +href="#x1-9900010.1.4" id="QQ2-1-117">src_unpack</a></span> +<br />  <span class="subsectionToc" >10.1.5 <a +href="#x1-10000010.1.5" id="QQ2-1-118">src_prepare</a></span> +<br />  <span class="subsectionToc" >10.1.6 <a +href="#x1-10100010.1.6" id="QQ2-1-120">src_configure</a></span> +<br />  <span class="subsectionToc" >10.1.7 <a +href="#x1-10200010.1.7" id="QQ2-1-122">src_compile</a></span> +<br />  <span class="subsectionToc" >10.1.8 <a +href="#x1-10300010.1.8" id="QQ2-1-124">src_test</a></span> +<br />  <span class="subsectionToc" >10.1.9 <a +href="#x1-10400010.1.9" id="QQ2-1-125">src_install</a></span> +<br />  <span class="subsectionToc" >10.1.10 <a +href="#x1-10500010.1.10" id="QQ2-1-127">pkg_preinst</a></span> +<br />  <span class="subsectionToc" >10.1.11 <a +href="#x1-10600010.1.11" id="QQ2-1-128">pkg_postinst</a></span> +<br />  <span class="subsectionToc" >10.1.12 <a +href="#x1-10700010.1.12" id="QQ2-1-129">pkg_prerm</a></span> +<br />  <span class="subsectionToc" >10.1.13 <a +href="#x1-10800010.1.13" id="QQ2-1-130">pkg_postrm</a></span> +<br />  <span class="subsectionToc" >10.1.14 <a +href="#x1-10900010.1.14" id="QQ2-1-131">pkg_config</a></span> +<br />  <span class="subsectionToc" >10.1.15 <a +href="#x1-11000010.1.15" id="QQ2-1-132">pkg_info</a></span> +<br />  <span class="subsectionToc" >10.1.16 <a +href="#x1-11100010.1.16" id="QQ2-1-134">pkg_nofetch</a></span> +<br />  <span class="subsectionToc" >10.1.17 <a +href="#x1-11200010.1.17" id="QQ2-1-135"><span +class="ectt-1000">default_ </span>Phase Functions</a></span> +<br /> <span class="sectionToc" >10.2 <a +href="#x1-11300010.2" id="QQ2-1-137">Call Order</a></span> +<br /><span class="chapterToc" >11 <a +href="#x1-11400011" id="QQ2-1-138">Eclasses</a></span> +<br /> <span class="sectionToc" >11.1 <a +href="#x1-11500011.1" id="QQ2-1-139">The inherit command</a></span> +<br /> <span class="sectionToc" >11.2 <a +href="#x1-11600011.2" id="QQ2-1-140">Eclass-defined Metadata Keys</a></span> +<br /> <span class="sectionToc" >11.3 <a +href="#x1-11700011.3" id="QQ2-1-141">EXPORT_FUNCTIONS</a></span> +<br /><span class="chapterToc" >12 <a +href="#x1-11800012" id="QQ2-1-143">The Ebuild Environment</a></span> +<br /> <span class="sectionToc" >12.1 <a +href="#x1-11900012.1" id="QQ2-1-144">Defined Variables</a></span> +<br />  <span class="subsectionToc" >12.1.1 <a +href="#x1-12000012.1.1" id="QQ2-1-148">USE and IUSE Handling</a></span> +<br />  <span class="subsectionToc" >12.1.2 <a +href="#x1-12100012.1.2" id="QQ2-1-149"><span +class="ectt-1000">REPLACING_VERSIONS </span>and <span +class="ectt-1000">REPLACED_BY_VERSION</span></a></span> +<br />  <span class="subsectionToc" >12.1.3 <a +href="#x1-12200012.1.3" id="QQ2-1-150">Offset-prefix variables <span +class="ectt-1000">EPREFIX</span>, <span +class="ectt-1000">EROOT </span>and <span +class="ectt-1000">ED</span></a></span> +<br /> <span class="sectionToc" >12.2 <a +href="#x1-12300012.2" id="QQ2-1-152">The state of variables between functions</a></span> +<br /> <span class="sectionToc" >12.3 <a +href="#x1-12500012.3" id="QQ2-1-155">Available commands</a></span> +<br />  <span class="subsectionToc" >12.3.1 <a +href="#x1-12600012.3.1" id="QQ2-1-156">System commands</a></span> +<br />  <span class="subsectionToc" >12.3.2 <a +href="#x1-12800012.3.2" id="QQ2-1-158">Commands provided by package dependencies</a></span> +<br />  <span class="subsectionToc" >12.3.3 <a +href="#x1-12900012.3.3" id="QQ2-1-159">Ebuild-specific Commands</a></span> +<br /> <span class="sectionToc" >12.4 <a +href="#x1-14500012.4" id="QQ2-1-189">The state of the system between functions</a></span> +<br /><span class="chapterToc" >13 <a +href="#x1-14600013" id="QQ2-1-190">Merging and Unmerging</a></span> +<br /> <span class="sectionToc" >13.1 <a +href="#x1-14800013.1" id="QQ2-1-192">Overview</a></span> +<br /> <span class="sectionToc" >13.2 <a +href="#x1-14900013.2" id="QQ2-1-193">Directories</a></span> + + +<br />  <span class="subsectionToc" >13.2.1 <a +href="#x1-15000013.2.1" id="QQ2-1-194">Permissions</a></span> +<br />  <span class="subsectionToc" >13.2.2 <a +href="#x1-15100013.2.2" id="QQ2-1-195">Empty Directories</a></span> +<br /> <span class="sectionToc" >13.3 <a +href="#x1-15200013.3" id="QQ2-1-196">Regular Files</a></span> +<br />  <span class="subsectionToc" >13.3.1 <a +href="#x1-15300013.3.1" id="QQ2-1-197">Permissions</a></span> +<br />  <span class="subsectionToc" >13.3.2 <a +href="#x1-15400013.3.2" id="QQ2-1-198">File modification times</a></span> +<br />  <span class="subsectionToc" >13.3.3 <a +href="#x1-15500013.3.3" id="QQ2-1-200">Configuration File Protection</a></span> +<br /> <span class="sectionToc" >13.4 <a +href="#x1-15600013.4" id="QQ2-1-201">Symlinks</a></span> +<br />  <span class="subsectionToc" >13.4.1 <a +href="#x1-15700013.4.1" id="QQ2-1-202">Rewriting</a></span> +<br /> <span class="sectionToc" >13.5 <a +href="#x1-15800013.5" id="QQ2-1-203">Hard links</a></span> +<br /> <span class="sectionToc" >13.6 <a +href="#x1-15900013.6" id="QQ2-1-204">Other Files</a></span> +<br /><span class="chapterToc" >14 <a +href="#x1-16000014" id="QQ2-1-205">Metadata Cache</a></span> +<br /> <span class="sectionToc" >14.1 <a +href="#x1-16100014.1" id="QQ2-1-206">Directory Contents</a></span> +<br /> <span class="sectionToc" >14.2 <a +href="#x1-16200014.2" id="QQ2-1-207">Cache File Format</a></span> +<br /><span class="chapterToc" >15 <a +href="#x1-16300015" id="QQ2-1-208">Glossary</a></span> +<br /><span class="appendixToc" >A <a +href="#x1-164000A" id="QQ2-1-209">metadata.xml</a></span> +<br /><span class="appendixToc" >B <a +href="#x1-165000B" id="QQ2-1-210">Unspecified Items</a></span> +<br /><span class="appendixToc" >C <a +href="#x1-166000C" id="QQ2-1-211">Historical Curiosities</a></span> +<br /> <span class="sectionToc" >C.1 <a +href="#x1-167000C.1" id="QQ2-1-212">If-else use blocks</a></span> +<br /> <span class="sectionToc" >C.2 <a +href="#x1-168000C.2" id="QQ2-1-214">cvs Versions</a></span> +<br /> <span class="sectionToc" >C.3 <a +href="#x1-169000C.3" id="QQ2-1-215">use.defaults</a></span> +<br /><span class="appendixToc" >D <a +href="#x1-170000D" id="QQ2-1-216">Feature Availability by EAPI</a></span> +<br /><span class="appendixToc" >E <a +href="#x1-172000E" id="QQ2-1-219">Differences Between EAPIs</a></span> +</div> + + +<h2 class="likechapterHead"><a + id="x1-2000"></a>List of Algorithms</h2><div class="tableofcontents"> +1 <a +href="#x1-28001r1">Version comparison top-level logic</a> +<br />2 <a +href="#x1-28008r2">Version comparison logic for numeric components</a> +<br />3 <a +href="#x1-28025r3">Version comparison logic for each numeric component after the first</a> +<br />4 <a +href="#x1-28041r4">Version comparison logic for letter components</a> +<br />5 <a +href="#x1-28049r5">Version comparison logic for suffixes</a> +<br />6 <a +href="#x1-28069r6">Version comparison logic for each suffix</a> +<br />7 <a +href="#x1-28083r7">Version comparison logic for revision components</a> +<br />8 <a +href="#x1-58001r8">USE masking logic</a> +<br />9 <a +href="#x1-136002r9">econf --libdir logic</a> +<br />10 <a +href="#x1-137001r10">Determining the library directory</a> +</div> + + +<h2 class="likechapterHead"><a + id="x1-3000"></a>Listings</h2><div class="tableofcontents"> +11.1 <a +href="#x1-117001r1">EXPORT_FUNCTIONS example: foo.eclass</a> +<br />12.1 <a +href="#x1-124001r1">Environment state between functions</a> +<br />12.2 <a +href="#x1-136017r2">einstall command</a> +<br />C.1 <a +href="#x1-167001r1">If-else use blocks</a> +</div> + + +<h2 class="likechapterHead"><a + id="x1-4000"></a>List of Tables</h2><div class="tableofcontents"><span class="lotToc" >8.1 <a +href="#x1-69001r1">EAPIs supporting <span +class="ectt-1000">IUSE </span>defaults</a></span><br /><span class="lotToc" >8.2 <a +href="#x1-70001r2">EAPIs supporting various +ebuild-defined variables</a></span><br /><span class="lotToc" >8.3 <a +href="#x1-72001r3">EAPIs with <span +class="ectt-1000">RDEPEND=DEPEND </span>Default</a></span><br /><span class="lotToc" >8.4 <a +href="#x1-75001r4">EAPIs +supporting <span +class="ectt-1000">DEFINED_PHASES</span></a></span><br /><span class="lotToc" >9.1 <a +href="#x1-78001r1">EAPIs supporting <span +class="ectt-1000">SRC_URI </span>arrows</a></span><br /><span class="lotToc" >9.2 <a +href="#x1-84001r2">EAPIs +supporting <span +class="ectt-1000">SLOT </span>dependencies</a></span><br /><span class="lotToc" >9.3 <a +href="#x1-84002r3">EAPIs supporting <span +class="ectt-1000">USE </span>dependencies</a></span><br /><span class="lotToc" >9.4 <a +href="#x1-86001r4">Exclamation +mark strengths for EAPIs</a></span><br /><span class="lotToc" >10.1 <a +href="#x1-96001r1">EAPIs with <span +class="ectt-1000">S </span>to <span +class="ectt-1000">WORKDIR </span>fallbacks</a></span><br /><span class="lotToc" >10.2 <a +href="#x1-97001r2">EAPIs +supporting <span +class="ectt-1000">pkg_pretend</span></a></span><br /><span class="lotToc" >10.3 <a +href="#x1-100001r3">EAPIs supporting <span +class="ectt-1000">src_prepare</span></a></span><br /><span class="lotToc" >10.4 <a +href="#x1-101001r4">EAPIs supporting +<span +class="ectt-1000">src_configure</span></a></span><br /><span class="lotToc" >10.5 <a +href="#x1-102001r5"><span +class="ectt-1000">src_compile </span>behaviour for EAPIs</a></span><br /><span class="lotToc" >10.6 <a +href="#x1-104001r6"><span +class="ectt-1000">src_install </span>behaviour +for EAPIs</a></span><br /><span class="lotToc" >10.7 <a +href="#x1-110001r7">EAPIs supporting <span +class="ectt-1000">pkg_info </span>on non-installed packages</a></span><br /><span class="lotToc" >10.8 <a +href="#x1-112001r8">EAPIs +supporting <span +class="ectt-1000">default_ </span>phase functions</a></span><br /><span class="lotToc" >12.1 <a +href="#x1-119002">Defined variables</a></span><br /><span class="lotToc" >12.2 <a +href="#x1-119008r2">EAPIs supporting various +env variables</a></span><br /><span class="lotToc" >12.3 <a +href="#x1-119009r3">EAPIs supporting offset-prefix env variables</a></span><br /><span class="lotToc" >12.4 <a +href="#x1-122001r4">EAPIs supporting +offset-prefix</a></span><br /><span class="lotToc" >12.5 <a +href="#x1-130001r5">EAPI Command Failure Behaviour</a></span><br /><span class="lotToc" >12.6 <a +href="#x1-131001r6">Banned commands</a></span><br /><span class="lotToc" >12.7 <a +href="#x1-136001r7">Extra +<span +class="ectt-1000">econf </span>arguments for EAPIs</a></span><br /><span class="lotToc" >12.8 <a +href="#x1-137018r8">EAPIs supporting <span +class="ectt-1000">dodoc -r</span></a></span><br /><span class="lotToc" >12.9 <a +href="#x1-137019r9">EAPIs supporting +symlinks for <span +class="ectt-1000">doins</span></a></span><br /><span class="lotToc" >12.10 <a +href="#x1-137020r10"><span +class="ectt-1000">doman </span>language support options for EAPIs</a></span><br /><span class="lotToc" >12.11 <a +href="#x1-139001r11">EAPIs +supporting controllable compression</a></span><br /><span class="lotToc" >12.12 <a +href="#x1-140001r12">EAPI Behaviour for Use Queries not in +IUSE_EFFECTIVE</a></span><br /><span class="lotToc" >12.13 <a +href="#x1-140002r13">EAPIs supporting empty third argument in <span +class="ectt-1000">use_with </span>and +<span +class="ectt-1000">use_enable</span></a></span><br /><span class="lotToc" >12.14 <a +href="#x1-142001r14"><span +class="ectt-1000">unpack </span>extensions for EAPIs</a></span><br /><span class="lotToc" >12.15 <a +href="#x1-142002r15">EAPIs supporting the <span +class="ectt-1000">default</span> +function</a></span><br /><span class="lotToc" >13.1 <a +href="#x1-154001r1">Preservation of file modification times (mtimes)</a></span><br /><span class="lotToc" >D.1 <a +href="#x1-171002">Features in EAPIs</a></span><br /> +</div> + + +<h3 class="likesectionHead"><a + id="x1-5000"></a>Acknowledgements</h3> +<!--l. 3--><p class="noindent" >Thanks to Mike Kelly (package manager provided utilities, section <a +href="#x1-12900012.3.3">12.3.3<!--tex4ht:ref: sec:pkg-mgr-commands --></a>), Danny van Dyk (ebuild +functions, section <a +href="#x1-9400010">10<!--tex4ht:ref: sec:ebuild-functions --></a>), David Leverton (various sections), Petteri Räty (environment state, +section <a +href="#x1-12300012.2">12.2<!--tex4ht:ref: sec:ebuild-env-state --></a>) and Ulrich Müller (various sections) for contributions. Thanks to Christian +Faulhammer for fixing some of the more horrible formatting screwups and providing the EAPI +cheat sheet. Thanks also to Mike Frysinger and Brian Harring for proof-reading and suggestions for +fixes and/or clarification. +</p><!--l. 13--><p class="noindent" > +</p> +<h3 class="likesectionHead"><a + id="x1-6000"></a>Copyright and Licence</h3> +<!--l. 15--><p class="noindent" >The bulk of this document is <span +class="cmsy-10">© </span>2007, 2008, 2009 Stephen Bennett and Ciaran McCreesh. +Contributions are owned by their respective authors, and may have been changed substantially +before inclusion. +</p><!--l. 19--><p class="noindent" >This document is released under the Creative Commons Attribution-Share Alike 3.0 Licence. The +full text of this licence can be found at <a +href="http://creativecommons.org/licenses/by-sa/3.0/" class="url" ><span +class="ectt-1000">http://creativecommons.org/licenses/by-sa/3.0/</span></a>. +</p><!--l. 22--><p class="noindent" > +</p> +<h3 class="likesectionHead"><a + id="x1-7000"></a>Reporting Issues</h3> +<!--l. 24--><p class="noindent" >Issues (inaccuracies, wording problems, omissions etc.) in this document should be reported via +Gentoo Bugzilla using product <span +class="ecti-1000">Gentoo Hosted Projects</span>, component <span +class="ecti-1000">PMS/EAPI </span>and the default +assignee. There should be one bug per issue, and one issue per bug. +</p><!--l. 28--><p class="noindent" >Patches (in <span +class="ectt-1000">git format-patch </span>form if possible) may be submitted either via Bugzilla or to the +<span +class="ectt-1000">gentoo-pms@gentoo.org </span>mailing list. Patches will be reviewed by the PMS team, who will do one +of the following: +</p><!--l. 33--><p class="noindent" > + </p><ul> + <li class="compactitem">Accept and apply the patch. + </li> + <li class="compactitem">Explain why the patch cannot be applied as-is. The patch may then be updated and + resubmitted if appropriate. + </li> + <li class="compactitem">Reject the patch outright. + </li> + <li class="compactitem">Take special action merited by the individual circumstances.</li></ul> +<!--l. 40--><p class="noindent" >When reporting issues, remember that this document is not the appropriate place for pushing +through changes to the tree or the package manager, except where those changes are +bugs. +</p><!--l. 43--><p class="noindent" >If any issue cannot be resolved by the PMS team, it may be escalated to the Gentoo +Council. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 1</span><br /><a + id="x1-80001"></a>Introduction</h2> +<h3 class="sectionHead"><span class="titlemark">1.1 </span> <a + id="x1-90001.1"></a>Aims and Motivation</h3> +<!--l. 5--><p class="noindent" >This document aims to fully describe the format of an ebuild repository and the ebuilds therein, +as well as certain aspects of package manager behaviour required to support such a +repository. +</p><!--l. 8--><p class="noindent" >This document is <span +class="ecti-1000">not </span>designed to be an introduction to ebuild development. Prior knowledge of +ebuild creation and an understanding of how the package management system works is assumed; +certain less familiar terms are explained in the Glossary in chapter <a +href="#x1-16300015">15<!--tex4ht:ref: sec:glossary --></a>. +</p><!--l. 12--><p class="noindent" >This document does not specify any user or package manager configuration information. +</p><!--l. 14--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">1.2 </span> <a + id="x1-100001.2"></a>Rationale</h3> +<!--l. 16--><p class="noindent" >At present the only definition of what an ebuild can assume about its environment, +and the only definition of what is valid in an ebuild, is the source code of the latest +Portage release and a general consensus about which features are too new to assume +availability. This has several drawbacks: not only is it impossible to change any aspect of +Portage behaviour without verifying that nothing in the tree relies upon it, but if a new +package manager should appear it becomes impossible to fully support such an ill-defined +standard. +</p><!--l. 23--><p class="noindent" >This document aims to address both of these concerns by defining almost all aspects of what an +ebuild repository looks like, and how an ebuild is allowed to behave. Thus, both Portage and other +package managers can change aspects of their behaviour not defined here without worry of +incompatibilities with any particular repository. +</p><!--l. 28--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">1.3 </span> <a + id="x1-110001.3"></a>Conventions</h3> +<!--l. 30--><p class="noindent" >Text in <span +class="ectt-1000">teletype </span>is used for filenames or variable names. <span +class="ecti-1000">Italic </span>text is used for terms with a +particular technical meaning in places where there may otherwise be ambiguity. +</p><!--l. 33--><p class="noindent" >The term <span +class="ecti-1000">package manager </span>is used throughout this document in a broad sense. Although some +parts of this document are only relevant to fully featured package managers, many items are +equally applicable to tools or other applications that interact with ebuilds or ebuild +repositories. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 2</span><br /><a + id="x1-120002"></a>EAPIs</h2> +<h3 class="sectionHead"><span class="titlemark">2.1 </span> <a + id="x1-130002.1"></a>Definition</h3> +<!--l. 5--><p class="noindent" >An EAPI can be thought of as a ‘version’ of this specification to which a package conforms. An +EAPI value is a string, 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-470005.2.2">5.2.2<!--tex4ht:ref: sec:profile-eapi --></a>. +</p><!--l. 18--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">2.2 </span> <a + id="x1-140002.2"></a>Defined EAPIs</h3> +<!--l. 20--><p class="noindent" >The following EAPIs are defined by this specification: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">0</span> </dt><dd +class="description">The ‘original’ base EAPI. + </dd><dt class="description"> +<span +class="ecbx-1000">1</span> </dt><dd +class="description">EAPI ‘1’ contains a number of extensions to EAPI ‘0’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘0’. + </dd><dt class="description"> +<span +class="ecbx-1000">2</span> </dt><dd +class="description">EAPI ‘2’ contains a number of extensions to EAPI ‘1’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘1’. + </dd><dt class="description"> +<span +class="ecbx-1000">3</span> </dt><dd +class="description">EAPI ‘3’ contains a number of extensions to EAPI ‘2’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘2’. + </dd><dt class="description"> +<span +class="ecbx-1000">4</span> </dt><dd +class="description">EAPI ‘4’ contains a number of extensions to EAPI ‘3’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘3’.</dd></dl> +<!--l. 34--><p class="noindent" >Except where explicitly noted, everything in this specification applies to all of the above +EAPIs.<span class="footnote-mark"><a +href="pms2.html#fn1x3"><sup class="textsuperscript">1</sup></a></span><a + id="x1-14001f1"></a> +</p> +<h3 class="sectionHead"><span class="titlemark">2.3 </span> <a + id="x1-150002.3"></a>Reserved EAPIs</h3> + + +<!--l. 43--><p class="noindent" > + </p><ul> + <li class="compactitem">EAPIs whose value consists purely of an integer are reserved for future versions of this + specification. + </li> + <li class="compactitem">EAPIs whose value starts with the string <span +class="ectt-1000">paludis- </span>are reserved for experimental use + by the Paludis package manager.</li></ul> + + + + + + +<h2 class="chapterHead"><span class="titlemark">Chapter 3</span><br /><a + id="x1-160003"></a>Names and Versions</h2> +<h3 class="sectionHead"><span class="titlemark">3.1 </span> <a + id="x1-170003.1"></a>Restrictions upon Names</h3> +<!--l. 5--><p class="noindent" >No name may be empty. Package managers must not impose fixed upper boundaries upon the +length of any name. A package manager should indicate or reject any name that is invalid +according to these rules. +</p><!--l. 8--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.1 </span> <a + id="x1-180003.1.1"></a>Category Names</h4> +<!--l. 9--><p class="noindent" >A category name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_.-</span>]. It must not begin with a +hyphen or a dot. +</p> +<!--l. 12--><p class="noindent" ><span class="paragraphHead"><a + id="x1-190003.1.1"></a><span +class="ecbx-1000">Note:</span></span> +A hyphen is <span +class="ecti-1000">not </span>required because of the <span +class="ectt-1000">virtual </span>category. Usually, however, category names will +contain a hyphen. +</p><!--l. 15--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.2 </span> <a + id="x1-200003.1.2"></a>Package Names</h4> +<!--l. 16--><p class="noindent" >A package name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_-</span>]. It must not begin with a +hyphen, and must not end in a hyphen followed by one or more digits. +</p> +<!--l. 19--><p class="noindent" ><span class="paragraphHead"><a + id="x1-210003.1.2"></a><span +class="ecbx-1000">Note:</span></span> +A package name does not include the category. The term <span +class="ecti-1000">qualified package name </span>is used where a +<span +class="ectt-1000">category/package </span>pair is meant. +</p><!--l. 22--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.3 </span> <a + id="x1-220003.1.3"></a>Slot Names</h4> +<!--l. 24--><p class="noindent" >A slot name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_.-</span>]. It must not begin with a hyphen +or a dot. + + +</p><!--l. 27--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.4 </span> <a + id="x1-230003.1.4"></a>USE Flag Names</h4> +<!--l. 28--><p class="noindent" >A USE flag name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_@-</span>]. It must begin with an +alphanumeric character. Underscores should be considered reserved for <span +class="ectt-1000">USE_EXPAND</span>, as described in +section <a +href="#x1-12000012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>. +</p> +<!--l. 32--><p class="noindent" ><span class="paragraphHead"><a + id="x1-240003.1.4"></a><span +class="ecbx-1000">Note:</span></span> +The at-sign is required for <span +class="ectt-1000">LINGUAS</span>. +</p><!--l. 34--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.5 </span> <a + id="x1-250003.1.5"></a>Repository Names</h4> +<!--l. 36--><p class="noindent" >A repository name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9_-</span>]. It must not begin with a +hyphen. +</p><!--l. 39--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.6 </span> <a + id="x1-260003.1.6"></a>Keyword Names</h4> +<!--l. 41--><p class="noindent" >A keyword name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9_-</span>]. It must not begin with a +hyphen. In contexts where it makes sense to do so, a keyword name may be prefixed by a tilde or a +hyphen. In <span +class="ectt-1000">KEYWORDS</span>, <span +class="ectt-1000">-* </span>is also acceptable as a keyword, to indicate that a package will only work +on listed targets. +</p><!--l. 46--><p class="noindent" >A tilde prefixed keyword is, by convention, used to indicate a less stable package. It is generally +assumed that any user accepting keyword <span +class="ectt-1000">~foo </span>will also accept <span +class="ectt-1000">foo</span>. +</p><!--l. 49--><p class="noindent" >The exact meaning of any keywords value is beyond the scope of this specification. +</p><!--l. 51--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">3.2 </span> <a + id="x1-270003.2"></a>Version Specifications</h3> +<!--l. 52--><p class="noindent" >The package manager must not impose fixed limits upon the number of version components. +Package managers should indicate or reject any version that is invalid according to these +rules. +</p><!--l. 55--><p class="noindent" >A version starts with the number part, which is in the form <span +class="ectt-1000">[0-9]+(</span><span +class="cmsy-10">\</span><span +class="ectt-1000">.[0-9]+)* </span>(a positive +integer, followed by zero or more dot-prefixed positive integers). +</p><!--l. 58--><p class="noindent" >This may optionally be followed by one of <span +class="ectt-1000">[a-z] </span>(a lowercase letter). +</p><!--l. 60--><p class="noindent" >This may be followed by zero or more of the suffixes <span +class="ectt-1000">_alpha</span>, <span +class="ectt-1000">_beta</span>, <span +class="ectt-1000">_pre</span>, <span +class="ectt-1000">_rc </span>or <span +class="ectt-1000">_p</span>, which +themselves may be suffixed by an optional integer. +</p><!--l. 63--><p class="noindent" >This may optionally be followed by the suffix <span +class="ectt-1000">-r </span>followed immediately by an integer (the “revision +number”). If this suffix is not present, it is assumed to be <span +class="ectt-1000">-r0</span>. + + +</p><!--l. 66--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">3.3 </span> <a + id="x1-280003.3"></a>Version Comparison</h3> +<!--l. 68--><p class="noindent" >Version specifications are compared component by component, moving from left to right, as +detailed in Algorithm <a +href="#x1-28001r1">1<!--tex4ht:ref: alg:version-comparison --></a> and sub-algorithms. If a sub-algorithm returns a decision, then that is the +result of the whole comparison; if it terminates without returning a decision, the process continues +from the point from which it was invoked. +</p> +<div class="algorithm"> + + +<!--l. 75--><p class="noindent" ><a + id="x1-28001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 1: </span><span +class="content">Version comparison top-level logic</span></div><!--tex4ht:label?: x1-28001r1 --> +<div class="algorithmic"> +<a + id="x1-28002r1"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28003r2"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> compare numeric components using Algorithm <a +href="#x1-28008r2">2<!--tex4ht:ref: alg:version-comparison-numeric --></a> <a + id="x1-28004r3"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> compare letter components using Algorithm <a +href="#x1-28041r4">4<!--tex4ht:ref: alg:version-comparison-letter --></a> <a + id="x1-28005r4"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> compare suffixes using Algorithm <a +href="#x1-28049r5">5<!--tex4ht:ref: alg:version-comparison-suffix --></a> <a + id="x1-28006r5"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> compare revision components using Algorithm <a +href="#x1-28083r7">7<!--tex4ht:ref: alg:version-comparison-revision --></a> <a + id="x1-28007r6"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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. 87--><p class="noindent" ><a + id="x1-28008r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 2: </span><span +class="content">Version comparison logic for numeric components</span></div><!--tex4ht:label?: x1-28008r2 --> +<div class="algorithmic"> +<a + id="x1-28009r7"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28010r8"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28011r9"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28012r10"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28013r11"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28014r12"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-28015r13"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28016r14"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28017r15"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28018r16"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-28025r3">3<!--tex4ht:ref: alg:version-comparison --></a> + </span><a + id="x1-28019r17"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span><a + id="x1-28020r18"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </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-28021r19"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28022r20"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </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-28023r21"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28024r22"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 109--><p class="noindent" ><a + id="x1-28025r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 3: </span><span +class="content">Version comparison logic for each numeric component after the first</span></div><!--tex4ht:label?: x1-28025r3 --> +<div class="algorithmic"> +<a + id="x1-28026r23"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28027r24"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28028r25"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28029r26"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28030r27"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28031r28"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28032r29"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28033r30"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-28034r31"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-28035r32"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-28036r33"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28037r34"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-28038r35"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28039r36"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-28040r37"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 130--><p class="noindent" ><a + id="x1-28041r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 4: </span><span +class="content">Version comparison logic for letter components</span></div><!--tex4ht:label?: x1-28041r4 --> +<div class="algorithmic"> +<a + id="x1-28042r38"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28043r39"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28044r40"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28045r41"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28046r42"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28047r43"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28048r44"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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. 143--><p class="noindent" ><a + id="x1-28049r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 5: </span><span +class="content">Version comparison logic for suffixes</span></div><!--tex4ht:label?: x1-28049r5 --> +<div class="algorithmic"> +<a + id="x1-28050r45"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28051r46"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28052r47"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28053r48"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28054r49"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28069r6">6<!--tex4ht:ref: alg:version-comparison --></a> + </span><a + id="x1-28055r50"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span><a + id="x1-28056r51"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28057r52"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28058r53"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28059r54"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-28060r55"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28061r56"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-28062r57"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </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-28063r58"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-28064r59"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28065r60"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-28066r61"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">17:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28067r62"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">18:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-28068r63"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">19:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 168--><p class="noindent" ><a + id="x1-28069r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 6: </span><span +class="content">Version comparison logic for each suffix</span></div><!--tex4ht:label?: x1-28069r6 --> +<div class="algorithmic"> +<a + id="x1-28070r64"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28071r65"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28072r66"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28073r67"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28074r68"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28075r69"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28076r70"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28077r71"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-28078r72"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28079r73"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28080r74"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-28081r75"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28082r76"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 187--><p class="noindent" ><a + id="x1-28083r7"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 7: </span><span +class="content">Version comparison logic for revision components</span></div><!--tex4ht:label?: x1-28083r7 --> +<div class="algorithmic"> +<a + id="x1-28084r77"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28085r78"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28086r79"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28087r80"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-28088r81"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-28089r82"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-28090r83"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-290003.4"></a>Uniqueness of versions</h3> +<!--l. 201--><p class="noindent" >No two packages in a given repository may have the same qualified package name and equal +versions. For example, a repository may not contain more than one of <span +class="ectt-1000">foo-bar/baz-1.0.2</span>, +<span +class="ectt-1000">foo-bar/baz-1.0.2-r0 </span>and <span +class="ectt-1000">foo-bar/baz-1.000.2</span>. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 4</span><br /><a + id="x1-300004"></a>Tree Layout</h2> +<!--l. 3--><p class="noindent" >This chapter defines the layout on-disk of an ebuild repository. In all cases below where a file or +directory is specified, a symlink to a file or directory is also valid. In this case, the package manager +must follow the operating system’s semantics for symbolic links and must not behave differently +from normal. +</p> +<h3 class="sectionHead"><span class="titlemark">4.1 </span> <a + id="x1-310004.1"></a>Top Level</h3> +<!--l. 10--><p class="noindent" >An ebuild repository shall occupy one directory on disk, with the following subdirectories: + </p><ul> + <li class="compactitem">One directory per category, whose name shall be the name of the category. The layout + of these directories shall be as described in section <a +href="#x1-320004.2">4.2<!--tex4ht:ref: sec:category-dirs --></a>. + </li> + <li class="compactitem">A <span +class="ectt-1000">profiles </span>directory, described in section <a +href="#x1-340004.4">4.4<!--tex4ht:ref: sec:profiles-dir --></a>. + </li> + <li class="compactitem">A <span +class="ectt-1000">licenses </span>directory (optional), described in section <a +href="#x1-390004.5">4.5<!--tex4ht:ref: sec:licenses-dir --></a>. + </li> + <li class="compactitem">An <span +class="ectt-1000">eclass </span>directory (optional), described in section <a +href="#x1-400004.6">4.6<!--tex4ht:ref: sec:eclass-dir --></a>. + </li> + <li class="compactitem">A <span +class="ectt-1000">metadata </span>directory (optional), described in section <a +href="#x1-410004.7">4.7<!--tex4ht:ref: sec:metadata-dir --></a>. + </li> + <li class="compactitem">Other optional support files and directories (skeleton ebuilds or ChangeLogs, for + example) may exist but are not covered by this specification. The package manager + must ignore any of these files or directories that it does not recognise. + </li></ul> +<!--l. 24--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.2 </span> <a + id="x1-320004.2"></a>Category Directories</h3> +<!--l. 27--><p class="noindent" >Each category provided by the repository (see also: the <span +class="ectt-1000">profiles/categories </span>file, section <a +href="#x1-340004.4">4.4<!--tex4ht:ref: profiles-categories --></a>) +shall be contained in one directory, whose name shall be that of the category. Each category +directory shall contain: + </p><ul> + <li class="compactitem">A <span +class="ectt-1000">metadata.xml </span>file, as described in appendix <a +href="#x1-164000A">A<!--tex4ht:ref: sec:metadata-xml --></a>. Optional. + </li> + <li class="compactitem">Zero or more package directories, one for each package in the category, as described + in section <a +href="#x1-330004.3">4.3<!--tex4ht:ref: sec:package-dirs --></a>. The name of the package directory shall be the corresponding package + name.</li></ul> +<!--l. 38--><p class="noindent" >Category directories may contain additional files, whose purpose is not covered by this +specification. Additional directories that are not for a package may <span +class="ecti-1000">not </span>be present, to avoid +conflicts with package name directories; an exception is made for filesystem components whose +name starts with a dot, which the package manager must ignore, and for any directory named +<span +class="ectt-1000">CVS</span>. +</p><!--l. 43--><p class="noindent" >It is not required that a directory exists for each category provided by the repository. A category +directory that does not exist shall be considered equivalent to an empty category (and by +extension, a package manager may treat an empty category as a category that does not +exist). + + +</p><!--l. 47--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.3 </span> <a + id="x1-330004.3"></a>Package Directories</h3> +<!--l. 50--><p class="noindent" >A package directory contains the following: + </p><ul> + <li class="compactitem">Zero or more ebuilds. These are as described in section <a +href="#x1-650007">7<!--tex4ht:ref: sec:ebuild-format --></a> and others. + </li> + <li class="compactitem">A <span +class="ectt-1000">metadata.xml </span>file, as described in appendix <a +href="#x1-164000A">A<!--tex4ht:ref: sec:metadata-xml --></a>. Optional only for legacy support. + </li> + <li class="compactitem">A <span +class="ectt-1000">ChangeLog</span>, in a format determined by the provider of the repository. Optional. + </li> + <li class="compactitem">A <span +class="ectt-1000">Manifest </span>file, whose format is described in <span class="cite">[<a +href="#XGlep44">1</a>]</span>. + </li> + <li class="compactitem">A <span +class="ectt-1000">files </span>directory, containing any support files needed by the ebuilds. Optional.</li></ul> +<!--l. 60--><p class="noindent" >Any ebuild in a package directory must be named <span +class="ectt-1000">name-ver.suffix</span>, where: +</p><!--l. 63--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">name </span>is the (unqualified) package name. + </li> + <li class="compactitem"><span +class="ectt-1000">ver </span>is the package’s version. + </li> + <li class="compactitem"> <span +class="ectt-1000">suffix </span>is <span +class="ectt-1000">ebuild</span>.</li></ul> +<!--l. 68--><p class="noindent" >Package managers must ignore any ebuild file that does not match these rules. +</p><!--l. 70--><p class="noindent" >A package directory that contains no correctly named ebuilds shall be considered a package with +no versions. A package with no versions shall be considered equivalent to a package that does not +exist (and by extension, a package manager may treat a package that does not exist as a package +with no versions). +</p><!--l. 75--><p class="noindent" >A package directory may contain other files or directories, whose purpose is not covered by this +specification. +</p><!--l. 78--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.4 </span> <a + id="x1-340004.4"></a>The Profiles Directory</h3> +<!--l. 81--><p class="noindent" >The profiles directory shall contain zero or more profile directories as described in section <a +href="#x1-430005">5<!--tex4ht:ref: sec:profiles --></a>, as +well as the following files and directories. In any line-based file, lines beginning with a # character +are treated as comments, whilst blank lines are ignored. All contents of this directory, with the +exception of <span +class="ectt-1000">repo_name</span>, are optional. +</p><!--l. 88--><p class="noindent" >The profiles directory may contain an <span +class="ectt-1000">eapi </span>file. This file, if it exists, must contain a single line +with the name of an EAPI. This specifies the EAPI to use when handling the profiles +directory; a package manager must not attempt to use any repository whose profile +directory requires an EAPI it does not support. If no <span +class="ectt-1000">eapi </span>file is present, EAPI 0 shall be +used. +</p><!--l. 93--><p class="noindent" >If the repository is not intended to be stand-alone, the contents of these files are to be taken from +or merged with the master repository as necessary. +</p><!--l. 96--><p class="noindent" >Other files not described by this specification may exist, but may not be relied upon. The package +manager must ignore any files in this directory that it does not recognise. + + + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">arch.list</span> </dt><dd +class="description"> Contains a list, one entry per line, of permissible values for the <span +class="ectt-1000">ARCH </span>variable, + and hence permissible keywords for packages in this repository. + </dd><dt class="description"> +<span +class="ecbx-1000">categories</span> </dt><dd +class="description"> Contains a list, one entry per line, of categories provided by this repository. + </dd><dt class="description"> +<span +class="ecbx-1000">eapi</span> </dt><dd +class="description">See above. + </dd><dt class="description"> +<span +class="ecbx-1000">info_pkgs</span> </dt><dd +class="description">Contains a list, one entry per line, of qualified package names. Any package + matching one of these is to be listed when a package manager displays a ‘system + information’ listing. + </dd><dt class="description"> +<span +class="ecbx-1000">info_vars</span> </dt><dd +class="description">Contains a list, one entry per line, of profile, configuration, and environment + variables which are considered to be of interest. The value of each of these variables + may be shown when the package manager displays a ‘system information’ listing. + </dd><dt class="description"> +<span +class="ecbx-1000">package.mask</span> </dt><dd +class="description"> Contains a list, one entry per line, of package dependency specifications + (using the directory’s EAPI). Any package version matching one of these is considered + to be masked, and will not be installed regardless of profile unless it is unmasked by + the user configuration. + </dd><dt class="description"> +<span +class="ecbx-1000">profiles.desc</span> </dt><dd +class="description">Described below in section <a +href="#x1-350004.4.1">4.4.1<!--tex4ht:ref: sec:profiles.desc --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">repo_name</span> </dt><dd +class="description">Contains, on a single line, the name of this repository. The repository name + must conform to section <a +href="#x1-250003.1.5">3.1.5<!--tex4ht:ref: sec:repository-names --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">thirdpartymirrors</span> </dt><dd +class="description">Described below in section <a +href="#x1-360004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">use.desc</span> </dt><dd +class="description">Contains descriptions of valid global USE flags for this repository. The format is + described in section <a +href="#x1-370004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">use.local.desc</span> </dt><dd +class="description">Contains descriptions of valid local USE flags for this repository, along with + the packages to which they apply. The format is as described in section <a +href="#x1-370004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">desc/</span> </dt><dd +class="description">This directory contains files analogous to <span +class="ectt-1000">use.desc </span>for the various <span +class="ectt-1000">USE_EXPAND</span> + variables. Each file in it is named <span +class="ectt-1000"><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-370004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>. The <span +class="ectt-1000">USE_EXPAND </span>name is <span +class="ecti-1000">not </span>included as + a prefix here. + </dd><dt class="description"> +<span +class="ecbx-1000">updates/</span> </dt><dd +class="description">This directory is described in section <a +href="#x1-380004.4.4">4.4.4<!--tex4ht:ref: sec:updates-dir --></a>.</dd></dl> +<!--l. 131--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.1 </span> <a + id="x1-350004.4.1"></a>The profiles.desc file</h4> +<!--l. 133--><p class="noindent" ><span +class="ectt-1000">profiles.desc </span>is a line-based file, with the standard commenting rules from section <a +href="#x1-340004.4">4.4<!--tex4ht:ref: sec:profiles-dir --></a>, +containing a list of profiles that are valid for use, along with their associated architecture and +status. Each line has the format: + + +</p> +<div class="verbatim" id="verbatim-1"> +<keyword> <profile path> <stability></div> +<!--l. 140--><p class="nopar" > +</p><!--l. 142--><p class="noindent" >Where: +</p><!--l. 145--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000"><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. 154--><p class="noindent" >Fields are whitespace-delimited. +</p><!--l. 156--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.2 </span> <a + id="x1-360004.4.2"></a>The thirdpartymirrors file</h4> +<!--l. 158--><p class="noindent" ><span +class="ectt-1000">thirdpartymirrors </span>is another simple line-based file, describing the valid mirrors for use with +<span +class="ectt-1000">mirror:// </span>URIs in this repository, and the associated download locations. The format of each line +is: + + +</p> +<div class="verbatim" id="verbatim-2"> +<mirror name> <mirror 1> <mirror 2> ... <mirror n></div> +<!--l. 163--><p class="nopar" >Fields are whitespace-delimited. When parsing a URI of the form <span +class="ectt-1000">mirror://name/path/filename</span>, +where the <span +class="ectt-1000">path/ </span>part is optional, the <span +class="ectt-1000">thirdpartymirrors </span>file is searched for a line whose first field +is <span +class="ectt-1000">name</span>. Then the download URIs in the subsequent fields have <span +class="ectt-1000">path/filename </span>appended to them +to generate the URIs from which a download is attempted. +</p><!--l. 169--><p class="noindent" >Each mirror name may appear at most once in a file. Behaviour when a mirror name appears +multiple times is undefined. Behaviour when a mirror is defined in terms of another mirror is +undefined. A package manager may choose to fetch from all of or a subset of the listed mirrors, and +may use an order other than the one described. +</p><!--l. 174--><p class="noindent" >The mirror with the name equal to the repository’s name (and if the repository has a master, the +master’s name) may be consulted for all downloads. +</p><!--l. 177--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.3 </span> <a + id="x1-370004.4.3"></a>use.desc and related files</h4> +<!--l. 179--><p class="noindent" ><span +class="ectt-1000">use.desc </span>contains descriptions of every valid global USE flag for this repository. It is a +line-based file with the standard rules for comments and blank lines. The format of each line +is: + + +</p> +<div class="verbatim" id="verbatim-3"> +<flagname> - <description></div> +<!--l. 183--><p class="nopar" > +</p><!--l. 185--><p class="noindent" ><span +class="ectt-1000">use.local.desc </span>contains descriptions of every valid local USE flag—those that apply only to a +small number of packages, or that have different meanings for different packages. Its format +is: + + +</p> +<div class="verbatim" id="verbatim-4"> +<category/package>:<flagname> - <description></div> +<!--l. 189--><p class="nopar" >Flags must be listed once for each package to which they apply, or if a flag is listed in both +<span +class="ectt-1000">use.desc </span>and <span +class="ectt-1000">use.local.desc</span>, it must be listed once for each package for which its meaning +differs from that described in <span +class="ectt-1000">use.desc</span>. +</p><!--l. 194--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.4 </span> <a + id="x1-380004.4.4"></a>The updates directory</h4> +<!--l. 196--><p class="noindent" >The <span +class="ectt-1000">updates </span>directory is used to inform the package manager that a package has moved +categories, names, or that a version has changed SLOT. It contains one file per quarter year, +named <span +class="ectt-1000">[1-4]Q-[YYYY] </span>for the first to fourth quarter of a given year, for example <span +class="ectt-1000">1Q-2004 </span>or +<span +class="ectt-1000">3Q-2006</span>. The format of each file is again line-based, with each line having one of the following +formats: + + +</p> +<div class="verbatim" id="verbatim-5"> +move <qpn1> <qpn2> + <br />slotmove <spec> <slot1> <slot2></div> +<!--l. 204--><p class="nopar" >The first form, where <span +class="ectt-1000">qpn1 </span>and <span +class="ectt-1000">qpn2 </span>are <span +class="ecti-1000">qualified package names</span>, instructs the package +manager that the package <span +class="ectt-1000">qpn1 </span>has changed name, category, or both, and is now called +<span +class="ectt-1000">qpn2</span>. +</p><!--l. 208--><p class="noindent" >The second form instructs the package manager that any currently installed package version +matching package dependency specification <span +class="ectt-1000">spec </span>whose <span +class="ectt-1000">SLOT </span>is set to <span +class="ectt-1000">slot1 </span>should have it +updated to <span +class="ectt-1000">slot2</span>. +</p><!--l. 212--><p class="noindent" >Any name that has appeared as the origin of a move must not be reused in the future. Any slot +that has appeared as the origin of a slot move may not be used by packages matching the spec of +that slot move in the future. +</p><!--l. 216--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.5 </span> <a + id="x1-390004.5"></a>The Licenses Directory</h3> +<!--l. 219--><p class="noindent" >The <span +class="ectt-1000">licenses </span>directory shall contain copies of the licenses used by packages in the repository. +Each file will be named according to the name used in the <span +class="ectt-1000">LICENSE </span>variable as described in +section <a +href="#x1-690008.2">8.2<!--tex4ht:ref: ebuild-var-LICENSE --></a>, and will contain the complete text of the license in human-readable form. Plain text +format is strongly preferred but not required. +</p><!--l. 224--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.6 </span> <a + id="x1-400004.6"></a>The Eclass Directory</h3> +<!--l. 227--><p class="noindent" >The <span +class="ectt-1000">eclass </span>directory shall contain copies of the eclasses provided by this repository. The format of +these files is described in section <a +href="#x1-11400011">11<!--tex4ht:ref: sec:eclasses --></a>. It may also contain, in their own directory, support files +needed by these eclasses. +</p><!--l. 231--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.7 </span> <a + id="x1-410004.7"></a>The Metadata Directory</h3> +<!--l. 234--><p class="noindent" >The <span +class="ectt-1000">metadata </span>directory contains various repository-level metadata that is not contained in +<span +class="ectt-1000">profiles/</span>. All contents are optional. In this standard only the <span +class="ectt-1000">cache </span>subdirectory is described; +other contents are optional but may include security advisories, DTD files for the various XML +files used in the repository, and repository timestamps. + + +</p><!--l. 239--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.7.1 </span> <a + id="x1-420004.7.1"></a>The metadata cache</h4> +<!--l. 241--><p class="noindent" >The <span +class="ectt-1000">metadata/cache </span>directory may contain a cached form of all important ebuild metadata +variables. The contents of this directory are described in section <a +href="#x1-16000014">14<!--tex4ht:ref: metadata-cache --></a>. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 5</span><br /><a + id="x1-430005"></a>Profiles</h2> +<h3 class="sectionHead"><span class="titlemark">5.1 </span> <a + id="x1-440005.1"></a>General principles</h3> +<!--l. 5--><p class="noindent" >Generally, a profile defines information specific to a certain ‘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-450005.2"></a>Files that make up a profile</h3> +<!--l. 18--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.1 </span> <a + id="x1-460005.2.1"></a>The parent file</h4> +<!--l. 19--><p class="noindent" >A profile may contain a <span +class="ectt-1000">parent </span>file. Each line must contain a relative path to another profile which +will be considered as one of this profile’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-470005.2.2"></a>The eapi file</h4> +<!--l. 32--><p class="noindent" >A profile directory may contain an <span +class="ectt-1000">eapi </span>file. This file, if it exists, must contain a single line with +the name of an EAPI. This specifies the EAPI to use when handling the directory in question; a +package manager must not attempt to use any profile using a directory which requires an EAPI it +does not support. If no <span +class="ectt-1000">eapi </span>file is present, EAPI 0 shall be used. The EAPI is not inherited via +the <span +class="ectt-1000">parent </span>file. + + +</p><!--l. 38--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.3 </span> <a + id="x1-480005.2.3"></a>deprecated</h4> +<!--l. 39--><p class="noindent" >If a profile contains a file named <span +class="ectt-1000">deprecated</span>, it is treated as such. The first line of this file +should contain the path from the <span +class="ectt-1000">profiles </span>directory of the repository to a valid profile +that is the recommended upgrade path from this profile. The remainder of the file can +contain any text, which may be displayed to users using this profile by the package +manager. This file is not inherited—profiles which inherit from a deprecated profile are <span +class="ecti-1000">not</span> +deprecated. +</p><!--l. 45--><p class="noindent" >This file must not contain comments or make use of line continuations. +</p><!--l. 47--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.4 </span> <a + id="x1-490005.2.4"></a>make.defaults</h4> +<!--l. 48--><p class="noindent" ><span +class="ectt-1000">make.defaults </span>is used to define defaults for various environment and configuration variables. This +file is unusual in that it is not combined at a file level with the parent—instead, each variable is +combined or overridden individually as described in section <a +href="#x1-590005.3">5.3<!--tex4ht:ref: sec:profile-variables --></a>. +</p><!--l. 52--><p class="noindent" >The file itself is a line-based key-value format. Each line contains a single <span class="obeylines-h"><span class="verb"><span +class="ectt-1000">VAR="value"</span></span></span> entry, +where the value must be double quoted. A variable name must start with one of <span +class="ectt-1000">a-zA-Z </span>and may +contain <span +class="ectt-1000">a-zA-Z0-9_ </span>only. Additional syntax, which is a small subset of bash syntax, is allowed as +follows: +</p><!--l. 58--><p class="noindent" > + </p><ul> + <li class="compactitem">Variables to the right of the equals sign in the form <span +class="ectt-1000">${foo} </span>or <span +class="ectt-1000">$foo </span>are recognised and + expanded from variables previously set in this or earlier <span +class="ectt-1000">make.defaults </span>files. + </li> + <li class="compactitem">One logical line may be continued over multiple physical lines by escaping the newline + with a backslash. A quoted string may 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. 66--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.5 </span> <a + id="x1-500005.2.5"></a>virtuals</h4> +<!--l. 68--><p class="noindent" >The <span +class="ectt-1000">virtuals </span>file defines default providers for “old-style” virtual packages. It is a simple line-based +file, with each line containing two whitespace-delimited tokens. The first is a virtual package name +(for example, <span +class="ectt-1000">virtual/alsa</span>) and the second is a qualified package name. Blank lines and those +beginning with a # character are ignored. When attempting to resolve a virtual name to a concrete +package, the specification defined in the active profile’s <span +class="ectt-1000">virtuals </span>list should be used if no provider +is already installed. +</p><!--l. 75--><p class="noindent" >The <span +class="ectt-1000">virtuals </span>file is inherited in the simplest manner: all entries from the parent profile are +loaded, then entries from the current profile. If a virtual package name appears in both, the entry +in the parent profile is discarded. + + +</p><!--l. 79--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.6 </span> <a + id="x1-510005.2.6"></a>Simple line-based files</h4> +<!--l. 81--><p class="noindent" >These files are a simple one-item-per-line list, which is inherited in the following manner: the +parent profile’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. Once again, blank lines and those beginning with a # are +discarded. +</p><!--l. 86--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.7 </span> <a + id="x1-520005.2.7"></a>packages</h4> +<!--l. 87--><p class="noindent" >The <span +class="ectt-1000">packages </span>file is used to define the ‘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 the atom forms part of the system set. A package +dependency specification on its own may also appear for legacy reasons, but should be ignored +when calculating the system set. +</p><!--l. 93--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.8 </span> <a + id="x1-530005.2.8"></a>packages.build</h4> +<!--l. 94--><p class="noindent" >The <span +class="ectt-1000">packages.build </span>file is used by Gentoo’s Catalyst tool to generate stage1 tarballs, and has no +relevance to the operation of a package manager. It is thus outside the scope of this document, but +is mentioned here for completeness. +</p><!--l. 98--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.9 </span> <a + id="x1-540005.2.9"></a>package.mask</h4> +<!--l. 99--><p class="noindent" ><span +class="ectt-1000">package.mask </span>is used to prevent packages from being installed on a given profile. Each line +contains one package dependency specification; anything matching this specification will not be +installed unless unmasked by the user’s configuration. +</p><!--l. 103--><p class="noindent" >Note that the <span +class="ectt-1000">-spec </span>syntax can be used to remove a mask in a parent profile, but not necessarily a +global mask (from <span +class="ectt-1000">profiles/package.mask</span>, section <a +href="#x1-340004.4">4.4<!--tex4ht:ref: profiles-package.mask --></a>). +</p> +<!--l. 106--><p class="noindent" ><span class="paragraphHead"><a + id="x1-550005.2.9"></a><span +class="ecbx-1000">Note:</span></span> +Portage currently treats <span +class="ectt-1000">profiles/package.mask </span>as being on the leftmost branch of the inherit +tree when it comes to <span +class="ectt-1000">-lines</span>. This behaviour may not be relied upon. + + +</p><!--l. 109--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.10 </span> <a + id="x1-560005.2.10"></a>package.provided</h4> +<!--l. 110--><p class="noindent" ><span +class="ectt-1000">package.provided </span>is used to tell the package manager that a certain package version should be +considered to be provided by the system regardless of whether it is actually installed. +Because it has severe adverse effects on USE-based and slot-based dependencies, its +use is strongly deprecated and package manager support must be regarded as purely +optional. +</p><!--l. 115--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.11 </span> <a + id="x1-570005.2.11"></a>package.use</h4> +<!--l. 116--><p class="noindent" >The <span +class="ectt-1000">package.use </span>file may be used by the package manager to override the default USE flags +specified by <span +class="ectt-1000">make.defaults </span>on a per package basis. The format is to have a package +dependency specification, and then a space delimited list of USE flags to enable. A USE flag +in the form of <span +class="ectt-1000">-flag </span>indicates that the package should have the USE flag disabled. +The package dependency specification is limited to the forms defined by the directory’s +EAPI. +</p><!--l. 122--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.12 </span> <a + id="x1-580005.2.12"></a>USE masking and forcing</h4> +<!--l. 124--><p class="noindent" >This section covers the four files <span +class="ectt-1000">use.mask</span>, <span +class="ectt-1000">use.force</span>, <span +class="ectt-1000">package.use.mask </span>and +<span +class="ectt-1000">package.use.force</span>. They are described together because they interact in a non-trivial +manner. +</p><!--l. 127--><p class="noindent" >Simply speaking, <span +class="ectt-1000">use.mask </span>and <span +class="ectt-1000">use.force </span>are used to say that a given USE flag must +never or always, respectively, be enabled when using this profile. <span +class="ectt-1000">package.use.mask </span>and +<span +class="ectt-1000">package.use.force </span>do the same thing on a per-package, or per-version, basis. The precise manner +in which they interact is less simple, and is best described in terms of the algorithm used to +determine whether a flag is masked for a given package version. This is described in Algorithm <a +href="#x1-58001r8">8<!--tex4ht:ref: alg:use-masking --></a>. +</p><div class="algorithm"> + + +<!--l. 133--><p class="noindent" ><a + id="x1-58001r8"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 8: </span><span +class="content">USE masking logic</span></div><!--tex4ht:label?: x1-58001r8 --> +<div class="algorithmic"> +<a + id="x1-58002r84"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> let masked = false <a + id="x1-58003r85"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58004r86"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58005r87"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> let masked = true + </span><a + id="x1-58006r88"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58007r89"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> let masked = false + </span><a + id="x1-58008r90"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-58009r91"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58010r92"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58011r93"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:34.99146pt;"> </span> let masked = true + </span><a + id="x1-58012r94"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </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-58013r95"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:34.99146pt;"> </span> let masked = false + </span><a + id="x1-58014r96"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-58015r97"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span> + </span><a + id="x1-58016r98"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 153--><p class="noindent" >The logic for <span +class="ectt-1000">use.force </span>and <span +class="ectt-1000">package.use.force </span>is identical. If a flag is both masked and forced, +the mask is considered to take precedence. +</p><!--l. 156--><p class="noindent" ><span +class="ectt-1000">USE_EXPAND </span>values may be forced or masked by using <span +class="ectt-1000">expand_name_value</span>. +</p><!--l. 158--><p class="noindent" >A package manager may treat <span +class="ectt-1000">ARCH </span>values that are not the current architecture as being +masked. +</p> +<h3 class="sectionHead"><span class="titlemark">5.3 </span> <a + id="x1-590005.3"></a>Profile variables</h3> +<!--l. 4--><p class="noindent" >This section documents variables that have special meaning, or special behaviour, when defined in +a profile’s <span +class="ectt-1000">make.defaults </span>file. +</p><!--l. 7--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.3.1 </span> <a + id="x1-600005.3.1"></a>Incremental Variables</h4> +<!--l. 8--><p class="noindent" ><span +class="ecti-1000">Incremental </span>variables must stack between parent and child profiles in the following manner: +Beginning with the highest parent profile, tokenise the variable’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" >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><!--l. 27--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.3.2 </span> <a + id="x1-610005.3.2"></a>Specific variables and their meanings</h4> +<!--l. 28--><p class="noindent" >The following variables have specific meanings when set in profiles. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">ARCH</span> </dt><dd +class="description">The system’s architecture. Must be a value listed in <span +class="ectt-1000">profiles/arch.list</span>; see + section <a +href="#x1-340004.4">4.4<!--tex4ht:ref: arch.list --></a> for more information. Must be equal to the primary <span +class="ectt-1000">KEYWORD </span>for this profile. + + + </dd><dt class="description"> +<span +class="ecbx-1000">CONFIG_PROTECT, CONFIG_PROTECT_MASK</span> </dt><dd +class="description">Contain + whitespace-delimited lists used to control the configuration file protection. Described + more fully in chapter <a +href="#x1-15500013.3.3">13.3.3<!--tex4ht:ref: sec:config-protect --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">USE</span> </dt><dd +class="description">Defines the list of default USE flags for this profile. Flags may be added or removed + by the user’s configuration. <span +class="ectt-1000">USE_EXPAND </span>values must not be specified in this way. + </dd><dt class="description"> +<span +class="ecbx-1000">USE_EXPAND</span> </dt><dd +class="description">Defines a list of variables which are to be treated incrementally and + whose contents are to be expanded into the USE variable as passed to ebuilds. See + section <a +href="#x1-12000012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for details. + </dd><dt class="description"> +<span +class="ecbx-1000">USE_EXPAND_HIDDEN</span> </dt><dd +class="description">Contains a (possibly empty) subset of names from + <span +class="ectt-1000">USE_EXPAND</span>. The package manager may use this set as a hint to avoid displaying + uninteresting or unhelpful information to an end user.</dd></dl> +<!--l. 45--><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-620006"></a>Old-Style Virtual Packages</h2> +<!--l. 4--><p class="noindent" >Old-style virtuals are pseudo-packages—they can be depended upon or installed, but do not exist +in the ebuild repository. An old-style virtual requires several things in the repository: at least one +ebuild must list the virtual in its <span +class="ectt-1000">PROVIDE </span>variable, and there must be at least one entry in a +profiles <span +class="ectt-1000">virtuals </span>file listing the default provider for each profile—see sections <a +href="#x1-700008.3">8.3<!--tex4ht:ref: ebuild-var-provide --></a> and <a +href="#x1-500005.2.5">5.2.5<!--tex4ht:ref: sec:profiles-virtuals --></a> for +specifics on these two. Old-style virtuals require special handling as regards dependencies; this is +described below. +</p><!--l. 14--><p class="noindent" >All old-style virtuals must use the category <span +class="ectt-1000">virtual</span>. Not all packages using the <span +class="ectt-1000">virtual </span>category +may be assumed to be old style virtuals. +</p> +<!--l. 17--><p class="noindent" ><span class="paragraphHead"><a + id="x1-630006"></a><span +class="ecbx-1000">Note:</span></span> +A <span +class="ecti-1000">new-style </span>virtual is simply an ebuild which install no files and use its dependency strings to +select providers. By convention, and to ease migration, these are also placed in the <span +class="ectt-1000">virtual</span> +category. +</p><!--l. 21--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">6.1 </span> <a + id="x1-640006.1"></a>Dependencies on virtual packages</h3> +<!--l. 23--><p class="noindent" >When a dependency on a virtual package is encountered, it must be resolved into a real package +before it can be satisfied. There are two factors that affect this process: whether a package +providing the virtual is installed, and the <span +class="ectt-1000">virtuals </span>file in the active profile (section <a +href="#x1-500005.2.5">5.2.5<!--tex4ht:ref: sec:profiles-virtuals --></a>). If a +package is already installed which satisfies the virtual requirement (via <span +class="ectt-1000">PROVIDE</span>), then it should be +used to satisfy the dependency. Otherwise, the profiles <span +class="ectt-1000">virtuals </span>file (section <a +href="#x1-500005.2.5">5.2.5<!--tex4ht:ref: sec:profiles-virtuals --></a>) should be +consulted to choose an appropriate provider. +</p><!--l. 33--><p class="noindent" >Dependencies on old style virtuals must not use any kind of version restriction. +</p><!--l. 35--><p class="noindent" >Blocks on provided virtuals have special behaviour documented in section <a +href="#x1-860009.2.5.2">9.2.5.2<!--tex4ht:ref: provided-blocks --></a>. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 7</span><br /><a + id="x1-650007"></a>Ebuild File Format</h2> +<!--l. 4--><p class="noindent" >The ebuild file format is in its basic form a subset of the format of a bash script. The interpreter is +assumed to be GNU bash, version 3.2 or later, see footnote <a +href="#x1-127001f6">6<!--tex4ht:ref: fn:bash3.2 --></a> on page <a +href="#x1-127001f6">170<!--tex4ht:ref: fn:bash3.2 --></a>. The file encoding must +be UTF-8 with Unix-style newlines. When sourced, the ebuild must define certain variables and +functions (see sections <a +href="#x1-660008">8<!--tex4ht:ref: sec:ebuild-vars --></a> and <a +href="#x1-9400010">10<!--tex4ht:ref: sec:ebuild-functions --></a> for specific information), and must not call any external programs, +write anything to standard output or standard error, or modify the state of the system in any +way. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 8</span><br /><a + id="x1-660008"></a>Ebuild-defined Variables</h2> +<!--l. 4--><p class="noindent" ><span class="paragraphHead"><a + id="x1-670008"></a><span +class="ecbx-1000">Note:</span></span> +This section describes variables that may or must be defined by ebuilds. For variables that are +passed from the package manager to the ebuild, see section <a +href="#x1-11900012.1">12.1<!--tex4ht:ref: sec:ebuild-env-vars --></a>. +</p><!--l. 7--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">8.1 </span> <a + id="x1-680008.1"></a>Metadata invariance</h3> +<!--l. 10--><p class="noindent" >All ebuild-defined variables discussed in this chapter must be defined independently of any system, +profile or tree dependent data, and must not vary depending upon the ebuild phase. In particular, +ebuild metadata can and will be generated on a different system from that upon which the +ebuild will be used, and the ebuild must generate identical metadata every time it is +used. +</p><!--l. 16--><p class="noindent" >Globally defined ebuild variables without a special meaning must similarly not rely upon variable +data. +</p><!--l. 19--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">8.2 </span> <a + id="x1-690008.2"></a>Mandatory Ebuild-defined Variables</h3> +<!--l. 21--><p class="noindent" >All ebuilds must define at least the following variables: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">DESCRIPTION</span> </dt><dd +class="description">A short human-readable description of the package’s purpose. May be + defined by an eclass. Must not be empty. + </dd><dt class="description"> +<span +class="ecbx-1000">HOMEPAGE</span> </dt><dd +class="description">The URI or URIs for a package’s homepage, including protocols. May be + defined by an eclass. See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax. + </dd><dt class="description"> +<span +class="ecbx-1000">IUSE</span> </dt><dd +class="description">The <span +class="ectt-1000">USE </span>flags used by the ebuild. Any eclass that works with <span +class="ectt-1000">USE </span>flags must also set + <span +class="ectt-1000">IUSE</span>, listing only the variables used by that eclass. The package manager is responsible + for merging these values. See section <a +href="#x1-12000012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for discussion on which values must be + listed this variable. + <!--l. 33--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">I</span><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span><span +class="small-caps">S</span></span></span></p><!--l. 33--><p class="noindent" >In EAPIs shown in table <a +href="#x1-69001r1">8.1<!--tex4ht:ref: tab:iuse-defaults-table --></a> as supporting <span +class="ectt-1000">IUSE </span>defaults, any use flag name in <span +class="ectt-1000">IUSE</span> + may be prefixed by at most one of a plus or a minus sign. If such a prefix is present, + the package manager may use it as a suggestion as to the default value of the use flag + if no other configuration overrides it. + </p></dd><dt class="description"> +<span +class="ecbx-1000">KEYWORDS</span> </dt><dd +class="description">A whitespace separated list of keywords for the ebuild. Each token must be + a valid keyword name, as per section <a +href="#x1-260003.1.6">3.1.6<!--tex4ht:ref: sec:keyword-names --></a>. May include <span +class="ectt-1000">-*</span>, which indicates that the + package will only work on explicitly listed archs. May include <span +class="ectt-1000">-arch</span>, which indicates + that the package will not work on the specified arch. May be empty, which indicates + uncertain functionality on any architecture. May be defined in an eclass. + + + </dd><dt class="description"> +<span +class="ecbx-1000">LICENSE</span> </dt><dd +class="description">The package’s license. Each text token must correspond to a tree “licenses/” + entry (see section <a +href="#x1-390004.5">4.5<!--tex4ht:ref: sec:licenses-dir --></a>). See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax. May be defined by an eclass. + </dd><dt class="description"> +<span +class="ecbx-1000">SLOT</span> </dt><dd +class="description">The package’s slot. Must be a valid slot name, as per section <a +href="#x1-220003.1.3">3.1.3<!--tex4ht:ref: sec:slot-names --></a>. May be defined + by an eclass. Must not be empty. + </dd><dt class="description"> +<span +class="ecbx-1000">SRC_URI</span> </dt><dd +class="description">A list of source URIs for the package. Valid protocols are <span +class="ectt-1000">http://</span>, <span +class="ectt-1000">https://</span>, + <span +class="ectt-1000">ftp:// </span>and <span +class="ectt-1000">mirror:// </span>(see section <a +href="#x1-360004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a> for mirror behaviour). Fetch restricted + packages may include URL parts consisting of just a filename. May be defined by an + eclass. See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax.</dd></dl> +<!--l. 53--><p class="noindent" >If any of these variables are undefined, or if any of these variables are set to invalid values, the +package manager’s behaviour is undefined; ideally, an error in one ebuild should not prevent +operations upon other ebuilds or packages. +</p> +<div class="table"> + + +<!--l. 57--><p class="noindent" ><a + id="x1-69001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.1: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">IUSE </span>defaults</span></div><!--tex4ht:label?: x1-69001r1 --> +<div class="tabular"> + <table id="TBL-2" class="tabular" +cellspacing="0" cellpadding="0" +><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="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-2-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-2" +class="td11">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"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">8.3 </span> <a + id="x1-700008.3"></a>Optional Ebuild-defined Variables</h3> +<!--l. 74--><p class="noindent" >Ebuilds may define any of the following variables: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">DEPEND</span> </dt><dd +class="description">See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">EAPI</span> </dt><dd +class="description">The EAPI. See below for defaults. + </dd><dt class="description"> +<span +class="ecbx-1000">PDEPEND</span> </dt><dd +class="description">See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">PROVIDE</span> </dt><dd +class="description">Zero or more qualified package names of any <span +class="ecti-1000">old style </span>virtuals provided by this + package. See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax. + </dd><dt class="description"> +<span +class="ecbx-1000">RDEPEND</span> </dt><dd +class="description">See section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a>. For some EAPIs, <span +class="ectt-1000">RDEPEND </span>has special behaviour for its value if + unset and when used with an eclass. See section <a +href="#x1-720008.3.2">8.3.2<!--tex4ht:ref: sec:rdepend-depend --></a> for details. + </dd><dt class="description"> +<span +class="ecbx-1000">RESTRICT</span> </dt><dd +class="description">Zero or more behaviour restrictions for this package. See section <a +href="#x1-910009.2.7">9.2.7<!--tex4ht:ref: sec:restrict --></a> for + value meanings and section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax. + </dd><dt class="description"> +<span +class="ecbx-1000">PROPERTIES</span> </dt><dd +class="description"><!--l. 88--><p class="noindent" > </p><!--l. 88--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">E</span><span +class="small-caps">S</span></span></span> Zero or more properties for this package. See section <a +href="#x1-920009.2.8">9.2.8<!--tex4ht:ref: sec:properties --></a> for value + meanings and section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for full syntax. For EAPIs listed in table <a +href="#x1-70001r2">8.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"> +<span +class="ecbx-1000">REQUIRED_USE</span> </dt><dd +class="description"><!--l. 93--><p class="noindent" > </p><!--l. 93--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">Q</span><span +class="small-caps">U</span><span +class="small-caps">I</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</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-900009.2.6">9.2.6<!--tex4ht:ref: sec:required-use --></a> for description and section <a +href="#x1-760009">9<!--tex4ht:ref: sec:dependencies --></a> for + full syntax. Only in EAPIs listed in table <a +href="#x1-70001r2">8.2<!--tex4ht:ref: tab:optional-vars-table --></a> as supporting <span +class="ectt-1000">REQUIRED_USE</span>.</p></dd></dl> +<div class="table"> + + +<!--l. 99--><p class="noindent" ><a + id="x1-70001r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.2: </span><span +class="content">EAPIs supporting various ebuild-defined variables</span></div><!--tex4ht:label?: x1-70001r2 --> +<div class="tabular"> + <table id="TBL-3" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-3-1g"><col +id="TBL-3-1" /><col +id="TBL-3-2" /><col +id="TBL-3-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-3-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-3-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">PROPERTIES</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-3-2-"><td style="white-space:nowrap; text-align:center;" id="TBL-3-2-1" +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-3-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-2" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-3" +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"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-2" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-2" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-2" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-2" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-3" +class="td11">Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">8.3.1 </span> <a + id="x1-710008.3.1"></a>EAPI</h4> +<!--l. 119--><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. 122--><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. 127--><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. 130--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.3.2 </span> <a + id="x1-720008.3.2"></a><span +class="ectt-1000">RDEPEND </span>value</h4> + <!--l. 133--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span></span></span></p><!--l. 133--><p class="noindent" >In EAPIs listed in table <a +href="#x1-72001r3">8.3<!--tex4ht:ref: tab:rdepend-depend-table --></a> as having <span +class="ectt-1000">RDEPEND=DEPEND</span>, if <span +class="ectt-1000">RDEPEND </span>is unset (but not if it is set to +an empty string) in an ebuild, the package manager must set its value to be equal to the value of +<span +class="ectt-1000">DEPEND</span>. +</p><!--l. 137--><p class="noindent" >When dealing with eclasses, only values set in the ebuild itself are considered for this behaviour; +any <span +class="ectt-1000">DEPEND </span>or <span +class="ectt-1000">RDEPEND </span>set in an eclass does not change the implicit <span +class="ectt-1000">RDEPEND=DEPEND</span> +for the ebuild portion, and any <span +class="ectt-1000">DEPEND </span>value set in an eclass does not get added to +<span +class="ectt-1000">RDEPEND</span>. +</p> +<div class="table"> + + +<!--l. 141--><p class="noindent" ><a + id="x1-72001r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.3: </span><span +class="content">EAPIs with <span +class="ectt-1000">RDEPEND=DEPEND </span>Default</span></div><!--tex4ht:label?: x1-72001r3 --> +<div class="tabular"> + <table id="TBL-4" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-4-1g"><col +id="TBL-4-1" /><col +id="TBL-4-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-4-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-4-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-4-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">RDEPEND=DEPEND</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-4-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-2" +class="td11">Yes </td></tr><tr + style="vertical-align:baseline;" id="TBL-4-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-2" +class="td11">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"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-4-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-4-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-4-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">8.4 </span> <a + id="x1-730008.4"></a>Magic Ebuild-defined Variables</h3> +<!--l. 158--><p class="noindent" >The following variables must be defined by <span +class="ectt-1000">inherit </span>(see section <a +href="#x1-11500011.1">11.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"> +<span +class="ecbx-1000">ECLASS</span> </dt><dd +class="description">The current eclass, or unset if there is no current eclass. This is handled magically + by <span +class="ectt-1000">inherit </span>and must not be modified manually. + </dd><dt class="description"> +<span +class="ecbx-1000">INHERITED</span> </dt><dd +class="description">List of inherited eclass names. Again, this is handled magically by <span +class="ectt-1000">inherit</span>.</dd></dl> +<!--l. 167--><p class="noindent" ><span class="paragraphHead"><a + id="x1-740008.4"></a><span +class="ecbx-1000">Note:</span></span> +Thus, by extension of section <a +href="#x1-680008.1">8.1<!--tex4ht:ref: sec:metadata-invariance --></a>, <span +class="ectt-1000">inherit </span>may not be used conditionally, except upon constant +conditions. +</p><!--l. 170--><p class="noindent" >The following are special variables defined by the package manager for internal use and may or +may not be exported to the ebuild environment: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">DEFINED_PHASES</span> </dt><dd +class="description"><!--l. 174--><p class="noindent" > </p><!--l. 174--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">S</span></span></span> A space separated arbitrarily ordered list of phase names + (e. g. <span +class="ectt-1000">configure setup unpack</span>) whose phase functions are defined by the ebuild or + an eclass inherited by the ebuild. If no phase functions are defined, a single hyphen + is used instead of an empty string. For EAPIs listed in table <a +href="#x1-75001r4">8.4<!--tex4ht:ref: tab:defined-phases-table --></a> as having optional + <span +class="ectt-1000">DEFINED_PHASES </span>support, package managers may not rely upon the metadata cache + having this variable defined, and must treat an empty string as “this information is not + available”.</p></dd></dl> +<!--l. 182--><p class="noindent" ><span class="paragraphHead"><a + id="x1-750008.4"></a><span +class="ecbx-1000">Note:</span></span> +Thus, by extension of section <a +href="#x1-680008.1">8.1<!--tex4ht:ref: sec:metadata-invariance --></a>, phase functions must not be defined based upon any variant +condition. +</p> +<div class="table"> + + +<!--l. 185--><p class="noindent" ><a + id="x1-75001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.4: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">DEFINED_PHASES</span></span></div><!--tex4ht:label?: x1-75001r4 --> +<div class="tabular"> + <table id="TBL-5" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-5-1g"><col +id="TBL-5-1" /><col +id="TBL-5-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-5-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-5-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-5-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="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-5-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-2" +class="td11">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"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-2" +class="td11">Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-2" +class="td11">Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-2" +class="td11">Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> + + + + + + +<h2 class="chapterHead"><span class="titlemark">Chapter 9</span><br /><a + id="x1-760009"></a>Dependencies</h2> +<h3 class="sectionHead"><span class="titlemark">9.1 </span> <a + id="x1-770009.1"></a>Dependency Classes</h3> +<!--l. 6--><p class="noindent" >There are three classes of dependencies supported by ebuilds: +</p><!--l. 9--><p class="noindent" > + </p><ul> + <li class="compactitem">Build dependencies (<span +class="ectt-1000">DEPEND</span>). These must be installed and usable before the ebuild is + installed. + </li> + <li class="compactitem">Runtime dependencies (<span +class="ectt-1000">RDEPEND</span>). These must be installed and usable before the ebuild + is treated as usable. + </li> + <li class="compactitem">Post dependencies (<span +class="ectt-1000">PDEPEND</span>). These must be installed at some point.</li></ul> +<!--l. 16--><p class="noindent" >In addition, <span +class="ectt-1000">SRC_URI</span>, <span +class="ectt-1000">HOMEPAGE</span>, <span +class="ectt-1000">PROVIDE</span>, <span +class="ectt-1000">RESTRICT</span>, <span +class="ectt-1000">PROPERTIES</span>, <span +class="ectt-1000">LICENSE </span>and <span +class="ectt-1000">REQUIRED_USE </span>use +dependency-style specifications to specify their values. +</p><!--l. 19--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">9.2 </span> <a + id="x1-780009.2"></a>Dependency Specification Format</h3> +<!--l. 21--><p class="noindent" >The following elements are recognised in at least one class of specification. All elements +must be surrounded on both sides by whitespace, except at the start and end of the +string. +</p><!--l. 25--><p class="noindent" > + </p><ul> + <li class="compactitem">A package dependency specification. Permitted in <span +class="ectt-1000">DEPEND</span>, <span +class="ectt-1000">RDEPEND</span>, <span +class="ectt-1000">PDEPEND</span>. + </li> + <li class="compactitem">A simple qualified package name. Permitted in <span +class="ectt-1000">PROVIDE </span>(and inside <span +class="ectt-1000">DEPEND </span>etc via the + previous item). + </li> + <li class="compactitem">A URI, in the form <span +class="ectt-1000">proto://host/path</span>. Permitted in <span +class="ectt-1000">SRC_URI </span>and <span +class="ectt-1000">HOMEPAGE</span>. In + EAPIs listed in table <a +href="#x1-78001r1">9.1<!--tex4ht:ref: tab:uri-arrows-table --></a> as supporting <span +class="ectt-1000">SRC_URI </span>arrows, may optionally be followed + by whitespace, then <span +class="ectt-1000">-></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-930009.2.9">9.2.9<!--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">RESTRICT </span>and <span +class="ectt-1000">PROPERTIES</span>. + </li> + <li class="compactitem">An all-of group, which consists of an open parenthesis, followed by whitespace, + followed by zero or more of (a dependency item of any kind followed by whitespace), + followed by a close parenthesis. More formally: <span +class="ectt-1000">all-of ::= ’(’ whitespace (item</span> + <span +class="ectt-1000">whitespace)* ’)’</span>. Permitted in all specification style variables. + </li> + <li class="compactitem">An any-of group, which consists of the string <span +class="ectt-1000">||</span>, followed by whitespace, followed + by an open parenthesis, followed by whitespace, followed by zero or more of + + + (a dependency item of any kind followed by whitespace), followed by a close + parenthesis. More formally: <span +class="ectt-1000">any-of ::= ’||’ whitespace ’(’ whitespace (item</span> + <span +class="ectt-1000">whitespace)* ’)’</span>. Permitted in <span +class="ectt-1000">DEPEND</span>, <span +class="ectt-1000">RDEPEND</span>, <span +class="ectt-1000">PDEPEND</span>, <span +class="ectt-1000">LICENSE</span>, <span +class="ectt-1000">REQUIRED_USE</span>. + </li> + <li class="compactitem">An exactly-one-of group, which consists of the string <span +class="ectt-1000">^^</span>, followed by whitespace, + followed by an open parenthesis, followed by whitespace, followed by zero or + more of (a dependency item of any kind followed by whitespace), followed by + a close parenthesis. More formally: <span +class="ectt-1000">exactly-one-of ::= ’^^’ whitespace ’(’</span> + <span +class="ectt-1000">whitespace (item whitespace)* ’)’</span>. Permitted in <span +class="ectt-1000">REQUIRED_USE</span>. + </li> + <li class="compactitem">A use-conditional group, which consists of an optional exclamation mark, + followed by a use flag name, followed by a question mark, followed by + whitespace, followed by an open parenthesis, followed by whitespace, followed + by zero or more of (a dependency item of any kind followed by whitespace), + followed by a close parenthesis. More formally: <span +class="ectt-1000">use-conditional ::= ’!’?</span> + <span +class="ectt-1000">flag-name ’?’ whitespace ’(’ whitespace (item whitespace)* ’)’</span>. Permitted + in all specification style variables.</li></ul> +<!--l. 60--><p class="noindent" >In particular, note that whitespace is not optional. +</p> +<div class="table"> + + +<!--l. 62--><p class="noindent" ><a + id="x1-78001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.1: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">SRC_URI </span>arrows</span></div><!--tex4ht:label?: x1-78001r1 --> +<div class="tabular"> + <table id="TBL-6" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-6-1g"><col +id="TBL-6-1" /><col +id="TBL-6-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-6-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-6-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-6-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">SRC_URI </span><span +class="ecbx-1000">arrows?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-6-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-2" +class="td11">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"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">9.2.1 </span> <a + id="x1-790009.2.1"></a>All-of Dependency Specifications</h4> +<!--l. 79--><p class="noindent" >In an all-of group, all of the child elements must be matched. +</p><!--l. 81--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.2 </span> <a + id="x1-800009.2.2"></a>Use-conditional Dependency Specifications</h4> +<!--l. 83--><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. 86--><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-12000012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>. +</p><!--l. 89--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.3 </span> <a + id="x1-810009.2.3"></a>Any-of Dependency Specifications</h4> +<!--l. 91--><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. 95--><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. 98--><p class="noindent" >An empty any-of group counts as being matched. +</p><!--l. 100--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.4 </span> <a + id="x1-820009.2.4"></a>Exactly-one-of Dependency Specifications</h4> +<!--l. 102--><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. 106--><p class="noindent" >In an exactly-one-of group, exactly one immediate child element must be matched. +</p><!--l. 108--><p class="noindent" >An empty exactly-one-of group counts as being matched. +</p><!--l. 110--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.5 </span> <a + id="x1-830009.2.5"></a>Package Dependency Specifications</h4> +<!--l. 112--><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. 116--><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-850009.2.5.1">9.2.5.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. 121--><p class="noindent" >In EAPIs shown in table <a +href="#x1-84001r2">9.2<!--tex4ht:ref: tab:slot-deps-table --></a> as supporting <span +class="ectt-1000">SLOT </span>dependencies, either of the above formats may +additionally be suffixed by a <span +class="ectt-1000">:slot </span>restriction, as described in section <a +href="#x1-870009.2.5.3">9.2.5.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. 126--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span></span></span></p><!--l. 126--><p class="noindent" >In EAPIs shown in table <a +href="#x1-84002r3">9.3<!--tex4ht:ref: tab:use-deps-table --></a> as supporting 2-style or 4-style <span +class="ectt-1000">USE </span>dependencies, a specification may +additionally be suffixed by at most one 2-style or 4-style <span +class="ectt-1000">[use] </span>restriction, as described in +section <a +href="#x1-880009.2.5.4">9.2.5.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. 131--><p class="noindent" ><span class="paragraphHead"><a + id="x1-840009.2.5"></a><span +class="ecbx-1000">Note:</span></span> +Order is important. The slot restriction must come before use dependencies. +</p> +<div class="table"> + + +<!--l. 133--><p class="noindent" ><a + id="x1-84001r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.2: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">SLOT </span>dependencies</span></div><!--tex4ht:label?: x1-84001r2 --> +<div class="tabular"> + <table id="TBL-7" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-7-1g"><col +id="TBL-7-1" /><col +id="TBL-7-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-7-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-7-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-7-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">SLOT </span><span +class="ecbx-1000">dependencies?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-7-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-7-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-2" +class="td11">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"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 148--><p class="noindent" ><a + id="x1-84002r3"></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">USE </span>dependencies</span></div><!--tex4ht:label?: x1-84002r3 --> +<div class="tabular"> + <table id="TBL-8" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-8-1g"><col +id="TBL-8-1" /><col +id="TBL-8-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-8-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-8-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-8-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">USE </span><span +class="ecbx-1000">dependencies?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-8-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-8-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-8-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-2" +class="td11">2-style </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-8-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-2" +class="td11">2-style </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-8-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-2" +class="td11">4-style </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-8-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">9.2.5.1 </span> <a + id="x1-850009.2.5.1"></a>Operators</h5> +<!--l. 166--><p class="noindent" >The following operators are available: + </p><dl class="description"><dt class="description"> +<span +class="ectt-1000"><</span> </dt><dd +class="description">Strictly less than the specified version. + </dd><dt class="description"> +<span +class="ectt-1000"><=</span> </dt><dd +class="description">Less than or equal to the specified version. + </dd><dt class="description"> +<span +class="ectt-1000">=</span> </dt><dd +class="description">Exactly equal to the specified version. Special exception: if the version specified has an + asterisk immediately following it, a string prefix comparison is used instead. When an + asterisk is used, the specification must remain valid if the asterisk were removed. (An + asterisk used with any other operator is illegal.) + </dd><dt class="description"> +<span +class="ectt-1000">~</span> </dt><dd +class="description">Equal to the specified version, except the revision part of the matching package may be + greater than the revision part of the specified version (<span +class="ectt-1000">-r0 </span>is assumed if no revision is + explicitly stated). + </dd><dt class="description"> +<span +class="ectt-1000">>=</span> </dt><dd +class="description">Greater than or equal to the specified version. + </dd><dt class="description"> +<span +class="ectt-1000">></span> </dt><dd +class="description">Strictly greater than the specified version.</dd></dl> +<!--l. 182--><p class="noindent" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">9.2.5.2 </span> <a + id="x1-860009.2.5.2"></a>Block Operator</h5> +<!--l. 184--><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, with +the following exceptions: +</p><!--l. 189--><p class="noindent" > + </p><ul> + <li class="compactitem">Blocks on a package provided exclusively by the ebuild do not count. + </li> + <li class="compactitem">Blocks on the ebuild itself do not count.</li></ul> + <!--l. 193--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span>-<span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">T</span><span +class="small-caps">H</span></span></span></p><!--l. 193--><p class="noindent" >There are two strengths of block: weak and strong. A weak block may be ignored by the package +manager, so long as any blocked package will be uninstalled later on. A strong block must not be +ignored. The mapping from one or two exclamation marks to strength is described in +table <a +href="#x1-86001r4">9.4<!--tex4ht:ref: tab:bang-strength-table --></a>. +</p> +<div class="table"> + + +<!--l. 198--><p class="noindent" ><a + id="x1-86001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.4: </span><span +class="content">Exclamation mark strengths for EAPIs</span></div><!--tex4ht:label?: x1-86001r4 --> +<div class="tabular"> + <table id="TBL-9" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-9-1g"><col +id="TBL-9-1" /><col +id="TBL-9-2" /><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="ectt-1000">!</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">!!</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-9-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-2" +class="td11">Unspecified</td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-3" +class="td11">Forbidden</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-9-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-2" +class="td11">Unspecified</td><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-3" +class="td11">Forbidden</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-9-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-2" +class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-3" +class="td11">Strong </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-9-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-2" +class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-3" +class="td11">Strong </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-9-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-2" +class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-3" +class="td11">Strong </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-9-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">9.2.5.3 </span> <a + id="x1-870009.2.5.3"></a>Slot Dependencies</h5> + <!--l. 217--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">L</span><span +class="small-caps">O</span><span +class="small-caps">T</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span></span></span></p><!--l. 217--><p class="noindent" >A named slot dependency consists of a colon followed by a slot name. A specification with a named +slot dependency matches only if the slot of the matched package is equal to the slot specified. If the +slot of the package to match cannot be determined (e. g. because it is not a supported <span +class="ectt-1000">EAPI</span>), the +match is treated as unsuccessful. +</p><!--l. 222--><p class="noindent" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">9.2.5.4 </span> <a + id="x1-880009.2.5.4"></a>2-Style and 4-Style Use Dependencies</h5> +<!--l. 225--><p class="noindent" >A 2-style or 4-style use dependency consists of one of the following: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">[opt]</span> </dt><dd +class="description">The flag must be enabled. + </dd><dt class="description"> +<span +class="ecbx-1000">[opt=]</span> </dt><dd +class="description">The flag must be enabled if the flag is enabled for the package with the dependency, + or disabled otherwise. + </dd><dt class="description"> +<span +class="ecbx-1000">[!opt=]</span> </dt><dd +class="description">The flag must be disabled if the flag is enabled for the package with the dependency, + or enabled otherwise. + </dd><dt class="description"> +<span +class="ecbx-1000">[opt?]</span> </dt><dd +class="description">The flag must be enabled if the flag is enabled for the package with the dependency. + </dd><dt class="description"> +<span +class="ecbx-1000">[!opt?]</span> </dt><dd +class="description">The flag must be disabled if the use flag is disabled for the package with the + dependency. + </dd><dt class="description"> +<span +class="ecbx-1000">[-opt]</span> </dt><dd +class="description">The flag must be disabled.</dd></dl> +<!--l. 240--><p class="noindent" >Multiple requirements may be combined using commas, e. g. <span +class="ectt-1000">[first,-second,third?]</span>. +</p><!--l. 242--><p class="noindent" >When multiple requirements are specified, all must match for a successful match. + </p><!--l. 244--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span><span +class="small-caps">S</span></span></span></p><!--l. 244--><p class="noindent" >In a 4-style use dependency, the flag name may immediately be followed by a <span +class="ecti-1000">default </span>specified by +either <span +class="ectt-1000">(+) </span>or <span +class="ectt-1000">(-)</span>. The former indicates that, when applying the use dependency to a +package that does not have the flag in question in <span +class="ectt-1000">IUSE_REFERENCEABLE</span>, the package +manager shall behave as if the flag were present and enabled; the latter, present and +disabled. +</p><!--l. 250--><p class="noindent" >Unless a 4-style default is specified, it is an error for a use dependency to be applied to an ebuild +which does not have the flag in question in <span +class="ectt-1000">IUSE_REFERENCEABLE</span>. +</p> +<!--l. 253--><p class="noindent" ><span class="paragraphHead"><a + id="x1-890009.2.5.4"></a><span +class="ecbx-1000">Note:</span></span> +By extension of the above, a default that could reference an ebuild using an EAPI not supporting +profile <span +class="ectt-1000">IUSE </span>injections cannot rely upon any particular behaviour for flags that would not have to +be part of <span +class="ectt-1000">IUSE</span>. + + +</p><!--l. 257--><p class="noindent" >It is an error for an ebuild to use a conditional use dependency when that ebuild does not have the +flag in <span +class="ectt-1000">IUSE_EFFECTIVE</span>. +</p><!--l. 260--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.6 </span> <a + id="x1-900009.2.6"></a>Use State Constraints</h4> +<!--l. 262--><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. 266--><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. 269--><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. 271--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.7 </span> <a + id="x1-910009.2.7"></a>Restrict</h4> +<!--l. 274--><p class="noindent" >The following tokens are permitted inside <span +class="ectt-1000">RESTRICT</span>: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">mirror</span> </dt><dd +class="description">The package’s <span +class="ectt-1000">SRC_URI </span>entries may not be mirrored, and mirrors should not be + checked when fetching. + </dd><dt class="description"> +<span +class="ecbx-1000">fetch</span> </dt><dd +class="description">The package’s <span +class="ectt-1000">SRC_URI </span>entries may not be downloaded automatically. If entries are + not available, <span +class="ectt-1000">pkg_nofetch </span>is called. + </dd><dt class="description"> +<span +class="ecbx-1000">strip</span> </dt><dd +class="description">No stripping of debug symbols from files to be installed may be performed. + </dd><dt class="description"> +<span +class="ecbx-1000">userpriv</span> </dt><dd +class="description">The package manager may not drop root privileges when building the package. + </dd><dt class="description"> +<span +class="ecbx-1000">test</span> </dt><dd +class="description">The <span +class="ectt-1000">src_test </span>phase must not be run. + </dd><dt class="description"> +<span +class="ecbx-1000">sandbox</span> </dt><dd +class="description">The <span +class="ectt-1000">sandbox </span>tool must not be used when building the package.</dd></dl> +<!--l. 287--><p class="noindent" >Package managers may recognise other tokens, but ebuilds may not rely upon them being +supported. +</p><!--l. 289--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.8 </span> <a + id="x1-920009.2.8"></a>Properties</h4> +<!--l. 292--><p class="noindent" >The following tokens are permitted inside <span +class="ectt-1000">PROPERTIES</span>: + + + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">interactive</span> </dt><dd +class="description">The package may require interaction with the user via the tty.</dd></dl> +<!--l. 298--><p class="noindent" >Ebuilds may not rely upon any token being supported. +</p><!--l. 300--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.2.9 </span> <a + id="x1-930009.2.9"></a>SRC_URI</h4> +<!--l. 303--><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. 307--><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. 310--><p class="noindent" >The special <span +class="ectt-1000">mirror:// </span>protocol must be supported. See section <a +href="#x1-360004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a> for mirror details. +</p><!--l. 313--><p class="noindent" >If a simple filename rather than a full URI is provided, the package manager can only use mirrors +to download the file. +</p><!--l. 316--><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-910009.2.7">9.2.7<!--tex4ht:ref: sec:restrict --></a> for details. + </p><!--l. 319--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">I</span>-<span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">W</span><span +class="small-caps">S</span></span></span></p><!--l. 319--><p class="noindent" >In EAPIs supporting arrows, if an arrow is used, the filename used when saving to <span +class="ectt-1000">DISTDIR </span>shall +instead be the name on the right of the arrow. When consulting mirrors (except for those explicitly +listed on the left of the arrow, if <span +class="ectt-1000">mirror:// </span>is used), the filename to the right of the arrow shall be +requested instead of the filename in the URI. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 10</span><br /><a + id="x1-9400010"></a>Ebuild-defined Functions</h2> +<h3 class="sectionHead"><span class="titlemark">10.1 </span> <a + id="x1-9500010.1"></a>List of Functions</h3> +<!--l. 7--><p class="noindent" >The following is a list of functions that an ebuild, or eclass, may define, and which will be called by +the package manager as part of the build and/or install process. In all cases the package manager +must provide a default implementation of these functions; unless otherwise stated this must be a +no-op. Most functions must assume only that they have write access to the package’s working +directory (the <span +class="ectt-1000">WORKDIR </span>environment variable; see section <a +href="#x1-119001r1">12.1<!--tex4ht:ref: env-var-WORKDIR --></a>), and the temporary directory +<span +class="ectt-1000">T</span>; exceptions are noted below. All functions may assume that they have read access +to all system libraries, binaries and configuration files that are accessible to normal +users. +</p><!--l. 16--><p class="noindent" >The environment for functions run outside of the build sequence (that is, <span +class="ectt-1000">pkg_config</span>, <span +class="ectt-1000">pkg_info</span>, +<span +class="ectt-1000">pkg_prerm </span>and <span +class="ectt-1000">pkg_postrm</span>) must be the environment used for the build of the package, not the +current configuration. +</p><!--l. 20--><p class="noindent" >Ebuilds must not call nor assume the existence of any phase functions. +</p><!--l. 22--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.1 </span> <a + id="x1-9600010.1.1"></a>Initial Working Directories</h4> +<!--l. 25--><p class="noindent" >Some functions may assume that their initial working directory is set to a particular location; these +are noted below. If no initial working directory is mandated, it may be set to anything and the +ebuild must not rely upon a particular location for it. The ebuild <span +class="ecti-1000">may </span>assume that the initial +working directory for any phase is a trusted location that may only be written to by a privileged +user and group. + </p><!--l. 31--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span>-<span +class="small-caps">W</span><span +class="small-caps">O</span><span +class="small-caps">R</span><span +class="small-caps">K</span><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">R</span>-<span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span></span></span></p><!--l. 31--><p class="noindent" >Some functions are described as having an initial working directory of <span +class="ectt-1000">S </span>with an error or fallback +to <span +class="ectt-1000">WORKDIR</span>. For EAPIs listed in table <a +href="#x1-96001r1">10.1<!--tex4ht:ref: tab:s-fallback-table --></a> as having the fallback, this means that if <span +class="ectt-1000">S </span>is not a +directory before the start of the phase function, the initial working directory shall be <span +class="ectt-1000">WORKDIR</span> +instead. For EAPIs where it is a conditional error, if <span +class="ectt-1000">S </span>is not a directory before the start of the +phase function, it is a fatal error, unless all of the following conditions are true, in which case the +fallback to <span +class="ectt-1000">WORKDIR </span>is used: +</p><!--l. 40--><p class="noindent" > + </p><ul> + <li class="compactitem">The <span +class="ectt-1000">A </span>variable contains no items. + </li> + <li class="compactitem">The phase function in question is not in <span +class="ectt-1000">DEFINED_PHASES</span>. + </li> + <li class="compactitem">None of the phase functions <span +class="ectt-1000">unpack</span>, <span +class="ectt-1000">prepare</span>, <span +class="ectt-1000">configure</span>, <span +class="ectt-1000">compile </span>or <span +class="ectt-1000">install</span>, if + supported by the EAPI in question and occurring prior to the phase about to be + executed, are in <span +class="ectt-1000">DEFINED_PHASES</span>.</li></ul> +<div class="table"> + + +<!--l. 47--><p class="noindent" ><a + id="x1-96001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.1: </span><span +class="content">EAPIs with <span +class="ectt-1000">S </span>to <span +class="ectt-1000">WORKDIR </span>fallbacks</span></div><!--tex4ht:label?: x1-96001r1 --> +<div class="tabular"> + <table id="TBL-10" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-10-1g"><col +id="TBL-10-1" /><col +id="TBL-10-2" /></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">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-10-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-2" +class="td11">Always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-2" +class="td11">Always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-2" +class="td11">Always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-2" +class="td11">Always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-2" +class="td11">Conditional error </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.2 </span> <a + id="x1-9700010.1.2"></a>pkg_pretend</h4> + <!--l. 65--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">K</span><span +class="small-caps">G</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span></span></span></p><!--l. 65--><p class="noindent" >The <span +class="ectt-1000">pkg_pretend </span>function is only called for EAPIs listed in table <a +href="#x1-97001r2">10.2<!--tex4ht:ref: tab:pkg-pretend-table --></a> as supporting +it. +</p><!--l. 68--><p class="noindent" >The <span +class="ectt-1000">pkg_pretend </span>function may be used to carry out sanity checks early on in the install process. +For example, if an ebuild requires a particular kernel configuration, it may perform that check in +<span +class="ectt-1000">pkg_pretend </span>and call <span +class="ectt-1000">eerror </span>and then <span +class="ectt-1000">die </span>with appropriate messages if the requirement is not +met. +</p><!--l. 73--><p class="noindent" ><span +class="ectt-1000">pkg_pretend </span>is run separately from the main phase function sequence, and does not participate in +any kind of environment saving. There is no guarantee that any of an ebuild’s dependencies will be +met at this stage, and no guarantee that the system state will not have changed substantially +before the next phase is executed. +</p><!--l. 78--><p class="noindent" ><span +class="ectt-1000">pkg_pretend </span>must not write to the filesystem. +</p> +<div class="table"> + + +<!--l. 80--><p class="noindent" ><a + id="x1-97001r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.2: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">pkg_pretend</span></span></div><!--tex4ht:label?: x1-97001r2 --> +<div class="tabular"> + <table id="TBL-11" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-11-1g"><col +id="TBL-11-1" /><col +id="TBL-11-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-11-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-11-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-11-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">pkg_pretend</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"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-2" +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"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.3 </span> <a + id="x1-9800010.1.3"></a>pkg_setup</h4> +<!--l. 97--><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. 101--><p class="noindent" ><span +class="ectt-1000">pkg_setup </span>must be run with full filesystem permissions, including the ability to add new users +and/or groups to the system. +</p><!--l. 104--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.4 </span> <a + id="x1-9900010.1.4"></a>src_unpack</h4> + <!--l. 107--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span></span></span></p><!--l. 107--><p class="noindent" >The <span +class="ectt-1000">src_unpack </span>function extracts all of the package’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. 111--><p class="noindent" >The initial working directory must be <span +class="ectt-1000">WORKDIR</span>, and the default implementation used when the +ebuild lacks the <span +class="ectt-1000">src_unpack </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-6"> +src_unpack() { + <br />    if [[ -n ${A} ]]; then + <br />        unpack ${A} + <br />    fi + <br />}</div> +<!--l. 120--><p class="nopar" > +</p><!--l. 122--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.5 </span> <a + id="x1-10000010.1.5"></a>src_prepare</h4> + <!--l. 125--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">E</span></span></span></p><!--l. 125--><p class="noindent" >The <span +class="ectt-1000">src_prepare </span>function is only called for EAPIs listed in table <a +href="#x1-100001r3">10.3<!--tex4ht:ref: tab:src-prepare-table --></a> as supporting +it. +</p><!--l. 128--><p class="noindent" >The <span +class="ectt-1000">src_prepare </span>function can be used for post-unpack source preparation. The default +implementation does nothing. +</p><!--l. 131--><p class="noindent" >The initial working directory is <span +class="ectt-1000">S</span>, with an error or fallback to <span +class="ectt-1000">WORKDIR </span>as discussed in +section <a +href="#x1-9600010.1.1">10.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. +</p> +<div class="table"> + + +<!--l. 134--><p class="noindent" ><a + id="x1-100001r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.3: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">src_prepare</span></span></div><!--tex4ht:label?: x1-100001r3 --> +<div class="tabular"> + <table id="TBL-12" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-12-1g"><col +id="TBL-12-1" /><col +id="TBL-12-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-12-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-12-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">src_prepare</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-2" +class="td11">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"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.6 </span> <a + id="x1-10100010.1.6"></a>src_configure</h4> + <!--l. 152--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">G</span><span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">E</span></span></span></p><!--l. 152--><p class="noindent" >The <span +class="ectt-1000">src_configure </span>function is only called for EAPIs listed in table <a +href="#x1-101001r4">10.4<!--tex4ht:ref: tab:src-configure-table --></a> as supporting +it. +</p><!--l. 155--><p class="noindent" >The initial working directory is <span +class="ectt-1000">S</span>, with an error or fallback to <span +class="ectt-1000">WORKDIR </span>as discussed in +section <a +href="#x1-9600010.1.1">10.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. +</p><!--l. 158--><p class="noindent" >The <span +class="ectt-1000">src_configure </span>function configures the package’s build environment. The default +implementation used when the ebuild lacks the <span +class="ectt-1000">src_configure </span>function shall behave +as: + + +</p> +<div class="verbatim" id="verbatim-7"> +src_configure() { + <br />    if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then + <br />        econf + <br />    fi + <br />}</div> +<!--l. 167--><p class="nopar" > +</p> +<div class="table"> + + +<!--l. 169--><p class="noindent" ><a + id="x1-101001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.4: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">src_configure</span></span></div><!--tex4ht:label?: x1-101001r4 --> +<div class="tabular"> + <table id="TBL-13" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-13-1g"><col +id="TBL-13-1" /><col +id="TBL-13-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-13-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-13-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-13-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">src_configure</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-13-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.7 </span> <a + id="x1-10200010.1.7"></a>src_compile</h4> + <!--l. 187--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span></span></span></p><!--l. 187--><p class="noindent" >The <span +class="ectt-1000">src_compile </span>function configures the package’s build environment in EAPIs lacking +<span +class="ectt-1000">src_configure</span>, and builds the package in all EAPIs. +</p><!--l. 190--><p class="noindent" >The initial working directory is <span +class="ectt-1000">S</span>, with an error or fallback to <span +class="ectt-1000">WORKDIR </span>as discussed in +section <a +href="#x1-9600010.1.1">10.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. + </p><!--l. 193--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-0</span></span></p><!--l. 193--><p class="noindent" >For EAPIs listed in table <a +href="#x1-102001r5">10.5<!--tex4ht:ref: tab:src-compile-table --></a> as using format 0, the default implementation used when the ebuild +lacks the <span +class="ectt-1000">src_compile </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-8"> +src_compile() { + <br />    if [[ -x ./configure ]]; then + <br />        econf + <br />    fi + <br />    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + <br />        emake || die "emake failed" + <br />    fi + <br />}</div> +<!--l. 206--><p class="nopar" > + </p><!--l. 208--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-1</span></span></p><!--l. 208--><p class="noindent" >For EAPIs listed in table <a +href="#x1-102001r5">10.5<!--tex4ht:ref: tab:src-compile-table --></a> as using format 1, the default implementation used when the ebuild +lacks the <span +class="ectt-1000">src_compile </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-9"> +src_compile() { + <br />    if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then + <br />        econf + <br />    fi + <br />    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + <br />        emake || die "emake failed" + <br />    fi + <br />}</div> +<!--l. 221--><p class="nopar" > + </p><!--l. 223--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-2</span></span></p><!--l. 223--><p class="noindent" >For EAPIs listed in table <a +href="#x1-102001r5">10.5<!--tex4ht:ref: tab:src-compile-table --></a> as using format 2, the default implementation used when the ebuild +lacks the <span +class="ectt-1000">src_compile </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-10"> +src_compile() { + <br />    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + <br />        emake || die "emake failed" + <br />    fi + <br />}</div> +<!--l. 233--><p class="nopar" > +</p> +<div class="table"> + + +<!--l. 235--><p class="noindent" ><a + id="x1-102001r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.5: </span><span +class="content"><span +class="ectt-1000">src_compile </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-102001r5 --> +<div class="tabular"> + <table id="TBL-14" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-14-1g"><col +id="TBL-14-1" /><col +id="TBL-14-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-14-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-14-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Format</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-14-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-2" +class="td11">0 </td></tr><tr + style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-2" +class="td11">1</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-4-2" +class="td11">2 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-5-2" +class="td11">2 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-6-2" +class="td11">2 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.8 </span> <a + id="x1-10300010.1.8"></a>src_test</h4> +<!--l. 253--><p class="noindent" >The <span +class="ectt-1000">src_test </span>function runs unit tests for the newly built but not yet installed package as +provided. +</p><!--l. 256--><p class="noindent" >The initial working directory must be <span +class="ectt-1000">S </span>if that exists, falling back to <span +class="ectt-1000">WORKDIR </span>otherwise. The +default implementation used when the ebuild lacks the <span +class="ectt-1000">src_test </span>function must, if tests are +enabled, run <span +class="ectt-1000">make check </span>if and only if such a target is available, or if not run <span +class="ectt-1000">make test</span>, if and +only such a target is available. In both cases, if make returns non-zero the build must be +aborted. +</p><!--l. 262--><p class="noindent" >The <span +class="ectt-1000">src_test </span>function may be disabled by <span +class="ectt-1000">RESTRICT</span>. See section <a +href="#x1-910009.2.7">9.2.7<!--tex4ht:ref: sec:restrict --></a>. +</p><!--l. 264--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.9 </span> <a + id="x1-10400010.1.9"></a>src_install</h4> + <!--l. 267--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span></span></span></p><!--l. 267--><p class="noindent" >The <span +class="ectt-1000">src_install </span>function installs the package’s content to a directory specified in +<span +class="ectt-1000">D</span>. +</p><!--l. 270--><p class="noindent" >The initial working directory is <span +class="ectt-1000">S</span>, with an error or fallback to <span +class="ectt-1000">WORKDIR </span>as discussed in +section <a +href="#x1-9600010.1.1">10.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. + </p><!--l. 273--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span>-4</span></span></p><!--l. 273--><p class="noindent" >For EAPIs listed in table <a +href="#x1-104001r6">10.6<!--tex4ht:ref: tab:src-install-table --></a> as using format 4, the default implementation used when the ebuild +lacks the <span +class="ectt-1000">src_install </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-11"> +src_install() { + <br />    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + <br />        emake DESTDIR="${D}" install + <br />    fi + <br /> + <br />    if ! declare -p DOCS >/dev/null 2>&1 ; then + <br />        local d + <br />        for d in README* ChangeLog AUTHORS NEWS TODO CHANGES \ + <br />                THANKS BUGS FAQ CREDITS CHANGELOG ; do + <br />            [[ -s "${d}" ]] && dodoc "${d}" + <br />        done + <br />    elif declare -p DOCS | grep -q ’^declare -a ’ ; then + <br />        dodoc "${DOCS[@]}" + <br />    else + <br />        dodoc ${DOCS} + <br />    fi + <br />}</div> +<!--l. 295--><p class="nopar" > +</p><!--l. 297--><p class="noindent" >For other EAPIs, the default implementation used when the ebuild lacks the <span +class="ectt-1000">src_install </span>function +is a no-op. +</p> +<div class="table"> + + +<!--l. 300--><p class="noindent" ><a + id="x1-104001r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.6: </span><span +class="content"><span +class="ectt-1000">src_install </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-104001r6 --> +<div class="tabular"> + <table id="TBL-15" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-15-1g"><col +id="TBL-15-1" /><col +id="TBL-15-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-15-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-15-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Format</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-2-2" +class="td11">no-op </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-3-2" +class="td11">no-op </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-4-2" +class="td11">no-op </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-5-2" +class="td11">no-op </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-6-2" +class="td11">4 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.10 </span> <a + id="x1-10500010.1.10"></a>pkg_preinst</h4> +<!--l. 318--><p class="noindent" >The <span +class="ectt-1000">pkg_preinst </span>function performs any special tasks that are required immediately before +merging the package to the live filesystem. It must not write outside of the directories specified by +the <span +class="ectt-1000">ROOT </span>and <span +class="ectt-1000">D </span>environment variables. +</p><!--l. 322--><p class="noindent" ><span +class="ectt-1000">pkg_preinst </span>must be run with full access to all files and directories below that specified by the +<span +class="ectt-1000">ROOT </span>and <span +class="ectt-1000">D </span>environment variables. +</p><!--l. 325--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.11 </span> <a + id="x1-10600010.1.11"></a>pkg_postinst</h4> +<!--l. 328--><p class="noindent" >The <span +class="ectt-1000">pkg_postinst </span>function performs any special tasks that are required immediately after +merging the package to the live filesystem. It must not write outside of the directory specified in +the <span +class="ectt-1000">ROOT </span>environment variable. +</p><!--l. 332--><p class="noindent" ><span +class="ectt-1000">pkg_postinst</span>, like, <span +class="ectt-1000">pkg_preinst</span>, must be run with full access to all files and directories below +that specified by the <span +class="ectt-1000">ROOT </span>environment variable. +</p><!--l. 335--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.12 </span> <a + id="x1-10700010.1.12"></a>pkg_prerm</h4> +<!--l. 338--><p class="noindent" >The <span +class="ectt-1000">pkg_prerm </span>function performs any special tasks that are required immediately before +unmerging the package from the live filesystem. It must not write outside of the directory specified +by the <span +class="ectt-1000">ROOT </span>environment variable. +</p><!--l. 342--><p class="noindent" ><span +class="ectt-1000">pkg_prerm </span>must be run with full access to all files and directories below that specified by the <span +class="ectt-1000">ROOT</span> +environment variable. +</p><!--l. 345--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.13 </span> <a + id="x1-10800010.1.13"></a>pkg_postrm</h4> +<!--l. 348--><p class="noindent" >The <span +class="ectt-1000">pkg_postrm </span>function performs any special tasks that are required immediately after +unmerging the package from the live filesystem. It must not write outside of the directory specified +by the <span +class="ectt-1000">ROOT </span>environment variable. +</p><!--l. 352--><p class="noindent" ><span +class="ectt-1000">pkg_postrm </span>must be run with full access to all files and directories below that specified by the +<span +class="ectt-1000">ROOT </span>environment variable. + + +</p><!--l. 355--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.14 </span> <a + id="x1-10900010.1.14"></a>pkg_config</h4> +<!--l. 358--><p class="noindent" >The <span +class="ectt-1000">pkg_config </span>function performs any custom steps required to configure a package after it has +been fully installed. It is the only ebuild function which may be interactive and prompt for user +input. +</p><!--l. 361--><p class="noindent" ><span +class="ectt-1000">pkg_config </span>must be run with full access to all files and directories inside of <span +class="ectt-1000">ROOT</span>. +</p><!--l. 363--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.15 </span> <a + id="x1-11000010.1.15"></a>pkg_info</h4> + <!--l. 366--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">K</span><span +class="small-caps">G</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">O</span></span></span></p><!--l. 366--><p class="noindent" >The <span +class="ectt-1000">pkg_info </span>function may be called by the package manager when displaying information about +an installed package. In EAPIs listed in table <a +href="#x1-110001r7">10.7<!--tex4ht:ref: tab:pkg-info-table --></a> as supporting <span +class="ectt-1000">pkg_info </span>on non-installed +packages, it may also be called by the package manager when displaying information about a +non-installed package. In this case, ebuild authors should note that dependencies may not be +installed. +</p><!--l. 372--><p class="noindent" ><span +class="ectt-1000">pkg_info </span>must not write to the filesystem. +</p> +<div class="table"> + + +<!--l. 374--><p class="noindent" ><a + id="x1-110001r7"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.7: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">pkg_info </span>on non-installed packages</span></div><!--tex4ht:label?: x1-110001r7 --> +<div class="tabular"> + <table id="TBL-16" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-16-1g"><col +id="TBL-16-1" /><col +id="TBL-16-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-16-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-16-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">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-16-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">10.1.16 </span> <a + id="x1-11100010.1.16"></a>pkg_nofetch</h4> +<!--l. 392--><p class="noindent" >The <span +class="ectt-1000">pkg_nofetch </span>function is run when the fetch phase of an fetch-restricted ebuild is run, +and the relevant source files are not available. It should direct the user to download all +relevant source files from their respective locations, with notes concerning licensing if +applicable. +</p><!--l. 396--><p class="noindent" ><span +class="ectt-1000">pkg_nofetch </span>must require no write access to any part of the filesystem. +</p><!--l. 398--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">10.1.17 </span> <a + id="x1-11200010.1.17"></a><span +class="ectt-1000">default_ </span>Phase Functions</h4> + <!--l. 401--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span><span +class="small-caps">S</span></span></span></p><!--l. 401--><p class="noindent" >In EAPIs listed in table <a +href="#x1-112001r8">10.8<!--tex4ht:ref: tab:default-phase-function-table --></a> as supporting <span +class="ectt-1000">default_ </span>phase functions, a function named +<span +class="ectt-1000">default_</span>(phase) that behaves as the default implementation for that EAPI shall be defined when +executing any ebuild phase listed in the table. Ebuilds must not call these functions except when in +the phase in question. +</p> +<div class="table"> + + +<!--l. 407--><p class="noindent" ><a + id="x1-112001r8"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 10.8: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">default_ </span>phase functions</span></div><!--tex4ht:label?: x1-112001r8 --> +<div class="tabular"> + <table id="TBL-17" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-17-1g"><col +id="TBL-17-1" /><col +id="TBL-17-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-17-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-17-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">default_ </span><span +class="ecbx-1000">functions in phases</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-2-2" +class="td11">None </td></tr><tr + style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-3-2" +class="td11">None</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-4-2" +class="td11"><span +class="ectt-1000">pkg_nofetch</span>, <span +class="ectt-1000">src_unpack</span>, <span +class="ectt-1000">src_prepare</span>, +<span +class="ectt-1000">src_configure</span>, <span +class="ectt-1000">src_compile</span>, <span +class="ectt-1000">src_test</span> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-5-2" +class="td11"><span +class="ectt-1000">pkg_nofetch</span>, <span +class="ectt-1000">src_unpack</span>, <span +class="ectt-1000">src_prepare</span>, +<span +class="ectt-1000">src_configure</span>, <span +class="ectt-1000">src_compile</span>, <span +class="ectt-1000">src_test</span> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-17-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-6-2" +class="td11"><span +class="ectt-1000">pkg_nofetch</span>, <span +class="ectt-1000">src_unpack</span>, <span +class="ectt-1000">src_prepare</span>, +<span +class="ectt-1000">src_configure</span>, <span +class="ectt-1000">src_compile</span>, <span +class="ectt-1000">src_install</span>, +<span +class="ectt-1000">src_test</span> </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-17-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">10.2 </span> <a + id="x1-11300010.2"></a>Call Order</h3> +<!--l. 427--><p class="noindent" >The call order for installing a package is: +</p><!--l. 430--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend </span>(only for EAPIs listed in table <a +href="#x1-97001r2">10.2<!--tex4ht:ref: tab:pkg-pretend-table --></a>), which is called outside of the normal + call order process. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_setup</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_unpack</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_prepare </span>(only for EAPIs listed in table <a +href="#x1-100001r3">10.3<!--tex4ht:ref: tab:src-prepare-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure </span>(only for EAPIs listed in table <a +href="#x1-101001r4">10.4<!--tex4ht:ref: tab:src-configure-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_compile</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_test </span>(except if <span +class="ectt-1000">RESTRICT=test</span>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_install</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_preinst</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_postinst</span></li></ul> +<!--l. 443--><p class="noindent" >The call order for uninstalling a package is: +</p><!--l. 446--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">pkg_prerm</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_postrm</span></li></ul> +<!--l. 450--><p class="noindent" >The call order for upgrading, downgrading or reinstalling a package is: +</p><!--l. 453--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend </span>(only for EAPIs listed in table <a +href="#x1-97001r2">10.2<!--tex4ht:ref: tab:pkg-pretend-table --></a>), which is called outside of the normal + call order process. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_setup</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_unpack</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_prepare </span>(only for EAPIs listed in table <a +href="#x1-100001r3">10.3<!--tex4ht:ref: tab:src-prepare-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure </span>(only for EAPIs listed in table <a +href="#x1-101001r4">10.4<!--tex4ht:ref: tab:src-configure-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_compile</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_test </span>(except if <span +class="ectt-1000">RESTRICT=test</span>) + + + </li> + <li class="compactitem"><span +class="ectt-1000">src_install</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_preinst</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_prerm </span>for the package being replaced + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_postrm </span>for the package being replaced + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_postinst</span></li></ul> +<!--l. 468--><p class="noindent" >Note: 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><!--l. 472--><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. 476--><p class="noindent" >For installing binary packages, the <span +class="ectt-1000">src </span>phases are not called. +</p><!--l. 478--><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 11</span><br /><a + id="x1-11400011"></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-400004.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">11.1 </span> <a + id="x1-11500011.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">11.2 </span> <a + id="x1-11600011.2"></a>Eclass-defined Metadata Keys</h3> +<!--l. 37--><p class="noindent" >The <span +class="ectt-1000">IUSE</span>, <span +class="ectt-1000">REQUIRED_USE</span>, <span +class="ectt-1000">DEPEND</span>, <span +class="ectt-1000">RDEPEND </span>and <span +class="ectt-1000">PDEPEND </span>variables are handled specially when set +by an eclass. They must be accumulated across eclasses, appending the value set by each eclass to +the resulting value after the previous one is loaded. Then the eclass-defined value is appended to +that defined by the ebuild. In the case of <span +class="ectt-1000">RDEPEND</span>, this is done after the implicit <span +class="ectt-1000">RDEPEND </span>rules in +section <a +href="#x1-720008.3.2">8.3.2<!--tex4ht:ref: sec:rdepend-depend --></a> are applied. +</p><!--l. 43--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">11.3 </span> <a + id="x1-11700011.3"></a>EXPORT_FUNCTIONS</h3> +<!--l. 45--><p class="noindent" >There is one command available in the eclass environment that is neither available nor meaningful +in ebuilds—<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-117001r1">11.1<!--tex4ht:ref: lst:export-functions --></a> and is a snippet from a hypothetical <span +class="ectt-1000">foo.eclass</span>. + + +</p><!--l. 52--><p class="noindent" ><a + id="x1-117001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 11.1: </span><span +class="content">EXPORT_FUNCTIONS example: foo.eclass</span></div><!--tex4ht:label?: x1-117001r1 --> + + +<div class="verbatim" id="verbatim-12"> +foo_src_compile() + <br />{ + <br />    econf --enable-gerbil \ + <br />            $(use_enable fnord) + <br />    emake gerbil || die "Couldn’t make a gerbil" + <br />    emake || die "emake failed" + <br />} + <br /> + <br />EXPORT_FUNCTIONS src_compile + <br />  </div> +<!--l. 63--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> +<!--l. 66--><p class="noindent" >This example defines an eclass <span +class="ectt-1000">src_compile </span>function and uses <span +class="ectt-1000">EXPORT_FUNCTIONS </span>to alias it. +Then any ebuild that inherits <span +class="ectt-1000">foo.eclass </span>will have a default <span +class="ectt-1000">src_compile </span>defined, but +should the author wish to override it he can access the function in <span +class="ectt-1000">foo.eclass </span>by calling +<span +class="ectt-1000">foo_src_compile</span>. +</p><!--l. 71--><p class="noindent" ><span +class="ectt-1000">EXPORT_FUNCTIONS </span>must only be used on ebuild phase functions. The function that is aliased +must be named <span +class="ectt-1000">eclassname_phasefunctionname</span>, where <span +class="ectt-1000">eclassname </span>is the name of the +eclass. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 12</span><br /><a + id="x1-11800012"></a>The Ebuild Environment</h2> +<h3 class="sectionHead"><span class="titlemark">12.1 </span> <a + id="x1-11900012.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-12300012.2">12.2<!--tex4ht:ref: sec:ebuild-env-state --></a>). For example, +<span +class="ectt-1000">EBUILD_PHASE </span>is different for every phase, and <span +class="ectt-1000">ROOT </span>may have changed between the various +different <span +class="ectt-1000">pkg_* </span>phases. Ebuilds must recalculate any variable they derive from an inconsistent +variable. + + + <a + id="x1-119001r1"></a> +</p><!--l. 16--><div class="longtable"> <table id="TBL-18" class="longtable" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-18-1g"><col +id="TBL-18-1" /><col +id="TBL-18-2" /><col +id="TBL-18-3" /><col +id="TBL-18-4" /></colgroup> +<tr + style="vertical-align:baseline;" id="TBL-18-1-"><td colspan="4" style="white-space:nowrap; text-align:center;" id="TBL-18-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"> <div class="caption" +><span class="id">Table 12.1: </span><span +class="content">Defined variables</span></div><!--tex4ht:label?: x1-119001r1 --> </div><a + id="x1-119002"></a> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-18-2-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-18-2-1" +class="td11"><!--cmidrule--> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-18-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-18-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-18-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-18-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-18-4-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-18-4-1" +class="td11"><!--cmidrule--> +</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><tr + style="vertical-align:baseline;" id="TBL-18-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-6-1" +class="td11"></td><td style="white-space:wrap; text-align:left;" id="TBL-18-6-2" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-18-6-3" +class="td11"> </td><td style="white-space:wrap; text-align:left;" id="TBL-18-6-4" +class="td11"> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-18-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-18-1" +class="td11"><span +class="ectt-1000">P </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-18-2" +class="td11"> +<!--l. 36--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-18-3" +class="td11">No<span class="footnote-mark"><a +href="pms3.html#fn1x13"><sup class="textsuperscript">1</sup></a></span><a + id="x1-119003f1"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-18-18-4" +class="td11"> +<!--l. 38--><p class="noindent" >Package name and version, without the +revision part. For example, <span +class="ectt-1000">vim-7.0.174</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-19-1" +class="td11"><span +class="ectt-1000">PN </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-19-2" +class="td11"> +<!--l. 40--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-19-3" +class="td11">ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-18-19-4" +class="td11"> +<!--l. 42--><p class="noindent" >Package name, for example <span +class="ectt-1000">vim</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-20-1" +class="td11"><span +class="ectt-1000">CATEGORY </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-20-2" +class="td11"> +<!--l. 44--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-20-3" +class="td11">ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-18-20-4" +class="td11"> +<!--l. 46--><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-18-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-21-1" +class="td11"><span +class="ectt-1000">PV </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-21-2" +class="td11"> +<!--l. 48--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-21-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-21-4" +class="td11"> +<!--l. 50--><p class="noindent" >Package version, with no revision. For example +<span +class="ectt-1000">7.0.174</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-22-1" +class="td11"><span +class="ectt-1000">PR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-22-2" +class="td11"> +<!--l. 52--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-22-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-22-4" +class="td11"> +<!--l. 54--><p class="noindent" >Package revision, or <span +class="ectt-1000">r0 </span>if none exists. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-23-1" +class="td11"><span +class="ectt-1000">PVR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-23-2" +class="td11"> +<!--l. 56--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-23-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-23-4" +class="td11"> +<!--l. 58--><p class="noindent" >Package version and revision (if any), for +example <span +class="ectt-1000">7.0.174 </span>or <span +class="ectt-1000">7.0.174-r1</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-24-1" +class="td11"><span +class="ectt-1000">PF </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-24-2" +class="td11"> +<!--l. 60--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-24-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-24-4" +class="td11"> +<!--l. 62--><p class="noindent" >Package name, version, and revision (if any), +for example <span +class="ectt-1000">vim-7.0.174-r1</span>. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-18-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-25-1" +class="td11"><span +class="ectt-1000">A </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-25-2" +class="td11"> +<!--l. 64--><p class="noindent" ><span +class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-25-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-25-4" +class="td11"> +<!--l. 66--><p class="noindent" >All source files available for the package, +whitespace separated with no leading or +trailing whitespace, and in the order in which +the item first appears in a matched component +of <span +class="ectt-1000">SRC_URI</span>. Does not include any that are +disabled because of USE conditionals. The +value is calculated from the base names of +each element of the <span +class="ectt-1000">SRC_URI </span>ebuild metadata +variable. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-26-1" +class="td11"><span +class="ectt-1000">AA</span><span class="footnote-mark"><a +href="pms4.html#fn2x13"><sup class="textsuperscript">2</sup></a></span><a + id="x1-119004f2"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-18-26-2" +class="td11"> +<!--l. 74--><p class="noindent" ><span +class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-26-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-26-4" +class="td11"><!--l. 76--><p class="noindent" > +<span class="fbox"><span +class="eccc-1000"><span +class="small-caps">A</span><span +class="small-caps">A</span></span> </span></p><!--l. 76--><p class="noindent" >All source files that could be available for +the package, including any that are disabled +in <span +class="ectt-1000">A </span>because of USE conditionals. The value +is calculated from the base names of each +element of the <span +class="ectt-1000">SRC_URI </span>ebuild metadata +variable. Only for EAPIs listed in table <a +href="#x1-119008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> +as supporting <span +class="ectt-1000">AA</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-27-1" +class="td11"><span +class="ectt-1000">FILESDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-27-2" +class="td11"> +<!--l. 81--><p class="noindent" ><span +class="ectt-1000">src_*</span><span class="footnote-mark"><a +href="pms5.html#fn3x13"><sup class="textsuperscript">3</sup></a></span> <a + id="x1-119005f3"></a> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-27-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-18-27-4" +class="td11"> +<!--l. 83--><p class="noindent" >The full path to the package’s files directory, +used for small support files or patches. See +section <a +href="#x1-330004.3">4.3<!--tex4ht:ref: sec:package-dirs --></a>. May or may not exist; if a +repository provides no support files for the +package in question then an ebuild must be +prepared for the situation where <span +class="ectt-1000">FILESDIR</span> +points to a non-existent directory. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-28-1" +class="td11"><span +class="ectt-1000">PORTDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-28-2" +class="td11"> +<!--l. 88--><p class="noindent" >ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-28-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-18-28-4" +class="td11"> +<!--l. 90--><p class="noindent" >The full path to the master repository’s base +directory. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-29-1" +class="td11"><span +class="ectt-1000">DISTDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-29-2" +class="td11"> +<!--l. 92--><p class="noindent" >ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-29-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-18-29-4" +class="td11"> +<!--l. 94--><p class="noindent" >The full path to the directory in which the files +in the <span +class="ectt-1000">A </span>variable are stored. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-18-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-30-1" +class="td11"><span +class="ectt-1000">ECLASSDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-30-2" +class="td11"> +<!--l. 96--><p class="noindent" >ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-30-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-18-30-4" +class="td11"> +<!--l. 98--><p class="noindent" >The full path to the master repository’s eclass +directory. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-31-1" +class="td11"><span +class="ectt-1000">ROOT </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-31-2" +class="td11"> +<!--l. 100--><p class="noindent" ><span +class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-31-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-18-31-4" +class="td11"> +<!--l. 102--><p class="noindent" >The absolute path to the root directory into +which the package is to be merged. Phases +which run with full filesystem access must not +touch any files outside of the directory given in +<span +class="ectt-1000">ROOT</span>. Also of note is that in a cross-compiling +environment, binaries inside of <span +class="ectt-1000">ROOT </span>will not +be executable on the build machine, so ebuilds +must not call them. <span +class="ectt-1000">ROOT </span>must be non-empty +and end in a trailing slash. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-32-1" +class="td11"><span +class="ectt-1000">EROOT </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-32-2" +class="td11"> +<!--l. 108--><p class="noindent" ><span +class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-32-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-18-32-4" +class="td11"> +<!--l. 110--><p class="noindent" >Like <span +class="ectt-1000">ROOT</span>, but with <span +class="ectt-1000">EPREFIX </span>appended. This +is a convenience variable. See also the <span +class="ectt-1000">EPREFIX</span> +variable. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-33-1" +class="td11"><span +class="ectt-1000">T </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-33-2" +class="td11"> +<!--l. 113--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-33-3" +class="td11">Partially<span class="footnote-mark"><a +href="pms6.html#fn4x13"><sup class="textsuperscript">4</sup></a></span><a + id="x1-119006f4"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-18-33-4" +class="td11"> +<!--l. 117--><p class="noindent" >The full path to a temporary directory for use +by the ebuild. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-34-1" +class="td11"><span +class="ectt-1000">TMPDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-34-2" +class="td11"> +<!--l. 119--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-34-3" +class="td11">Ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-18-34-4" +class="td11"> +<!--l. 121--><p class="noindent" >Must be set to the location of a usable +temporary directory, for any applications +called by an ebuild. Must not be used by +ebuilds directly; see <span +class="ectt-1000">T </span>above. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-35-1" +class="td11"><span +class="ectt-1000">HOME </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-35-2" +class="td11"> +<!--l. 124--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-35-3" +class="td11">Ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-18-35-4" +class="td11"> +<!--l. 126--><p class="noindent" >The full path to an appropriate temporary +directory for use by any programs invoked by +the ebuild that may read or modify the home +directory. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-18-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-36-1" +class="td11"><span +class="ectt-1000">EPREFIX </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-36-2" +class="td11"> +<!--l. 129--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-36-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-36-4" +class="td11"> +<!--l. 131--><p class="noindent" >The normalised offset-prefix path of an offset +installation. When <span +class="ectt-1000">EPREFIX </span>is not set in +the calling environment, <span +class="ectt-1000">EPREFIX </span>defaults to +the built-in offset-prefix that was set during +installation of the package manager. When +a different <span +class="ectt-1000">EPREFIX </span>value than the built-in +value is set in the calling environment, a +cross-prefix build is performed where using the +existing utilities, a package is built for the +given <span +class="ectt-1000">EPREFIX</span>, akin to <span +class="ectt-1000">ROOT</span>. See also <a +href="#x1-12200012.1.3">12.1.3<!--tex4ht:ref: sec:offset-vars --></a>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-37-1" +class="td11"><span +class="ectt-1000">D </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-37-2" +class="td11"> +<!--l. 137--><p class="noindent" ><span +class="ectt-1000">src_install</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-37-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-18-37-4" +class="td11"> +<!--l. 139--><p class="noindent" >Contains the full path to the image directory +into which the package should be installed. +Must be non-empty and end in a trailing slash.</p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-38-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-18-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-39-1" +class="td11"><span +class="ectt-1000">D </span>(continued) </td><td style="white-space:wrap; text-align:left;" id="TBL-18-39-2" +class="td11"> +<!--l. 142--><p class="noindent" ><span +class="ectt-1000">pkg_preinst</span>, +<span +class="ectt-1000">pkg_postinst</span> </p> </td> <td style="white-space:nowrap; text-align:left;" id="TBL-18-39-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-39-4" +class="td11"> +<!--l. 144--><p class="noindent" >Contains the full path to the image that is +about to be or has just been merged. Must be +non-empty and end in a trailing slash. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-40-1" +class="td11"><span +class="ectt-1000">ED </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-40-2" +class="td11"> +<!--l. 147--><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-18-40-3" +class="td11">See <span +class="ectt-1000">D</span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-40-4" +class="td11"> +<!--l. 149--><p class="noindent" >Like <span +class="ectt-1000">D</span>, but with <span +class="ectt-1000">EPREFIX </span>appended. This is +a convenience variable. See also the <span +class="ectt-1000">EPREFIX</span> +variable. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-41-1" +class="td11"><span +class="ectt-1000">IMAGE</span><span class="footnote-mark"><a +href="pms7.html#fn5x13"><sup class="textsuperscript">5</sup></a></span><a + id="x1-119007f5"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-18-41-2" +class="td11"> +<!--l. 152--><p class="noindent" ><span +class="ectt-1000">pkg_preinst</span>, +<span +class="ectt-1000">pkg_postinst</span> </p> </td> <td style="white-space:nowrap; text-align:left;" id="TBL-18-41-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-41-4" +class="td11"> +<!--l. 154--><p class="noindent" >Equal to <span +class="ectt-1000">D</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-42-1" +class="td11"><span +class="ectt-1000">INSDESTTREE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-42-2" +class="td11"> +<!--l. 156--><p class="noindent" ><span +class="ectt-1000">src_install</span></p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-42-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-18-42-4" +class="td11"> +<!--l. 158--><p class="noindent" >Controls the location where doins installs +things. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-18-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-43-1" +class="td11"><span +class="ectt-1000">USE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-43-2" +class="td11"> +<!--l. 160--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-43-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-43-4" +class="td11"> +<!--l. 162--><p class="noindent" >A whitespace-delimited list of all active USE +flags for this ebuild. See section <a +href="#x1-12000012.1.1">12.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for +details. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-44-1" +class="td11"><span +class="ectt-1000">EBUILD_PHASE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-44-2" +class="td11"> +<!--l. 165--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-44-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-18-44-4" +class="td11"> +<!--l. 167--><p class="noindent" >Takes one of the values <span +class="ectt-1000">config</span>, <span +class="ectt-1000">setup</span>, +<span +class="ectt-1000">nofetch</span>, <span +class="ectt-1000">unpack</span>, <span +class="ectt-1000">prepare</span>, <span +class="ectt-1000">configure</span>, +<span +class="ectt-1000">compile</span>, <span +class="ectt-1000">test</span>, <span +class="ectt-1000">install</span>, <span +class="ectt-1000">preinst</span>, <span +class="ectt-1000">postinst</span>, +<span +class="ectt-1000">prerm</span>, <span +class="ectt-1000">postrm</span>, <span +class="ectt-1000">info</span>, <span +class="ectt-1000">pretend </span>according to +the top level ebuild function that was executed +by the package manager. May be unset or +any single word that is not any of the above +when the ebuild is being sourced for other +(e. g. metadata or QA) purposes. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-45-1" +class="td11"><span +class="ectt-1000">WORKDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-45-2" +class="td11"> +<!--l. 173--><p class="noindent" ><span +class="ectt-1000">src_*</span>, +global scope </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-45-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-45-4" +class="td11"> +<!--l. 175--><p class="noindent" >The full path to the ebuild’s working directory, +in which all build data should be contained. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-46-1" +class="td11"><span +class="ectt-1000">S </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-46-2" +class="td11"> +<!--l. 178--><p class="noindent" ><span +class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-46-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-46-4" +class="td11"> +<!--l. 180--><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-12300012.2">12.2<!--tex4ht:ref: sec:ebuild-env-state --></a> for global variables apply. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-47-1" +class="td11"><span +class="ectt-1000">KV </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-47-2" +class="td11"> +<!--l. 185--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-47-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-47-4" +class="td11"><!--l. 187--><p class="noindent" > +<span class="fbox"><span +class="eccc-1000"><span +class="small-caps">K</span><span +class="small-caps">V</span></span> </span></p><!--l. 187--><p class="noindent" >The version of the running kernel at the time +the ebuild was first executed, as returned by +the <span +class="ectt-1000">uname</span><span +class="ectt-1000"> -r </span>command or equivalent. May be +modified by ebuilds. Only for EAPIs listed in +table <a +href="#x1-119008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as supporting <span +class="ectt-1000">KV</span>. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-18-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-48-1" +class="td11"><span +class="ectt-1000">MERGE_TYPE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-48-2" +class="td11"> +<!--l. 191--><p class="noindent" ><span +class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-48-3" +class="td11">No </td><td style="white-space:wrap; text-align:left;" id="TBL-18-48-4" +class="td11"><!--l. 193--><p class="noindent" > +<span class="fbox"><span +class="eccc-1000"><span +class="small-caps">M</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">G</span><span +class="small-caps">E</span>-<span +class="small-caps">T</span><span +class="small-caps">Y</span><span +class="small-caps">P</span><span +class="small-caps">E</span></span> </span></p><!--l. 193--><p class="noindent" >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-119008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as +supporting <span +class="ectt-1000">MERGE_TYPE</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-49-1" +class="td11"><span +class="ectt-1000">REPLACING_VERSIONS </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-49-2" +class="td11"> +<!--l. 198--><p class="noindent" ><span +class="ectt-1000">pkg_* </span>(see +text) </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-49-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-49-4" +class="td11"> +<!--l. 200--><p class="noindent" >A whitespace-separated list of versions of this +package (including revision, if specified) that +are being replaced (uninstalled or overwritten) +as a result of this install. See section <a +href="#x1-12100012.1.2">12.1.2<!--tex4ht:ref: sec:replacing-versions --></a>. +Only for EAPIs listed in table <a +href="#x1-119008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as +supporting <span +class="ectt-1000">REPLACING_VERSIONS</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-50-1" +class="td11"><span +class="ectt-1000">REPLACED_BY_VERSION </span></td><td style="white-space:wrap; text-align:left;" id="TBL-18-50-2" +class="td11"> +<!--l. 205--><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-18-50-3" +class="td11">Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-18-50-4" +class="td11"> +<!--l. 207--><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-12100012.1.2">12.1.2<!--tex4ht:ref: sec:replacing-versions --></a>. +Only for EAPIs listed in table <a +href="#x1-119008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as +supporting <span +class="ectt-1000">REPLACED_BY_VERSION</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-51-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-18-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-52-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-53-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-53-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-18-54-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-54-1" +class="td11"></td> +</tr> +<tr + style="vertical-align:baseline;" id="TBL-18-15-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-18-15-1" +class="td11"><!--cmidrule--></td></tr><tr + style="vertical-align:baseline;" id="TBL-18-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-16-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-17-1" +class="td11"></td></tr> +</table></div> + + + +<div class="table"> + + +<!--l. 214--><p class="noindent" ><a + id="x1-119008r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.2: </span><span +class="content">EAPIs supporting various env variables</span></div><!--tex4ht:label?: x1-119008r2 --> +<div class="tabular"> + <table id="TBL-19" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-19-1g"><col +id="TBL-19-1" /><col +id="TBL-19-2" /><col +id="TBL-19-3" /><col +id="TBL-19-4" /><col +id="TBL-19-5" /><col +id="TBL-19-6" /></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="ectt-1000">AA</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-19-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-19-1-4" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">MERGE_TYPE</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-19-1-5" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">REPLACING_VERSIONS</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-19-1-6" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">REPLACED_BY_VERSION</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-19-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-2-2" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-19-2-3" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-19-2-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-2-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-2-6" +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"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-3-2" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-19-3-3" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-19-3-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-3-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-3-6" +class="td11">No</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"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-4-2" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-19-4-3" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-19-4-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-4-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-4-6" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-5-2" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-19-5-3" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-19-5-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-5-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-5-6" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-6" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 233--><p class="noindent" ><a + id="x1-119009r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.3: </span><span +class="content">EAPIs supporting offset-prefix env variables</span></div><!--tex4ht:label?: x1-119009r3 --> +<div class="tabular"> + <table id="TBL-20" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-20-1g"><col +id="TBL-20-1" /><col +id="TBL-20-2" /><col +id="TBL-20-3" /><col +id="TBL-20-4" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-20-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">EPREFIX</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-3" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">EROOT</span><span +class="ecbx-1000">?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-20-1-4" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">ED</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-4" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-4" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-4" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-2" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-4" +class="td11">Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-2" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-4" +class="td11">Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 251--><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. 256--><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. 260--><p class="noindent" ><span +class="ectt-1000">GZIP</span>, <span +class="ectt-1000">BZIP</span>, <span +class="ectt-1000">BZIP2</span>, <span +class="ectt-1000">CDPATH</span>, <span +class="ectt-1000">GREP_OPTIONS</span>, <span +class="ectt-1000">GREP_COLOR </span>and <span +class="ectt-1000">GLOBIGNORE </span>must not be +set. +</p> +<h4 class="subsectionHead"><span class="titlemark">12.1.1 </span> <a + id="x1-12000012.1.1"></a>USE and IUSE Handling</h4> +<!--l. 266--><p class="nopar" >This section discusses the handling of four variables: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">IUSE</span> </dt><dd +class="description">is the variable calculated from the <span +class="ectt-1000">IUSE </span>values defined in ebuilds and eclasses. + </dd><dt class="description"> +<span +class="ecbx-1000">IUSE_REFERENCEABLE</span> </dt><dd +class="description">is a variable calculated from <span +class="ectt-1000">IUSE </span>and a variety of other + sources described below. It is purely a conceptual variable; it is not exported to the + ebuild environment. Values in <span +class="ectt-1000">IUSE_REFERENCEABLE </span>may legally be used in queries + from other packages about an ebuild’s state (for example, for use dependencies). + </dd><dt class="description"> +<span +class="ecbx-1000">IUSE_EFFECTIVE</span> </dt><dd +class="description">is another + conceptual, unexported variable. Values in <span +class="ectt-1000">IUSE_EFFECTIVE </span>are those which an ebuild + may legally use in queries about itself (for example, for the <span +class="ectt-1000">use </span>function, and for use + in dependency specification conditional blocks). + </dd><dt class="description"> +<span +class="ecbx-1000">USE</span> </dt><dd +class="description">is a variable calculated by the package manager and exported to the ebuild + environment.</dd></dl> +<!--l. 280--><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. 283--><p class="noindent" ><span +class="ectt-1000">IUSE_REFERENCEABLE </span>is equal to the calculated <span +class="ectt-1000">IUSE </span>value. +</p><!--l. 285--><p class="noindent" ><span +class="ectt-1000">IUSE_EFFECTIVE </span>contains the following values: +</p><!--l. 288--><p class="noindent" > + </p><ul> + <li class="compactitem">All values in the calculated <span +class="ectt-1000">IUSE </span>value. + </li> + <li class="compactitem">All 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. 294--><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. <span +class="ectt-1000">USE </span>may contain other flag names that are not relevant for the +ebuild. + + +</p><!--l. 299--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.1.2 </span> <a + id="x1-12100012.1.2"></a><span +class="ectt-1000">REPLACING_VERSIONS </span>and <span +class="ectt-1000">REPLACED_BY_VERSION</span></h4> + <!--l. 302--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">E</span>-<span +class="small-caps">V</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">S</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span>-<span +class="small-caps">V</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">S</span></span></span></p><!--l. 302--><p class="noindent" >In EAPIs listed in table <a +href="#x1-119008r2">12.2<!--tex4ht:ref: tab:env-vars-table --></a> as supporting it, the <span +class="ectt-1000">REPLACING_VERSIONS </span>variable shall be defined +in <span +class="ectt-1000">pkg_preinst </span>and <span +class="ectt-1000">pkg_postinst</span>. In addition, it <span +class="ecti-1000">may </span>be defined in <span +class="ectt-1000">pkg_pretend </span>and +<span +class="ectt-1000">pkg_setup</span>, although ebuild authors should take care to handle binary package creation and +installation correctly when using it in these phases. +</p><!--l. 308--><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. 311--><p class="noindent" >In EAPIs listed in table <a +href="#x1-119008r2">12.2<!--tex4ht:ref: tab: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. 314--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.1.3 </span> <a + id="x1-12200012.1.3"></a>Offset-prefix variables <span +class="ectt-1000">EPREFIX</span>, <span +class="ectt-1000">EROOT </span>and <span +class="ectt-1000">ED</span></h4> +<div class="table"> + + +<!--l. 317--><p class="noindent" ><a + id="x1-122001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.4: </span><span +class="content">EAPIs supporting offset-prefix</span></div><!--tex4ht:label?: x1-122001r4 --> +<div class="tabular"> + <table id="TBL-21" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-21-1g"><col +id="TBL-21-1" /><col +id="TBL-21-2" /></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 offset-prefix?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> + <!--l. 333--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">O</span><span +class="small-caps">F</span><span +class="small-caps">F</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">T</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">X</span>-<span +class="small-caps">V</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">S</span></span></span></p><!--l. 333--><p class="noindent" >Table <a +href="#x1-122001r4">12.4<!--tex4ht:ref: tab:offset-support-table --></a> lists the EAPIs which support offset-prefix installations. This support was initially +added in EAPI 3, in the form of three extra variables. Two of these, <span +class="ectt-1000">EROOT </span>and <span +class="ectt-1000">ED</span>, are convenience +variables using the variable <span +class="ectt-1000">EPREFIX</span>. In EAPIs that do not support an offset-prefix, the +installation offset is hardwired to <span +class="ectt-1000">/usr</span>. In offset-prefix supporting EAPIs the installation offset is +set as <span +class="ectt-1000">${EPREFIX}/usr </span>and hence can be adjusted using the variable <span +class="ectt-1000">EPREFIX</span>. Note that the +behaviour of offset-prefix aware and agnostic is the same when <span +class="ectt-1000">EPREFIX </span>is set to the empty string +in offset-prefix aware EAPIs. The latter do have the variables <span +class="ectt-1000">ED </span>and <span +class="ectt-1000">EROOT </span>properly set, +though. +</p> +<h3 class="sectionHead"><span class="titlemark">12.2 </span> <a + id="x1-12300012.2"></a>The state of variables between functions</h3> +<!--l. 4--><p class="nopar" >Exported and default scope variables are saved between functions. A non-local variable set in a +function earlier in the call sequence must have its value preserved for later functions, including +functions executed as part of a later uninstall. +</p> +<!--l. 8--><p class="nopar" ><span class="paragraphHead"><a + id="x1-12400012.2"></a><span +class="ecbx-1000">Note:</span></span> +<span +class="ectt-1000">pkg_pretend </span>is <span +class="ecti-1000">not </span>part of the normal call sequence, and does not take part in environment +saving. +</p><!--l. 11--><p class="noindent" >Variables that were exported must remain exported in later functions; variables with default +visibility may retain default visibility or be exported. +</p><!--l. 14--><p class="noindent" >Variables with special meanings to the package manager are excluded from this rule. +</p><!--l. 16--><p class="noindent" >Global variables must only contain invariant values (see <a +href="#x1-680008.1">8.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. 20--><p class="noindent" >This is demonstrated by code listing <a +href="#x1-124001r1">12.1<!--tex4ht:ref: lst:env-saving --></a>. + + +</p><!--l. 23--><p class="noindent" ><a + id="x1-124001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 12.1: </span><span +class="content">Environment state between functions</span></div><!--tex4ht:label?: x1-124001r1 --> +<div class="verbatiminput"> +<span +class="ectt-1000">GLOBAL_VARIABLE="a"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">src_compile()</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">{</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> GLOBAL_VARIABLE="b"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> DEFAULT_VARIABLE="c"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> export</span><span +class="ectt-1000"> EXPORTED_VARIABLE="d"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> local</span><span +class="ectt-1000"> LOCAL_VARIABLE="e"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">}</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">src_install(){</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> ${GLOBAL_VARIABLE}</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "a"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> ${GLOBAL_VARIABLE}</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "b"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> globals"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> ${DEFAULT_VARIABLE}</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "c"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> default"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> ${EXPORTED_VARIABLE}</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "d"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> exported"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> $(printenv</span><span +class="ectt-1000"> EXPORTED_VARIABLE</span><span +class="ectt-1000"> )</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "d"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> exported"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> -z</span><span +class="ectt-1000"> ${LOCAL_VARIABLE}</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> locals"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">}</span> +</div> + + +</div><hr class="endfloat" /> +<h3 class="sectionHead"><span class="titlemark">12.3 </span> <a + id="x1-12500012.3"></a>Available commands</h3> +<!--l. 4--><p class="nopar" >This section documents the commands available to an ebuild. Unless otherwise specified, they may +be aliases, shell functions, or executables in the ebuild’s <span +class="ectt-1000">PATH</span>. +</p><!--l. 7--><p class="noindent" >When an ebuild is being sourced for metadata querying rather than for a build (that is to say, +when none of the <span +class="ectt-1000">src_ </span>or <span +class="ectt-1000">pkg_ </span>functions are to be called), no external command may be executed. +The package manager may take steps to enforce this. +</p><!--l. 11--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.3.1 </span> <a + id="x1-12600012.3.1"></a>System commands</h4> +<!--l. 13--><p class="nopar" >Any ebuild not listed in the system set for the active profile(s) may assume the presence of every +command that is always provided by the system set for that profile. However, it must target the +lowest common denominator of all systems on which it might be installed—in most +cases this means that the only packages that can be assumed to be present are those +listed in the <span +class="ectt-1000">base </span>profile or equivalent, which is inherited by all available profiles. If an +ebuild requires any applications not provided by the system profile, or that are provided +conditionally based on USE flags, appropriate dependencies must be used to ensure their +presence. +</p><!--l. 21--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.1.1 </span> <a + id="x1-12700012.3.1.1"></a>Guaranteed system commands</h5> +<!--l. 24--><p class="nopar" >The following commands must always be available in the ebuild environment: + </p><ul> + <li class="compactitem">All builtin commands in GNU bash, version 3.2<span class="footnote-mark"><a +href="pms8.html#fn6x13"><sup class="textsuperscript">6</sup></a></span><a + id="x1-127001f6"></a> . + </li> + <li class="compactitem"><span +class="ectt-1000">sed </span>must be available, and must support all forms of invocations valid for GNU sed + version 4 or later. + </li> + <li class="compactitem"><span +class="ectt-1000">patch </span>must be available, and must support all inputs valid for GNU patch.</li></ul> +<!--l. 34--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.3.2 </span> <a + id="x1-12800012.3.2"></a>Commands provided by package dependencies</h4> +<!--l. 36--><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. Commands provided by dependencies are +available in the following cases: + </p><ul> + <li class="compactitem">In the <span +class="ectt-1000">src </span>phases, any command provided by a package listed in <span +class="ectt-1000">DEPEND </span>is available. + + + </li> + <li class="compactitem">In the <span +class="ectt-1000">pkg </span>phases, at least one of the following conditions must be met: + <ul> + <li class="compactitem">Any command provided by a package listed in <span +class="ectt-1000">DEPEND </span>is available. + </li> + <li class="compactitem">Any command provided by a package listed in <span +class="ectt-1000">RDEPEND </span>is available.</li></ul> + </li></ul> +<!--l. 48--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.3.3 </span> <a + id="x1-12900012.3.3"></a>Ebuild-specific Commands</h4> +<!--l. 3--><p class="nopar" >The following commands will always be available in the ebuild environment, provided by the +package manager. Except where otherwise noted, they may be internal (shell functions or aliases) +or external commands available in <span +class="ectt-1000">PATH</span>; where this is not specified, ebuilds may not rely upon +either behaviour. +</p><!--l. 8--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.1 </span> <a + id="x1-13000012.3.3.1"></a>Failure behaviour and related commands</h5> + <!--l. 11--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">E</span>-<span +class="small-caps">O</span><span +class="small-caps">N</span>-<span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">E</span></span></span></p><!--l. 11--><p class="noindent" >Where a command is listed as having EAPI dependent failure behaviour, a failure shall either +result in a non-zero exit status or abort the build process, as determined by table <a +href="#x1-130001r5">12.5<!--tex4ht:ref: tab:commands-die-table --></a>. +</p><!--l. 15--><p class="noindent" >The following commands affect this behaviour: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">nonfatal</span> </dt><dd +class="description"><!--l. 17--><p class="noindent" > </p><!--l. 17--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">N</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span></span></span> Executes the remainder of its arguments as a command, preserving the exit + status. If this results in a command being called that would normally abort the build + process due to a failure (but not due to an explicit <span +class="ectt-1000">die </span>or <span +class="ectt-1000">assert </span>call), instead a + non-zero exit status shall be returned. Only in EAPIs listed in table <a +href="#x1-130001r5">12.5<!--tex4ht:ref: tab:commands-die-table --></a> as supporting + <span +class="ectt-1000">nonfatal</span>.</p></dd></dl> +<div class="table"> + + +<!--l. 24--><p class="noindent" ><a + id="x1-130001r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.5: </span><span +class="content">EAPI Command Failure Behaviour</span></div><!--tex4ht:label?: x1-130001r5 --> +<div class="tabular"> + <table id="TBL-22" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-22-1g"><col +id="TBL-22-1" /><col +id="TBL-22-2" /><col +id="TBL-22-3" /></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">Command failure behaviour</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-22-1-3" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">nonfatal</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-22-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-2-2" +class="td11">Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-22-2-3" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-22-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-3-2" +class="td11">Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-22-3-3" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-22-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-4-2" +class="td11">Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-22-4-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-22-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-5-2" +class="td11">Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-22-5-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-22-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-22-6-2" +class="td11">Aborts </td><td style="white-space:nowrap; text-align:left;" id="TBL-22-6-3" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-22-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.2 </span> <a + id="x1-13100012.3.3.2"></a>Banned commands</h5> + <!--l. 43--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">D</span><span +class="small-caps">S</span></span></span></p><!--l. 43--><p class="noindent" >Some commands are banned in some EAPIs. If a banned command is called, the package manager +must abort the build process indicating an error. +</p> +<div class="table"> + + +<!--l. 46--><p class="noindent" ><a + id="x1-131001r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.6: </span><span +class="content">Banned commands</span></div><!--tex4ht:label?: x1-131001r6 --> +<div class="tabular"> + <table id="TBL-23" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-23-1g"><col +id="TBL-23-1" /><col +id="TBL-23-2" /><col +id="TBL-23-3" /><col +id="TBL-23-4" /></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 colspan="3" style="white-space:nowrap; text-align:center;" id="TBL-23-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Command banned?</span></div></td></tr><tr + style="vertical-align:baseline;" id="TBL-23-2-"><td style="white-space:nowrap; text-align:center;" id="TBL-23-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-23-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-23-2-3" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">dosed</span></div> + +</td></tr><tr + style="vertical-align:baseline;" id="TBL-23-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-3-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-3-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-3-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-4-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-4-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-4-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-5-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-5-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-5-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-6-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-6-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-6-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-7-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-7-2" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-7-3" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.3 </span> <a + id="x1-13200012.3.3.3"></a>Sandbox commands</h5> +<!--l. 65--><p class="nopar" >These commands affect the behaviour of the sandbox. Each command takes a single directory as +argument. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">addread</span> </dt><dd +class="description">Add a directory to the permitted read list. + </dd><dt class="description"> +<span +class="ecbx-1000">addwrite</span> </dt><dd +class="description">Add a directory to the permitted write list. + </dd><dt class="description"> +<span +class="ecbx-1000">addpredict</span> </dt><dd +class="description">Add a directory to the predict list. Any write to a location in this list will be + denied, but will not trigger access violation messages or abort the build process. + </dd><dt class="description"> +<span +class="ecbx-1000">adddeny</span> </dt><dd +class="description">Add a directory to the deny list.</dd></dl> +<!--l. 75--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.4 </span> <a + id="x1-13300012.3.3.4"></a>Package manager query commands</h5> +<!--l. 76--><p class="nopar" >These commands are used to extract information about the host system. Ebuilds must not run any +of these commands in parallel with any other package manager command. Ebuilds must not run +any of these commands once the current phase function has returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">has_version</span> </dt><dd +class="description">Takes exactly one package dependency specification as an argument. Returns + true if a package matching the atom is installed in <span +class="ectt-1000">ROOT</span>, and false otherwise. + </dd><dt class="description"> +<span +class="ecbx-1000">best_version</span> </dt><dd +class="description">Takes exactly one package dependency specification as an argument. If a + matching package is installed, prints the category, package name and version of the + highest matching version.</dd></dl> +<!--l. 87--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.5 </span> <a + id="x1-13400012.3.3.5"></a>Output commands</h5> +<!--l. 88--><p class="nopar" >These commands display messages to the user. Unless otherwise stated, the entire argument list is +used as a message, with backslash-escaped characters interpreted as for the <span +class="ectt-1000">echo -e </span>command of +bash, notably <span +class="ectt-1000">\t </span>for a horizontal tab, <span +class="ectt-1000">\n </span>for a new line, and <span +class="ectt-1000">\\ </span>for a literal backslash. Ebuilds +must not run any of these commands once the current phase function has returned. +Unless otherwise noted, output may be sent to stdout, stderr or some other appropriate +facility. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">einfo</span> </dt><dd +class="description">Displays an informational message. + </dd><dt class="description"> +<span +class="ecbx-1000">einfon</span> </dt><dd +class="description">Displays an informational message without a trailing newline. + + + </dd><dt class="description"> +<span +class="ecbx-1000">elog</span> </dt><dd +class="description">Displays an informational message of slightly higher importance. The package manager + may choose to log <span +class="ectt-1000">elog </span>messages by default where <span +class="ectt-1000">einfo </span>messages are not, for example. + </dd><dt class="description"> +<span +class="ecbx-1000">ewarn</span> </dt><dd +class="description">Displays a warning message. Must not go to stdout. + </dd><dt class="description"> +<span +class="ecbx-1000">eerror</span> </dt><dd +class="description">Displays an error message. Must not go to stdout. + </dd><dt class="description"> +<span +class="ecbx-1000">ebegin</span> </dt><dd +class="description">Displays an informational message. Should be used when beginning a possibly + lengthy process, and followed by a call to <span +class="ectt-1000">eend</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">eend</span> </dt><dd +class="description">Indicates that the process begun with an <span +class="ectt-1000">ebegin </span>message has completed. Takes + one fixed argument, which is a numeric return code, and an optional message in all + subsequent arguments. If the first argument is 0, print a success indicator; otherwise, + print the message followed by a failure indicator.</dd></dl> +<!--l. 110--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.6 </span> <a + id="x1-13500012.3.3.6"></a>Error commands</h5> +<!--l. 111--><p class="nopar" >These commands are used when an error is detected that will prevent the build process from +completing. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">die</span> </dt><dd +class="description">Displays a failure message provided in its first and only argument, and then aborts + the build process. <span +class="ectt-1000">die </span>is <span +class="ecti-1000">not </span>guaranteed to work correctly if called from a subshell + environment. + </dd><dt class="description"> +<span +class="ecbx-1000">assert</span> </dt><dd +class="description">Checks the value of the shell’s pipe status variable, and if any component is non-zero + (indicating failure), calls <span +class="ectt-1000">die </span>with its first argument as a failure message.</dd></dl> +<!--l. 121--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.7 </span> <a + id="x1-13600012.3.3.7"></a>Build commands</h5> +<!--l. 122--><p class="nopar" >These commands are used during the <span +class="ectt-1000">src_compile </span>and <span +class="ectt-1000">src_install </span>phases to run the package’s +build commands. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">econf</span> </dt><dd +class="description">Calls the program’s <span +class="ectt-1000">./configure </span>script. This is designed to work with GNU + Autoconf-generated scripts. Any additional parameters passed to <span +class="ectt-1000">econf </span>are passed + directly to <span +class="ectt-1000">./configure</span>. <span +class="ectt-1000">econf </span>will look in the current working directory for a + configure script unless the <span +class="ectt-1000">ECONF_SOURCE </span>environment variable is set, in which case it + is taken to be the directory containing it. <span +class="ectt-1000">econf </span>must pass the following options to the + configure script: + <!--l. 133--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">E</span><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span></span></span></p> + + + <ul class="itemize1"> + <li class="itemize">--prefix must default to <span +class="ectt-1000">${EPREFIX}/usr </span>unless overridden by <span +class="ectt-1000">econf</span>’s caller. + </li> + <li class="itemize">--mandir must be <span +class="ectt-1000">${EPREFIX}/usr/share/man</span> + </li> + <li class="itemize">--infodir must be <span +class="ectt-1000">${EPREFIX}/usr/share/info</span> + </li> + <li class="itemize">--datadir must be <span +class="ectt-1000">${EPREFIX}/usr/share</span> + </li> + <li class="itemize">--sysconfdir must be <span +class="ectt-1000">${EPREFIX}/etc</span> + </li> + <li class="itemize">--localstatedir must be <span +class="ectt-1000">${EPREFIX}/var/lib</span> + </li> + <li class="itemize">--host must be the value of the <span +class="ectt-1000">CHOST </span>environment variable. + </li> + <li class="itemize">--libdir must be set according to Algorithm <a +href="#x1-136002r9">9<!--tex4ht:ref: alg:econf-libdir --></a>. + </li> + <li class="itemize">--disable-dependency-tracking, if the EAPI is listed in table <a +href="#x1-136001r7">12.7<!--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>.</li></ul> + <div class="table"> + <!--l. 148--><p class="noindent" ><a + id="x1-136001r7"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Table 12.7: </span><span +class="content">Extra <span +class="ectt-1000">econf </span>arguments for EAPIs</span></div><!--tex4ht:label?: x1-136001r7 --> + <div class="tabular"> + <table id="TBL-24" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-24-1g"><col +id="TBL-24-1" /><col +id="TBL-24-2" /><col +id="TBL-24-3" /></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">--disable-dependency-tracking</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"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-24-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-1" +class="td11"><span +class="ectt-1000">1 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-24-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-24-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-1" +class="td11"><span +class="ectt-1000">3 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-24-5-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-1" +class="td11"> </td></tr></table></div></div><hr class="endfloat" /> + </div> + <!--l. 163--><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-119001r1">12.1<!--tex4ht:ref: tab:defined_vars --></a>. It facilitates offset-prefix installations which is supported by EAPIs listed in + Table <a +href="#x1-119009r3">12.3<!--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. 169--><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. 174--><p class="noindent" ><a + id="x1-136002r9"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Algorithm 9: </span><span +class="content">econf --libdir logic</span></div><!--tex4ht:label?: x1-136002r9 --> +<div class="algorithmic"> +<a + id="x1-136003r99"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> let prefix=${EPREFIX}/usr <a + id="x1-136004r100"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-136005r101"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let prefix=$p + </span><a + id="x1-136006r102"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-136007r103"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> let libdir= <a + id="x1-136008r104"></a> + + + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-136009r105"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let libvar=LIBDIR_$ABI <a + id="x1-136010r106"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-136011r107"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> let libdir=the value of the variable named by libvar + </span><a + id="x1-136012r108"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-136013r109"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-136014r110"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> libdir is non-empty <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-136015r111"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> pass --libdir=$prefix/$libdir to configure + </span><a + id="x1-136016r112"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </div> </div><hr class="endfloat" /> + </div> + </dd><dt class="description"> +<span +class="ecbx-1000">emake</span> </dt><dd +class="description">Calls the <span +class="ectt-1000">$MAKE </span>program, or GNU make if the <span +class="ectt-1000">MAKE </span>variable is unset. Any arguments given + are passed directly to the make command, as are the user’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-12700012.3.1.1">12.3.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-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">einstall</span> </dt><dd +class="description">A shortcut for the command given in Listing <a +href="#x1-136017r2">12.2<!--tex4ht:ref: lst:einstall --></a>. Any arguments given to <span +class="ectt-1000">einstall </span>are + passed verbatim to <span +class="ectt-1000">emake</span>, as shown. Failure behaviour is EAPI dependent as per + section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + <!--l. 203--><p class="noindent" >The variable <span +class="ectt-1000">ED </span>is defined as in Table <a +href="#x1-119001r1">12.1<!--tex4ht:ref: tab:defined_vars --></a> and depends on the use of an offset-prefix. + When such offset-prefix is absent, <span +class="ectt-1000">ED </span>is equivalent to <span +class="ectt-1000">D</span>. <span +class="ectt-1000">ED </span>is always available in + EAPIs that support offset-prefix installations as listed in Table <a +href="#x1-119009r3">12.3<!--tex4ht:ref: tab:offset-env-vars-table --></a>, hence EAPIs + lacking offset-prefix support should use <span +class="ectt-1000">D </span>instead of <span +class="ectt-1000">ED </span>in the command given in + Listing <a +href="#x1-136017r2">12.2<!--tex4ht:ref: lst:einstall --></a>. + </p><!--l. 208--><p class="noindent" ><a + id="x1-136017r2"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Listing 12.2: </span><span +class="content">einstall command</span></div><!--tex4ht:label?: x1-136017r2 --> + + +<div class="verbatim" id="verbatim-13"> +emake \ + <br />   prefix="${ED}"/usr \ + <br />   mandir="${ED}"/usr/share/man \ + <br />   infodir="${ED}"/usr/share/info \ + <br />   libdir="${ED}"/usr/$(get_libdir) \ + <br />   "$@" \ + <br />   install + <br />  </div> + <!--l. 218--><p class="nopar" ></p></div><hr class="endfloat" /> + </dd></dl> +<!--l. 223--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.8 </span> <a + id="x1-13700012.3.3.8"></a>Installation commands</h5> +<!--l. 224--><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</span> +<span +class="ectt-1000">install </span>target cannot be used or does not install all needed files. Except where otherwise stated, +all filenames created or modified are relative to the staging directory including the offset-prefix <span +class="ectt-1000">ED</span> +in offset-prefix aware EAPIs, or just the staging directory <span +class="ectt-1000">D </span>in offset-prefix agnostic EAPIs. These +commands must all be external programs and not bash functions or aliases—that is, they must be +callable from <span +class="ectt-1000">xargs</span>. Ebuilds must not run any of these commands once the current phase function +has returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">dobin</span> </dt><dd +class="description">Installs the given files into <span +class="ectt-1000">DESTTREE/bin</span>, where <span +class="ectt-1000">DESTTREE </span>defaults to <span +class="ectt-1000">/usr</span>. Gives + the files mode <span +class="ectt-1000">0755 </span>and transfers file ownership to the superuser or its equivalent on + the system or installation at hand. For instance on Gentoo Linux in a non-offset-prefix + installation this ownership is <span +class="ectt-1000">root:root</span>, while on an offset-prefix aware installation + this may be <span +class="ectt-1000">joe:users</span>. Failure behaviour is EAPI dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">doconfd</span> </dt><dd +class="description">Installs the given config files into <span +class="ectt-1000">/etc/conf.d/</span>, by default with file mode <span +class="ectt-1000">0644</span>. + This can be overridden by setting <span +class="ectt-1000">INSOPTIONS </span>with the <span +class="ectt-1000">insopts </span>function. Failure + behaviour is EAPI dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dodir</span> </dt><dd +class="description">Creates the given directories, by default with file mode <span +class="ectt-1000">0755</span>. This can be overridden + by setting <span +class="ectt-1000">DIROPTIONS </span>with the <span +class="ectt-1000">diropts </span>function. Failure behaviour is EAPI + dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dodoc</span> </dt><dd +class="description"><!--l. 250--><p class="noindent" > </p><!--l. 250--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">C</span></span></span> Installs the given files into a subdirectory under <span +class="ectt-1000">/usr/share/doc/${PF}/ </span>with file + mode <span +class="ectt-1000">0644</span>. The subdirectory is set by the most recent call to <span +class="ectt-1000">docinto</span>. If <span +class="ectt-1000">docinto</span> + has not yet been called, instead installs to the directory <span +class="ectt-1000">/usr/share/doc/${PF}/</span>. For + EAPIs listed in table <a +href="#x1-137018r8">12.8<!--tex4ht:ref: tab:dodoc-table --></a> as supporting <span +class="ectt-1000">-r</span>, if the first argument is <span +class="ectt-1000">-r</span>, any subsequent + arguments that are directories are installed recursively to the appropriate location; in + any other case, it is an error for a directory to be specified. Failure behaviour is EAPI + dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> +<span +class="ecbx-1000">doenvd</span> </dt><dd +class="description">Installs the given environment files into <span +class="ectt-1000">/etc/env.d/</span>, by default with file mode + <span +class="ectt-1000">0644</span>. This can be overridden by setting <span +class="ectt-1000">INSOPTIONS </span>with the <span +class="ectt-1000">insopts </span>function. Failure + behaviour is EAPI dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + + + </dd><dt class="description"> +<span +class="ecbx-1000">doexe</span> </dt><dd +class="description">Installs the given files into the directory specified by the most recent <span +class="ectt-1000">exeinto </span>call, + by default with file mode <span +class="ectt-1000">0755</span>. This can be overridden by setting <span +class="ectt-1000">EXEOPTIONS </span>with the + <span +class="ectt-1000">exeopts </span>function. If <span +class="ectt-1000">exeinto </span>has not yet been called, behaviour is undefined. Failure + behaviour is EAPI dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dohard</span> </dt><dd +class="description">Takes two parameters. Creates a hardlink from the second to the first. In EAPIs + listed in table <a +href="#x1-131001r6">12.6<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned as per section <a +href="#x1-13100012.3.3.2">12.3.3.2<!--tex4ht:ref: sec:banned-commands --></a>. Failure behaviour + is EAPI dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dohtml</span> </dt><dd +class="description">Installs the given HTML files into a subdirectory under <span +class="ectt-1000">/usr/share/doc/$PF/</span>. The + subdirectory is <span +class="ectt-1000">html </span>by default, but this can be overridden by setting the <span +class="ectt-1000">DOCDESTTREE</span> + variable with the <span +class="ectt-1000">docinto </span>function. Files to be installed automatically are determined by + extension and the default extensions are <span +class="ectt-1000">css</span>, <span +class="ectt-1000">gif</span>, <span +class="ectt-1000">htm</span>, <span +class="ectt-1000">html</span>, <span +class="ectt-1000">jpeg</span>, <span +class="ectt-1000">jpg</span>, <span +class="ectt-1000">js </span>and <span +class="ectt-1000">png</span>. These + default extensions can be extended or reduced (see below). The options that can be passed to + <span +class="ectt-1000">dohtml </span>are as follows: + <dl class="description"><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-r </span>— enables recursion into directories. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-V </span>— enables verbosity. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-A </span>— adds file type extensions to the default list. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-a </span>— sets file type extensions to only those specified. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-f </span>— list of files that are able to be installed. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-x </span>— list of directories that files will not be installed from (only used in conjunction + with <span +class="ectt-1000">-r</span>). + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-p </span>— sets a document prefix for installed files, not to be confused with the global + offset-prefix.</dd></dl> + <!--l. 290--><p class="noindent" >Failure behaviour is EAPI dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p><!--l. 292--><p class="noindent" >It is undefined whether a failure shall occur if <span +class="ectt-1000">-r </span>is not specified and a directory is + encountered. Ebuilds must not rely upon any particular behaviour. + </p></dd><dt class="description"> +<span +class="ecbx-1000">doinfo</span> </dt><dd +class="description">Installs a GNU Info file into the <span +class="ectt-1000">/usr/share/info </span>area with file mode <span +class="ectt-1000">0644</span>. Failure + behaviour is EAPI dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">doinitd</span> </dt><dd +class="description">Installs the given initscript files into <span +class="ectt-1000">/etc/init.d</span>, by default with file mode <span +class="ectt-1000">0755</span>. This + can be overridden by setting <span +class="ectt-1000">EXEOPTIONS </span>with the <span +class="ectt-1000">exeopts </span>function. Failure behaviour is + EAPI dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">doins</span> </dt><dd +class="description"><!--l. 302--><p class="noindent" > </p><!--l. 302--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span></span></span> Takes any number of files as arguments and installs them into <span +class="ectt-1000">INSDESTTREE</span>, by default + with file mode <span +class="ectt-1000">0644</span>. This can be overridden by setting <span +class="ectt-1000">INSOPTIONS </span>with the <span +class="ectt-1000">insopts</span> + function. If the first argument is <span +class="ectt-1000">-r</span>, then operates recursively, descending into any directories + given. For EAPIs listed in table <a +href="#x1-137019r9">12.9<!--tex4ht:ref: tab:doins-table --></a>, <span +class="ectt-1000">doins </span>must install symlinks as symlinks; for other + EAPIs, behaviour is undefined if any symlink is encountered. Failure behaviour is EAPI + dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> +<span +class="ecbx-1000">dolib</span> </dt><dd +class="description">For each argument, installs it into the appropriate library directory as determined by + + + Algorithm <a +href="#x1-137001r10">10<!--tex4ht:ref: alg:ebuild-libdir --></a>, by default with file mode <span +class="ectt-1000">0644</span>. This can be overridden by setting <span +class="ectt-1000">LIBOPTIONS</span> + with the <span +class="ectt-1000">libopts </span>function. Any symlinks are installed into the same directory as + relative links to their original target. Failure behaviour is EAPI dependent as per + section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dolib.so</span> </dt><dd +class="description">As for dolib except each file is installed with mode <span +class="ectt-1000">0755</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">dolib.a</span> </dt><dd +class="description">As for dolib except each file is installed with mode <span +class="ectt-1000">0644</span>. + <div class="algorithm"> + <!--l. 321--><p class="noindent" ><a + id="x1-137001r10"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Algorithm 10: </span><span +class="content">Determining the library directory</span></div><!--tex4ht:label?: x1-137001r10 --> +<div class="algorithmic"> +<a + id="x1-137002r113"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-137003r114"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> return CONF_LIBDIR_OVERRIDE + </span><a + id="x1-137004r115"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-137005r116"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-137006r117"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let LIBDIR_default=CONF_LIBDIR + </span><a + id="x1-137007r118"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-137008r119"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let LIBDIR_default=“lib” + </span><a + id="x1-137009r120"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-137010r121"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-137011r122"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let abi=ABI + </span><a + id="x1-137012r123"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </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-137013r124"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let abi=DEFAULT_ABI + </span><a + id="x1-137014r125"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-137015r126"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let abi=“default” + </span><a + id="x1-137016r127"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-137017r128"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> return the value of LIBDIR_$abi + </div> </div><hr class="endfloat" /> + </div> + </dd><dt class="description"> +<span +class="ecbx-1000">doman</span> </dt><dd +class="description">Installs a man page into the appropriate subdirectory of <span +class="ectt-1000">/usr/share/man </span>depending upon + its apparent section suffix (e. g. <span +class="ectt-1000">foo.1 </span>goes to <span +class="ectt-1000">/usr/share/man/man1/foo.1 </span>with file mode + <span +class="ectt-1000">0644</span>. + <!--l. 346--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span>-<span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">S</span></span></span></p><!--l. 346--><p class="noindent" >In EAPIs listed in table <a +href="#x1-137020r10">12.10<!--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-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p><!--l. 352--><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-137020r10">12.10<!--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"> +<span +class="ecbx-1000">domo</span> </dt><dd +class="description">Installs a <span +class="ectt-1000">.mo </span>file with file mode <span +class="ectt-1000">0644 </span>into the appropriate subdirectory of + <span +class="ectt-1000">DESTTREE/share/locale</span>, generated by taking the basename of the file, removing the + <span +class="ectt-1000">.* </span>suffix, and appending <span +class="ectt-1000">/LC_MESSAGES</span>. The name of the installed files is the + package name with <span +class="ectt-1000">.mo </span>appended. Failure behaviour is EAPI dependent as per + section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dosbin</span> </dt><dd +class="description">As <span +class="ectt-1000">dobin</span>, but installs to <span +class="ectt-1000">DESTTREE/sbin</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">dosym</span> </dt><dd +class="description">Creates a symbolic link named as for its second parameter, pointing to the first. If the + directory containing the new link does not exist, creates it. Failure behaviour is EAPI + dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">fowners</span> </dt><dd +class="description">Acts as for <span +class="ectt-1000">chown</span>, but takes paths relative to the image directory. Failure behaviour is + EAPI dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">fperms</span> </dt><dd +class="description">Acts as for <span +class="ectt-1000">chmod</span>, but takes paths relative to the image directory. Failure behaviour is + EAPI dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">newbin</span> </dt><dd +class="description">As for <span +class="ectt-1000">dobin</span>, but takes two parameters. The first is the file to install; the second is the + new filename under which it will be installed. + </dd><dt class="description"> +<span +class="ecbx-1000">newconfd</span> </dt><dd +class="description">As for <span +class="ectt-1000">doconfd</span>, but takes two parameters as for <span +class="ectt-1000">newbin</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newdoc</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">dodoc</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newenvd</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doenvd</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newexe</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doexe</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newinitd</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doinitd</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newins</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doins</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newlib.a</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">dolib.a</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newlib.so</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">dolib.so</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newman</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doman</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newsbin</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">dosbin</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">keepdir</span> </dt><dd +class="description">Creates a directory as for <span +class="ectt-1000">dodir</span>, and an empty file whose name starts with <span +class="ectt-1000">.keep </span>in that + directory to ensure that the directory does not get removed by the package manager + should it be empty at any point. Failure behaviour is EAPI dependent as per + section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + + + </dd></dl> +<div class="table"> + + +<!--l. 405--><p class="noindent" ><a + id="x1-137018r8"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.8: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">dodoc -r</span></span></div><!--tex4ht:label?: x1-137018r8 --> +<div class="tabular"> + <table id="TBL-25" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-25-1g"><col +id="TBL-25-1" /><col +id="TBL-25-2" /></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">Supports </span><span +class="ectt-1000">dodoc -r</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-25-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-25-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-25-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-4-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-25-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-5-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-25-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-25-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 420--><p class="noindent" ><a + id="x1-137019r9"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.9: </span><span +class="content">EAPIs supporting symlinks for <span +class="ectt-1000">doins</span></span></div><!--tex4ht:label?: x1-137019r9 --> +<div class="tabular"> + <table id="TBL-26" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-26-1g"><col +id="TBL-26-1" /><col +id="TBL-26-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-26-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-26-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-26-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">doins </span><span +class="ecbx-1000">supports symlinks?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-26-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-26-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-4-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-5-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 435--><p class="noindent" ><a + id="x1-137020r10"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.10: </span><span +class="content"><span +class="ectt-1000">doman </span>language support options for EAPIs</span></div><!--tex4ht:label?: x1-137020r10 --> +<div class="tabular"> + <table id="TBL-27" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-27-1g"><col +id="TBL-27-1" /><col +id="TBL-27-2" /><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">Language detection by filename?</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">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-27-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-2-2" +class="td11">No </td><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"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-3-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-27-3-3" +class="td11">Not applicable </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-4-2" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-27-4-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-5-2" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-27-5-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-6-2" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-27-6-3" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.9 </span> <a + id="x1-13800012.3.3.9"></a>Commands affecting install destinations</h5> +<!--l. 453--><p class="nopar" >The following commands are used to set the various destination trees, all relative to <span +class="ectt-1000">${ED} </span>in +offset-prefix aware EAPIs and relative to <span +class="ectt-1000">${D} </span>in offset-prefix agnostic EAPIs, used by the above +installation commands. They must be shell functions or aliases, due to the need to set variables +read by the above commands. Ebuilds must not run any of these commands once the current phase +function has returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">into</span> </dt><dd +class="description">Sets the value of <span +class="ectt-1000">DESTTREE </span>for future invocations of the above utilities. Creates the + directory under <span +class="ectt-1000">${ED} </span>in offset-prefix aware EAPIs or under <span +class="ectt-1000">${D} </span>in offset-prefix + agnostic EAPIs, using <span +class="ectt-1000">install -d </span>with no additional options, if it does not already + exist. Failure behaviour is EAPI dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">insinto</span> </dt><dd +class="description">Sets the value of <span +class="ectt-1000">INSDESTTREE </span>for future invocations of the above utilities. May + create the directory, as specified for <span +class="ectt-1000">into</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">exeinto</span> </dt><dd +class="description">Sets the install path for <span +class="ectt-1000">doexe </span>and <span +class="ectt-1000">newexe</span>. May create the directory, as specified + for <span +class="ectt-1000">into</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">docinto</span> </dt><dd +class="description">Sets the install subdirectory for <span +class="ectt-1000">dodoc </span>et al. May create the directory, as specified + for <span +class="ectt-1000">into</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">insopts</span> </dt><dd +class="description">Sets the options passed by <span +class="ectt-1000">doins </span>et al. to the <span +class="ectt-1000">install </span>command. + </dd><dt class="description"> +<span +class="ecbx-1000">diropts</span> </dt><dd +class="description">Sets the options passed by <span +class="ectt-1000">dodir </span>et al. to the <span +class="ectt-1000">install </span>command. + </dd><dt class="description"> +<span +class="ecbx-1000">exeopts</span> </dt><dd +class="description">Sets the options passed by <span +class="ectt-1000">doexe </span>et al. to the <span +class="ectt-1000">install </span>command. + </dd><dt class="description"> +<span +class="ecbx-1000">libopts</span> </dt><dd +class="description">Sets the options passed by <span +class="ectt-1000">dolib </span>et al. to the <span +class="ectt-1000">install </span>command. + </dd></dl> +<!--l. 487--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.10 </span> <a + id="x1-13900012.3.3.10"></a>Commands affecting install compression</h5> + <!--l. 489--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">T</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">L</span><span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">B</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">S</span></span></span></p><!--l. 489--><p class="noindent" >In EAPIs listed in table <a +href="#x1-139001r11">12.11<!--tex4ht:ref: tab:compression-table --></a> as supporting controllable compression, the package manager may +optionally compress a subset of the files under the <span +class="ectt-1000">ED </span>directory in offset-prefix aware EAPIs or the +<span +class="ectt-1000">D </span>directory in offset-prefix agnostic EAPIs. To control which directories may or may not be +compressed, the package manager shall maintain two lists: +</p><!--l. 496--><p class="noindent" > + </p><ul> + <li class="compactitem">An inclusion list, which initially contains <span +class="ectt-1000">/usr/share/doc</span>, <span +class="ectt-1000">/usr/share/info </span>and + <span +class="ectt-1000">/usr/share/man</span>. + + + </li> + <li class="compactitem">An exclusion list, which initially contains <span +class="ectt-1000">/usr/share/doc/${PF}/html</span>.</li></ul> +<!--l. 501--><p class="noindent" >The optional compression shall be carried out after <span +class="ectt-1000">src_install </span>has completed, and before the +execution of any subsequent phase function. For each item in the inclusion list, pretend it has the +value of the <span +class="ectt-1000">ED </span>variable in offset-prefix aware EAPIs or the <span +class="ectt-1000">D </span>variable in offset-prefix agnostic +EAPIs prepended, then: +</p><!--l. 507--><p class="noindent" > + </p><ul> + <li class="compactitem">If it is a directory, act as if every file or directory immediately under this directory + were in the inclusion list. + </li> + <li class="compactitem">If the item is a file, it may be compressed unless it has been excluded as described + below. + </li> + <li class="compactitem">If the item does not exist, it is ignored.</li></ul> +<!--l. 513--><p class="noindent" >Whether an item is to be excluded is determined as follows: For each item in the exclusion list, +pretend it has the value of the <span +class="ectt-1000">ED </span>variable in offset-prefix aware EAPIs or the <span +class="ectt-1000">D </span>variable in +offset-prefix agnostic EAPIs prepended, then: +</p><!--l. 518--><p class="noindent" > + </p><ul> + <li class="compactitem">If it is a directory, act as if every file or directory immediately under this directory + were in the exclusion list. + </li> + <li class="compactitem">If the item is a file, it shall not be compressed. + </li> + <li class="compactitem">If the item does not exist, it is ignored.</li></ul> +<!--l. 524--><p class="noindent" >The package manager shall take appropriate steps to ensure that its compression mechanisms +behave sensibly even if an item is listed in the inclusion list multiple times, if an item is a symlink, +or if a file is already compressed. +</p><!--l. 528--><p class="noindent" >The following commands may be used in <span +class="ectt-1000">src_install </span>to alter these lists. It is an error to call any +of these functions from any other phase. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">docompress</span> </dt><dd +class="description">If the first argument is <span +class="ectt-1000">-x</span>, add each of its subsequent arguments to the + exclusion list. Otherwise, add each argument to the inclusion list. Only available in + EAPIs listed in table <a +href="#x1-139001r11">12.11<!--tex4ht:ref: tab:compression-table --></a> as supporting <span +class="ectt-1000">docompress</span>.</dd></dl> +<div class="table"> + + +<!--l. 537--><p class="noindent" ><a + id="x1-139001r11"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.11: </span><span +class="content">EAPIs supporting controllable compression</span></div><!--tex4ht:label?: x1-139001r11 --> +<div class="tabular"> + <table id="TBL-28" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-28-1g"><col +id="TBL-28-1" /><col +id="TBL-28-2" /><col +id="TBL-28-3" /></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 controllable compression?</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-28-1-3" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">docompress</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-28-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-2-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-28-2-3" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-28-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-3-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-28-3-3" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-4-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-28-4-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-5-2" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-28-5-3" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-6-2" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-28-6-3" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.11 </span> <a + id="x1-14000012.3.3.11"></a>Use List Functions</h5> +<!--l. 554--><p class="nopar" >These functions provide behaviour based upon set or unset use flags. Ebuilds must not run any of +these commands once the current phase function has returned. Ebuilds must not run any of these +functions in global scope. +</p><!--l. 558--><p class="noindent" >If any of these functions is called with a flag value that is not included in <span +class="ectt-1000">IUSE_EFFECTIVE</span>, either +behaviour is undefined or it is an error as decided by table <a +href="#x1-140001r12">12.12<!--tex4ht:ref: tab:use-list-strictness --></a>. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">use</span> </dt><dd +class="description">Returns shell true (0) if the first argument (a <span +class="ectt-1000">USE </span>flag name) is enabled, false otherwise. + If the flag name is prefixed with <span +class="ectt-1000">!</span>, returns true if the flag is disabled, and false if it is + enabled. It is guaranteed that this command is quiet. + </dd><dt class="description"> +<span +class="ecbx-1000">usev</span> </dt><dd +class="description">The same as <span +class="ectt-1000">use</span>, but also prints the flag name if the condition is met. + </dd><dt class="description"> +<span +class="ecbx-1000">useq</span> </dt><dd +class="description">Deprecated synonym for <span +class="ectt-1000">use</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">use_with</span> </dt><dd +class="description"><!--l. 568--><p class="noindent" > </p><!--l. 568--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">W</span><span +class="small-caps">I</span><span +class="small-caps">T</span><span +class="small-caps">H</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-140002r13">12.13<!--tex4ht:ref: tab:use-with-third-arg --></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>. + </p></dd><dt class="description"> +<span +class="ecbx-1000">use_enable</span> </dt><dd +class="description">Works the same as <span +class="ectt-1000">use_with()</span>, but outputs <span +class="ectt-1000">--enable- </span>or <span +class="ectt-1000">--disable-</span> + instead of <span +class="ectt-1000">--with- </span>or <span +class="ectt-1000">--without-</span>.</dd></dl> +<div class="table"> + + +<!--l. 580--><p class="noindent" ><a + id="x1-140001r12"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.12: </span><span +class="content">EAPI Behaviour for Use Queries not in IUSE_EFFECTIVE</span></div><!--tex4ht:label?: x1-140001r12 --> +<div class="tabular"> + <table id="TBL-29" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-29-1g"><col +id="TBL-29-1" /><col +id="TBL-29-2" /></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">Behaviour</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-29-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-2" +class="td11">Undefined </td></tr><tr + style="vertical-align:baseline;" id="TBL-29-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-2" +class="td11">Undefined</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-2" +class="td11">Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-5-2" +class="td11">Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-6-2" +class="td11">Error </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 595--><p class="noindent" ><a + id="x1-140002r13"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.13: </span><span +class="content">EAPIs supporting empty third argument in <span +class="ectt-1000">use_with </span>and <span +class="ectt-1000">use_enable</span></span></div><!--tex4ht:label?: x1-140002r13 --> +<div class="tabular"> + <table id="TBL-30" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-30-1g"><col +id="TBL-30-1" /><col +id="TBL-30-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-30-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-30-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-30-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports empty third argument?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-30-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-2-2" +class="td11">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"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-4-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-5-2" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.12 </span> <a + id="x1-14100012.3.3.12"></a>Text List Functions</h5> +<!--l. 612--><p class="nopar" >These functions check whitespace-separated lists for a particular value. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">has</span> </dt><dd +class="description">Returns shell true (0) if the first argument (a word) is found in the list of subsequent + arguments, false otherwise. Guaranteed quiet. + </dd><dt class="description"> +<span +class="ecbx-1000">hasv</span> </dt><dd +class="description">The same as <span +class="ectt-1000">has</span>, but also prints the first argument if found. + </dd><dt class="description"> +<span +class="ecbx-1000">hasq</span> </dt><dd +class="description">Deprecated synonym for <span +class="ectt-1000">has</span>.</dd></dl> +<!--l. 621--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.13 </span> <a + id="x1-14200012.3.3.13"></a>Misc Commands</h5> +<!--l. 622--><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"> +<span +class="ecbx-1000">dosed</span> </dt><dd +class="description">Takes any number of arguments, which can be files or <span +class="ectt-1000">sed </span>expressions. For each + argument, if it names, relative to <span +class="ectt-1000">ED </span>(offset-prefix aware EAPIs) or <span +class="ectt-1000">D </span>(offset-prefix + agnostic EAPIs) a file which exists, then <span +class="ectt-1000">sed </span>is run with the current expression on that + file. Otherwise, the current expression is set to the text of the argument. The initial + value of the expression is <span +class="ectt-1000">s:${ED}::g </span>in offset-prefix aware EAPIs and <span +class="ectt-1000">s:${D}::g </span>in + offset-prefix agnostic EAPIs. In EAPIs listed in table <a +href="#x1-131001r6">12.6<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned + as per section <a +href="#x1-13100012.3.3.2">12.3.3.2<!--tex4ht:ref: sec:banned-commands --></a>. Failure behaviour is EAPI dependent as per section <a +href="#x1-13000012.3.3.1">12.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">unpack</span> </dt><dd +class="description">Unpacks one or more source archives, in order, into the current directory. After + unpacking, must ensure that all filesystem objects inside the current working directory + (but not the current working directory itself) have permissions <span +class="ectt-1000">a+r,u+w,go-w </span>and that + all directories under the current working directory additionally have permissions <span +class="ectt-1000">a+x</span>. + <!--l. 641--><p class="noindent" >All arguments to <span +class="ectt-1000">unpack </span>must be either a filename without path, in which case <span +class="ectt-1000">unpack</span> + looks in <span +class="ectt-1000">DISTDIR </span>for the file, or start with the string <span +class="ectt-1000">./</span>, in which case <span +class="ectt-1000">unpack </span>uses the + argument as a path relative to the working directory. + </p><!--l. 645--><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. 648--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span>-<span +class="small-caps">E</span><span +class="small-caps">X</span><span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span></span></span></p><!--l. 648--><p class="noindent" >Must be able to unpack the following file formats, if the relevant binaries are available: + </p> + <ul class="itemize1"> + <li class="itemize">tar files (<span +class="ectt-1000">*.tar</span>). Ebuilds must ensure that GNU tar installed. + </li> + <li class="itemize">gzip-compressed tar files (<span +class="ectt-1000">*.tar.gz, *.tgz, *.tar.Z, *.tbz</span>). Ebuilds must + ensure that GNU gzip and GNU tar are installed. + + + </li> + <li class="itemize">bzip2-compressed tar files (<span +class="ectt-1000">*.tar.bz2, *.tbz2, *.tar.bz</span>). Ebuilds must + ensure that bzip2 and GNU tar are installed. + </li> + <li class="itemize">zip files (<span +class="ectt-1000">*.zip, *.ZIP, *.jar</span>). Ebuilds must ensure that Info-ZIP Unzip is + installed. + </li> + <li class="itemize">gzip files (<span +class="ectt-1000">*.gz, *.Z, *.z</span>). Ebuilds must ensure that GNU gzip is installed. + </li> + <li class="itemize">bzip2 files (<span +class="ectt-1000">*.bz, *.bz2</span>). Ebuilds must ensure that bzip2 is installed. + </li> + <li class="itemize">7zip files (<span +class="ectt-1000">*.7z, *.7Z</span>). Ebuilds must ensure that P7ZIP is installed. + </li> + <li class="itemize">rar files (<span +class="ectt-1000">*.rar, *.RAR</span>). Ebuilds must ensure that RARLAB’s unrar is installed. + </li> + <li class="itemize">LHA archives (<span +class="ectt-1000">*.LHA, *.LHa, *.lha, *.lhz</span>). Ebuilds must ensure that the lha + program is installed. + </li> + <li class="itemize">ar archives (<span +class="ectt-1000">*.a</span>). Ebuilds must ensure that GNU binutils is installed. + </li> + <li class="itemize">deb packages (<span +class="ectt-1000">*.deb</span>). Ebuilds must ensure that the deb2targz program is installed + on those platforms where the GNU binutils ar program is not available and the + installed ar program is incompatible with GNU archives. Otherwise, ebuilds must + ensure that GNU binutils is installed. + </li> + <li class="itemize">lzma-compressed files (<span +class="ectt-1000">*.lzma</span>). Ebuilds must ensure that LZMA Utils is installed. + </li> + <li class="itemize">lzma-compressed tar files (<span +class="ectt-1000">*.tar.lzma</span>). Ebuilds must ensure that LZMA Utils + and GNU tar are installed. + </li> + <li class="itemize">xz-compressed files (<span +class="ectt-1000">*.xz</span>). Ebuilds must ensure that XZ Utils is installed. Only + for EAPIs listed in table <a +href="#x1-142001r14">12.14<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting xz. + </li> + <li class="itemize">xz-compressed tar files (<span +class="ectt-1000">*.tar.xz</span>). Ebuilds must ensure that XZ Utils and GNU + tar are installed. Only for EAPIs listed in table <a +href="#x1-142001r14">12.14<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting xz.</li></ul> + <!--l. 675--><p class="nopar" >It is up to the ebuild to ensure that the relevant external utilities are available, whether by + being in the system set or via dependencies. +</p> + <div class="table"> + <!--l. 678--><p class="noindent" ><a + id="x1-142001r14"></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">unpack </span>extensions for EAPIs</span></div><!--tex4ht:label?: x1-142001r14 --> + <div class="tabular"> + <table id="TBL-31" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-31-1g"><col +id="TBL-31-1" /><col +id="TBL-31-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-31-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-31-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-31-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">.xz </span><span +class="ecbx-1000">and </span><span +class="ectt-1000">.tar.xz</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-31-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-31-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-31-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-3-1" +class="td11"><span +class="ectt-1000">1 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-31-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-31-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-31-4-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-31-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-5-1" +class="td11"><span +class="ectt-1000">3 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-31-5-2" +class="td11">Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-31-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-31-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-31-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-7-1" +class="td11"> </td></tr></table></div></div><hr class="endfloat" /> + </div> + </dd><dt class="description"> +<span +class="ecbx-1000">inherit</span> </dt><dd +class="description">See section <a +href="#x1-11500011.1">11.1<!--tex4ht:ref: sec:inherit --></a>. + + + </dd><dt class="description"> +<span +class="ecbx-1000">default</span> </dt><dd +class="description"><!--l. 696--><p class="noindent" > </p><!--l. 696--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span></span></span> Calls the <span +class="ectt-1000">default_ </span>function for the current phase (see section <a +href="#x1-11200010.1.17">10.1.17<!--tex4ht:ref: sec:default-phase-funcs --></a>). Must not be + called if the <span +class="ectt-1000">default_ </span>function does not exist for the current phase in the current EAPI. + Only available in EAPIs listed in table <a +href="#x1-142002r15">12.15<!--tex4ht:ref: tab:default-function-table --></a>.</p></dd></dl> +<div class="table"> + + +<!--l. 702--><p class="noindent" ><a + id="x1-142002r15"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.15: </span><span +class="content">EAPIs supporting the <span +class="ectt-1000">default </span>function</span></div><!--tex4ht:label?: x1-142002r15 --> +<div class="tabular"> + <table id="TBL-32" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-32-1g"><col +id="TBL-32-1" /><col +id="TBL-32-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-32-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-32-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-32-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">default </span><span +class="ecbx-1000">function?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-32-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-2-2" +class="td11">No </td></tr><tr + style="vertical-align:baseline;" id="TBL-32-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-3-2" +class="td11">No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-4-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.14 </span> <a + id="x1-14300012.3.3.14"></a>Debug Commands</h5> +<!--l. 718--><p class="nopar" >The following commands are available for debugging. Normally all of these commands should be no +ops; a package manager may provide a special debug mode where these commands instead do +something. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">debug-print</span> </dt><dd +class="description">If in a special debug mode, the arguments should be outputted or recorded + using some kind of debug logging. + </dd><dt class="description"> +<span +class="ecbx-1000">debug-print-function</span> </dt><dd +class="description">Calls <span +class="ectt-1000">debug-print </span>with <span +class="ectt-1000">$1: entering function </span>as the first + argument and the remaining arguments as additional arguments. + </dd><dt class="description"> +<span +class="ecbx-1000">debug-print-section</span> </dt><dd +class="description">Calls <span +class="ectt-1000">debug-print </span>with <span +class="ectt-1000">now in section $*</span>.</dd></dl> +<!--l. 730--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">12.3.3.15 </span> <a + id="x1-14400012.3.3.15"></a>Reserved Commands and Variables</h5> +<!--l. 732--><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. 737--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">abort</span> + </li> + <li class="compactitem"><span +class="ectt-1000">dyn</span> + </li> + <li class="compactitem"><span +class="ectt-1000">ebuild</span> + </li> + <li class="compactitem"><span +class="ectt-1000">hook</span> + </li> + <li class="compactitem"><span +class="ectt-1000">paludis</span> + </li> + <li class="compactitem"><span +class="ectt-1000">portage</span> + </li> + <li class="compactitem"><span +class="ectt-1000">prep</span></li></ul> +<!--l. 1--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">12.4 </span> <a + id="x1-14500012.4"></a>The state of the system between functions</h3> +<!--l. 4--><p class="nopar" >For the sake of this section: +</p><!--l. 7--><p class="noindent" > + + + </p><ul> + <li class="compactitem">Variancy is any package manager action that modifies either <span +class="ectt-1000">ROOT </span>or <span +class="ectt-1000">/ </span>in any way that + isn’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. 17--><p class="noindent" >The following exclusivity and invariancy requirements are mandated: +</p><!--l. 20--><p class="noindent" > + </p><ul> + <li class="compactitem">No variancy shall be introduced at any point between a package’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 13</span><br /><a + id="x1-14600013"></a>Merging and Unmerging</h2> +<!--l. 3--><p class="nopar" ><span class="paragraphHead"><a + id="x1-14700013"></a><span +class="ecbx-1000">Note:</span></span> +In this chapter, <span +class="ecti-1000">file </span>and <span +class="ecti-1000">regular file </span>have their Unix meanings. +</p><!--l. 5--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.1 </span> <a + id="x1-14800013.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-14900013.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-15000013.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-15100013.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-15200013.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-15300013.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-15400013.3.2"></a>File modification times</h4> + <!--l. 68--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">M</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">M</span><span +class="small-caps">E</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">V</span><span +class="small-caps">E</span></span></span></p><!--l. 69--><p class="noindent" >In EAPIs listed in table <a +href="#x1-154001r1">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. 89--><p class="noindent" ><a + id="x1-154001r1"></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-154001r1 --> +<div class="tabular"> + <table id="TBL-33" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-33-1g"><col +id="TBL-33-1" /><col +id="TBL-33-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-33-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-33-1-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-33-1-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">mtimes preserved?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-33-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-2-1" +class="td11"><span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-2-2" +class="td11">Undefined </td></tr><tr + style="vertical-align:baseline;" id="TBL-33-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-3-1" +class="td11"><span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-3-2" +class="td11">Undefined</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-4-1" +class="td11"><span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-4-2" +class="td11">Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-5-1" +class="td11"><span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-5-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-6-1" +class="td11"><span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-6-2" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-7-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">13.3.3 </span> <a + id="x1-15500013.3.3"></a>Configuration File Protection</h4> +<!--l. 108--><p class="nopar" >The package manager must provide a means to prevent user configuration files from +being overwritten by any package updates. The profile variables <span +class="ectt-1000">CONFIG_PROTECT </span>and +<span +class="ectt-1000">CONFIG_PROTECT_MASK </span>(section <a +href="#x1-590005.3">5.3<!--tex4ht:ref: sec:profile-variables --></a>) control the paths for which this must be enforced. +</p><!--l. 113--><p class="noindent" >In order to ensure interoperability with configuration update tools, the following scheme must be +used by all package managers when merging any regular file: +</p><!--l. 117--><p class="noindent" > + </p><dl class="compactenum"><dt class="compactenum"> + 1. </dt><dd +class="compactenum">If the directory containing the file to be merged is not listed in <span +class="ectt-1000">CONFIG_PROTECT</span>, and is + not a subdirectory of any such directory, and if the file is not listed in <span +class="ectt-1000">CONFIG_PROTECT</span>, + the file is merged normally. + </dd><dt class="compactenum"> + 2. </dt><dd +class="compactenum">If the directory containing the file to be merged is listed in <span +class="ectt-1000">CONFIG_PROTECT_MASK</span>, or + is a subdirectory of such a directory, or if the file is listed in <span +class="ectt-1000">CONFIG_PROTECT_MASK</span>, + the file is merged normally. + </dd><dt class="compactenum"> + 3. </dt><dd +class="compactenum">If no existing file with the intended filename exists, or the existing file has identical + content to the one being merged, the file is installed normally. + </dd><dt class="compactenum"> + 4. </dt><dd +class="compactenum">Otherwise, prepend the filename with <span +class="ectt-1000">._cfg0000_</span>. If no file with the new name exists, + then the file is merged with this name. + </dd><dt class="compactenum"> + 5. </dt><dd +class="compactenum">Otherwise, increment the number portion (to form <span +class="ectt-1000">._cfg0001_<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. 132--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.4 </span> <a + id="x1-15600013.4"></a>Symlinks</h3> +<!--l. 134--><p class="nopar" >Symlinks are merged as symlinks onto the filesystem. The link destination for a merged link shall +be the same as the link destination for the link under <span +class="ectt-1000">D</span>, except as noted below. The method used +to perform the merge is not specified, so long as the end result is correct; in particular, merging a +symlink may alter or remove the symlink under <span +class="ectt-1000">D</span>. +</p><!--l. 139--><p class="noindent" >Ebuilds must not attempt to merge a symlink on top of a directory. +</p><!--l. 141--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">13.4.1 </span> <a + id="x1-15700013.4.1"></a>Rewriting</h4> +<!--l. 143--><p class="nopar" >Any absolute symlink whose link starts with <span +class="ectt-1000">D </span>must be rewritten with the leading <span +class="ectt-1000">D </span>removed. The +package manager should issue a notice when doing this. + + +</p><!--l. 146--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.5 </span> <a + id="x1-15800013.5"></a>Hard links</h3> +<!--l. 148--><p class="nopar" >A hard link may be merged either as a single file with links or as multiple independent +files. +</p><!--l. 150--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">13.6 </span> <a + id="x1-15900013.6"></a>Other Files</h3> +<!--l. 152--><p class="nopar" >Ebuilds must not attempt to install any other type of file (FIFOs, device nodes etc). + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 14</span><br /><a + id="x1-16000014"></a>Metadata Cache</h2> +<h3 class="sectionHead"><span class="titlemark">14.1 </span> <a + id="x1-16100014.1"></a>Directory Contents</h3> +<!--l. 6--><p class="nopar" >The <span +class="ectt-1000">profiles/metadata/cache </span>directory, if it exists, contains directories whose names are the +same as categories in the repository. Each subdirectory may optionally contain one file per +package version in that category, named <span +class="ectt-1000"><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-16200014.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-70001r2">8.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">Old-style virtuals provided by this package (<span +class="ectt-1000">PROVIDE</span>) + </dd><dt class="compactenum"> + 15. </dt><dd +class="compactenum">The ebuild API version to which this package conforms (<span +class="ectt-1000">EAPI</span>) + + + </dd><dt class="compactenum"> + 16. </dt><dd +class="compactenum">Properties (<span +class="ectt-1000">PROPERTIES</span>). In some EAPIs, may optionally be blank, regardless of ebuild + metadata; see table <a +href="#x1-70001r2">8.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-75001r4">8.4<!--tex4ht:ref: tab:defined-phases-table --></a>. + </dd><dt class="compactenum"> + 18. </dt><dd +class="compactenum">Blank lines to pad the file to 22 lines long</dd></dl> +<!--l. 41--><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-16300015"></a>Glossary</h2> +<!--l. 4--><p class="nopar" >This section contains explanations of some of the terms used in this document whose meaning may +not be immediately obvious. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">qualified package name</span> </dt><dd +class="description">A package name along with its associated category. For example, + <span +class="ectt-1000">app-editors/vim </span>is a qualified package name. + </dd><dt class="description"> +<span +class="ecbx-1000">old-style virtual</span> </dt><dd +class="description">An old-style virtual is a pseudo-package which exists if it is listed in an + ebuild’s <span +class="ectt-1000">PROVIDE </span>variable. See chapter <a +href="#x1-620006">6<!--tex4ht:ref: sec:old-virtuals --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">new-style virtual</span> </dt><dd +class="description">A new-style virtual is a normal package in the <span +class="ectt-1000">virtual </span>category which + installs no files and uses its dependency requirements to pull in a ‘provider’. This + is more flexible than the old-style virtuals described above, and requires no special + package manager code. + </dd><dt class="description"> +<span +class="ecbx-1000">stand-alone repository</span> </dt><dd +class="description">An (ebuild) repository which is intended to function on its own + as the only, or primary, repository on a system. Contrast with <span +class="ecti-1000">slave repository </span>below. + </dd><dt class="description"> +<span +class="ecbx-1000">slave repository, non-stand-alone repository</span> </dt><dd +class="description">An (ebuild) repository which is not + complete enough to function on its own, but needs one or more <span +class="ecti-1000">master repositories </span>to + satisfy dependencies and provide repository-level support files. Known in Portage as + an overlay. + </dd><dt class="description"> +<span +class="ecbx-1000">master repository</span> </dt><dd +class="description">See above. + </dd></dl> + + + + + + +<a + id="x1-163001r208"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix A</span><br /><a + id="x1-164000A"></a>metadata.xml</h2> +<!--l. 4--><p class="nopar" >The <span +class="ectt-1000">metadata.xml </span>file is used to contain extra package- or category-level information beyond what +is stored in ebuild metadata. Its exact format is strictly beyond the scope of this document, and is +described in the DTD file located at <a +href="http://www.gentoo.org/dtd/metadata.dtd" class="url" ><span +class="ectt-1000">http://www.gentoo.org/dtd/metadata.dtd</span></a>. + + +<a + id="x1-164001r208"></a> +</p> +<h2 class="appendixHead"><span class="titlemark">Appendix B</span><br /><a + id="x1-165000B"></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">PORTAGE_ </span>variable not explicitly listed. + </li> + <li class="compactitem">Any Portage configuration file. + </li> + <li class="compactitem">The VDB (<span +class="ectt-1000">/var/db/pkg</span>). Ebuilds must not access this or rely upon it existing or being + in any particular format. + </li> + <li class="compactitem">The <span +class="ectt-1000">portageq </span>command. The <span +class="ectt-1000">has_version </span>and <span +class="ectt-1000">best_version </span>commands are + available as functions. + </li> + <li class="compactitem">The <span +class="ectt-1000">emerge </span>command. + </li> + <li class="compactitem">Binary packages. + </li> + <li class="compactitem">The <span +class="ectt-1000">PORTDIR_OVERLAY </span>variable, and overlay behaviour in general.</li></ul> + + +<a + id="x1-165001r208"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix C</span><br /><a + id="x1-166000C"></a>Historical Curiosities</h2> +<!--l. 29--><p class="nopar" >The items described in this chapter are included for information only. They were deprecated or +abandoned long before <span +class="ectt-1000">EAPI </span>was introduced. Ebuilds must not use these features, and package +managers should not be changed to support them. +</p> +<h3 class="sectionHead"><span class="titlemark">C.1 </span> <a + id="x1-167000C.1"></a>If-else use blocks</h3> +<!--l. 35--><p class="nopar" >Historically, Portage supported if-else use conditionals, as shown by listing <a +href="#x1-167001r1">C.1<!--tex4ht:ref: lst:if-else-use-listing --></a>. The block before +the colon would be taken if the condition was met, and the block after the colon would be taken if +the condition was not met. +</p><!--l. 39--><p class="noindent" >This feature was deprecated and removed from the tree long before the introduction of +<span +class="ectt-1000">EAPI</span>. + + +</p><!--l. 42--><p class="noindent" ><a + id="x1-167001r1"></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-167001r1 --> +<div class="verbatiminput"> +<span +class="ectt-1000">DEPEND="</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> flag?</span><span +class="ectt-1000"> (</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> taken/if-true</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> )</span><span +class="ectt-1000"> :</span><span +class="ectt-1000"> (</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> taken/if-false</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> )</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> "</span> +<span +class="ectt-1000"> </span><br /> +</div> + + +</div><hr class="endfloat" /> +<h3 class="sectionHead"><span class="titlemark">C.2 </span> <a + id="x1-168000C.2"></a>cvs Versions</h3> +<!--l. 48--><p class="nopar" >Portage has very crude support for CVS packages. The package <span +class="ectt-1000">foo </span>could contain a file named +<span +class="ectt-1000">foo-cvs.1.2.3.ebuild</span>. This version would order <span +class="ecti-1000">higher </span>than any non-CVS version (including +<span +class="ectt-1000">foo-2.ebuild</span>). This feature has not seen real world use and breaks versioned dependencies, so it +must not be used. +</p><!--l. 53--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">C.3 </span> <a + id="x1-169000C.3"></a>use.defaults</h3> +<!--l. 55--><p class="nopar" >The <span +class="ectt-1000">use.defaults </span>file in the profile directory was used to implement ‘autouse’—switching USE +flags on or off depending upon which packages are installed. It was deprecated long ago and finally +removed in 2009. + + + + + + +<a + id="x1-169001r208"></a> +</p> +<h2 class="appendixHead"><span class="titlemark">Appendix D</span><br /><a + id="x1-170000D"></a>Feature Availability by EAPI</h2> +<!--l. 3--><p class="nopar" ><span class="paragraphHead"><a + id="x1-171000D"></a><span +class="ecbx-1000">Note:</span></span> +This chapter is informative and for convenience only. Refer to the main text for specifics. + + + <a + id="x1-171001r1"></a> +</p><!--l. 7--><div class="longtable"> <table id="TBL-34" class="longtable" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-34-1g"><col +id="TBL-34-1" /><col +id="TBL-34-2" /><col +id="TBL-34-3" /><col +id="TBL-34-4" /><col +id="TBL-34-5" /><col +id="TBL-34-6" /><col +id="TBL-34-7" /></colgroup> +<tr + style="vertical-align:baseline;" id="TBL-34-1-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-34-1-1" +class="td11"></td><div class="multicolumn" style="white-space:nowrap; text-align:center;"> <div class="caption" +><span class="id">Table D.1: </span><span +class="content">Features in EAPIs</span></div><!--tex4ht:label?: x1-171001r1 --> </div><a + id="x1-171002"></a> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-2-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-34-2-1" +class="td11"></td><!--cmidrule--> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-34-3-1" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Feature</span></div></td><td style="white-space:nowrap; text-align:center;" id="TBL-34-3-2" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Reference</span></div></td><td colspan="4" style="white-space:nowrap; text-align:center;" id="TBL-34-3-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPIs</span></div></td></tr><tr + style="vertical-align:baseline;" id="TBL-34-4-"><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-3" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;">0</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-4" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;">1</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-5" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;">2</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-6" +class="td11"><div class="multicolumn" style="white-space:nowrap; text-align:center;">3</div></td><td style="white-space:nowrap; text-align:center;" id="TBL-34-4-7" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">4</div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-34-5-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-34-5-1" +class="td11"></td><!--cmidrule--> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-6-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-34-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-1" +class="td11"></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-2" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-3" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-4" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-5" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-6" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-7" +class="td11"> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-34-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-1" +class="td11"><span +class="ectt-1000">IUSE </span>defaults </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-2" +class="td11">iuse-defaults p<a +href="#x1-690008.2">72<!--tex4ht:ref: feat:iuse-defaults --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-20-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-1" +class="td11"><span +class="ectt-1000">REQUIRED_USE </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-2" +class="td11">required-use p<a +href="#x1-700008.3">76<!--tex4ht:ref: feat:required-use --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-21-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-1" +class="td11"><span +class="ectt-1000">PROPERTIES </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-2" +class="td11">properties p<a +href="#x1-700008.3">76<!--tex4ht:ref: feat:properties --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-3" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-4" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-5" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-6" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-22-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-1" +class="td11"><span +class="ectt-1000">RDEPEND=DEPEND </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-2" +class="td11">rdepend-depend p<a +href="#x1-720008.3.2">79<!--tex4ht:ref: feat:rdepend-depend --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-23-7" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-1" +class="td11"><span +class="ectt-1000">DEFINED_PHASES </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-2" +class="td11">defined-phases p<a +href="#x1-740008.4">82<!--tex4ht:ref: feat:defined-phases --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-3" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-4" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-5" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-6" +class="td11">Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-24-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-1" +class="td11"><span +class="ectt-1000">SRC_URI </span>arrows </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-2" +class="td11">src-uri-arrows p<a +href="#x1-930009.2.9">104<!--tex4ht:ref: feat:src-uri-arrows --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-25-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-1" +class="td11">Slot dependencies </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-2" +class="td11">slot-deps p<a +href="#x1-870009.2.5.3">102<!--tex4ht:ref: feat:slot-deps --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-26-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-1" +class="td11">Use dependencies </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-2" +class="td11">use-deps p<a +href="#x1-830009.2.5">93<!--tex4ht:ref: feat:use-deps --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-5" +class="td11">2-style </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-6" +class="td11">2-style </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-27-7" +class="td11">4-style </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-1" +class="td11"><span +class="ectt-1000">! </span>blockers </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-2" +class="td11">bang-strength p<a +href="#x1-860009.2.5.2">99<!--tex4ht:ref: feat:bang-strength --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-3" +class="td11">Unspecified</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-4" +class="td11">Unspecified</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-5" +class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-6" +class="td11">Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-28-7" +class="td11">Weak </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-1" +class="td11"><span +class="ectt-1000">!! </span>blockers </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-2" +class="td11">bang-strength p<a +href="#x1-860009.2.5.2">99<!--tex4ht:ref: feat:bang-strength --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-3" +class="td11">Forbidden </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-4" +class="td11">Forbidden </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-5" +class="td11">Strong </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-6" +class="td11">Strong </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-29-7" +class="td11">Strong </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-1" +class="td11"><span +class="ectt-1000">S </span>to <span +class="ectt-1000">WORKDIR </span>fallback </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-2" +class="td11">s-workdir-fallback p<a +href="#x1-9600010.1.1">107<!--tex4ht:ref: feat:s-workdir-fallback --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-3" +class="td11">Always </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-4" +class="td11">Always </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-5" +class="td11">Always </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-6" +class="td11">Always </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-30-7" +class="td11">Conditional </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-1" +class="td11"><span +class="ectt-1000">pkg_pretend </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-2" +class="td11">pkg-pretend p<a +href="#x1-9700010.1.2">110<!--tex4ht:ref: feat:pkg-pretend --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-31-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-1" +class="td11"><span +class="ectt-1000">src_prepare </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-2" +class="td11">src-prepare p<a +href="#x1-10000010.1.5">114<!--tex4ht:ref: feat:src-prepare --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-32-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-1" +class="td11"><span +class="ectt-1000">src_configure </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-2" +class="td11">src-configure p<a +href="#x1-10100010.1.6">117<!--tex4ht:ref: feat:src-configure --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-33-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-1" +class="td11"><span +class="ectt-1000">src_compile </span>style </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-2" +class="td11">src-compile p<a +href="#x1-10200010.1.7">121<!--tex4ht:ref: feat:src-compile --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-3" +class="td11">0 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-4" +class="td11">1 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-5" +class="td11">2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-6" +class="td11">2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-34-7" +class="td11">2 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-1" +class="td11"><span +class="ectt-1000">src_install </span>style </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-2" +class="td11">src-install p<a +href="#x1-10400010.1.9">127<!--tex4ht:ref: feat:src-install --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-3" +class="td11">no-op </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-4" +class="td11">no-op </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-5" +class="td11">no-op </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-6" +class="td11">no-op </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-35-7" +class="td11">4 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-1" +class="td11"><span +class="ectt-1000">pkg_info </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-2" +class="td11">pkg-info p<a +href="#x1-11000010.1.15">132<!--tex4ht:ref: feat:pkg-info --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-3" +class="td11">Installed </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-4" +class="td11">Installed </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-5" +class="td11">Installed </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-6" +class="td11">Installed </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-36-7" +class="td11">Both </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-1" +class="td11"><span +class="ectt-1000">default_ </span>phase functions</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-2" +class="td11">default-phase-funcs p<a +href="#x1-11200010.1.17">135<!--tex4ht:ref: feat:default-phase-funcs --></a></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-3" +class="td11">None </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-4" +class="td11">None </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-5" +class="td11"><span +class="ectt-1000">pkg_nofetch</span>, +<span +class="ectt-1000">src_unpack</span>, +<span +class="ectt-1000">src_prepare</span>, +<span +class="ectt-1000">src_configure</span>, +<span +class="ectt-1000">src_compile</span>, +<span +class="ectt-1000">src_test</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-6" +class="td11"><span +class="ectt-1000">pkg_nofetch</span>, +<span +class="ectt-1000">src_unpack</span>, +<span +class="ectt-1000">src_prepare</span>, +<span +class="ectt-1000">src_configure</span>, +<span +class="ectt-1000">src_compile</span>, +<span +class="ectt-1000">src_test</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-37-7" +class="td11"><span +class="ectt-1000">pkg_nofetch</span>, +<span +class="ectt-1000">src_unpack</span>, +<span +class="ectt-1000">src_prepare</span>, +<span +class="ectt-1000">src_configure</span>, +<span +class="ectt-1000">src_compile</span>, +<span +class="ectt-1000">src_install</span>, +<span +class="ectt-1000">src_test</span> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-1" +class="td11"><span +class="ectt-1000">AA </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-2" +class="td11">aa p<a +href="#x1-119001r1">152<!--tex4ht:ref: feat:aa --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-38-7" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-1" +class="td11"><span +class="ectt-1000">KV </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-2" +class="td11">kv p<a +href="#x1-119001r1">155<!--tex4ht:ref: feat:kv --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-6" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-39-7" +class="td11">No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-40-1" +class="td11"> </td></tr> + + + + <tr + style="vertical-align:baseline;" id="TBL-34-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-1" +class="td11"><span +class="ectt-1000">MERGE_TYPE </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-2" +class="td11">merge-type p<a +href="#x1-119001r1">156<!--tex4ht:ref: feat:merge-type --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-41-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-1" +class="td11"><span +class="ectt-1000">REPLACING_VERSIONS </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-2" +class="td11">replace-version-vars p<a +href="#x1-12100012.1.2">164<!--tex4ht:ref: feat:replace-version-vars --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-42-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-1" +class="td11"><span +class="ectt-1000">REPLACED_BY_VERSION </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-2" +class="td11">replace-version-vars p<a +href="#x1-12100012.1.2">164<!--tex4ht:ref: feat:replace-version-vars --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-43-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-1" +class="td11"><span +class="ectt-1000">EPREFIX</span>, <span +class="ectt-1000">ED</span>, <span +class="ectt-1000">EROOT </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-2" +class="td11">offset-prefix-vars p<a +href="#x1-12200012.1.3">167<!--tex4ht:ref: feat:offset-prefix-vars --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-44-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-1" +class="td11">Most utilities die </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-2" +class="td11">die-on-failure p<a +href="#x1-13000012.3.3.1">171<!--tex4ht:ref: feat:die-on-failure --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-45-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-1" +class="td11"><span +class="ectt-1000">nonfatal </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-2" +class="td11">nonfatal p<a +href="#x1-13000012.3.3.1">171<!--tex4ht:ref: feat:nonfatal --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-46-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-1" +class="td11"><span +class="ectt-1000">dohard </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-2" +class="td11">banned-commands p<a +href="#x1-13100012.3.3.2">174<!--tex4ht:ref: feat:banned-commands --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-47-7" +class="td11">Banned </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-1" +class="td11"><span +class="ectt-1000">dosed </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-2" +class="td11">banned-commands p<a +href="#x1-13100012.3.3.2">174<!--tex4ht:ref: feat:banned-commands --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-3" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-4" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-48-7" +class="td11">Banned </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-1" +class="td11"><span +class="ectt-1000">econf </span>arguments </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-2" +class="td11">econf-options p<a +href="#x1-13600012.3.3.7">178<!--tex4ht:ref: feat:econf-options --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-3" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-4" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-5" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-6" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-49-7" +class="td11">disable +dependency +tracking </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-1" +class="td11"><span +class="ectt-1000">dodoc -r </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-2" +class="td11">dodoc p<a +href="#x1-13700012.3.3.8">181<!--tex4ht:ref: feat:dodoc --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-50-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-1" +class="td11"><span +class="ectt-1000">doins </span>handles symlinks </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-2" +class="td11">doins p<a +href="#x1-13700012.3.3.8">182<!--tex4ht:ref: feat:doins --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-51-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-1" +class="td11"><span +class="ectt-1000">doman </span>languages </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-2" +class="td11">doman-langs p<a +href="#x1-13700012.3.3.8">183<!--tex4ht:ref: feat:doman-langs --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-52-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-53-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-1" +class="td11"><span +class="ectt-1000">doman -i18n </span>precedence </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-2" +class="td11">doman-langs p<a +href="#x1-13700012.3.3.8">183<!--tex4ht:ref: feat:doman-langs --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-3" +class="td11">N/A </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-4" +class="td11">N/A </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-53-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-54-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-1" +class="td11">Controllable compression </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-2" +class="td11">controllable-compress p<a +href="#x1-13900012.3.3.10">194<!--tex4ht:ref: feat:controllable-compress --></a></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-54-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-55-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-1" +class="td11"><span +class="ectt-1000">docompress </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-2" +class="td11">controllable-compress p<a +href="#x1-13900012.3.3.10">194<!--tex4ht:ref: feat:controllable-compress --></a></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-55-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-56-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-1" +class="td11"><span +class="ectt-1000">use_with </span>empty third arg</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-2" +class="td11">use-with p<a +href="#x1-14000012.3.3.11">198<!--tex4ht:ref: feat:use-with --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-6" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-56-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-57-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-57-1" +class="td11"><span +class="ectt-1000">unpack </span>support for <span +class="ectt-1000">xz</span>? </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-57-2" +class="td11">unpack-extensions p<a +href="#x1-14200012.3.3.13">204<!--tex4ht:ref: feat:unpack-extensions --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-57-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-57-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-57-5" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-57-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-57-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-58-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-58-1" +class="td11"><span +class="ectt-1000">default </span>function </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-58-2" +class="td11">default-func p<a +href="#x1-14200012.3.3.13">206<!--tex4ht:ref: feat:default-func --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-58-3" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-58-4" +class="td11">No </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-58-5" +class="td11">Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-58-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-58-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-59-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-59-1" +class="td11">File mtimes preserved </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-59-2" +class="td11">mtime-preserve p<a +href="#x1-15400013.3.2">214<!--tex4ht:ref: feat:mtime-preserve --></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-34-59-3" +class="td11">Undefined</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-59-4" +class="td11">Undefined</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-59-5" +class="td11">Undefined</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-59-6" +class="td11">Yes</td><td style="white-space:nowrap; text-align:left;" id="TBL-34-59-7" +class="td11">Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-60-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-60-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-34-61-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-61-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-62-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-62-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-34-63-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-63-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-64-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-64-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-34-17-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-34-17-1" +class="td11"></td><!--cmidrule--></tr><tr + style="vertical-align:baseline;" id="TBL-34-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-18-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-19-1" +class="td11"></td></tr> +</table></div> + + + + + +<a + id="x1-171003r208"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix E</span><br /><a + id="x1-172000E"></a>Differences Between EAPIs</h2> +<!--l. 165--><p class="nopar" ><span class="paragraphHead"><a + id="x1-173000E"></a><span +class="ecbx-1000">Note:</span></span> +This chapter is informative and for convenience only. Refer to the main text for specifics. +</p><!--l. 167--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-174000E"></a>EAPI 0</h3> +<!--l. 169--><p class="nopar" >EAPI 0 is the base EAPI. +</p><!--l. 171--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-175000E"></a>EAPI 1</h3> +<!--l. 173--><p class="nopar" >EAPI 1 is EAPI 0 with the following changes: +</p><!--l. 176--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">IUSE </span>defaults, <span +class="eccc-1000"><span +class="small-caps">I</span><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-690008.2">72<!--tex4ht:ref: feat:iuse-defaults --></a>. + </li> + <li class="compactitem">Slot dependencies, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">L</span><span +class="small-caps">O</span><span +class="small-caps">T</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-870009.2.5.3">102<!--tex4ht:ref: feat:slot-deps --></a>. + </li> + <li class="compactitem">Different <span +class="ectt-1000">src_compile </span>implementation, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-1 </span>on page <a +href="#x1-10200010.1.7">122<!--tex4ht:ref: feat:src-compile-1 --></a>.</li></ul> +<!--l. 181--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-176000E"></a>EAPI 2</h3> +<!--l. 183--><p class="nopar" >EAPI 2 is EAPI 1 with the following changes: +</p><!--l. 186--><p class="noindent" > + </p><ul> + <li class="compactitem">Use dependencies, <span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-830009.2.5">93<!--tex4ht:ref: feat:use-deps --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">! </span>and <span +class="ectt-1000">!! </span>blockers, <span +class="eccc-1000"><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span>-<span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">T</span><span +class="small-caps">H</span> </span>on page <a +href="#x1-860009.2.5.2">99<!--tex4ht:ref: feat:bang-strength --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">SRC_URI </span>arrows, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">I</span>-<span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">W</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-930009.2.9">104<!--tex4ht:ref: feat:src-uri-arrows --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">src_prepare</span>, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-10000010.1.5">114<!--tex4ht:ref: feat:src-prepare --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure</span>, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">G</span><span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-10100010.1.6">117<!--tex4ht:ref: feat:src-configure --></a>. + </li> + <li class="compactitem">Different <span +class="ectt-1000">src_compile </span>implementation, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-2 </span>on page <a +href="#x1-10200010.1.7">123<!--tex4ht:ref: feat:src-compile-2 --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">default_ </span>phase functions for phases <span +class="ectt-1000">pkg_nofetch</span>, <span +class="ectt-1000">src_unpack</span>, <span +class="ectt-1000">src_prepare</span>, + <span +class="ectt-1000">src_configure</span>, <span +class="ectt-1000">src_compile </span>and <span +class="ectt-1000">src_test</span>; <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-11200010.1.17">135<!--tex4ht:ref: feat:default-phase-funcs --></a>. + + + </li> + <li class="compactitem"><span +class="ectt-1000">doman </span>language detection by filename, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span>-<span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13700012.3.3.8">183<!--tex4ht:ref: feat:doman-langs --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">default </span>function, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span> </span>on page <a +href="#x1-14200012.3.3.13">206<!--tex4ht:ref: feat:default-func --></a>.</li></ul> +<!--l. 198--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-177000E"></a>EAPI 3</h3> +<!--l. 200--><p class="nopar" >EAPI 3 is EAPI 2 with the following changes: + </p><ul> + <li class="compactitem">Offset-prefix support by definition of <span +class="ectt-1000">EPREFIX</span>, <span +class="ectt-1000">ED </span>and <span +class="ectt-1000">EROOT</span>, <span +class="eccc-1000"><span +class="small-caps">O</span><span +class="small-caps">F</span><span +class="small-caps">F</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">T</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">X</span>-<span +class="small-caps">V</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">S</span></span> + on page <a +href="#x1-12200012.1.3">167<!--tex4ht:ref: feat:offset-prefix-vars --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">unpack </span>supports <span +class="ectt-1000">.xz </span>and <span +class="ectt-1000">.tar.xz</span>, <span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span>-<span +class="small-caps">E</span><span +class="small-caps">X</span><span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-14200012.3.3.13">204<!--tex4ht:ref: feat:unpack-extensions --></a>. + </li> + <li class="compactitem">File modification times are preserved, <span +class="eccc-1000"><span +class="small-caps">M</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">M</span><span +class="small-caps">E</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">V</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-15400013.3.2">214<!--tex4ht:ref: feat:mtime-preserve --></a>.</li></ul> +<!--l. 208--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-178000E"></a>EAPI 4</h3> +<!--l. 210--><p class="nopar" >EAPI 4 is EAPI 3 with the following changes: +</p><!--l. 213--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">PROPERTIES </span>support is mandatory, <span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">E</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-700008.3">76<!--tex4ht:ref: feat:properties --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">REQUIRED_USE</span>, <span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">Q</span><span +class="small-caps">U</span><span +class="small-caps">I</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-700008.3">76<!--tex4ht:ref: feat:required-use --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">RDEPEND=DEPEND </span>no longer done, <span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span> </span>on page <a +href="#x1-720008.3.2">79<!--tex4ht:ref: feat:rdepend-depend --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">DEFINED_PHASES </span>support is mandatory, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-740008.4">82<!--tex4ht:ref: feat:defined-phases --></a>. + </li> + <li class="compactitem">Use dependency defaults, <span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-880009.2.5.4">102<!--tex4ht:ref: feat:use-dep-defaults --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">S </span>to <span +class="ectt-1000">WORKDIR </span>fallback restricted, <span +class="eccc-1000"><span +class="small-caps">S</span>-<span +class="small-caps">W</span><span +class="small-caps">O</span><span +class="small-caps">R</span><span +class="small-caps">K</span><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">R</span>-<span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span> </span>on page <a +href="#x1-9600010.1.1">107<!--tex4ht:ref: feat:s-workdir-fallback --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend</span>, <span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">K</span><span +class="small-caps">G</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span> </span>on page <a +href="#x1-9700010.1.2">110<!--tex4ht:ref: feat:pkg-pretend --></a>. + </li> + <li class="compactitem">Default <span +class="ectt-1000">src_install </span>no longer a no-op, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span>-4 </span>on page <a +href="#x1-10400010.1.9">127<!--tex4ht:ref: feat:src-install-4 --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_info </span>can run on non-installed packages, <span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">K</span><span +class="small-caps">G</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">O</span> </span>on page <a +href="#x1-11000010.1.15">132<!--tex4ht:ref: feat:pkg-info --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">AA </span>is gone, <span +class="eccc-1000"><span +class="small-caps">A</span><span +class="small-caps">A</span> </span>on page <a +href="#x1-119001r1">152<!--tex4ht:ref: feat:aa --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">KV </span>is gone, <span +class="eccc-1000"><span +class="small-caps">K</span><span +class="small-caps">V</span> </span>on page <a +href="#x1-119001r1">155<!--tex4ht:ref: feat:kv --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">MERGE_TYPE</span>, <span +class="eccc-1000"><span +class="small-caps">M</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">G</span><span +class="small-caps">E</span>-<span +class="small-caps">T</span><span +class="small-caps">Y</span><span +class="small-caps">P</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-119001r1">156<!--tex4ht:ref: feat:merge-type --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">REPLACING_VERSIONS </span>and <span +class="ectt-1000">REPLACED_BY_VERSION</span>, <span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">E</span>-<span +class="small-caps">V</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">S</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span>-<span +class="small-caps">V</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">S</span> </span>on + page <a +href="#x1-12100012.1.2">164<!--tex4ht:ref: feat:replace-version-vars --></a>. + + + </li> + <li class="compactitem">Utilities now die on failure, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">E</span>-<span +class="small-caps">O</span><span +class="small-caps">N</span>-<span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-13000012.3.3.1">171<!--tex4ht:ref: feat:die-on-failure --></a>, unless called under + <span +class="ectt-1000">nonfatal</span>, <span +class="eccc-1000"><span +class="small-caps">N</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span> </span>on page <a +href="#x1-13000012.3.3.1">171<!--tex4ht:ref: feat:nonfatal --></a> + </li> + <li class="compactitem"><span +class="ectt-1000">dohard</span>, <span +class="ectt-1000">dosed </span>banned, <span +class="eccc-1000"><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">D</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13100012.3.3.2">174<!--tex4ht:ref: feat:banned-commands --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">econf </span>adds <span +class="ectt-1000">--disable-dependency-tracking</span>, <span +class="eccc-1000"><span +class="small-caps">E</span><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13600012.3.3.7">178<!--tex4ht:ref: feat:econf-options --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">dodoc -r </span>support, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">C</span> </span>on page <a +href="#x1-13700012.3.3.8">181<!--tex4ht:ref: feat:dodoc --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">doins </span>supports symlinks, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13700012.3.3.8">182<!--tex4ht:ref: feat:doins --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">doman -i18n </span>option takes precedence, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span>-<span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13700012.3.3.8">183<!--tex4ht:ref: feat:doman-langs --></a>. + </li> + <li class="compactitem">Controllable compression and <span +class="ectt-1000">docompress</span>, <span +class="eccc-1000"><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">T</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">L</span><span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">B</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13900012.3.3.10">194<!--tex4ht:ref: feat:controllable-compress --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">use_with </span>and <span +class="ectt-1000">use_enable </span>support empty third argument, <span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">W</span><span +class="small-caps">I</span><span +class="small-caps">T</span><span +class="small-caps">H</span> </span>on page <a +href="#x1-14000012.3.3.11">198<!--tex4ht:ref: feat:use-with --></a>.</li></ul> + + + + +<h2 class="likechapterHead"><a + id="x1-179000E"></a>Bibliography</h2> + <div class="thebibliography"> + <p class="bibitem" ><span class="biblabel"> + [1]<span class="bibsp">   </span></span><a + id="XGlep44"></a>Marius Mauch. GLEP 44: Manifest2 format. + <a +href="http://glep.gentoo.org/glep-0044.html" class="url" ><span +class="ectt-1000">http://glep.gentoo.org/glep-0044.html</span></a>, December 2005. +</p> + </div> + +</body></html> + + + + diff --git a/4/pms.pdf b/4/pms.pdf Binary files differnew file mode 100644 index 0000000..9cc7c31 --- /dev/null +++ b/4/pms.pdf diff --git a/4/pms2.html b/4/pms2.html new file mode 100644 index 0000000..5f2e0b4 --- /dev/null +++ b/4/pms2.html @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 11:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> + <div class="footnote-text"> + <!--l. 38--><p class="noindent" ><span class="footnote-mark"><a + id="fn1x3"> <sup class="textsuperscript">1</sup></a></span><span +class="ecrm-0800">Another unofficial EAPI ‘kdebuild-1’ was a series of extensions to EAPI ‘1’ formerly used by the Gentoo KDE</span> + <span +class="ecrm-0800">project. Some of its features have been included in EAPI ‘2’ or later.</span></p></div> + +</body></html> diff --git a/4/pms3.html b/4/pms3.html new file mode 100644 index 0000000..269a83a --- /dev/null +++ b/4/pms3.html @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 11:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn1x13"> <sup class="textsuperscript">1</sup></a></span><span +class="ecrm-0800">May change if a package has been updated (see</span><span +class="ecrm-0800"> </span><a +href="pms.html#x1-380004.4.4"><span +class="ecrm-0800">4.4.4</span><!--tex4ht:ref: sec:updates-dir --></a><span +class="ecrm-0800">)</span></div> +</body></html> diff --git a/4/pms4.html b/4/pms4.html new file mode 100644 index 0000000..1404c5c --- /dev/null +++ b/4/pms4.html @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 11:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn2x13"> <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. For example, a few configure scripts use this variable to find the </span><span +class="ectt-0800">aalib </span><span +class="ecrm-0800">package;</span> + <span +class="ecrm-0800">ebuilds calling such configure scripts must thus work around this.</span></div> +</body></html> diff --git a/4/pms5.html b/4/pms5.html new file mode 100644 index 0000000..fe30d6a --- /dev/null +++ b/4/pms5.html @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 11:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn3x13"> <sup class="textsuperscript">3</sup></a></span><span +class="ecrm-0800">Not necessarily present when installing from a binary package</span></div> +</body></html> diff --git a/4/pms6.html b/4/pms6.html new file mode 100644 index 0000000..86a2467 --- /dev/null +++ b/4/pms6.html @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 11:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn4x13"> <sup class="textsuperscript">4</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</span> + <span +class="ecrm-0800">for the install and the replacement.</span></div> +</body></html> diff --git a/4/pms7.html b/4/pms7.html new file mode 100644 index 0000000..4e56bca --- /dev/null +++ b/4/pms7.html @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 11:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn5x13"> <sup class="textsuperscript">5</sup></a></span><span +class="ecrm-0800">Deprecated in favour of </span><span +class="ectt-0800">D</span><span +class="ecrm-0800">.</span></div> +</body></html> diff --git a/4/pms8.html b/4/pms8.html new file mode 100644 index 0000000..53eb517 --- /dev/null +++ b/4/pms8.html @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2011-01-20 11:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> + <div class="footnote-text"> + <!--l. 28--><p class="noindent" ><span class="footnote-mark"><a + id="fn6x13"> <sup class="textsuperscript">6</sup></a></span><span +class="ecrm-0800">The required bash version was retroactively updated from 3.0 to 3.2 in November 2009 (see</span> + <a +href="http://www.gentoo.org/proj/en/council/meeting-logs/20091109.txt" class="url" ><span +class="ectt-0800">http://www.gentoo.org/proj/en/council/meeting-logs/20091109.txt</span></a><span +class="ecrm-0800">).</span></p></div> +</body></html> diff --git a/5/eapi-cheatsheet-nocombine.pdf b/5/eapi-cheatsheet-nocombine.pdf Binary files differnew file mode 100644 index 0000000..67744f1 --- /dev/null +++ b/5/eapi-cheatsheet-nocombine.pdf diff --git a/5/eapi-cheatsheet.pdf b/5/eapi-cheatsheet.pdf Binary files differnew file mode 100644 index 0000000..1d994fa --- /dev/null +++ b/5/eapi-cheatsheet.pdf diff --git a/5/pms.css b/5/pms.css new file mode 100644 index 0000000..9157bd4 --- /dev/null +++ b/5/pms.css @@ -0,0 +1,314 @@ + +/* start css.sty */ +.cmr-7{font-size:70%;} +.cmmi-7{font-size:70%;font-style: italic;} +.cmmi-10{font-style: italic;} +.ecrm-1728{font-size:170%;} +.ecrm-1200{font-size:120%;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ectt-1000{ font-family: monospace;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecti-1000{ font-style: italic;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecbx-1000{ font-weight: bold;} +.ecrm-0900{font-size:90%;} +.ecrm-0800{font-size:80%;} +.ectt-0800{font-size:80%; font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.ectt-0800{ font-family: monospace;} +.small-caps{font-variant: small-caps; } +p.noindent { text-indent: 0em } +td p.noindent { text-indent: 0em; margin-top:0em; } +p.nopar { text-indent: 0em; } +p.indent{ text-indent: 1.5em } +@media print {div.crosslinks {visibility:hidden;}} +a img { border-top: 0; border-left: 0; border-right: 0; } +center { margin-top:1em; margin-bottom:1em; } +td center { margin-top:0em; margin-bottom:0em; } +.Canvas { position:relative; } +img.math{vertical-align:middle;} +li p.indent { text-indent: 0em } +li p:first-child{ margin-top:0em; } +li p:last-child, li div:last-child { margin-bottom:0.5em; } +li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; } +.enumerate1 {list-style-type:decimal;} +.enumerate2 {list-style-type:lower-alpha;} +.enumerate3 {list-style-type:lower-roman;} +.enumerate4 {list-style-type:upper-alpha;} +div.newtheorem { margin-bottom: 2em; margin-top: 2em;} +.obeylines-h,.obeylines-v {white-space: nowrap; } +div.obeylines-v p { margin-top:0; margin-bottom:0; } +.overline{ text-decoration:overline; } +.overline img{ border-top: 1px solid black; } +td.displaylines {text-align:center; white-space:nowrap;} +.centerline {text-align:center;} +.rightline {text-align:right;} +div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; } +.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.fbox {display:table} +div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.minipage{width:100%;} +div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;} +div.center div {text-align: left;} +div.flushright, div.flushright div.flushright {text-align: right;} +div.flushright div {text-align: left;} +div.flushleft {text-align: left;} +.underline{ text-decoration:underline; } +.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; } +.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +.framebox-c {text-align:center;} +.framebox-l {text-align:left;} +.framebox-r {text-align:right;} +span.thank-mark{ vertical-align: super } +span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; } +div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; } +table.tabular td p{margin-top:0em;} +table.tabular {margin-left: auto; margin-right: auto;} +td p:first-child{ margin-top:0em; } +td p:last-child{ margin-bottom:0em; } +div.td00{ margin-left:0pt; margin-right:0pt; } +div.td01{ margin-left:0pt; margin-right:5pt; } +div.td10{ margin-left:5pt; margin-right:0pt; } +div.td11{ margin-left:5pt; margin-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +td.td00{ padding-left:0pt; padding-right:0pt; } +td.td01{ padding-left:0pt; padding-right:5pt; } +td.td10{ padding-left:5pt; padding-right:0pt; } +td.td11{ padding-left:5pt; padding-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +.hline hr, .cline hr{ height : 1px; margin:0px; } +.tabbing-right {text-align:right;} +span.TEX {letter-spacing: -0.125em; } +span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;} +a span.TEX span.E {text-decoration: none; } +span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;} +span.LATEX span.TEX{ position:relative; left: -0.4em; } +div.float, div.figure {margin-left: auto; margin-right: auto;} +div.float img {text-align:center;} +div.figure img {text-align:center;} +.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} +.marginpar p{margin-top:0.4em; margin-bottom:0.4em;} +table.equation {width:100%;} +.equation td{text-align:center; } +td.equation { margin-top:1em; margin-bottom:1em; } +td.equation-label { width:5%; text-align:center; } +td.eqnarray4 { width:5%; white-space: normal; } +td.eqnarray2 { width:5%; } +table.eqnarray-star, table.eqnarray {width:100%;} +div.eqnarray{text-align:center;} +div.array {text-align:center;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.pmatrix img{vertical-align:middle;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.bar-css {text-decoration:overline;} +img.cdots{vertical-align:middle;} +.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;} +.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;} +.index-item, .index-subitem, .index-subsubitem {display:block} +div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;} +div.caption span.id{font-weight: bold; white-space: nowrap; } +h1.partHead{text-align: center} +p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;} +.subparagraphHead, .likesubparagraphHead { font-weight: bold;} +.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;} +.verse{white-space:nowrap; margin-left:2em} +div.maketitle {text-align:center;} +h2.titleHead{text-align:center;} +div.maketitle{ margin-bottom: 2em; } +div.author, div.date {text-align:center;} +div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; } +div.author{white-space: nowrap;} +.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; } +h1.partHead{text-align: center} +.abstract p {margin-left:5%; margin-right:5%;} +div.abstract {width:100%;} +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +div.longtable{text-align:center;} +div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; } +table.tabular td p{margin-top:0em;} +table.tabular {margin-left: auto; margin-right: auto;} +td p:first-child{ margin-top:0em; } +td p:last-child{ margin-bottom:0em; } +div.td00{ margin-left:0pt; margin-right:0pt; } +div.td01{ margin-left:0pt; margin-right:5pt; } +div.td10{ margin-left:5pt; margin-right:0pt; } +div.td11{ margin-left:5pt; margin-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +td.td00{ padding-left:0pt; padding-right:0pt; } +td.td01{ padding-left:0pt; padding-right:5pt; } +td.td10{ padding-left:5pt; padding-right:0pt; } +td.td11{ padding-left:5pt; padding-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +.hline hr, .cline hr{ height : 1px; margin:0px; } +div.array {text-align:center;} +.figure img.graphics {margin-left:10%;} +dt.enumerate{float:left; clear:left; margin-right:0.2em; margin-left:2em;} +dt.compactenum{float:left; clear:left; margin-right:0.2em; margin-left:2em;} +div.verbatiminput {font-family: monospace; white-space: nowrap; } +div.algorithm table.caption { border-bottom: 1px solid black; margin-bottom:1pt; } +.ALCitem {width:2em; text-align:right;} +tr#TBL-2-1- td{border-top:0.11197em solid} +tr#TBL-2-1- td{border-bottom:0.06998em solid} +tr#TBL-2-7- 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-7- 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-7- 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-7- 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-7- 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-7- 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-5- 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-7- 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-7- 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-7- 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-7- 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-7- 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-7- 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-7- 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-7- 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-7- 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-7- 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-7- 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-7- 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-7- 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-7- td{border-bottom:0.11197em solid} +tr#TBL-23-2- td{border-bottom:0.11197em solid} +tr#TBL-23-4- td{border-bottom:0.06998em solid} +tr#TBL-23-15- 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-7- td{border-bottom:0.11197em solid} +tr#TBL-25-1- td{border-top:0.11197em solid} +tr#TBL-25-1- td{border-bottom:0.06998em solid} +tr#TBL-25-7- 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-7- 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-7- 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-7- 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-7- td{border-bottom:0.11197em solid} +tr#TBL-30-1- td{border-top:0.11197em solid} +tr#TBL-30-2- td{border-bottom:0.06998em solid} +tr#TBL-30-8- 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-7- 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-7- 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-7- 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-7- td{border-bottom:0.11197em solid} +tr#TBL-35-1- td{border-top:0.11197em solid} +tr#TBL-35-1- td{border-bottom:0.06998em solid} +tr#TBL-35-7- td{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-7- 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-7- 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-7- 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-7- 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-7- td{border-bottom:0.11197em solid} +tr#TBL-41-1- td{border-top:0.11197em solid} +tr#TBL-41-1- td{border-bottom:0.06998em solid} +tr#TBL-41-7- 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-7- 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-7- td{border-bottom:0.11197em solid} +tr#TBL-44-1- td{border-top:0.11197em solid} +tr#TBL-44-1- td{border-bottom:0.06998em solid} +tr#TBL-44-7- td{border-bottom:0.11197em solid} +tr#TBL-45-2- td{border-bottom:0.11197em solid} +tr#TBL-45-5- td{border-bottom:0.06998em solid} +tr#TBL-45-17- td{border-bottom:0.11197em solid} +/* end css.sty */ + diff --git a/5/pms.html b/5/pms.html new file mode 100644 index 0000000..0102563 --- /dev/null +++ b/5/pms.html @@ -0,0 +1,12197 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title>Package Manager Specification</title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2012-09-20 13:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> +<div class="maketitle"> + + + +<h2 class="titleHead">Package Manager Specification</h2> + <div class="author" ><span +class="ecrm-1200">Stephen P. Bennett</span> +<br /> <a +href="mailto:spb@exherbo.org" ><span +class="ecrm-1200">spb@exherbo.org</span></a> <br class="and" /><span +class="ecrm-1200">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</span><span +class="ecrm-1200">ü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">20th</span><span +class="ecrm-1200"> September</span><span +class="ecrm-1200"> 2012</span></div> + + +</div> + + +<h2 class="likechapterHead"><a + id="x1-1000"></a>Contents</h2> <div class="tableofcontents"> +<span class="chapterToc" >1 <a +href="#x1-80001" id="QQ2-1-8">Introduction</a></span> +<br /> <span class="sectionToc" >1.1 <a +href="#x1-90001.1" id="QQ2-1-9">Aims and Motivation</a></span> +<br /> <span class="sectionToc" >1.2 <a +href="#x1-100001.2" id="QQ2-1-10">Rationale</a></span> +<br /> <span class="sectionToc" >1.3 <a +href="#x1-110001.3" id="QQ2-1-11">Conventions</a></span> +<br /><span class="chapterToc" >2 <a +href="#x1-120002" id="QQ2-1-12">EAPIs</a></span> +<br /> <span class="sectionToc" >2.1 <a +href="#x1-130002.1" id="QQ2-1-13">Definition</a></span> +<br /> <span class="sectionToc" >2.2 <a +href="#x1-140002.2" id="QQ2-1-14">Defined EAPIs</a></span> +<br /> <span class="sectionToc" >2.3 <a +href="#x1-150002.3" id="QQ2-1-15">Reserved EAPIs</a></span> +<br /><span class="chapterToc" >3 <a +href="#x1-160003" id="QQ2-1-16">Names and Versions</a></span> +<br /> <span class="sectionToc" >3.1 <a +href="#x1-170003.1" id="QQ2-1-17">Restrictions upon Names</a></span> +<br />  <span class="subsectionToc" >3.1.1 <a +href="#x1-180003.1.1" id="QQ2-1-18">Category Names</a></span> +<br />  <span class="subsectionToc" >3.1.2 <a +href="#x1-200003.1.2" id="QQ2-1-20">Package Names</a></span> +<br />  <span class="subsectionToc" >3.1.3 <a +href="#x1-220003.1.3" id="QQ2-1-22">Slot Names</a></span> +<br />  <span class="subsectionToc" >3.1.4 <a +href="#x1-230003.1.4" id="QQ2-1-23">USE Flag Names</a></span> +<br />  <span class="subsectionToc" >3.1.5 <a +href="#x1-250003.1.5" id="QQ2-1-25">Repository Names</a></span> +<br />  <span class="subsectionToc" >3.1.6 <a +href="#x1-260003.1.6" id="QQ2-1-26">Keyword Names</a></span> +<br />  <span class="subsectionToc" >3.1.7 <a +href="#x1-270003.1.7" id="QQ2-1-27">EAPI Names</a></span> +<br /> <span class="sectionToc" >3.2 <a +href="#x1-280003.2" id="QQ2-1-28">Version Specifications</a></span> +<br /> <span class="sectionToc" >3.3 <a +href="#x1-290003.3" id="QQ2-1-29">Version Comparison</a></span> +<br /> <span class="sectionToc" >3.4 <a +href="#x1-300003.4" id="QQ2-1-37">Uniqueness of versions</a></span> +<br /><span class="chapterToc" >4 <a +href="#x1-310004" id="QQ2-1-38">Tree Layout</a></span> +<br /> <span class="sectionToc" >4.1 <a +href="#x1-320004.1" id="QQ2-1-39">Top Level</a></span> +<br /> <span class="sectionToc" >4.2 <a +href="#x1-330004.2" id="QQ2-1-40">Category Directories</a></span> +<br /> <span class="sectionToc" >4.3 <a +href="#x1-340004.3" id="QQ2-1-41">Package Directories</a></span> +<br /> <span class="sectionToc" >4.4 <a +href="#x1-350004.4" id="QQ2-1-42">The Profiles Directory</a></span> +<br />  <span class="subsectionToc" >4.4.1 <a +href="#x1-360004.4.1" id="QQ2-1-43">The profiles.desc file</a></span> +<br />  <span class="subsectionToc" >4.4.2 <a +href="#x1-370004.4.2" id="QQ2-1-44">The thirdpartymirrors file</a></span> +<br />  <span class="subsectionToc" >4.4.3 <a +href="#x1-380004.4.3" id="QQ2-1-45">use.desc and related files</a></span> +<br />  <span class="subsectionToc" >4.4.4 <a +href="#x1-390004.4.4" id="QQ2-1-46">The updates directory</a></span> +<br /> <span class="sectionToc" >4.5 <a +href="#x1-400004.5" id="QQ2-1-47">The Licenses Directory</a></span> +<br /> <span class="sectionToc" >4.6 <a +href="#x1-410004.6" id="QQ2-1-48">The Eclass Directory</a></span> +<br /> <span class="sectionToc" >4.7 <a +href="#x1-420004.7" id="QQ2-1-49">The Metadata Directory</a></span> + + +<br />  <span class="subsectionToc" >4.7.1 <a +href="#x1-430004.7.1" id="QQ2-1-50">The metadata cache</a></span> +<br /><span class="chapterToc" >5 <a +href="#x1-440005" id="QQ2-1-51">Profiles</a></span> +<br /> <span class="sectionToc" >5.1 <a +href="#x1-450005.1" id="QQ2-1-52">General principles</a></span> +<br /> <span class="sectionToc" >5.2 <a +href="#x1-460005.2" id="QQ2-1-53">Files that make up a profile</a></span> +<br />  <span class="subsectionToc" >5.2.1 <a +href="#x1-470005.2.1" id="QQ2-1-54">The parent file</a></span> +<br />  <span class="subsectionToc" >5.2.2 <a +href="#x1-480005.2.2" id="QQ2-1-55">The eapi file</a></span> +<br />  <span class="subsectionToc" >5.2.3 <a +href="#x1-490005.2.3" id="QQ2-1-56">deprecated</a></span> +<br />  <span class="subsectionToc" >5.2.4 <a +href="#x1-500005.2.4" id="QQ2-1-57">make.defaults</a></span> +<br />  <span class="subsectionToc" >5.2.5 <a +href="#x1-510005.2.5" id="QQ2-1-58">Simple line-based files</a></span> +<br />  <span class="subsectionToc" >5.2.6 <a +href="#x1-520005.2.6" id="QQ2-1-59">packages</a></span> +<br />  <span class="subsectionToc" >5.2.7 <a +href="#x1-530005.2.7" id="QQ2-1-60">packages.build</a></span> +<br />  <span class="subsectionToc" >5.2.8 <a +href="#x1-540005.2.8" id="QQ2-1-61">package.mask</a></span> +<br />  <span class="subsectionToc" >5.2.9 <a +href="#x1-560005.2.9" id="QQ2-1-63">package.provided</a></span> +<br />  <span class="subsectionToc" >5.2.10 <a +href="#x1-570005.2.10" id="QQ2-1-64">package.use</a></span> +<br />  <span class="subsectionToc" >5.2.11 <a +href="#x1-580005.2.11" id="QQ2-1-65">USE masking and forcing</a></span> +<br /> <span class="sectionToc" >5.3 <a +href="#x1-590005.3" id="QQ2-1-68">Profile variables</a></span> +<br />  <span class="subsectionToc" >5.3.1 <a +href="#x1-600005.3.1" id="QQ2-1-69">Incremental Variables</a></span> +<br />  <span class="subsectionToc" >5.3.2 <a +href="#x1-610005.3.2" id="QQ2-1-71">Specific variables and their meanings</a></span> +<br /><span class="chapterToc" >6 <a +href="#x1-620006" id="QQ2-1-72">Ebuild File Format</a></span> +<br /><span class="chapterToc" >7 <a +href="#x1-630007" id="QQ2-1-73">Ebuild-defined Variables</a></span> +<br /> <span class="sectionToc" >7.1 <a +href="#x1-650007.1" id="QQ2-1-75">Metadata invariance</a></span> +<br /> <span class="sectionToc" >7.2 <a +href="#x1-660007.2" id="QQ2-1-76">Mandatory Ebuild-defined Variables</a></span> +<br /> <span class="sectionToc" >7.3 <a +href="#x1-670007.3" id="QQ2-1-77">Optional Ebuild-defined Variables</a></span> +<br />  <span class="subsectionToc" >7.3.1 <a +href="#x1-680007.3.1" id="QQ2-1-80">EAPI</a></span> +<br />  <span class="subsectionToc" >7.3.2 <a +href="#x1-690007.3.2" id="QQ2-1-81">Keywords</a></span> +<br />  <span class="subsectionToc" >7.3.3 <a +href="#x1-700007.3.3" id="QQ2-1-82"><span +class="ectt-1000">RDEPEND </span>value</a></span> +<br /> <span class="sectionToc" >7.4 <a +href="#x1-710007.4" id="QQ2-1-84">Magic Ebuild-defined Variables</a></span> +<br /><span class="chapterToc" >8 <a +href="#x1-740008" id="QQ2-1-88">Dependencies</a></span> +<br /> <span class="sectionToc" >8.1 <a +href="#x1-750008.1" id="QQ2-1-89">Dependency Classes</a></span> +<br /> <span class="sectionToc" >8.2 <a +href="#x1-760008.2" id="QQ2-1-91">Dependency Specification Format</a></span> +<br />  <span class="subsectionToc" >8.2.1 <a +href="#x1-770008.2.1" id="QQ2-1-94">All-of Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >8.2.2 <a +href="#x1-780008.2.2" id="QQ2-1-95">Use-conditional Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >8.2.3 <a +href="#x1-790008.2.3" id="QQ2-1-96">Any-of Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >8.2.4 <a +href="#x1-800008.2.4" id="QQ2-1-97">Exactly-one-of Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >8.2.5 <a +href="#x1-810008.2.5" id="QQ2-1-98">At-most-one-of Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >8.2.6 <a +href="#x1-820008.2.6" id="QQ2-1-99">Package Dependency Specifications</a></span> +<br />  <span class="subsectionToc" >8.2.7 <a +href="#x1-890008.2.7" id="QQ2-1-109">Use State Constraints</a></span> +<br />  <span class="subsectionToc" >8.2.8 <a +href="#x1-900008.2.8" id="QQ2-1-110">Restrict</a></span> +<br />  <span class="subsectionToc" >8.2.9 <a +href="#x1-910008.2.9" id="QQ2-1-111">Properties</a></span> + + +<br />  <span class="subsectionToc" >8.2.10 <a +href="#x1-920008.2.10" id="QQ2-1-112">SRC_URI</a></span> +<br /><span class="chapterToc" >9 <a +href="#x1-930009" id="QQ2-1-113">Ebuild-defined Functions</a></span> +<br /> <span class="sectionToc" >9.1 <a +href="#x1-940009.1" id="QQ2-1-114">List of Functions</a></span> +<br />  <span class="subsectionToc" >9.1.1 <a +href="#x1-950009.1.1" id="QQ2-1-115">Initial Working Directories</a></span> +<br />  <span class="subsectionToc" >9.1.2 <a +href="#x1-960009.1.2" id="QQ2-1-117">pkg_pretend</a></span> +<br />  <span class="subsectionToc" >9.1.3 <a +href="#x1-970009.1.3" id="QQ2-1-119">pkg_setup</a></span> +<br />  <span class="subsectionToc" >9.1.4 <a +href="#x1-980009.1.4" id="QQ2-1-120">src_unpack</a></span> +<br />  <span class="subsectionToc" >9.1.5 <a +href="#x1-990009.1.5" id="QQ2-1-121">src_prepare</a></span> +<br />  <span class="subsectionToc" >9.1.6 <a +href="#x1-1000009.1.6" id="QQ2-1-123">src_configure</a></span> +<br />  <span class="subsectionToc" >9.1.7 <a +href="#x1-1010009.1.7" id="QQ2-1-125">src_compile</a></span> +<br />  <span class="subsectionToc" >9.1.8 <a +href="#x1-1020009.1.8" id="QQ2-1-127">src_test</a></span> +<br />  <span class="subsectionToc" >9.1.9 <a +href="#x1-1030009.1.9" id="QQ2-1-129">src_install</a></span> +<br />  <span class="subsectionToc" >9.1.10 <a +href="#x1-1040009.1.10" id="QQ2-1-131">pkg_preinst</a></span> +<br />  <span class="subsectionToc" >9.1.11 <a +href="#x1-1050009.1.11" id="QQ2-1-132">pkg_postinst</a></span> +<br />  <span class="subsectionToc" >9.1.12 <a +href="#x1-1060009.1.12" id="QQ2-1-133">pkg_prerm</a></span> +<br />  <span class="subsectionToc" >9.1.13 <a +href="#x1-1070009.1.13" id="QQ2-1-134">pkg_postrm</a></span> +<br />  <span class="subsectionToc" >9.1.14 <a +href="#x1-1080009.1.14" id="QQ2-1-135">pkg_config</a></span> +<br />  <span class="subsectionToc" >9.1.15 <a +href="#x1-1090009.1.15" id="QQ2-1-136">pkg_info</a></span> +<br />  <span class="subsectionToc" >9.1.16 <a +href="#x1-1100009.1.16" id="QQ2-1-138">pkg_nofetch</a></span> +<br />  <span class="subsectionToc" >9.1.17 <a +href="#x1-1110009.1.17" id="QQ2-1-139"><span +class="ectt-1000">default_ </span>Phase Functions</a></span> +<br /> <span class="sectionToc" >9.2 <a +href="#x1-1120009.2" id="QQ2-1-141">Call Order</a></span> +<br /><span class="chapterToc" >10 <a +href="#x1-11300010" id="QQ2-1-142">Eclasses</a></span> +<br /> <span class="sectionToc" >10.1 <a +href="#x1-11400010.1" id="QQ2-1-143">The inherit command</a></span> +<br /> <span class="sectionToc" >10.2 <a +href="#x1-11500010.2" id="QQ2-1-144">Eclass-defined Metadata Keys</a></span> +<br /> <span class="sectionToc" >10.3 <a +href="#x1-11600010.3" id="QQ2-1-145">EXPORT_FUNCTIONS</a></span> +<br /><span class="chapterToc" >11 <a +href="#x1-11700011" id="QQ2-1-147">The Ebuild Environment</a></span> +<br /> <span class="sectionToc" >11.1 <a +href="#x1-11800011.1" id="QQ2-1-148">Defined Variables</a></span> +<br />  <span class="subsectionToc" >11.1.1 <a +href="#x1-11900011.1.1" id="QQ2-1-153">USE and IUSE Handling</a></span> +<br />  <span class="subsectionToc" >11.1.2 <a +href="#x1-12000011.1.2" id="QQ2-1-154"><span +class="ectt-1000">REPLACING_VERSIONS </span>and <span +class="ectt-1000">REPLACED_BY_VERSION</span></a></span> +<br />  <span class="subsectionToc" >11.1.3 <a +href="#x1-12100011.1.3" id="QQ2-1-155">Offset-prefix variables <span +class="ectt-1000">EPREFIX</span>, <span +class="ectt-1000">EROOT </span>and <span +class="ectt-1000">ED</span></a></span> +<br /> <span class="sectionToc" >11.2 <a +href="#x1-12200011.2" id="QQ2-1-157">The state of variables between functions</a></span> +<br /> <span class="sectionToc" >11.3 <a +href="#x1-12400011.3" id="QQ2-1-160">Available commands</a></span> +<br />  <span class="subsectionToc" >11.3.1 <a +href="#x1-12500011.3.1" id="QQ2-1-161">System commands</a></span> +<br />  <span class="subsectionToc" >11.3.2 <a +href="#x1-12700011.3.2" id="QQ2-1-164">Commands provided by package dependencies</a></span> +<br />  <span class="subsectionToc" >11.3.3 <a +href="#x1-12800011.3.3" id="QQ2-1-165">Ebuild-specific Commands</a></span> +<br /> <span class="sectionToc" >11.4 <a +href="#x1-14400011.4" id="QQ2-1-199">The state of the system between functions</a></span> +<br /><span class="chapterToc" >12 <a +href="#x1-14500012" id="QQ2-1-200">Merging and Unmerging</a></span> +<br /> <span class="sectionToc" >12.1 <a +href="#x1-14700012.1" id="QQ2-1-202">Overview</a></span> +<br /> <span class="sectionToc" >12.2 <a +href="#x1-14800012.2" id="QQ2-1-203">Directories</a></span> + + +<br />  <span class="subsectionToc" >12.2.1 <a +href="#x1-14900012.2.1" id="QQ2-1-204">Permissions</a></span> +<br />  <span class="subsectionToc" >12.2.2 <a +href="#x1-15000012.2.2" id="QQ2-1-205">Empty Directories</a></span> +<br /> <span class="sectionToc" >12.3 <a +href="#x1-15100012.3" id="QQ2-1-206">Regular Files</a></span> +<br />  <span class="subsectionToc" >12.3.1 <a +href="#x1-15200012.3.1" id="QQ2-1-207">Permissions</a></span> +<br />  <span class="subsectionToc" >12.3.2 <a +href="#x1-15300012.3.2" id="QQ2-1-208">File modification times</a></span> +<br />  <span class="subsectionToc" >12.3.3 <a +href="#x1-15400012.3.3" id="QQ2-1-210">Configuration File Protection</a></span> +<br /> <span class="sectionToc" >12.4 <a +href="#x1-15500012.4" id="QQ2-1-211">Symlinks</a></span> +<br />  <span class="subsectionToc" >12.4.1 <a +href="#x1-15600012.4.1" id="QQ2-1-212">Rewriting</a></span> +<br /> <span class="sectionToc" >12.5 <a +href="#x1-15700012.5" id="QQ2-1-213">Hard links</a></span> +<br /> <span class="sectionToc" >12.6 <a +href="#x1-15800012.6" id="QQ2-1-214">Other Files</a></span> +<br /><span class="chapterToc" >13 <a +href="#x1-15900013" id="QQ2-1-215">Metadata Cache</a></span> +<br /> <span class="sectionToc" >13.1 <a +href="#x1-16000013.1" id="QQ2-1-216">Directory Contents</a></span> +<br /> <span class="sectionToc" >13.2 <a +href="#x1-16100013.2" id="QQ2-1-217">Cache File Format</a></span> +<br /><span class="chapterToc" >14 <a +href="#x1-16200014" id="QQ2-1-218">Glossary</a></span> +<br /><span class="appendixToc" >A <a +href="#x1-163000A" id="QQ2-1-219">metadata.xml</a></span> +<br /><span class="appendixToc" >B <a +href="#x1-164000B" id="QQ2-1-220">Unspecified Items</a></span> +<br /><span class="appendixToc" >C <a +href="#x1-165000C" id="QQ2-1-221">Historical Curiosities</a></span> +<br /> <span class="sectionToc" >C.1 <a +href="#x1-166000C.1" id="QQ2-1-222">If-else use blocks</a></span> +<br /> <span class="sectionToc" >C.2 <a +href="#x1-167000C.2" id="QQ2-1-224">cvs Versions</a></span> +<br /> <span class="sectionToc" >C.3 <a +href="#x1-168000C.3" id="QQ2-1-225">use.defaults</a></span> +<br /> <span class="sectionToc" >C.4 <a +href="#x1-169000C.4" id="QQ2-1-226">Old-style Virtuals</a></span> +<br /><span class="appendixToc" >D <a +href="#x1-170000D" id="QQ2-1-227">Feature Availability by EAPI</a></span> +<br /><span class="appendixToc" >E <a +href="#x1-172000E" id="QQ2-1-230">Differences Between EAPIs</a></span> +<br /><span class="appendixToc" >F <a +href="#x1-181000F" id="QQ2-1-239">Desk Reference</a></span> +</div> + + +<h2 class="likechapterHead"><a + id="x1-2000"></a>List of Algorithms</h2><div class="tableofcontents"> +1 <a +href="#x1-29001r1">Version comparison top-level logic</a> +<br />2 <a +href="#x1-29008r2">Version comparison logic for numeric components</a> +<br />3 <a +href="#x1-29025r3">Version comparison logic for each numeric component after the first</a> +<br />4 <a +href="#x1-29041r4">Version comparison logic for letter components</a> +<br />5 <a +href="#x1-29049r5">Version comparison logic for suffixes</a> +<br />6 <a +href="#x1-29069r6">Version comparison logic for each suffix</a> +<br />7 <a +href="#x1-29083r7">Version comparison logic for revision components</a> +<br />8 <a +href="#x1-58002r8">USE masking logic</a> +<br />9 <a +href="#x1-135002r9">econf --libdir logic</a> +<br />10 <a +href="#x1-136001r10">Determining the library directory</a> +</div> + + +<h2 class="likechapterHead"><a + id="x1-3000"></a>Listings</h2><div class="tableofcontents"> +10.1 <a +href="#x1-116001r1">EXPORT_FUNCTIONS example: foo.eclass</a> +<br />11.1 <a +href="#x1-123001r1">Environment state between functions</a> +<br />11.2 <a +href="#x1-135017r2">einstall command</a> +<br />C.1 <a +href="#x1-166001r1">If-else use blocks</a> +</div> + + +<h2 class="likechapterHead"><a + id="x1-4000"></a>List of Tables</h2><div class="tableofcontents"><span class="lotToc" >5.1 <a +href="#x1-58001r1">Profile directory support for masking/forcing use flags in stable +versions only</a></span><br /><span class="lotToc" >5.2 <a +href="#x1-60001r2">Profile-defined <span +class="ectt-1000">IUSE </span>injection for EAPIs</a></span><br /><span class="lotToc" >7.1 <a +href="#x1-67001r1">EAPIs supporting +<span +class="ectt-1000">IUSE </span>defaults</a></span><br /><span class="lotToc" >7.2 <a +href="#x1-67002r2">EAPIs supporting various ebuild-defined variables</a></span><br /><span class="lotToc" >7.3 <a +href="#x1-70001r3">EAPIs with +<span +class="ectt-1000">RDEPEND=DEPEND </span>Default</a></span><br /><span class="lotToc" >7.4 <a +href="#x1-73001r4">EAPIs supporting <span +class="ectt-1000">DEFINED_PHASES</span></a></span><br /><span class="lotToc" >8.1 <a +href="#x1-75001r1">Dependency classes +required to be satisfied for a particular phase function</a></span><br /><span class="lotToc" >8.2 <a +href="#x1-76001r2">EAPIs supporting <span +class="ectt-1000">SRC_URI</span> +arrows</a></span><br /><span class="lotToc" >8.3 <a +href="#x1-76002r3">EAPIs supporting <span +class="ectt-1000">REQUIRED_USE ?? </span>groups</a></span><br /><span class="lotToc" >8.4 <a +href="#x1-83001r4">Support for <span +class="ectt-1000">SLOT </span>dependencies +and sub-slots in EAPIs</a></span><br /><span class="lotToc" >8.5 <a +href="#x1-83002r5">EAPIs supporting <span +class="ectt-1000">USE </span>dependencies</a></span><br /><span class="lotToc" >8.6 <a +href="#x1-85001r6">Exclamation +mark strengths for EAPIs</a></span><br /><span class="lotToc" >9.1 <a +href="#x1-95001r1">EAPIs with <span +class="ectt-1000">S </span>to <span +class="ectt-1000">WORKDIR </span>fallbacks</a></span><br /><span class="lotToc" >9.2 <a +href="#x1-96001r2">EAPIs +supporting <span +class="ectt-1000">pkg_pretend</span></a></span><br /><span class="lotToc" >9.3 <a +href="#x1-99001r3">EAPIs supporting <span +class="ectt-1000">src_prepare</span></a></span><br /><span class="lotToc" >9.4 <a +href="#x1-100001r4">EAPIs supporting +<span +class="ectt-1000">src_configure</span></a></span><br /><span class="lotToc" >9.5 <a +href="#x1-101001r5"><span +class="ectt-1000">src_compile </span>behaviour for EAPIs</a></span><br /><span class="lotToc" >9.6 <a +href="#x1-102001r6"><span +class="ectt-1000">src_test </span>behaviour for +EAPIs</a></span><br /><span class="lotToc" >9.7 <a +href="#x1-103001r7"><span +class="ectt-1000">src_install </span>behaviour for EAPIs</a></span><br /><span class="lotToc" >9.8 <a +href="#x1-109001r8">EAPIs supporting <span +class="ectt-1000">pkg_info </span>on +non-installed packages</a></span><br /><span class="lotToc" >9.9 <a +href="#x1-111001r9">EAPIs supporting <span +class="ectt-1000">default_ </span>phase functions</a></span><br /><span class="lotToc" >11.1 <a +href="#x1-118002">Defined +variables</a></span><br /><span class="lotToc" >11.2 <a +href="#x1-118007r2">EAPIs supporting various added env variables</a></span><br /><span class="lotToc" >11.3 <a +href="#x1-118008r3">EAPIs supporting +various removed env variables</a></span><br /><span class="lotToc" >11.4 <a +href="#x1-118009r4">EAPIs supporting offset-prefix env variables</a></span><br /><span class="lotToc" >11.5 <a +href="#x1-121001r5">EAPIs +supporting offset-prefix</a></span><br /><span class="lotToc" >11.6 <a +href="#x1-126002r6"><span +class="ectt-1000">find </span>implementation for EAPIs</a></span><br /><span class="lotToc" >11.7 <a +href="#x1-129001r7">EAPI Command +Failure Behaviour</a></span><br /><span class="lotToc" >11.8 <a +href="#x1-130001r8">Banned commands</a></span><br /><span class="lotToc" >11.9 <a +href="#x1-135001r9">Extra <span +class="ectt-1000">econf </span>arguments for +EAPIs</a></span><br /><span class="lotToc" >11.10 <a +href="#x1-136018r10">EAPIs supporting <span +class="ectt-1000">dodoc -r</span></a></span><br /><span class="lotToc" >11.11 <a +href="#x1-136019r11">EAPIs supporting <span +class="ectt-1000">doheader </span>and +<span +class="ectt-1000">newheader</span></a></span><br /><span class="lotToc" >11.12 <a +href="#x1-136020r12">EAPIs supporting symlinks for <span +class="ectt-1000">doins</span></a></span><br /><span class="lotToc" >11.13 <a +href="#x1-136021r13"><span +class="ectt-1000">doman </span>language support +options for EAPIs</a></span><br /><span class="lotToc" >11.14 <a +href="#x1-136022r14">EAPIs supporting stdin for <span +class="ectt-1000">new* </span>commands</a></span><br /><span class="lotToc" >11.15 <a +href="#x1-136023r15">EAPIs +supporting <span +class="ectt-1000">--host-root </span>for <span +class="ectt-1000">*_version </span>commands</a></span><br /><span class="lotToc" >11.16 <a +href="#x1-138001r16">EAPIs supporting controllable +compression</a></span><br /><span class="lotToc" >11.17 <a +href="#x1-139001r17">EAPI Behaviour for Use Queries not in IUSE_EFFECTIVE</a></span><br /><span class="lotToc" >11.18 <a +href="#x1-139002r18">EAPIs +supporting empty third argument in <span +class="ectt-1000">use_with </span>and <span +class="ectt-1000">use_enable</span></a></span><br /><span class="lotToc" >11.19 <a +href="#x1-139003r19">EAPIs supporting +<span +class="ectt-1000">usex</span></a></span><br /><span class="lotToc" >11.20 <a +href="#x1-141001r20"><span +class="ectt-1000">unpack </span>extensions for EAPIs</a></span><br /><span class="lotToc" >11.21 <a +href="#x1-141002r21">EAPIs supporting the <span +class="ectt-1000">default</span> +function</a></span><br /><span class="lotToc" >12.1 <a +href="#x1-153001r1">Preservation of file modification times (mtimes)</a></span><br /><span class="lotToc" >D.1 <a +href="#x1-171002">Features in EAPIs</a></span><br /> +</div> + + +<h3 class="likesectionHead"><a + id="x1-5000"></a>Acknowledgements</h3> +<!--l. 3--><p class="noindent" >Thanks to Mike Kelly (package manager provided utilities, section <a +href="#x1-12800011.3.3">11.3.3<!--tex4ht:ref: sec:pkg-mgr-commands --></a>), Danny van Dyk (ebuild +functions, section <a +href="#x1-930009">9<!--tex4ht:ref: sec:ebuild-functions --></a>), David Leverton (various sections), Petteri Räty (environment state, +section <a +href="#x1-12200011.2">11.2<!--tex4ht:ref: sec:ebuild-env-state --></a>) and Michał Górny (various sections) for contributions. Thanks also to +Mike Frysinger and Brian Harring for proof-reading and suggestions for fixes and/or +clarification. +</p><!--l. 9--><p class="noindent" > +</p> +<h3 class="likesectionHead"><a + id="x1-6000"></a>Copyright and Licence</h3> +<!--l. 11--><p class="noindent" >The bulk of this document is <span +class="cmsy-10">© </span>2007, 2008, 2009 Stephen Bennett and Ciaran McCreesh. +Contributions are owned by their respective authors, and may have been changed substantially +before inclusion. +</p><!--l. 15--><p class="noindent" >This document is released under the Creative Commons Attribution-Share Alike 3.0 Licence. The +full text of this licence can be found at <a +href="http://creativecommons.org/licenses/by-sa/3.0/" class="url" ><span +class="ectt-1000">http://creativecommons.org/licenses/by-sa/3.0/</span></a>. +</p><!--l. 18--><p class="noindent" > +</p> +<h3 class="likesectionHead"><a + id="x1-7000"></a>Reporting Issues</h3> +<!--l. 20--><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. 24--><p class="noindent" >Patches (in <span +class="ectt-1000">git format-patch </span>form if possible) may be submitted either via Bugzilla or to the +<span +class="ectt-1000">gentoo-pms@gentoo.org </span>mailing list. Patches will be reviewed by the PMS team, who will do one +of the following: +</p><!--l. 29--><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. 36--><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. 39--><p class="noindent" >If any issue cannot be resolved by the PMS team, it may be escalated to the Gentoo +Council. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 1</span><br /><a + id="x1-80001"></a>Introduction</h2> +<h3 class="sectionHead"><span class="titlemark">1.1 </span> <a + id="x1-90001.1"></a>Aims and Motivation</h3> +<!--l. 5--><p class="noindent" >This document aims to fully describe the format of an ebuild repository and the ebuilds therein, +as well as certain aspects of package manager behaviour required to support such a +repository. +</p><!--l. 8--><p class="noindent" >This document is <span +class="ecti-1000">not </span>designed to be an introduction to ebuild development. Prior knowledge of +ebuild creation and an understanding of how the package management system works is assumed; +certain less familiar terms are explained in the Glossary in chapter <a +href="#x1-16200014">14<!--tex4ht:ref: sec:glossary --></a>. +</p><!--l. 12--><p class="noindent" >This document does not specify any user or package manager configuration information. +</p><!--l. 14--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">1.2 </span> <a + id="x1-100001.2"></a>Rationale</h3> +<!--l. 16--><p class="noindent" >At present the only definition of what an ebuild can assume about its environment, +and the only definition of what is valid in an ebuild, is the source code of the latest +Portage release and a general consensus about which features are too new to assume +availability. This has several drawbacks: not only is it impossible to change any aspect of +Portage behaviour without verifying that nothing in the tree relies upon it, but if a new +package manager should appear it becomes impossible to fully support such an ill-defined +standard. +</p><!--l. 23--><p class="noindent" >This document aims to address both of these concerns by defining almost all aspects of what an +ebuild repository looks like, and how an ebuild is allowed to behave. Thus, both Portage and other +package managers can change aspects of their behaviour not defined here without worry of +incompatibilities with any particular repository. +</p><!--l. 28--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">1.3 </span> <a + id="x1-110001.3"></a>Conventions</h3> +<!--l. 30--><p class="noindent" >Text in <span +class="ectt-1000">teletype </span>is used for filenames or variable names. <span +class="ecti-1000">Italic </span>text is used for terms with a +particular technical meaning in places where there may otherwise be ambiguity. +</p><!--l. 33--><p class="noindent" >The term <span +class="ecti-1000">package manager </span>is used throughout this document in a broad sense. Although some +parts of this document are only relevant to fully featured package managers, many items are +equally applicable to tools or other applications that interact with ebuilds or ebuild +repositories. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 2</span><br /><a + id="x1-120002"></a>EAPIs</h2> +<h3 class="sectionHead"><span class="titlemark">2.1 </span> <a + id="x1-130002.1"></a>Definition</h3> +<!--l. 5--><p class="noindent" >An EAPI can be thought of as a ‘version’ of this specification to which a package conforms. An +EAPI value is a string as per section <a +href="#x1-270003.1.7">3.1.7<!--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-480005.2.2">5.2.2<!--tex4ht:ref: sec:profile-eapi --></a>. +</p><!--l. 18--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">2.2 </span> <a + id="x1-140002.2"></a>Defined EAPIs</h3> +<!--l. 20--><p class="noindent" >The following EAPIs are defined by this specification: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">0</span> </dt><dd +class="description">The ‘original’ base EAPI. + </dd><dt class="description"> +<span +class="ecbx-1000">1</span> </dt><dd +class="description">EAPI ‘1’ contains a number of extensions to EAPI ‘0’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘0’. + </dd><dt class="description"> +<span +class="ecbx-1000">2</span> </dt><dd +class="description">EAPI ‘2’ contains a number of extensions to EAPI ‘1’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘1’. + </dd><dt class="description"> +<span +class="ecbx-1000">3</span> </dt><dd +class="description">EAPI ‘3’ contains a number of extensions to EAPI ‘2’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘2’. + </dd><dt class="description"> +<span +class="ecbx-1000">4</span> </dt><dd +class="description">EAPI ‘4’ contains a number of extensions to EAPI ‘3’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘3’. + </dd><dt class="description"> +<span +class="ecbx-1000">5</span> </dt><dd +class="description">EAPI ‘5’ contains a number of extensions to EAPI ‘4’. Except where explicitly noted, it + is in all other ways identical to EAPI ‘4’.</dd></dl> +<!--l. 37--><p class="noindent" >Except where explicitly noted, everything in this specification applies to all of the above +EAPIs.<span class="footnote-mark"><a +href="pms2.html#fn1x3"><sup class="textsuperscript">1</sup></a></span><a + id="x1-14001f1"></a> + + +</p> +<h3 class="sectionHead"><span class="titlemark">2.3 </span> <a + id="x1-150002.3"></a>Reserved EAPIs</h3> +<!--l. 46--><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-160003"></a>Names and Versions</h2> +<h3 class="sectionHead"><span class="titlemark">3.1 </span> <a + id="x1-170003.1"></a>Restrictions upon Names</h3> +<!--l. 5--><p class="noindent" >No name may be empty. Package managers must not impose fixed upper boundaries upon the +length of any name. A package manager should indicate or reject any name that is invalid +according to these rules. +</p><!--l. 8--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.1 </span> <a + id="x1-180003.1.1"></a>Category Names</h4> +<!--l. 9--><p class="noindent" >A category name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_.-</span>]. It must not begin with a +hyphen, a dot or a plus sign. +</p> +<!--l. 12--><p class="noindent" ><span class="paragraphHead"><a + id="x1-190003.1.1"></a><span +class="ecbx-1000">Note:</span></span> +A hyphen is <span +class="ecti-1000">not </span>required because of the <span +class="ectt-1000">virtual </span>category. Usually, however, category names will +contain a hyphen. +</p><!--l. 15--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.2 </span> <a + id="x1-200003.1.2"></a>Package Names</h4> +<!--l. 16--><p class="noindent" >A package name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_-</span>]. It must not begin +with a hyphen or a plus sign, and must not end in a hyphen followed by one or more +digits. +</p> +<!--l. 19--><p class="noindent" ><span class="paragraphHead"><a + id="x1-210003.1.2"></a><span +class="ecbx-1000">Note:</span></span> +A package name does not include the category. The term <span +class="ecti-1000">qualified package name </span>is used where a +<span +class="ectt-1000">category/package </span>pair is meant. +</p><!--l. 22--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.3 </span> <a + id="x1-220003.1.3"></a>Slot Names</h4> +<!--l. 24--><p class="noindent" >A slot name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_.-</span>]. It must not begin with a hyphen, +a dot or a plus sign. + + +</p><!--l. 27--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.4 </span> <a + id="x1-230003.1.4"></a>USE Flag Names</h4> +<!--l. 28--><p class="noindent" >A USE flag name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9+_@-</span>]. It must begin with an +alphanumeric character. Underscores should be considered reserved for <span +class="ectt-1000">USE_EXPAND</span>, as described in +section <a +href="#x1-11900011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>. +</p> +<!--l. 32--><p class="noindent" ><span class="paragraphHead"><a + id="x1-240003.1.4"></a><span +class="ecbx-1000">Note:</span></span> +The at-sign is required for <span +class="ectt-1000">LINGUAS</span>. +</p><!--l. 34--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.5 </span> <a + id="x1-250003.1.5"></a>Repository Names</h4> +<!--l. 36--><p class="noindent" >A repository name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9_-</span>]. It must not begin with a +hyphen. In addition, every repository name must also be a valid package name. +</p><!--l. 39--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.6 </span> <a + id="x1-260003.1.6"></a>Keyword Names</h4> +<!--l. 41--><p class="noindent" >A keyword name may contain any of the characters [<span +class="ectt-1000">A-Za-z0-9_-</span>]. It must not begin with a +hyphen. In contexts where it makes sense to do so, a keyword name may be prefixed by a tilde or a +hyphen. In <span +class="ectt-1000">KEYWORDS</span>, <span +class="ectt-1000">-* </span>is also acceptable as a keyword. +</p><!--l. 45--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">3.1.7 </span> <a + id="x1-270003.1.7"></a>EAPI Names</h4> +<!--l. 47--><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. 50--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">3.2 </span> <a + id="x1-280003.2"></a>Version Specifications</h3> +<!--l. 51--><p class="noindent" >The package manager must not impose fixed limits upon the number of version components. +Package managers should indicate or reject any version that is invalid according to these +rules. +</p><!--l. 54--><p class="noindent" >A version starts with the number part, which is in the form <span +class="ectt-1000">[0-9]+(</span><span +class="cmsy-10">\</span><span +class="ectt-1000">.[0-9]+)* </span>(a positive +integer, followed by zero or more dot-prefixed positive integers). +</p><!--l. 57--><p class="noindent" >This may optionally be followed by one of <span +class="ectt-1000">[a-z] </span>(a lowercase letter). + + +</p><!--l. 59--><p class="noindent" >This may be followed by zero or more of the suffixes <span +class="ectt-1000">_alpha</span>, <span +class="ectt-1000">_beta</span>, <span +class="ectt-1000">_pre</span>, <span +class="ectt-1000">_rc </span>or <span +class="ectt-1000">_p</span>, which +themselves may be suffixed by an optional integer. +</p><!--l. 62--><p class="noindent" >This may optionally be followed by the suffix <span +class="ectt-1000">-r </span>followed immediately by an integer (the “revision +number”). If this suffix is not present, it is assumed to be <span +class="ectt-1000">-r0</span>. +</p><!--l. 65--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">3.3 </span> <a + id="x1-290003.3"></a>Version Comparison</h3> +<!--l. 67--><p class="noindent" >Version specifications are compared component by component, moving from left to right, as +detailed in Algorithm <a +href="#x1-29001r1">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. 74--><p class="noindent" ><a + id="x1-29001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 1: </span><span +class="content">Version comparison top-level logic</span></div><!--tex4ht:label?: x1-29001r1 --> +<div class="algorithmic"> +<a + id="x1-29002r1"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29003r2"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> compare numeric components using Algorithm <a +href="#x1-29008r2">2<!--tex4ht:ref: alg:version-comparison-numeric --></a> <a + id="x1-29004r3"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> compare letter components using Algorithm <a +href="#x1-29041r4">4<!--tex4ht:ref: alg:version-comparison-letter --></a> <a + id="x1-29005r4"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> compare suffixes using Algorithm <a +href="#x1-29049r5">5<!--tex4ht:ref: alg:version-comparison-suffix --></a> <a + id="x1-29006r5"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> compare revision components using Algorithm <a +href="#x1-29083r7">7<!--tex4ht:ref: alg:version-comparison-revision --></a> <a + id="x1-29007r6"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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. 86--><p class="noindent" ><a + id="x1-29008r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 2: </span><span +class="content">Version comparison logic for numeric components</span></div><!--tex4ht:label?: x1-29008r2 --> +<div class="algorithmic"> +<a + id="x1-29009r7"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29010r8"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29011r9"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-29012r10"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29013r11"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-29014r12"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-29015r13"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29016r14"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29017r15"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29018r16"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-29025r3">3<!--tex4ht:ref: alg:version-comparison --></a> + </span><a + id="x1-29019r17"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span><a + id="x1-29020r18"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </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-29021r19"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-29022r20"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </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-29023r21"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-29024r22"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 108--><p class="noindent" ><a + id="x1-29025r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 3: </span><span +class="content">Version comparison logic for each numeric component after the first</span></div><!--tex4ht:label?: x1-29025r3 --> +<div class="algorithmic"> +<a + id="x1-29026r23"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29027r24"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29028r25"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29029r26"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29030r27"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-29031r28"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29032r29"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-29033r30"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-29034r31"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-29035r32"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-29036r33"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-29037r34"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-29038r35"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-29039r36"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-29040r37"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 129--><p class="noindent" ><a + id="x1-29041r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 4: </span><span +class="content">Version comparison logic for letter components</span></div><!--tex4ht:label?: x1-29041r4 --> +<div class="algorithmic"> +<a + id="x1-29042r38"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29043r39"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29044r40"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29045r41"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-29046r42"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29047r43"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-29048r44"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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. 142--><p class="noindent" ><a + id="x1-29049r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 5: </span><span +class="content">Version comparison logic for suffixes</span></div><!--tex4ht:label?: x1-29049r5 --> +<div class="algorithmic"> +<a + id="x1-29050r45"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29051r46"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29052r47"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29053r48"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29054r49"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29069r6">6<!--tex4ht:ref: alg:version-comparison --></a> + </span><a + id="x1-29055r50"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span><a + id="x1-29056r51"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29057r52"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29058r53"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-29059r54"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-29060r55"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-29061r56"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-29062r57"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </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-29063r58"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-29064r59"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-29065r60"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-29066r61"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">17:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-29067r62"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">18:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-29068r63"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">19:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 167--><p class="noindent" ><a + id="x1-29069r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 6: </span><span +class="content">Version comparison logic for each suffix</span></div><!--tex4ht:label?: x1-29069r6 --> +<div class="algorithmic"> +<a + id="x1-29070r64"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29071r65"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29072r66"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29073r67"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29074r68"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-29075r69"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29076r70"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-29077r71"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-29078r72"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29079r73"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-29080r74"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-29081r75"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-29082r76"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<div class="algorithm"> + + +<!--l. 186--><p class="noindent" ><a + id="x1-29083r7"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 7: </span><span +class="content">Version comparison logic for revision components</span></div><!--tex4ht:label?: x1-29083r7 --> +<div class="algorithmic"> +<a + id="x1-29084r77"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29085r78"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29086r79"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29087r80"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A > B</span> + </span><a + id="x1-29088r81"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-29089r82"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">return </span> <span +class="cmmi-10">A < B</span> + </span><a + id="x1-29090r83"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-300003.4"></a>Uniqueness of versions</h3> +<!--l. 200--><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-310004"></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-320004.1"></a>Top Level</h3> +<!--l. 10--><p class="noindent" >An ebuild repository shall occupy one directory on disk, with the following subdirectories: + </p><ul> + <li class="compactitem">One directory per category, whose name shall be the name of the category. The layout + of these directories shall be as described in section <a +href="#x1-330004.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-350004.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-400004.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-410004.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-420004.7">4.7<!--tex4ht:ref: sec:metadata-dir --></a>. + </li> + <li class="compactitem">Other optional support files and directories (skeleton ebuilds or ChangeLogs, for + example) may exist but are not covered by this specification. The package manager + must ignore any of these files or directories that it does not recognise. + </li></ul> +<!--l. 24--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.2 </span> <a + id="x1-330004.2"></a>Category Directories</h3> +<!--l. 27--><p class="noindent" >Each category provided by the repository (see also: the <span +class="ectt-1000">profiles/categories </span>file, section <a +href="#x1-350004.4">4.4<!--tex4ht:ref: profiles-categories --></a>) +shall be contained in one directory, whose name shall be that of the category. Each category +directory shall contain: + </p><ul> + <li class="compactitem">A <span +class="ectt-1000">metadata.xml </span>file, as described in appendix <a +href="#x1-163000A">A<!--tex4ht:ref: sec:metadata-xml --></a>. Optional. + </li> + <li class="compactitem">Zero or more package directories, one for each package in the category, as described + in section <a +href="#x1-340004.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-340004.3"></a>Package Directories</h3> +<!--l. 50--><p class="noindent" >A package directory contains the following: + </p><ul> + <li class="compactitem">Zero or more ebuilds. These are as described in section <a +href="#x1-620006">6<!--tex4ht:ref: sec:ebuild-format --></a> and others. + </li> + <li class="compactitem">A <span +class="ectt-1000">metadata.xml </span>file, as described in appendix <a +href="#x1-163000A">A<!--tex4ht:ref: sec:metadata-xml --></a>. Optional only for legacy support. + </li> + <li class="compactitem">A <span +class="ectt-1000">ChangeLog</span>, in a format determined by the provider of the repository. Optional. + </li> + <li class="compactitem">A <span +class="ectt-1000">Manifest </span>file, whose format is described in <span class="cite">[<a +href="#XGlep44">1</a>]</span>. + </li> + <li class="compactitem">A <span +class="ectt-1000">files </span>directory, containing any support files needed by the ebuilds. Optional.</li></ul> +<!--l. 60--><p class="noindent" >Any ebuild in a package directory must be named <span +class="ectt-1000">name-ver.suffix</span>, where: +</p><!--l. 63--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">name </span>is the (unqualified) package name. + </li> + <li class="compactitem"><span +class="ectt-1000">ver </span>is the package’s version. + </li> + <li class="compactitem"> <span +class="ectt-1000">suffix </span>is <span +class="ectt-1000">ebuild</span>.</li></ul> +<!--l. 68--><p class="noindent" >Package managers must ignore any ebuild file that does not match these rules. +</p><!--l. 70--><p class="noindent" >A package directory that contains no correctly named ebuilds shall be considered a package with +no versions. A package with no versions shall be considered equivalent to a package that does not +exist (and by extension, a package manager may treat a package that does not exist as a package +with no versions). +</p><!--l. 75--><p class="noindent" >A package directory may contain other files or directories, whose purpose is not covered by this +specification. +</p><!--l. 78--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.4 </span> <a + id="x1-350004.4"></a>The Profiles Directory</h3> +<!--l. 81--><p class="noindent" >The profiles directory shall contain zero or more profile directories as described in section <a +href="#x1-440005">5<!--tex4ht:ref: sec:profiles --></a>, as +well as the following files and directories. In any line-based file, lines beginning with a # character +are treated as comments, whilst blank lines are ignored. All contents of this directory, with the +exception of <span +class="ectt-1000">repo_name</span>, are optional. +</p><!--l. 88--><p class="noindent" >The profiles directory may contain an <span +class="ectt-1000">eapi </span>file. This file, if it exists, must contain a single line +with the name of an EAPI. This specifies the EAPI to use when handling the profiles +directory; a package manager must not attempt to use any repository whose profile +directory requires an EAPI it does not support. If no <span +class="ectt-1000">eapi </span>file is present, EAPI 0 shall be +used. +</p><!--l. 93--><p class="noindent" >If the repository is not intended to be stand-alone, the contents of these files are to be taken from +or merged with the master repository as necessary. +</p><!--l. 96--><p class="noindent" >Other files not described by this specification may exist, but may not be relied upon. The package +manager must ignore any files in this directory that it does not recognise. + + + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">arch.list</span> </dt><dd +class="description"> Contains a list, one entry per line, of permissible values for the <span +class="ectt-1000">ARCH </span>variable, + and hence permissible keywords for packages in this repository. + </dd><dt class="description"> +<span +class="ecbx-1000">categories</span> </dt><dd +class="description"> Contains a list, one entry per line, of categories provided by this repository. + </dd><dt class="description"> +<span +class="ecbx-1000">eapi</span> </dt><dd +class="description">See above. + </dd><dt class="description"> +<span +class="ecbx-1000">info_pkgs</span> </dt><dd +class="description">Contains a list, one entry per line, of qualified package names. Any package + matching one of these is to be listed when a package manager displays a ‘system + information’ listing. + </dd><dt class="description"> +<span +class="ecbx-1000">info_vars</span> </dt><dd +class="description">Contains a list, one entry per line, of profile, configuration, and environment + variables which are considered to be of interest. The value of each of these variables + may be shown when the package manager displays a ‘system information’ listing. + </dd><dt class="description"> +<span +class="ecbx-1000">package.mask</span> </dt><dd +class="description"> Contains a list, one entry per line, of package dependency specifications + (using the directory’s EAPI). Any package version matching one of these is considered + to be masked, and will not be installed regardless of profile unless it is unmasked by + the user configuration. + </dd><dt class="description"> +<span +class="ecbx-1000">profiles.desc</span> </dt><dd +class="description">Described below in section <a +href="#x1-360004.4.1">4.4.1<!--tex4ht:ref: sec:profiles.desc --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">repo_name</span> </dt><dd +class="description">Contains, on a single line, the name of this repository. The repository name + must conform to section <a +href="#x1-250003.1.5">3.1.5<!--tex4ht:ref: sec:repository-names --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">thirdpartymirrors</span> </dt><dd +class="description">Described below in section <a +href="#x1-370004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">use.desc</span> </dt><dd +class="description">Contains descriptions of valid global USE flags for this repository. The format is + described in section <a +href="#x1-380004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">use.local.desc</span> </dt><dd +class="description">Contains descriptions of valid local USE flags for this repository, along with + the packages to which they apply. The format is as described in section <a +href="#x1-380004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">desc/</span> </dt><dd +class="description">This directory contains files analogous to <span +class="ectt-1000">use.desc </span>for the various <span +class="ectt-1000">USE_EXPAND</span> + variables. Each file in it is named <span +class="ectt-1000"><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-380004.4.3">4.4.3<!--tex4ht:ref: sec:use.desc --></a>. The <span +class="ectt-1000">USE_EXPAND </span>name is <span +class="ecti-1000">not </span>included as + a prefix here. + </dd><dt class="description"> +<span +class="ecbx-1000">updates/</span> </dt><dd +class="description">This directory is described in section <a +href="#x1-390004.4.4">4.4.4<!--tex4ht:ref: sec:updates-dir --></a>.</dd></dl> +<!--l. 131--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.1 </span> <a + id="x1-360004.4.1"></a>The profiles.desc file</h4> +<!--l. 133--><p class="noindent" ><span +class="ectt-1000">profiles.desc </span>is a line-based file, with the standard commenting rules from section <a +href="#x1-350004.4">4.4<!--tex4ht:ref: sec:profiles-dir --></a>, +containing a list of profiles that are valid for use, along with their associated architecture and +status. Each line has the format: + + +</p> +<div class="verbatim" id="verbatim-1"> +<keyword> <profile path> <stability></div> +<!--l. 140--><p class="nopar" > +</p><!--l. 142--><p class="noindent" >Where: +</p><!--l. 145--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000"><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. 154--><p class="noindent" >Fields are whitespace-delimited. +</p><!--l. 156--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.2 </span> <a + id="x1-370004.4.2"></a>The thirdpartymirrors file</h4> +<!--l. 158--><p class="noindent" ><span +class="ectt-1000">thirdpartymirrors </span>is another simple line-based file, describing the valid mirrors for use with +<span +class="ectt-1000">mirror:// </span>URIs in this repository, and the associated download locations. The format of each line +is: + + +</p> +<div class="verbatim" id="verbatim-2"> +<mirror name> <mirror 1> <mirror 2> ... <mirror n></div> +<!--l. 163--><p class="nopar" >Fields are whitespace-delimited. When parsing a URI of the form <span +class="ectt-1000">mirror://name/path/filename</span>, +where the <span +class="ectt-1000">path/ </span>part is optional, the <span +class="ectt-1000">thirdpartymirrors </span>file is searched for a line whose first field +is <span +class="ectt-1000">name</span>. Then the download URIs in the subsequent fields have <span +class="ectt-1000">path/filename </span>appended to them +to generate the URIs from which a download is attempted. +</p><!--l. 170--><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. 175--><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. 178--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.3 </span> <a + id="x1-380004.4.3"></a>use.desc and related files</h4> +<!--l. 180--><p class="noindent" ><span +class="ectt-1000">use.desc </span>contains descriptions of every valid global USE flag for this repository. It is a +line-based file with the standard rules for comments and blank lines. The format of each line +is: + + +</p> +<div class="verbatim" id="verbatim-3"> +<flagname> - <description></div> +<!--l. 184--><p class="nopar" > +</p><!--l. 186--><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> +<div class="verbatim" id="verbatim-4"> +<category/package>:<flagname> - <description></div> +<!--l. 190--><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. 195--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.4.4 </span> <a + id="x1-390004.4.4"></a>The updates directory</h4> +<!--l. 197--><p class="noindent" >The <span +class="ectt-1000">updates </span>directory is used to inform the package manager that a package has moved +categories, names, or that a version has changed SLOT. It contains one file per quarter year, +named <span +class="ectt-1000">[1-4]Q-[YYYY] </span>for the first to fourth quarter of a given year, for example <span +class="ectt-1000">1Q-2004 </span>or +<span +class="ectt-1000">3Q-2006</span>. The format of each file is again line-based, with each line having one of the following +formats: + + +</p> +<div class="verbatim" id="verbatim-5"> +move <qpn1> <qpn2> + <br />slotmove <spec> <slot1> <slot2></div> +<!--l. 205--><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. 209--><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. 213--><p class="noindent" >Any name that has appeared as the origin of a move must not be reused in the future. Any slot +that has appeared as the origin of a slot move may not be used by packages matching the spec of +that slot move in the future. +</p><!--l. 217--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.5 </span> <a + id="x1-400004.5"></a>The Licenses Directory</h3> +<!--l. 220--><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-670007.3">7.3<!--tex4ht:ref: ebuild-var-LICENSE --></a>, and will contain the complete text of the license in human-readable form. Plain text +format is strongly preferred but not required. +</p><!--l. 225--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.6 </span> <a + id="x1-410004.6"></a>The Eclass Directory</h3> +<!--l. 228--><p class="noindent" >The <span +class="ectt-1000">eclass </span>directory shall contain copies of the eclasses provided by this repository. The format of +these files is described in section <a +href="#x1-11300010">10<!--tex4ht:ref: sec:eclasses --></a>. It may also contain, in their own directory, support files +needed by these eclasses. +</p><!--l. 232--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">4.7 </span> <a + id="x1-420004.7"></a>The Metadata Directory</h3> +<!--l. 235--><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. 240--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">4.7.1 </span> <a + id="x1-430004.7.1"></a>The metadata cache</h4> +<!--l. 242--><p class="noindent" >The <span +class="ectt-1000">metadata/cache </span>directory may contain a cached form of all important ebuild metadata +variables. The contents of this directory are described in section <a +href="#x1-15900013">13<!--tex4ht:ref: metadata-cache --></a>. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 5</span><br /><a + id="x1-440005"></a>Profiles</h2> +<h3 class="sectionHead"><span class="titlemark">5.1 </span> <a + id="x1-450005.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-460005.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-470005.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-480005.2.2"></a>The eapi file</h4> +<!--l. 32--><p class="noindent" >A profile directory may contain an <span +class="ectt-1000">eapi </span>file. This file, if it exists, must contain a single line with +the name of an EAPI. This specifies the EAPI to use when handling the directory in question; a +package manager must not attempt to use any profile using a directory which requires an EAPI it +does not support. If no <span +class="ectt-1000">eapi </span>file is present, EAPI 0 shall be used. The EAPI is not inherited via +the <span +class="ectt-1000">parent </span>file. + + +</p><!--l. 38--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.3 </span> <a + id="x1-490005.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-500005.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-590005.3">5.3<!--tex4ht:ref: sec:profile-variables --></a>. +</p><!--l. 52--><p class="noindent" >The file itself is a line-based key-value format. Each line contains a single <span class="obeylines-h"><span class="verb"><span +class="ectt-1000">VAR="value"</span></span></span> entry, +where the value must be double quoted. A variable name must start with one of <span +class="ectt-1000">a-zA-Z </span>and may +contain <span +class="ectt-1000">a-zA-Z0-9_ </span>only. Additional syntax, which is a small subset of bash syntax, is allowed as +follows: +</p><!--l. 58--><p class="noindent" > + </p><ul> + <li class="compactitem">Variables to the right of the equals sign in the form <span +class="ectt-1000">${foo} </span>or <span +class="ectt-1000">$foo </span>are recognised and + expanded from variables previously set in this or earlier <span +class="ectt-1000">make.defaults </span>files. + </li> + <li class="compactitem">One logical line may be continued over multiple physical lines by escaping the newline + with a backslash. A quoted string may 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. 66--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.5 </span> <a + id="x1-510005.2.5"></a>Simple line-based files</h4> +<!--l. 68--><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. Once again, blank lines and those beginning with a # are +discarded. +</p><!--l. 73--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.6 </span> <a + id="x1-520005.2.6"></a>packages</h4> + + +<!--l. 74--><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 the atom forms part of the system set. A package +dependency specification on its own may also appear for legacy reasons, but should be ignored +when calculating the system set. +</p><!--l. 80--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.7 </span> <a + id="x1-530005.2.7"></a>packages.build</h4> +<!--l. 81--><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. 85--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.8 </span> <a + id="x1-540005.2.8"></a>package.mask</h4> +<!--l. 86--><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. +</p><!--l. 90--><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-350004.4">4.4<!--tex4ht:ref: profiles-package.mask --></a>). +</p> +<!--l. 93--><p class="noindent" ><span class="paragraphHead"><a + id="x1-550005.2.8"></a><span +class="ecbx-1000">Note:</span></span> +Portage currently treats <span +class="ectt-1000">profiles/package.mask </span>as being on the leftmost branch of the inherit +tree when it comes to <span +class="ectt-1000">-lines</span>. This behaviour may not be relied upon. +</p><!--l. 96--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.9 </span> <a + id="x1-560005.2.9"></a>package.provided</h4> +<!--l. 97--><p class="noindent" ><span +class="ectt-1000">package.provided </span>is used to tell the package manager that a certain package version should be +considered to be provided by the system regardless of whether it is actually installed. +Because it has severe adverse effects on USE-based and slot-based dependencies, its +use is strongly deprecated and package manager support must be regarded as purely +optional. +</p><!--l. 102--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.10 </span> <a + id="x1-570005.2.10"></a>package.use</h4> + + +<!--l. 103--><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. +</p><!--l. 109--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.2.11 </span> <a + id="x1-580005.2.11"></a>USE masking and forcing</h4> +<!--l. 111--><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. +</p><!--l. 116--><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. 121--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">B</span><span +class="small-caps">L</span><span +class="small-caps">E</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">K</span></span></span></p><!--l. 121--><p class="noindent" >In profile directories with an EAPI supporting stable masking, as listed in table <a +href="#x1-58001r1">5.1<!--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.</span> +<span +class="ectt-1000">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-690007.3.2">7.3.2<!--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. 130--><p class="noindent" ><a + id="x1-58001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 5.1: </span><span +class="content">Profile directory support for masking/forcing use flags in stable versions only</span></div><!--tex4ht:label?: x1-58001r1 --> +<div class="tabular"> + <table id="TBL-2" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-2-1g"><col +id="TBL-2-1" /><col +id="TBL-2-2" /><col +id="TBL-2-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports masking/forcing use flags in stable versions?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-2" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-2" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 146--><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-58002r8">8<!--tex4ht:ref: alg:use-masking --></a>. </p><div class="algorithm"> + + +<!--l. 150--><p class="noindent" ><a + id="x1-58002r8"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Algorithm 8: </span><span +class="content">USE masking logic</span></div><!--tex4ht:label?: x1-58002r8 --> +<div class="algorithmic"> +<a + id="x1-58003r84"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> let masked = false <a + id="x1-58004r85"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58005r86"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58006r87"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> let masked = true + </span><a + id="x1-58007r88"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58008r89"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> let masked = false + </span><a + id="x1-58009r90"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-58010r91"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58011r92"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58012r93"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:34.99146pt;"> </span> let masked = true + </span><a + id="x1-58013r94"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </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-58014r95"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:34.99146pt;"> </span> let masked = false + </span><a + id="x1-58015r96"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-58016r97"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-58017r98"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </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-58018r99"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58019r100"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">17:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:34.99146pt;"> </span> let masked = true + </span><a + id="x1-58020r101"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">18:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58021r102"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">19:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:34.99146pt;"> </span> let masked = false + </span><a + id="x1-58022r103"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">20:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-58023r104"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">21:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span><a + id="x1-58024r105"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">22:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58025r106"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">23:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58026r107"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">24:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58027r108"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">25:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:44.98901pt;"> </span> let masked = true + </span><a + id="x1-58028r109"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">26:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-58029r110"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">27:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:44.98901pt;"> </span> let masked = false + </span><a + id="x1-58030r111"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">28:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:34.99146pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-58031r112"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">29:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span> + + + </span><a + id="x1-58032r113"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">30:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-58033r114"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">31:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">for</span> +</div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 186--><p class="noindent" >Stable restrictions (“stable keyword in use” in Algorithm <a +href="#x1-58002r8">8<!--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-690007.3.2">7.3.2<!--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. 191--><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. 195--><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. 197--><p class="noindent" >A package manager may treat <span +class="ectt-1000">ARCH </span>values that are not the current architecture as being +masked. +</p> +<h3 class="sectionHead"><span class="titlemark">5.3 </span> <a + id="x1-590005.3"></a>Profile variables</h3> +<!--l. 4--><p class="noindent" >This section documents variables that have special meaning, or special behaviour, when defined in +a profile’s <span +class="ectt-1000">make.defaults </span>file. +</p><!--l. 7--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">5.3.1 </span> <a + id="x1-600005.3.1"></a>Incremental Variables</h4> +<!--l. 8--><p class="noindent" ><span +class="ecti-1000">Incremental </span>variables must stack between parent and child profiles in the following manner: +Beginning with the highest parent profile, tokenise the variable’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-60001r2">5.2<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as using profile-defined <span +class="ectt-1000">IUSE</span> +injection, the following variables must also be treated incrementally; otherwise, the following +variables may or may not be treated incrementally: + </p><ul> + <li class="compactitem"><span +class="ectt-1000">IUSE_IMPLICIT</span> + </li> + <li class="compactitem"><span +class="ectt-1000">USE_EXPAND_IMPLICIT</span> + </li> + <li class="compactitem"><span +class="ectt-1000">USE_EXPAND_UNPREFIXED</span></li></ul> + + +<!--l. 32--><p class="noindent" >Other variables, except where they affect only package-manager-specific functionality (such as +Portage’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. 37--><p class="noindent" ><a + id="x1-60001r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 5.2: </span><span +class="content">Profile-defined <span +class="ectt-1000">IUSE </span>injection for EAPIs</span></div><!--tex4ht:label?: x1-60001r2 --> +<div class="tabular"> + <table id="TBL-3" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-3-1g"><col +id="TBL-3-1" /><col +id="TBL-3-2" /><col +id="TBL-3-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-3-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-3-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports 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-3-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-2" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-3-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-2" +class="td11"> 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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">5.3.2 </span> <a + id="x1-610005.3.2"></a>Specific variables and their meanings</h4> +<!--l. 54--><p class="noindent" >The following variables have specific meanings when set in profiles. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">ARCH</span> </dt><dd +class="description">The system’s architecture. Must be a value listed in <span +class="ectt-1000">profiles/arch.list</span>; see + section <a +href="#x1-350004.4">4.4<!--tex4ht:ref: arch.list --></a> for more information. Must be equal to the primary <span +class="ectt-1000">KEYWORD </span>for this profile. + </dd><dt class="description"> +<span +class="ecbx-1000">CONFIG_PROTECT, CONFIG_PROTECT_MASK</span> </dt><dd +class="description">Contain + whitespace-delimited lists used to control the configuration file protection. Described + more fully in chapter <a +href="#x1-15400012.3.3">12.3.3<!--tex4ht:ref: sec:config-protect --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">USE</span> </dt><dd +class="description">Defines the list of default USE flags for this profile. Flags may be added or removed + by the user’s configuration. <span +class="ectt-1000">USE_EXPAND </span>values must not be specified in this way. + </dd><dt class="description"> +<span +class="ecbx-1000">USE_EXPAND</span> </dt><dd +class="description">Defines a list of variables which are to be treated incrementally and + whose contents are to be expanded into the USE variable as passed to ebuilds. See + section <a +href="#x1-11900011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for details. + </dd><dt class="description"> +<span +class="ecbx-1000">USE_EXPAND_UNPREFIXED</span> </dt><dd +class="description">Similar to <span +class="ectt-1000">USE_EXPAND</span>, but no prefix is used. If + the repository contains any package using an EAPI supporting profile-defined <span +class="ectt-1000">IUSE</span> + injection (see table <a +href="#x1-60001r2">5.2<!--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-11900011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for + details. + </dd><dt class="description"> +<span +class="ecbx-1000">USE_EXPAND_HIDDEN</span> </dt><dd +class="description">Contains a (possibly empty) subset of names from <span +class="ectt-1000">USE_</span> + <span +class="ectt-1000">EXPAND </span>and <span +class="ectt-1000">USE_EXPAND_UNPREFIXED</span>. The package manager may use this set as a hint + to avoid displaying uninteresting or unhelpful information to an end user. + </dd><dt class="description"> +<span +class="ecbx-1000">USE_EXPAND_IMPLICIT, IUSE_IMPLICIT</span> </dt><dd +class="description">Used to inject implicit values into + <span +class="ectt-1000">IUSE</span>. See section <a +href="#x1-11900011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for details.</dd></dl> +<!--l. 77--><p class="noindent" >In addition, for EAPIs listed in table <a +href="#x1-60001r2">5.2<!--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-11900011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>. +</p><!--l. 81--><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-620006"></a>Ebuild File Format</h2> +<!--l. 4--><p class="noindent" >The ebuild file format is in its basic form a subset of the format of a bash script. The interpreter is +assumed to be GNU bash, version 3.2 or later, see footnote <a +href="#x1-126001f5">5<!--tex4ht:ref: fn:bash3.2 --></a> on page <a +href="#x1-126001f5">189<!--tex4ht:ref: fn:bash3.2 --></a>. The file encoding must +be UTF-8 with Unix-style newlines. When sourced, the ebuild must define certain variables and +functions (see sections <a +href="#x1-630007">7<!--tex4ht:ref: sec:ebuild-vars --></a> and <a +href="#x1-930009">9<!--tex4ht:ref: sec:ebuild-functions --></a> for specific information), and must not call any external programs, +write anything to standard output or standard error, or modify the state of the system in any +way. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 7</span><br /><a + id="x1-630007"></a>Ebuild-defined Variables</h2> +<!--l. 4--><p class="noindent" ><span class="paragraphHead"><a + id="x1-640007"></a><span +class="ecbx-1000">Note:</span></span> +This section describes variables that may or must be defined by ebuilds. For variables that are +passed from the package manager to the ebuild, see section <a +href="#x1-11800011.1">11.1<!--tex4ht:ref: sec:ebuild-env-vars --></a>. +</p><!--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><!--l. 11--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">7.1 </span> <a + id="x1-650007.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-660007.2"></a>Mandatory Ebuild-defined Variables</h3> +<!--l. 25--><p class="noindent" >All ebuilds must define at least the following variables: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">DESCRIPTION</span> </dt><dd +class="description">A short human-readable description of the package’s purpose. May be + defined by an eclass. Must not be empty. + </dd><dt class="description"> +<span +class="ecbx-1000">SLOT</span> </dt><dd +class="description">The package’s slot. Must be a valid slot name, as per section <a +href="#x1-220003.1.3">3.1.3<!--tex4ht:ref: sec:slot-names --></a>. May be defined + by an eclass. Must not be empty. + <!--l. 33--><p class="noindent" >In EAPIs shown in table <a +href="#x1-83001r4">8.4<!--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-220003.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> +<!--l. 42--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">7.3 </span> <a + id="x1-670007.3"></a>Optional Ebuild-defined Variables</h3> + + +<!--l. 44--><p class="noindent" >Ebuilds may define any of the following variables: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">EAPI</span> </dt><dd +class="description">The EAPI. See below. + </dd><dt class="description"> +<span +class="ecbx-1000">HOMEPAGE</span> </dt><dd +class="description">The URI or URIs for a package’s homepage, including protocols. See + section <a +href="#x1-740008">8<!--tex4ht:ref: sec:dependencies --></a> for full syntax. + </dd><dt class="description"> +<span +class="ecbx-1000">SRC_URI</span> </dt><dd +class="description">A list of source URIs for the package. Valid protocols are <span +class="ectt-1000">http://</span>, <span +class="ectt-1000">https://</span>, + <span +class="ectt-1000">ftp:// </span>and <span +class="ectt-1000">mirror:// </span>(see section <a +href="#x1-370004.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-740008">8<!--tex4ht:ref: sec:dependencies --></a> for full + syntax. + </dd><dt class="description"> +<span +class="ecbx-1000">LICENSE</span> </dt><dd +class="description">The package’s license. Each text token must correspond to a tree “licenses/” + entry (see section <a +href="#x1-400004.5">4.5<!--tex4ht:ref: sec:licenses-dir --></a>). See section <a +href="#x1-740008">8<!--tex4ht:ref: sec:dependencies --></a> for full syntax. + </dd><dt class="description"> +<span +class="ecbx-1000">KEYWORDS</span> </dt><dd +class="description">A whitespace separated list of keywords for the ebuild. Each token must be + a valid keyword name, as per section <a +href="#x1-260003.1.6">3.1.6<!--tex4ht:ref: sec:keyword-names --></a>. See section <a +href="#x1-690007.3.2">7.3.2<!--tex4ht:ref: sec:keywords --></a> for full syntax. + </dd><dt class="description"> +<span +class="ecbx-1000">IUSE</span> </dt><dd +class="description">The <span +class="ectt-1000">USE </span>flags used by the ebuild. Any eclass that works with <span +class="ectt-1000">USE </span>flags must also set + <span +class="ectt-1000">IUSE</span>, listing only the variables used by that eclass. The package manager is responsible + for merging these values. See section <a +href="#x1-11900011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for discussion on which values must be + listed this variable. + <!--l. 65--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">I</span><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span><span +class="small-caps">S</span></span></span></p><!--l. 65--><p class="noindent" >In EAPIs shown in table <a +href="#x1-67001r1">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"> +<span +class="ecbx-1000">REQUIRED_USE</span> </dt><dd +class="description"> <!--l. 69--><p class="noindent" > + </p><!--l. 69--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">Q</span><span +class="small-caps">U</span><span +class="small-caps">I</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</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-890008.2.7">8.2.7<!--tex4ht:ref: sec:required-use --></a> for description and section <a +href="#x1-740008">8<!--tex4ht:ref: sec:dependencies --></a> for + full syntax. Only in EAPIs listed in table <a +href="#x1-67002r2">7.2<!--tex4ht:ref: tab:optional-vars-table --></a> as supporting <span +class="ectt-1000">REQUIRED_USE</span>. + </p></dd><dt class="description"> +<span +class="ecbx-1000">PROPERTIES</span> </dt><dd +class="description"> <!--l. 73--><p class="noindent" > + </p><!--l. 73--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">E</span><span +class="small-caps">S</span></span></span> Zero or more properties for this package. See section <a +href="#x1-910008.2.9">8.2.9<!--tex4ht:ref: sec:properties --></a> for value + meanings and section <a +href="#x1-740008">8<!--tex4ht:ref: sec:dependencies --></a> for full syntax. For EAPIs listed in table <a +href="#x1-67002r2">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"> +<span +class="ecbx-1000">RESTRICT</span> </dt><dd +class="description">Zero or more behaviour restrictions for this package. See section <a +href="#x1-900008.2.8">8.2.8<!--tex4ht:ref: sec:restrict --></a> for + value meanings and section <a +href="#x1-740008">8<!--tex4ht:ref: sec:dependencies --></a> for full syntax. + </dd><dt class="description"> +<span +class="ecbx-1000">DEPEND</span> </dt><dd +class="description">See section <a +href="#x1-740008">8<!--tex4ht:ref: sec:dependencies --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">RDEPEND</span> </dt><dd +class="description">See section <a +href="#x1-740008">8<!--tex4ht:ref: sec:dependencies --></a>. For some EAPIs, <span +class="ectt-1000">RDEPEND </span>has special behaviour for its value if + unset and when used with an eclass. See section <a +href="#x1-700007.3.3">7.3.3<!--tex4ht:ref: sec:rdepend-depend --></a> for details. + </dd><dt class="description"> +<span +class="ecbx-1000">PDEPEND</span> </dt><dd +class="description">See section <a +href="#x1-740008">8<!--tex4ht:ref: sec:dependencies --></a>.</dd></dl> +<div class="table"> + + +<!--l. 88--><p class="noindent" ><a + id="x1-67001r1"></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-67001r1 --> +<div class="tabular"> + <table id="TBL-4" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-4-1g"><col +id="TBL-4-1" /><col +id="TBL-4-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-4-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-4-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-4-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">IUSE </span><span +class="ecbx-1000">defaults?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-4-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-2" +class="td11"> 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"> <span +class="ectt-1000">1 </span></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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-4-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-4-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-4-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-4-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 105--><p class="noindent" ><a + id="x1-67002r2"></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-67002r2 --> +<div class="tabular"> + <table id="TBL-5" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-5-1g"><col +id="TBL-5-1" /><col +id="TBL-5-2" /><col +id="TBL-5-3" /></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">PROPERTIES</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-5-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-5-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-2" +class="td11"> Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-2" +class="td11"> Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-3" +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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-2" +class="td11"> Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-2" +class="td11"> Optionally </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-7-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-7-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-5-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-8-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-680007.3.1"></a>EAPI</h4> +<!--l. 126--><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. 129--><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. 134--><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. 137--><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> +<div class="verbatim" id="verbatim-6"> +^[ \t]*EAPI=([’"]?)([A-Za-z0-9+_.-]*)\1[ \t]*([ \t]#.*)?$</div> +<!--l. 143--><p class="nopar" > +</p><!--l. 145--><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. 152--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">7.3.2 </span> <a + id="x1-690007.3.2"></a>Keywords</h4> +<!--l. 155--><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 class="itemize1"> + <li class="itemize"><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="itemize"><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="itemize">No keyword: It is not known whether the package will work, or insufficient testing has + occurred. + </li> + <li class="itemize"><span +class="ectt-1000">-arch</span>: The package version will not work on the architecture.</li></ul> +<!--l. 168--><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. 171--><p class="noindent" >An empty <span +class="ectt-1000">KEYWORDS </span>variable indicates uncertain functionality on any architecture. +</p><!--l. 173--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">7.3.3 </span> <a + id="x1-700007.3.3"></a><span +class="ectt-1000">RDEPEND </span>value</h4> + <!--l. 176--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span></span></span></p><!--l. 176--><p class="noindent" >In EAPIs listed in table <a +href="#x1-70001r3">7.3<!--tex4ht:ref: tab:rdepend-depend-table --></a> as having <span +class="ectt-1000">RDEPEND=DEPEND</span>, if <span +class="ectt-1000">RDEPEND </span>is unset (but not if it is set to +an empty string) in an ebuild, 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. 181--><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. 187--><p class="noindent" ><a + id="x1-70001r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 7.3: </span><span +class="content">EAPIs with <span +class="ectt-1000">RDEPEND=DEPEND </span>Default</span></div><!--tex4ht:label?: x1-70001r3 --> +<div class="tabular"> + <table id="TBL-6" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-6-1g"><col +id="TBL-6-1" /><col +id="TBL-6-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-6-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-6-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-6-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">RDEPEND=DEPEND</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-6-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-2" +class="td11"> Yes </td></tr><tr + style="vertical-align:baseline;" id="TBL-6-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-2" +class="td11"> 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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-6-7-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-6-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">7.4 </span> <a + id="x1-710007.4"></a>Magic Ebuild-defined Variables</h3> +<!--l. 205--><p class="noindent" >The following variables must be defined by <span +class="ectt-1000">inherit </span>(see section <a +href="#x1-11400010.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"> +<span +class="ecbx-1000">ECLASS</span> </dt><dd +class="description">The current eclass, or unset if there is no current eclass. This is handled magically + by <span +class="ectt-1000">inherit </span>and must not be modified manually. + </dd><dt class="description"> +<span +class="ecbx-1000">INHERITED</span> </dt><dd +class="description">List of inherited eclass names. Again, this is handled magically by <span +class="ectt-1000">inherit</span>.</dd></dl> +<!--l. 214--><p class="noindent" ><span class="paragraphHead"><a + id="x1-720007.4"></a><span +class="ecbx-1000">Note:</span></span> +Thus, by extension of section <a +href="#x1-650007.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><!--l. 217--><p class="noindent" >The following are special variables defined by the package manager for internal use and may or +may not be exported to the ebuild environment: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">DEFINED_PHASES</span> </dt><dd +class="description"> <!--l. 221--><p class="noindent" > + </p><!--l. 221--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">S</span></span></span> A space separated arbitrarily ordered list of phase names + (e. g. <span +class="ectt-1000">configure setup unpack</span>) whose phase functions are defined by the ebuild or + an eclass inherited by the ebuild. If no phase functions are defined, a single hyphen + is used instead of an empty string. For EAPIs listed in table <a +href="#x1-73001r4">7.4<!--tex4ht:ref: tab:defined-phases-table --></a> as having optional + <span +class="ectt-1000">DEFINED_PHASES </span>support, package managers may not rely upon the metadata cache + having this variable defined, and must treat an empty string as “this information is not + available”.</p></dd></dl> +<!--l. 229--><p class="noindent" ><span class="paragraphHead"><a + id="x1-730007.4"></a><span +class="ecbx-1000">Note:</span></span> +Thus, by extension of section <a +href="#x1-650007.1">7.1<!--tex4ht:ref: sec:metadata-invariance --></a>, phase functions must not be defined based upon any variant +condition. +</p> +<div class="table"> + + +<!--l. 233--><p class="noindent" ><a + id="x1-73001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 7.4: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">DEFINED_PHASES</span></span></div><!--tex4ht:label?: x1-73001r4 --> +<div class="tabular"> + <table id="TBL-7" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-7-1g"><col +id="TBL-7-1" /><col +id="TBL-7-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-7-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-7-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-7-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">DEFINED_PHASES</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-7-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-2" +class="td11"> Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-2" +class="td11"> Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-2" +class="td11"> Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-2" +class="td11"> Optionally </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-7-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-8-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-740008"></a>Dependencies</h2> +<h3 class="sectionHead"><span class="titlemark">8.1 </span> <a + id="x1-750008.1"></a>Dependency Classes</h3> +<div class="table"> + + +<!--l. 7--><p class="noindent" ><a + id="x1-75001r1"></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-75001r1 --> +<div class="tabular"> + <table id="TBL-8" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-8-1g"><col +id="TBL-8-1" /><col +id="TBL-8-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-8-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-8-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Phase function</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">Satisfied dependency classes</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-8-2-"><td style="white-space:wrap; text-align:left;" id="TBL-8-2-1" +class="td11"> <!--l. 13--><p class="noindent" ><span +class="ectt-1000">pkg_pretend</span>, + <span +class="ectt-1000">pkg_</span> + <span +class="ectt-1000">setup</span>, <span +class="ectt-1000">pkg_info</span>, + <span +class="ectt-1000">pkg_nofetch</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-8-2-2" +class="td11"> <!--l. 13--><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-8-3-"><td style="white-space:wrap; text-align:left;" id="TBL-8-3-1" +class="td11"> <!--l. 14--><p class="noindent" ><span +class="ectt-1000">src_unpack</span>, <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">prepare</span>, <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">configure</span>, <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">compile</span>, + <span +class="ectt-1000">src_test</span>, + <span +class="ectt-1000">src_install</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-8-3-2" +class="td11"> <!--l. 14--><p class="noindent" ><span +class="ectt-1000">DEPEND</span> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-8-4-"><td style="white-space:wrap; text-align:left;" id="TBL-8-4-1" +class="td11"> <!--l. 15--><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_</span> + <span +class="ectt-1000">postrm</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-8-4-2" +class="td11"> <!--l. 15--><p class="noindent" ><span +class="ectt-1000">RDEPEND </span>(unless the particular dependency results in a circular + dependency, in which case it may be installed later) </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-8-5-"><td style="white-space:wrap; text-align:left;" id="TBL-8-5-1" +class="td11"> <!--l. 16--><p class="noindent" ><span +class="ectt-1000">pkg_config</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-8-5-2" +class="td11"> <!--l. 16--><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-8-6-"><td style="white-space:wrap; text-align:left;" id="TBL-8-6-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 21--><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 any of the + ebuild <span +class="ectt-1000">src_* </span>phase functions is executed. 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. 33--><p class="noindent" >Table <a +href="#x1-75001r1">8.1<!--tex4ht:ref: tab:phase-function-dependency-classes --></a> lists dependencies which must be satisfied before a particular phase function is +executed. +</p><!--l. 35--><p class="noindent" >In addition, <span +class="ectt-1000">SRC_URI</span>, <span +class="ectt-1000">HOMEPAGE</span>, <span +class="ectt-1000">RESTRICT</span>, <span +class="ectt-1000">PROPERTIES</span>, <span +class="ectt-1000">LICENSE </span>and <span +class="ectt-1000">REQUIRED_USE </span>use +dependency-style specifications to specify their values. +</p> +<h3 class="sectionHead"><span class="titlemark">8.2 </span> <a + id="x1-760008.2"></a>Dependency Specification Format</h3> +<!--l. 40--><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. 44--><p class="noindent" > + </p><ul> + <li class="compactitem">A package dependency specification. Permitted in <span +class="ectt-1000">DEPEND</span>, <span +class="ectt-1000">RDEPEND</span>, <span +class="ectt-1000">PDEPEND</span>. + </li> + <li class="compactitem">A URI, in the form <span +class="ectt-1000">proto://host/path</span>. Permitted in <span +class="ectt-1000">SRC_URI </span>and <span +class="ectt-1000">HOMEPAGE</span>. In + EAPIs listed in table <a +href="#x1-76001r2">8.2<!--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-920008.2.10">8.2.10<!--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_</span> + <span +class="ectt-1000">USE</span>. + </li> + <li class="compactitem">A simple string. Permitted in <span +class="ectt-1000">RESTRICT </span>and <span +class="ectt-1000">PROPERTIES</span>. + </li> + <li class="compactitem">An all-of group, which consists of an open parenthesis, followed by whitespace, + followed by zero or more of (a dependency item of any kind followed by whitespace), + followed by a close parenthesis. More formally: <span +class="ectt-1000">all-of ::= ’(’ whitespace (item</span> + <span +class="ectt-1000">whitespace)* ’)’</span>. Permitted in all specification style variables. + </li> + <li class="compactitem">An any-of group, which consists of the string <span +class="ectt-1000">||</span>, followed by whitespace, followed + by an open parenthesis, followed by whitespace, followed by zero or more of + (a dependency item of any kind followed by whitespace), followed by a close + parenthesis. More formally: <span +class="ectt-1000">any-of ::= ’||’ whitespace ’(’ whitespace (item</span> + <span +class="ectt-1000">whitespace)* ’)’</span>. Permitted in <span +class="ectt-1000">DEPEND</span>, <span +class="ectt-1000">RDEPEND</span>, <span +class="ectt-1000">PDEPEND</span>, <span +class="ectt-1000">LICENSE</span>, <span +class="ectt-1000">REQUIRED_USE</span>. + + + </li> + <li class="compactitem">An exactly-one-of group, which consists of the string <span +class="ectt-1000">^^</span>, followed by whitespace, + followed by an open parenthesis, followed by whitespace, followed by zero or + more of (a dependency item of any kind followed by whitespace), followed by + a close parenthesis. More formally: <span +class="ectt-1000">exactly-one-of ::= ’^^’ whitespace ’(’</span> + <span +class="ectt-1000">whitespace (item whitespace)* ’)’</span>. Permitted in <span +class="ectt-1000">REQUIRED_USE</span>. + </li> + <li class="compactitem"> <!--l. 69--><p class="noindent" > + </p><!--l. 69--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">A</span><span +class="small-caps">T</span>-<span +class="small-caps">M</span><span +class="small-caps">O</span><span +class="small-caps">S</span><span +class="small-caps">T</span>-<span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">E</span>-<span +class="small-caps">O</span><span +class="small-caps">F</span></span></span> An at-most-one-of group, which consists of the string <span +class="ectt-1000">??</span>, followed by whitespace, + followed by an open parenthesis, followed by whitespace, followed by zero or + more of (a dependency item of any kind followed by whitespace), followed by + a close parenthesis. More formally: <span +class="ectt-1000">exactly-one-of ::= ’??’ whitespace ’(’</span> + <span +class="ectt-1000">whitespace (item whitespace)* ’)’</span>. Permitted in <span +class="ectt-1000">REQUIRED_USE </span>in EAPIs listed + in table <a +href="#x1-76002r3">8.3<!--tex4ht:ref: tab:at-most-one-of-table --></a> as supporting <span +class="ectt-1000">REQUIRED_USE ??</span> groups. + </p></li> + <li class="compactitem">A use-conditional group, which consists of an optional exclamation mark, + followed by a use flag name, followed by a question mark, followed by + whitespace, followed by an open parenthesis, followed by whitespace, followed + by zero or more of (a dependency item of any kind followed by whitespace), + followed by a close parenthesis. More formally: <span +class="ectt-1000">use-conditional ::= ’!’?</span> + <span +class="ectt-1000">flag-name ’?’ whitespace ’(’ whitespace (item whitespace)* ’)’</span>. Permitted + in all specification style variables.</li></ul> +<!--l. 83--><p class="noindent" >In particular, note that whitespace is not optional. +</p> +<div class="table"> + + +<!--l. 86--><p class="noindent" ><a + id="x1-76001r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.2: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">SRC_URI </span>arrows</span></div><!--tex4ht:label?: x1-76001r2 --> +<div class="tabular"> + <table id="TBL-9" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-9-1g"><col +id="TBL-9-1" /><col +id="TBL-9-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-9-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-9-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">SRC_URI </span><span +class="ecbx-1000">arrows?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-9-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-2" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-9-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-2" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-9-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-2" +class="td11"> 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"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-9-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-9-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-9-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 103--><p class="noindent" ><a + id="x1-76002r3"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.3: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">REQUIRED_USE ??</span> groups</span></div><!--tex4ht:label?: x1-76002r3 --> +<div class="tabular"> + <table id="TBL-10" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-10-1g"><col +id="TBL-10-1" /><col +id="TBL-10-2" /></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">REQUIRED_USE ??</span><span +class="ecbx-1000"> groups?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-10-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-2" +class="td11"> 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"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-2" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-10-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-8-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-770008.2.1"></a>All-of Dependency Specifications</h4> +<!--l. 121--><p class="noindent" >In an all-of group, all of the child elements must be matched. +</p><!--l. 123--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.2.2 </span> <a + id="x1-780008.2.2"></a>Use-conditional Dependency Specifications</h4> +<!--l. 125--><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. 128--><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-11900011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a>. +</p><!--l. 131--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.2.3 </span> <a + id="x1-790008.2.3"></a>Any-of Dependency Specifications</h4> +<!--l. 133--><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. 137--><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. 140--><p class="noindent" >An empty any-of group counts as being matched. +</p><!--l. 142--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.2.4 </span> <a + id="x1-800008.2.4"></a>Exactly-one-of Dependency Specifications</h4> +<!--l. 144--><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. 148--><p class="noindent" >In an exactly-one-of group, exactly one immediate child element must be matched. +</p><!--l. 150--><p class="noindent" >An empty exactly-one-of group counts as being matched. +</p><!--l. 152--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.2.5 </span> <a + id="x1-810008.2.5"></a>At-most-one-of Dependency Specifications</h4> + + +<!--l. 154--><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. 158--><p class="noindent" >In an at-most-one-of group, at most one immediate child element must be matched. +</p><!--l. 160--><p class="noindent" >An empty at-most-one-of group counts as being matched. +</p><!--l. 162--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.2.6 </span> <a + id="x1-820008.2.6"></a>Package Dependency Specifications</h4> +<!--l. 164--><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. 168--><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-840008.2.6.1">8.2.6.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. 173--><p class="noindent" >In EAPIs shown in table <a +href="#x1-83001r4">8.4<!--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-860008.2.6.3">8.2.6.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. 178--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span></span></span></p><!--l. 178--><p class="noindent" >In EAPIs shown in table <a +href="#x1-83002r5">8.5<!--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-870008.2.6.4">8.2.6.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. 183--><p class="noindent" ><span class="paragraphHead"><a + id="x1-830008.2.6"></a><span +class="ecbx-1000">Note:</span></span> +Order is important. The slot restriction must come before use dependencies. +</p> +<div class="table"> + + +<!--l. 186--><p class="noindent" ><a + id="x1-83001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.4: </span><span +class="content">Support for <span +class="ectt-1000">SLOT </span>dependencies and sub-slots in EAPIs</span></div><!--tex4ht:label?: x1-83001r4 --> +<div class="tabular"> + <table id="TBL-11" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-11-1g"><col +id="TBL-11-1" /><col +id="TBL-11-2" /><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">SLOT </span><span +class="ecbx-1000">dependencies?</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 sub-slots?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-11-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-2-2" +class="td11"> No </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"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-2" +class="td11"> Named only </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-3-3" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-2" +class="td11"> Named only </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-4-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-2" +class="td11"> Named only </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-5-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-2" +class="td11"> Named only </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-6-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-11-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-11-7-2" +class="td11"> Named and operator </td><td style="white-space:nowrap; text-align:left;" id="TBL-11-7-3" +class="td11"> Yes </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-11-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-11-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 205--><p class="noindent" ><a + id="x1-83002r5"></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">USE </span>dependencies</span></div><!--tex4ht:label?: x1-83002r5 --> +<div class="tabular"> + <table id="TBL-12" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-12-1g"><col +id="TBL-12-1" /><col +id="TBL-12-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-12-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-12-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-12-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">USE </span><span +class="ecbx-1000">dependencies?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-12-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-2-2" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-12-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-3-2" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-12-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-4-2" +class="td11"> 2-style </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-12-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-5-2" +class="td11"> 2-style </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-12-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-6-2" +class="td11"> 4-style </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-12-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-12-7-2" +class="td11"> 4-style </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-12-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-12-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">8.2.6.1 </span> <a + id="x1-840008.2.6.1"></a>Operators</h5> +<!--l. 224--><p class="noindent" >The following operators are available: + </p><dl class="description"><dt class="description"> +<span +class="ectt-1000"><</span> </dt><dd +class="description">Strictly less than the specified version. + </dd><dt class="description"> +<span +class="ectt-1000"><=</span> </dt><dd +class="description">Less than or equal to the specified version. + </dd><dt class="description"> +<span +class="ectt-1000">=</span> </dt><dd +class="description">Exactly equal to the specified version. Special exception: if the version specified has an + asterisk immediately following it, a string prefix comparison is used instead. When an + asterisk is used, the specification must remain valid if the asterisk were removed. (An + asterisk used with any other operator is illegal.) + </dd><dt class="description"> +<span +class="ectt-1000">~</span> </dt><dd +class="description">Equal to the specified version, except the revision part of the matching package may be + greater than the revision part of the specified version (<span +class="ectt-1000">-r0 </span>is assumed if no revision is + explicitly stated). + </dd><dt class="description"> +<span +class="ectt-1000">>=</span> </dt><dd +class="description">Greater than or equal to the specified version. + </dd><dt class="description"> +<span +class="ectt-1000">></span> </dt><dd +class="description">Strictly greater than the specified version.</dd></dl> +<!--l. 240--><p class="noindent" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">8.2.6.2 </span> <a + id="x1-850008.2.6.2"></a>Block Operator</h5> +<!--l. 242--><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, with +the following exceptions: +</p><!--l. 247--><p class="noindent" > + </p><ul> + <li class="compactitem">Blocks on a package provided exclusively by the ebuild do not count. + </li> + <li class="compactitem">Weak blocks on the package version of the ebuild itself do not count.</li></ul> + <!--l. 251--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span>-<span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">T</span><span +class="small-caps">H</span></span></span></p><!--l. 251--><p class="noindent" >There are two strengths of block: weak and strong. A weak block may be ignored by the package +manager, so long as any blocked package will be uninstalled later on. A strong block must not be +ignored. The mapping from one or two exclamation marks to strength is described in +table <a +href="#x1-85001r6">8.6<!--tex4ht:ref: tab:bang-strength-table --></a>. +</p> +<div class="table"> + + +<!--l. 257--><p class="noindent" ><a + id="x1-85001r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 8.6: </span><span +class="content">Exclamation mark strengths for EAPIs</span></div><!--tex4ht:label?: x1-85001r6 --> +<div class="tabular"> + <table id="TBL-13" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-13-1g"><col +id="TBL-13-1" /><col +id="TBL-13-2" /><col +id="TBL-13-3" /></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">!</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-13-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-13-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-2" +class="td11"> Unspecified </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-2-3" +class="td11"> Forbidden </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-2" +class="td11"> Unspecified </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-3-3" +class="td11"> Forbidden </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-2" +class="td11"> Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-4-3" +class="td11"> Strong </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-2" +class="td11"> Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-5-3" +class="td11"> Strong </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-6-2" +class="td11"> Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-6-3" +class="td11"> Strong </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-13-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-13-7-2" +class="td11"> Weak </td><td style="white-space:nowrap; text-align:left;" id="TBL-13-7-3" +class="td11"> Strong </td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-13-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-13-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">8.2.6.3 </span> <a + id="x1-860008.2.6.3"></a>Slot Dependencies</h5> + <!--l. 277--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">L</span><span +class="small-caps">O</span><span +class="small-caps">T</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span></span></span></p><!--l. 277--><p class="noindent" >A named slot dependency consists of a colon followed by a slot name. A specification with a named +slot dependency matches only if the slot of the matched package is equal to the slot specified. If the +slot of the package to match cannot be determined (e. g. because it is not a supported <span +class="ectt-1000">EAPI</span>), the +match is treated as unsuccessful. + </p><!--l. 282--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">U</span><span +class="small-caps">B</span>-<span +class="small-caps">S</span><span +class="small-caps">L</span><span +class="small-caps">O</span><span +class="small-caps">T</span></span></span></p><!--l. 282--><p class="noindent" >In EAPIs shown in table <a +href="#x1-83001r4">8.4<!--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. 286--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">L</span><span +class="small-caps">O</span><span +class="small-caps">T</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">A</span><span +class="small-caps">T</span><span +class="small-caps">O</span><span +class="small-caps">R</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span></span></span></p><!--l. 286--><p class="noindent" >An operator slot dependency consists of a colon followed by one of the following operators: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">*</span> </dt><dd +class="description">Indicates that any slot value is acceptable. In addition, for runtime dependencies, indicates + that the package will not break if the matched package is uninstalled and replaced by + a different matching package in a different slot. + </dd><dt class="description"> +<span +class="ecbx-1000">=</span> </dt><dd +class="description">Indicates that any slot value is acceptable. In addition, for runtime dependencies, indicates + that the package will break unless a matching package with slot and sub-slot equal to + the slot and sub-slot of the best installed version at the time the package was installed + is available. + </dd><dt class="description"> +<span +class="ecbx-1000">slot=</span> </dt><dd +class="description">Indicates that only a specific slot value is acceptable, and otherwise behaves + identically to the plain equals slot operator.</dd></dl> +<!--l. 300--><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. 307--><p class="noindent" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">8.2.6.4 </span> <a + id="x1-870008.2.6.4"></a>2-Style and 4-Style Use Dependencies</h5> +<!--l. 310--><p class="noindent" >A 2-style or 4-style use dependency consists of one of the following: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">[opt]</span> </dt><dd +class="description">The flag must be enabled. + </dd><dt class="description"> +<span +class="ecbx-1000">[opt=]</span> </dt><dd +class="description">The flag must be enabled if the flag is enabled for the package with the dependency, + or disabled otherwise. + </dd><dt class="description"> +<span +class="ecbx-1000">[!opt=]</span> </dt><dd +class="description">The flag must be disabled if the flag is enabled for the package with the dependency, + or enabled otherwise. + + + </dd><dt class="description"> +<span +class="ecbx-1000">[opt?]</span> </dt><dd +class="description">The flag must be enabled if the flag is enabled for the package with the dependency. + </dd><dt class="description"> +<span +class="ecbx-1000">[!opt?]</span> </dt><dd +class="description">The flag must be disabled if the use flag is disabled for the package with the + dependency. + </dd><dt class="description"> +<span +class="ecbx-1000">[-opt]</span> </dt><dd +class="description">The flag must be disabled.</dd></dl> +<!--l. 325--><p class="noindent" >Multiple requirements may be combined using commas, e. g. <span +class="ectt-1000">[first,-second,third?]</span>. +</p><!--l. 327--><p class="noindent" >When multiple requirements are specified, all must match for a successful match. + </p><!--l. 329--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span><span +class="small-caps">S</span></span></span></p><!--l. 329--><p class="noindent" >In a 4-style use dependency, the flag name may immediately be followed by a <span +class="ecti-1000">default </span>specified by +either <span +class="ectt-1000">(+) </span>or <span +class="ectt-1000">(-)</span>. The former indicates that, when applying the use dependency to a +package that does not have the flag in question in <span +class="ectt-1000">IUSE_REFERENCEABLE</span>, the package +manager shall behave as if the flag were present and enabled; the latter, present and +disabled. +</p><!--l. 335--><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. 338--><p class="noindent" ><span class="paragraphHead"><a + id="x1-880008.2.6.4"></a><span +class="ecbx-1000">Note:</span></span> +By extension of the above, a default that could reference an ebuild using an EAPI not supporting +profile <span +class="ectt-1000">IUSE </span>injections cannot rely upon any particular behaviour for flags that would not have to +be part of <span +class="ectt-1000">IUSE</span>. +</p><!--l. 342--><p class="noindent" >It is an error for an ebuild to use a conditional use dependency when that ebuild does not have the +flag in <span +class="ectt-1000">IUSE_EFFECTIVE</span>. +</p><!--l. 345--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.2.7 </span> <a + id="x1-890008.2.7"></a>Use State Constraints</h4> +<!--l. 347--><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. 351--><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. 354--><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. 356--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.2.8 </span> <a + id="x1-900008.2.8"></a>Restrict</h4> +<!--l. 359--><p class="noindent" >The following tokens are permitted inside <span +class="ectt-1000">RESTRICT</span>: + + + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">mirror</span> </dt><dd +class="description">The package’s <span +class="ectt-1000">SRC_URI </span>entries may not be mirrored, and mirrors should not be + checked when fetching. + </dd><dt class="description"> +<span +class="ecbx-1000">fetch</span> </dt><dd +class="description">The package’s <span +class="ectt-1000">SRC_URI </span>entries may not be downloaded automatically. If entries are + not available, <span +class="ectt-1000">pkg_nofetch </span>is called. + </dd><dt class="description"> +<span +class="ecbx-1000">strip</span> </dt><dd +class="description">No stripping of debug symbols from files to be installed may be performed. + </dd><dt class="description"> +<span +class="ecbx-1000">userpriv</span> </dt><dd +class="description">The package manager may not drop root privileges when building the package. + </dd><dt class="description"> +<span +class="ecbx-1000">test</span> </dt><dd +class="description">The <span +class="ectt-1000">src_test </span>phase must not be run. + </dd><dt class="description"> +<span +class="ecbx-1000">sandbox</span> </dt><dd +class="description">The <span +class="ectt-1000">sandbox </span>tool must not be used when building the package.</dd></dl> +<!--l. 372--><p class="noindent" >Package managers may recognise other tokens, but ebuilds may not rely upon them being +supported. +</p><!--l. 374--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.2.9 </span> <a + id="x1-910008.2.9"></a>Properties</h4> +<!--l. 377--><p class="noindent" >The following tokens are permitted inside <span +class="ectt-1000">PROPERTIES</span>: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">interactive</span> </dt><dd +class="description">The package may require interaction with the user via the tty.</dd></dl> +<!--l. 383--><p class="noindent" >Ebuilds may not rely upon any token being supported. +</p><!--l. 385--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">8.2.10 </span> <a + id="x1-920008.2.10"></a>SRC_URI</h4> +<!--l. 388--><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. 392--><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. 395--><p class="noindent" >The special <span +class="ectt-1000">mirror:// </span>protocol must be supported. See section <a +href="#x1-370004.4.2">4.4.2<!--tex4ht:ref: sec:thirdpartymirrors --></a> for mirror details. +</p><!--l. 398--><p class="noindent" >If a simple filename rather than a full URI is provided, the package manager can only use mirrors +to download the file. +</p><!--l. 401--><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-900008.2.8">8.2.8<!--tex4ht:ref: sec:restrict --></a> for details. + </p><!--l. 404--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">I</span>-<span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">W</span><span +class="small-caps">S</span></span></span></p><!--l. 404--><p class="noindent" >In EAPIs supporting arrows, if an arrow is used, the filename used when saving to <span +class="ectt-1000">DISTDIR </span>shall +instead be the name on the right of the arrow. When consulting mirrors (except for those explicitly +listed on the left of the arrow, if <span +class="ectt-1000">mirror:// </span>is used), the filename to the right of the arrow shall be +requested instead of the filename in the URI. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 9</span><br /><a + id="x1-930009"></a>Ebuild-defined Functions</h2> +<h3 class="sectionHead"><span class="titlemark">9.1 </span> <a + id="x1-940009.1"></a>List of Functions</h3> +<!--l. 7--><p class="noindent" >The following is a list of functions that an ebuild, or eclass, may define, and which will be called by +the package manager as part of the build and/or install process. In all cases the package manager +must provide a default implementation of these functions; unless otherwise stated this must be a +no-op. Most functions must assume only that they have write access to the package’s working +directory (the <span +class="ectt-1000">WORKDIR </span>environment variable; see section <a +href="#x1-118001r1">11.1<!--tex4ht:ref: env-var-WORKDIR --></a>), and the temporary directory +<span +class="ectt-1000">T</span>; exceptions are noted below. All functions may assume that they have read access +to all system libraries, binaries and configuration files that are accessible to normal +users. +</p><!--l. 16--><p class="noindent" >The environment for functions run outside of the build sequence (that is, <span +class="ectt-1000">pkg_config</span>, <span +class="ectt-1000">pkg_info</span>, +<span +class="ectt-1000">pkg_prerm </span>and <span +class="ectt-1000">pkg_postrm</span>) must be the environment used for the build of the package, not the +current configuration. +</p><!--l. 20--><p class="noindent" >Ebuilds must not call nor assume the existence of any phase functions. +</p><!--l. 22--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.1 </span> <a + id="x1-950009.1.1"></a>Initial Working Directories</h4> +<!--l. 25--><p class="noindent" >Some functions may assume that their initial working directory is set to a particular location; these +are noted below. If no initial working directory is mandated, it may be set to anything and the +ebuild must not rely upon a particular location for it. The ebuild <span +class="ecti-1000">may </span>assume that the initial +working directory for any phase is a trusted location that may only be written to by a privileged +user and group. + </p><!--l. 31--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span>-<span +class="small-caps">W</span><span +class="small-caps">O</span><span +class="small-caps">R</span><span +class="small-caps">K</span><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">R</span>-<span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span></span></span></p><!--l. 31--><p class="noindent" >Some functions are described as having an initial working directory of <span +class="ectt-1000">S </span>with an error or fallback +to <span +class="ectt-1000">WORKDIR</span>. For EAPIs listed in table <a +href="#x1-95001r1">9.1<!--tex4ht:ref: tab:s-fallback-table --></a> as having the fallback, this means that if <span +class="ectt-1000">S </span>is not a +directory before the start of the phase function, the initial working directory shall be <span +class="ectt-1000">WORKDIR</span> +instead. For EAPIs where it is a conditional error, if <span +class="ectt-1000">S </span>is not a directory before the start of the +phase function, it is a fatal error, unless all of the following conditions are true, in which case the +fallback to <span +class="ectt-1000">WORKDIR </span>is used: +</p><!--l. 40--><p class="noindent" > + </p><ul> + <li class="compactitem">The <span +class="ectt-1000">A </span>variable contains no items. + </li> + <li class="compactitem">The phase function in question is not in <span +class="ectt-1000">DEFINED_PHASES</span>. + </li> + <li class="compactitem">None of the phase functions <span +class="ectt-1000">unpack</span>, <span +class="ectt-1000">prepare</span>, <span +class="ectt-1000">configure</span>, <span +class="ectt-1000">compile </span>or <span +class="ectt-1000">install</span>, if + supported by the EAPI in question and occurring prior to the phase about to be + executed, are in <span +class="ectt-1000">DEFINED_PHASES</span>.</li></ul> +<div class="table"> + + +<!--l. 48--><p class="noindent" ><a + id="x1-95001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.1: </span><span +class="content">EAPIs with <span +class="ectt-1000">S </span>to <span +class="ectt-1000">WORKDIR </span>fallbacks</span></div><!--tex4ht:label?: x1-95001r1 --> +<div class="tabular"> + <table id="TBL-14" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-14-1g"><col +id="TBL-14-1" /><col +id="TBL-14-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-14-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-14-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-14-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">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-14-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-2-2" +class="td11"> Always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-3-2" +class="td11"> Always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-4-2" +class="td11"> Always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-5-2" +class="td11"> Always </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-6-2" +class="td11"> Conditional error </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-14-7-2" +class="td11"> Conditional error </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-14-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-14-8-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-960009.1.2"></a>pkg_pretend</h4> + <!--l. 67--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">K</span><span +class="small-caps">G</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span></span></span></p><!--l. 67--><p class="noindent" >The <span +class="ectt-1000">pkg_pretend </span>function is only called for EAPIs listed in table <a +href="#x1-96001r2">9.2<!--tex4ht:ref: tab:pkg-pretend-table --></a> as supporting +it. +</p><!--l. 70--><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. 75--><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. 80--><p class="noindent" ><span +class="ectt-1000">pkg_pretend </span>must not write to the filesystem. +</p> +<div class="table"> + + +<!--l. 83--><p class="noindent" ><a + id="x1-96001r2"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.2: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">pkg_pretend</span></span></div><!--tex4ht:label?: x1-96001r2 --> +<div class="tabular"> + <table id="TBL-15" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-15-1g"><col +id="TBL-15-1" /><col +id="TBL-15-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-15-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-15-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-15-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">pkg_pretend</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-15-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-2-2" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-15-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-3-2" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-4-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-5-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-6-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-15-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-15-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-15-8-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-970009.1.3"></a>pkg_setup</h4> +<!--l. 101--><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. 105--><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. 108--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.4 </span> <a + id="x1-980009.1.4"></a>src_unpack</h4> + <!--l. 111--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span></span></span></p><!--l. 111--><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. 115--><p class="noindent" >The initial working directory must be <span +class="ectt-1000">WORKDIR</span>, and the default implementation used when the +ebuild lacks the <span +class="ectt-1000">src_unpack </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-7"> +src_unpack() { + <br />    if [[ -n ${A} ]]; then + <br />        unpack ${A} + <br />    fi + <br />}</div> +<!--l. 124--><p class="nopar" > +</p><!--l. 126--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.5 </span> <a + id="x1-990009.1.5"></a>src_prepare</h4> + <!--l. 129--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">E</span></span></span></p><!--l. 129--><p class="noindent" >The <span +class="ectt-1000">src_prepare </span>function is only called for EAPIs listed in table <a +href="#x1-99001r3">9.3<!--tex4ht:ref: tab:src-prepare-table --></a> as supporting +it. +</p><!--l. 132--><p class="noindent" >The <span +class="ectt-1000">src_prepare </span>function can be used for post-unpack source preparation. The default +implementation does nothing. +</p><!--l. 135--><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-950009.1.1">9.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. +</p> +<div class="table"> + + +<!--l. 139--><p class="noindent" ><a + id="x1-99001r3"></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">src_prepare</span></span></div><!--tex4ht:label?: x1-99001r3 --> +<div class="tabular"> + <table id="TBL-16" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-16-1g"><col +id="TBL-16-1" /><col +id="TBL-16-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-16-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-16-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-16-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">src_prepare</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-16-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-2-2" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-16-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-3-2" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-4-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-5-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-6-2" +class="td11"> Yes </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"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-16-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-16-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-16-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">9.1.6 </span> <a + id="x1-1000009.1.6"></a>src_configure</h4> + <!--l. 158--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">G</span><span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">E</span></span></span></p><!--l. 158--><p class="noindent" >The <span +class="ectt-1000">src_configure </span>function is only called for EAPIs listed in table <a +href="#x1-100001r4">9.4<!--tex4ht:ref: tab:src-configure-table --></a> as supporting +it. +</p><!--l. 161--><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-950009.1.1">9.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. +</p><!--l. 164--><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: + + +</p> +<div class="verbatim" id="verbatim-8"> +src_configure() { + <br />    if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then + <br />        econf + <br />    fi + <br />}</div> +<!--l. 173--><p class="nopar" > +</p> +<div class="table"> + + +<!--l. 176--><p class="noindent" ><a + id="x1-100001r4"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.4: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">src_configure</span></span></div><!--tex4ht:label?: x1-100001r4 --> +<div class="tabular"> + <table id="TBL-17" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-17-1g"><col +id="TBL-17-1" /><col +id="TBL-17-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-17-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-17-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-17-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">src_configure</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-17-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-2-2" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-17-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-3-2" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-17-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-4-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-17-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-5-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-17-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-6-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-17-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-17-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-17-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-17-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">9.1.7 </span> <a + id="x1-1010009.1.7"></a>src_compile</h4> + <!--l. 195--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span></span></span></p><!--l. 195--><p class="noindent" >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. 198--><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-950009.1.1">9.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. + </p><!--l. 201--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-0</span></span></p><!--l. 201--><p class="noindent" >For EAPIs listed in table <a +href="#x1-101001r5">9.5<!--tex4ht:ref: tab:src-compile-table --></a> as using format 0, the default implementation used when the ebuild +lacks the <span +class="ectt-1000">src_compile </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-9"> +src_compile() { + <br />    if [[ -x ./configure ]]; then + <br />        econf + <br />    fi + <br />    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + <br />        emake || die "emake failed" + <br />    fi + <br />}</div> +<!--l. 214--><p class="nopar" > + </p><!--l. 216--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-1</span></span></p><!--l. 216--><p class="noindent" >For EAPIs listed in table <a +href="#x1-101001r5">9.5<!--tex4ht:ref: tab:src-compile-table --></a> as using format 1, the default implementation used when the ebuild +lacks the <span +class="ectt-1000">src_compile </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-10"> +src_compile() { + <br />    if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then + <br />        econf + <br />    fi + <br />    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + <br />        emake || die "emake failed" + <br />    fi + <br />}</div> +<!--l. 229--><p class="nopar" > + </p><!--l. 231--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-2</span></span></p><!--l. 231--><p class="noindent" >For EAPIs listed in table <a +href="#x1-101001r5">9.5<!--tex4ht:ref: tab:src-compile-table --></a> as using format 2, the default implementation used when the ebuild +lacks the <span +class="ectt-1000">src_compile </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-11"> +src_compile() { + <br />    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + <br />        emake || die "emake failed" + <br />    fi + <br />}</div> +<!--l. 241--><p class="nopar" > +</p> +<div class="table"> + + +<!--l. 244--><p class="noindent" ><a + id="x1-101001r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.5: </span><span +class="content"><span +class="ectt-1000">src_compile </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-101001r5 --> +<div class="tabular"> + <table id="TBL-18" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-18-1g"><col +id="TBL-18-1" /><col +id="TBL-18-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-18-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-18-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-18-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Format</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-18-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-2-2" +class="td11"> 0 </td></tr><tr + style="vertical-align:baseline;" id="TBL-18-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-3-2" +class="td11"> 1</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-4-2" +class="td11"> 2 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-5-2" +class="td11"> 2 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-6-2" +class="td11"> 2 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-18-7-2" +class="td11"> 2 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-18-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-18-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">9.1.8 </span> <a + id="x1-1020009.1.8"></a>src_test</h4> +<!--l. 263--><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. 266--><p class="noindent" >The initial working directory must be <span +class="ectt-1000">S </span>if that exists, falling back to <span +class="ectt-1000">WORKDIR </span>otherwise. The +default implementation used when the ebuild lacks the <span +class="ectt-1000">src_test </span>function must, if tests are +enabled, run <span +class="ectt-1000">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. 272--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span><span +class="small-caps">E</span><span +class="small-caps">L</span>-<span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">S</span></span></span></p><!--l. 272--><p class="noindent" >For EAPIs listed in table <a +href="#x1-102001r6">9.6<!--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. 275--><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-900008.2.8">8.2.8<!--tex4ht:ref: sec:restrict --></a>. It may be disabled by +user too, using a PM-specific mechanism. +</p> +<div class="table"> + + +<!--l. 279--><p class="noindent" ><a + id="x1-102001r6"></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_test </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-102001r6 --> +<div class="tabular"> + <table id="TBL-19" class="tabular" +cellspacing="0" cellpadding="0" +><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 parallel tests?</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"> <span +class="ectt-1000">0 </span></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"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-3-2" +class="td11"> No</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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-4-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-5-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-6-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-19-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-19-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-19-8-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-1030009.1.9"></a>src_install</h4> + <!--l. 298--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span></span></span></p><!--l. 298--><p class="noindent" >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. 301--><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-950009.1.1">9.1.1<!--tex4ht:ref: sec:s-to-workdir-fallback --></a>. + </p><!--l. 304--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span>-4</span></span></p><!--l. 304--><p class="noindent" >For EAPIs listed in table <a +href="#x1-103001r7">9.7<!--tex4ht:ref: tab:src-install-table --></a> as using format 4, the default implementation used when the ebuild +lacks the <span +class="ectt-1000">src_install </span>function shall behave as: + + +</p> +<div class="verbatim" id="verbatim-12"> +src_install() { + <br />    if [[ -f Makefile ]] || [[ -f GNUmakefile ]] || [[ -f makefile ]]; then + <br />        emake DESTDIR="${D}" install + <br />    fi + <br /> + <br />    if ! declare -p DOCS >/dev/null 2>&1 ; then + <br />        local d + <br />        for d in README* ChangeLog AUTHORS NEWS TODO CHANGES \ + <br />                THANKS BUGS FAQ CREDITS CHANGELOG ; do + <br />            [[ -s "${d}" ]] && dodoc "${d}" + <br />        done + <br />    elif declare -p DOCS | grep -q ’^declare -a ’ ; then + <br />        dodoc "${DOCS[@]}" + <br />    else + <br />        dodoc ${DOCS} + <br />    fi + <br />}</div> +<!--l. 326--><p class="nopar" > +</p><!--l. 328--><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. 332--><p class="noindent" ><a + id="x1-103001r7"></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_install </span>behaviour for EAPIs</span></div><!--tex4ht:label?: x1-103001r7 --> +<div class="tabular"> + <table id="TBL-20" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-20-1g"><col +id="TBL-20-1" /><col +id="TBL-20-2" /></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">Format</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-20-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-2-2" +class="td11"> no-op </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-3-2" +class="td11"> no-op </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-4-2" +class="td11"> no-op </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-5-2" +class="td11"> no-op </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-6-2" +class="td11"> 4 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-20-7-2" +class="td11"> 4 </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-20-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-20-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">9.1.10 </span> <a + id="x1-1040009.1.10"></a>pkg_preinst</h4> +<!--l. 351--><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. 355--><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. 358--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.11 </span> <a + id="x1-1050009.1.11"></a>pkg_postinst</h4> +<!--l. 361--><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. 365--><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. 368--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.12 </span> <a + id="x1-1060009.1.12"></a>pkg_prerm</h4> +<!--l. 371--><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. 375--><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. 378--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.13 </span> <a + id="x1-1070009.1.13"></a>pkg_postrm</h4> +<!--l. 381--><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. 385--><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. 388--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.14 </span> <a + id="x1-1080009.1.14"></a>pkg_config</h4> +<!--l. 391--><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. 394--><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. 396--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.15 </span> <a + id="x1-1090009.1.15"></a>pkg_info</h4> + <!--l. 399--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">K</span><span +class="small-caps">G</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">O</span></span></span></p><!--l. 399--><p class="noindent" >The <span +class="ectt-1000">pkg_info </span>function may be called by the package manager when displaying information about +an installed package. In EAPIs listed in table <a +href="#x1-109001r8">9.8<!--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. 405--><p class="noindent" ><span +class="ectt-1000">pkg_info </span>must not write to the filesystem. +</p> +<div class="table"> + + +<!--l. 408--><p class="noindent" ><a + id="x1-109001r8"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 9.8: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">pkg_info </span>on non-installed packages</span></div><!--tex4ht:label?: x1-109001r8 --> +<div class="tabular"> + <table id="TBL-21" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-21-1g"><col +id="TBL-21-1" /><col +id="TBL-21-2" /></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">pkg_info </span><span +class="ecbx-1000">on non-installed packages?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-21-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-2-2" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-21-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-3-2" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-4-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-5-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-6-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-21-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-21-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-21-8-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-1100009.1.16"></a>pkg_nofetch</h4> +<!--l. 427--><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. 431--><p class="noindent" ><span +class="ectt-1000">pkg_nofetch </span>must require no write access to any part of the filesystem. +</p><!--l. 433--><p class="noindent" > +</p> +<h4 class="subsectionHead"><span class="titlemark">9.1.17 </span> <a + id="x1-1110009.1.17"></a><span +class="ectt-1000">default_ </span>Phase Functions</h4> + <!--l. 436--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span><span +class="small-caps">S</span></span></span></p><!--l. 436--><p class="noindent" >In EAPIs listed in table <a +href="#x1-111001r9">9.9<!--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. 443--><p class="noindent" ><a + id="x1-111001r9"></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">default_ </span>phase functions</span></div><!--tex4ht:label?: x1-111001r9 --> +<div class="tabular"> + <table id="TBL-22" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-22-1g"><col +id="TBL-22-1" /><col +id="TBL-22-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-22-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-22-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-22-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </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-22-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:wrap; text-align:left;" id="TBL-22-2-2" +class="td11"> <!--l. 449--><p class="noindent" >None </p></td></tr><tr + style="vertical-align:baseline;" id="TBL-22-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:wrap; text-align:left;" id="TBL-22-3-2" +class="td11"> <!--l. 450--><p class="noindent" >None</p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-22-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:wrap; text-align:left;" id="TBL-22-4-2" +class="td11"> <!--l. 451--><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-22-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:wrap; text-align:left;" id="TBL-22-5-2" +class="td11"> <!--l. 453--><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-22-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:wrap; text-align:left;" id="TBL-22-6-2" +class="td11"> <!--l. 455--><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_install</span>, + <span +class="ectt-1000">src_test</span> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-22-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:wrap; text-align:left;" id="TBL-22-7-2" +class="td11"> <!--l. 457--><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_install</span>, + <span +class="ectt-1000">src_test</span> </p></td> + +</tr><tr + style="vertical-align:baseline;" id="TBL-22-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-22-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h3 class="sectionHead"><span class="titlemark">9.2 </span> <a + id="x1-1120009.2"></a>Call Order</h3> +<!--l. 465--><p class="noindent" >The call order for installing a package is: +</p><!--l. 468--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend </span>(only for EAPIs listed in table <a +href="#x1-96001r2">9.2<!--tex4ht:ref: tab:pkg-pretend-table --></a>), which is called outside of the normal + call order process. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_setup</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_unpack</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_prepare </span>(only for EAPIs listed in table <a +href="#x1-99001r3">9.3<!--tex4ht:ref: tab:src-prepare-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure </span>(only for EAPIs listed in table <a +href="#x1-100001r4">9.4<!--tex4ht:ref: tab:src-configure-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_compile</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_test </span>(except if <span +class="ectt-1000">RESTRICT=test </span>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. 481--><p class="noindent" >The call order for uninstalling a package is: +</p><!--l. 484--><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. 488--><p class="noindent" >The call order for upgrading, downgrading or reinstalling a package is: +</p><!--l. 491--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend </span>(only for EAPIs listed in table <a +href="#x1-96001r2">9.2<!--tex4ht:ref: tab:pkg-pretend-table --></a>), which is called outside of the normal + call order process. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_setup</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_unpack</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_prepare </span>(only for EAPIs listed in table <a +href="#x1-99001r3">9.3<!--tex4ht:ref: tab:src-prepare-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure </span>(only for EAPIs listed in table <a +href="#x1-100001r4">9.4<!--tex4ht:ref: tab:src-configure-table --></a>) + </li> + <li class="compactitem"><span +class="ectt-1000">src_compile</span> + </li> + <li class="compactitem"><span +class="ectt-1000">src_test </span>(except if <span +class="ectt-1000">RESTRICT=test</span>) + + + </li> + <li class="compactitem"><span +class="ectt-1000">src_install</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_preinst</span> + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_prerm </span>for the package being replaced + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_postrm </span>for the package being replaced + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_postinst</span></li></ul> +<!--l. 506--><p class="noindent" >Note: 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><!--l. 510--><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. 514--><p class="noindent" >For installing binary packages, the <span +class="ectt-1000">src </span>phases are not called. +</p><!--l. 516--><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-11300010"></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-410004.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-11400010.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-11500010.2"></a>Eclass-defined Metadata Keys</h3> +<!--l. 37--><p class="noindent" >The <span +class="ectt-1000">IUSE</span>, <span +class="ectt-1000">REQUIRED_USE</span>, <span +class="ectt-1000">DEPEND</span>, <span +class="ectt-1000">RDEPEND </span>and <span +class="ectt-1000">PDEPEND </span>variables are handled specially when set +by an eclass. They must be accumulated across eclasses, appending the value set by each eclass to +the resulting value after the previous one is loaded. Then the eclass-defined value is appended to +that defined by the ebuild. In the case of <span +class="ectt-1000">RDEPEND</span>, this is done after the implicit <span +class="ectt-1000">RDEPEND </span>rules in +section <a +href="#x1-700007.3.3">7.3.3<!--tex4ht:ref: sec:rdepend-depend --></a> are applied. +</p><!--l. 43--><p class="noindent" > +</p> +<h3 class="sectionHead"><span class="titlemark">10.3 </span> <a + id="x1-11600010.3"></a>EXPORT_FUNCTIONS</h3> +<!--l. 45--><p class="noindent" >There is one command available in the eclass environment that is neither available nor meaningful +in ebuilds—<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-116001r1">10.1<!--tex4ht:ref: lst:export-functions --></a> and is a snippet from a hypothetical <span +class="ectt-1000">foo.eclass</span>. + + +</p><!--l. 52--><p class="noindent" ><a + id="x1-116001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Listing 10.1: </span><span +class="content">EXPORT_FUNCTIONS example: foo.eclass</span></div><!--tex4ht:label?: x1-116001r1 --> + + +<div class="verbatim" id="verbatim-13"> +foo_src_compile() + <br />{ + <br />    econf --enable-gerbil \ + <br />            $(use_enable fnord) + <br />    emake gerbil || die "Couldn’t make a gerbil" + <br />    emake || die "emake failed" + <br />} + <br /> + <br />EXPORT_FUNCTIONS src_compile + <br />  </div> +<!--l. 63--><p class="nopar" > + + +</p> +</div><hr class="endfloat" /> +<!--l. 66--><p class="noindent" >This example defines an eclass <span +class="ectt-1000">src_compile </span>function and uses <span +class="ectt-1000">EXPORT_FUNCTIONS </span>to alias it. +Then any ebuild that inherits <span +class="ectt-1000">foo.eclass </span>will have a default <span +class="ectt-1000">src_compile </span>defined, but +should the author wish to override it he can access the function in <span +class="ectt-1000">foo.eclass </span>by calling +<span +class="ectt-1000">foo_src_compile</span>. +</p><!--l. 71--><p class="noindent" ><span +class="ectt-1000">EXPORT_FUNCTIONS </span>must only be used on ebuild phase functions. The function that is aliased +must be named <span +class="ectt-1000">eclassname_phasefunctionname</span>, where <span +class="ectt-1000">eclassname </span>is the name of the +eclass. + + + + + + +</p> +<h2 class="chapterHead"><span class="titlemark">Chapter 11</span><br /><a + id="x1-11700011"></a>The Ebuild Environment</h2> +<h3 class="sectionHead"><span class="titlemark">11.1 </span> <a + id="x1-11800011.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-12200011.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-118001r1"></a> +</p><!--l. 16--><div class="longtable"> <table id="TBL-23" class="longtable" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-23-1g"><col +id="TBL-23-1" /><col +id="TBL-23-2" /><col +id="TBL-23-3" /><col +id="TBL-23-4" /></colgroup> +<tr + style="vertical-align:baseline;" id="TBL-23-1-"><td colspan="4" style="white-space:nowrap; text-align:center;" id="TBL-23-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-118001r1 --> </div> <a + id="x1-118002"></a> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-23-2-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-23-2-1" +class="td11"><!--cmidrule--> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-23-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-23-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-23-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-23-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-23-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-23-4-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-23-4-1" +class="td11"><!--cmidrule--> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-23-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-5-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-23-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-6-1" +class="td11"></td><td style="white-space:wrap; text-align:left;" id="TBL-23-6-2" +class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-23-6-3" +class="td11"> </td><td style="white-space:wrap; text-align:left;" id="TBL-23-6-4" +class="td11"> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-23-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-18-1" +class="td11"> <span +class="ectt-1000">P </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-18-2" +class="td11"> + <!--l. 36--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-18-3" +class="td11"> No<span class="footnote-mark"><a +href="pms3.html#fn1x12"><sup class="textsuperscript">1</sup></a></span><a + id="x1-118003f1"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-23-18-4" +class="td11"> + <!--l. 38--><p class="noindent" >Package name and version, without the + revision part. For example, <span +class="ectt-1000">vim-7.0.174</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-19-1" +class="td11"> <span +class="ectt-1000">PN </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-19-2" +class="td11"> + <!--l. 40--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-19-3" +class="td11"> ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-23-19-4" +class="td11"> + <!--l. 42--><p class="noindent" >Package name, for example <span +class="ectt-1000">vim</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-20-1" +class="td11"> <span +class="ectt-1000">CATEGORY </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-20-2" +class="td11"> + <!--l. 44--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-20-3" +class="td11"> ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-23-20-4" +class="td11"> + <!--l. 46--><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-23-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-21-1" +class="td11"> <span +class="ectt-1000">PV </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-21-2" +class="td11"> + <!--l. 48--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-21-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-21-4" +class="td11"> + <!--l. 50--><p class="noindent" >Package version, with no revision. For example + <span +class="ectt-1000">7.0.174</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-22-1" +class="td11"> <span +class="ectt-1000">PR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-22-2" +class="td11"> + <!--l. 52--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-22-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-22-4" +class="td11"> + <!--l. 54--><p class="noindent" >Package revision, or <span +class="ectt-1000">r0 </span>if none exists. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-23-1" +class="td11"> <span +class="ectt-1000">PVR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-23-2" +class="td11"> + <!--l. 56--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-23-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-23-4" +class="td11"> + <!--l. 58--><p class="noindent" >Package version and revision (if any), for + example <span +class="ectt-1000">7.0.174 </span>or <span +class="ectt-1000">7.0.174-r1</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-24-1" +class="td11"> <span +class="ectt-1000">PF </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-24-2" +class="td11"> + <!--l. 60--><p class="noindent" >all </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-24-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-24-4" +class="td11"> + <!--l. 62--><p class="noindent" >Package name, version, and revision (if any), + for example <span +class="ectt-1000">vim-7.0.174-r1</span>. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-23-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-25-1" +class="td11"> <span +class="ectt-1000">A </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-25-2" +class="td11"> + <!--l. 64--><p class="noindent" ><span +class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-25-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-25-4" +class="td11"> + <!--l. 66--><p class="noindent" >All source files available for the package, + whitespace separated with no leading or + trailing whitespace, and in the order in which + the item first appears in a matched component + of <span +class="ectt-1000">SRC_URI</span>. Does not include any that are + disabled because of USE conditionals. The + value is calculated from the base names of + each element of the <span +class="ectt-1000">SRC_URI </span>ebuild metadata + variable. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-26-1" +class="td11"> <span +class="ectt-1000">AA</span><span class="footnote-mark"><a +href="pms4.html#fn2x12"><sup class="textsuperscript">2</sup></a></span><a + id="x1-118004f2"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-23-26-2" +class="td11"> + <!--l. 74--><p class="noindent" ><span +class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-26-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-26-4" +class="td11"> +<!--l. 76--><p class="noindent" > +<span class="fbox"><span +class="eccc-1000"><span +class="small-caps">A</span><span +class="small-caps">A</span></span> </span> </p><!--l. 76--><p class="noindent" >All source files that could be available for + the package, including any that are disabled + in <span +class="ectt-1000">A </span>because of USE conditionals. The value + is calculated from the base names of each + element of the <span +class="ectt-1000">SRC_URI </span>ebuild metadata + variable. Only for EAPIs listed in table <a +href="#x1-118008r3">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-23-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-27-1" +class="td11"> <span +class="ectt-1000">FILESDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-27-2" +class="td11"> + <!--l. 81--><p class="noindent" ><span +class="ectt-1000">src_*</span><span class="footnote-mark"><a +href="pms5.html#fn3x12"><sup class="textsuperscript">3</sup></a></span> <a + id="x1-118005f3"></a> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-27-3" +class="td11"> No </td><td style="white-space:wrap; text-align:left;" id="TBL-23-27-4" +class="td11"> + <!--l. 83--><p class="noindent" >The full path to the package’s files directory, + used for small support files or patches. See + section <a +href="#x1-340004.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-23-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-28-1" +class="td11"> <span +class="ectt-1000">PORTDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-28-2" +class="td11"> + <!--l. 88--><p class="noindent" >ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-28-3" +class="td11"> No </td><td style="white-space:wrap; text-align:left;" id="TBL-23-28-4" +class="td11"> + <!--l. 90--><p class="noindent" >The full path to the master repository’s base + directory. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-29-1" +class="td11"> <span +class="ectt-1000">DISTDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-29-2" +class="td11"> + <!--l. 92--><p class="noindent" >ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-29-3" +class="td11"> No </td><td style="white-space:wrap; text-align:left;" id="TBL-23-29-4" +class="td11"> + <!--l. 94--><p class="noindent" >The full path to the directory in which the files + in the <span +class="ectt-1000">A </span>variable are stored. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-23-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-30-1" +class="td11"> <span +class="ectt-1000">ECLASSDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-30-2" +class="td11"> + <!--l. 96--><p class="noindent" >ditto </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-30-3" +class="td11"> No </td><td style="white-space:wrap; text-align:left;" id="TBL-23-30-4" +class="td11"> + <!--l. 98--><p class="noindent" >The full path to the master repository’s eclass + directory. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-31-1" +class="td11"> <span +class="ectt-1000">ROOT </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-31-2" +class="td11"> + <!--l. 100--><p class="noindent" ><span +class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-31-3" +class="td11"> No </td><td style="white-space:wrap; text-align:left;" id="TBL-23-31-4" +class="td11"> + <!--l. 102--><p class="noindent" >The absolute path to the root directory into + which the package is to be merged. Phases + which run with full filesystem access must not + touch any files outside of the directory given in + <span +class="ectt-1000">ROOT</span>. Also of note is that in a cross-compiling + environment, binaries inside of <span +class="ectt-1000">ROOT </span>will not + be executable on the build machine, so ebuilds + must not call them. <span +class="ectt-1000">ROOT </span>must be non-empty + and end in a trailing slash. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-32-1" +class="td11"> <span +class="ectt-1000">EROOT </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-32-2" +class="td11"> + <!--l. 108--><p class="noindent" ><span +class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-32-3" +class="td11"> No </td><td style="white-space:wrap; text-align:left;" id="TBL-23-32-4" +class="td11"> + <!--l. 110--><p class="noindent" >Contains the path <span +class="ectt-1000">${ROOT%/}${EPREFIX}/ </span>for + convenience. See also the <span +class="ectt-1000">EPREFIX </span>variable. + Only for EAPIs listed in table <a +href="#x1-118009r4">11.4<!--tex4ht:ref: tab:offset-env-vars-table --></a> as + supporting <span +class="ectt-1000">EROOT</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-33-1" +class="td11"> <span +class="ectt-1000">T </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-33-2" +class="td11"> + <!--l. 114--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-33-3" +class="td11"> Partially<span class="footnote-mark"><a +href="pms6.html#fn4x12"><sup class="textsuperscript">4</sup></a></span><a + id="x1-118006f4"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-23-33-4" +class="td11"> + <!--l. 118--><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-23-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-34-1" +class="td11"> <span +class="ectt-1000">TMPDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-34-2" +class="td11"> + <!--l. 120--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-34-3" +class="td11"> Ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-23-34-4" +class="td11"> + <!--l. 122--><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-23-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-35-1" +class="td11"> <span +class="ectt-1000">HOME </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-35-2" +class="td11"> + <!--l. 125--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-35-3" +class="td11"> Ditto </td><td style="white-space:wrap; text-align:left;" id="TBL-23-35-4" +class="td11"> + <!--l. 127--><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-23-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-36-1" +class="td11"> <span +class="ectt-1000">EPREFIX </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-36-2" +class="td11"> + <!--l. 130--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-36-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-36-4" +class="td11"> + <!--l. 132--><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-12100011.1.3">11.1.3<!--tex4ht:ref: sec:offset-vars --></a>. Only + for EAPIs listed in table <a +href="#x1-118009r4">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-23-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-37-1" +class="td11"> <span +class="ectt-1000">D </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-37-2" +class="td11"> + <!--l. 139--><p class="noindent" ><span +class="ectt-1000">src_install</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-37-3" +class="td11"> No </td><td style="white-space:wrap; text-align:left;" id="TBL-23-37-4" +class="td11"> + <!--l. 141--><p class="noindent" >Contains the full path to the image directory + into which the package should be installed. + Must be non-empty and end in a trailing slash. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-38-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-23-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-39-1" +class="td11"> <span +class="ectt-1000">D </span>(continued) </td><td style="white-space:wrap; text-align:left;" id="TBL-23-39-2" +class="td11"> + <!--l. 144--><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-23-39-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-39-4" +class="td11"> + <!--l. 146--><p class="noindent" >Contains the full path to the image that is + about to be or has just been merged. Must be + non-empty and end in a trailing slash. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-40-1" +class="td11"> <span +class="ectt-1000">ED </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-40-2" +class="td11"> + <!--l. 149--><p class="noindent" ><span +class="ectt-1000">src_</span> + <span +class="ectt-1000">install</span>, <span +class="ectt-1000">pkg_</span> + <span +class="ectt-1000">preinst</span>, <span +class="ectt-1000">pkg_</span> + <span +class="ectt-1000">postinst</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-40-3" +class="td11"> See <span +class="ectt-1000">D </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-40-4" +class="td11"> + <!--l. 151--><p class="noindent" >Contains the path <span +class="ectt-1000">${D%/}${EPREFIX}/ </span>for + convenience. See also the <span +class="ectt-1000">EPREFIX </span>variable. + Only for EAPIs listed in table <a +href="#x1-118009r4">11.4<!--tex4ht:ref: tab:offset-env-vars-table --></a> as + supporting <span +class="ectt-1000">ED</span>. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-41-1" +class="td11"> <span +class="ectt-1000">INSDESTTREE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-41-2" +class="td11"> + <!--l. 155--><p class="noindent" ><span +class="ectt-1000">src_install</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-41-3" +class="td11"> No </td><td style="white-space:wrap; text-align:left;" id="TBL-23-41-4" +class="td11"> + <!--l. 157--><p class="noindent" >Controls the location where doins installs + things. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-23-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-42-1" +class="td11"> <span +class="ectt-1000">USE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-42-2" +class="td11"> + <!--l. 159--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-42-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-42-4" +class="td11"> + <!--l. 161--><p class="noindent" >A whitespace-delimited list of all active USE + flags for this ebuild. See section <a +href="#x1-11900011.1.1">11.1.1<!--tex4ht:ref: sec:use-iuse-handling --></a> for + details. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-43-1" +class="td11"> <span +class="ectt-1000">EBUILD_PHASE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-43-2" +class="td11"> + <!--l. 164--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-43-3" +class="td11"> No </td><td style="white-space:wrap; text-align:left;" id="TBL-23-43-4" +class="td11"> + <!--l. 166--><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-23-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-44-1" +class="td11"> <span +class="ectt-1000">EBUILD_PHASE_FUNC </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-44-2" +class="td11"> + <!--l. 172--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-44-3" +class="td11"> No </td><td style="white-space:wrap; text-align:left;" id="TBL-23-44-4" +class="td11"> +<!--l. 174--><p class="noindent" > +<span class="fbox"><span +class="eccc-1000"><span +class="small-caps">E</span><span +class="small-caps">B</span><span +class="small-caps">U</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">D</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span></span> </span> </p><!--l. 174--><p class="noindent" >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_</span> + <span +class="ectt-1000">preinst</span>, <span +class="ectt-1000">pkg_postinst</span>, <span +class="ectt-1000">pkg_prerm</span>, <span +class="ectt-1000">pkg_</span> + <span +class="ectt-1000">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-118007r2">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-23-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-45-1" +class="td11"> <span +class="ectt-1000">WORKDIR </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-45-2" +class="td11"> + <!--l. 182--><p class="noindent" ><span +class="ectt-1000">src_*</span>, + global scope </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-45-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-45-4" +class="td11"> + <!--l. 184--><p class="noindent" >The full path to the ebuild’s working directory, + in which all build data should be contained. </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-23-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-46-1" +class="td11"> <span +class="ectt-1000">S </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-46-2" +class="td11"> + <!--l. 187--><p class="noindent" ><span +class="ectt-1000">src_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-46-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-46-4" +class="td11"> + <!--l. 189--><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-12200011.2">11.2<!--tex4ht:ref: sec:ebuild-env-state --></a> for global variables apply. </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-47-1" +class="td11"> <span +class="ectt-1000">KV </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-47-2" +class="td11"> + <!--l. 194--><p class="noindent" >All </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-47-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-47-4" +class="td11"> +<!--l. 196--><p class="noindent" > +<span class="fbox"><span +class="eccc-1000"><span +class="small-caps">K</span><span +class="small-caps">V</span></span> </span> </p><!--l. 196--><p class="noindent" >The version of the running kernel at the time + the ebuild was first executed, as returned by + the <span +class="ectt-1000">uname</span><span +class="ectt-1000"> -r </span>command or equivalent. May be + modified by ebuilds. Only for EAPIs listed in + table <a +href="#x1-118008r3">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-23-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-48-1" +class="td11"> <span +class="ectt-1000">MERGE_TYPE </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-48-2" +class="td11"> + <!--l. 200--><p class="noindent" ><span +class="ectt-1000">pkg_*</span> </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-48-3" +class="td11"> No </td><td style="white-space:wrap; text-align:left;" id="TBL-23-48-4" +class="td11"> +<!--l. 202--><p class="noindent" > +<span class="fbox"><span +class="eccc-1000"><span +class="small-caps">M</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">G</span><span +class="small-caps">E</span>-<span +class="small-caps">T</span><span +class="small-caps">Y</span><span +class="small-caps">P</span><span +class="small-caps">E</span></span> </span> </p><!--l. 202--><p class="noindent" >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-118007r2">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-23-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-49-1" +class="td11"> <span +class="ectt-1000">REPLACING_VERSIONS </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-49-2" +class="td11"> + <!--l. 207--><p class="noindent" ><span +class="ectt-1000">pkg_* </span>(see text) </p></td><td style="white-space:nowrap; text-align:left;" id="TBL-23-49-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-49-4" +class="td11"> + <!--l. 209--><p class="noindent" >A whitespace-separated list of versions of this + package (including revision, if specified) that + are being replaced (uninstalled or overwritten) + as a result of this install. See section <a +href="#x1-12000011.1.2">11.1.2<!--tex4ht:ref: sec:replacing-versions --></a>. + Only for EAPIs listed in table <a +href="#x1-118007r2">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-23-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-50-1" +class="td11"> <span +class="ectt-1000">REPLACED_BY_VERSION </span></td><td style="white-space:wrap; text-align:left;" id="TBL-23-50-2" +class="td11"> + <!--l. 214--><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-23-50-3" +class="td11"> Yes </td><td style="white-space:wrap; text-align:left;" id="TBL-23-50-4" +class="td11"> + <!--l. 216--><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-12000011.1.2">11.1.2<!--tex4ht:ref: sec:replacing-versions --></a>. + Only for EAPIs listed in table <a +href="#x1-118007r2">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-23-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-51-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-23-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-52-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-53-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-53-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-23-54-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-54-1" +class="td11"></td> +</tr> +<tr + style="vertical-align:baseline;" id="TBL-23-15-"><td colspan="4" style="white-space:nowrap; text-align:left;" id="TBL-23-15-1" +class="td11"><!--cmidrule--></td></tr><tr + style="vertical-align:baseline;" id="TBL-23-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-16-1" +class="td11"> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-23-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-23-17-1" +class="td11"> </td></tr> +</table></div> + + + +<div class="table"> + + +<!--l. 224--><p class="noindent" ><a + id="x1-118007r2"></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-118007r2 --> +<div class="tabular"> + <table id="TBL-24" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-24-1g"><col +id="TBL-24-1" /><col +id="TBL-24-2" /><col +id="TBL-24-3" /><col +id="TBL-24-4" /><col +id="TBL-24-5" /></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="ectt-1000">MERGE_TYPE</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-24-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">REPLACING_VERSIONS</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-24-1-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">REPLACED_BY_VERSION</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-24-1-5" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">EBUILD_PHASE_FUNC</span><span +class="ecbx-1000">?</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"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-2-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-2-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-2-5" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-24-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-3-5" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-4-5" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-4" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-5-5" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-6-5" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-4" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-24-7-5" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-24-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-24-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 244--><p class="noindent" ><a + id="x1-118008r3"></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-118008r3 --> +<div class="tabular"> + <table id="TBL-25" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-25-1g"><col +id="TBL-25-1" /><col +id="TBL-25-2" /><col +id="TBL-25-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-25-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-25-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-25-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">AA</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-25-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></tr><tr + style="vertical-align:baseline;" id="TBL-25-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-25-2-3" +class="td11"> Yes </td></tr><tr + style="vertical-align:baseline;" id="TBL-25-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-3-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-25-3-3" +class="td11"> Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-25-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-25-4-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-25-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-5-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-25-5-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-25-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-6-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-25-6-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-25-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-25-7-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-25-7-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-25-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-25-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 262--><p class="noindent" ><a + id="x1-118009r4"></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-118009r4 --> +<div class="tabular"> + <table id="TBL-26" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-26-1g"><col +id="TBL-26-1" /><col +id="TBL-26-2" /><col +id="TBL-26-3" /><col +id="TBL-26-4" /></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="ectt-1000">EPREFIX</span><span +class="ecbx-1000">?</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-26-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-26-1-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">ED</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-26-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-2-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-2-4" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-26-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-3-4" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-4-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-4-3" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-4-4" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-5-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-5-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-5-4" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-6-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-6-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-6-4" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-26-7-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-7-3" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-26-7-4" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-26-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-26-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<!--l. 281--><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. 286--><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. 290--><p class="noindent" ><span +class="ectt-1000">GZIP</span>, <span +class="ectt-1000">BZIP</span>, <span +class="ectt-1000">BZIP2</span>, <span +class="ectt-1000">CDPATH</span>, <span +class="ectt-1000">GREP_OPTIONS</span>, <span +class="ectt-1000">GREP_COLOR </span>and <span +class="ectt-1000">GLOBIGNORE </span>must not be +set. +</p> +<h4 class="subsectionHead"><span class="titlemark">11.1.1 </span> <a + id="x1-11900011.1.1"></a>USE and IUSE Handling</h4> +<!--l. 296--><p class="nopar" >This section discusses the handling of four variables: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">IUSE</span> </dt><dd +class="description">is the variable calculated from the <span +class="ectt-1000">IUSE </span>values defined in ebuilds and eclasses. + </dd><dt class="description"> +<span +class="ecbx-1000">IUSE_REFERENCEABLE</span> </dt><dd +class="description">is a variable calculated from <span +class="ectt-1000">IUSE </span>and a variety of other + sources described below. It is purely a conceptual variable; it is not exported to the + ebuild environment. Values in <span +class="ectt-1000">IUSE_REFERENCEABLE </span>may legally be used in queries + from other packages about an ebuild’s state (for example, for use dependencies). + </dd><dt class="description"> +<span +class="ecbx-1000">IUSE_EFFECTIVE</span> </dt><dd +class="description">is another conceptual, unexported variable. Values in <span +class="ectt-1000">IUSE_</span> + <span +class="ectt-1000">EFFECTIVE </span>are those which an ebuild may legally use in queries about itself (for + example, for the <span +class="ectt-1000">use </span>function, and for use in dependency specification conditional + blocks). + </dd><dt class="description"> +<span +class="ecbx-1000">USE</span> </dt><dd +class="description">is a variable calculated by the package manager and exported to the ebuild + environment.</dd></dl> +<!--l. 310--><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. 313--><p class="noindent" >For EAPIs listed in table <a +href="#x1-60001r2">5.2<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as not supporting profile defined <span +class="ectt-1000">IUSE </span>injection, <span +class="ectt-1000">IUSE_REFERENCEABLE </span>is +equal to the calculated <span +class="ectt-1000">IUSE </span>value. For EAPIs where profile defined <span +class="ectt-1000">IUSE </span>injection is supported, +<span +class="ectt-1000">IUSE_REFERENCEABLE </span>is equal to <span +class="ectt-1000">IUSE_EFFECTIVE</span>. +</p><!--l. 318--><p class="noindent" >For EAPIs listed in table <a +href="#x1-60001r2">5.2<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as not supporting profile defined <span +class="ectt-1000">IUSE </span>injection, <span +class="ectt-1000">IUSE_EFFECTIVE</span> +contains the following values: +</p><!--l. 322--><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. 328--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-<span +class="small-caps">I</span><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">J</span><span +class="small-caps">E</span><span +class="small-caps">C</span><span +class="small-caps">T</span></span></span></p><!--l. 328--><p class="noindent" >For EAPIs listed in table <a +href="#x1-60001r2">5.2<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as supporting profile defined <span +class="ectt-1000">IUSE </span>injection, <span +class="ectt-1000">IUSE_EFFECTIVE</span> +contains the following values: + + +</p><!--l. 332--><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_</span> + <span +class="ectt-1000">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. 343--><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-60001r2">5.2<!--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. 349--><p class="noindent" >For EAPIs listed in table <a +href="#x1-60001r2">5.2<!--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. 354--><p class="noindent" >For EAPIs listed in table <a +href="#x1-60001r2">5.2<!--tex4ht:ref: tab:profile-iuse-injection-table --></a> as supporting profile defined <span +class="ectt-1000">IUSE </span>injection, the package manager +must save the calculated value of <span +class="ectt-1000">IUSE_EFFECTIVE </span>when installing a package. Details are beyond +the scope of this specification. +</p><!--l. 358--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">11.1.2 </span> <a + id="x1-12000011.1.2"></a><span +class="ectt-1000">REPLACING_VERSIONS </span>and <span +class="ectt-1000">REPLACED_BY_VERSION</span></h4> + <!--l. 361--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">E</span>-<span +class="small-caps">V</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">S</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span>-<span +class="small-caps">V</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">S</span></span></span></p><!--l. 361--><p class="noindent" >In EAPIs listed in table <a +href="#x1-118007r2">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. 367--><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. 370--><p class="noindent" >In EAPIs listed in table <a +href="#x1-118007r2">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. 374--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">11.1.3 </span> <a + id="x1-12100011.1.3"></a>Offset-prefix variables <span +class="ectt-1000">EPREFIX</span>, <span +class="ectt-1000">EROOT </span>and <span +class="ectt-1000">ED</span></h4> +<div class="table"> + + +<!--l. 378--><p class="noindent" ><a + id="x1-121001r5"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.5: </span><span +class="content">EAPIs supporting offset-prefix</span></div><!--tex4ht:label?: x1-121001r5 --> +<div class="tabular"> + <table id="TBL-27" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-27-1g"><col +id="TBL-27-1" /><col +id="TBL-27-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-27-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-27-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-27-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports offset-prefix?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-27-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-2-2" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-27-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-3-2" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-4-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-5-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-6-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-27-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-27-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-27-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> + <!--l. 395--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">O</span><span +class="small-caps">F</span><span +class="small-caps">F</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">T</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">X</span>-<span +class="small-caps">V</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">S</span></span></span></p><!--l. 395--><p class="noindent" >Table <a +href="#x1-121001r5">11.5<!--tex4ht:ref: tab:offset-support-table --></a> lists the EAPIs which support offset-prefix installations. This support was initially +added in EAPI 3, in the form of three extra variables. Two of these, <span +class="ectt-1000">EROOT </span>and <span +class="ectt-1000">ED</span>, are convenience +variables using the variable <span +class="ectt-1000">EPREFIX</span>. In EAPIs that do not support an offset-prefix, the +installation offset is hardwired to <span +class="ectt-1000">/usr</span>. In offset-prefix supporting EAPIs the installation offset is +set as <span +class="ectt-1000">${EPREFIX}/usr </span>and hence can be adjusted using the variable <span +class="ectt-1000">EPREFIX</span>. Note that the +behaviour of offset-prefix aware and agnostic is the same when <span +class="ectt-1000">EPREFIX </span>is set to the empty string +in offset-prefix aware EAPIs. The latter do have the variables <span +class="ectt-1000">ED </span>and <span +class="ectt-1000">EROOT </span>properly set, +though. +</p> +<h3 class="sectionHead"><span class="titlemark">11.2 </span> <a + id="x1-12200011.2"></a>The state of variables between functions</h3> +<!--l. 4--><p class="nopar" >Exported and default scope variables are saved between functions. A non-local variable set in a +function earlier in the call sequence must have its value preserved for later functions, including +functions executed as part of a later uninstall. +</p> +<!--l. 8--><p class="nopar" ><span class="paragraphHead"><a + id="x1-12300011.2"></a><span +class="ecbx-1000">Note:</span></span> +<span +class="ectt-1000">pkg_pretend </span>is <span +class="ecti-1000">not </span>part of the normal call sequence, and does not take part in environment +saving. +</p><!--l. 11--><p class="noindent" >Variables that were exported must remain exported in later functions; variables with default +visibility may retain default visibility or be exported. +</p><!--l. 14--><p class="noindent" >Variables with special meanings to the package manager are excluded from this rule. +</p><!--l. 16--><p class="noindent" >Global variables must only contain invariant values (see <a +href="#x1-650007.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. 20--><p class="noindent" >This is demonstrated by code listing <a +href="#x1-123001r1">11.1<!--tex4ht:ref: lst:env-saving --></a>. + + +</p><!--l. 23--><p class="noindent" ><a + id="x1-123001r1"></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-123001r1 --> +<div class="verbatiminput"> +<span +class="ectt-1000">GLOBAL_VARIABLE="a"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">src_compile()</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">{</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> GLOBAL_VARIABLE="b"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> DEFAULT_VARIABLE="c"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> export</span><span +class="ectt-1000"> EXPORTED_VARIABLE="d"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> local</span><span +class="ectt-1000"> LOCAL_VARIABLE="e"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">}</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">src_install(){</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> ${GLOBAL_VARIABLE}</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "a"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> ${GLOBAL_VARIABLE}</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "b"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> globals"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> ${DEFAULT_VARIABLE}</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "c"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> default"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> ${EXPORTED_VARIABLE}</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "d"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> exported"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> $(printenv</span><span +class="ectt-1000"> EXPORTED_VARIABLE</span><span +class="ectt-1000"> )</span><span +class="ectt-1000"> ==</span><span +class="ectt-1000"> "d"</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> exported"</span> +<span +class="ectt-1000"> </span><br /> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> [[</span><span +class="ectt-1000"> -z</span><span +class="ectt-1000"> ${LOCAL_VARIABLE}</span><span +class="ectt-1000"> ]]</span><span +class="ectt-1000"> \</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> ||</span><span +class="ectt-1000"> die</span><span +class="ectt-1000"> "broken</span><span +class="ectt-1000"> env</span><span +class="ectt-1000"> saving</span><span +class="ectt-1000"> for</span><span +class="ectt-1000"> locals"</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000">}</span> +</div> + + +</div><hr class="endfloat" /> +<h3 class="sectionHead"><span class="titlemark">11.3 </span> <a + id="x1-12400011.3"></a>Available commands</h3> +<!--l. 4--><p class="nopar" >This section documents the commands available to an ebuild. Unless otherwise specified, they may +be aliases, shell functions, or executables in the ebuild’s <span +class="ectt-1000">PATH</span>. +</p><!--l. 7--><p class="noindent" >When an ebuild is being sourced for metadata querying rather than for a build (that is to say, +when none of the <span +class="ectt-1000">src_ </span>or <span +class="ectt-1000">pkg_ </span>functions are to be called), no external command may be executed. +The package manager may take steps to enforce this. +</p><!--l. 11--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">11.3.1 </span> <a + id="x1-12500011.3.1"></a>System commands</h4> +<!--l. 13--><p class="nopar" >Any ebuild not listed in the system set for the active profile(s) may assume the presence of every +command that is always provided by the system set for that profile. However, it must target the +lowest common denominator of all systems on which it might be installed—in most +cases this means that the only packages that can be assumed to be present are those +listed in the <span +class="ectt-1000">base </span>profile or equivalent, which is inherited by all available profiles. If an +ebuild requires any applications not provided by the system profile, or that are provided +conditionally based on USE flags, appropriate dependencies must be used to ensure their +presence. +</p><!--l. 21--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.1.1 </span> <a + id="x1-12600011.3.1.1"></a>Guaranteed system commands</h5> +<!--l. 24--><p class="nopar" >The following commands must always be available in the ebuild environment: + </p><ul> + <li class="compactitem">All builtin commands in GNU bash, version 3.2<span class="footnote-mark"><a +href="pms7.html#fn5x12"><sup class="textsuperscript">5</sup></a></span><a + id="x1-126001f5"></a> . + </li> + <li class="compactitem"><span +class="ectt-1000">sed </span>must be available, and must support all forms of invocations valid for GNU sed + version 4 or later. + </li> + <li class="compactitem"><span +class="ectt-1000">patch </span>must be available, and must support all inputs valid for GNU patch. + </li> + <li class="compactitem"> <!--l. 32--><p class="noindent" > + </p><!--l. 32--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">G</span><span +class="small-caps">N</span><span +class="small-caps">U</span>-<span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">D</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-126002r6">11.6<!--tex4ht:ref: tab:system-commands-table --></a> as requiring + GNU find.</p></li></ul> +<div class="table"> + + +<!--l. 38--><p class="noindent" ><a + id="x1-126002r6"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.6: </span><span +class="content"><span +class="ectt-1000">find </span>implementation for EAPIs</span></div><!--tex4ht:label?: x1-126002r6 --> +<div class="tabular"> + <table id="TBL-28" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-28-1g"><col +id="TBL-28-1" /><col +id="TBL-28-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-28-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-28-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-28-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">GNU </span><span +class="ectt-1000">find</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"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-2-2" +class="td11"> Undefined </td></tr><tr + style="vertical-align:baseline;" id="TBL-28-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-3-2" +class="td11"> Undefined</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-4-2" +class="td11"> Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-5-2" +class="td11"> Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-6-2" +class="td11"> Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-28-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-28-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-28-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h4 class="subsectionHead"><span class="titlemark">11.3.2 </span> <a + id="x1-12700011.3.2"></a>Commands provided by package dependencies</h4> +<!--l. 56--><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-750008.1">8.1<!--tex4ht:ref: sec:dependency-classes --></a>. +</p><!--l. 60--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">11.3.3 </span> <a + id="x1-12800011.3.3"></a>Ebuild-specific Commands</h4> +<!--l. 3--><p class="nopar" >The following commands will always be available in the ebuild environment, provided by the +package manager. Except where otherwise noted, they may be internal (shell functions or aliases) +or external commands available in <span +class="ectt-1000">PATH</span>; where this is not specified, ebuilds may not rely upon +either behaviour. +</p><!--l. 8--><p class="noindent" >Unless otherwise noted, any output of these commands ends with a newline. +</p><!--l. 10--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.1 </span> <a + id="x1-12900011.3.3.1"></a>Failure behaviour and related commands</h5> + <!--l. 13--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">E</span>-<span +class="small-caps">O</span><span +class="small-caps">N</span>-<span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">E</span></span></span></p><!--l. 13--><p class="noindent" >Where a command is listed as having EAPI dependent failure behaviour, a failure shall either +result in a non-zero exit status or abort the build process, as determined by table <a +href="#x1-129001r7">11.7<!--tex4ht:ref: tab:commands-die-table --></a>. +</p><!--l. 17--><p class="noindent" >The following commands affect this behaviour: + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">nonfatal</span> </dt><dd +class="description"> <!--l. 19--><p class="noindent" > + </p><!--l. 19--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">N</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span></span></span> Executes the remainder of its arguments as a command, preserving the exit status. + If this results in a command being called that would normally abort the build process + due to a failure (but not due to an explicit <span +class="ectt-1000">die </span>or <span +class="ectt-1000">assert </span>call), instead a non-zero exit + status shall be returned. Only in EAPIs listed in table <a +href="#x1-129001r7">11.7<!--tex4ht:ref: tab:commands-die-table --></a> as supporting <span +class="ectt-1000">nonfatal</span>.</p></dd></dl> +<div class="table"> + + +<!--l. 27--><p class="noindent" ><a + id="x1-129001r7"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.7: </span><span +class="content">EAPI Command Failure Behaviour</span></div><!--tex4ht:label?: x1-129001r7 --> +<div class="tabular"> + <table id="TBL-29" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-29-1g"><col +id="TBL-29-1" /><col +id="TBL-29-2" /><col +id="TBL-29-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-29-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-29-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-29-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Command failure behaviour</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-29-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">nonfatal</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-29-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-2" +class="td11"> Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-2-3" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-29-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-2" +class="td11"> Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-3-3" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-2" +class="td11"> Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-4-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-5-2" +class="td11"> Non-zero exit </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-5-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-6-2" +class="td11"> Aborts </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-6-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-29-7-2" +class="td11"> Aborts </td><td style="white-space:nowrap; text-align:left;" id="TBL-29-7-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-29-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-29-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.2 </span> <a + id="x1-13000011.3.3.2"></a>Banned commands</h5> + <!--l. 47--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">D</span><span +class="small-caps">S</span></span></span></p><!--l. 47--><p class="noindent" >Some commands are banned in some EAPIs. If a banned command is called, the package manager +must abort the build process indicating an error. +</p> +<div class="table"> + + +<!--l. 51--><p class="noindent" ><a + id="x1-130001r8"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.8: </span><span +class="content">Banned commands</span></div><!--tex4ht:label?: x1-130001r8 --> +<div class="tabular"> + <table id="TBL-30" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-30-1g"><col +id="TBL-30-1" /><col +id="TBL-30-2" /><col +id="TBL-30-3" /><col +id="TBL-30-4" /></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 colspan="3" 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">Command banned?</span></div></td></tr><tr + style="vertical-align:baseline;" id="TBL-30-2-"><td style="white-space:nowrap; text-align:center;" id="TBL-30-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-30-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-30-2-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ectt-1000">dosed</span></div> + +</td></tr><tr + style="vertical-align:baseline;" id="TBL-30-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-3-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-3-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-30-3-3" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-30-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-4-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-4-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-30-4-3" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-5-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-5-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-30-5-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-6-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-6-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-30-6-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-7-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-7-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-30-7-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-8-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-30-8-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-30-8-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-30-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-30-9-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.3 </span> <a + id="x1-13100011.3.3.3"></a>Sandbox commands</h5> +<!--l. 71--><p class="nopar" >These commands affect the behaviour of the sandbox. Each command takes a single directory as +argument. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">addread</span> </dt><dd +class="description">Add a directory to the permitted read list. + </dd><dt class="description"> +<span +class="ecbx-1000">addwrite</span> </dt><dd +class="description">Add a directory to the permitted write list. + </dd><dt class="description"> +<span +class="ecbx-1000">addpredict</span> </dt><dd +class="description">Add a directory to the predict list. Any write to a location in this list will be + denied, but will not trigger access violation messages or abort the build process. + </dd><dt class="description"> +<span +class="ecbx-1000">adddeny</span> </dt><dd +class="description">Add a directory to the deny list.</dd></dl> +<!--l. 81--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.4 </span> <a + id="x1-13200011.3.3.4"></a>Package manager query commands</h5> +<!--l. 82--><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. 86--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">H</span><span +class="small-caps">O</span><span +class="small-caps">S</span><span +class="small-caps">T</span>-<span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">O</span><span +class="small-caps">T</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span></span></span></p><!--l. 86--><p class="noindent" >In EAPIs listed in table <a +href="#x1-136023r15">11.15<!--tex4ht:ref: tab:foo-version-host-root-table --></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 instead of <span +class="ectt-1000">ROOT</span>. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">has_version</span> </dt><dd +class="description">Takes exactly one package dependency specification as an argument. Returns + true if a package matching the atom is installed in <span +class="ectt-1000">ROOT</span>, and false otherwise. + </dd><dt class="description"> +<span +class="ecbx-1000">best_version</span> </dt><dd +class="description">Takes exactly one package dependency specification as an argument. If + a matching package is installed, prints the category, package name and version of + the highest matching version; otherwise, prints an empty string. The exit code is + unspecified.</dd></dl> +<!--l. 97--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.5 </span> <a + id="x1-13300011.3.3.5"></a>Output commands</h5> +<!--l. 98--><p class="nopar" >These commands display messages to the user. Unless otherwise stated, the entire argument list is +used as a message, with backslash-escaped characters interpreted as for the <span +class="ectt-1000">echo -e </span>command of +bash, notably <span +class="ectt-1000">\t </span>for a horizontal tab, <span +class="ectt-1000">\n </span>for a new line, and <span +class="ectt-1000">\\ </span>for a literal backslash. Ebuilds +must not run any of these commands once the current phase function has returned. +Unless otherwise noted, output may be sent to stdout, stderr or some other appropriate +facility. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">einfo</span> </dt><dd +class="description">Displays an informational message. + + + </dd><dt class="description"> +<span +class="ecbx-1000">einfon</span> </dt><dd +class="description">Displays an informational message without a trailing newline. + </dd><dt class="description"> +<span +class="ecbx-1000">elog</span> </dt><dd +class="description">Displays an informational message of slightly higher importance. The package manager + may choose to log <span +class="ectt-1000">elog </span>messages by default where <span +class="ectt-1000">einfo </span>messages are not, for example. + </dd><dt class="description"> +<span +class="ecbx-1000">ewarn</span> </dt><dd +class="description">Displays a warning message. Must not go to stdout. + </dd><dt class="description"> +<span +class="ecbx-1000">eerror</span> </dt><dd +class="description">Displays an error message. Must not go to stdout. + </dd><dt class="description"> +<span +class="ecbx-1000">ebegin</span> </dt><dd +class="description">Displays an informational message. Should be used when beginning a possibly + lengthy process, and followed by a call to <span +class="ectt-1000">eend</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">eend</span> </dt><dd +class="description">Indicates that the process begun with an <span +class="ectt-1000">ebegin </span>message has completed. Takes + one fixed argument, which is a numeric return code, and an optional message in all + subsequent arguments. If the first argument is 0, prints a success indicator; otherwise, + prints the message followed by a failure indicator. Returns its first argument as exit + status.</dd></dl> +<!--l. 120--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.6 </span> <a + id="x1-13400011.3.3.6"></a>Error commands</h5> +<!--l. 121--><p class="nopar" >These commands are used when an error is detected that will prevent the build process from +completing. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">die</span> </dt><dd +class="description">Displays a failure message provided in its first and only argument, and then aborts + the build process. <span +class="ectt-1000">die </span>is <span +class="ecti-1000">not </span>guaranteed to work correctly if called from a subshell + environment. + </dd><dt class="description"> +<span +class="ecbx-1000">assert</span> </dt><dd +class="description">Checks the value of the shell’s pipe status variable, and if any component is non-zero + (indicating failure), calls <span +class="ectt-1000">die </span>with its first argument as a failure message.</dd></dl> +<!--l. 131--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.7 </span> <a + id="x1-13500011.3.3.7"></a>Build commands</h5> +<!--l. 132--><p class="nopar" >These commands are used during the <span +class="ectt-1000">src_compile </span>and <span +class="ectt-1000">src_install </span>phases to run the package’s +build commands. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">econf</span> </dt><dd +class="description">Calls the program’s <span +class="ectt-1000">./configure </span>script. This is designed to work with GNU + Autoconf-generated scripts. Any additional parameters passed to <span +class="ectt-1000">econf </span>are passed + directly to <span +class="ectt-1000">./configure</span>. <span +class="ectt-1000">econf </span>will look in the current working directory for a + configure script unless the <span +class="ectt-1000">ECONF_SOURCE </span>environment variable is set, in which case it + is taken to be the directory containing it. <span +class="ectt-1000">econf </span>must pass the following options to the + configure script: + + + <!--l. 144--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">E</span><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span></span></span></p> + <ul class="itemize1"> + <li class="itemize">--prefix must default to <span +class="ectt-1000">${EPREFIX}/usr </span>unless overridden by <span +class="ectt-1000">econf</span>’s caller. + </li> + <li class="itemize">--mandir must be <span +class="ectt-1000">${EPREFIX}/usr/share/man</span> + </li> + <li class="itemize">--infodir must be <span +class="ectt-1000">${EPREFIX}/usr/share/info</span> + </li> + <li class="itemize">--datadir must be <span +class="ectt-1000">${EPREFIX}/usr/share</span> + </li> + <li class="itemize">--sysconfdir must be <span +class="ectt-1000">${EPREFIX}/etc</span> + </li> + <li class="itemize">--localstatedir must be <span +class="ectt-1000">${EPREFIX}/var/lib</span> + </li> + <li class="itemize">--host must be the value of the <span +class="ectt-1000">CHOST </span>environment variable. + </li> + <li class="itemize">--libdir must be set according to Algorithm <a +href="#x1-135002r9">9<!--tex4ht:ref: alg:econf-libdir --></a>. + </li> + <li class="itemize">--disable-dependency-tracking, if the EAPI is listed in table <a +href="#x1-135001r9">11.9<!--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>. + </li> + <li class="itemize">--disable-silent-rules, if the EAPI is listed in table <a +href="#x1-135001r9">11.9<!--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>.</li></ul> + <div class="table"> + <!--l. 162--><p class="noindent" ><a + id="x1-135001r9"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Table 11.9: </span><span +class="content">Extra <span +class="ectt-1000">econf </span>arguments for EAPIs</span></div><!--tex4ht:label?: x1-135001r9 --> + <div class="tabular"> + <table id="TBL-31" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-31-1g"><col +id="TBL-31-1" /><col +id="TBL-31-2" /><col +id="TBL-31-3" /><col +id="TBL-31-4" /></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">--disable-dependency-tracking</span>?</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-31-1-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">--disable-silent-rules</span>?</div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-31-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-31-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-31-2-3" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-31-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-31-3-2" +class="td11"> No </td> <td style="white-space:nowrap; text-align:left;" id="TBL-31-3-3" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-31-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-31-4-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-31-4-3" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-31-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-31-5-2" +class="td11"> No </td> <td style="white-space:nowrap; text-align:left;" id="TBL-31-5-3" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-31-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-31-6-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-31-6-3" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-31-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-31-7-2" +class="td11"> Yes </td> <td style="white-space:nowrap; text-align:left;" id="TBL-31-7-3" +class="td11"> Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-31-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-31-8-1" +class="td11"> </td></tr></table> + </div> </div><hr class="endfloat" /> + </div> + <!--l. 179--><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-118001r1">11.1<!--tex4ht:ref: tab:defined_vars --></a>. It facilitates offset-prefix installations which is supported by EAPIs listed in + Table <a +href="#x1-118009r4">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. 185--><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. 190--><p class="noindent" ><a + id="x1-135002r9"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Algorithm 9: </span><span +class="content">econf --libdir logic</span></div><!--tex4ht:label?: x1-135002r9 --> +<div class="algorithmic"> + + +<a + id="x1-135003r115"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> let prefix=${EPREFIX}/usr <a + id="x1-135004r116"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-135005r117"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let prefix=$p + </span><a + id="x1-135006r118"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-135007r119"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> let libdir= <a + id="x1-135008r120"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-135009r121"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let libvar=LIBDIR_$ABI <a + id="x1-135010r122"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-135011r123"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:24.9939pt;"> </span> let libdir=the value of the variable named by libvar + </span><a + id="x1-135012r124"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </span><a + id="x1-135013r125"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-135014r126"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">if</span> libdir is non-empty <span +class="ecbx-1000">then</span><span class="if-body"> +<a + id="x1-135015r127"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> pass --libdir=$prefix/$libdir to configure + </span><a + id="x1-135016r128"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span> + </div> </div><hr class="endfloat" /> + </div> + </dd><dt class="description"> +<span +class="ecbx-1000">emake</span> </dt><dd +class="description">Calls the <span +class="ectt-1000">$MAKE </span>program, or GNU make if the <span +class="ectt-1000">MAKE </span>variable is unset. Any arguments given + are passed directly to the make command, as are the user’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-12600011.3.1.1">11.3.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-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">einstall</span> </dt><dd +class="description">A shortcut for the command given in Listing <a +href="#x1-135017r2">11.2<!--tex4ht:ref: lst:einstall --></a>. Any arguments given to <span +class="ectt-1000">einstall </span>are + passed verbatim to <span +class="ectt-1000">emake</span>, as shown. Failure behaviour is EAPI dependent as per + section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + <!--l. 219--><p class="noindent" >The variable <span +class="ectt-1000">ED </span>is defined as in Table <a +href="#x1-118001r1">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-118009r4">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-135017r2">11.2<!--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-136001r10">10<!--tex4ht:ref: alg:ebuild-libdir --></a>. + </p><!--l. 226--><p class="noindent" ><a + id="x1-135017r2"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Listing 11.2: </span><span +class="content">einstall command</span></div><!--tex4ht:label?: x1-135017r2 --> + + +<div class="verbatim" id="verbatim-14"> +emake \ + <br />   prefix="${ED}"/usr \ + <br />   datadir="${ED}"/usr/share \ + <br />   mandir="${ED}"/usr/share/man \ + <br />   infodir="${ED}"/usr/share/info \ + <br />   libdir="${ED}"/usr/${libdir} \ + <br />   localstatedir="${ED}"/var/lib \ + <br />   sysconfdir="${ED}"/etc \ + <br />   -j1 \ + <br />   "$@" \ + <br />   install + <br />  </div> + <!--l. 240--><p class="nopar" ></p></div><hr class="endfloat" /> + </dd></dl> +<!--l. 245--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.8 </span> <a + id="x1-13600011.3.3.8"></a>Installation commands</h5> +<!--l. 246--><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</span> +<span +class="ectt-1000">install </span>target cannot be used or does not install all needed files. Except where otherwise stated, +all filenames created or modified are relative to the staging directory including the offset-prefix <span +class="ectt-1000">ED</span> +in offset-prefix aware EAPIs, or just the staging directory <span +class="ectt-1000">D </span>in offset-prefix agnostic EAPIs. These +commands must all be external programs and not bash functions or aliases—that is, they must be +callable from <span +class="ectt-1000">xargs</span>. Ebuilds must not run any of these commands once the current phase function +has returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">dobin</span> </dt><dd +class="description">Installs the given files into <span +class="ectt-1000">DESTTREE/bin</span>, where <span +class="ectt-1000">DESTTREE </span>defaults to <span +class="ectt-1000">/usr</span>. Gives + the files mode <span +class="ectt-1000">0755 </span>and transfers file ownership to the superuser or its equivalent on + the system or installation at hand. For instance on Gentoo Linux in a non-offset-prefix + installation this ownership is <span +class="ectt-1000">root:root</span>, while on an offset-prefix aware installation + this may be <span +class="ectt-1000">joe:users</span>. Failure behaviour is EAPI dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">doconfd</span> </dt><dd +class="description">Installs the given config files into <span +class="ectt-1000">/etc/conf.d/</span>, by default with file mode <span +class="ectt-1000">0644</span>. + This can be overridden by setting <span +class="ectt-1000">INSOPTIONS </span>with the <span +class="ectt-1000">insopts </span>function. Failure + behaviour is EAPI dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dodir</span> </dt><dd +class="description">Creates the given directories, by default with file mode <span +class="ectt-1000">0755</span>. This can be overridden + by setting <span +class="ectt-1000">DIROPTIONS </span>with the <span +class="ectt-1000">diropts </span>function. Failure behaviour is EAPI + dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dodoc</span> </dt><dd +class="description"> <!--l. 272--><p class="noindent" > + </p><!--l. 272--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">C</span></span></span> Installs the given files into a subdirectory under <span +class="ectt-1000">/usr/share/doc/${PF}/ </span>with file + mode <span +class="ectt-1000">0644</span>. The subdirectory is set by the most recent call to <span +class="ectt-1000">docinto</span>. If <span +class="ectt-1000">docinto</span> + has not yet been called, instead installs to the directory <span +class="ectt-1000">/usr/share/doc/${PF}/</span>. For + EAPIs listed in table <a +href="#x1-136018r10">11.10<!--tex4ht:ref: tab:dodoc-table --></a> as supporting <span +class="ectt-1000">-r</span>, if the first argument is <span +class="ectt-1000">-r</span>, any subsequent + arguments that are directories are installed recursively to the appropriate location; in + any other case, it is an error for a directory to be specified. Failure behaviour is EAPI + dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + + + </p></dd><dt class="description"> +<span +class="ecbx-1000">doenvd</span> </dt><dd +class="description">Installs the given environment files into <span +class="ectt-1000">/etc/env.d/</span>, by default with file mode + <span +class="ectt-1000">0644</span>. This can be overridden by setting <span +class="ectt-1000">INSOPTIONS </span>with the <span +class="ectt-1000">insopts </span>function. Failure + behaviour is EAPI dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">doexe</span> </dt><dd +class="description">Installs the given files into the directory specified by the most recent <span +class="ectt-1000">exeinto </span>call, + by default with file mode <span +class="ectt-1000">0755</span>. This can be overridden by setting <span +class="ectt-1000">EXEOPTIONS </span>with the + <span +class="ectt-1000">exeopts </span>function. If <span +class="ectt-1000">exeinto </span>has not yet been called, behaviour is undefined. Failure + behaviour is EAPI dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dohard</span> </dt><dd +class="description">Takes two parameters. Creates a hardlink from the second to the first. In EAPIs + listed in table <a +href="#x1-130001r8">11.8<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned as per section <a +href="#x1-13000011.3.3.2">11.3.3.2<!--tex4ht:ref: sec:banned-commands --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">doheader</span> </dt><dd +class="description"> <!--l. 293--><p class="noindent" > + </p><!--l. 293--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">H</span><span +class="small-caps">E</span><span +class="small-caps">A</span><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">R</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>. This can be overridden by setting <span +class="ectt-1000">INSOPTIONS </span>with the <span +class="ectt-1000">insopts </span>function. If + the first argument is <span +class="ectt-1000">-r</span>, then operates recursively, descending into any directories + given. Only available in EAPIs listed in table <a +href="#x1-136019r11">11.11<!--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-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> +<span +class="ecbx-1000">dohtml</span> </dt><dd +class="description">Installs the given HTML files into a subdirectory under <span +class="ectt-1000">/usr/share/doc/$PF/</span>. The + subdirectory is <span +class="ectt-1000">html </span>by default, but this can be overridden by setting the <span +class="ectt-1000">DOCDESTTREE</span> + variable with the <span +class="ectt-1000">docinto </span>function. Files to be installed automatically are determined by + extension and the default extensions are <span +class="ectt-1000">css</span>, <span +class="ectt-1000">gif</span>, <span +class="ectt-1000">htm</span>, <span +class="ectt-1000">html</span>, <span +class="ectt-1000">jpeg</span>, <span +class="ectt-1000">jpg</span>, <span +class="ectt-1000">js </span>and <span +class="ectt-1000">png</span>. These + default extensions can be extended or reduced (see below). The options that can be passed to + <span +class="ectt-1000">dohtml </span>are as follows: + <dl class="description"><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-r </span>— enables recursion into directories. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-V </span>— enables verbosity. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-A </span>— adds file type extensions to the default list. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-a </span>— sets file type extensions to only those specified. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-f </span>— list of files that are able to be installed. + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-x </span>— list of directories that files will not be installed from (only used in conjunction + with <span +class="ectt-1000">-r</span>). + </dd><dt class="description"> + </dt><dd +class="description"><span +class="ectt-1000">-p </span>— sets a document prefix for installed files, not to be confused with the global + offset-prefix.</dd></dl> + <!--l. 318--><p class="noindent" >Failure behaviour is EAPI dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p><!--l. 320--><p class="noindent" >It is undefined whether a failure shall occur if <span +class="ectt-1000">-r </span>is not specified and a directory is + encountered. Ebuilds must not rely upon any particular behaviour. + </p></dd><dt class="description"> +<span +class="ecbx-1000">doinfo</span> </dt><dd +class="description">Installs a GNU Info file into the <span +class="ectt-1000">/usr/share/info </span>area with file mode <span +class="ectt-1000">0644</span>. Failure + behaviour is EAPI dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">doinitd</span> </dt><dd +class="description">Installs the given initscript files into <span +class="ectt-1000">/etc/init.d</span>, by default with file mode <span +class="ectt-1000">0755</span>. This + can be overridden by setting <span +class="ectt-1000">EXEOPTIONS </span>with the <span +class="ectt-1000">exeopts </span>function. Failure behaviour is + EAPI dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + + + </dd><dt class="description"> +<span +class="ecbx-1000">doins</span> </dt><dd +class="description"> <!--l. 330--><p class="noindent" > + </p><!--l. 330--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span></span></span> Takes any number of files as arguments and installs them into <span +class="ectt-1000">INSDESTTREE</span>, by default + with file mode <span +class="ectt-1000">0644</span>. This can be overridden by setting <span +class="ectt-1000">INSOPTIONS </span>with the <span +class="ectt-1000">insopts</span> + function. If the first argument is <span +class="ectt-1000">-r</span>, then operates recursively, descending into any directories + given. For EAPIs listed in table <a +href="#x1-136020r12">11.12<!--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-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p></dd><dt class="description"> +<span +class="ecbx-1000">dolib</span> </dt><dd +class="description">For each argument, installs it into the appropriate library subdirectory under <span +class="ectt-1000">DESTTREE</span>, as + determined by Algorithm <a +href="#x1-136001r10">10<!--tex4ht:ref: alg:ebuild-libdir --></a>. The file mode is <span +class="ectt-1000">0644 </span>by default. This can be overridden by + setting <span +class="ectt-1000">LIBOPTIONS </span>with the <span +class="ectt-1000">libopts </span>function. Any symlinks are installed into the same + directory as relative links to their original target. Failure behaviour is EAPI dependent as per + section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dolib.so</span> </dt><dd +class="description">As for dolib except each file is installed with mode <span +class="ectt-1000">0755</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">dolib.a</span> </dt><dd +class="description">As for dolib except each file is installed with mode <span +class="ectt-1000">0644</span>. + <div class="algorithm"> + <!--l. 349--><p class="noindent" ><a + id="x1-136001r10"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Algorithm 10: </span><span +class="content">Determining the library directory</span></div><!--tex4ht:label?: x1-136001r10 --> +<div class="algorithmic"> +<a + id="x1-136002r129"></a> + <span class="ALCitem"><span class="ecrm-0800"> 1:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-136003r130"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 2:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> return CONF_LIBDIR_OVERRIDE + </span><a + id="x1-136004r131"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 3:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-136005r132"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 4:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-136006r133"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 5:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let LIBDIR_default=CONF_LIBDIR + </span><a + id="x1-136007r134"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 6:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-136008r135"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 7:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let LIBDIR_default=“lib” + </span><a + id="x1-136009r136"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 8:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-136010r137"></a> + <br /><span class="ALCitem"><span class="ecrm-0800"> 9:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;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-136011r138"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">10:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let abi=ABI + </span><a + id="x1-136012r139"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">11:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </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-136013r140"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">12:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let abi=DEFAULT_ABI + </span><a + id="x1-136014r141"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">13:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">else</span><span class="else-body"> +<a + id="x1-136015r142"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">14:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:14.99634pt;"> </span> let abi=“default” + </span><a + id="x1-136016r143"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">15:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> <span +class="ecbx-1000">end</span> <span +class="ecbx-1000">if</span><a + id="x1-136017r144"></a> +<br /><span class="ALCitem"><span +class="ecrm-0800">16:</span></span><span style="display:-moz-inline-box;display:inline-block;height:1px;width:4.99878pt;"> </span> return the value of LIBDIR_$abi + </div> </div><hr class="endfloat" /> + </div> + </dd><dt class="description"> +<span +class="ecbx-1000">doman</span> </dt><dd +class="description">Installs a man page into the appropriate subdirectory of <span +class="ectt-1000">/usr/share/man </span>depending upon + + + its apparent section suffix (e. g. <span +class="ectt-1000">foo.1 </span>goes to <span +class="ectt-1000">/usr/share/man/man1/foo.1</span>) with file mode + <span +class="ectt-1000">0644</span>. + <!--l. 374--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span>-<span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">S</span></span></span></p><!--l. 374--><p class="noindent" >In EAPIs listed in table <a +href="#x1-136021r13">11.13<!--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-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </p><!--l. 380--><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-136021r13">11.13<!--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"> +<span +class="ecbx-1000">domo</span> </dt><dd +class="description">Installs a <span +class="ectt-1000">.mo </span>file with file mode <span +class="ectt-1000">0644 </span>into the appropriate subdirectory of + <span +class="ectt-1000">DESTTREE/share/locale</span>, generated by taking the basename of the file, removing the + <span +class="ectt-1000">.* </span>suffix, and appending <span +class="ectt-1000">/LC_MESSAGES</span>. The name of the installed files is the + package name with <span +class="ectt-1000">.mo </span>appended. Failure behaviour is EAPI dependent as per + section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">dosbin</span> </dt><dd +class="description">As <span +class="ectt-1000">dobin</span>, but installs to <span +class="ectt-1000">DESTTREE/sbin</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">dosym</span> </dt><dd +class="description">Creates a symbolic link named as for its second parameter, pointing to the first. If the + directory containing the new link does not exist, creates it. Failure behaviour is EAPI + dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">fowners</span> </dt><dd +class="description">Acts as for <span +class="ectt-1000">chown</span>, but takes paths relative to the image directory. Failure behaviour is + EAPI dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">fperms</span> </dt><dd +class="description">Acts as for <span +class="ectt-1000">chmod</span>, but takes paths relative to the image directory. Failure behaviour is + EAPI dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">newbin</span> </dt><dd +class="description"> <!--l. 404--><p class="noindent" > + </p><!--l. 404--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">W</span><span +class="small-caps">F</span><span +class="small-caps">O</span><span +class="small-caps">O</span>-<span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">N</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-136022r14">11.14<!--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"> +<span +class="ecbx-1000">newconfd</span> </dt><dd +class="description">As for <span +class="ectt-1000">doconfd</span>, but takes two parameters as for <span +class="ectt-1000">newbin</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newdoc</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">dodoc</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newenvd</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doenvd</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newexe</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doexe</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newheader</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doheader</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newinitd</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doinitd</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newins</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doins</span>. + + + </dd><dt class="description"> +<span +class="ecbx-1000">newlib.a</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">dolib.a</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newlib.so</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">dolib.so</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newman</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">doman</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">newsbin</span> </dt><dd +class="description">As above, for <span +class="ectt-1000">dosbin</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">keepdir</span> </dt><dd +class="description">Creates a directory as for <span +class="ectt-1000">dodir</span>, and an empty file whose name starts with <span +class="ectt-1000">.keep </span>in that + directory to ensure that the directory does not get removed by the package manager + should it be empty at any point. Failure behaviour is EAPI dependent as per + section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd></dl> +<div class="table"> + + +<!--l. 439--><p class="noindent" ><a + id="x1-136018r10"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.10: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">dodoc -r</span></span></div><!--tex4ht:label?: x1-136018r10 --> +<div class="tabular"> + <table id="TBL-32" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-32-1g"><col +id="TBL-32-1" /><col +id="TBL-32-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-32-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-32-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-32-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">dodoc -r</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-32-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-2-2" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-32-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-3-2" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-4-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-5-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-6-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-32-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-32-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-32-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 456--><p class="noindent" ><a + id="x1-136019r11"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.11: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">doheader </span>and <span +class="ectt-1000">newheader</span></span></div><!--tex4ht:label?: x1-136019r11 --> +<div class="tabular"> + <table id="TBL-33" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-33-1g"><col +id="TBL-33-1" /><col +id="TBL-33-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-33-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-33-1-1" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">EAPI</span></div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-33-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">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-33-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-2-2" +class="td11"> No </td></tr><tr + style="vertical-align:baseline;" id="TBL-33-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-3-2" +class="td11"> No</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-4-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-5-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-6-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-33-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-33-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-33-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 473--><p class="noindent" ><a + id="x1-136020r12"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.12: </span><span +class="content">EAPIs supporting symlinks for <span +class="ectt-1000">doins</span></span></div><!--tex4ht:label?: x1-136020r12 --> +<div class="tabular"> + <table id="TBL-34" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-34-1g"><col +id="TBL-34-1" /><col +id="TBL-34-2" /></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="ectt-1000">doins </span><span +class="ecbx-1000">supports symlinks?</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"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-2-2" +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"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-3-2" +class="td11"> No</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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-4-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-5-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-6-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-34-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-34-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-34-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 490--><p class="noindent" ><a + id="x1-136021r13"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.13: </span><span +class="content"><span +class="ectt-1000">doman </span>language support options for EAPIs</span></div><!--tex4ht:label?: x1-136021r13 --> +<div class="tabular"> + <table id="TBL-35" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-35-1g"><col +id="TBL-35-1" /><col +id="TBL-35-2" /><col +id="TBL-35-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-35-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-35-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-35-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-35-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-35-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-2-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-35-2-3" +class="td11"> Not applicable </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-35-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-3-1" +class="td11"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-3-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-35-3-3" +class="td11"> Not applicable </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-35-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-4-1" +class="td11"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-4-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-35-4-3" +class="td11"> No </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"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-5-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-35-5-3" +class="td11"> No </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"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-6-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-35-6-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-35-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-35-7-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-35-7-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-35-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-35-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 509--><p class="noindent" ><a + id="x1-136022r14"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.14: </span><span +class="content">EAPIs supporting stdin for <span +class="ectt-1000">new* </span>commands</span></div><!--tex4ht:label?: x1-136022r14 --> +<div class="tabular"> + <table id="TBL-36" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-36-1g"><col +id="TBL-36-1" /><col +id="TBL-36-2" /></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:nowrap; text-align:center;" id="TBL-36-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-36-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-36-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-36-2-2" +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"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-36-3-2" +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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-36-4-2" +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"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-36-5-2" +class="td11"> No </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"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-36-6-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-36-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-36-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-36-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-36-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-36-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 526--><p class="noindent" ><a + id="x1-136023r15"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.15: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">--host-root </span>for <span +class="ectt-1000">*_version </span>commands</span></div><!--tex4ht:label?: x1-136023r15 --> +<div class="tabular"> + <table id="TBL-37" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-37-1g"><col +id="TBL-37-1" /><col +id="TBL-37-2" /></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">*_version </span><span +class="ecbx-1000">supports </span><span +class="ectt-1000">--host-root</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"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-37-2-2" +class="td11"> No </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"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-37-3-2" +class="td11"> No</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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-37-4-2" +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"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-37-5-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-37-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-37-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-37-6-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-37-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-37-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-37-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-37-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-37-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.9 </span> <a + id="x1-13700011.3.3.9"></a>Commands affecting install destinations</h5> +<!--l. 544--><p class="nopar" >The following commands are used to set the various destination trees, all relative to <span +class="ectt-1000">${ED} </span>in +offset-prefix aware EAPIs and relative to <span +class="ectt-1000">${D} </span>in offset-prefix agnostic EAPIs, used by the above +installation commands. They must be shell functions or aliases, due to the need to set variables +read by the above commands. Ebuilds must not run any of these commands once the current phase +function has returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">into</span> </dt><dd +class="description">Sets the value of <span +class="ectt-1000">DESTTREE </span>for future invocations of the above utilities. Creates the + directory under <span +class="ectt-1000">${ED} </span>in offset-prefix aware EAPIs or under <span +class="ectt-1000">${D} </span>in offset-prefix + agnostic EAPIs, using <span +class="ectt-1000">install -d </span>with no additional options, if it does not already + exist. Failure behaviour is EAPI dependent as per section <a +href="#x1-12900011.3.3.1">11.3.3.1<!--tex4ht:ref: sec:failure-behaviour --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">insinto</span> </dt><dd +class="description">Sets the value of <span +class="ectt-1000">INSDESTTREE </span>for future invocations of the above utilities. May + create the directory, as specified for <span +class="ectt-1000">into</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">exeinto</span> </dt><dd +class="description">Sets the install path for <span +class="ectt-1000">doexe </span>and <span +class="ectt-1000">newexe</span>. May create the directory, as specified + for <span +class="ectt-1000">into</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">docinto</span> </dt><dd +class="description">Sets the install subdirectory for <span +class="ectt-1000">dodoc </span>et al. May create the directory, as specified + for <span +class="ectt-1000">into</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">insopts</span> </dt><dd +class="description">Sets the options passed by <span +class="ectt-1000">doins </span>et al. to the <span +class="ectt-1000">install </span>command. + </dd><dt class="description"> +<span +class="ecbx-1000">diropts</span> </dt><dd +class="description">Sets the options passed by <span +class="ectt-1000">dodir </span>et al. to the <span +class="ectt-1000">install </span>command. + </dd><dt class="description"> +<span +class="ecbx-1000">exeopts</span> </dt><dd +class="description">Sets the options passed by <span +class="ectt-1000">doexe </span>et al. to the <span +class="ectt-1000">install </span>command. + </dd><dt class="description"> +<span +class="ecbx-1000">libopts</span> </dt><dd +class="description">Sets the options passed by <span +class="ectt-1000">dolib </span>et al. to the <span +class="ectt-1000">install </span>command. + </dd></dl> +<!--l. 578--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.10 </span> <a + id="x1-13800011.3.3.10"></a>Commands affecting install compression</h5> + <!--l. 580--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">S</span></span></span></p><!--l. 580--><p class="noindent" >In EAPIs listed in table <a +href="#x1-138001r16">11.16<!--tex4ht:ref: tab:compression-table --></a> as supporting controllable compression, the package manager may +optionally compress a subset of the files under the <span +class="ectt-1000">ED </span>directory in offset-prefix aware EAPIs or the +<span +class="ectt-1000">D </span>directory in offset-prefix agnostic EAPIs. To control which directories may or may not be +compressed, the package manager shall maintain two lists: +</p><!--l. 587--><p class="noindent" > + </p><ul> + <li class="compactitem">An inclusion list, which initially contains <span +class="ectt-1000">/usr/share/doc</span>, <span +class="ectt-1000">/usr/share/info </span>and + <span +class="ectt-1000">/usr/share/man</span>. + + + </li> + <li class="compactitem">An exclusion list, which initially contains <span +class="ectt-1000">/usr/share/doc/${PF}/html</span>.</li></ul> +<!--l. 592--><p class="noindent" >The optional compression shall be carried out after <span +class="ectt-1000">src_install </span>has completed, and before the +execution of any subsequent phase function. For each item in the inclusion list, pretend it has the +value of the <span +class="ectt-1000">ED </span>variable in offset-prefix aware EAPIs or the <span +class="ectt-1000">D </span>variable in offset-prefix agnostic +EAPIs prepended, then: +</p><!--l. 598--><p class="noindent" > + </p><ul> + <li class="compactitem">If it is a directory, act as if every file or directory immediately under this directory + were in the inclusion list. + </li> + <li class="compactitem">If the item is a file, it may be compressed unless it has been excluded as described + below. + </li> + <li class="compactitem">If the item does not exist, it is ignored.</li></ul> +<!--l. 604--><p class="noindent" >Whether an item is to be excluded is determined as follows: For each item in the exclusion list, +pretend it has the value of the <span +class="ectt-1000">ED </span>variable in offset-prefix aware EAPIs or the <span +class="ectt-1000">D </span>variable in +offset-prefix agnostic EAPIs prepended, then: +</p><!--l. 609--><p class="noindent" > + </p><ul> + <li class="compactitem">If it is a directory, act as if every file or directory immediately under this directory + were in the exclusion list. + </li> + <li class="compactitem">If the item is a file, it shall not be compressed. + </li> + <li class="compactitem">If the item does not exist, it is ignored.</li></ul> +<!--l. 615--><p class="noindent" >The package manager shall take appropriate steps to ensure that its compression mechanisms +behave sensibly even if an item is listed in the inclusion list multiple times, if an item is a symlink, +or if a file is already compressed. +</p><!--l. 619--><p class="noindent" >The following commands may be used in <span +class="ectt-1000">src_install </span>to alter these lists. It is an error to call any +of these functions from any other phase. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">docompress</span> </dt><dd +class="description">If the first argument is <span +class="ectt-1000">-x</span>, add each of its subsequent arguments to the + exclusion list. Otherwise, add each argument to the inclusion list. Only available in + EAPIs listed in table <a +href="#x1-138001r16">11.16<!--tex4ht:ref: tab:compression-table --></a> as supporting <span +class="ectt-1000">docompress</span>.</dd></dl> +<div class="table"> + + +<!--l. 629--><p class="noindent" ><a + id="x1-138001r16"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.16: </span><span +class="content">EAPIs supporting controllable compression</span></div><!--tex4ht:label?: x1-138001r16 --> +<div class="tabular"> + <table id="TBL-38" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-38-1g"><col +id="TBL-38-1" /><col +id="TBL-38-2" /><col +id="TBL-38-3" /></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="ecbx-1000">Supports controllable compression?</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="ecbx-1000">Supports </span><span +class="ectt-1000">docompress</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-38-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-38-2-1" +class="td11"> <span +class="ectt-1000">0 </span></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></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"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-38-3-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-3-3" +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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-38-4-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-4-3" +class="td11"> No </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"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-38-5-2" +class="td11"> No </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-5-3" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-38-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-38-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-38-6-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-6-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-38-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-38-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-38-7-2" +class="td11"> Yes </td><td style="white-space:nowrap; text-align:left;" id="TBL-38-7-3" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-38-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-38-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.11 </span> <a + id="x1-13900011.3.3.11"></a>Use List Functions</h5> +<!--l. 647--><p class="nopar" >These functions provide behaviour based upon set or unset use flags. Ebuilds must not run any of +these commands once the current phase function has returned. Ebuilds must not run any of these +functions in global scope. +</p><!--l. 651--><p class="noindent" >If any of these functions is called with a flag value that is not included in <span +class="ectt-1000">IUSE_EFFECTIVE</span>, either +behaviour is undefined or it is an error as decided by table <a +href="#x1-139001r17">11.17<!--tex4ht:ref: tab:use-list-strictness --></a>. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">use</span> </dt><dd +class="description">Returns shell true (0) if the first argument (a <span +class="ectt-1000">USE </span>flag name) is enabled, false otherwise. + If the flag name is prefixed with <span +class="ectt-1000">!</span>, returns true if the flag is disabled, and false if it is + enabled. It is guaranteed that this command is quiet. + </dd><dt class="description"> +<span +class="ecbx-1000">usev</span> </dt><dd +class="description">The same as <span +class="ectt-1000">use</span>, but also prints the flag name if the condition is met. + </dd><dt class="description"> +<span +class="ecbx-1000">useq</span> </dt><dd +class="description">Deprecated synonym for <span +class="ectt-1000">use</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">use_with</span> </dt><dd +class="description"> <!--l. 661--><p class="noindent" > + </p><!--l. 661--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">W</span><span +class="small-caps">I</span><span +class="small-caps">T</span><span +class="small-caps">H</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-139002r18">11.18<!--tex4ht:ref: tab:use-with-third-arg --></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>. + </p></dd><dt class="description"> +<span +class="ecbx-1000">use_enable</span> </dt><dd +class="description">Works the same as <span +class="ectt-1000">use_with()</span>, but outputs <span +class="ectt-1000">--enable- </span>or <span +class="ectt-1000">--disable-</span> + instead of <span +class="ectt-1000">--with- </span>or <span +class="ectt-1000">--without-</span>. + </dd><dt class="description"> +<span +class="ecbx-1000">usex</span> </dt><dd +class="description"> <!--l. 671--><p class="noindent" > + </p><!--l. 671--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">X</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-139003r19">11.19<!--tex4ht:ref: tab:usex-table --></a> as supporting <span +class="ectt-1000">usex</span>.</p></dd></dl> +<div class="table"> + + +<!--l. 681--><p class="noindent" ><a + id="x1-139001r17"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.17: </span><span +class="content">EAPI Behaviour for Use Queries not in IUSE_EFFECTIVE</span></div><!--tex4ht:label?: x1-139001r17 --> +<div class="tabular"> + <table id="TBL-39" class="tabular" +cellspacing="0" cellpadding="0" +><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">Behaviour</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"> <span +class="ectt-1000">0 </span></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"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-39-3-2" +class="td11"> Undefined</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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-39-4-2" +class="td11"> Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-39-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-39-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-39-5-2" +class="td11"> Undefined </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-39-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-39-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-39-6-2" +class="td11"> Error </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-39-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-39-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-39-7-2" +class="td11"> Error </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-39-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-39-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 698--><p class="noindent" ><a + id="x1-139002r18"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.18: </span><span +class="content">EAPIs supporting empty third argument in <span +class="ectt-1000">use_with </span>and <span +class="ectt-1000">use_enable</span></span></div><!--tex4ht:label?: x1-139002r18 --> +<div class="tabular"> + <table id="TBL-40" class="tabular" +cellspacing="0" cellpadding="0" +><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 empty third argument?</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"> <span +class="ectt-1000">0 </span></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"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-40-3-2" +class="td11"> No</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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-40-4-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-40-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-5-1" +class="td11"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-40-5-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-40-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-40-6-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-40-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-40-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-40-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-40-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<div class="table"> + + +<!--l. 716--><p class="noindent" ><a + id="x1-139003r19"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.19: </span><span +class="content">EAPIs supporting <span +class="ectt-1000">usex</span></span></div><!--tex4ht:label?: x1-139003r19 --> +<div class="tabular"> + <table id="TBL-41" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-41-1g"><col +id="TBL-41-1" /><col +id="TBL-41-2" /></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 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">Supports </span><span +class="ectt-1000">usex</span><span +class="ecbx-1000">?</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"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-41-2-2" +class="td11"> No </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"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-41-3-2" +class="td11"> No</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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-41-4-2" +class="td11"> No </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"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-41-5-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-41-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-41-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-41-6-2" +class="td11"> No </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-41-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-41-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-41-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-41-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-41-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.12 </span> <a + id="x1-14000011.3.3.12"></a>Text List Functions</h5> +<!--l. 733--><p class="nopar" >These functions check whitespace-separated lists for a particular value. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">has</span> </dt><dd +class="description">Returns shell true (0) if the first argument (a word) is found in the list of subsequent + arguments, false otherwise. Guaranteed quiet. + </dd><dt class="description"> +<span +class="ecbx-1000">hasv</span> </dt><dd +class="description">The same as <span +class="ectt-1000">has</span>, but also prints the first argument if found. + </dd><dt class="description"> +<span +class="ecbx-1000">hasq</span> </dt><dd +class="description">Deprecated synonym for <span +class="ectt-1000">has</span>.</dd></dl> +<!--l. 742--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.13 </span> <a + id="x1-14100011.3.3.13"></a>Misc Commands</h5> +<!--l. 743--><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"> +<span +class="ecbx-1000">dosed</span> </dt><dd +class="description">Takes any number of arguments, which can be files or <span +class="ectt-1000">sed </span>expressions. For each + argument, if it names, relative to <span +class="ectt-1000">ED </span>(offset-prefix aware EAPIs) or <span +class="ectt-1000">D </span>(offset-prefix + agnostic EAPIs) a file which exists, then <span +class="ectt-1000">sed </span>is run with the current expression on that + file. Otherwise, the current expression is set to the text of the argument. The initial + value of the expression is <span +class="ectt-1000">s:${ED}::g </span>in offset-prefix aware EAPIs and <span +class="ectt-1000">s:${D}::g </span>in + offset-prefix agnostic EAPIs. In EAPIs listed in table <a +href="#x1-130001r8">11.8<!--tex4ht:ref: tab:banned-commands-table --></a>, this command is banned + as per section <a +href="#x1-13000011.3.3.2">11.3.3.2<!--tex4ht:ref: sec:banned-commands --></a>. + </dd><dt class="description"> +<span +class="ecbx-1000">unpack</span> </dt><dd +class="description">Unpacks one or more source archives, in order, into the current directory. After + unpacking, must ensure that all filesystem objects inside the current working directory + (but not the current working directory itself) have permissions <span +class="ectt-1000">a+r,u+w,go-w </span>and that + all directories under the current working directory additionally have permissions <span +class="ectt-1000">a+x</span>. + <!--l. 761--><p class="noindent" >All arguments to <span +class="ectt-1000">unpack </span>must be either a filename without path, in which case <span +class="ectt-1000">unpack</span> + looks in <span +class="ectt-1000">DISTDIR </span>for the file, or start with the string <span +class="ectt-1000">./</span>, in which case <span +class="ectt-1000">unpack </span>uses the + argument as a path relative to the working directory. + </p><!--l. 765--><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. 768--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span>-<span +class="small-caps">E</span><span +class="small-caps">X</span><span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span></span></span></p><!--l. 768--><p class="noindent" >Must be able to unpack the following file formats, if the relevant binaries are available: + </p> + <ul class="itemize1"> + <li class="itemize">tar files (<span +class="ectt-1000">*.tar</span>). Ebuilds must ensure that GNU tar installed. + </li> + <li class="itemize">gzip-compressed tar files (<span +class="ectt-1000">*.tar.gz, *.tgz, *.tar.Z, *.tbz</span>). Ebuilds must + ensure that GNU gzip and GNU tar are installed. + + + </li> + <li class="itemize">bzip2-compressed tar files (<span +class="ectt-1000">*.tar.bz2, *.tbz2, *.tar.bz</span>). Ebuilds must + ensure that bzip2 and GNU tar are installed. + </li> + <li class="itemize">zip files (<span +class="ectt-1000">*.zip, *.ZIP, *.jar</span>). Ebuilds must ensure that Info-ZIP Unzip is + installed. + </li> + <li class="itemize">gzip files (<span +class="ectt-1000">*.gz, *.Z, *.z</span>). Ebuilds must ensure that GNU gzip is installed. + </li> + <li class="itemize">bzip2 files (<span +class="ectt-1000">*.bz, *.bz2</span>). Ebuilds must ensure that bzip2 is installed. + </li> + <li class="itemize">7zip files (<span +class="ectt-1000">*.7z, *.7Z</span>). Ebuilds must ensure that P7ZIP is installed. + </li> + <li class="itemize">rar files (<span +class="ectt-1000">*.rar, *.RAR</span>). Ebuilds must ensure that RARLAB’s unrar is installed. + </li> + <li class="itemize">LHA archives (<span +class="ectt-1000">*.LHA, *.LHa, *.lha, *.lhz</span>). Ebuilds must ensure that the lha + program is installed. + </li> + <li class="itemize">ar archives (<span +class="ectt-1000">*.a</span>). Ebuilds must ensure that GNU binutils is installed. + </li> + <li class="itemize">deb packages (<span +class="ectt-1000">*.deb</span>). Ebuilds must ensure that the deb2targz program is installed + on those platforms where the GNU binutils ar program is not available and the + installed ar program is incompatible with GNU archives. Otherwise, ebuilds must + ensure that GNU binutils is installed. + </li> + <li class="itemize">lzma-compressed files (<span +class="ectt-1000">*.lzma</span>). Ebuilds must ensure that LZMA Utils is installed. + </li> + <li class="itemize">lzma-compressed tar files (<span +class="ectt-1000">*.tar.lzma</span>). Ebuilds must ensure that LZMA Utils + and GNU tar are installed. + </li> + <li class="itemize">xz-compressed files (<span +class="ectt-1000">*.xz</span>). Ebuilds must ensure that XZ Utils is installed. Only + for EAPIs listed in table <a +href="#x1-141001r20">11.20<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting xz. + </li> + <li class="itemize">xz-compressed tar files (<span +class="ectt-1000">*.tar.xz</span>). Ebuilds must ensure that XZ Utils and GNU + tar are installed. Only for EAPIs listed in table <a +href="#x1-141001r20">11.20<!--tex4ht:ref: tab:unpack-extensions-table --></a> as supporting xz.</li></ul> + <!--l. 795--><p class="nopar" >It is up to the ebuild to ensure that the relevant external utilities are available, whether by + being in the system set or via dependencies. +</p> + <div class="table"> + <!--l. 799--><p class="noindent" ><a + id="x1-141001r20"></a></p><hr class="float" /><div class="float" +> + <div class="caption" +><span class="id">Table 11.20: </span><span +class="content"><span +class="ectt-1000">unpack </span>extensions for EAPIs</span></div><!--tex4ht:label?: x1-141001r20 --> + <div class="tabular"> + <table id="TBL-42" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-42-1g"><col +id="TBL-42-1" /><col +id="TBL-42-2" /></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="ectt-1000">.xz </span><span +class="ecbx-1000">and </span><span +class="ectt-1000">.tar.xz</span><span +class="ecbx-1000">?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-42-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-42-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-42-2-2" +class="td11"> No </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"> <span +class="ectt-1000">1 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-42-3-2" +class="td11"> No</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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-42-4-2" +class="td11"> No </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"> <span +class="ectt-1000">3 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-42-5-2" +class="td11"> Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-42-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-42-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-42-6-2" +class="td11"> Yes </td></tr><tr + style="vertical-align:baseline;" id="TBL-42-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-42-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td> <td style="white-space:nowrap; text-align:left;" id="TBL-42-7-2" +class="td11"> Yes</td> +</tr><tr + style="vertical-align:baseline;" id="TBL-42-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-42-8-1" +class="td11"> </td></tr></table> + </div> </div><hr class="endfloat" /> + </div> + </dd><dt class="description"> +<span +class="ecbx-1000">inherit</span> </dt><dd +class="description">See section <a +href="#x1-11400010.1">10.1<!--tex4ht:ref: sec:inherit --></a>. + + + </dd><dt class="description"> +<span +class="ecbx-1000">default</span> </dt><dd +class="description"> <!--l. 818--><p class="noindent" > + </p><!--l. 818--><p class="noindent" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span></span></span> Calls the <span +class="ectt-1000">default_ </span>function for the current phase (see section <a +href="#x1-1110009.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-141002r21">11.21<!--tex4ht:ref: tab:default-function-table --></a>.</p></dd></dl> +<div class="table"> + + +<!--l. 825--><p class="noindent" ><a + id="x1-141002r21"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 11.21: </span><span +class="content">EAPIs supporting the <span +class="ectt-1000">default </span>function</span></div><!--tex4ht:label?: x1-141002r21 --> +<div class="tabular"> + <table id="TBL-43" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-43-1g"><col +id="TBL-43-1" /><col +id="TBL-43-2" /></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:nowrap; text-align:center;" id="TBL-43-1-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Supports </span><span +class="ectt-1000">default </span><span +class="ecbx-1000">function?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-43-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-43-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-43-2-2" +class="td11"> No </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"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-43-3-2" +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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-43-4-2" +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"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-43-5-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-43-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-43-6-1" +class="td11"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-43-6-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-43-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-43-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-43-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-43-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-43-8-1" +class="td11"> </td></tr></table></div> + + +</div><hr class="endfloat" /> +</div> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.14 </span> <a + id="x1-14200011.3.3.14"></a>Debug Commands</h5> +<!--l. 842--><p class="nopar" >The following commands are available for debugging. Normally all of these commands should be no +ops; a package manager may provide a special debug mode where these commands instead do +something. Ebuilds must not run any of these commands once the current phase function has +returned. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">debug-print</span> </dt><dd +class="description">If in a special debug mode, the arguments should be outputted or recorded + using some kind of debug logging. + </dd><dt class="description"> +<span +class="ecbx-1000">debug-print-function</span> </dt><dd +class="description">Calls <span +class="ectt-1000">debug-print </span>with <span +class="ectt-1000">$1: entering function </span>as the first + argument and the remaining arguments as additional arguments. + </dd><dt class="description"> +<span +class="ecbx-1000">debug-print-section</span> </dt><dd +class="description">Calls <span +class="ectt-1000">debug-print </span>with <span +class="ectt-1000">now in section $*</span>.</dd></dl> +<!--l. 854--><p class="nopar" > +</p> +<h5 class="subsubsectionHead"><span class="titlemark">11.3.3.15 </span> <a + id="x1-14300011.3.3.15"></a>Reserved Commands and Variables</h5> +<!--l. 856--><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. 861--><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> +<!--l. 1--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">11.4 </span> <a + id="x1-14400011.4"></a>The state of the system between functions</h3> + + +<!--l. 4--><p class="nopar" >For the sake of this section: +</p><!--l. 7--><p class="noindent" > + </p><ul> + <li class="compactitem">Variancy is any package manager action that modifies either <span +class="ectt-1000">ROOT </span>or <span +class="ectt-1000">/ </span>in any way that + isn’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. 17--><p class="noindent" >The following exclusivity and invariancy requirements are mandated: +</p><!--l. 20--><p class="noindent" > + </p><ul> + <li class="compactitem">No variancy shall be introduced at any point between a package’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_</span> + <span +class="ectt-1000">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-14500012"></a>Merging and Unmerging</h2> +<!--l. 3--><p class="nopar" ><span class="paragraphHead"><a + id="x1-14600012"></a><span +class="ecbx-1000">Note:</span></span> +In this chapter, <span +class="ecti-1000">file </span>and <span +class="ecti-1000">regular file </span>have their Unix meanings. +</p><!--l. 5--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">12.1 </span> <a + id="x1-14700012.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">12.2 </span> <a + id="x1-14800012.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">12.2.1 </span> <a + id="x1-14900012.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">12.2.2 </span> <a + id="x1-15000012.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">12.3 </span> <a + id="x1-15100012.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">12.3.1 </span> <a + id="x1-15200012.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">12.3.2 </span> <a + id="x1-15300012.3.2"></a>File modification times</h4> + <!--l. 69--><p class="nopar" > + <span class="fbox"><span +class="eccc-1000"><span +class="small-caps">M</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">M</span><span +class="small-caps">E</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">V</span><span +class="small-caps">E</span></span></span></p><!--l. 69--><p class="noindent" >In EAPIs listed in table <a +href="#x1-153001r1">12.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-153001r1"></a></p><hr class="float" /><div class="float" +> + + + <div class="caption" +><span class="id">Table 12.1: </span><span +class="content">Preservation of file modification times (mtimes)</span></div><!--tex4ht:label?: x1-153001r1 --> +<div class="tabular"> + <table id="TBL-44" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-44-1g"><col +id="TBL-44-1" /><col +id="TBL-44-2" /></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 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">mtimes preserved?</span></div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-44-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-44-2-1" +class="td11"> <span +class="ectt-1000">0 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-44-2-2" +class="td11"> Undefined </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"> <span +class="ectt-1000">1 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-44-3-2" +class="td11"> Undefined</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"> <span +class="ectt-1000">2 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-44-4-2" +class="td11"> Undefined </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"> <span +class="ectt-1000">3 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-44-5-2" +class="td11"> Yes </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"> <span +class="ectt-1000">4 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-44-6-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-44-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-44-7-1" +class="td11"> <span +class="ectt-1000">5 </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-44-7-2" +class="td11"> Yes </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-44-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-44-8-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-15400012.3.3"></a>Configuration File Protection</h4> +<!--l. 110--><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-590005.3">5.3<!--tex4ht:ref: sec:profile-variables --></a>) control the paths for which this must be enforced. +</p><!--l. 115--><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. 119--><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. 134--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">12.4 </span> <a + id="x1-15500012.4"></a>Symlinks</h3> +<!--l. 136--><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. 141--><p class="noindent" >Ebuilds must not attempt to merge a symlink on top of a directory. +</p><!--l. 143--><p class="nopar" > +</p> +<h4 class="subsectionHead"><span class="titlemark">12.4.1 </span> <a + id="x1-15600012.4.1"></a>Rewriting</h4> +<!--l. 145--><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. 148--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">12.5 </span> <a + id="x1-15700012.5"></a>Hard links</h3> +<!--l. 150--><p class="nopar" >A hard link may be merged either as a single file with links or as multiple independent +files. +</p><!--l. 152--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">12.6 </span> <a + id="x1-15800012.6"></a>Other Files</h3> +<!--l. 154--><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 13</span><br /><a + id="x1-15900013"></a>Metadata Cache</h2> +<h3 class="sectionHead"><span class="titlemark">13.1 </span> <a + id="x1-16000013.1"></a>Directory Contents</h3> +<!--l. 6--><p class="nopar" >The <span +class="ectt-1000">profiles/metadata/cache </span>directory, if it exists, contains directories whose names are the +same as categories in the repository. Each subdirectory may optionally contain one file per +package version in that category, named <span +class="ectt-1000"><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">13.2 </span> <a + id="x1-16100013.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-67002r2">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">Unused; previously used for old-style virtual <span +class="ectt-1000">PROVIDE</span>. + </dd><dt class="compactenum"> + 15. </dt><dd +class="compactenum">The ebuild API version to which this package conforms (<span +class="ectt-1000">EAPI</span>) + + + </dd><dt class="compactenum"> + 16. </dt><dd +class="compactenum">Properties (<span +class="ectt-1000">PROPERTIES</span>). In some EAPIs, may optionally be blank, regardless of ebuild + metadata; see table <a +href="#x1-67002r2">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-73001r4">7.4<!--tex4ht:ref: tab:defined-phases-table --></a>. + </dd><dt class="compactenum"> + 18. </dt><dd +class="compactenum">Blank lines to pad the file to 22 lines long</dd></dl> +<!--l. 41--><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 14</span><br /><a + id="x1-16200014"></a>Glossary</h2> +<!--l. 4--><p class="nopar" >This section contains explanations of some of the terms used in this document whose meaning may +not be immediately obvious. + </p><dl class="description"><dt class="description"> +<span +class="ecbx-1000">qualified package name</span> </dt><dd +class="description">A package name along with its associated category. For example, + <span +class="ectt-1000">app-editors/vim </span>is a qualified package name. + </dd><dt class="description"> +<span +class="ecbx-1000">new-style virtual</span> </dt><dd +class="description">A new-style virtual is a normal package in the <span +class="ectt-1000">virtual </span>category which + installs no files and uses its dependency requirements to pull in a ‘provider’. Historically, + old-style virtuals required special handling from the package manager; new-style + virtuals do not. + </dd><dt class="description"> +<span +class="ecbx-1000">stand-alone repository</span> </dt><dd +class="description">An (ebuild) repository which is intended to function on its own + as the only, or primary, repository on a system. Contrast with <span +class="ecti-1000">slave repository </span>below. + </dd><dt class="description"> +<span +class="ecbx-1000">slave repository, non-stand-alone repository</span> </dt><dd +class="description">An (ebuild) repository which is not + complete enough to function on its own, but needs one or more <span +class="ecti-1000">master repositories </span>to + satisfy dependencies and provide repository-level support files. Known in Portage as + an overlay. + </dd><dt class="description"> +<span +class="ecbx-1000">master repository</span> </dt><dd +class="description">See above. + </dd></dl> + + + + + + +<a + id="x1-162001r218"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix A</span><br /><a + id="x1-163000A"></a>metadata.xml</h2> +<!--l. 4--><p class="nopar" >The <span +class="ectt-1000">metadata.xml </span>file is used to contain extra package- or category-level information beyond what +is stored in ebuild metadata. Its exact format is strictly beyond the scope of this document, and is +described in the DTD file located at <a +href="http://www.gentoo.org/dtd/metadata.dtd" class="url" ><span +class="ectt-1000">http://www.gentoo.org/dtd/metadata.dtd</span></a>. + + +<a + id="x1-163001r218"></a> +</p> +<h2 class="appendixHead"><span class="titlemark">Appendix B</span><br /><a + id="x1-164000B"></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 not explicitly listed. + </li> + <li class="compactitem">Any Portage configuration file. + </li> + <li class="compactitem">The VDB (<span +class="ectt-1000">/var/db/pkg</span>). Ebuilds must not access this or rely upon it existing or being + in any particular format. + </li> + <li class="compactitem">The <span +class="ectt-1000">portageq </span>command. The <span +class="ectt-1000">has_version </span>and <span +class="ectt-1000">best_version </span>commands are + available as functions. + </li> + <li class="compactitem">The <span +class="ectt-1000">emerge </span>command. + </li> + <li class="compactitem">Binary packages. + </li> + <li class="compactitem">The <span +class="ectt-1000">PORTDIR_OVERLAY </span>variable, and overlay behaviour in general.</li></ul> + + +<a + id="x1-164001r218"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix C</span><br /><a + id="x1-165000C"></a>Historical Curiosities</h2> +<!--l. 29--><p class="nopar" >The items described in this chapter are included for information only. They were deprecated or +abandoned long before <span +class="ectt-1000">EAPI </span>was introduced. Ebuilds must not use these features, and package +managers should not be changed to support them. +</p> +<h3 class="sectionHead"><span class="titlemark">C.1 </span> <a + id="x1-166000C.1"></a>If-else use blocks</h3> +<!--l. 35--><p class="nopar" >Historically, Portage supported if-else use conditionals, as shown by listing <a +href="#x1-166001r1">C.1<!--tex4ht:ref: lst:if-else-use-listing --></a>. The block before +the colon would be taken if the condition was met, and the block after the colon would be taken if +the condition was not met. +</p><!--l. 39--><p class="noindent" >This feature was deprecated and removed from the tree long before the introduction of +<span +class="ectt-1000">EAPI</span>. + + +</p><!--l. 42--><p class="noindent" ><a + id="x1-166001r1"></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-166001r1 --> +<div class="verbatiminput"> +<span +class="ectt-1000">DEPEND="</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> flag?</span><span +class="ectt-1000"> (</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> taken/if-true</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> )</span><span +class="ectt-1000"> :</span><span +class="ectt-1000"> (</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> taken/if-false</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> )</span> +<span +class="ectt-1000"> </span><br /><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> </span><span +class="ectt-1000"> "</span> +</div> + + +</div><hr class="endfloat" /> +<h3 class="sectionHead"><span class="titlemark">C.2 </span> <a + id="x1-167000C.2"></a>cvs Versions</h3> +<!--l. 48--><p class="nopar" >Portage has very crude support for CVS packages. The package <span +class="ectt-1000">foo </span>could contain a file named +<span +class="ectt-1000">foo-cvs.1.2.3.ebuild</span>. This version would order <span +class="ecti-1000">higher </span>than any non-CVS version (including +<span +class="ectt-1000">foo-2.ebuild</span>). This feature has not seen real world use and breaks versioned dependencies, so it +must not be used. +</p><!--l. 53--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">C.3 </span> <a + id="x1-168000C.3"></a>use.defaults</h3> +<!--l. 55--><p class="nopar" >The <span +class="ectt-1000">use.defaults </span>file in the profile directory was used to implement ‘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. 59--><p class="nopar" > +</p> +<h3 class="sectionHead"><span class="titlemark">C.4 </span> <a + id="x1-169000C.4"></a>Old-style Virtuals</h3> +<!--l. 61--><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. 65--><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>, and were phased out via GLEP +37 <span class="cite">[<a +href="#XGlep37">2</a>]</span>. + + + + + + +<a + id="x1-169001r218"></a> +</p> +<h2 class="appendixHead"><span class="titlemark">Appendix D</span><br /><a + id="x1-170000D"></a>Feature Availability by EAPI</h2> +<!--l. 3--><p class="nopar" ><span class="paragraphHead"><a + id="x1-171000D"></a><span +class="ecbx-1000">Note:</span></span> +This chapter is informative and for convenience only. Refer to the main text for specifics. + + + <a + id="x1-171001r1"></a> +</p><!--l. 9--><div class="longtable"> <table id="TBL-45" class="longtable" +cellspacing="0" cellpadding="0" +><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" /><col +id="TBL-45-6" /><col +id="TBL-45-7" /><col +id="TBL-45-8" /></colgroup> +<tr + style="vertical-align:baseline;" id="TBL-45-1-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-45-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-171001r1 --> </div> <a + id="x1-171002"></a> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-45-2-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-45-2-1" +class="td11"></td><!--cmidrule--> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-45-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-45-3-2" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;"><span +class="ecbx-1000">Reference</span></div> </td><td colspan="4" style="white-space:nowrap; text-align:center;" id="TBL-45-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-45-4-"><td style="white-space:nowrap; text-align:center;" id="TBL-45-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-45-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-45-4-3" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">0</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-45-4-4" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">1</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-45-4-5" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">2</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-45-4-6" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">3</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-45-4-7" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">4</div> </td><td style="white-space:nowrap; text-align:center;" id="TBL-45-4-8" +class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:center;">5</div> +</td></tr><tr + style="vertical-align:baseline;" id="TBL-45-5-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-45-5-1" +class="td11"></td><!--cmidrule--> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-6-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-45-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-7-1" +class="td11"></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-7-2" +class="td11"> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-7-3" +class="td11"> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-7-4" +class="td11"> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-7-5" +class="td11"> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-7-6" +class="td11"> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-7-7" +class="td11"> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-7-8" +class="td11"> +</td></tr> +<tr + style="vertical-align:baseline;" id="TBL-45-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-20-1" +class="td11"> Stable use masking/forcing </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-20-2" +class="td11"> stablemask p<a +href="#x1-580005.2.11">59<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-20-3" +class="td11"> + <!--l. 44--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-20-4" +class="td11"> + <!--l. 44--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-20-5" +class="td11"> + <!--l. 44--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-20-6" +class="td11"> + <!--l. 44--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-20-7" +class="td11"> + <!--l. 44--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-20-8" +class="td11"> + <!--l. 44--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-21-1" +class="td11"> <span +class="ectt-1000">IUSE </span>defaults </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-21-2" +class="td11"> iuse-defaults p<a +href="#x1-670007.3">77<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-21-3" +class="td11"> + <!--l. 47--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-21-4" +class="td11"> + <!--l. 47--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-21-5" +class="td11"> + <!--l. 47--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-21-6" +class="td11"> + <!--l. 47--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-21-7" +class="td11"> + <!--l. 47--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-21-8" +class="td11"> + <!--l. 47--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-22-1" +class="td11"> <span +class="ectt-1000">REQUIRED_USE </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-22-2" +class="td11"> required-use p<a +href="#x1-670007.3">77<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-22-3" +class="td11"> + <!--l. 50--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-22-4" +class="td11"> + <!--l. 50--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-22-5" +class="td11"> + <!--l. 50--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-22-6" +class="td11"> + <!--l. 50--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-22-7" +class="td11"> + <!--l. 50--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-22-8" +class="td11"> + <!--l. 50--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-23-1" +class="td11"> <span +class="ectt-1000">PROPERTIES </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-23-2" +class="td11"> properties p<a +href="#x1-670007.3">77<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-23-3" +class="td11"> + <!--l. 53--><p class="noindent" >Optionally </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-23-4" +class="td11"> + <!--l. 53--><p class="noindent" >Optionally </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-23-5" +class="td11"> + <!--l. 53--><p class="noindent" >Optionally </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-23-6" +class="td11"> + <!--l. 53--><p class="noindent" >Optionally </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-23-7" +class="td11"> + <!--l. 53--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-23-8" +class="td11"> + <!--l. 53--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-24-1" +class="td11"> <span +class="ectt-1000">RDEPEND=DEPEND </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-24-2" +class="td11"> rdepend-depend p<a +href="#x1-700007.3.3">84<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-24-3" +class="td11"> + <!--l. 56--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-24-4" +class="td11"> + <!--l. 56--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-24-5" +class="td11"> + <!--l. 56--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-24-6" +class="td11"> + <!--l. 56--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-24-7" +class="td11"> + <!--l. 56--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-24-8" +class="td11"> + <!--l. 56--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-25-1" +class="td11"> <span +class="ectt-1000">DEFINED_PHASES </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-25-2" +class="td11"> defined-phases p<a +href="#x1-720007.4">88<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-25-3" +class="td11"> + <!--l. 59--><p class="noindent" >Optionally </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-25-4" +class="td11"> + <!--l. 59--><p class="noindent" >Optionally </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-25-5" +class="td11"> + <!--l. 59--><p class="noindent" >Optionally </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-25-6" +class="td11"> + <!--l. 59--><p class="noindent" >Optionally </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-25-7" +class="td11"> + <!--l. 59--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-25-8" +class="td11"> + <!--l. 59--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-26-1" +class="td11"> <span +class="ectt-1000">?? ( ) groups </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-26-2" +class="td11"> at-most-one-of p<a +href="#x1-760008.2">98<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-26-3" +class="td11"> + <!--l. 62--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-26-4" +class="td11"> + <!--l. 62--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-26-5" +class="td11"> + <!--l. 62--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-26-6" +class="td11"> + <!--l. 62--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-26-7" +class="td11"> + <!--l. 62--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-26-8" +class="td11"> + <!--l. 62--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-27-1" +class="td11"> <span +class="ectt-1000">SRC_URI </span>arrows </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-27-2" +class="td11"> src-uri-arrows p<a +href="#x1-920008.2.10">116<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-27-3" +class="td11"> + <!--l. 65--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-27-4" +class="td11"> + <!--l. 65--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-27-5" +class="td11"> + <!--l. 65--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-27-6" +class="td11"> + <!--l. 65--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-27-7" +class="td11"> + <!--l. 65--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-27-8" +class="td11"> + <!--l. 65--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-28-1" +class="td11"> Slot dependencies </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-28-2" +class="td11"> slot-deps p<a +href="#x1-860008.2.6.3">114<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-28-3" +class="td11"> + <!--l. 68--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-28-4" +class="td11"> + <!--l. 68--><p class="noindent" >Named </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-28-5" +class="td11"> + <!--l. 68--><p class="noindent" >Named </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-28-6" +class="td11"> + <!--l. 68--><p class="noindent" >Named </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-28-7" +class="td11"> + <!--l. 68--><p class="noindent" >Named </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-28-8" +class="td11"> + <!--l. 68--><p class="noindent" >Named + and + Operator </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-29-1" +class="td11"> Sub-slots </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-29-2" +class="td11"> sub-slot p<a +href="#x1-860008.2.6.3">114<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-29-3" +class="td11"> + <!--l. 71--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-29-4" +class="td11"> + <!--l. 71--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-29-5" +class="td11"> + <!--l. 71--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-29-6" +class="td11"> + <!--l. 71--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-29-7" +class="td11"> + <!--l. 71--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-29-8" +class="td11"> + <!--l. 71--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-30-1" +class="td11"> Use dependencies </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-30-2" +class="td11"> use-deps p<a +href="#x1-820008.2.6">105<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-30-3" +class="td11"> + <!--l. 74--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-30-4" +class="td11"> + <!--l. 74--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-30-5" +class="td11"> + <!--l. 74--><p class="noindent" >2-style </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-30-6" +class="td11"> + <!--l. 74--><p class="noindent" >2-style </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-30-7" +class="td11"> + <!--l. 74--><p class="noindent" >4-style </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-30-8" +class="td11"> + <!--l. 74--><p class="noindent" >4-style </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-31-1" +class="td11"> <span +class="ectt-1000">! </span>blockers </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-31-2" +class="td11"> bang-strength p<a +href="#x1-850008.2.6.2">111<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-31-3" +class="td11"> + <!--l. 77--><p class="noindent" >Unspecified </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-31-4" +class="td11"> + <!--l. 77--><p class="noindent" >Unspecified </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-31-5" +class="td11"> + <!--l. 77--><p class="noindent" >Weak </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-31-6" +class="td11"> + <!--l. 77--><p class="noindent" >Weak </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-31-7" +class="td11"> + <!--l. 77--><p class="noindent" >Weak </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-31-8" +class="td11"> + <!--l. 77--><p class="noindent" >Weak </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-45-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-32-1" +class="td11"> <span +class="ectt-1000">!! </span>blockers </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-32-2" +class="td11"> bang-strength p<a +href="#x1-850008.2.6.2">111<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-32-3" +class="td11"> + <!--l. 80--><p class="noindent" >Forbidden </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-32-4" +class="td11"> + <!--l. 80--><p class="noindent" >Forbidden </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-32-5" +class="td11"> + <!--l. 80--><p class="noindent" >Strong </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-32-6" +class="td11"> + <!--l. 80--><p class="noindent" >Strong </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-32-7" +class="td11"> + <!--l. 80--><p class="noindent" >Strong </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-32-8" +class="td11"> + <!--l. 80--><p class="noindent" >Strong </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-33-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-45-33-2" +class="td11"> s-workdir-fallback p<a +href="#x1-950009.1.1">119<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-33-3" +class="td11"> + <!--l. 83--><p class="noindent" >Always </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-33-4" +class="td11"> + <!--l. 83--><p class="noindent" >Always </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-33-5" +class="td11"> + <!--l. 83--><p class="noindent" >Always </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-33-6" +class="td11"> + <!--l. 83--><p class="noindent" >Always </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-33-7" +class="td11"> + <!--l. 83--><p class="noindent" >Conditional </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-33-8" +class="td11"> + <!--l. 83--><p class="noindent" >Conditional </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-34-1" +class="td11"> <span +class="ectt-1000">pkg_pretend </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-34-2" +class="td11"> pkg-pretend p<a +href="#x1-960009.1.2">122<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-34-3" +class="td11"> + <!--l. 86--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-34-4" +class="td11"> + <!--l. 86--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-34-5" +class="td11"> + <!--l. 86--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-34-6" +class="td11"> + <!--l. 86--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-34-7" +class="td11"> + <!--l. 86--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-34-8" +class="td11"> + <!--l. 86--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-35-1" +class="td11"> <span +class="ectt-1000">src_prepare </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-35-2" +class="td11"> src-prepare p<a +href="#x1-990009.1.5">126<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-35-3" +class="td11"> + <!--l. 89--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-35-4" +class="td11"> + <!--l. 89--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-35-5" +class="td11"> + <!--l. 89--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-35-6" +class="td11"> + <!--l. 89--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-35-7" +class="td11"> + <!--l. 89--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-35-8" +class="td11"> + <!--l. 89--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-36-1" +class="td11"> <span +class="ectt-1000">src_configure </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-36-2" +class="td11"> src-configure p<a +href="#x1-1000009.1.6">129<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-36-3" +class="td11"> + <!--l. 92--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-36-4" +class="td11"> + <!--l. 92--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-36-5" +class="td11"> + <!--l. 92--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-36-6" +class="td11"> + <!--l. 92--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-36-7" +class="td11"> + <!--l. 92--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-36-8" +class="td11"> + <!--l. 92--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-37-1" +class="td11"> <span +class="ectt-1000">src_compile </span>style </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-37-2" +class="td11"> src-compile p<a +href="#x1-1010009.1.7">133<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-37-3" +class="td11"> + <!--l. 95--><p class="noindent" >0 </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-37-4" +class="td11"> + <!--l. 95--><p class="noindent" >1 </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-37-5" +class="td11"> + <!--l. 95--><p class="noindent" >2 </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-37-6" +class="td11"> + <!--l. 95--><p class="noindent" >2 </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-37-7" +class="td11"> + <!--l. 95--><p class="noindent" >2 </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-37-8" +class="td11"> + <!--l. 95--><p class="noindent" >2 </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-38-1" +class="td11"> Parallel tests </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-38-2" +class="td11"> parallel-tests p<a +href="#x1-1020009.1.8">139<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-38-3" +class="td11"> + <!--l. 98--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-38-4" +class="td11"> + <!--l. 98--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-38-5" +class="td11"> + <!--l. 98--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-38-6" +class="td11"> + <!--l. 98--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-38-7" +class="td11"> + <!--l. 98--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-38-8" +class="td11"> + <!--l. 98--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-39-1" +class="td11"> <span +class="ectt-1000">src_install </span>style </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-39-2" +class="td11"> src-install p<a +href="#x1-1030009.1.9">142<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-39-3" +class="td11"> + <!--l. 101--><p class="noindent" >no-op </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-39-4" +class="td11"> + <!--l. 101--><p class="noindent" >no-op </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-39-5" +class="td11"> + <!--l. 101--><p class="noindent" >no-op </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-39-6" +class="td11"> + <!--l. 101--><p class="noindent" >no-op </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-39-7" +class="td11"> + <!--l. 101--><p class="noindent" >4 </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-39-8" +class="td11"> + <!--l. 101--><p class="noindent" >4 </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-40-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-45-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-41-1" +class="td11"> <span +class="ectt-1000">pkg_info </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-41-2" +class="td11"> pkg-info p<a +href="#x1-1090009.1.15">147<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-41-3" +class="td11"> + <!--l. 104--><p class="noindent" >Installed </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-41-4" +class="td11"> + <!--l. 104--><p class="noindent" >Installed </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-41-5" +class="td11"> + <!--l. 104--><p class="noindent" >Installed </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-41-6" +class="td11"> + <!--l. 104--><p class="noindent" >Installed </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-41-7" +class="td11"> + <!--l. 104--><p class="noindent" >Both </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-41-8" +class="td11"> + <!--l. 104--><p class="noindent" >Both </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-42-1" +class="td11"> <span +class="ectt-1000">default_ </span>phase functions </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-42-2" +class="td11"> default-phase-funcs p<a +href="#x1-1110009.1.17">150<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-42-3" +class="td11"> + <!--l. 107--><p class="noindent" >None </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-42-4" +class="td11"> + <!--l. 107--><p class="noindent" >None </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-42-5" +class="td11"> + <!--l. 108--><p class="noindent" ><span +class="ectt-1000">pkg_</span> + <span +class="ectt-1000">nofetch</span>, + <span +class="ectt-1000">src_unpack</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">prepare</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">configure</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">compile</span>, + <span +class="ectt-1000">src_test</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-42-6" +class="td11"> + <!--l. 109--><p class="noindent" ><span +class="ectt-1000">pkg_</span> + <span +class="ectt-1000">nofetch</span>, + <span +class="ectt-1000">src_unpack</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">prepare</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">configure</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">compile</span>, + <span +class="ectt-1000">src_test</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-42-7" +class="td11"> + <!--l. 110--><p class="noindent" ><span +class="ectt-1000">pkg_</span> + <span +class="ectt-1000">nofetch</span>, + <span +class="ectt-1000">src_unpack</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">prepare</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">configure</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">compile</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">install</span>, + <span +class="ectt-1000">src_test</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-42-8" +class="td11"> + <!--l. 112--><p class="noindent" ><span +class="ectt-1000">pkg_</span> + <span +class="ectt-1000">nofetch</span>, + <span +class="ectt-1000">src_unpack</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">prepare</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">configure</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">compile</span>, + <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">install</span>, + <span +class="ectt-1000">src_test</span> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-43-1" +class="td11"> <span +class="ectt-1000">AA </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-43-2" +class="td11"> aa p<a +href="#x1-118001r1">167<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-43-3" +class="td11"> + <!--l. 116--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-43-4" +class="td11"> + <!--l. 116--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-43-5" +class="td11"> + <!--l. 116--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-43-6" +class="td11"> + <!--l. 116--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-43-7" +class="td11"> + <!--l. 116--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-43-8" +class="td11"> + <!--l. 116--><p class="noindent" >No </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-45-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-44-1" +class="td11"> <span +class="ectt-1000">KV </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-44-2" +class="td11"> kv p<a +href="#x1-118001r1">171<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-44-3" +class="td11"> + <!--l. 119--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-44-4" +class="td11"> + <!--l. 119--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-44-5" +class="td11"> + <!--l. 119--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-44-6" +class="td11"> + <!--l. 119--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-44-7" +class="td11"> + <!--l. 119--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-44-8" +class="td11"> + <!--l. 119--><p class="noindent" >No </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-45-1" +class="td11"> <span +class="ectt-1000">EBUILD_PHASE_FUNC </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-45-2" +class="td11"> ebuild-phase-func p<a +href="#x1-118001r1">170<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-45-3" +class="td11"> + <!--l. 122--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-45-4" +class="td11"> + <!--l. 122--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-45-5" +class="td11"> + <!--l. 122--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-45-6" +class="td11"> + <!--l. 122--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-45-7" +class="td11"> + <!--l. 122--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-45-8" +class="td11"> + <!--l. 122--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-46-1" +class="td11"> <span +class="ectt-1000">MERGE_TYPE </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-46-2" +class="td11"> merge-type p<a +href="#x1-118001r1">171<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-46-3" +class="td11"> + <!--l. 125--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-46-4" +class="td11"> + <!--l. 125--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-46-5" +class="td11"> + <!--l. 125--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-46-6" +class="td11"> + <!--l. 125--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-46-7" +class="td11"> + <!--l. 125--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-46-8" +class="td11"> + <!--l. 125--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-47-1" +class="td11"> Profile <span +class="ectt-1000">IUSE </span>injection </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-47-2" +class="td11"> profile-iuse-inject p<a +href="#x1-11900011.1.1">182<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-47-3" +class="td11"> + <!--l. 128--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-47-4" +class="td11"> + <!--l. 128--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-47-5" +class="td11"> + <!--l. 128--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-47-6" +class="td11"> + <!--l. 128--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-47-7" +class="td11"> + <!--l. 128--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-47-8" +class="td11"> + <!--l. 128--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-48-1" +class="td11"> <span +class="ectt-1000">REPLACING_VERSIONS </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-48-2" +class="td11"> replace-version-vars p<a +href="#x1-12000011.1.2">183<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-48-3" +class="td11"> + <!--l. 131--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-48-4" +class="td11"> + <!--l. 131--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-48-5" +class="td11"> + <!--l. 131--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-48-6" +class="td11"> + <!--l. 131--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-48-7" +class="td11"> + <!--l. 131--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-48-8" +class="td11"> + <!--l. 131--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-49-1" +class="td11"> <span +class="ectt-1000">REPLACED_BY_VERSION </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-49-2" +class="td11"> replace-version-vars p<a +href="#x1-12000011.1.2">183<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-49-3" +class="td11"> + <!--l. 134--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-49-4" +class="td11"> + <!--l. 134--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-49-5" +class="td11"> + <!--l. 134--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-49-6" +class="td11"> + <!--l. 134--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-49-7" +class="td11"> + <!--l. 134--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-49-8" +class="td11"> + <!--l. 134--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-50-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-45-50-2" +class="td11"> offset-prefix-vars p<a +href="#x1-12100011.1.3">186<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-50-3" +class="td11"> + <!--l. 137--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-50-4" +class="td11"> + <!--l. 137--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-50-5" +class="td11"> + <!--l. 137--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-50-6" +class="td11"> + <!--l. 137--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-50-7" +class="td11"> + <!--l. 137--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-50-8" +class="td11"> + <!--l. 137--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-51-1" +class="td11"> <span +class="ectt-1000">find </span>is GNU? </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-51-2" +class="td11"> gnu-find p<a +href="#x1-12600011.3.1.1">189<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-51-3" +class="td11"> + <!--l. 140--><p class="noindent" >Undefined </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-51-4" +class="td11"> + <!--l. 140--><p class="noindent" >Undefined </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-51-5" +class="td11"> + <!--l. 140--><p class="noindent" >Undefined </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-51-6" +class="td11"> + <!--l. 140--><p class="noindent" >Undefined </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-51-7" +class="td11"> + <!--l. 140--><p class="noindent" >Undefined </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-51-8" +class="td11"> + <!--l. 140--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-52-1" +class="td11"> Most utilities die </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-52-2" +class="td11"> die-on-failure p<a +href="#x1-12900011.3.3.1">192<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-52-3" +class="td11"> + <!--l. 143--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-52-4" +class="td11"> + <!--l. 143--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-52-5" +class="td11"> + <!--l. 143--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-52-6" +class="td11"> + <!--l. 143--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-52-7" +class="td11"> + <!--l. 143--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-52-8" +class="td11"> + <!--l. 143--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-53-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-53-1" +class="td11"> <span +class="ectt-1000">nonfatal </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-53-2" +class="td11"> nonfatal p<a +href="#x1-12900011.3.3.1">192<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-53-3" +class="td11"> + <!--l. 146--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-53-4" +class="td11"> + <!--l. 146--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-53-5" +class="td11"> + <!--l. 146--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-53-6" +class="td11"> + <!--l. 146--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-53-7" +class="td11"> + <!--l. 146--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-53-8" +class="td11"> + <!--l. 146--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-54-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-54-1" +class="td11"> <span +class="ectt-1000">dohard </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-54-2" +class="td11"> banned-commands p<a +href="#x1-13000011.3.3.2">195<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-54-3" +class="td11"> + <!--l. 149--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-54-4" +class="td11"> + <!--l. 149--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-54-5" +class="td11"> + <!--l. 149--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-54-6" +class="td11"> + <!--l. 149--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-54-7" +class="td11"> + <!--l. 149--><p class="noindent" >Banned </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-54-8" +class="td11"> + <!--l. 149--><p class="noindent" >Banned </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-55-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-55-1" +class="td11"> <span +class="ectt-1000">dosed </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-55-2" +class="td11"> banned-commands p<a +href="#x1-13000011.3.3.2">195<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-55-3" +class="td11"> + <!--l. 152--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-55-4" +class="td11"> + <!--l. 152--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-55-5" +class="td11"> + <!--l. 152--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-55-6" +class="td11"> + <!--l. 152--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-55-7" +class="td11"> + <!--l. 152--><p class="noindent" >Banned </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-55-8" +class="td11"> + <!--l. 152--><p class="noindent" >Banned </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-56-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-56-1" +class="td11"> Option <span +class="ectt-1000">--host-root </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-56-2" +class="td11"> host-root-option p<a +href="#x1-13200011.3.3.4">198<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-56-3" +class="td11"> + <!--l. 155--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-56-4" +class="td11"> + <!--l. 155--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-56-5" +class="td11"> + <!--l. 155--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-56-6" +class="td11"> + <!--l. 155--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-56-7" +class="td11"> + <!--l. 155--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-56-8" +class="td11"> + <!--l. 155--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-57-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-57-1" +class="td11"> <span +class="ectt-1000">econf </span>arguments </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-57-2" +class="td11"> econf-options p<a +href="#x1-13500011.3.3.7">199<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-57-3" +class="td11"> + <!--l. 158--><p class="noindent" > </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-57-4" +class="td11"> + <!--l. 158--><p class="noindent" > </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-57-5" +class="td11"> + <!--l. 158--><p class="noindent" > </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-57-6" +class="td11"> + <!--l. 158--><p class="noindent" > </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-57-7" +class="td11"> + <!--l. 158--><p class="noindent" >disable + dependency + tracking </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-57-8" +class="td11"> + <!--l. 158--><p class="noindent" >disable + dependency + tracking, + disable + silent + rules </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-58-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-58-1" +class="td11"> <span +class="ectt-1000">dodoc -r </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-58-2" +class="td11"> dodoc p<a +href="#x1-13600011.3.3.8">202<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-58-3" +class="td11"> + <!--l. 161--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-58-4" +class="td11"> + <!--l. 161--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-58-5" +class="td11"> + <!--l. 161--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-58-6" +class="td11"> + <!--l. 161--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-58-7" +class="td11"> + <!--l. 161--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-58-8" +class="td11"> + <!--l. 161--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-59-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-59-1" +class="td11"> <span +class="ectt-1000">doheader </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-59-2" +class="td11"> doheader p<a +href="#x1-13600011.3.3.8">203<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-59-3" +class="td11"> + <!--l. 164--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-59-4" +class="td11"> + <!--l. 164--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-59-5" +class="td11"> + <!--l. 164--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-59-6" +class="td11"> + <!--l. 164--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-59-7" +class="td11"> + <!--l. 164--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-59-8" +class="td11"> + <!--l. 164--><p class="noindent" >Yes </p></td> + + + + </tr><tr + style="vertical-align:baseline;" id="TBL-45-60-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-60-1" +class="td11"> <span +class="ectt-1000">doins </span>handles symlinks </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-60-2" +class="td11"> doins p<a +href="#x1-13600011.3.3.8">204<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-60-3" +class="td11"> + <!--l. 167--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-60-4" +class="td11"> + <!--l. 167--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-60-5" +class="td11"> + <!--l. 167--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-60-6" +class="td11"> + <!--l. 167--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-60-7" +class="td11"> + <!--l. 167--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-60-8" +class="td11"> + <!--l. 167--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-61-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-61-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-45-62-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-62-1" +class="td11"> <span +class="ectt-1000">doman </span>languages </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-62-2" +class="td11"> doman-langs p<a +href="#x1-13600011.3.3.8">205<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-62-3" +class="td11"> + <!--l. 170--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-62-4" +class="td11"> + <!--l. 170--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-62-5" +class="td11"> + <!--l. 170--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-62-6" +class="td11"> + <!--l. 170--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-62-7" +class="td11"> + <!--l. 170--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-62-8" +class="td11"> + <!--l. 170--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-63-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-63-1" +class="td11"> <span +class="ectt-1000">doman -i18n </span>precedence </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-63-2" +class="td11"> doman-langs p<a +href="#x1-13600011.3.3.8">205<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-63-3" +class="td11"> + <!--l. 173--><p class="noindent" >N/A </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-63-4" +class="td11"> + <!--l. 173--><p class="noindent" >N/A </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-63-5" +class="td11"> + <!--l. 173--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-63-6" +class="td11"> + <!--l. 173--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-63-7" +class="td11"> + <!--l. 173--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-63-8" +class="td11"> + <!--l. 173--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-64-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-64-1" +class="td11"> <span +class="ectt-1000">new* </span>support stdin </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-64-2" +class="td11"> newfoo-stdin p<a +href="#x1-13600011.3.3.8">205<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-64-3" +class="td11"> + <!--l. 176--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-64-4" +class="td11"> + <!--l. 176--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-64-5" +class="td11"> + <!--l. 176--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-64-6" +class="td11"> + <!--l. 176--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-64-7" +class="td11"> + <!--l. 176--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-64-8" +class="td11"> + <!--l. 176--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-65-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-65-1" +class="td11"> Controllable compression </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-65-2" +class="td11"> docompress p<a +href="#x1-13800011.3.3.10">224<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-65-3" +class="td11"> + <!--l. 179--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-65-4" +class="td11"> + <!--l. 179--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-65-5" +class="td11"> + <!--l. 179--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-65-6" +class="td11"> + <!--l. 179--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-65-7" +class="td11"> + <!--l. 179--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-65-8" +class="td11"> + <!--l. 179--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-66-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-66-1" +class="td11"> <span +class="ectt-1000">docompress </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-66-2" +class="td11"> docompress p<a +href="#x1-13800011.3.3.10">224<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-66-3" +class="td11"> + <!--l. 182--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-66-4" +class="td11"> + <!--l. 182--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-66-5" +class="td11"> + <!--l. 182--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-66-6" +class="td11"> + <!--l. 182--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-66-7" +class="td11"> + <!--l. 182--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-66-8" +class="td11"> + <!--l. 182--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-67-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-67-1" +class="td11"> <span +class="ectt-1000">use_with </span>empty third arg </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-67-2" +class="td11"> use-with p<a +href="#x1-13900011.3.3.11">228<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-67-3" +class="td11"> + <!--l. 185--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-67-4" +class="td11"> + <!--l. 185--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-67-5" +class="td11"> + <!--l. 185--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-67-6" +class="td11"> + <!--l. 185--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-67-7" +class="td11"> + <!--l. 185--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-67-8" +class="td11"> + <!--l. 185--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-68-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-68-1" +class="td11"> <span +class="ectt-1000">usex </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-45-68-2" +class="td11"> usex p<a +href="#x1-13900011.3.3.11">228<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-68-3" +class="td11"> + <!--l. 188--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-68-4" +class="td11"> + <!--l. 188--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-68-5" +class="td11"> + <!--l. 188--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-68-6" +class="td11"> + <!--l. 188--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-68-7" +class="td11"> + <!--l. 188--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-68-8" +class="td11"> + <!--l. 188--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-69-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-69-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-45-69-2" +class="td11"> unpack-extensions p<a +href="#x1-14100011.3.3.13">237<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-69-3" +class="td11"> + <!--l. 191--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-69-4" +class="td11"> + <!--l. 191--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-69-5" +class="td11"> + <!--l. 191--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-69-6" +class="td11"> + <!--l. 191--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-69-7" +class="td11"> + <!--l. 191--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-69-8" +class="td11"> + <!--l. 191--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-70-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-70-1" +class="td11"> <span +class="ectt-1000">default </span>function </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-70-2" +class="td11"> default-func p<a +href="#x1-14100011.3.3.13">239<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-70-3" +class="td11"> + <!--l. 194--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-70-4" +class="td11"> + <!--l. 194--><p class="noindent" >No </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-70-5" +class="td11"> + <!--l. 194--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-70-6" +class="td11"> + <!--l. 194--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-70-7" +class="td11"> + <!--l. 194--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-70-8" +class="td11"> + <!--l. 194--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-71-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-71-1" +class="td11"> File mtimes preserved </td><td style="white-space:nowrap; text-align:left;" id="TBL-45-71-2" +class="td11"> mtime-preserve p<a +href="#x1-15300012.3.2">247<!--tex4ht:ref: lst:if-else-use-listing --></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-45-71-3" +class="td11"> + <!--l. 197--><p class="noindent" >Undefined </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-71-4" +class="td11"> + <!--l. 197--><p class="noindent" >Undefined </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-71-5" +class="td11"> + <!--l. 197--><p class="noindent" >Undefined </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-71-6" +class="td11"> + <!--l. 197--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-71-7" +class="td11"> + <!--l. 197--><p class="noindent" >Yes </p></td><td style="white-space:wrap; text-align:left;" id="TBL-45-71-8" +class="td11"> + <!--l. 197--><p class="noindent" >Yes </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-72-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-72-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-45-73-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-73-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-74-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-74-1" +class="td11"> </td></tr><tr + style="vertical-align:baseline;" id="TBL-45-75-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-75-1" +class="td11"></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-76-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-76-1" +class="td11"> </td></tr> +<tr + style="vertical-align:baseline;" id="TBL-45-17-"><td colspan="6" style="white-space:nowrap; text-align:left;" id="TBL-45-17-1" +class="td11"></td><!--cmidrule--></tr><tr + style="vertical-align:baseline;" id="TBL-45-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-18-1" +class="td11"> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-45-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-45-19-1" +class="td11"> </td></tr> +</table></div> + + + + + +<a + id="x1-171003r218"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix E</span><br /><a + id="x1-172000E"></a>Differences Between EAPIs</h2> +<!--l. 204--><p class="nopar" ><span class="paragraphHead"><a + id="x1-173000E"></a><span +class="ecbx-1000">Note:</span></span> +This chapter is informative and for convenience only. Refer to the main text for specifics. +</p><!--l. 206--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-174000E"></a>EAPI 0</h3> +<!--l. 208--><p class="nopar" >EAPI 0 is the base EAPI. +</p><!--l. 210--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-175000E"></a>EAPI 1</h3> +<!--l. 212--><p class="nopar" >EAPI 1 is EAPI 0 with the following changes: +</p><!--l. 215--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">IUSE </span>defaults, <span +class="eccc-1000"><span +class="small-caps">I</span><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-670007.3">77<!--tex4ht:ref: feat:iuse-defaults --></a>. + </li> + <li class="compactitem">Slot dependencies, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">L</span><span +class="small-caps">O</span><span +class="small-caps">T</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-860008.2.6.3">114<!--tex4ht:ref: feat:slot-deps --></a>. + </li> + <li class="compactitem">Different <span +class="ectt-1000">src_compile </span>implementation, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-1 </span>on page <a +href="#x1-1010009.1.7">134<!--tex4ht:ref: feat:src-compile-1 --></a>.</li></ul> +<!--l. 220--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-176000E"></a>EAPI 2</h3> +<!--l. 222--><p class="nopar" >EAPI 2 is EAPI 1 with the following changes: +</p><!--l. 225--><p class="noindent" > + </p><ul> + <li class="compactitem">Use dependencies, <span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-820008.2.6">105<!--tex4ht:ref: feat:use-deps --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">! </span>and <span +class="ectt-1000">!! </span>blockers, <span +class="eccc-1000"><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span>-<span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">T</span><span +class="small-caps">H</span> </span>on page <a +href="#x1-850008.2.6.2">111<!--tex4ht:ref: feat:bang-strength --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">SRC_URI </span>arrows, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">I</span>-<span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">W</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-920008.2.10">116<!--tex4ht:ref: feat:src-uri-arrows --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">src_prepare</span>, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-990009.1.5">126<!--tex4ht:ref: feat:src-prepare --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">src_configure</span>, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">G</span><span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-1000009.1.6">129<!--tex4ht:ref: feat:src-configure --></a>. + </li> + <li class="compactitem">Different <span +class="ectt-1000">src_compile </span>implementation, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-2 </span>on page <a +href="#x1-1010009.1.7">135<!--tex4ht:ref: feat:src-compile-2 --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">default_ </span>phase functions for phases <span +class="ectt-1000">pkg_nofetch</span>, <span +class="ectt-1000">src_unpack</span>, <span +class="ectt-1000">src_prepare</span>, <span +class="ectt-1000">src_</span> + <span +class="ectt-1000">configure</span>, <span +class="ectt-1000">src_compile </span>and <span +class="ectt-1000">src_test</span>; <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-1110009.1.17">150<!--tex4ht:ref: feat:default-phase-funcs --></a>. + + + </li> + <li class="compactitem"><span +class="ectt-1000">doman </span>language detection by filename, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span>-<span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13600011.3.3.8">205<!--tex4ht:ref: feat:doman-langs --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">default </span>function, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span> </span>on page <a +href="#x1-14100011.3.3.13">239<!--tex4ht:ref: feat:default-func --></a>.</li></ul> +<!--l. 237--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-177000E"></a>EAPI 3</h3> +<!--l. 239--><p class="nopar" >EAPI 3 is EAPI 2 with the following changes: + </p><ul> + <li class="compactitem">Offset-prefix support by definition of <span +class="ectt-1000">EPREFIX</span>, <span +class="ectt-1000">ED </span>and <span +class="ectt-1000">EROOT</span>, <span +class="eccc-1000"><span +class="small-caps">O</span><span +class="small-caps">F</span><span +class="small-caps">F</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">T</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">X</span>-<span +class="small-caps">V</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">S</span></span> + on page <a +href="#x1-12100011.1.3">186<!--tex4ht:ref: feat:offset-prefix-vars --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">unpack </span>supports <span +class="ectt-1000">.xz </span>and <span +class="ectt-1000">.tar.xz</span>, <span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span>-<span +class="small-caps">E</span><span +class="small-caps">X</span><span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-14100011.3.3.13">237<!--tex4ht:ref: feat:unpack-extensions --></a>. + </li> + <li class="compactitem">File modification times are preserved, <span +class="eccc-1000"><span +class="small-caps">M</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">M</span><span +class="small-caps">E</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">V</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-15300012.3.2">247<!--tex4ht:ref: feat:mtime-preserve --></a>.</li></ul> +<!--l. 247--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-178000E"></a>EAPI 4</h3> +<!--l. 249--><p class="nopar" >EAPI 4 is EAPI 3 with the following changes: +</p><!--l. 252--><p class="noindent" > + </p><ul> + <li class="compactitem"><span +class="ectt-1000">PROPERTIES </span>support is mandatory, <span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">E</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-670007.3">77<!--tex4ht:ref: feat:properties --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">REQUIRED_USE</span>, <span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">Q</span><span +class="small-caps">U</span><span +class="small-caps">I</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-670007.3">77<!--tex4ht:ref: feat:required-use --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">RDEPEND=DEPEND </span>no longer done, <span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span> </span>on page <a +href="#x1-700007.3.3">84<!--tex4ht:ref: feat:rdepend-depend --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">DEFINED_PHASES </span>support is mandatory, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-720007.4">88<!--tex4ht:ref: feat:defined-phases --></a>. + </li> + <li class="compactitem">Use dependency defaults, <span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">U</span><span +class="small-caps">L</span><span +class="small-caps">T</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-870008.2.6.4">115<!--tex4ht:ref: feat:use-dep-defaults --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">S </span>to <span +class="ectt-1000">WORKDIR </span>fallback restricted, <span +class="eccc-1000"><span +class="small-caps">S</span>-<span +class="small-caps">W</span><span +class="small-caps">O</span><span +class="small-caps">R</span><span +class="small-caps">K</span><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">R</span>-<span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">K</span> </span>on page <a +href="#x1-950009.1.1">119<!--tex4ht:ref: feat:s-workdir-fallback --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_pretend</span>, <span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">K</span><span +class="small-caps">G</span>-<span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">N</span><span +class="small-caps">D</span> </span>on page <a +href="#x1-960009.1.2">122<!--tex4ht:ref: feat:pkg-pretend --></a>. + </li> + <li class="compactitem">Default <span +class="ectt-1000">src_install </span>no longer a no-op, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">R</span><span +class="small-caps">C</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span>-4 </span>on page <a +href="#x1-1030009.1.9">142<!--tex4ht:ref: feat:src-install-4 --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">pkg_info </span>can run on non-installed packages, <span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">K</span><span +class="small-caps">G</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">O</span> </span>on page <a +href="#x1-1090009.1.15">147<!--tex4ht:ref: feat:pkg-info --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">AA </span>is gone, <span +class="eccc-1000"><span +class="small-caps">A</span><span +class="small-caps">A</span> </span>on page <a +href="#x1-118001r1">167<!--tex4ht:ref: feat:aa --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">KV </span>is gone, <span +class="eccc-1000"><span +class="small-caps">K</span><span +class="small-caps">V</span> </span>on page <a +href="#x1-118001r1">171<!--tex4ht:ref: feat:kv --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">MERGE_TYPE</span>, <span +class="eccc-1000"><span +class="small-caps">M</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">G</span><span +class="small-caps">E</span>-<span +class="small-caps">T</span><span +class="small-caps">Y</span><span +class="small-caps">P</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-118001r1">171<!--tex4ht:ref: feat:merge-type --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">REPLACING_VERSIONS </span>and <span +class="ectt-1000">REPLACED_BY_VERSION</span>, <span +class="eccc-1000"><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">C</span><span +class="small-caps">E</span>-<span +class="small-caps">V</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">S</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span>-<span +class="small-caps">V</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">S</span> </span>on + page <a +href="#x1-12000011.1.2">183<!--tex4ht:ref: feat:replace-version-vars --></a>. + + + </li> + <li class="compactitem">Utilities now die on failure, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">E</span>-<span +class="small-caps">O</span><span +class="small-caps">N</span>-<span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">U</span><span +class="small-caps">R</span><span +class="small-caps">E</span> </span>on page <a +href="#x1-12900011.3.3.1">192<!--tex4ht:ref: feat:die-on-failure --></a>, unless called under + <span +class="ectt-1000">nonfatal</span>, <span +class="eccc-1000"><span +class="small-caps">N</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span><span +class="small-caps">A</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">L</span> </span>on page <a +href="#x1-12900011.3.3.1">192<!--tex4ht:ref: feat:nonfatal --></a> + </li> + <li class="compactitem"><span +class="ectt-1000">dohard</span>, <span +class="ectt-1000">dosed </span>banned, <span +class="eccc-1000"><span +class="small-caps">B</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">D</span>-<span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">D</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13000011.3.3.2">195<!--tex4ht:ref: feat:banned-commands --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">econf </span>adds <span +class="ectt-1000">--disable-dependency-tracking</span>, <span +class="eccc-1000"><span +class="small-caps">E</span><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13500011.3.3.7">199<!--tex4ht:ref: feat:econf-options --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">dodoc -r </span>support, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">C</span> </span>on page <a +href="#x1-13600011.3.3.8">202<!--tex4ht:ref: feat:dodoc --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">doins </span>supports symlinks, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13600011.3.3.8">204<!--tex4ht:ref: feat:doins --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">doman -i18n </span>option takes precedence, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">N</span>-<span +class="small-caps">L</span><span +class="small-caps">A</span><span +class="small-caps">N</span><span +class="small-caps">G</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13600011.3.3.8">205<!--tex4ht:ref: feat:doman-langs --></a>. + </li> + <li class="compactitem">Controllable compression and <span +class="ectt-1000">docompress</span>, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">M</span><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13800011.3.3.10">224<!--tex4ht:ref: feat:docompress --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">use_with </span>and <span +class="ectt-1000">use_enable </span>support empty third argument, <span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">W</span><span +class="small-caps">I</span><span +class="small-caps">T</span><span +class="small-caps">H</span> </span>on page <a +href="#x1-13900011.3.3.11">228<!--tex4ht:ref: feat:use-with --></a>.</li></ul> +<!--l. 276--><p class="nopar" > +</p> +<h3 class="likesectionHead"><a + id="x1-179000E"></a>EAPI 5</h3> +<!--l. 278--><p class="nopar" >EAPI 5 is EAPI 4 with the following changes: +</p><!--l. 281--><p class="noindent" > + </p><ul> + <li class="compactitem">Stable use masking and forcing, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">A</span><span +class="small-caps">B</span><span +class="small-caps">L</span><span +class="small-caps">E</span><span +class="small-caps">M</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">K</span> </span>on page <a +href="#x1-580005.2.11">59<!--tex4ht:ref: feat:stablemask --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">REQUIRED_USE </span>now supports <span +class="ectt-1000">?? </span>groups, <span +class="eccc-1000"><span +class="small-caps">A</span><span +class="small-caps">T</span>-<span +class="small-caps">M</span><span +class="small-caps">O</span><span +class="small-caps">S</span><span +class="small-caps">T</span>-<span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">E</span>-<span +class="small-caps">O</span><span +class="small-caps">F</span> </span>on page <a +href="#x1-760008.2">98<!--tex4ht:ref: feat:at-most-one-of --></a>. + </li> + <li class="compactitem">Slot operator dependencies, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">L</span><span +class="small-caps">O</span><span +class="small-caps">T</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">E</span><span +class="small-caps">R</span><span +class="small-caps">A</span><span +class="small-caps">T</span><span +class="small-caps">O</span><span +class="small-caps">R</span>-<span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">P</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-860008.2.6.3">114<!--tex4ht:ref: feat:slot-operator-deps --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">SLOT </span>now supports an optional sub-slot part, <span +class="eccc-1000"><span +class="small-caps">S</span><span +class="small-caps">U</span><span +class="small-caps">B</span>-<span +class="small-caps">S</span><span +class="small-caps">L</span><span +class="small-caps">O</span><span +class="small-caps">T</span> </span>on page <a +href="#x1-860008.2.6.3">114<!--tex4ht:ref: feat:sub-slot --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">src_test </span>supports parallel tests, <span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">A</span><span +class="small-caps">R</span><span +class="small-caps">A</span><span +class="small-caps">L</span><span +class="small-caps">L</span><span +class="small-caps">E</span><span +class="small-caps">L</span>-<span +class="small-caps">T</span><span +class="small-caps">E</span><span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-1020009.1.8">139<!--tex4ht:ref: feat:parallel-tests --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">EBUILD_PHASE_FUNC</span>, <span +class="eccc-1000"><span +class="small-caps">E</span><span +class="small-caps">B</span><span +class="small-caps">U</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">D</span>-<span +class="small-caps">P</span><span +class="small-caps">H</span><span +class="small-caps">A</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">F</span><span +class="small-caps">U</span><span +class="small-caps">N</span><span +class="small-caps">C</span> </span>on page <a +href="#x1-118001r1">170<!--tex4ht:ref: feat:ebuild-phase-func --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">USE </span>is calculated differently, <span +class="eccc-1000"><span +class="small-caps">P</span><span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">L</span><span +class="small-caps">E</span>-<span +class="small-caps">I</span><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span>-<span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">J</span><span +class="small-caps">E</span><span +class="small-caps">C</span><span +class="small-caps">T</span> </span>on page <a +href="#x1-11900011.1.1">182<!--tex4ht:ref: feat:profile-iuse-inject --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">find </span>is guaranteed to be GNU, <span +class="eccc-1000"><span +class="small-caps">G</span><span +class="small-caps">N</span><span +class="small-caps">U</span>-<span +class="small-caps">F</span><span +class="small-caps">I</span><span +class="small-caps">N</span><span +class="small-caps">D</span> </span>on page <a +href="#x1-12600011.3.1.1">189<!--tex4ht:ref: feat:gnu-find --></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, + <span +class="eccc-1000"><span +class="small-caps">H</span><span +class="small-caps">O</span><span +class="small-caps">S</span><span +class="small-caps">T</span>-<span +class="small-caps">R</span><span +class="small-caps">O</span><span +class="small-caps">O</span><span +class="small-caps">T</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span> </span>on page <a +href="#x1-13200011.3.3.4">198<!--tex4ht:ref: feat:host-root-option --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">econf </span>adds <span +class="ectt-1000">--disable-silent-rules</span>, <span +class="eccc-1000"><span +class="small-caps">E</span><span +class="small-caps">C</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">F</span>-<span +class="small-caps">O</span><span +class="small-caps">P</span><span +class="small-caps">T</span><span +class="small-caps">I</span><span +class="small-caps">O</span><span +class="small-caps">N</span><span +class="small-caps">S</span> </span>on page <a +href="#x1-13500011.3.3.7">199<!--tex4ht:ref: feat:econf-options --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">doheader </span>and <span +class="ectt-1000">newheader </span>support, <span +class="eccc-1000"><span +class="small-caps">D</span><span +class="small-caps">O</span><span +class="small-caps">H</span><span +class="small-caps">E</span><span +class="small-caps">A</span><span +class="small-caps">D</span><span +class="small-caps">E</span><span +class="small-caps">R</span> </span>on page <a +href="#x1-13600011.3.3.8">203<!--tex4ht:ref: feat:doheader --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">new* </span>can read from standard input, <span +class="eccc-1000"><span +class="small-caps">N</span><span +class="small-caps">E</span><span +class="small-caps">W</span><span +class="small-caps">F</span><span +class="small-caps">O</span><span +class="small-caps">O</span>-<span +class="small-caps">S</span><span +class="small-caps">T</span><span +class="small-caps">D</span><span +class="small-caps">I</span><span +class="small-caps">N</span> </span>on page <a +href="#x1-13600011.3.3.8">205<!--tex4ht:ref: feat:newfoo-stdin --></a>. + </li> + <li class="compactitem"><span +class="ectt-1000">usex </span>support, <span +class="eccc-1000"><span +class="small-caps">U</span><span +class="small-caps">S</span><span +class="small-caps">E</span><span +class="small-caps">X</span> </span>on page <a +href="#x1-13900011.3.3.11">228<!--tex4ht:ref: feat:usex --></a>.</li></ul> + + + + +<h2 class="likechapterHead"><a + id="x1-180000E"></a>Bibliography</h2> + <div class="thebibliography"> + <p class="bibitem" ><span class="biblabel"> + [1]<span class="bibsp">   </span></span><a + id="XGlep44"></a>Marius Mauch. GLEP 44: Manifest2 format. + <a +href="http://glep.gentoo.org/glep-0044.html" class="url" ><span +class="ectt-1000">http://glep.gentoo.org/glep-0044.html</span></a>, December 2005. + </p> + <p class="bibitem" ><span class="biblabel"> + [2]<span class="bibsp">   </span></span><a + id="XGlep37"></a>Jason Stubbs. GLEP 37: Virtuals deprecation. + <a +href="http://glep.gentoo.org/glep-0037.html" class="url" ><span +class="ectt-1000">http://glep.gentoo.org/glep-0037.html</span></a>, April 2005. +</p> + </div> + + +<a + id="x1-180003r218"></a> +<h2 class="appendixHead"><span class="titlemark">Appendix F</span><br /><a + id="x1-181000F"></a>Desk Reference</h2> +<!--l. 79--><p class="nopar" ><a +href="eapi-cheatsheet.pdf" >EAPI Cheat Sheet</a> +</p> + +</body></html> + + + + diff --git a/5/pms.pdf b/5/pms.pdf Binary files differnew file mode 100644 index 0000000..d9f6dea --- /dev/null +++ b/5/pms.pdf diff --git a/5/pms2.html b/5/pms2.html new file mode 100644 index 0000000..691c713 --- /dev/null +++ b/5/pms2.html @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2012-09-20 13:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> + <div class="footnote-text"> + <!--l. 41--><p class="noindent" ><span class="footnote-mark"><a + id="fn1x3"> <sup class="textsuperscript">1</sup></a></span><span +class="ecrm-0800">Another unofficial EAPI ‘kdebuild-1’ was a series of extensions to EAPI ‘1’ formerly used by the Gentoo KDE</span> + <span +class="ecrm-0800">project. Some of its features have been included in EAPI ‘2’ or later.</span></p></div> + +</body></html> diff --git a/5/pms3.html b/5/pms3.html new file mode 100644 index 0000000..851394c --- /dev/null +++ b/5/pms3.html @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2012-09-20 13:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn1x12"> <sup class="textsuperscript">1</sup></a></span><span +class="ecrm-0800">May change if a package has been updated (see</span><span +class="ecrm-0800"> </span><a +href="pms.html#x1-390004.4.4"><span +class="ecrm-0800">4.4.4</span><!--tex4ht:ref: sec:updates-dir --></a><span +class="ecrm-0800">)</span></div> +</body></html> diff --git a/5/pms4.html b/5/pms4.html new file mode 100644 index 0000000..3b6382a --- /dev/null +++ b/5/pms4.html @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2012-09-20 13:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + 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></div> +</body></html> diff --git a/5/pms5.html b/5/pms5.html new file mode 100644 index 0000000..cdcf43e --- /dev/null +++ b/5/pms5.html @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2012-09-20 13:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn3x12"> <sup class="textsuperscript">3</sup></a></span><span +class="ecrm-0800">Not necessarily present when installing from a binary package</span></div> +</body></html> diff --git a/5/pms6.html b/5/pms6.html new file mode 100644 index 0000000..7e7dac8 --- /dev/null +++ b/5/pms6.html @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2012-09-20 13:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> <div class="footnote-text"><span class="footnote-mark"><a + id="fn4x12"> <sup class="textsuperscript">4</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</span> + <span +class="ecrm-0800">for the install and the replacement.</span></div> +</body></html> diff --git a/5/pms7.html b/5/pms7.html new file mode 100644 index 0000000..d0b15ab --- /dev/null +++ b/5/pms7.html @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" /> +<!-- xhtml,html --> +<meta name="src" content="pms.tex" /> +<meta name="date" content="2012-09-20 13:03:00" /> +<link rel="stylesheet" type="text/css" href="pms.css" /> +</head><body +> + <div class="footnote-text"> + <!--l. 28--><p class="noindent" ><span class="footnote-mark"><a + id="fn5x12"> <sup class="textsuperscript">5</sup></a></span><span +class="ecrm-0800">The required bash version was retroactively updated from 3.0 to 3.2 in November 2009 (see</span> + <a +href="http://www.gentoo.org/proj/en/council/meeting-logs/20091109.txt" class="url" ><span +class="ectt-0800">http://www.gentoo.org/proj/en/council/meeting-logs/20091109.txt</span></a><span +class="ecrm-0800">).</span></p></div> +</body></html> |