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_}" }