annotate Docs/manual.md @ 1146:815d267adb72

dns/avahi: create /var/run/avahi in init script
author David Demelier <markand@malikania.fr>
date Tue, 24 Sep 2019 21:11:00 +0000
parents 477457540aa0
children 8d2032c88258
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 Getting started
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 ===============
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
3
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 This documentation explains how to write a package file from scratch.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
5
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 Synopsis
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 ========
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
8
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 Each package lives under a dedicated directory broken down into several
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 categories. A package consists of the following files:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
11
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 - NAME.sh: a pure POSIX shell that process the build and contains some
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 metadata required for installation.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 - NAME.sha1: contains the checksums for individual source files (Optional).
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 - NAME-post.sh: a script to be executed before/after the installation
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 (Optional).
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
17
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
18 In the listing above, replace NAME with the actual package name. For example the
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 package *zlib* contains the following files:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 - compression/zlib/zlib.sh
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 - compression/zlib/zlib.sha1
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 The build script
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 ================
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 The build script (NAME.sh) is a pure POSIX shell that defines various
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 information about the package and how to build it. To be included within the
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 official Vanilla Linux repository it must be licensed under the terms of the ISC
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 license.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 Several templates are already available for most build systems in the Templates
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 directory.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 Metadata
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 --------
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 A package requires several information to be installed, the following variables
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 must be present:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
40
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 - PKGNAME: the package name (same as the directory).
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 - PKGVERSION: the package upstream version.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 - PKGREVISION: the initial revision (starts at 1).
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 - PKGLICENSE: a space separated list of licenses (see licenses.md file).
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 - PKGSUMMARY: a short summary.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 The following variables are optional
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 - PKGDEPENDS: a space separated list of packages required to build (see below).
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 - PKGDOWNLOAD: a space separated list of files to download from the web, if the
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 package does not need to download anything don't set it.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 - PKGUIDS: a space separated list of uid to create (see below)
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 - PKGGIDS: a space separated list of gid to create (see below)
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 - PKGPROTECT: a space separated list of relative path to files to preserve on
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 installation (e.g. etc/nginx/nginx.conf)
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 - PKGOPTIONS: a space separated list of CAPITALIZED options.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 Build
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 -----
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
60
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 To build the package, you need to define a build function that install the
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 package into the $DESTDIR variable.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 Usually, the build function does:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
65
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 1. Clean the build directory in case the previous build failed.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 2. Extract distribution files.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 3. Process build and installs into $DESTDIR.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 4. Clean up again the build directory.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 Package naming
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 ==============
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
73
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 The following prefixes must be used for those packages:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
75
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 - py-: for python modules.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 - py2-: for python modules (only for exceptional cases).
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 - ruby-: for native ruby modules.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 - rubygem-: for rubygems modules.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 - p5-: for perl 5 modules.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 - hs-: for haskell modules.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 - font-: for fonts (of any kind).
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
83
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 When a package is available with different versions (e.g. Gtk, Qt) we add the
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 major number as suffix to the PKGNAME to *old* versions. Example, if Qt 5 is the
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 current major version and Qt 4 is also shipped then, the package *qt* refers to
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 version 5 while *qt4* to version 4.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 Handling dependencies
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 =====================
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
91
1080
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
92 Add any dependencies the packages requires in *PKGDEPENDS* variable.
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
93
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 Also, the following selectors may be appended to the dependency to alter the
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 meaning:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 - `:build` the dependency is only required for building,
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 - `:optional` the dependency is optional and not strictly required.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 Example:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
101
1080
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
102 PKGDEPENDS="cmake:build qt5:optional zlib"
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
103
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
104 The following dependencies are implicit and must *never* be marked in
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
105 *PKGDEPENDS*:
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
106
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
107 - autoconf
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
108 - automake
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
109 - busybox
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
110 - clang
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
111 - compiler-rt
1106
477457540aa0 vanilla: update implicit dependencies paragraph
David Demelier <markand@malikania.fr>
parents: 1080
diff changeset
112 - etc
1080
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
113 - filesystem
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
114 - libc++
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
115 - libc++abi
1106
477457540aa0 vanilla: update implicit dependencies paragraph
David Demelier <markand@malikania.fr>
parents: 1080
diff changeset
116 - libtool (except linked to it)
1080
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
117 - libunwind
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
118 - lld
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
119 - musl
120e458a2e33 vanilla: update manual page with implicit dependencies
David Demelier <markand@malikania.fr>
parents: 821
diff changeset
120 - pkgconf
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
121
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 Protected files
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 ===============
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 Configuration files (usually everything under /etc) must be marked as well in
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 *PKGPROTECT* variables. This prevents `vpk` for overriding user configurations.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
127
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 Note: if the package ships a init script file, it must be marked as well.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
129
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 Example:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
131
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 PKGPROTECT="etc/nginx.conf etc/rc.d/nginx"
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
133
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 In this case, `vpk` will rename the file to *etc/nginx.conf.vpk* and
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 */etc/rc.d/nginx.vpk* in the archive and only be renamed if they are not present
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 on the disk or not manually modified.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
137
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 Uids / Gids
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 ===========
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
140
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 If the package requires UNIX users and groups, adapt the *PKGUIDS* and *PKGGIDS*
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 variables as a space separated list. You can assign a default numeric id using
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 the syntax `:number`.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
144
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 Example:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
146
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 PKGUIDS="messagebus" # vpk will assign an id
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 PKGUIDS="gdm:55" # vpk will use 55
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
149
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 Warning: if you need to change file permissions, do it *ONLY* in a post install
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 script as users may have set different numeric id than the package defaults.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
152
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 Once you need a new UID/GID, edit the file UIDS.md in this directory as well.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
154
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 Options
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 =======
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
157
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
158 If the package offer build options, edit the *PKGOPTIONS* variable and always
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
159 add default values that match upstream if possible. Boolean options must always
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
160 be considered as *yes* or *no*. If an option requires a list, use a space
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
161 separated list of values.
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
162
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
163 Example:
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
164
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
165 PKGOPTIONS="NLS DRIVERS"
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
166
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 : ${NLS:=yes}
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
168 : ${DRIVERS:=amd intel}
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
169
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 if [ "$NLS" = "yes" ]; then
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 PKGDEPENDS="core/gettext $PKGDEPENDS"
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 with_nls="--enable-nls"
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 else
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 with_nls="--disable-nls"
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 fi
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
176
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 Then at configure step:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
178
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 ./configure $with_nls
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
180
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 Proper handling of options is done by explicitly disabling/enabling options.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 Most programs will try to enable/disable features depending on what is available
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 on the system thus, if the package finds a dependency and enable it you need to
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 adapt *PKGDEPENDS*. Always check what options are available in the package and
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 use their default as explicit knobs to avoid invisible dependencies.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
186
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 See the file options.md for predefined options and proper naming.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
188
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 Paths
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 =====
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
191
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 The package must ensure appropriate directories for installing files. This
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 includes:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
194
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
195 - /etc/rc.d: for service files,
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
196 - /lib/pkgconfig: for .pc files,
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
197 - /lib/cmake: for CMake config files,
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
198 - /lib: for libraries (no lib64 suffix),
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
199 - /share/PKGNAME: data directory (if applicable),
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
200 - /share/locale: for NLS files,
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
201 - /share/man/man{1,2,3,4,5,6,7,8}: for man pages (in uncompressed form),
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
202 - /share/doc/PKGNAME (exact directory, no version): arbitrary documentation.
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
203
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 Keep neutral
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 ============
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
206
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 Do not make any modifications to the package. Keep it as close to upstream as
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 possible. Only minor tweaks are allowed including:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
209
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 - adjusting pid/uid/gid in a default configuration file for easier deployment
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
211 (but not on the original file example),
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
212 - making sure paths are consolidated,
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
213 - making sure system libraries are used rather than in-source bundles,
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
214 - replacing PAM files (see below).
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
215
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
216 PAM files
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
217 =========
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
218
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
219 The PAM system is an flexible and well designed authentication tool, it has a
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
220 large number of modules and configuration settings. This complexity leads to
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
221 inconsistent upstream PAM files that are not always compatible with the default
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
222 Vanilla Linux generic's files, therefore you *must* always replace the provided
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
223 PAM files with custom alternatives and sane defaults. In general, LFS is a good
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
224 recommandation regarding PAM files.
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
225
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
226 Also, don't forget to add PAM files to the *PKGPROTECT* variable as they are
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
227 meant to be edited by the system administrator.
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
228
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
229 Patches
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
230 =======
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
231
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
232 If a software requires patching, always try to see if there is already an
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
233 upstream patch that fixes the issue. If not, you may check how other Linux
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
234 distributions fix the problem with a local workaround.
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
235
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
236 Then, please consider sending the patch to the upstream if applicable.
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
237
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
238 Patches must be named in the form *patch-category.patch*. We encourage old style
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
239 of patches that you usually create by editing the file and comparing with the
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
240 original one.
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
241
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
242 Example:
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
243
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
244 cp Makefile.orig Makefile
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
245 vim Makefile
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
246 diff -ub Makefile.orig Makefile > patch-musl.patch
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
247
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
248 Warning: by default busybox patch is used and is much stricter than standalone
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
249 counterpart, in doubt always try to apply the patch manually with
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
250 busybox patch and edit if required.
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
251
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
252 The following names are recommended depending on the situation:
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
253
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
254 - patch-fhs.patch: when a patch is required to adapt installation/usage to the
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
255 Vanilla Linux file system hierarchy,
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
256 - patch-musl.patch: when the code assume a glibc specific code,
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
257 - patch-clang.patch: when the code does not compile with LLVM/Clang. Make sure
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
258 the patch does not break GCC, if it does apply the patch in a conditional.
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
259
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
260 Also, do not create a patch for individual files if they all belong to the same
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
261 category. For example, if several source files require patching to build against
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
262 musl, use only one *patch-musl.patch* file.
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
263
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
264 Services
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 ========
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
266
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
267 Services files must be installed in /etc/rc.d in the mode 0644.
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
268
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
269 Example:
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
270
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
271 install -Dm0644 food $DESTDIR/etc/rc.d/food
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
272
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
273 The script must at least support start, stop and restart.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
274
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
275 UX style
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
276 --------
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
277
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
278 You must use the following conventions regarding messages the service will
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
279 print.
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
280
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
281 ### start (required)
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
282
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
283 Always add arguments with the invocation.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
284
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
285 Starting foo: /bin/foo -d
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
286
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
287 If the service is already running, show:
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
288
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
289 foo is already running with pid: 1234
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
290
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
291 ### stop (required)
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
292
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
293 If the service is not running, don't write any message. Otherwise write:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
294
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
295 Stopping foo.
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
296
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
297 ### restart (required)
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
298
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 Basically, this command just calls stop and start.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
300
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
301 Stopping foo.
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
302 Starting foo: /bin/foo -d
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
303
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
304 ### status (recommended)
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
305
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 Depending on the status, write the following messages.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
307
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
308 foo is running with pid: 1234
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
309 foo is not running
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
310
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
311 ### usage (required)
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
312
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
313 If the script is invoked with invalid arguments or none, write the usage like
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 this through stderr and exit 1. Also keep all subcommands sorted.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
315
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
316 usage: foo restart|start|status|stop
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
317
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 If your script may support additional operations, messages and usage are up to
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
319 the maintainer discretion.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
320
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
321 See also the template file in Templates/rc.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
322
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
323 Libtool files
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
324 =============
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
325
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
326 Do not ship libtool files.
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
327
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
328 Manual pages
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
329 ============
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
330
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
331 Do never install compressed manual pages. The `vpk` tool performs automatic
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
332 compression on installation depending on the user setting. Check how to disable
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
333 compression in the package or decompress them after installation in the
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
334 destination directory.
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
335
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
336 Post install scripts
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
337 ====================
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
338
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
339 If you need to perform some custom steps after the installation of the binary
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
340 package in the target systems, you may create the NAME-post.sh script. This
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
341 script must be written also in pure POSIX shell language.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
342
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
343 As unique argument, `vpk` will provide one of these to the post script:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
344
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
345 - pre-install: before the extraction of the package.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
346 - post-install: after the extraction of the package.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
347 - pre-uninstall: before removing the package.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
348 - post-uninstall: after the removal of the package.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
349
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
350 Note: if the package wants to call a binary from an other package, it is usually
821
c5cbe07af6a9 vanilla: update manual.md
David Demelier <markand@malikania.fr>
parents: 714
diff changeset
351 a good idea to check it's presence first.
714
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
352
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
353 Example:
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
354
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
355 #!/bin/sh
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
356
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
357 if [ -x /bin/gtk-update-icon-cache ]; then
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
358 gtk-update-icon-cache -vf /share/icons/hicolor
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
359 fi
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
360
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
361 Desktop files
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
362 =============
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
363
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
364 We usually never add .desktop files for any package that doesn't provide one by
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
365 itself. This also includes terminal based applications.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
366
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
367 If a .desktop is provided by the package, make sure though that it is valid and
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
368 specifies the appropriate category (i.e. it does not appear in multiple menus at
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
369 once).
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
370
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
371 See [desktop entry specification][] for more information.
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
372
6b4ba668a43c vanilla: update documentation
David Demelier <markand@malikania.fr>
parents:
diff changeset
373 [desktop entry specification]: https://specifications.freedesktop.org/desktop-entry-spec/latest