Files
lfs/Makefile
Zeckmathederg 3ea5d3b1db Replaced SysVinit with OpenRC.
This is a rough draft of LFS w/ OpenRC without SysVinit. This is nowhere
close for a merge as I need to confirm this works with LFS. Beyond that,
BLFS also must get support, and BLFS will be a battlefield. Until we get
to that point, please do not have this merged.

This branch has been created because the LSB is getting changed, where
SysVinit will not be part of it. However, OpenRC will be. OpenRC also
provides technology projects like GNOME use. SysVinit simply will not
get those technologies. I believe OpenRC will be the way to go, going
forward for an educational alternative to the Systemd version of LFS.

SysVinit can act as an init system under OpenRC, which would introduce
unneeded complexity. That's why this removes SysVinit.

This shall get rendered at
https://linuxfromscratch.org/~zeckma/. MLFS support is not planned until
merge into trunk.

Feedback is appreciated.
2025-12-08 21:51:31 -07:00

214 lines
7.2 KiB
Makefile

# vim:ts=3
RENDERTMP = $(HOME)/tmp
CHUNK_QUIET = 1
ROOT_ID =
SHELL = /bin/bash
ifdef V
Q =
else
Q = @
endif
ifndef REV
REV = openrc
endif
ifneq ($(REV), openrc)
ifneq ($(REV), systemd)
$(error REV must be 'openrc' (default) or 'systemd'.)
endif
endif
ifeq ($(REV), openrc)
BASEDIR ?= $(HOME)/public_html/lfs-book
PDF_OUTPUT ?= LFS-BOOK.pdf
NOCHUNKS_OUTPUT ?= LFS-BOOK.html
DUMPDIR ?= $(HOME)/lfs-commands
else
BASEDIR ?= $(HOME)/public_html/lfs-systemd
PDF_OUTPUT ?= LFS-SYSD-BOOK.pdf
NOCHUNKS_OUTPUT ?= LFS-SYSD-BOOK.html
DUMPDIR ?= $(HOME)/lfs-sysd-commands
endif
book: validate profile-html
@echo "Generating chunked XHTML files at $(BASEDIR)/ ..."
$(Q)xsltproc --nonet \
--stringparam chunk.quietly $(CHUNK_QUIET) \
--stringparam rootid "$(ROOT_ID)" \
--stringparam base.dir $(BASEDIR)/ \
stylesheets/lfs-chunked.xsl \
$(RENDERTMP)/lfs-html.xml
@echo "Copying CSS code and images..."
$(Q)mkdir -p $(BASEDIR)/stylesheets
$(Q)cp stylesheets/lfs-xsl/*.css $(BASEDIR)/stylesheets
$(Q)sed -e 's|../stylesheet|stylesheet|' \
-i $(BASEDIR)/index.html
$(Q)mkdir -p $(BASEDIR)/images
$(Q)cp images/*.png $(BASEDIR)/images
@echo "Running Tidy and obfuscate.sh..."
$(Q)for filename in `find $(BASEDIR) -name "*.html"`; do \
tidy -config tidy.conf $$filename; \
/bin/bash obfuscate.sh $$filename; \
sed -e "s|text/html|application/xhtml+xml|g" \
-i $$filename; \
done
$(Q)$(MAKE) --no-print-directory wget-list md5sums
pdf: validate
@echo "Generating profiled XML for PDF..."
$(Q)xsltproc --nonet \
--stringparam profile.condition pdf \
--output $(RENDERTMP)/lfs-pdf.xml \
stylesheets/lfs-xsl/profile.xsl \
$(RENDERTMP)/lfs-full.xml
@echo "Generating FO file..."
$(Q)xsltproc --nonet \
--stringparam rootid "$(ROOT_ID)" \
--output $(RENDERTMP)/lfs-pdf.fo \
stylesheets/lfs-pdf.xsl \
$(RENDERTMP)/lfs-pdf.xml
$(Q)sed -i -e 's/span="inherit"/span="all"/' $(RENDERTMP)/lfs-pdf.fo
$(Q)bash pdf-fixups.sh $(RENDERTMP)/lfs-pdf.fo
@echo "Generating PDF file..."
$(Q)mkdir -p $(RENDERTMP)/images
$(Q)cp images/*.png $(RENDERTMP)/images
$(Q)mkdir -p $(BASEDIR)
$(Q)fop -q $(RENDERTMP)/lfs-pdf.fo $(BASEDIR)/$(PDF_OUTPUT) 2>fop.log
@echo "$(BASEDIR)/$(PDF_OUTPUT) created"
@echo "fop.log created"
nochunks: validate profile-html
@echo "Generating non chunked XHTML file..."
$(Q)xsltproc --nonet \
--stringparam rootid "$(ROOT_ID)" \
--output $(BASEDIR)/$(NOCHUNKS_OUTPUT) \
stylesheets/lfs-nochunks.xsl \
$(RENDERTMP)/lfs-html.xml
@echo "Running Tidy..."
$(Q)tidy -config tidy.conf $(BASEDIR)/$(NOCHUNKS_OUTPUT) || test $$? -le 1
@echo "Running obfuscate.sh..."
$(Q)bash obfuscate.sh $(BASEDIR)/$(NOCHUNKS_OUTPUT)
$(Q)sed -e "s|text/html|application/xhtml+xml|g" \
-e "s|../wget-list|wget-list|" \
-e "s|../md5sums|md5sums|" \
-i $(BASEDIR)/$(NOCHUNKS_OUTPUT)
@echo "Output at $(BASEDIR)/$(NOCHUNKS_OUTPUT)"
tmpdir:
@echo "Creating and cleaning $(RENDERTMP)"
$(Q)mkdir -p $(RENDERTMP)
$(Q)rm -f $(RENDERTMP)/lfs*.xml
$(Q)rm -f $(RENDERTMP)/*wget*
$(Q)rm -f $(RENDERTMP)/*md5sum*
$(Q)rm -f $(RENDERTMP)/*pdf.fo
validate: tmpdir version
@echo "Adjusting for revision $(REV)..."
$(Q)xsltproc --nonet \
--xinclude \
--stringparam profile.revision $(REV) \
--output $(RENDERTMP)/lfs-html2.xml \
stylesheets/lfs-xsl/profile.xsl \
index.xml
@echo "Validating the book..."
$(Q)xmllint --nonet \
--encode UTF-8 \
--postvalid \
--output $(RENDERTMP)/lfs-full.xml \
$(RENDERTMP)/lfs-html2.xml
@echo "Validation complete."
profile-html: validate
@echo "Generating profiled XML for XHTML..."
$(Q)xsltproc --nonet \
--stringparam profile.condition html \
--output $(RENDERTMP)/lfs-html.xml \
stylesheets/lfs-xsl/profile.xsl \
$(RENDERTMP)/lfs-full.xml
DOWNLOADS_DEP = chapter03/packages.xml chapter03/patches.xml \
packages.ent patches.ent general.ent
wget-list: $(BASEDIR)/wget-list $(BASEDIR)/wget-list-$(REV)
$(BASEDIR)/wget-list: stylesheets/wget-list.xsl $(DOWNLOADS_DEP)
@echo "Generating consolidated wget list at $(BASEDIR)/wget-list ..."
$(Q)mkdir -p $(BASEDIR)
$(Q)xsltproc --nonet \
--xinclude \
--output $(BASEDIR)/wget-list \
stylesheets/wget-list.xsl \
chapter03/chapter03.xml
$(BASEDIR)/wget-list-$(REV): stylesheets/wget-list.xsl $(DOWNLOADS_DEP)
$(Q)xsltproc --nonet \
--xinclude \
--stringparam profile.revision $(REV) \
--output $(RENDERTMP)/wget-list.xml \
stylesheets/lfs-xsl/profile.xsl \
chapter03/chapter03.xml
$(Q)xsltproc --nonet \
--output $(BASEDIR)/wget-list-$(REV) \
stylesheets/wget-list.xsl \
$(RENDERTMP)/wget-list.xml
md5sums: $(BASEDIR)/md5sums
$(BASEDIR)/md5sums: stylesheets/wget-list.xsl $(DOWNLOADS_DEP)
@echo "Generating consolidated md5sum file at $(BASEDIR)/md5sums ..."
$(Q)mkdir -p $(BASEDIR)
$(Q)xsltproc --nonet \
--xinclude \
--stringparam profile.revision $(REV) \
--output $(RENDERTMP)/md5sum.xml \
stylesheets/lfs-xsl/profile.xsl \
chapter03/chapter03.xml
$(Q)xsltproc --nonet \
--output $(BASEDIR)/md5sums \
stylesheets/md5sum.xsl \
$(RENDERTMP)/md5sum.xml
version:
$(Q)./git-version.sh $(REV)
dump-commands: validate
@echo "Dumping book commands..."
$(Q)rm -rf $(DUMPDIR)
$(Q)xsltproc --output $(DUMPDIR)/ \
stylesheets/dump-commands.xsl \
$(RENDERTMP)/lfs-full.xml
@echo "Dumping book commands complete in $(DUMPDIR)"
all: book nochunks pdf dump-commands
dist:
$(Q)DIST=/tmp/LFS-RELEASE ./git-version.sh $(REV)
$(Q)rm -f lfs-$$(</tmp/LFS-RELEASE).tar.xz
$(Q)tar cJf lfs-$$(</tmp/LFS-RELEASE).tar.xz \
$(shell git ls-tree HEAD . --name-only -r) version.ent \
-C /tmp LFS-RELEASE \
--transform "s,^,lfs-$$(</tmp/LFS-RELEASE)/,"
$(Q)echo "Generated XML tarball lfs-$$(</tmp/LFS-RELEASE).tar.xz"
.PHONY : all book dump-commands nochunks pdf profile-html tmpdir validate md5sums wget-list version dist