diff --git a/BLFS/Makefile b/BLFS/Makefile
index 0793109..bcf1da7 100644
--- a/BLFS/Makefile
+++ b/BLFS/Makefile
@@ -5,6 +5,16 @@
# $Id$
+ifeq ($(REV),)
+ REV = sysv
+endif
+
+ifneq ($(REV),sysv)
+ ifneq ($(REV),systemd)
+ $(error The REV variable is $(REV), but can only be 'sysv' or 'systemd')
+ endif
+endif
+
ifdef V
Q =
else
@@ -97,10 +107,16 @@ $(XSLDIR)/specialCases.xsl: $(TOPDIR)/gen-special.sh $(BLFS_FULL)
$(Q)$(TOPDIR)/gen-special.sh $(BLFS_FULL) $@
$(BLFS_FULL): $(BLFS_XML) $(BLFS_XML)/general.ent $(ALLXML) $(ALLXSL)
- @echo "Validating the book..."
$(Q)[ -d $(RENDERTMP) ] || mkdir -p $(RENDERTMP)
- $(Q)xmllint --nonet --noent --xinclude --postvalid \
- -o $@ $(BLFS_XML)/index.xml
+ @echo "Adjusting for revision $(REV)..."
+ $(Q)xsltproc --nonet --xinclude \
+ --stringparam profile.revision $(REV) \
+ --output $(RENDERTMP)/blfs-prof.xml \
+ $(BLFS_XML)/stylesheets/lfs-xsl/profile.xsl \
+ $(BLFS_XML)/index.xml
+ @echo "Validating the book..."
+ $(Q)xmllint --nonet --noent --postvalid \
+ -o $@ $(RENDERTMP)/blfs-prof.xml
all: update $(BOOK_XML)
diff --git a/BLFS/gen-makefile.sh b/BLFS/gen-makefile.sh
index 1e021e6..5b47446 100755
--- a/BLFS/gen-makefile.sh
+++ b/BLFS/gen-makefile.sh
@@ -156,11 +156,19 @@ EOF
}
if [[ ! -d ${BUILD_SCRIPTS} ]] ; then
- echo -e "\n\tThe \'${BUILD_SCRIPTS}\' directory has not been found.\n"
+ echo -e "\n\tThe '${BUILD_SCRIPTS}' directory has not been found.\n"
+ exit 1
+fi
+
+# Let us make a clean base, but first ensure that we are
+# not emptying a useful directory.
+MYDIR=$(pwd)
+MYDIR=$(basename $MYDIR)
+if [ "${MYDIR#work}" = "${MYDIR}" ] ; then
+ echo -e \\n\\tDirectory ${BOLD}$MYDIR${OFF} does not begin with \"work\"\\n
exit 1
fi
-# Let us make a clean base:
rm -rf *
generate_Makefile
diff --git a/BLFS/gen-special.sh b/BLFS/gen-special.sh
index 916ea6d..4d83dce 100755
--- a/BLFS/gen-special.sh
+++ b/BLFS/gen-special.sh
@@ -34,7 +34,7 @@ BLFS_DIR=$3
if test -z "${BLFS_DIR}"; then BLFS_DIR=$(cd $(dirname ${BLFS_XML})/.. ; pwd);fi
# Packages whose version does not begin with a number
-EXCEPTIONS=$(grep 'ENTITY.*version[ ]*"[^0-9"&.].*[0-9]' $BLFS_XML |
+EXCEPTIONS=$(grep 'ENTITY.*version[ ]*"[^0-9"&.].*[0-9]' ${BLFS_DIR}/packages.ent |
sed 's@^[^"]*"\([^"]*\)".*@\1@')
# Non-versioned packages:
diff --git a/Config.in b/Config.in
index 5153785..798287e 100644
--- a/Config.in
+++ b/Config.in
@@ -8,7 +8,10 @@ menu "--- BOOK Settings"
#-- Select the BOOK/Build style you wish to configure.
config BOOK_LFS
- bool "Linux From Scratch"
+ bool "Linux From Scratch System V"
+
+ config BOOK_LFS_SYSD
+ bool "Linux From Scratch systemd"
config BOOK_CLFS
bool "Cross-Compiled Linux From Scratch"
@@ -23,9 +26,14 @@ menu "--- BOOK Settings"
# bool "Hardened Linux From Scratch"
endchoice
+ config INITSYS
+ string
+ default "sysv" if BOOK_LFS
+ default "systemd" if BOOK_LFS_SYSD
+
config PROGNAME
string
- default "lfs" if BOOK_LFS
+ default "lfs" if BOOK_LFS || BOOK_LFS_SYSD
default "clfs" if BOOK_CLFS
default "clfs2" if BOOK_CLFS2
default "clfs3" if BOOK_CLFS3
@@ -39,11 +47,11 @@ menu "--- BOOK Settings"
#--- Book version
choice
prompt "Release"
- default relSVN if BOOK_LFS || BOOK_HLFS
+ default relSVN if BOOK_LFS || BOOK_HLFS || BOOK_LFS_SYSD
default relGIT if BOOK_CLFS || BOOK_CLFS2 || BOOK_CLFS3
config relSVN
bool "SVN"
- depends on BOOK_LFS || BOOK_HLFS
+ depends on BOOK_LFS || BOOK_HLFS || BOOK_LFS_SYSD
help
#-- Current development version as in trunk
@@ -624,7 +632,7 @@ menu "--- General Settings"
config DEF_USER
string
- default "lfs" if BOOK_LFS
+ default "lfs" if BOOK_LFS || BOOK_LFS_SYSD
default "clfs" if BOOK_CLFS || BOOK_CLFS2 || BOOK_CLFS3
default "hlfs" if BOOK_HLFS
@@ -826,7 +834,7 @@ menu "--- Build Settings"
#--- Package Management
config PKGMNGT
bool "Package management"
- depends BOOK_LFS
+ depends BOOK_LFS || BOOK_LFS_SYSD
default n
help
#-- Use package management
diff --git a/common/libs/func_book_parser b/common/libs/func_book_parser
index a422924..d92f331 100644
--- a/common/libs/func_book_parser
+++ b/common/libs/func_book_parser
@@ -8,7 +8,7 @@ get_book() { #
cd $JHALFSDIR
if [ -z $WORKING_COPY ] ; then
- # Check for Subversion instead of just letting the script hit 'svn' and fail.
+# Check for Subversion instead of just letting the script hit 'svn' and fail.
test `type -p svn` || eval "echo \"This feature requires Subversion.\"
exit 1"
echo -n "Downloading the $PROGNAME document, $LFSVRS version... "
@@ -23,9 +23,11 @@ get_book() { #
# Grab a fresh book if it's missing, otherwise, update it from the
# repo. If we've already extracted the commands, move on to getting the
# sources.
- if [ $PROGNAME == "lfs" ] || [ $PROGNAME == "hlfs" ] && [ ! -d ${PROGNAME}-${LFSVRS}/.svn ]; then
+ if [ $PROGNAME == "lfs" ] || [ $PROGNAME == "hlfs" ] &&
+ [ ! -d ${PROGNAME}-${LFSVRS}/.svn ]; then
svn co $SVN/${svn_root}/${TREE} ${PROGNAME}-$LFSVRS >>$LOGDIR/$LOG 2>&1
- elif [ $PROGNAME == "clfs" ] || [ $PROGNAME == "clfs2" ] || [ $PROGNAME == "clfs3" ] && [ ! -d ${PROGNAME}-${LFSVRS}/.git ]; then
+ elif [ $PROGNAME == "clfs" ] || [ $PROGNAME == "clfs2" ] ||
+ [ $PROGNAME == "clfs3" ] && [ ! -d ${PROGNAME}-${LFSVRS}/.git ]; then
echo $TREE
git clone $GIT ${PROGNAME}-$LFSVRS >>$LOGDIR/$LOG 2>&1
if [ ! $TREE == "development" ]; then
@@ -60,6 +62,13 @@ extract_commands() { #
case $PROGNAME in
clfs*)
VERSION=$(xmllint --noent $BOOK/BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
+ lfs)
+ if [ "$INITSYS" = "sysv" ] ; then
+ VERSION=$(grep 'ENTITY version ' $BOOK/general.ent| cut -d\" -f2)
+ else
+ VERSION=$(grep 'ENTITY versiond' $BOOK/general.ent| cut -d\" -f2)
+ fi
+ ;;
*)
VERSION=$(xmllint --noent $BOOK/prologue/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
esac
@@ -72,57 +81,66 @@ extract_commands() { #
case ${PROGNAME} in
clfs)
echo -n " ${L_arrow}${BOLD}$ARCH${R_arrow} target architecture... "
- xsltproc --nonet \
- --xinclude \
- --stringparam method $METHOD \
- --stringparam testsuite $TEST \
+ xsltproc --nonet \
+ --xinclude \
+ --stringparam method $METHOD \
+ --stringparam testsuite $TEST \
--stringparam bomb-testsuite $BOMB_TEST \
- --stringparam vim-lang $VIMLANG \
- --stringparam timezone $TIMEZONE \
- --stringparam page $PAGE \
- --stringparam lang $LANG \
- --stringparam sparc $SPARC64_PROC \
- --stringparam x86 $TARGET \
- --stringparam mips $TARGET \
- -o ./${PROGNAME}-commands/ $XSL $BOOK/BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1
+ --stringparam vim-lang $VIMLANG \
+ --stringparam timezone $TIMEZONE \
+ --stringparam page $PAGE \
+ --stringparam lang $LANG \
+ --stringparam sparc $SPARC64_PROC \
+ --stringparam x86 $TARGET \
+ --stringparam mips $TARGET \
+ -o ./${PROGNAME}-commands/ \
+ $XSL \
+ $BOOK/BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1
;;
clfs2)
echo -n " ${L_arrow}${BOLD}$ARCH${R_arrow} target architecture... "
- xsltproc --nonet \
- --xinclude \
- --stringparam vim-lang $VIMLANG \
+ xsltproc --nonet \
+ --xinclude \
+ --stringparam vim-lang $VIMLANG \
--stringparam timezone $TIMEZONE \
- --stringparam page $PAGE \
- --stringparam lang $LANG \
- -o ./${PROGNAME}-commands/ $XSL $BOOK/BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1
+ --stringparam page $PAGE \
+ --stringparam lang $LANG \
+ --output ./${PROGNAME}-commands/ \
+ $XSL \
+ $BOOK/BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1
;;
clfs3)
echo -n " ${L_arrow}${BOLD}$ARCH${R_arrow} target architecture... "
- xsltproc --nonet \
- --xinclude \
- --stringparam endian x$ENDIAN \
+ xsltproc --nonet \
+ --xinclude \
+ --stringparam endian x$ENDIAN \
--stringparam timezone $TIMEZONE \
- --stringparam page $PAGE \
- --stringparam lang $LANG \
- -o ./${PROGNAME}-commands/ $XSL $BOOK/BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1
+ --stringparam page $PAGE \
+ --stringparam lang $LANG \
+ --output ./${PROGNAME}-commands/ \
+ $XSL \
+ $BOOK/BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1
;;
hlfs)
echo -n " ${L_arrow}${BOLD}$MODEL + $KERNEL${R_arrow} HLFS flavour... "
- xsltproc --nonet \
- --xinclude \
- --stringparam model $MODEL \
- --stringparam kernel $KERNEL \
- --stringparam testsuite $TEST \
- --stringparam bomb-testsuite $BOMB_TEST \
- --stringparam features x$SSP$ASLR$PAX$HARDENED_TMP$WARNINGS$MISC$BLOWFISH \
- --stringparam timezone $TIMEZONE \
- --stringparam page $PAGE \
- --stringparam lang $LANG \
- --stringparam grsecurity_host $GRSECURITY_HOST \
- -o ./${PROGNAME}-commands/ $XSL $BOOK/index.xml >>$LOGDIR/$LOG 2>&1
+ xsltproc --nonet \
+ --xinclude \
+ --stringparam model $MODEL \
+ --stringparam kernel $KERNEL \
+ --stringparam testsuite $TEST \
+ --stringparam bomb-testsuite $BOMB_TEST \
+ --stringparam features \
+ x$SSP$ASLR$PAX$HARDENED_TMP$WARNINGS$MISC$BLOWFISH \
+ --stringparam timezone $TIMEZONE \
+ --stringparam page $PAGE \
+ --stringparam lang $LANG \
+ --stringparam grsecurity_host $GRSECURITY_HOST \
+ --output ./${PROGNAME}-commands/ \
+ $XSL \
+ $BOOK/index.xml >>$LOGDIR/$LOG 2>&1
;;
lfs)
echo -n " ${L_arrow}${BOLD}LFS${R_arrow} build... "
@@ -131,8 +149,15 @@ extract_commands() { #
bash process-scripts.sh >> $LOGDIR/$LOG 2>&1
fi
popd > /dev/null
+
+ xsltproc --nonet \
+ --xinclude \
+ --output /tmp/lfs-full.xml \
+ --stringparam profile.revision $INITSYS \
+ $BOOK/stylesheets/lfs-xsl/profile.xsl \
+ $BOOK/index.xml
+
xsltproc --nonet \
- --xinclude \
--stringparam testsuite $TEST \
--stringparam bomb-testsuite $BOMB_TEST \
--stringparam vim-lang $VIMLANG \
@@ -150,7 +175,11 @@ extract_commands() { #
--stringparam domain $DOMAIN \
--stringparam nameserver1 $DNS1 \
--stringparam nameserver2 $DNS2 \
- -o ./${PROGNAME}-commands/ $XSL $BOOK/index.xml >>$LOGDIR/$LOG 2>&1
+ --output ./${PROGNAME}-commands/ \
+ $XSL \
+ /tmp/lfs-full.xml >>$LOGDIR/$LOG 2>&1
+
+ rm /tmp/lfs-full.xml
;;
*) echo -n " ${L_arrow}${PROGNAME}${R_arrow} book invalid, terminate build... "
exit 1 ;;
@@ -181,20 +210,25 @@ create_package_list() { #
echo -n "... "
case ${PROGNAME} in
clfs*)
- xsltproc --nonet --xinclude -o pkg_tarball_list packages.xsl \
+ xsltproc --nonet --xinclude \
+ -o pkg_tarball_list \
+ packages.xsl \
$BOOK/BOOK/materials/${ARCH}-chapter.xml >>$LOGDIR/$LOG 2>&1
;;
hlfs)
- xsltproc --nonet --xinclude \
- --stringparam model $MODEL \
+ xsltproc --nonet --xinclude \
+ --stringparam model $MODEL \
--stringparam kernel $KERNEL \
- -o pkg_tarball_list packages.xsl \
+ --output pkg_tarball_list \
+ packages.xsl \
$BOOK/chapter04/chapter04.xml >>$LOGDIR/$LOG 2>&1
;;
lfs)
- xsltproc --nonet --xinclude \
- --stringparam pkgmngt $PKGMNGT \
- -o pkg_tarball_list packages.xsl \
+ xsltproc --nonet --xinclude \
+ --stringparam pkgmngt $PKGMNGT \
+ --stringparam revision $INITSYS \
+ --output pkg_tarball_list \
+ packages.xsl \
$BOOK/chapter03/chapter03.xml >>$LOGDIR/$LOG 2>&1
;;
*)
diff --git a/common/libs/func_check_version.sh b/common/libs/func_check_version.sh
index 99869f3..7a7932c 100644
--- a/common/libs/func_check_version.sh
+++ b/common/libs/func_check_version.sh
@@ -88,12 +88,9 @@ inline_doc
check_prerequisites() { #
#----------------------------#
- case $PROGNAME in
- clfs | clfs2 | clfs3) HOSTREQS="BOOK/prologue/common/hostreqs.xml" ;;
- *) HOSTREQS="prologue/hostreqs.xml" ;;
- esac
+ HOSTREQS=$(find $BOOK -name hostreqs.xml)
- eval $(xsltproc $COMMON_DIR/hostreqs.xsl $BOOK/$HOSTREQS)
+ eval $(xsltproc $COMMON_DIR/hostreqs.xsl $HOSTREQS)
# Avoid translation of version strings
local LC_ALL=C
export LC_ALL
diff --git a/common/libs/func_download_pkgs b/common/libs/func_download_pkgs
index d441005..f70c69b 100644
--- a/common/libs/func_download_pkgs
+++ b/common/libs/func_download_pkgs
@@ -150,31 +150,35 @@ create_urls() { #
case ${PROGNAME} in
clfs*)
echo -n "Creating CLFS <${ARCH}> specific URLs file"
- xsltproc --nonet --xinclude \
- --stringparam server $SERVER \
- --stringparam family clfs \
- -o $BUILDDIR/sources/urls.lst urls.xsl \
+ xsltproc --nonet --xinclude \
+ --stringparam server $SERVER \
+ --stringparam family clfs \
+ -o $BUILDDIR/sources/urls.lst \
+ urls.xsl \
$BOOK/BOOK/materials/$ARCH-chapter.xml >>$LOGDIR/$LOG 2>&1
echo " ...OK"
;;
hlfs)
echo -n "Creating HLFS <${MODEL}> + <${KERNEL}> specific URLs file"
- xsltproc --nonet --xinclude \
- --stringparam server $SERVER \
- --stringparam family lfs \
- --stringparam model $MODEL \
- --stringparam kernel $KERNEL \
- -o $BUILDDIR/sources/urls.lst urls.xsl \
+ xsltproc --nonet --xinclude \
+ --stringparam server $SERVER \
+ --stringparam family lfs \
+ --stringparam model $MODEL \
+ --stringparam kernel $KERNEL \
+ -o $BUILDDIR/sources/urls.lst \
+ urls.xsl \
$BOOK/chapter04/chapter04.xml >>$LOGDIR/$LOG 2>&1
echo " ...OK"
;;
lfs)
echo -n "Creating LFS specific URLs file"
- xsltproc --nonet --xinclude \
- --stringparam server $SERVER \
- --stringparam family lfs \
- --stringparam pkgmngt $PKGMNGT \
- -o ../sources/urls.lst urls.xsl \
+ xsltproc --nonet --xinclude \
+ --stringparam server $SERVER \
+ --stringparam family lfs \
+ --stringparam pkgmngt $PKGMNGT \
+ --stringparam revision $INITSYS \
+ --output ../sources/urls.lst \
+ urls.xsl \
$BOOK/chapter03/chapter03.xml >>$LOGDIR/$LOG 2>&1
echo " ...OK"
;;
diff --git a/common/libs/func_validate_configs.sh b/common/libs/func_validate_configs.sh
index 6ac91ad..2220ca3 100644
--- a/common/libs/func_validate_configs.sh
+++ b/common/libs/func_validate_configs.sh
@@ -31,7 +31,7 @@ inline_doc
local -r ADVANCED_common="REPORT REBUILD_MAKEFILE"
# BOOK Settings by book
- local -r LFS_book="$BOOK_common BLFS_TOOL"
+ local -r LFS_book="$BOOK_common INITSYS BLFS_TOOL"
#local -r HLFS_added="SET_SSP SET_ASLR SET_PAX SET_HARDENED_TMP SET_WARNINGS \
# SET_MISC SET_BLOWFISH"
local -r HLFS_added=""
diff --git a/common/packages.xsl b/common/packages.xsl
index 41645f4..f77801f 100644
--- a/common/packages.xsl
+++ b/common/packages.xsl
@@ -8,13 +8,16 @@
-
+
-
+
-
-
+
+
+
+
+
@@ -28,6 +31,8 @@
diff --git a/common/urls.xsl b/common/urls.xsl
index 511d183..bcdf78c 100644
--- a/common/urls.xsl
+++ b/common/urls.xsl
@@ -14,16 +14,20 @@
lfs
-
+
-
+
-
+
+
+
+
-
+
diff --git a/jhalfs b/jhalfs
index 4019cba..8a1d03c 100755
--- a/jhalfs
+++ b/jhalfs
@@ -441,8 +441,15 @@ if [[ "$REBUILD_MAKEFILE" = "y" ]] ; then
case $PROGNAME in
clfs* )
VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
+ lfs)
+ if [[ "$INITSYS" = "sysv" ]] ; then
+ VERSION=$(grep 'ENTITY version ' $JHALFSDIR/$BOOK/general.ent| cut -d\" -f2)
+ else
+ VERSION=$(grep 'ENTITY versiond' $JHALFSDIR/$BOOK/general.ent| cut -d\" -f2)
+ fi
+ ;;
*)
- VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
+ VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;;
esac
fi