aboutsummaryrefslogtreecommitdiff
blob: 34120063e638e8e29fce37a0aca5779fd434c496 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?xml version="1.0"?>
<guide self="ebuild-writing/functions/src_unpack/">
<chapter>
<title>src_unpack</title>

<body>
<table>
  <tr>
    <th>Function</th>
    <ti><c>src_unpack</c></ti>
  </tr>
  <tr>
    <th>Purpose</th>
    <ti>Extract source packages.</ti>
  </tr>
  <tr>
    <th>Sandbox</th>
    <ti>Enabled</ti>
  </tr>
  <tr>
    <th>Privilege</th>
    <ti>user</ti>
  </tr>
  <tr>
    <th>Called for</th>
    <ti>ebuild</ti>
  </tr>
</table>
</body>

<section>
<title>Default <c>src_unpack</c></title>
<body>
<codesample lang="ebuild">
src_unpack() {
	if [[ -n ${A} ]]; then
		unpack ${A}
	fi
}
</codesample>
</body>
</section>

<section>
<title>Sample <c>src_unpack</c></title>
<body>

<codesample lang="ebuild">
src_unpack() {
	unpack ${P}.tar.xz
	use foo &amp;&amp; unpack ${P}-foo-extension.tar.xz
}
</codesample>

</body>
</section>

<section>
<title>Unpacking Tarballs</title>
<body>
<p>
The <c>unpack</c> function should be used to unpack tarballs, compressed
files and so on. Do not use <c>tar</c>, <c>gunzip</c> etc. manually.
</p>

<p>
The <c>${A}</c> variable contains all of the <c>SRC_URI</c> components, except
for any which are excluded by USE-based conditionals inside <c>SRC_URI</c>
itself. If multiple archives require unpacking in a particular order it is
usually simpler to avoid working with <c>${A}</c>.
</p>
</body>
</section>

<section>
<title>Known file formats</title>
<body>

<p>
The <c>unpack</c> function recognizes the following file formats:
</p>

<ul>
  <li><c>*.tar</c></li>
  <li>
    <c>*.gz</c>, <c>*.Z</c>,
    <c>*.tar.gz</c>, <c>*.tgz</c>, <c>*.tar.Z</c>
  </li>
  <li>
    <c>*.bz2</c>, <c>*.bz</c>,
    <c>*.tar.bz2</c>, <c>*.tbz2</c>, <c>*.tar.bz</c>, <c>*.tbz</c>
  </li>
  <li><c>*.lzma</c>, <c>*.tar.lzma</c></li>
  <li><c>*.xz</c>, <c>*.tar.xz</c>, <c>*.txz</c></li>
  <li><c>*.zip</c>, <c>*.ZIP</c>, <c>*.jar</c></li>
  <li><c>*.a</c>, <c>*.deb</c></li>
  <li><c>*.7z</c>, <c>*.7Z</c></li>
  <li><c>*.rar</c>, <c>*.RAR</c></li>
  <li><c>*.LHA</c>, <c>*.LHa</c>, <c>*.lha</c>, <c>*.lzh</c></li>
</ul>

<p>
In EAPI 6 and later, filename extensions are matched case-insensitively.
</p>

<important>
Unless the utility needed for unpacking is in the system set, the ebuild must
specify the necessary build time dependency (<c>BDEPEND</c>) for it.
</important>

</body>
</section>

<section>
<title><c>src_unpack</c> Actions</title>
<body>
<p>
The following subsections cover different topics which often occur when writing
<c>src_unpack</c> functions.
</p>

<contentsTree/>
</body>
</section>

</chapter>

<include href="vcs-sources/"/>
<include href="rpm-sources/"/>
<include href="other-formats/"/>
</guide>