diff --git a/BLFS/xsl/scripts.xsl b/BLFS/xsl/scripts.xsl
index cf25a4b..b529326 100644
--- a/BLFS/xsl/scripts.xsl
+++ b/BLFS/xsl/scripts.xsl
@@ -479,9 +479,12 @@ popd
#
-
- make -k
-
+
+ make
+
+ -k
+
+
|| true
@@ -562,15 +565,15 @@ popd
-
+
+ select="substring-before($out-string,'make ')"/>
- make -j1
+ make -j1
+ select="substring-after($out-string,'make ')"/>
diff --git a/Config.in b/Config.in
index 0eced90..b8a4fde 100644
--- a/Config.in
+++ b/Config.in
@@ -21,9 +21,6 @@ menu "--- BOOK Settings"
# config BOOK_HLFS
# bool "Hardened Linux From Scratch"
-
-# config BOOK_BLFS
-# bool "Beyond Linux From Scratch"
endchoice
config PROGNAME
@@ -33,12 +30,10 @@ menu "--- BOOK Settings"
default "clfs2" if BOOK_CLFS2
default "clfs3" if BOOK_CLFS3
default "hlfs" if BOOK_HLFS
-# default "blfs" if BOOK_BLFS
config RUN_ME
string
- default "./jhalfs run"# if !BOOK_BLFS
-# default "./blfs-tool" if BOOK_BLFS
+ default "./jhalfs run"
#--- End BOOK/script
#--- Book version
@@ -60,7 +55,6 @@ menu "--- BOOK Settings"
config WORKING_COPY
bool "Working Copy"
-# depends on !BOOK_BLFS
help
#-- A local working copy
@@ -259,7 +253,7 @@ menu "--- BOOK Settings"
default "mips64-unknown-linux-uclibc" if BOOK_CLFS3 && PROC_mips && DATA_64
default "powerpc-unknown-linux-gnu" if ARCH_PPC && DATA_32
- default "powerpc64-unknown-linux-gnu" if ARCH_PPC && (DATA_MULTI || DATA-64)
+ default "powerpc64-unknown-linux-gnu" if ARCH_PPC && (DATA_MULTI || DATA_64)
default "sparc-unknown-linux-gnu" if ARCH_SPARC && DATA_32
default "sparc64-unknown-linux-gnu" if ARCH_SPARC && (DATA_64 || DATA_MULTI)
@@ -428,79 +422,10 @@ menu "--- BOOK Settings"
default "2.6" if KERNEL_26
default "2.4" if KERNEL_24
-# menu "HLFS Additional Features"
-# depends on BOOK_HLFS
-#
-# config SET_SSP
-# bool "Stack-smashing protector"
-# default y
-#
-# config SET_ASLR
-# bool "Address-space layout randomization"
-# default y
-#
-# config SET_PAX
-# bool "PaX-aware ELF executables and kernel"
-# default y
-#
-# config SET_HARDENED_TMP
-# bool "Hardened temporary files creation"
-# default y
-#
-# config SET_WARNINGS
-# bool "Additional warnings"
-# default y
-#
-# config SET_MISC
-# bool "Miscellaneous features"
-# default y
-#
-# config SET_BLOWFISH
-# bool "Blowfish passwords"
-# default y
-# endmenu
-
- config SSP
-# depends on SET_SSP
- string
- default ",ssp,"
-
- config ASLR
-# depends on SET_ASLR
- string
- default ",aslr,"
-
- config PAX
-# depends on SET_PAX
- string
- default ",pax,"
-
- config HARDENED_TMP
-# depends on SET_HARDENED_TMP
- string
- default ",hardened_tmp,"
-
- config WARNINGS
-# depends on SET_WARNINGS
- string
- default ",warnings,"
-
- config MISC
-# depends on SET_MISC
- string
- default ",misc,"
-
- config BLOWFISH
-# depends on SET_BLOWFISH
- string
- default ",blowfish,"
- #--- End HLFS specific params
-
#--- Custom Tools support
config CUSTOM_TOOLS
bool "Add custom tools support"
default n
-# depends on !BOOK_BLFS
help
#--- Activating this option additional packages you create
# will be installed after finished the xLFS system build.
@@ -511,7 +436,6 @@ menu "--- BOOK Settings"
config BLFS_TOOL
bool "Add blfs-tool support"
default n
-# depends on !BOOK_BLFS && !BOOK_CLFS3
depends on !BOOK_CLFS3
help
#--- Activating this option will install additional
@@ -541,12 +465,24 @@ menu "--- BOOK Settings"
help
#-- Current development version as in trunk
+ config BLFS_WORKING_COPY
+ bool "BLFS working copy"
+ help
+ #-- A local working copy of the BLFS book.
+
config BLFS_BRANCH
bool "BLFS Branch or stable book"
help
#-- A supported SVN branch or stable book release
endchoice
+ config BLFS_WC_LOCATION
+ string "Location of the local BLFS working copy (mandatory)"
+ default "**EDIT ME**"
+ depends on BLFS_WORKING_COPY
+ help
+ #-- Full path to the BLFS book working copy"
+
config BLFS_BRANCH_ID
string "BLFS Book Version (mandatory)"
default "**EDIT ME**"
@@ -628,9 +564,7 @@ menu "--- BOOK Settings"
#--- BLFS specific params
config BLFS_ROOT
string "Directory root"
-# default "$HOME/blfs_root" if BOOK_BLFS
- default "/blfs_root" if BLFS_TOOL
-# depends on BOOK_BLFS || BLFS_TOOL
+ default "/blfs_root"
depends on BLFS_TOOL
help
#-- Full path to the directory where all required
@@ -639,7 +573,6 @@ menu "--- BOOK Settings"
config BLFS_XML
string "BLFS sources directory"
default "blfs-xml"
-# depends on BOOK_BLFS || BLFS_TOOL
depends BLFS_TOOL
help
#-- The directory name under $BLFS_ROOT where the BLFS
@@ -648,7 +581,6 @@ menu "--- BOOK Settings"
config TRACKING_DIR
string "Installed packages database directory"
default "/var/lib/jhalfs/BLFS"
-# depends on BOOK_BLFS || BLFS_TOOL || CUSTOM_TOOLS
depends on BLFS_TOOL || CUSTOM_TOOLS
help
#-- Full path to the directory where the database of
@@ -670,7 +602,6 @@ menu "--- BOOK Settings"
endmenu
menu "--- General Settings"
-# depends on !BOOK_BLFS
#--- Set User Account
config CONFIG_USER
@@ -816,7 +747,6 @@ menu "--- General Settings"
endmenu
menu "--- Build Settings"
-# depends on !BOOK_BLFS
#--- Test Suites
config CONFIG_TESTS
@@ -1021,7 +951,6 @@ menu "--- Build Settings"
endmenu
menu "--- Advanced Features"
-# depends on !BOOK_BLFS
config REPORT
bool "Create SBU and disk usage report"
@@ -1071,23 +1000,29 @@ menu "--- Advanced Features"
#--- Optimizations
if !BOOK_CLFS2 && !BOOK_CLFS3
config CONFIG_OPTIMIZE
- bool "Use optimization (see help)"
+ bool "Optimization and parallelization"
default n
help
- #-- Actual optimization flags MUST be defined in ./optimize/*
- # files before activating this option.
+ # Opens a menu for various optimization settings:
+ # Actual optimization flags MUST be defined in ./optimize/*
+ # before activating this option.
#
- # WARNING: The use of build optimizations may be dangerous.
- # You should know what you are doing and be sure that the
- # optimization settings listed below are what you want.
- # It there are build issues or the system doesn't work as
- # expected, please rebuild without optimizations before
- # asking for support.
+ # WARNING: The use of build optimizations may lead to build issues.
+ # If the system doesn't work as expected, please rebuild
+ # without optimizations before asking for support.
+ menu "Optimization settings"
+ depends on CONFIG_OPTIMIZE
+
+ config N_PARALLEL
+ int "Number of parallel `make' jobs"
+ default 1
+ help
+ #-- The usual recommandation is (number of CPU cores)+1
+ # Do not set for meaningful SBU calculations.
choice
prompt "Optimization level "
default OPT_1
- depends CONFIG_OPTIMIZE
help
#-- Optimization values are set in optimize/* files
@@ -1100,7 +1035,7 @@ if !BOOK_CLFS2 && !BOOK_CLFS3
config OPT_3
bool "Cross tools (only MAKEFLAGS), temp tools and final system" if BOOK_CLFS
endchoice
-
+endmenu
config OPTIMIZE
int
default "0" if !CONFIG_OPTIMIZE
@@ -1111,7 +1046,7 @@ endif
#--- End Optimizations
#-- Internal Settings
- menu "--- Internal Settings (WARNING: for jhalfs developers only)"
+ menu "Internal Settings (WARNING: for jhalfs developers only)"
config SCRIPT_ROOT
string "Scripts root"
@@ -1174,7 +1109,6 @@ endmenu
config REBUILD_MAKEFILE
bool "Rebuild the Makefile (see help)"
default n
-# depends on !BOOK_BLFS
help
#-- Rebuild the Makefile
#
diff --git a/LFS/master.sh b/LFS/master.sh
index 816ffde..484e7e3 100644
--- a/LFS/master.sh
+++ b/LFS/master.sh
@@ -464,14 +464,6 @@ ck_UID:
exit 1; \\
fi
-ck_LFS:
- @if [ \`echo \$(LFS)\`x = "x" ]; then \\
- echo "--------------------------------------------------"; \\
- echo "Enviroment variable LFS must be set"; \\
- echo "--------------------------------------------------"; \\
- exit 1; \
- fi
-
mk_SETUP:
@\$(call echo_SU_request)
@sudo make BREAKPOINT=\$(BREAKPOINT) SETUP
@@ -512,35 +504,35 @@ mk_CUSTOM_TOOLS: mk_BLFS_TOOL
fi;
@touch \$@
-devices: ck_LFS ck_UID
- sudo mount -v --bind /dev \$(LFS)/dev
- sudo mount -vt devpts devpts \$(LFS)/dev/pts
- sudo mount -vt proc proc \$(LFS)/proc
- sudo mount -vt sysfs sysfs \$(LFS)/sys
- if [ -h \$(LFS)/dev/shm ]; then \\
- link=\$\$(readlink \$(LFS)/dev/shm); \\
- sudo mkdir -p \$(LFS)/\$\$link; \\
- sudo mount -vt tmpfs shm \$(LFS)/\$\$link; \\
+devices: ck_UID
+ sudo mount -v --bind /dev \$(MOUNT_PT)/dev
+ sudo mount -vt devpts devpts \$(MOUNT_PT)/dev/pts
+ sudo mount -vt proc proc \$(MOUNT_PT)/proc
+ sudo mount -vt sysfs sysfs \$(MOUNT_PT)/sys
+ if [ -h \$(MOUNT_PT)/dev/shm ]; then \\
+ link=\$\$(readlink \$(MOUNT_PT)/dev/shm); \\
+ sudo mkdir -p \$(MOUNT_PT)/\$\$link; \\
+ sudo mount -vt tmpfs shm \$(MOUNT_PT)/\$\$link; \\
unset link; \\
else \\
- sudo mount -vt tmpfs shm \$(LFS)/dev/shm; \\
+ sudo mount -vt tmpfs shm \$(MOUNT_PT)/dev/shm; \\
fi
-teardown: ck_LFS
- sudo umount -v \$(LFS)/sys
- sudo umount -v \$(LFS)/proc
- sudo umount -v \$(LFS)/dev/pts
- if [ -h \$(LFS)/dev/shm ]; then \\
- link=\$\$(readlink \$(LFS)/dev/shm); \\
- sudo umount -v \$(LFS)/\$\$link; \\
+teardown:
+ sudo umount -v \$(MOUNT_PT)/sys
+ sudo umount -v \$(MOUNT_PT)/proc
+ sudo umount -v \$(MOUNT_PT)/dev/pts
+ if [ -h \$(MOUNT_PT)/dev/shm ]; then \\
+ link=\$\$(readlink \$(MOUNT_PT)/dev/shm); \\
+ sudo umount -v \$(MOUNT_PT)/\$\$link; \\
unset link; \\
else \\
- sudo umount -v \$(LFS)/dev/shm; \\
+ sudo umount -v \$(MOUNT_PT)/dev/shm; \\
fi
- sudo umount -v \$(LFS)/dev
+ sudo umount -v \$(MOUNT_PT)/dev
chroot: devices
- sudo /usr/sbin/chroot \$(LFS) /tools/bin/env -i \\
+ sudo /usr/sbin/chroot \$(MOUNT_PT) /tools/bin/env -i \\
HOME=/root TERM=\$(TERM) PS1='\\u:\\w\\\$\$ ' \\
PATH=/bin:/usr/bin:/sbin:/usr/sbin \\
/tools/bin/bash --login
diff --git a/TODO b/TODO
index e3a392e..173fcb5 100644
--- a/TODO
+++ b/TODO
@@ -5,16 +5,17 @@
MASTER SCRIPT
-------------
- - Nothing for now.
+ - Add a way to choose the network configuration (ip, gateway, etc).
+ - [CLFS] Add a switch to choose between static or DHCP network configuration
+ for CLFS.
xLFS MODULES
------------
- - To develop a new "restart" Makefile target code to allow resuming
- a stopped build after a host reboot, if possible.
- - Eliminate the use of and the need for the LFS variable for "devices",
- "chroot" and "teardown" targets
+ - Add a way to choose the network configuration (ip, gateway, etc).
+ - [CLFS] Add a switch to choose between static or DHCP network configuration
+ for CLFS.
BLFS MODULE (See BLFS/TODO)
diff --git a/common/libs/func_download_pkgs b/common/libs/func_download_pkgs
index 10661db..d441005 100644
--- a/common/libs/func_download_pkgs
+++ b/common/libs/func_download_pkgs
@@ -26,9 +26,11 @@ get_sources() { # Download file, write name to MISSING_FILES.DMP if
# Housekeeping
[[ ! -d $BUILDDIR/sources ]] && mkdir $BUILDDIR/sources
cd $BUILDDIR/sources
- [[ -f MD5SUMS ]] && rm MD5SUMS
- [[ -f MISSING_FILES.DMP ]] && rm MISSING_FILES.DMP
- [[ -f urls.lst ]] && rm urls.lst
+ # If using CLFS, /sources is writable by all, but with sticky bit,
+ # and user does not hold MD5SUMS nor the other files, so use sudo
+ [[ -f MD5SUMS ]] && sudo rm MD5SUMS
+ [[ -f MISSING_FILES.DMP ]] && sudo rm MISSING_FILES.DMP
+ [[ -f urls.lst ]] && sudo rm urls.lst
# Generate URLs file
create_urls
diff --git a/common/libs/func_install_blfs b/common/libs/func_install_blfs
index 3f34915..e81742a 100644
--- a/common/libs/func_install_blfs
+++ b/common/libs/func_install_blfs
@@ -26,7 +26,14 @@ sed -i s@tracking-dir@$TRACKING_DIR@ \
sed -i s@trunk/BOOK@$BLFS_TREE@ \
${BUILDDIR}${BLFS_ROOT}/Makefile
-# Downloads the book, initialize the tracking file and the package database
+# If we have a working copy, copy it:
+if [[ "$BLFS_WORKING_COPY" = "y" ]]; then
+# -r: recursive; -u: only if newer; -T: otherwise, would copy to a subdirectory
+# of blfs-xml, if blfs-xml already exists
+ cp -ruT $BLFS_WC_LOCATION ${BUILDDIR}${BLFS_ROOT}/blfs-xml
+fi
+# Downloads the book if necessary, initialize the tracking file and the
+# package database.
# sudo is needed if $BUILDDIR/var/lib is owned by root and /var/lib/jhalfs
# has to be created
sudo make -j1 -C $BUILDDIR$BLFS_ROOT TRACKING_DIR=$BUILDDIR$TRACKING_DIR \
diff --git a/common/libs/func_validate_configs.sh b/common/libs/func_validate_configs.sh
index 978eec9..7e05f55 100644
--- a/common/libs/func_validate_configs.sh
+++ b/common/libs/func_validate_configs.sh
@@ -53,13 +53,13 @@ inline_doc
local -r clfs_PARAM_LIST="$CLFS_book $GENERAL_common $CLFS_build $ADVANCED_chroot $ADVANCED_common"
local -r clfs2_PARAM_LIST="$CLFS2_book $GENERAL_common $CLFS2_build $ADVANCED_common"
local -r clfs3_PARAM_LIST="$CLFS3_book $GENERAL_common $CLFS3_build $ADVANCED_common"
- local -r blfs_PARAM_LIST="BRANCH_ID BLFS_ROOT BLFS_XML TRACKING_DIR"
+# local -r blfs_PARAM_LIST="BRANCH_ID BLFS_ROOT BLFS_XML TRACKING_DIR"
- # Additional variables (add DEP_DBXSL when required again)
- local -r blfs_tool_PARAM_LIST="BLFS_BRANCH_ID BLFS_ROOT BLFS_XML TRACKING_DIR \
- DEP_LIBXML DEP_LIBXSLT DEP_TIDY \
- DEP_DBXML DEP_LYNX DEP_SUDO DEP_WGET \
- DEP_SVN DEP_GPM DEP_OPENSSL DEP_PYTHON"
+ # Additional variables
+ local -r blfs_tool_PARAM_LIST="\
+ BLFS_TREE BLFS_BRANCH_ID BLFS_ROOT BLFS_XML TRACKING_DIR \
+ DEP_LIBXML DEP_LIBXSLT DEP_TIDY DEP_DBXML DEP_LYNX DEP_SUDO DEP_WGET \
+ DEP_SVN DEP_GPM DEP_OPENSSL DEP_PYTHON"
local -r custom_tool_PARAM_LIST="TRACKING_DIR"
# Internal variables
@@ -184,10 +184,6 @@ inline_doc
echo
;;
- # BLFS params.
- BRANCH_ID | BLFS_ROOT | BLFS_XML ) echo "`eval echo $PARAM_VALS`" ;;
- TRACKING_DIR ) validate_dir -z -d -w ;;
-
# Display non-validated envars found in ${PROGNAME}_PARAM_LIST
* ) echo -e "`eval echo $PARAM_VALS`" ;;
diff --git a/jhalfs b/jhalfs
index 856d1a7..89f42fe 100755
--- a/jhalfs
+++ b/jhalfs
@@ -200,7 +200,6 @@ BOOK=${BOOK:=$JHALFSDIR/$PROGNAME-$LFSVRS}
#--- Envars not sourced from configuration
case $PROGNAME in
-# TODO: clfs is now on git
clfs ) declare -r GIT="git://git.cross-lfs.org/cross-lfs" ;;
clfs2 ) declare -r GIT="git://git.cross-lfs.org/clfs-sysroot" ;;
clfs3 ) declare -r GIT="git://git.cross-lfs.org/clfs-embedded" ;;
@@ -251,15 +250,35 @@ source $COMMON_DIR/libs/func_custom_pkgs
# blfs-tool envars
BLFS_TOOL=${BLFS_TOOL:-n}
if [[ "${BLFS_TOOL}" = "y" ]] ; then
- BLFS_BRANCH_ID=${BLFS_BRANCH_ID:=development}
- case $BLFS_BRANCH_ID in
- development ) BLFS_TREE=trunk/BOOK ;;
- *EDIT* ) echo " You forgot to set the BLFS branch or stable book version."
- echo " Please rerun make and fix the configuration."
- exit 2 ;;
- branch-* ) BLFS_TREE=branches/${BLFS_BRANCH_ID#branch-} ;;
- * ) BLFS_TREE=tags/${BLFS_BRANCH_ID} ;;
- esac
+ BLFS_SVN=${BLFS_SVN:-n}
+ BLFS_WORKING_COPY=${BLFS_WORKING_COPY:-n}
+ BLFS_BRANCH=${BLFS_BRANCH:-n}
+ if [[ "${BLFS_SVN}" = "y" ]]; then
+ BLFS_BRANCH_ID=development
+ BLFS_TREE=trunk/BOOK
+ elif [[ "${BLFS_WORKING_COPY}" = "y" ]]; then
+ [[ -d "$BLFS_WC_LOCATION" ]] &&
+ [[ -d "$BLFS_WC_LOCATION/postlfs" ]] || {
+ echo " BLFS tools: This is not a working copy: $BLFS_WC_LOCATION."
+ echo " Please rerun make and fix the configuration."
+ exit 2
+ }
+ BLFS_TREE=$(cd $BLFS_WC_LOCATION; svn info | grep URL | sed 's@.*BLFS/@@')
+ BLFS_BRANCH_ID=$(echo $BLFS_TREE | sed -e 's@trunk/BOOK@development@' \
+ -e 's@branches/@branch-@' \
+ -e 's@tags/@@' \
+ -e 's@/BOOK@@')
+ elif [[ "${BLFS_BRANCH}" = "y" ]] ; then
+ case $BLFS_BRANCH_ID in
+ *EDIT* ) echo " You forgot to set the BLFS branch or stable book version."
+ echo " Please rerun make and fix the configuration."
+ exit 2 ;;
+ branch-systemd ) BLFS_TREE=branches/systemd ;;
+ branch-* ) BLFS_TREE=branches/${BLFS_BRANCH_ID#branch-}/BOOK ;;
+ 6.2* | 7.4* ) BLFS_TREE=tags/${BLFS_BRANCH_ID} ;;
+ * ) BLFS_TREE=tags/${BLFS_BRANCH_ID}/BOOK ;;
+ esac
+ fi
[[ $VERBOSITY > 0 ]] && echo -n "Loading blfs tools installation function..."
source $COMMON_DIR/libs/func_install_blfs
[[ $? > 0 ]] && echo "function module did not load.." && exit 1
@@ -277,7 +296,7 @@ echo -n "Are you happy with these settings? yes/no (no): "
read ANSWER
if [ x$ANSWER != "xyes" ] ; then
echo "${nl_}Rerun make to fix the configuration options.${nl_}"
- exit 1
+ exit
fi
echo "${nl_}${SD_BORDER}${nl_}"
@@ -302,6 +321,8 @@ if [[ "$OPTIMIZE" != "0" ]]; then
source optimize/opt_config
[[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit
[[ $VERBOSITY > 0 ]] && echo "OK"
+ # The number of parallel jobs is taken from configuration now
+ MAKEFLAGS="-j${N_PARALLEL}"
# Validate optimize settings, if required
validate_opt_settings
fi
diff --git a/optimize/opt_config b/optimize/opt_config
index 1e621cf..72b3835 100644
--- a/optimize/opt_config
+++ b/optimize/opt_config
@@ -7,15 +7,8 @@
#$Id$
#
-#--- Extra flags passed to the packages make commands
-# "unset" will cause the variable to be not set
-# instead of just set to null.
-MAKEFLAGS="-j3"
-
-#--- List of packages that have issues with jobs control.
+#--- List of packages that have issues with parallelization.
# This list may be different for you.
-# If your MAKEFLAGS don't contains a -jX option, you can set
-# a empty list here.
BLACK_LIST="attr autoconf coreutils dejagnu gettext gperf groff man-db vim"
# Rationale for attr, coreutils, gperf: the tests do not pass with -jX
# CLFS packages
diff --git a/optimize/opt_override b/optimize/opt_override
index 05f8637..259e637 100644
--- a/optimize/opt_override
+++ b/optimize/opt_override
@@ -1,5 +1,3 @@
-binutils noOpt
gcc noOpt
-glibc noOpt
grub noOpt
zlib defOpt_fPIC
diff --git a/optimize/optimize_functions b/optimize/optimize_functions
index baec318..eeeb432 100644
--- a/optimize/optimize_functions
+++ b/optimize/optimize_functions
@@ -38,7 +38,7 @@ validate_opt_settings() { # Show optimize setting and wait user agreeme
read ANSWER
if [ x$ANSWER != "xyes" ] ; then
echo "${nl_}Fix the optimization options and rerun the script.${nl_}"
- exit 1
+ exit
fi
echo "${nl_}${SD_BORDER}${nl_}"
}