]> git.pld-linux.org Git - packages/rpm.git/blob - rpm.spec
- sane default patch flags
[packages/rpm.git] / rpm.spec
1 #
2 # TODO:
3 # - when adopting, use 4.5 ticket for checklist: https://bugs.launchpad.net/pld-linux/+bug/262985
4 #
5 # Conditional build:
6 %bcond_without  apidocs         # don't generate documentation with doxygen
7 %bcond_without  python3         # don't build python bindings
8 %bcond_without  plugins         # build plugins
9 %bcond_without  recommends_tags # build without Recommends tag (bootstrapping)
10 %bcond_with     imaevm          # build with IMA/EVM support (requires libimaevm from ima-evm-utils)
11
12 %define         db_ver          5.3.28.0
13 %define         popt_ver        1.15
14 %define         sover           9.1.0
15
16 %if "%{_rpmversion}" >= "4.12" && "%{_rpmversion}" < "5"
17 %define with_recommends_tags    1
18 %endif
19
20 Summary:        RPM Package Manager
21 Summary(de.UTF-8):      RPM Packet-Manager
22 Summary(es.UTF-8):      Gestor de paquetes RPM
23 Summary(pl.UTF-8):      Aplikacja do zarządzania pakietami RPM
24 Summary(pt_BR.UTF-8):   Gerenciador de pacotes RPM
25 Summary(ru.UTF-8):      Менеджер пакетов от RPM
26 Summary(uk.UTF-8):      Менеджер пакетів від RPM
27 Name:           rpm
28 Version:        4.16.0
29 Release:        0.10
30 Epoch:          1
31 License:        GPL v2 / LGPL v2.1
32 Group:          Base
33 Source0:        http://ftp.rpm.org/releases/rpm-4.16.x/%{name}-%{version}.tar.bz2
34 # Source0-md5:  434e166a812e35ef181f6dd176326920
35 Source1:        ftp://ftp.pld-linux.org/dists/th/PLD-3.0-Th-GPG-key.asc
36 # Source1-md5:  23914bb49fafe7153cee87126d966461
37 Source2:        macros.local
38 Source3:        macros.lang
39 Source4:        %{name}.sysconfig
40 Source5:        %{name}.groups
41 Source6:        %{name}-groups-po.awk
42 Source7:        %{name}-install-tree
43 Source9:        %{name}-user_group.sh
44 # http://svn.pld-linux.org/banner.sh/
45 Source10:       banner.sh
46 Source11:       %{name}.noautoprov
47 Source12:       %{name}.noautoprovfiles
48 Source13:       %{name}.noautoreq
49 Source14:       %{name}.noautoreqfiles
50 Source15:       perl.prov
51 Source16:       %{name}db_checkversion.c
52 Source17:       %{name}db_reset.c
53 Source18:       dbupgrade.sh
54 Patch0:         %{name}-man_pl.patch
55 Patch1:         %{name}-popt-aliases.patch
56 Patch2:         %{name}-perl-macros.patch
57 Patch3:         %{name}-perl-req-perlfile.patch
58 Patch4:         %{name}-scripts-closefds.patch
59 Patch6:         %{name}-perl_req-INC_dirs.patch
60 Patch7:         %{name}-debuginfo.patch
61 Patch8:         %{name}-libtool-deps.patch
62 Patch9:         %{name}-builddir-readlink.patch
63 Patch10:        %{name}-changelog_order_check_nonfatal.patch
64 Patch11:        %{name}-postun-nofail.patch
65 Patch12:        %{name}-clean-docdir.patch
66 Patch13:        %{name}-perl-magic.patch
67 Patch14:        %{name}-ignore-missing-macro-files.patch
68 Patch15:        x32.patch
69 Patch16:        rpm5-db-compat.patch
70 Patch17:        python-internal-build.patch
71 Patch18:        missing-macros.patch
72 Patch19:        pkgconfig.patch
73 Patch20:        uname-deps.patch
74 Patch21:        aarch64.patch
75 Patch22:        ix86-platforms.patch
76 Patch23:        shortcircuited-deps.patch
77 Patch24:        cpuinfo-deps.patch
78 Patch25:        rpmio-read-proc-files.patch
79 Patch26:        allow-at-in-ver-rel.patch
80 Patch27:        no-exeonly-for-elf-reqprov.patch
81 Patch28:        default-patch-flags.patch
82 URL:            https://rpm.org/
83 BuildRequires:  acl-devel
84 BuildRequires:  db-devel >= %{db_ver}
85 BuildRequires:  autoconf >= 2.63
86 BuildRequires:  automake >= 1.4
87 BuildRequires:  bzip2-devel >= 1.0.2-17
88 BuildRequires:  elfutils-devel >= 0.108
89 BuildRequires:  gettext-tools >= 0.19.2
90 BuildRequires:  libarchive-devel
91 BuildRequires:  libcap-devel
92 BuildRequires:  libmagic-devel
93 BuildRequires:  libgcrypt-devel
94 %if %{with plugins}
95 BuildRequires:  audit-libs-devel
96 BuildRequires:  dbus-devel
97 %{?with_imaevm:BuildRequires:   libimaevm-devel >= 1.0}
98 BuildRequires:  libselinux-devel >= 2.1.0
99 %endif
100 # needed only for AM_PROG_CXX used for CXX substitution in rpm.macros
101 BuildRequires:  libstdc++-devel
102 BuildRequires:  libtool >= 1:1.4.2-9
103 BuildRequires:  ossp-uuid-devel
104 BuildRequires:  patch >= 2.2
105 BuildRequires:  pkgconfig(lua) >= 5.1
106 BuildRequires:  popt-devel >= %{popt_ver}
107 BuildRequires:  python3-modules
108 %if %{with python3}
109 BuildRequires:  python3-devel
110 BuildRequires:  rpm-pythonprov
111 BuildRequires:  rpmbuild(macros) >= 1.750
112 %endif
113 BuildRequires:  sqlite3-devel >= 3.22.0
114 BuildRequires:  tcl
115 BuildRequires:  xz-devel
116 BuildRequires:  zlib-devel
117 BuildRequires:  zstd-devel
118 %if %{with apidocs}
119 BuildRequires:  doxygen
120 BuildRequires:  ghostscript
121 BuildRequires:  graphviz
122 BuildRequires:  tetex-pdftex
123 %endif
124 Requires(posttrans):    coreutils
125 Requires:       %{name}-base = %{epoch}:%{version}-%{release}
126 Requires:       %{name}-lib = %{epoch}:%{version}-%{release}
127 Requires:       rpm-pld-macros >= 1.744
128 Requires:       FHS >= 3.0-2
129 Requires:       libgcrypt
130 Requires:       popt >= %{popt_ver}
131 %if %{with recommends_tags}
132 Recommends:     rpm-plugin-audit
133 Recommends:     rpm-plugin-prioreset
134 Recommends:     rpm-plugin-syslog
135 Recommends:     rpm-plugin-systemd-inhibit
136 %endif
137 Obsoletes:      rpm-utils-perl
138 Obsoletes:      rpm-utils-static
139 Conflicts:      glibc < 2.2.92
140 # db4.6 poldek needed
141 Conflicts:      poldek < 0.21-0.20070703.00.3
142 # segfaults with lzma 0.42.2
143 Conflicts:      lzma-libs < 4.999.3
144 Conflicts:      util-vserver < 0.30.216-1.pre3034.7
145 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
146
147 %define         _binary_payload         w9.gzdio
148
149 # don't require very fresh rpm.macros to build
150 %define         find_lang sh ./scripts/find-lang.sh $RPM_BUILD_ROOT
151 %define         ix86    i386 i486 i586 i686 athlon geode pentium3 pentium4
152 %define         ppc     ppc ppc7400 ppc7450
153 %define         x8664   amd64 ia32e x86_64
154
155 %define         _rpmlibdir /usr/lib/rpm
156
157 %description
158 RPM is a powerful package manager, which can be used to build,
159 install, query, verify, update, and uninstall individual software
160 packages. A package consists of an archive of files, and package
161 information, including name, version, and description.
162
163 %description -l de.UTF-8
164 RPM ist ein kräftiger Packet-Manager, der verwendet sein kann zur
165 Installation, Anfrage, Verifizierung, Aktualisierung und
166 Uninstallation individueller Softwarepakete. Ein Paket besteht aus
167 einem Archiv Dateien und Paketinformation, inklusive Name, Version und
168 Beschreibung.
169
170 %description -l es.UTF-8
171 RPM es un poderoso administrador de paquetes, que puede ser usado para
172 construir, instalar, pesquisar, verificar, actualizar y desinstalar
173 paquetes individuales de software. Un paquete consiste en un
174 almacenaje de archivos, y información sobre el paquete, incluyendo
175 nombre, versión y descripción.
176
177 %description -l pl.UTF-8
178 RPM jest doskonałym programem zarządzającym pakietami. Umożliwia on
179 przebudowanie, instalację czy weryfikację dowolnego pakietu.
180 Informacje dotyczące każdego pakietu, takie jak jego opis, lista
181 plików wchodzących w skład pakietu, zależności od innych pakietów, są
182 przechowywane w bazie danych i można je uzyskać za pomocą opcji
183 odpytywania programu rpm.
184
185 %description -l pt_BR.UTF-8
186 RPM é um poderoso gerenciador de pacotes, que pode ser usado para
187 construir, instalar, pesquisar, verificar, atualizar e desinstalar
188 pacotes individuais de software. Um pacote consiste de um conjunto de
189 arquivos e informações adicionais, incluindo nome, versão e descrição
190 do pacote, permissões dos arquivos, etc.
191
192 %description -l ru.UTF-8
193 RPM - это мощный менеджер пакетов, который может быть использован для
194 создания, инсталляции, запросов (query), проверки, обновления и
195 удаления программных пакетов. Пакет состоит из файлового архива и
196 служебной информации, включающей название, версию, описание и другие
197 данные о пакете.
198
199 %description -l uk.UTF-8
200 RPM - це потужний менеджер пакетів, що може бути використаний для
201 створення, інсталяції, запитів (query), перевірки, поновлення та
202 видалення програмних пакетів. Пакет складається з файлового архіву та
203 службової інформації, що містить назву, версію, опис та іншу
204 інформацію про пакет.
205
206 %package base
207 Summary:        RPM base package - scripts used by rpm packages themselves
208 Summary(pl.UTF-8):      Podstawowy pakiet RPM - skrypty używane przez same pakiety rpm
209 Group:          Base
210 Requires:       filesystem
211 Obsoletes:      rpm-scripts
212 Obsoletes:      vserver-rpm
213
214 %description base
215 The RPM base package contains scripts used by rpm packages themselves.
216 These include:
217 - scripts for adding/removing groups and users needed for rpm
218   packages,
219 - banner.sh to display %%banner messages from rpm scriptlets.
220
221 %description base -l pl.UTF-8
222 Pakiet podstawowy RPM zwiera skrypty używane przez same pakiety rpm.
223 Zawiera on:
224 - skrypty dodające/usuwające grupy i użytkowników dla pakietów rpm,
225 - banner.sh do pokazywania komunikatów %%banner dla skryptletów rpm.
226
227 %package lib
228 Summary:        RPMs library
229 Summary(pl.UTF-8):      Biblioteki RPM-a
230 Group:          Libraries
231 Requires:       db >= %{db_ver}
232 Requires:       libmagic >= 1.15-2
233 Requires:       popt >= %{popt_ver}
234 Obsoletes:      rpm-libs
235 # avoid SEGV caused by mixed db versions
236 Conflicts:      poldek < 0.18.1-16
237
238 %description lib
239 RPMs library.
240
241 %description lib -l pl.UTF-8
242 Biblioteki RPM-a.
243
244 %package devel
245 Summary:        Header files for rpm libraries
246 Summary(de.UTF-8):      Header-Dateien für rpm Libraries
247 Summary(es.UTF-8):      Archivos de inclusión y bibliotecas para programas de manipulación de paquetes rpm
248 Summary(pl.UTF-8):      Pliki nagłówkowe bibliotek rpm
249 Summary(pt_BR.UTF-8):   Arquivos de inclusão e bibliotecas para programas de manipulação de pacotes RPM
250 Summary(ru.UTF-8):      Хедеры и библиотеки для программ, работающих с rpm-пакетами
251 Summary(uk.UTF-8):      Хедери та бібліотеки для програм, що працюють з пакетами rpm
252 Group:          Development/Libraries
253 Requires:       %{name}-lib = %{epoch}:%{version}-%{release}
254 Requires:       bzip2-devel
255 Requires:       db-devel >= %{db_ver}
256 Requires:       elfutils-devel
257 Requires:       libmagic-devel
258 Requires:       libgcrypt-devel
259 %if %{with selinux}
260 Requires:       libselinux-devel
261 Requires:       libsemanage-devel
262 Requires:       libsepol-devel
263 %endif
264 Requires:       popt-devel >= %{popt_ver}
265 Requires:       zlib-devel
266
267 %description devel
268 The RPM packaging system includes C libraries that make it easy to
269 manipulate RPM packages and databases. They are intended to ease the
270 creation of graphical package managers and other tools that need
271 intimate knowledge of RPM packages. This package contains header files
272 for these libraries.
273
274 %description devel -l de.UTF-8
275 Der RPM-Packensystem enthält eine C-Library, die macht es einfach
276 RPM-Pakete und Dateibanken zu manipulieren. Er eignet sich für
277 Vereinfachung des Schaffens grafischer Paket-Manager und anderer
278 Werkzeuge, die intime Kenntnis von RPM-Paketen brauchen.
279
280 %description devel -l es.UTF-8
281 El sistema de empaquetado RPM incluye una biblioteca C que vuelve
282 fácil la manipulación de paquetes y bases de datos RPM. Su objetivo es
283 facilitar la creación de administradores gráficos de paquetes y otras
284 herramientas que necesiten un conocimiento profundo de paquetes RPM.
285
286 %description devel -l pl.UTF-8
287 System RPM zawiera biblioteki C, które ułatwiają manipulowanie
288 pakietami RPM oraz bazami danych. W zamiarze ma to uprościć tworzenie
289 graficznych programów zarządzających pakietami oraz innych narzędzi,
290 które wymagają szczegółowej wiedzy na temat pakietów RPM. Ten pakiet
291 zawiera pliki nagłówkowe wspomnianych bibliotek.
292
293 %description devel -l pt_BR.UTF-8
294 O sistema de empacotamento RPM inclui uma biblioteca C que torna fácil
295 a manipulação de pacotes e bases de dados RPM. Seu objetivo é
296 facilitar a criação de gerenciadores gráficos de pacotes e outras
297 ferramentas que precisem de conhecimento profundo de pacotes RPM.
298
299 %description devel -l ru.UTF-8
300 Система управления пакетами RPM содержит библиотеку C, которая
301 упрощает манипуляцию пакетами RPM и соответствующими базами данных.
302 Эта библиотека предназначена для облегчения создания графических
303 пакетных менеджеров и других утилит, которым необходимо работать с
304 пакетами RPM.
305
306 %description devel -l uk.UTF-8
307 Система керування пакетами RPM містить бібліотеку C, котра спрощує
308 роботу з пакетами RPM та відповідними базами даних. Ця бібліотека
309 призначена для полегшення створення графічних пакетних менеджерів та
310 інших утиліт, що працюють з пакетами RPM.
311
312 %package utils
313 Summary:        Additional utilities for managing RPM packages and database
314 Summary(de.UTF-8):      Zusatzwerkzeuge für Verwaltung RPM-Pakete und Datenbanken
315 Summary(pl.UTF-8):      Dodatkowe narzędzia do zarządzania bazą RPM-a i pakietami
316 Group:          Applications/File
317 Requires:       %{name} = %{epoch}:%{version}-%{release}
318 Requires:       popt >= %{popt_ver}
319 %if %{with recommends_tags}
320 Recommends:     bzip2
321 Recommends:     gzip
322 %endif
323 Conflicts:      filesystem-debuginfo < 3.0-16
324
325 %description utils
326 Additional utilities for managing RPM packages and database.
327
328 %description utils -l de.UTF-8
329 Zusatzwerkzeuge für Verwaltung RPM-Pakete und Datenbanken.
330
331 %description utils -l pl.UTF-8
332 Dodatkowe narzędzia do zarządzania bazą RPM-a i pakietami.
333
334 %package build
335 Summary:        Scripts for building binary RPM packages
336 Summary(de.UTF-8):      Scripts fürs Bauen binärer RPM-Pakete
337 Summary(pl.UTF-8):      Skrypty pomocnicze do budowania binarnych RPM-ów
338 Summary(pt_BR.UTF-8):   Scripts e programas executáveis usados para construir pacotes
339 Summary(ru.UTF-8):      Скрипты и утилиты, необходимые для сборки пакетов
340 Summary(uk.UTF-8):      Скрипти та утиліти, необхідні для побудови пакетів
341 Group:          Applications/File
342 Requires(pretrans):     coreutils
343 Requires(pretrans):     findutils
344 Requires:       %{name}-utils = %{epoch}:%{version}-%{release}
345 Requires:       rpm-pld-macros-build >= 1.744
346 Requires:       /bin/id
347 Requires:       awk
348 Requires:       bzip2
349 Requires:       chrpath >= 0.10-4
350 Requires:       cpio
351 Requires:       diffutils
352 Requires:       elfutils
353 Requires:       file >= 4.17
354 Requires:       fileutils
355 Requires:       findutils
356 %ifarch athlon
357 Requires:       gcc >= 3.0.3
358 %else
359 Requires:       gcc
360 %endif
361 Requires:       glibc-devel
362 Requires:       grep
363 Requires:       gzip
364 Requires:       make
365 Requires:       patch
366 Requires:       sed >= 4.0
367 Requires:       sh-utils
368 Requires:       tar >= 1:1.22
369 Requires:       textutils
370 Requires:       which
371 Requires:       xz
372 Provides:       rpmbuild(noauto) = 3
373 %ifarch %{x8664}
374 Conflicts:      automake < 1:1.7.9-2
375 Conflicts:      libtool < 2:1.5-13
376 %endif
377
378 %description build
379 Scripts for building binary RPM packages.
380
381 %description build -l de.UTF-8
382 Scripts fürs Bauen binärer RPM-Pakete.
383
384 %description build -l pl.UTF-8
385 Skrypty pomocnicze do budowania binarnych RPM-ów.
386
387 %description build -l pt_BR.UTF-8
388 Este pacote contém scripts e programas executáveis que são usados para
389 construir pacotes usando o RPM.
390
391 %description build -l ru.UTF-8
392 Различные вспомогательные скрипты и исполняемые программы, которые
393 используются для сборки RPM'ов.
394
395 %description build -l uk.UTF-8
396 Різноманітні допоміжні скрипти та утиліти, які використовуються для
397 побудови RPM'ів.
398
399 %package perlprov
400 Summary:        Additional utilities for checking Perl provides/requires in RPM packages
401 Summary(de.UTF-8):      Zusatzwerkzeuge fürs Nachsehen Perl-Abhängigkeiten in RPM-Paketen
402 Summary(pl.UTF-8):      Dodatkowe narzędzia do sprawdzenia zależności skryptów Perla w pakietach RPM
403 Group:          Applications/File
404 Requires:       %{name} = %{epoch}:%{version}-%{release}
405 Requires:       perl-Encode
406 Requires:       perl-devel
407 Requires:       perl-modules
408
409 %description perlprov
410 Additional utilities for checking Perl provides/requires in RPM
411 packages.
412
413 %description perlprov -l de.UTF-8
414 Zusatzwerkzeuge fürs Nachsehen Perl-Abhängigkeiten in RPM-Paketen.
415
416 %description perlprov -l pl.UTF-8
417 Dodatkowe narzędzia do sprawdzenia zależności skryptów Perla w
418 pakietach RPM.
419
420 %package pythonprov
421 Summary:        Python macros, which simplifies creation of RPM packages with Python software
422 Summary(pl.UTF-8):      Makra ułatwiające tworzenie pakietów RPM z programami napisanymi w Pythonie
423 Group:          Applications/File
424 Requires:       %{name} = %{epoch}:%{version}-%{release}
425 Requires:       python3
426 Requires:       python3-modules
427 Requires:       python3-setuptools
428
429 %description pythonprov
430 Python macros, which simplifies creation of RPM packages with Python
431 software.
432
433 %description pythonprov -l pl.UTF-8
434 Makra ułatwiające tworzenie pakietów RPM z programami napisanymi w
435 Pythonie.
436
437 %package -n python3-rpm
438 Summary:        Python 3 interface to RPM library
439 Summary(pl.UTF-8):      Interfejs Pythona 3 do biblioteki RPM-a
440 Summary(pt_BR.UTF-8):   Módulo Python 3 para aplicativos que manipulam pacotes RPM
441 Group:          Development/Languages/Python
442 Requires:       %{name} = %{epoch}:%{version}-%{release}
443 Requires:       python3
444 Obsoletes:      python-rpm < 1:4.16.0
445 Obsoletes:      rpm-python
446
447 %description -n python3-rpm
448 The python3-rpm package contains a module which permits applications
449 written in the Python 3 programming language to use the interface
450 supplied by RPM (RPM Package Manager) libraries.
451
452 This package should be installed if you want to develop Python 3
453 programs that will manipulate RPM packages and databases.
454
455 %description -n python3-rpm -l pl.UTF-8
456 Pakiet python3-rpm zawiera moduł, który pozwala aplikacjom napisanym w
457 Pythonie 3 na używanie interfejsu dostarczanego przez biblioteki
458 RPM-a.
459
460 Pakiet ten powinien zostać zainstalowany, jeśli chcesz pisać w
461 Pythonie 3 programy manipulujące pakietami i bazami danych rpm.
462
463 %description -n python3-rpm -l pt_BR.UTF-8
464 O pacote python3-rpm contém um módulo que permite que aplicações
465 escritas em Python 3 utilizem a interface fornecida pelas bibliotecas
466 RPM (RPM Package Manager).
467
468 Esse pacote deve ser instalado se você quiser desenvolver programas em
469 Python 3 para manipular pacotes e bancos de dados RPM.
470
471 %package plugin-audit
472 Summary:        Plugin for logging audit events on package operations
473 Group:          Base
474 Requires:       %{name}-lib = %{epoch}:%{version}-%{release}
475
476 %description plugin-audit
477 Plugin for libaudit support
478
479 %package plugin-syslog
480 Summary:        Plugin for syslog functionality
481 Group:          Base
482 Requires:       %{name}-lib = %{epoch}:%{version}-%{release}
483
484 %description plugin-syslog
485 This plugin exports RPM actions to the system log.
486
487 %package plugin-systemd-inhibit
488 Summary:        Plugin for systemd inhibit functionality
489 Group:          Base
490 Requires:       %{name}-lib = %{epoch}:%{version}-%{release}
491
492 %description plugin-systemd-inhibit
493 This plugin blocks systemd from entering idle, sleep or shutdown while
494 an rpm transaction is running using the systemd-inhibit mechanism.
495
496 %package plugin-ima
497 Summary:        Plugin for IMA file signatures
498 Group:          Base
499 Requires:       %{name}-lib = %{epoch}:%{version}-%{release}
500
501 %description plugin-ima
502 This plugin adds support for enforcing and verifying IMA file
503 signatures in an rpm.
504
505 %package plugin-prioreset
506 Summary:        Plugin for resetting scriptlet priorities for SysV init
507 Group:          Base
508 Requires:       %{name}-lib = %{epoch}:%{version}-%{release}
509
510 %description plugin-prioreset
511 This plugin is useful on legacy SysV init systems if you run rpm
512 transactions with nice/ionice priorities. Should not be used on
513 systemd systems.
514
515 %package plugin-selinux
516 Summary:        Plugin for SELinux functionality
517 Group:          Base
518 Requires:       %{name}-lib = %{epoch}:%{version}-%{release}
519 Requires:       libselinux >= 2.1.0
520
521 %description plugin-selinux
522 Plugin for SELinux functionality.
523
524 %package sign
525 Summary:        Package signing support
526 Group:          Base
527 Requires:       %{name}-lib = %{epoch}:%{version}-%{release}
528
529 %description sign
530 This package contains support for digitally signing RPM packages.
531
532 %package apidocs
533 Summary:        RPM API documentation and guides
534 Summary(pl.UTF-8):      Documentacja API RPM-a i przewodniki
535 Group:          Documentation
536 BuildArch:      noarch
537
538 %description apidocs
539 Documentation for RPM API and guides in HTML format generated from rpm
540 sources by doxygen.
541
542 %description apidocs -l pl.UTF-8
543 Dokumentacja API RPM-a oraz przewodniki w formacie HTML generowane ze
544 źrodeł RPM-a przez doxygen.
545
546 %prep
547 %setup -q -n %{name}-%{version}%{?subver}
548 %patch0 -p1
549 %patch1 -p1
550 %patch2 -p1
551 %patch3 -p1
552 %patch4 -p1
553 %patch6 -p0
554 %patch7 -p1
555 %patch8 -p1
556 %patch9 -p1
557 %patch10 -p1
558 %patch11 -p1
559 %patch12 -p1
560 %patch13 -p1
561 %patch14 -p1
562 %patch15 -p1
563 %patch16 -p1
564 %patch17 -p1
565 %patch18 -p1
566 %patch19 -p1
567 %patch20 -p1
568 %patch21 -p1
569 %patch22 -p1
570 %patch23 -p1
571 %patch24 -p1
572 %patch25 -p1
573 %patch26 -p1
574 %patch27 -p1
575 %patch28 -p1
576
577 install %{SOURCE15} scripts/perl.prov.in
578
579 %{__mv} -f scripts/perl.req{,.in}
580
581 # generate Group translations to *.po
582 awk -f %{SOURCE6} %{SOURCE5}
583
584 install %{SOURCE16} tools/rpmdb_checkversion.c
585 install %{SOURCE17} tools/rpmdb_reset.c
586
587 %{__sed} -i -e '1s,/usr/bin/python,%{__python3},' scripts/pythondistdeps.py
588
589 %build
590 %{__libtoolize}
591 %{__aclocal}
592 %{__autoheader}
593 %{__autoconf}
594 %{__automake}
595
596 # rpm checks for CPU type at runtime, but it looks better
597 sed -i \
598         -e 's|@host@|%{_target_cpu}-%{_target_vendor}-%{_target_os}|' \
599         -e 's|@host_cpu@|%{_target_cpu}|' \
600         -e 's|@host_os@|%{_target_os}|' \
601         macros.in
602
603 %configure \
604         WITH_PERL_VERSION=no \
605         __GST_INSPECT=%{_bindir}/gst-inspect-1.0 \
606         __GPG=%{_bindir}/gpg \
607 %if %{with python3}
608         PYTHON=python3 \
609         --enable-python \
610 %endif
611         --disable-silent-rules \
612         --enable-shared \
613         --enable-bdb \
614         --enable-bdb-ro \
615         --enable-ndb \
616         --enable-sqlite \
617         --enable-zstd \
618         --with-lua \
619         %{?with_imaevm:--with-imaevm} \
620         --with-cap \
621         --with-acl \
622         --with-audit \
623         --with-archive \
624         --with-selinux=%{!?with_plugins:no}%{?with_plugins:yes} \
625         %{!?with_plugins:--disable-plugins} \
626         --with-vendor=pld
627
628 %{__make}
629
630 %{__cc} %{rpmcflags} tools/rpmdb_checkversion.c -o tools/rpmdb_checkversion -ldb
631 %{__cc} %{rpmcflags} tools/rpmdb_reset.c -o tools/rpmdb_reset -ldb
632
633 if tools/rpmdb_checkversion -V 2>&1 | grep "t match library version"; then
634         echo "Error linking rpmdb tools!"
635         exit 1
636 fi
637 if tools/rpmdb_reset -V 2>&1 | grep "t match library version"; then
638         echo "Error linking rpmdb tools!"
639         exit 1
640 fi
641
642 %if %{with python3}
643 cd python
644 %py3_build
645 %endif
646
647 %install
648 rm -rf $RPM_BUILD_ROOT
649 install -d $RPM_BUILD_ROOT{/bin,/%{_lib},/etc/sysconfig,%{_sysconfdir}/{rpm,pki/rpm-gpg}} \
650         $RPM_BUILD_ROOT/var/lib/{banner,rpm}
651
652 cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/pki/rpm-gpg/PLD-3.0-Th-GPG-key.asc
653
654 %{__make} install \
655         pkgconfigdir=%{_pkgconfigdir} \
656         DESTDIR=$RPM_BUILD_ROOT
657
658 # cleanup
659 %ifnarch %{ix86} %{x8664} x32
660 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/athlon-linux/macros
661 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/geode-linux/macros
662 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/i386-linux/macros
663 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/i486-linux/macros
664 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/i586-linux/macros
665 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/i686-linux/macros
666 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/pentium3-linux/macros
667 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/pentium4-linux/macros
668 %endif
669
670 %ifnarch %{x8664} x32
671 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/amd64-linux/macros
672 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ia32e-linux/macros
673 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/x32-linux/macros
674 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/x86_64-linux/macros
675 %endif
676
677 %ifnarch %{ppc}
678 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/m68k-linux/macros
679 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc32dy4-linux/macros
680 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc64*-linux/macros
681 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc8260-linux/macros
682 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc8560-linux/macros
683 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc-linux/macros
684 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ppc*series-linux/macros
685 %endif
686
687 %ifnarch aarch64
688 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/aarch64-linux/macros
689 %endif
690
691 %ifnarch %{arm}
692 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/arm*-linux/macros
693 %endif
694
695 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/alpha*-linux/macros
696 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/ia64-linux/macros
697 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/mips*-linux/macros
698 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/riscv64-linux/macros
699 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/s390*-linux/macros
700 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/sh*-linux/macros
701 rm $RPM_BUILD_ROOT%{_rpmlibdir}/platform/sparc*-linux/macros
702
703 cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
704 %ifarch x32
705 %{_target_cpu}-%{_target_vendor}-linux-gnux32
706 %else
707 %{_target_cpu}-%{_target_vendor}-linux
708 %endif
709 EOF
710
711 %{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/find-lang.sh
712
713 install -d $RPM_BUILD_ROOT%{_rpmlibdir}/pld
714
715 cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_rpmlibdir}/install-build-tree
716 cp -p %{SOURCE9} $RPM_BUILD_ROOT%{_rpmlibdir}/user_group.sh
717 cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/rpm
718
719 cp -p %{SOURCE10} $RPM_BUILD_ROOT%{_bindir}/banner.sh
720
721 cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros
722 cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.lang
723 cp -p %{SOURCE11} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoprov
724 cp -p %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoprovfiles
725 cp -p %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoreq
726 cp -p %{SOURCE14} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoreqfiles
727
728 cp -p tools/rpmdb_checkversion $RPM_BUILD_ROOT%{_rpmlibdir}/
729 cp -p tools/rpmdb_reset $RPM_BUILD_ROOT%{_rpmlibdir}/
730 cp -p %{SOURCE18} $RPM_BUILD_ROOT%{_rpmlibdir}/dbupgrade.sh
731
732 # move rpm to /bin
733 %{__mv} $RPM_BUILD_ROOT%{_bindir}/rpm $RPM_BUILD_ROOT/bin
734 ln -sf /bin/rpm $RPM_BUILD_ROOT%{_bindir}/rpmquery
735 ln -sf /bin/rpm $RPM_BUILD_ROOT%{_bindir}/rpmverify
736
737 # move essential libs to /lib (libs that /bin/rpm links to)
738 for a in librpm.so librpmbuild.so librpmio.so librpmsign.so; do
739         mv -f $RPM_BUILD_ROOT%{_libdir}/${a}.* $RPM_BUILD_ROOT/%{_lib}
740         ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/${a}.*.*.*) $RPM_BUILD_ROOT%{_libdir}/${a}
741 done
742
743 #./rpmdb --macros=macros --rcfile=rpmrc --dbpath=/home/users/baggins/devel/PLD/rpm/BUILD/rpm-4.15.1/x/ --initdb
744
745 # Make sure we have bdb set a default backend
746 grep -qE "db_backend[[:blank:]]+bdb" $RPM_BUILD_ROOT%{_rpmlibdir}/macros
747
748 %if %{with python3}
749 # Remove anything that rpm make install might put there
750 %{__rm} -rf $RPM_BUILD_ROOT%{py3_sitedir}
751 cd python
752 %py3_install
753 cd ..
754 %endif
755
756 %{__rm} $RPM_BUILD_ROOT%{_libdir}/rpm-plugins/*.la
757
758 # wrong location, not used anyway
759 %{__rm} $RPM_BUILD_ROOT%{_rpmlibdir}/rpm.{daily,log}
760
761 %find_lang %{name}
762
763 %clean
764 rm -rf $RPM_BUILD_ROOT
765
766 %posttrans
767 if [ -e /var/lib/rpm/Packages ] && \
768                 ! %{_rpmlibdir}/rpmdb_checkversion -h /var/lib/rpm -d /var/lib/rpm; then
769         if [ ! -e /var/lib/rpm.rpmbackup-%{version}-%{release} ] && \
770                         /bin/cp -a /var/lib/rpm /var/lib/rpm.rpmbackup-%{version}-%{release}; then
771                 echo
772                 echo "Backup of the rpm database has been created in /var/lib/rpm.rpmbackup-%{version}-%{release}"
773                 echo
774         fi
775         echo
776         echo 'If poldek aborts after migration with rpmdb error, this is expected behaviour,'
777         echo 'you should ignore it and restart poldek'
778         echo
779         %{_rpmlibdir}/dbupgrade.sh
780 fi
781
782 %post   lib -p /sbin/ldconfig
783 %postun lib -p /sbin/ldconfig
784
785 %pretrans build
786 find %{_rpmlibdir} -name '*-linux' -type l | xargs rm -f
787
788 %files -f %{name}.lang
789 %defattr(644,root,root,755)
790 %doc ChangeLog CREDITS README
791
792 %dir /etc/pki/rpm-gpg
793 /etc/pki/rpm-gpg/PLD-3.0-Th-GPG-key.asc
794
795 %attr(755,root,root) /bin/rpm
796 %attr(755,root,root) %{_bindir}/rpmdb
797 %attr(755,root,root) %{_bindir}/rpmkeys
798 %attr(755,root,root) %{_bindir}/rpmquery
799 %attr(755,root,root) %{_bindir}/rpmverify
800
801 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rpm/macros
802 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rpm/macros.lang
803 # this is ok to be replaced
804 %config %verify(not md5 mtime size) %{_sysconfdir}/rpm/platform
805
806 %{_mandir}/man8/rpm.8*
807 %{_mandir}/man8/rpmdb.8*
808 %{_mandir}/man8/rpmkeys.8*
809 %{_mandir}/man8/rpm-misc.8*
810 %{?with_plugins:%{_mandir}/man8/rpm-plugins.8*}
811 %lang(fr) %{_mandir}/fr/man8/rpm.8*
812 %lang(ja) %{_mandir}/ja/man8/rpm.8*
813 %lang(ko) %{_mandir}/ko/man8/rpm.8*
814 %lang(pl) %{_mandir}/pl/man8/rpm.8*
815 %lang(ru) %{_mandir}/ru/man8/rpm.8*
816 %lang(sk) %{_mandir}/sk/man8/rpm.8*
817
818 %dir /var/lib/rpm
819
820 %{_rpmlibdir}/rpmpopt*
821 %{_rpmlibdir}/rpmrc
822 %{_rpmlibdir}/macros
823 %dir %{_rpmlibdir}/macros.d
824 %dir %{_rpmlibdir}/platform
825 %{_rpmlibdir}/platform/noarch-*
826 %ifarch %{ix86} %{x8664} x32
827 %{_rpmlibdir}/platform/athlon*
828 %{_rpmlibdir}/platform/geode*
829 %{_rpmlibdir}/platform/i?86*
830 %{_rpmlibdir}/platform/pentium*
831 %endif
832 %ifarch %{x8664} x32
833 %{_rpmlibdir}/platform/amd64*
834 %{_rpmlibdir}/platform/ia32e*
835 %{_rpmlibdir}/platform/x86_64*
836 %{_rpmlibdir}/platform/x32*
837 %endif
838 %ifarch alpha
839 %{_rpmlibdir}/platform/alpha*
840 %endif
841 %ifarch aarch64
842 %{_rpmlibdir}/platform/aarch64*
843 %endif
844 %ifarch %{arm}
845 %{_rpmlibdir}/platform/arm*
846 %endif
847 %ifarch ia64
848 %{_rpmlibdir}/platform/ia64*
849 %endif
850 %ifarch mips mipsel mips64 mips64el
851 %{_rpmlibdir}/platform/mips*
852 %endif
853 %ifarch %{ppc}
854 %{_rpmlibdir}/platform/ppc*
855 %endif
856 %ifarch sparc sparc64
857 %{_rpmlibdir}/platform/sparc*
858 %endif
859
860 %dir %{_rpmlibdir}/pld
861
862 %attr(755,root,root) %{_rpmlibdir}/dbupgrade.sh
863 %attr(755,root,root) %{_rpmlibdir}/rpmdb_checkversion
864 %attr(755,root,root) %{_rpmlibdir}/rpmdb_reset
865 %attr(755,root,root) %{_rpmlibdir}/rpmdb_dump
866 %attr(755,root,root) %{_rpmlibdir}/rpmdb_load
867
868 # valgrind suppression file for rpm
869 %{_rpmlibdir}/rpm.supp
870
871 %files base
872 %defattr(644,root,root,755)
873 %dir %{_sysconfdir}/rpm
874 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/rpm
875 %dir %{_rpmlibdir}
876 %attr(755,root,root) %{_bindir}/banner.sh
877 %attr(755,root,root) %{_rpmlibdir}/user_group.sh
878 %dir /var/lib/banner
879
880 %files lib
881 %defattr(644,root,root,755)
882 %attr(755,root,root) /%{_lib}/librpm.so.9
883 %attr(755,root,root) /%{_lib}/librpm.so.%{sover}
884 %attr(755,root,root) /%{_lib}/librpmbuild.so.9
885 %attr(755,root,root) /%{_lib}/librpmbuild.so.%{sover}
886 %attr(755,root,root) /%{_lib}/librpmio.so.9
887 %attr(755,root,root) /%{_lib}/librpmio.so.%{sover}
888 %attr(755,root,root) /%{_lib}/librpmsign.so.9
889 %attr(755,root,root) /%{_lib}/librpmsign.so.%{sover}
890 %{?with_plugins:%dir %{_libdir}/rpm-plugins}
891
892 %files devel
893 %defattr(644,root,root,755)
894 %attr(755,root,root) %{_libdir}/librpm.so
895 %attr(755,root,root) %{_libdir}/librpmbuild.so
896 %attr(755,root,root) %{_libdir}/librpmio.so
897 %attr(755,root,root) %{_libdir}/librpmsign.so
898 %{_libdir}/librpm*.la
899 %{_includedir}/rpm
900 %{_pkgconfigdir}/*.pc
901
902 %files utils
903 %defattr(644,root,root,755)
904 %attr(755,root,root) %{_bindir}/rpm2archive
905 %attr(755,root,root) %{_bindir}/rpm2cpio
906 %attr(755,root,root) %{_bindir}/rpmgraph
907 %attr(755,root,root) %{_rpmlibdir}/rpm2cpio.sh
908 %attr(755,root,root) %{_rpmlibdir}/find-debuginfo.sh
909 %attr(755,root,root) %{_rpmlibdir}/tgpg
910 %attr(755,root,root) %{_rpmlibdir}/debugedit
911 %attr(755,root,root) %{_rpmlibdir}/rpmdeps
912 %{_mandir}/man8/rpm2archive.8*
913 %{_mandir}/man8/rpm2cpio.8*
914 %{_mandir}/man8/rpmdeps.8*
915 %{_mandir}/man8/rpmgraph.8*
916 %lang(ja) %{_mandir}/ja/man8/rpm2cpio.8*
917 %lang(ko) %{_mandir}/ko/man8/rpm2cpio.8*
918 %lang(pl) %{_mandir}/pl/man8/rpm2cpio.8*
919 %lang(ru) %{_mandir}/ru/man8/rpm2cpio.8*
920 %lang(pl) %{_mandir}/pl/man8/rpmdeps.8*
921 %lang(ja) %{_mandir}/ja/man8/rpmgraph.8*
922 %lang(pl) %{_mandir}/pl/man8/rpmgraph.8*
923
924 %files build
925 %defattr(644,root,root,755)
926 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rpm/noauto*
927 %attr(755,root,root) %{_rpmlibdir}/brp-*
928 %attr(755,root,root) %{_rpmlibdir}/check-files
929 %attr(755,root,root) %{_rpmlibdir}/install-build-tree
930 %attr(755,root,root) %{_rpmlibdir}/elfdeps
931 %attr(755,root,root) %{_rpmlibdir}/libtooldeps.sh
932 # needs hacked pkg-config to return anything
933 %attr(755,root,root) %{_rpmlibdir}/pkgconfigdeps.sh
934 %attr(755,root,root) %{_rpmlibdir}/mkinstalldirs
935
936 %attr(755,root,root) %{_rpmlibdir}/fontconfig.prov
937 # must be here for "Requires: rpm-*prov" to work
938 #%{_rpmlibdir}/macros.d/cmake
939 #%{_rpmlibdir}/macros.d/gstreamer
940 #%{_rpmlibdir}/macros.d/libtool
941 #%{_rpmlibdir}/macros.d/perl
942 #%{_rpmlibdir}/macros.d/pkgconfig
943 #%{_rpmlibdir}/macros.d/python
944 #%{_rpmlibdir}/macros.d/selinux
945 #%{_rpmlibdir}/macros.d/tcl
946 #%{_rpmlibdir}/macros.rpmbuild
947
948 %attr(755,root,root) %{_rpmlibdir}/check-buildroot
949 %attr(755,root,root) %{_rpmlibdir}/check-prereqs
950 %attr(755,root,root) %{_rpmlibdir}/check-rpaths
951 %attr(755,root,root) %{_rpmlibdir}/check-rpaths-worker
952 %attr(755,root,root) %{_rpmlibdir}/find-provides
953 %attr(755,root,root) %{_rpmlibdir}/find-requires
954 %attr(755,root,root) %{_rpmlibdir}/ocamldeps.sh
955 %attr(755,root,root) %{_rpmlibdir}/script.req
956 %attr(755,root,root) %{_rpmlibdir}/sepdebugcrcfix
957
958 %dir %{_rpmlibdir}/fileattrs
959 %{_rpmlibdir}/fileattrs/debuginfo.attr
960 %{_rpmlibdir}/fileattrs/desktop.attr
961 %{_rpmlibdir}/fileattrs/elf.attr
962 %{_rpmlibdir}/fileattrs/font.attr
963 %{_rpmlibdir}/fileattrs/libtool.attr
964 %{_rpmlibdir}/fileattrs/metainfo.attr
965 %{_rpmlibdir}/fileattrs/ocaml.attr
966 %{_rpmlibdir}/fileattrs/perl.attr
967 %{_rpmlibdir}/fileattrs/perllib.attr
968 %{_rpmlibdir}/fileattrs/pkgconfig.attr
969 %{_rpmlibdir}/fileattrs/python.attr
970 %{_rpmlibdir}/fileattrs/pythondist.attr
971 %{_rpmlibdir}/fileattrs/script.attr
972
973 %attr(755,root,root) %{_bindir}/gendiff
974 %attr(755,root,root) %{_bindir}/rpmbuild
975 %attr(755,root,root) %{_bindir}/rpmspec
976
977 %{_mandir}/man1/gendiff.1*
978 %lang(pl) %{_mandir}/pl/man1/gendiff.1*
979 %{_mandir}/man8/rpmbuild.8*
980 %lang(ja) %{_mandir}/ja/man8/rpmbuild.8*
981 %lang(pl) %{_mandir}/pl/man8/rpmbuild.8*
982 %{_mandir}/man8/rpmspec.8*
983
984 %files perlprov
985 %defattr(644,root,root,755)
986 %attr(755,root,root) %{_rpmlibdir}/perl.*
987
988 %files pythonprov
989 %defattr(644,root,root,755)
990 %attr(755,root,root) %{_rpmlibdir}/pythondistdeps.py
991
992 %if %{with python3}
993 %files -n python3-rpm
994 %defattr(644,root,root,755)
995 %dir %{py3_sitedir}/rpm
996 %attr(755,root,root) %{py3_sitedir}/rpm/*.so
997 %{py3_sitedir}/rpm/*.py
998 %{py3_sitedir}/rpm-%{version}-py*.egg-info
999 %{py3_sitedir}/rpm/__pycache__
1000 %endif
1001
1002 %if %{with plugins}
1003 %files plugin-audit
1004 %defattr(644,root,root,755)
1005 %attr(755,root,root) %{_libdir}/rpm-plugins/audit.so
1006 %{_mandir}/man8/rpm-plugin-audit.8*
1007
1008 %files plugin-syslog
1009 %defattr(644,root,root,755)
1010 %attr(755,root,root) %{_libdir}/rpm-plugins/syslog.so
1011 %{_mandir}/man8/rpm-plugin-syslog.8*
1012
1013 %files plugin-systemd-inhibit
1014 %defattr(644,root,root,755)
1015 %attr(755,root,root) %{_libdir}/rpm-plugins/systemd_inhibit.so
1016 %{_mandir}/man8/rpm-plugin-systemd-inhibit.8*
1017
1018 %files plugin-ima
1019 %defattr(644,root,root,755)
1020 %attr(755,root,root) %{_libdir}/rpm-plugins/ima.so
1021 %{_mandir}/man8/rpm-plugin-ima.8*
1022
1023 %files plugin-prioreset
1024 %defattr(644,root,root,755)
1025 %attr(755,root,root) %{_libdir}/rpm-plugins/prioreset.so
1026 %{_mandir}/man8/rpm-plugin-prioreset.8*
1027
1028 %files plugin-selinux
1029 %defattr(644,root,root,755)
1030 %attr(755,root,root) %{_libdir}/rpm-plugins/selinux.so
1031 %{_mandir}/man8/rpm-plugin-selinux.8*
1032 %endif
1033
1034 %files sign
1035 %defattr(644,root,root,755)
1036 %attr(755,root,root) %{_bindir}/rpmsign
1037 %{_mandir}/man8/rpmsign.8*
1038
1039 %if %{with apidocs}
1040 %files apidocs
1041 %defattr(644,root,root,755)
1042 %doc doc/librpm/html/*
1043 %endif
This page took 0.095888 seconds and 3 git commands to generate.