Overview#
Currently, the PKI repository (git@github.com:dogtagpki/pki.git) consists of source code which is utilized to build the following four SRPMS:
SOURCE REPOSITORY: pki
SRPM: dogtag-pki
NOTE: This ‘meta’ package only contains a spec file (no tarball since it does not consist of any source).
SRPM: dogtag-pki-theme
SOURCE CODE: pki/dogtag/
SRPM: pki-core
SOURCE CODE: pki/base/ (with the exception of pki/base/console)
SRPM: pki-console
SOURCE CODE: pki/base/console/
Due to this layout, we need to utilize the various customized ‘compose’ scripts to create local RPMS and the various ‘tarballs’ for use in the SRPMS (some of which become ‘official’ tarballs):
BUILD SCRIPT: pki/scripts/compose_dogtag_pki_meta_packages
NOTE: RPM and SRPM only – no tarball
BUILD SCRIPT: pki/scripts/compose_dogtag_pki_theme_packages
BUILD SCRIPT: pki/scripts/compose_pki_core_packages
BUILD SCRIPT: pki/scripts/compose_pki_console_packages
Additionally, if Quality Engineering (QE) would like tests separated, the following additional repo could be created:
SRPM: pki-tests
SOURCE CODE: pki/tests/
BUILD SCRIPT: pki/scripts/compose_pki_test_package
Proposal#
This proposal is to combine the packages from the separate SRPMS that exist within this single PKI source repository into a single SRPM (containing a single tarball):
SOURCE REPOSITORY: pki
SOURCE CODE: pki (tarball would exclude pki/patches/, pki/specs/, etc.; specific directories and files may be excluded from the tarball via use of a .gitattributes or .git/info/attributes files)
SRPM: pki-core
RPMS:
dogtag-pki-console-theme (originally had separate dogtag-pki-theme SRPM)
dogtag-pki-server-theme (originally had separate dogtag-pki-theme SRPM)
pki-base
pki-base-java
pki-base-python3 (only on platforms using Python 3)
pki-ca
pki-console (originally had separate pki-console SRPM)
pki-javadoc
pki-kra
pki-ocsp
pki-server
pki-tks
pki-symkey (architecture specific)
pki-tools (architecture specific)
pki-tps (architecture specific)
pki-core-debuginfo (architecture specific)
pki-core-debugsource (architecture specific)
pki-symkey-debuginfo (architecture specific)
pki-tools-debuginfo (architecture specific)
pki-tps-debuginfo (architecture specific)
NOTE: There will actually be a second ‘meta’ SRPM created called dogtag-pki; however, this ‘meta’ package only contains a spec file (no tarball since it does not consist of any source).
Advantages#
All content contained in a single tarball and a single spec file (CAVEAT: There will be a second separate ‘meta’ spec file.)
With this separation of source, it would now be possible to create full-source tarballs using standard methods (e. g. - git archive).
This would open up the possibility to use tools such as Tito in COPR to create builds by merely pointing to a repository.
The individual tarball would contain all source code relevant to the RPMS produced for that SRPM (i. e. - “clean” un-polluted source and no spec file template confusion).
Continuous integration (CI) tools such as Travis would not need to be replicated across multiple repositories per one of the counter-proposal of separate repos (dogtag-pki-theme, pki-core, and pki-console)
The “compose” scripts could be reduced and transparently modified for local creation of packages for development purposes.
Disadvantages#
An already large complex spec file (pki-core.spec) would need to integrate the logic from pki-console.spec and dogtag-pki-theme.spec.
This approach places everything and the kitchen sink into a single tarball that is less modular than other solutions.
Not all RPMS produced from this lone SRPM may be available on all platforms which may cause some confusion.