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