]> git.ipfire.org Git - people/ms/pakfire.git/blob - python/pakfire/constants.py
database: Save installed package size.
[people/ms/pakfire.git] / python / pakfire / constants.py
1 #!/usr/bin/python
2 ###############################################################################
3 # #
4 # Pakfire - The IPFire package management system #
5 # Copyright (C) 2011 Pakfire development team #
6 # #
7 # This program is free software: you can redistribute it and/or modify #
8 # it under the terms of the GNU General Public License as published by #
9 # the Free Software Foundation, either version 3 of the License, or #
10 # (at your option) any later version. #
11 # #
12 # This program is distributed in the hope that it will be useful, #
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15 # GNU General Public License for more details. #
16 # #
17 # You should have received a copy of the GNU General Public License #
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. #
19 # #
20 ###############################################################################
21
22 import os.path
23
24 from errors import *
25
26 from __version__ import PAKFIRE_VERSION
27
28 PAKFIRE_LEAST_COMPATIBLE_VERSION = PAKFIRE_VERSION
29
30 # The default hub to connect to.
31 PAKFIRE_HUB = "https://pakfirehub.ipfire.org/"
32
33 SYSCONFDIR = "/etc"
34 SCRIPT_DIR = "/usr/lib/pakfire"
35
36 CONFIG_DIR = os.path.join(SYSCONFDIR, "pakfire")
37 CONFIG_REPOS_DIR = os.path.join(CONFIG_DIR, "repos")
38 CONFIG_DISTRO_DIR = os.path.join(CONFIG_DIR, "distros")
39
40 KEYRING_DIR = os.path.join(CONFIG_DIR, "gnupg")
41
42 CACHE_DIR = "/var/cache/pakfire"
43 CCACHE_CACHE_DIR = os.path.join(CACHE_DIR, "ccache")
44 CACHE_ENVIRON_DIR = os.path.join(CACHE_DIR, "environments")
45 REPO_CACHE_DIR = os.path.join(CACHE_DIR, "downloads")
46
47 LOCAL_BUILD_REPO_PATH = "/var/lib/pakfire/local"
48 LOCAL_TMP_PATH = "/var/tmp"
49
50 PACKAGES_DB_DIR = "var/lib/pakfire"
51 PACKAGES_DB = os.path.join(PACKAGES_DB_DIR, "packages.db")
52 PACKAGES_SOLV = os.path.join(PACKAGES_DB_DIR, "packages.solv")
53 REPOSITORY_DB = "index.db"
54
55 BUFFER_SIZE = 102400
56
57 # The size of the data chunks that are uploaded to the
58 # pakfire hub.
59 CHUNK_SIZE = BUFFER_SIZE
60
61 MIRRORLIST_MAXSIZE = 1024**2
62
63 MACRO_FILE_DIR = "/usr/lib/pakfire/macros"
64 MACRO_EXTENSION = ".macro"
65
66 METADATA_FORMAT = 0
67 METADATA_DOWNLOAD_LIMIT = 1024**2
68 METADATA_DOWNLOAD_PATH = "repodata"
69 METADATA_DOWNLOAD_FILE = "repomd.json"
70 METADATA_DATABASE_FILE = "packages.solv"
71
72 PACKAGE_FORMAT = 5
73 # XXX implement this properly
74 PACKAGE_FORMATS_SUPPORTED = [0, 1, 2, 3, 4, 5]
75 PACKAGE_EXTENSION = "pfm"
76 MAKEFILE_EXTENSION = "nm"
77
78 DATABASE_FORMAT = 6
79 DATABASE_FORMATS_SUPPORTED = [0, 1, 2, 3, 4, 5, 6]
80
81 PACKAGE_FILENAME_FMT = "%(name)s-%(version)s-%(release)s.%(arch)s.%(ext)s"
82
83 BUILD_PACKAGES = [
84 "@Build",
85 "pakfire-build>=%s" % PAKFIRE_LEAST_COMPATIBLE_VERSION,
86 ]
87
88 # A script that is called, when a user is dropped to a chroot shell.
89 SHELL_SCRIPT = "/usr/lib/pakfire/chroot-shell"
90 SHELL_PACKAGES = ["elinks", "less", "vim", SHELL_SCRIPT,]
91 BUILD_ROOT = "/var/lib/pakfire/build"
92
93 SOURCE_DOWNLOAD_URL = "http://source.ipfire.org/source-3.x/"
94 SOURCE_CACHE_DIR = os.path.join(CACHE_DIR, "sources")
95
96 TIME_10M = 10
97 TIME_24H = 60*24
98
99 ORPHAN_DIRECTORIES = [
100 "lib", "lib64", "usr/lib", "usr/lib64", "libexec", "usr/libexec",
101 "bin", "sbin", "usr/bin", "usr/sbin", "usr/include", "usr/share",
102 "usr/share/man", "usr/share/man/man0", "usr/share/man/man1",
103 "usr/share/man/man2", "usr/share/man/man3", "usr/share/man/man4",
104 "usr/share/man/man5", "usr/share/man/man6", "usr/share/man/man7",
105 "usr/share/man/man8", "usr/share/man/man9", "usr/lib/pkgconfig",
106 ]
107 for i in ORPHAN_DIRECTORIES:
108 i = os.path.dirname(i)
109
110 if not i or i in ORPHAN_DIRECTORIES:
111 continue
112
113 ORPHAN_DIRECTORIES.append(i)
114
115 ORPHAN_DIRECTORIES.sort(cmp=lambda x,y: cmp(len(x), len(y)), reverse=True)
116
117 PACKAGE_INFO = """\
118 # Pakfire %(pakfire_version)s
119
120 # Package information
121 package
122 name = %(name)s
123 version = %(version)s
124 release = %(release)s
125 epoch = %(epoch)s
126 arch = %(arch)s
127
128 uuid = %(uuid)s
129 groups = %(groups)s
130 maintainer = %(maintainer)s
131 url = %(url)s
132 license = %(license)s
133
134 summary = %(summary)s
135
136 def description
137 %(description)s
138 end
139
140 type = %(type)s
141 size = %(inst_size)d
142 end
143
144 # Build information
145 build
146 host = %(build_host)s
147 id = %(build_id)s
148 time = %(build_time)d
149 end
150
151 # Distribution information
152 distribution
153 name = %(distro_name)s
154 release = %(distro_release)s
155 vendor = %(distro_vendor)s
156 maintainer = %(distro_maintainer)s
157 end
158
159 # Dependency information
160 dependencies
161 def prerequires
162 %(prerequires)s
163 end
164
165 def requires
166 %(requires)s
167 end
168
169 def provides
170 %(provides)s
171 end
172
173 def conflicts
174 %(conflicts)s
175 end
176
177 def obsoletes
178 %(obsoletes)s
179 end
180
181 def recommends
182 %(recommends)s
183 end
184
185 def suggests
186 %(suggests)s
187 end
188 end
189
190 # EOF
191 """
192 PACKAGE_INFO_DESCRIPTION_LINE = PACKAGE_INFO_DEPENDENCY_LINE = "\t\t%s"
193
194 # XXX make this configurable in pakfire.conf
195 PAKFIRE_MULTIINSTALL = [
196 "kernel",
197 "kernel-exynos",
198 "kernel-kirkwood",
199 "kernel-legacy",
200 "kernel-omap",
201 "kernel-versatile",
202 "kernel-devel",
203 ]
204
205 SCRIPTLET_INTERPRETER = "/bin/sh"
206 SCRIPTLET_TIMEOUT = 60 * 15
207
208 SCRIPTS = (
209 "pretransin",
210 "pretransun",
211 "pretransup",
212 "prein",
213 "postin",
214 "preun",
215 "postun",
216 "preup",
217 "postup",
218 "posttransin",
219 "posttransun",
220 "posttransup",
221 )
222
223 SCRIPTS_PREREQUIRES = (
224 "prein",
225 "postin",
226 "preup",
227 "postup",
228 )
229
230 LDCONFIG = "/sbin/ldconfig"
231
232 CONFIG_FILE_SUFFIX_NEW = ".paknew"
233 CONFIG_FILE_SUFFIX_SAVE = ".paksave"