mirror of
https://github.com/YellowJacketLinux/lfs-rpmify.git
synced 2025-01-23 14:32:11 +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
|
||||
Dependencies needed to build RPM on an LFS system
|
||||
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`.
|
||||
|
||||
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