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