mirror of
https://github.com/YellowJacketLinux/lfs-rpmify.git
synced 2025-01-23 22:42:13 +08:00
initial documentation
This commit is contained in:
parent
12a768cebd
commit
4c05d00fa2
16
README.md
16
README.md
@ -1,2 +1,14 @@
|
|||||||
# lfs-rpmify
|
Building RPM in LFS 12.2
|
||||||
Dependencies needed to build RPM on an LFS system
|
========================
|
||||||
|
|
||||||
|
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`.
|
||||||
|
|
||||||
|
Dependency One: UnZip
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Justification: Needed to build SQLite 3 (to unpack the documentation). No build
|
||||||
|
dependencies outside of LFS.
|
||||||
|
|
||||||
|
Script: [`01-unzip.sh`](01-unzip.sh)
|
||||||
|
Status: Script Untested
|
||||||
|
109
THE-PLAN.md
Normal file
109
THE-PLAN.md
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
The Plan
|
||||||
|
========
|
||||||
|
|
||||||
|
This is an attempt to create a new GNU/Linux distribution. The why is in the
|
||||||
|
file `THE_WHY.md` but TLDR, because I can. Well, because I think I can. Maybe,
|
||||||
|
and even if not, I will still learn a lot...
|
||||||
|
|
||||||
|
The new distribution will be called ‘Yellow-Jacket GNU/Linux’ (abbreviated as
|
||||||
|
‘YJL’) and will be heavily based upon ‘Linux From Scratch’ (LFS) but will have
|
||||||
|
many influences from my years with Red Hat Linux, including use of RPM as the
|
||||||
|
package manager.
|
||||||
|
|
||||||
|
|
||||||
|
Phase One: LFS Bootstrap
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Create the needed shell scripts to build the current SystemD LFS (12.2 as I
|
||||||
|
type) on a USB thumb drive that can then boot an `x86_64` system and rebuild
|
||||||
|
itself to the hard drive of that system. Long term goal is a generic image that
|
||||||
|
can be copied onto any thumb drive via `dd`, boot a generic `x86_64` system, and
|
||||||
|
build LFS on it. Short term goal is specific to my system.
|
||||||
|
|
||||||
|
For the git related to Phase One, see
|
||||||
|
https://github.com/YellowJacketLinux/lfs-buildscripts/tree/main
|
||||||
|
|
||||||
|
|
||||||
|
Phase Two: GCC Bootstrap
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
The GCC built by LFS does not support building the Ada or D compilers. Both of
|
||||||
|
those compilers are useful on a GNU/Linux system.
|
||||||
|
|
||||||
|
Once I have a hard-disk install booting, the very first order of business is to
|
||||||
|
rebuild GCC for full compiler support.
|
||||||
|
|
||||||
|
To compile GCC with Ada and D support, a working Ada and D compiler is needed.
|
||||||
|
|
||||||
|
My LFS 11.3 system has those. What I did back then, on CentOS 7.9 (my build host
|
||||||
|
for LFS 11.3) I built GCC 7.5.0 with Ada (`gnat`) support, with an install
|
||||||
|
prefix of `/opt/gcc750`. GCC 7.5.0 was the newest GCC I could get to build in
|
||||||
|
CentOS 7.9 with Ada.
|
||||||
|
|
||||||
|
I had to copy a few shared libraries from the CentOS 7 system into
|
||||||
|
`/opt/gcc750/lib` but once I did that, I was able to use that GCC in LFS 11.3 to
|
||||||
|
then build an Ada and D capable GCC 10.4.0 within `/opt/gcc1040`, GCC 7.5.0
|
||||||
|
would not succesfully build an Ada and D capable GCC 12.2.0.
|
||||||
|
|
||||||
|
However I was then able to use GCC 10.4.0 to build the Ada and D capable GCC
|
||||||
|
12.2.0 which is the GCC version in LFS 11.3.
|
||||||
|
|
||||||
|
For the LFS 12.2 GCC bootstrap, I *suspect* I can use the Ada and D capable GCC
|
||||||
|
GCC 12.2.0 in LFS 11.3 to build an Ada and D capable GCC 14.2.0 installed in
|
||||||
|
`/opt/gcc1420` that I can then use in LFS 12.2 to bootstrap the system GCC, of
|
||||||
|
course running the full test suite before installing.
|
||||||
|
|
||||||
|
I tried adding Ada and D support to the GCC building of LFS 12.2 Chapter 5 and
|
||||||
|
it caused a build failure, so it is *possible* I will need another intemediary.
|
||||||
|
|
||||||
|
Anyway, boostrapping an Ada and D capable GCC within LFS 12.2 will be my first
|
||||||
|
priority once it is booting.
|
||||||
|
|
||||||
|
|
||||||
|
Phase Three: Building RPM
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
This phase is what the git is about.
|
||||||
|
|
||||||
|
The needed libraries to build RPM will need to be built and installed, and then
|
||||||
|
RPM will be built and installed.
|
||||||
|
|
||||||
|
|
||||||
|
Phase Four: RPM Bootstrap
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Once RPM is built and installed comes the long and tedious task of writing the
|
||||||
|
needed RPM spec files to rebuild every package on the system in RPM. Much of
|
||||||
|
that work has already been done from my LFS 11.3 system but the spec files need
|
||||||
|
to be updated and some still needed to be written when the water pipe broke.
|
||||||
|
|
||||||
|
|
||||||
|
Phase Five: Mock Build Environment
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
After the system is RPM bootstrapped, I have to build and configure a Mock build
|
||||||
|
environment for packages, see https://rpm-software-management.github.io/mock/
|
||||||
|
|
||||||
|
A Mock build build environment is essential for clean, untainted packages. I
|
||||||
|
have used Mock build environments in the past but creating one from scratch for
|
||||||
|
a new distribution is something I have not done.
|
||||||
|
|
||||||
|
|
||||||
|
Phase Six: XFCE
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Once the system is RPM bootstrapped, I can start building the software needed
|
||||||
|
for the XFCE desktop environment.
|
||||||
|
|
||||||
|
My *personal* preferred desktop environment is actually MATE but XFCE is what I
|
||||||
|
am building as the default desktop environment for YJL.
|
||||||
|
|
||||||
|
|
||||||
|
Phase Seven: Installer
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
With XFCE running, a bootable USB thumb drive that can install the system from
|
||||||
|
RPM packages will have the be created. That will be when YJL becomes a reality
|
||||||
|
and not just a concept I am working towards.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user