2024-10-16 08:32:01 +08:00
|
|
|
|
Building RPM in LFS 12.2
|
|
|
|
|
========================
|
|
|
|
|
|
|
|
|
|
This git is for the scripts needed to build the dependencies for the RPM Package
|
|
|
|
|
Manager (RPM) within a LFS 12.2 system. This is ‘Phase Three’ in `THE-PLAN.md`.
|
|
|
|
|
|
2024-10-16 16:08:54 +08:00
|
|
|
|
First I am attempting to build RPM 4.18.x as I successfully built that version
|
|
|
|
|
of RPM on LFS 11.3. However that version of RPM is EOL so once I get it building
|
|
|
|
|
I will not install it but instead look to see if I can the modern version of RPM
|
|
|
|
|
to build. I believe they changed the build system to CMake so there will almost
|
|
|
|
|
be some additional dependencies needed.
|
|
|
|
|
|
2024-10-16 18:56:29 +08:00
|
|
|
|
With dependencies through Lua built, RPM 4.18.2 builds in LFS 12.2 but there are
|
|
|
|
|
still three needed components for a complete RPM environment:
|
|
|
|
|
|
|
|
|
|
1. GnuPG (critical, needed to sign packages, important for package security)
|
|
|
|
|
2. debugedit (critical, needed for debug packages)
|
|
|
|
|
3. fakechroot (needed to run the test suite after building RPM)
|
|
|
|
|
|
2024-10-17 11:42:19 +08:00
|
|
|
|
Dependencies 13 through 27 build GnuPG.
|
2024-10-16 18:56:29 +08:00
|
|
|
|
|
2024-10-16 08:32:01 +08:00
|
|
|
|
Dependency One: UnZip
|
|
|
|
|
---------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed to build SQLite 3 (to unpack the documentation). No build
|
|
|
|
|
dependencies outside of LFS.
|
|
|
|
|
|
2024-10-16 08:36:01 +08:00
|
|
|
|
* Script: [`01-unzip.sh`](01-unzip.sh)
|
2024-10-16 09:36:20 +08:00
|
|
|
|
* Status: Script Works
|
|
|
|
|
|
|
|
|
|
Dependency Two: SQLite3
|
|
|
|
|
-----------------------
|
|
|
|
|
|
2024-10-17 08:49:13 +08:00
|
|
|
|
Justification: Needed to build RPM itself and for Cyrus SASL. Depends upon UnZip
|
|
|
|
|
for documentation.
|
2024-10-16 09:36:20 +08:00
|
|
|
|
|
|
|
|
|
* Script: [`02-sqlite3.sh`](02-sqlite3.sh)
|
2024-10-16 11:11:00 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-16 10:04:52 +08:00
|
|
|
|
|
|
|
|
|
Dependency Three: libgpg-error
|
|
|
|
|
------------------------------
|
|
|
|
|
|
2024-10-17 10:04:18 +08:00
|
|
|
|
Justification: Needed to build libgcrypt, libassuan, libksba, and pinentry. No
|
|
|
|
|
build dependencies outside of LFS.
|
2024-10-16 10:04:52 +08:00
|
|
|
|
|
|
|
|
|
* Script: [`03-libgpg-error.sh`](03-libgpg-error.sh)
|
2024-10-16 11:11:00 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-16 10:04:52 +08:00
|
|
|
|
|
2024-10-16 10:36:59 +08:00
|
|
|
|
Dependency Four: libgcrypt
|
|
|
|
|
--------------------------
|
|
|
|
|
|
2024-10-16 18:10:57 +08:00
|
|
|
|
Justification: Needed to build RPM itself and GnuPG. Depends upon libgpg-error.
|
2024-10-16 10:36:59 +08:00
|
|
|
|
|
|
|
|
|
* Script: [`04-libgcrypt.sh`](04-libgcrypt.sh)
|
2024-10-16 11:11:00 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-16 10:36:59 +08:00
|
|
|
|
|
2024-10-16 12:42:51 +08:00
|
|
|
|
Dependency Five: popt
|
|
|
|
|
---------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed to build RPM itself. No build dependencies outside of LFS.
|
2024-10-16 10:04:52 +08:00
|
|
|
|
|
2024-10-16 12:42:51 +08:00
|
|
|
|
* Script: [`05-popt.sh`](05-popt.sh)
|
2024-10-16 13:19:15 +08:00
|
|
|
|
* Status: Script Works
|
|
|
|
|
|
2024-10-16 13:31:16 +08:00
|
|
|
|
Dependency Six: ICU
|
|
|
|
|
-------------------
|
2024-10-16 13:19:15 +08:00
|
|
|
|
|
2024-10-16 14:24:35 +08:00
|
|
|
|
Justification: Needed to build libxml2. No build dependencies outside of LFS.
|
2024-10-16 13:19:15 +08:00
|
|
|
|
|
|
|
|
|
* Script: [`06-icu.sh`](06-icu.sh)
|
2024-10-16 15:33:54 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-16 13:31:16 +08:00
|
|
|
|
|
|
|
|
|
Dependency Seven: libxml2
|
|
|
|
|
-------------------------
|
|
|
|
|
|
2024-10-17 05:02:51 +08:00
|
|
|
|
Justification: Needed for libarchive and CMake. Depends on ICU.
|
2024-10-16 13:31:16 +08:00
|
|
|
|
|
|
|
|
|
* Script: [`07-libxml2.sh`](07-libxml2.sh)
|
2024-10-16 15:33:54 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-16 13:31:16 +08:00
|
|
|
|
|
2024-10-16 13:42:22 +08:00
|
|
|
|
Dependency Eight: LZO
|
|
|
|
|
---------------------
|
|
|
|
|
|
2024-10-16 14:24:35 +08:00
|
|
|
|
Justification: Needed for libarchive. No build dependencies outside of LFS.
|
2024-10-16 13:42:22 +08:00
|
|
|
|
|
|
|
|
|
* Script: [`08-lzo.sh`](08-lzo.sh)
|
2024-10-16 15:33:54 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-16 13:42:22 +08:00
|
|
|
|
|
2024-10-16 14:24:35 +08:00
|
|
|
|
Dependency Nine: nettle
|
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed for libarchive. No build dependencies outside of LFS.
|
|
|
|
|
|
|
|
|
|
* Script: [`09-nettle.sh`](09-nettle.sh)
|
2024-10-16 15:33:54 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-16 14:24:35 +08:00
|
|
|
|
|
2024-10-16 14:40:23 +08:00
|
|
|
|
Dependency Ten: pcre2
|
|
|
|
|
---------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed for libarchive. No build dependencies outside of LFS.
|
|
|
|
|
|
|
|
|
|
* Script: [`10-pcre2.sh`](10-pcre2.sh)
|
2024-10-16 15:33:54 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-16 14:40:23 +08:00
|
|
|
|
|
2024-10-16 14:50:24 +08:00
|
|
|
|
Dependency Eleven: libarchive
|
|
|
|
|
-----------------------------
|
2024-10-16 13:31:16 +08:00
|
|
|
|
|
2024-10-17 05:26:34 +08:00
|
|
|
|
Justification: Needed to build RPM and CMake. Depends upon libxml2, LZO, Nettle,
|
|
|
|
|
and pcre2.
|
2024-10-16 14:50:24 +08:00
|
|
|
|
|
|
|
|
|
* Script: [`11-libarchive.sh`](11-libarchive.sh)
|
2024-10-16 15:33:54 +08:00
|
|
|
|
* Status: Script Works
|
|
|
|
|
|
2024-10-16 15:54:01 +08:00
|
|
|
|
Dependency Twelve: Lua
|
|
|
|
|
----------------------
|
2024-10-16 15:33:54 +08:00
|
|
|
|
|
2024-10-16 15:54:01 +08:00
|
|
|
|
Justification: Needed to build RPM. No build dependencies outside of LFS.
|
|
|
|
|
|
|
|
|
|
* Script: [`12-lua.sh`](12-lua.sh)
|
2024-10-16 18:10:57 +08:00
|
|
|
|
* Status: Script Works
|
|
|
|
|
|
|
|
|
|
Dependency Thirteen: libassuan
|
|
|
|
|
------------------------------
|
|
|
|
|
|
2024-10-17 10:04:18 +08:00
|
|
|
|
Justification: Needed to build pinentry and GnuPG. Requires libgpg-error.
|
2024-10-16 18:10:57 +08:00
|
|
|
|
|
|
|
|
|
* Script: [`13-libassuan.sh`](13-libassuan.sh)
|
2024-10-17 06:05:56 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-16 18:10:57 +08:00
|
|
|
|
|
2024-10-16 18:23:55 +08:00
|
|
|
|
Dependency Fourteen: libksba
|
|
|
|
|
----------------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed to build GnuPG. Requires libgpg-error.
|
2024-10-16 18:10:57 +08:00
|
|
|
|
|
2024-10-16 18:23:55 +08:00
|
|
|
|
* Script: [`14-libksba.sh`](14-libksba.sh)
|
2024-10-17 06:05:56 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-16 18:10:57 +08:00
|
|
|
|
|
2024-10-16 18:41:18 +08:00
|
|
|
|
Dependency Fifteen: npth
|
|
|
|
|
------------------------
|
2024-10-16 18:10:57 +08:00
|
|
|
|
|
2024-10-16 18:41:18 +08:00
|
|
|
|
Justification: Needed to build GnuPG. No dependencies outside of LFS.
|
|
|
|
|
|
|
|
|
|
* Script: [`15-npth.sh`](15-npth.sh)
|
2024-10-17 06:05:56 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-17 05:02:51 +08:00
|
|
|
|
|
|
|
|
|
Dependency Sixteen: libuv
|
|
|
|
|
-------------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed to build CMake. No dependencies outside of LFS.
|
|
|
|
|
|
|
|
|
|
* Script: [`16-libuv.sh`](16-libuv.sh)
|
2024-10-17 06:05:56 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-17 05:02:51 +08:00
|
|
|
|
|
|
|
|
|
Dependency Seventeen: nghttp2
|
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed to build CMake. Depends upon libxml2 to build.
|
|
|
|
|
|
|
|
|
|
* Script: [`17-nghttp2.sh`](17-nghttp2.sh)
|
2024-10-17 06:05:56 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-17 05:26:34 +08:00
|
|
|
|
|
|
|
|
|
Dependency Eighteen: CMake
|
|
|
|
|
--------------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed by brotli and current RPM versions. Depends upon curl,
|
|
|
|
|
libarchive, libuv, and nghttp2.
|
|
|
|
|
|
|
|
|
|
* Script: [`18-cmake.sh`](18-cmake.sh)
|
2024-10-17 06:05:56 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-17 05:26:34 +08:00
|
|
|
|
* Note: Rebuild once GCC Fortran available
|
2024-10-17 06:05:56 +08:00
|
|
|
|
|
2024-10-17 06:45:24 +08:00
|
|
|
|
Dependency Nineteen: brotli
|
|
|
|
|
---------------------------
|
2024-10-17 06:05:56 +08:00
|
|
|
|
|
2024-10-17 06:45:24 +08:00
|
|
|
|
Justification: Neded to build GnuTLS and beneficial to future rebuild of cURL.
|
|
|
|
|
Requires CMake to build.
|
|
|
|
|
|
|
|
|
|
* Script: [`19-brotli.sh`](19-brotli.sh)
|
2024-10-17 11:42:19 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-17 06:45:24 +08:00
|
|
|
|
* Note: Python bindings NOT built
|
2024-10-17 06:59:28 +08:00
|
|
|
|
|
|
|
|
|
Dependency Twenty: which
|
|
|
|
|
------------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed for libseccomp test suite, and by *many* test suites and
|
|
|
|
|
scripts on a GNU/Linux system. No build dependencies outside of LFS.
|
|
|
|
|
|
|
|
|
|
* Script: [`20-which.sh`](20-which.sh)
|
2024-10-17 11:42:19 +08:00
|
|
|
|
* Stutus: Script Works
|
2024-10-17 06:59:28 +08:00
|
|
|
|
|
2024-10-17 07:24:05 +08:00
|
|
|
|
Dependency Twenty-One: libseccomp
|
|
|
|
|
---------------------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed for GnuTLS. Depends upon which.
|
|
|
|
|
|
|
|
|
|
* Script: [`21-libseccomp.sh`](21-libseccomp.sh)
|
2024-10-17 11:42:19 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-17 07:24:05 +08:00
|
|
|
|
|
2024-10-17 07:57:11 +08:00
|
|
|
|
Dependency Twenty-Two: GnuTLS
|
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed for GnuPG. Also is the preferred TLS stack for YJL. Build
|
|
|
|
|
requires nettle, libunistring, libtasn1, p11-kit, brotli, libidn2, libseccomp.
|
|
|
|
|
Runtime requires make-ca.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Script: [`22-gnutls.sh`](22-gnutls.sh)
|
2024-10-17 11:42:19 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-17 07:57:11 +08:00
|
|
|
|
* Note: Note yet built with DANE support, or Trousers support.
|
|
|
|
|
|
2024-10-17 08:20:08 +08:00
|
|
|
|
Dependency Twenty-Three: LMDB
|
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed for Cyrus SASL. No build dependencies outside of LFS.
|
|
|
|
|
|
|
|
|
|
* Script: [`23-lmdb.sh`](23-lmdb.sh)
|
2024-10-17 11:42:19 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-17 08:20:08 +08:00
|
|
|
|
|
2024-10-17 08:49:13 +08:00
|
|
|
|
Dependency Twenty-Four: Cyrus SASL
|
|
|
|
|
----------------------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed for OpenLDAP. Requires LMDB and SQLite3
|
|
|
|
|
|
|
|
|
|
* Script: [`24-cyrus-sasl.sh`](24-cyrus-sasl.sh)
|
2024-10-17 11:42:19 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-17 08:49:13 +08:00
|
|
|
|
* Note: Does not install files needed to start the auth daemon
|
|
|
|
|
|
2024-10-17 09:25:39 +08:00
|
|
|
|
Dependency Twenty-Five: OpenLDAP
|
|
|
|
|
--------------------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed for GnuPG. Requires Cyrus SASL to build.
|
|
|
|
|
|
|
|
|
|
* Script: [`25-openldap.sh`](25-openldap.sh)
|
2024-10-17 11:42:19 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-17 09:25:39 +08:00
|
|
|
|
* Note: Only installs client libraries, not the daemon
|
|
|
|
|
|
2024-10-17 10:04:18 +08:00
|
|
|
|
Dependency Twenty-Six: pinentry
|
|
|
|
|
-------------------------------
|
|
|
|
|
|
|
|
|
|
Justification: Runtime dependency of GnuPG. Requires libassuan and libgpg-error.
|
|
|
|
|
|
|
|
|
|
* Script: [`26-pinentry.sh`](26-pinentry.sh)
|
|
|
|
|
* Status: Script Works
|
|
|
|
|
* Note: GUI clients not built yet
|
|
|
|
|
|
2024-10-17 09:51:27 +08:00
|
|
|
|
Dependency Twenty-Seven: GnuPG
|
|
|
|
|
------------------------------
|
|
|
|
|
|
|
|
|
|
Justification: Needed for RPM signatures. Requires libassuan, libgcrypt,
|
|
|
|
|
libksba, npth, OpenLDAP, GnuTLS, and pinentry.
|
2024-10-17 06:59:28 +08:00
|
|
|
|
|
2024-10-17 09:51:27 +08:00
|
|
|
|
* Script: [`27-gnupg.sh`](27-gnupg.sh)
|
2024-10-17 11:42:19 +08:00
|
|
|
|
* Status: Script Works
|
2024-10-17 12:11:25 +08:00
|
|
|
|
|
|
|
|
|
Dependency Twenty-Eight: elfutils
|
|
|
|
|
---------------------------------
|
|
|
|
|
|
|
|
|
|
Justification: LFS already installs libelf from elfutils, but debugedit needs
|
|
|
|
|
libdw from elfutils as well.
|
|
|
|
|
|
|
|
|
|
* Script: [`28-elfutils.sh`](28-elfutils.sh)
|
|
|
|
|
* Status: Script Untested
|