Mercurial > vanilla
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 |
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 |