diff --git a/README b/README index 6fcb3ac..c739d4f 100644 --- a/README +++ b/README @@ -143,7 +143,10 @@ $Id$ /blfs-tool-deps/9xx-* /libs/func_* - /contrib/jhalfs-paco.patch + /custom/template + /config/ + /examples/* + /examples_CLFS-E/* /extras/do_copy_files /do_ica_prep @@ -164,8 +167,9 @@ $Id$ README README.BLFS + README.CLFS README.HLFS - README.PACO + README.CUSTOM TODO LICENSE diff --git a/README.PACO b/README.PACO deleted file mode 100644 index 164a7a9..0000000 --- a/README.PACO +++ /dev/null @@ -1,94 +0,0 @@ -########################################### -# # -# README FILE FOR JHALFS PACO PATCH # -# By: Tor Olav Stava # -# (torstava@broadpark.no # -# # -########################################### - -**** W A R N I N G **** - -The patch don't work at this moment. - - -##### GENERAL DESCRIPTION ##### - -This patch will enable the paco pacKAGE oRGANIZER to be used with jhalfs. -At the moment only the LFS and HLFS-glibc parts are supported. - -NEWS: - Preliminary support for CLFS is ready. It's not fully tested, so if you -discover any bugs please notify the patch author. Also, Paco may or may not work -on your specific architecture. Check the Paco homepage for details. - -##### QUICK START ##### - -1. Apply the paco.patch. - (patch -Np0 -i contrib/jhalfs-paco.patch) - -2. Edit the configuration files to your preferences. - (common/config and LFS/config or HLFS/config or CLFS/config) - -3. Run the wanted script. - (Only ./lfs or ./clfs or ./hlfs --model glibc if you want to use paco) - -4. Run make. - - -##### PREREQUISITES ##### - -Before using jhalfs you should have some experience with LFS. - -If you don't know what LFS is about, then head over to -http://www.linuxfromscratch.org/lfs and start from there. - - -##### NOTES ##### - -Paco-1.10.10 is currently recommended. -Remember to update the common/config file is using a newer version. - -Patch author: Tor Olav Stava (torstava@broadpark.no) -Any comments directly regarding the patch should be directed to the author -or the ALFS mailing list. The patch author is not a member of the ALFS team, -and all work is done on a voluntary basis. - - -##### LINKS ##### - -Linux From Scratch homepage: -http://www.linuxfromscratch.org - -paco homepage: -http://paco.sourceforge.net/index.html - -nALFS + paco hint by David Rosal: -http://www.linuxfromscratch.org/hints/downloads/files/alfs_paco.txt - - -##### SUPPORT ##### - -Linux From Scratch Mailing Lists: -http://www.linuxfromscratch.org/mail.html - -paco Mailing List: -http://lists.sourceforge.net/lists/listinfo/paco-general - - -##### TODO ##### - -- Bughunting/testing CLFS part -- Support for HLFS-uClibc -- Support for BLFS (when it's ready) -- Spread the Word - - -##### HISTORY ##### - -2006-08-02 -- Preliminary support for CLFS done -- Some code cleanup - -2006-07-30 -- Automatical download of Paco source package done -- Updated patch to support new HLFS layout diff --git a/common/libs/func_compare.sh b/common/libs/func_compare.sh index 4e950e9..8e8184f 100644 --- a/common/libs/func_compare.sh +++ b/common/libs/func_compare.sh @@ -55,7 +55,7 @@ wrt_compare_work() { # local ITERATION=$1 local PREV_IT=$2 local PRUNEPATH="/dev /home /${SCRIPT_ROOT} /lost+found /media /mnt /opt /proc \ -/sources /root /srv /sys /tmp /tools /usr/local /usr/src /var/log/paco" +/sources /root /srv /sys /tmp /tools /usr/local /usr/src" local ROOT_DIR=/ local DEST_TOPDIR=/${SCRIPT_ROOT} diff --git a/contrib/jhalfs-paco.patch b/contrib/jhalfs-paco.patch deleted file mode 100644 index ac70c2b..0000000 --- a/contrib/jhalfs-paco.patch +++ /dev/null @@ -1,1054 +0,0 @@ -Index: LFS/master.sh -=================================================================== ---- LFS/master.sh (revision 3103) -+++ LFS/master.sh (working copy) -@@ -172,6 +172,11 @@ - # Keep the script file name - this_script=`basename $file` - -+ # If $this_script corresponds to a paco script, then skip it -+ case "${this_script}" in -+ *paco) continue ;; -+ esac -+ - # We'll run the chroot commands differently than the others, so skip them in the - # dependencies and target creation. - case "${this_script}" in -@@ -179,6 +184,18 @@ - *stripping*) [[ "${STRIP}" = "n" ]] && continue ;; - esac - -+ # Install paco as the first package in ch6, before installing -+ # linux-libc-headers, except in iterartive builds -+ if [[ -z "$N" ]]; then -+ case $this_script in -+ *linux-libc-headers) -+ TMP_SCRIPT="$this_script" -+ this_script=`echo $this_script | sed -e 's/linux-libc-headers/a-paco/'` -+ wrt_paco_inst "$this_script" -+ this_script="$TMP_SCRIPT" ;; -+ esac -+ fi -+ - # Grab the name of the target - name=`echo ${this_script} | sed -e 's@[0-9]\{3\}-@@'` - -@@ -231,7 +248,9 @@ - # and not to use chroot. - case "${this_script}" in - *kernfs) wrt_RunAsRoot "${this_script}" "$file" ;; -- *) wrt_run_as_chroot1 "${this_script}" "$file" ;; -+ *) wrt_paco_prep -+ wrt_run_as_chroot1 "${this_script}" "$file" -+ wrt_paco_log "$pkg_tarball" ;; - esac - - # Remove the build directory(ies) except if the package build fails. -@@ -251,6 +270,16 @@ - PREV=${this_script}${N} - # Set system_build envar for iteration targets - system_build=$chapter6 -+ -+ # Reinstalling paco after readsjusting the toolchain. -+ case "${this_script}" in -+ *readjusting) -+ TMP_SCRIPT="$this_script" -+ this_script=`echo ${this_script} | sed -e 's/readjusting/x-paco/'` -+ wrt_paco_inst "$this_script" -+ this_script="$TMP_SCRIPT" ;; -+ esac -+ - done # end for file in chapter06/* - } - -@@ -311,8 +340,15 @@ - else - wrt_run_as_chroot2 "$this_script" "$file" - fi -+ wrt_paco_log "lfs-sysconf" - ;; -+ *kernel | *bootscripts ) -+ wrt_paco_prep -+ wrt_run_as_chroot2 "$this_script" "$file" -+ wrt_paco_log "$pkg_tarball" -+ ;; - *) wrt_run_as_chroot2 "$this_script" "$file" -+ wrt_paco_log "lfs-sysconf" - ;; - esac - -Index: LFS/lfs.xsl -=================================================================== ---- LFS/lfs.xsl (revision 3103) -+++ LFS/lfs.xsl (working copy) -@@ -39,6 +39,9 @@ - - - -+ -+ -+ - - - -@@ -251,6 +254,33 @@ - - || true - -+ -+ -+ -+ export LD_PRELOAD=/usr/lib/libpaco-log.so -+ -+ -+ -+ -+ -+ export LD_PRELOAD=/usr/lib/libpaco-log.so -+ -+ -+ -+ -+ -+ unset LD_PRELOAD -+ -+ -+ -+ - - - -Index: CLFS/master.sh -=================================================================== ---- CLFS/master.sh (revision 3103) -+++ CLFS/master.sh (working copy) -@@ -494,6 +494,11 @@ - # Keep the script file name - this_script=`basename $file` - -+ # If $this_script corresponds to a paco script, then skip it -+ case "${this_script}" in -+ *paco) continue ;; -+ esac -+ - # Test if the stripping phase must be skipped. - # Skip alsp temp-perl for iterative runs - case $this_script in -@@ -501,6 +506,18 @@ - *temp-perl*) [[ -n "$N" ]] && continue ;; - esac - -+ # Install paco as the first package in ch6, before installing -+ # linux-libc-headers, except in iterartive builds -+ if [[ -z "$N" ]]; then -+ case $this_script in -+ *linux-headers) -+ TMP_SCRIPT="$this_script" -+ this_script=`echo $this_script | sed -e 's/linux-headers/a-paco/'` -+ wrt_paco_inst "$this_script" -+ this_script="$TMP_SCRIPT" ;; -+ esac -+ fi -+ - # Grab the name of the target, strip id number, XXX-script - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' \ - -e 's@temp-@@' \ -@@ -553,7 +570,9 @@ - [[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - fi - # -+ wrt_paco_prep - wrt_run_as_chroot1 "${this_script}" "${file}" -+ wrt_paco_log "$pkg_tarball" - # - [[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs "${name}" - # -@@ -568,6 +587,16 @@ - PREV=${this_script}${N} - # Set system_build envar for iteration targets - system_build=$basicsystem -+ -+ # Reinstalling paco after readsjusting the toolchain. -+ case "${this_script}" in -+ *adjusting) -+ TMP_SCRIPT="$this_script" -+ this_script=`echo ${this_script} | sed -e 's/adjusting/x-paco/'` -+ wrt_paco_inst "$this_script" -+ this_script="$TMP_SCRIPT" ;; -+ esac -+ - done # for file in final-system/* ... - } - -@@ -604,6 +633,11 @@ - # Keep the script file name - this_script=`basename $file` - -+ # If $this_script corresponds to a paco script, then skip it -+ case "${this_script}" in -+ *paco) continue ;; -+ esac -+ - # Test if the stripping phase must be skipped - # Skip alsp temp-perl for iterative runs - case $this_script in -@@ -611,6 +645,18 @@ - *temp-perl*) [[ -n "$N" ]] && continue ;; - esac - -+ # Install paco as the first package in ch6, before installing -+ # linux-libc-headers, except in iterartive builds -+ if [[ -z "$N" ]]; then -+ case $this_script in -+ *linux-headers) -+ TMP_SCRIPT="$this_script" -+ this_script=`echo $this_script | sed -e 's/linux-headers/a-paco/'` -+ wrt_paco_inst "$this_script" -+ this_script="$TMP_SCRIPT" ;; -+ esac -+ fi -+ - # Grab the name of the target, strip id number, XXX-script - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' \ - -e 's@temp-@@' \ -@@ -665,7 +711,9 @@ - [[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - fi - # -+ wrt_paco_prep - wrt_run_as_root2 "${this_script}" "${file}" -+ wrt_paco_log "$pkg_tarball" - # - [[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs2 "${name}" - # -@@ -680,6 +728,16 @@ - PREV=${this_script}${N} - # Set system_build envar for iteration targets - system_build=$basicsystem -+ -+ # Reinstalling paco after readsjusting the toolchain. -+ case "${this_script}" in -+ *adjusting) -+ TMP_SCRIPT="$this_script" -+ this_script=`echo ${this_script} | sed -e 's/adjusting/x-paco/'` -+ wrt_paco_inst "$this_script" -+ this_script="$TMP_SCRIPT" ;; -+ esac -+ - done # for file in final-system/* ... - } - -@@ -728,7 +786,17 @@ - # - [[ "$pkg_tarball" != "" ]] && wrt_unpack2 "$pkg_tarball" - # -+ case $this_script in -+ *bootscripts* | *udev-rules ) -+ wrt_paco_prep ;; -+ esac - wrt_run_as_chroot1 "${this_script}" "${file}" -+ case $this_script in -+ *bootscripts* | *udev-rules ) -+ wrt_paco_log "$pkg_tarball" ;; -+ *) -+ wrt_paco_log "clfs-sysconf" ;; -+ esac - # - [[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs "${name}" - # -@@ -790,7 +858,17 @@ - # - [[ "$pkg_tarball" != "" ]] && wrt_unpack3 "$pkg_tarball" - # -+ case $this_script in -+ *bootscripts* | *udev-rules ) -+ wrt_paco_prep ;; -+ esac - wrt_run_as_root2 "${this_script}" "${file}" -+ case $this_script in -+ *bootscripts* | *udev-rules ) -+ wrt_paco_log "$pkg_tarball" ;; -+ *) -+ wrt_paco_log "clfs-sysconf" ;; -+ esac - # - [[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs2 "${name}" - # -@@ -862,8 +940,13 @@ - else - wrt_run_as_chroot1 "${this_script}" "${file}" - fi -+ wrt_paco_log "clfs-sysconf" - ;; -- *) wrt_run_as_chroot1 "${this_script}" "${file}" ;; -+ *kernel) wrt_paco_prep -+ wrt_run_as_chroot1 "${this_script}" "${file}" -+ wrt_paco_log "$pkg_tarball" ;; -+ *) wrt_run_as_chroot1 "${this_script}" "${file}" -+ wrt_paco_log "clfs-sysconf" ;; - esac - # - # Housekeeping...remove any build directory(ies) except if the package build fails. -@@ -941,8 +1024,13 @@ - else - wrt_run_as_root2 "${this_script}" "${file}" - fi -+ wrt_paco_log "clfs-sysconf" - ;; -- *) wrt_run_as_root2 "${this_script}" "${file}" ;; -+ *kernel) wrt_paco_prep -+ wrt_run_as_root2 "${this_script}" "${file}" -+ wrt_paco_log "$pkg_tarball" ;; -+ *) wrt_run_as_root2 "${this_script}" "${file}" -+ wrt_paco_log "clfs-sysconf" ;; - esac - # - # Housekeeping...remove any build directory(ies) except if the package build fails. -Index: CLFS/clfs.xsl -=================================================================== ---- CLFS/clfs.xsl (revision 3103) -+++ CLFS/clfs.xsl (working copy) -@@ -42,6 +42,9 @@ - - - -+ -+ -+ - - - -@@ -103,6 +106,25 @@ - tar -xvf ../vim-&vim-version;-lang.* --strip-components=1 - - -+ -+ -+ -+ export LD_PRELOAD=/usr/lib/libpaco-log.so -+ -+ -+ -+ export LD_PRELOAD=/usr/lib/libpaco-log.so -+ -+ - - exit - -Index: common/paco-build-hlfs.sh -=================================================================== ---- common/paco-build-hlfs.sh (revision 0) -+++ common/paco-build-hlfs.sh (revision 0) -@@ -0,0 +1,12 @@ -+#!/bin/sh -+set -e -+ -+cd $PKGDIR -+./configure --sysconfdir=/etc \ -+ --enable-scripts \ -+ --disable-gpaco \ -+ --disable-static \ -+ --with-pic && -+make && -+make install && -+make logme -Index: common/func_validate_configs.sh -=================================================================== ---- common/func_validate_configs.sh (revision 3103) -+++ common/func_validate_configs.sh (working copy) -@@ -20,10 +20,10 @@ - inline_doc - - # First internal variables, then the ones that change the book's flavour, and lastly system configuration variables -- local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE MODEL GRSECURITY_HOST TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL PAGE TIMEZONE LANG LC_ALL LUSER LGROUP BLFS_TOOL" -- local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE METHOD ARCH TARGET TARGET32 TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG GETKERNEL VIMLANG PAGE TIMEZONE LANG LUSER LGROUP BLFS_TOOL" -- local -r clfs2_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE ARCH TARGET OPTIMIZE REPORT STRIP FSTAB CONFIG GETKERNEL VIMLANG PAGE TIMEZONE LANG LUSER LGROUP BLFS_TOOL" -- local -r lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL VIMLANG PAGE TIMEZONE LANG LUSER LGROUP BLFS_TOOL" -+ local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO GETPKG RUNMAKE MODEL GRSECURITY_HOST TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL PAGE TIMEZONE LANG LC_ALL LUSER LGROUP BLFS_TOOL" -+ local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO GETPKG RUNMAKE METHOD ARCH TARGET TARGET32 TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG GETKERNEL VIMLANG PAGE TIMEZONE LANG LUSER LGROUP BLFS_TOOL" -+ local -r clfs2_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE ARCH TARGET OPTIMIZE REPORT STRIP FSTAB CONFIG GETKERNEL VIMLANG PAGE TIMEZONE LANG LUSER LGROUP BLFS_TOOL" -+ local -r lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE USE_PACO GETPKG RUNMAKE TEST BOMB_TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL VIMLANG PAGE TIMEZONE LANG LUSER LGROUP BLFS_TOOL" - local -r blfs_PARAM_LIST="BRANCH_ID BLFS_ROOT BLFS_XML TRACKING_DIR" - - local -r blfs_tool_PARAM_LIST="BLFS_BRANCH_ID BLFS_ROOT BLFS_XML TRACKING_DIR DEP_LIBXML DEP_LIBXSLT DEP_DBXSL DEP_LINKS DEP_SUDO DEP_WGET DEP_SVN DEP_GPM" -@@ -99,6 +99,7 @@ - case $config_param in - # Allways display this, if found in ${PROGNAME}_PARAM_LIST - GETPKG | \ -+ USE_PACO | \ - RUNMAKE | \ - TEST | \ - OPTIMIZE | \ -Index: common/paco-functions -=================================================================== ---- common/paco-functions (revision 0) -+++ common/paco-functions (revision 0) -@@ -0,0 +1,328 @@ -+#!/bin/bash -+ -+#----------------------------# -+wrt_paco_inst() { # -+#----------------------------# -+ -+local paco_script="$1" -+ -+check_build_model -+ -+if [ $USE_PACO = "y" ]; then -+ case $PROGNAME in -+ clfs ) -+ paco_file="final-system/$paco_script" -+ basicsystem="$basicsystem $paco_script" ;; -+ * ) -+ paco_file="chapter06/$paco_script" -+ chapter6="$chapter6 $paco_script" ;; -+ esac -+ -+ # Copy the paco build script to the correct directory and make it executable -+ cp $JHALFSDIR/paco-build-$PROGNAME.sh $JHALFSDIR/${PROGNAME}-commands/$paco_file && -+ chmod +x $JHALFSDIR/${PROGNAME}-commands/$paco_file -+ -+ # Write target, dependency and unpack -+ if [ $CLFS_BOOT = 1 ]; then -+ wrt_target_boot "$paco_script" "$PREV" -+ wrt_unpack3 "$PACO_FILE" -+ wrt_run_as_root2 "${paco_script}" "${paco_file}" -+ wrt_remove_build_dirs2 "paco" -+ else -+ wrt_target "$paco_script" "$PREV" -+ wrt_unpack2 "$PACO_FILE" -+ wrt_run_as_chroot1 "${paco_script}" "${paco_file}" -+ wrt_remove_build_dirs "paco" -+ fi -+ -+ wrt_touch -+ -+ # Override the PREV variable -+ PREV="$paco_script" -+fi -+} -+ -+ -+#----------------------------------# -+wrt_paco_prep() { # Export Paco variables -+#----------------------------------# and remove tmpfile -+ -+local TMPFILEPATH -+ -+check_build_model -+ -+check_log_package -+ -+if [ $USE_PACO = "y" ] && [ $LOG_PACKAGE != 0 ]; then -+ if [ $CLFS_BOOT = 1 ]; then -+ TMPFILEPATH="$PACO_TMPFILE" -+ else -+ TMPFILEPATH="\$(MOUNT_PT)$PACO_TMPFILE" -+ fi -+( -+cat << EOF -+ @echo "export PACO_INCLUDE=$PACO_INCLUDE" >> envars && \\ -+ echo "export PACO_EXCLUDE=\$(SRC):$PACO_EXCLUDE" >> envars && \\ -+ echo "export PACO_TMPFILE=$PACO_TMPFILE" >> envars && \\ -+ rm -f $TMPFILEPATH -+EOF -+) >> $MKFILE.tmp -+fi -+} -+ -+ -+#----------------------------------# -+wrt_paco_log() { # If the tmpfile exist, then log the current package -+#----------------------------------# and remove tempfile -+local PACKAGE -+ -+# Extract package name and version from the tarball name -+PACKAGE=`echo $1 | sed -e 's/.tar.*//'` -+ -+check_build_model -+ -+# Check if the package should be logged -+check_log_package -+ -+ -+if [ $USE_PACO = "y" ]; then -+ if [ $LOG_PACKAGE != 0 ]; then -+ # Only use this if doing CLFS boot build -+ if [ $CLFS_BOOT = 1 ]; then -+( -+cat << EOF -+ @if [ -e $PACO_TMPFILE ]; then \\ -+ paco -lp+ $PACKAGE < $PACO_TMPFILE && \\ -+ rm -f $PACO_TMPFILE; \\ -+ fi; -+EOF -+) >> $MKFILE.tmp -+ # All else should use these commands -+ else -+( -+cat << EOF -+ @if [ -e \$(MOUNT_PT)$PACO_TMPFILE ]; then \\ -+ \$(CHROOT1) 'paco -lp+ $PACKAGE < $PACO_TMPFILE' && \\ -+ rm -f \$(MOUNT_PT)$PACO_TMPFILE; \\ -+ fi; -+EOF -+) >> $MKFILE.tmp -+ fi -+ fi -+ # Add missing files to the logs if needed -+ wrt_paco_add_log -+fi -+} -+ -+ -+#----------------------------------# -+fnc_add_log() { # -+#----------------------------------# -+ -+MISSING_FILE=$1 -+ -+if [ $CLFS_BOOT = 1 ]; then -+ echo -e "\t@$MISSING_FILE | paco -lp+ $PACKAGE" >> $MKFILE.tmp -+else -+ echo -e "\t@\$(CHROOT1) '$MISSING_FILE | paco -lp+ $PACKAGE'" >> $MKFILE.tmp -+fi -+} -+ -+ -+#----------------------------------# -+wrt_paco_add_log() { # -+#----------------------------------# -+# Some packages create files using bash redirection, which the LD_PRELOAD lib don't notice -+# These rules will add the missing files to the proper logs. -+# Most of these is not needed for HLFS, but they do no harm. -+if [ $USE_PACO = "y" ]; then -+ case $this_script in -+ *e2fsprogs) -+ fnc_add_log "echo /etc/mke2fs.conf" -+ ;; -+ *bootscripts) -+ fnc_add_log "echo /etc/sysconfig/rc" -+ fnc_add_log "echo /etc/sysconfig/createfiles" -+ ;; -+ *glibc) -+ fnc_add_log "find /lib -type l" -+ fnc_add_log "echo /etc/{nsswitch.conf,ld.so.conf}" -+ ;; -+ *ncurses) -+ fnc_add_log "echo /usr/lib/{libcurses.so,libncurses.so{,.5},libform.so,libpanel.so,libmenu.so}" -+ ;; -+ *bash) -+ fnc_add_log "echo /bin/sh" -+ ;; -+ *flex) -+ fnc_add_log "echo /usr/bin/lex" -+ ;; -+ *shadow) -+ fnc_add_log "echo /etc/login.defs" -+ fnc_add_log "echo /etc/group" -+ ;; -+ *hotplug) -+ fnc_add_log "echo /var/log/hotplug" -+ fnc_add_log "echo /var/run/usb" -+ ;; -+ *sysklogd) -+ fnc_add_log "echo /etc/syslog.conf" -+ ;; -+ *sysvinit) -+ fnc_add_log "echo /etc/inittab" -+ fnc_add_log "echo /usr/bin/lastb" -+ ;; -+ *texinfo) -+ fnc_add_log "echo /usr/share/info/dir" -+ ;; -+ *udev) -+ fnc_add_log "find /lib/udev/devices" -+ fnc_add_log "echo /lib/firmware" -+ fnc_add_log "find /etc/udev/rules.d -type f" -+ fnc_add_log "echo /etc/udev/udev.conf" -+ ;; -+ *udev-rules) -+ fnc_add_log "echo /lib/udev/devices/{null,console}" -+ ;; -+ *util-linux) -+ fnc_add_log "echo /var/lib/hwclock" -+ fnc_add_log "echo /etc/nologin.txt" -+ ;; -+ *vim) -+ fnc_add_log "echo /etc/vimrc" -+ ;; -+ # Rules below here will log configuration files created in {C,H}LFS -+ # They will end up in a log named {c,h}lfs-sysconf -+ *setclock) -+ fnc_add_log "echo /etc/sysconfig/clock" -+ ;; -+ *inputrc) -+ fnc_add_log "echo /etc/inputrc" -+ ;; -+ *profile) -+ fnc_add_log "echo /etc/profile" -+ ;; -+ *hostname) -+ fnc_add_log "echo /etc/sysconfig/network" -+ ;; -+ *localnet) -+ fnc_add_log "echo /etc/sysconfig/network" -+ ;; -+ *hosts) -+ fnc_add_log "echo /etc/hosts" -+ ;; -+ *network) -+ fnc_add_log "echo /etc/sysconfig/network-devices/ifconfig.eth0/ipv4" -+ fnc_add_log "echo /etc/resolv.conf" -+ ;; -+ *fstab) -+ fnc_add_log "echo /etc/fstab" -+ ;; -+ *theend | *finished) -+ fnc_add_log "echo /etc/$PROGNAME-release" -+ fnc_add_log "echo /var/run/utmp" -+ fnc_add_log "echo /var/log/btmp" -+ fnc_add_log "echo /var/log/wtmp" -+ fnc_add_log "echo /var/log/lastlog" -+ ;; -+ esac -+fi -+} -+ -+ -+#----------------------------------# -+check_log_package() { # -+#----------------------------------# -+# Maybe don't need this function, but it will avoid writing some -+# unnecessary paco commands in the Makefile. -+ -+case $this_script in -+ *changingowner) LOG_PACKAGE=0 ;; -+ *creatingdirs) LOG_PACKAGE=0 ;; -+ *createfiles) LOG_PACKAGE=0 ;; -+ *pwdgroup) LOG_PACKAGE=0 ;; -+ *devices) LOG_PACKAGE=0 ;; -+ *stripping) LOG_PACKAGE=0 ;; -+ *strippingagain) LOG_PACKAGE=0 ;; -+ *adjusting) LOG_PACKAGE=0 ;; -+ *temp-perl) LOG_PACKAGE=0 ;; -+ *readjusting) LOG_PACKAGE=0 ;; -+ *setclock) LOG_PACKAGE=0 ;; -+ *inputrc) LOG_PACKAGE=0 ;; -+ *profile) LOG_PACKAGE=0 ;; -+ *hostname) LOG_PACKAGE=0 ;; -+ *localnet) LOG_PACKAGE=0 ;; -+ *hosts) LOG_PACKAGE=0 ;; -+ *network) LOG_PACKAGE=0 ;; -+ *fstab) LOG_PACKAGE=0 ;; -+ *theend) LOG_PACKAGE=0 ;; -+ *finished) LOG_PACKAGE=0 ;; -+ *) LOG_PACKAGE=1 ;; -+esac -+} -+ -+#----------------------------------# -+get_paco_src() { # -+#----------------------------------# -+# Download the paco sources -+# We don't do any MD5SUM checking as of yet -+# http://jaist.dl.sourceforge.net/sourceforge/paco/paco-1.10.10.tar.bz2 -+ -+local PACO_URL1="http://$PACO_MIRROR1.dl.sourceforge.net/sourceforge/paco/$PACO_FILE" -+local PACO_URL2="http://$PACO_MIRROR2.dl.sourceforge.net/sourceforge/paco/$PACO_FILE" -+ -+# Test if paco is to be used -+[[ ! "$USE_PACO" = "y" ]] && return -+ -+# If the file exists in the archive copy it to the $BUILDDIR/sources dir. -+if [ ! -z ${SRC_ARCHIVE} ] && -+ [ -d ${SRC_ARCHIVE} ] && -+ [ -f ${SRC_ARCHIVE}/$PACO_FILE ]; then -+ cp ${SRC_ARCHIVE}/$PACO_FILE . -+ echo "$PACO_FILE: -- copied from $SRC_ARCHIVE" -+ fromARCHIVE=1 -+else -+ echo "${BOLD}${YELLOW}$PACO_FILE: not found in ${SRC_ARCHIVE}${OFF}" -+ fromARCHIVE=0 -+ # If the file does not exist yet in /sources download a fresh one -+ if [ ! -f $PACO_FILE ] ; then -+ if ! wget $PACO_URL1 && ! wget $PACO_URL2 ; then -+ gs_wrt_message "$PACO_FILE not found in the SRC_ARCHIVE or on any server..SKIPPING" -+ continue -+ fi -+ fi -+fi -+ -+# Copy the freshly downloaded file to the source archive. -+if [ ! -z ${SRC_ARCHIVE} ] && -+ [ -d ${SRC_ARCHIVE} ] && -+ [ -w ${SRC_ARCHIVE} ] && -+ [ "$fromARCHIVE" = "0" ] ; then -+ echo "Storing file:<$PACO_FILE> in the package archive" -+ cp -f $PACO_FILE ${SRC_ARCHIVE} -+fi -+} -+ -+ -+#----------------------------------# -+check_build_model() { # -+#----------------------------------# -+# Check what script we're running, and set some switches accordingly -+ -+CLFS_BOOT=0 -+ -+case $PROGNAME in -+ hlfs) -+ # Not using Paco with uClibc, even if requested -+ if [ "$MODEL" = "uclibc" ]; then -+ USE_PACO=n -+ fi -+ ;; -+ clfs) -+ # CLFS boot method require it's own commands -+ if [ "$METHOD" = "boot" ]; then -+ CLFS_BOOT=1 -+ fi -+ ;; -+esac -+} -Index: common/paco-build-lfs.sh -=================================================================== ---- common/paco-build-lfs.sh (revision 0) -+++ common/paco-build-lfs.sh (revision 0) -@@ -0,0 +1,10 @@ -+#!/bin/sh -+set -e -+ -+cd $PKGDIR -+./configure --sysconfdir=/etc \ -+ --enable-scripts \ -+ --disable-gpaco && -+make && -+make install && -+make logme -Index: common/paco-build-clfs.sh -=================================================================== ---- common/paco-build-clfs.sh (revision 0) -+++ common/paco-build-clfs.sh (revision 0) -@@ -0,0 +1,10 @@ -+#!/bin/sh -+set -e -+ -+cd $PKGDIR -+./configure --sysconfdir=/etc \ -+ --enable-scripts \ -+ --disable-gpaco && -+make && -+make install && -+make logme -Index: common/common-functions -=================================================================== ---- common/common-functions (revision 3103) -+++ common/common-functions (working copy) -@@ -532,6 +532,7 @@ - --stringparam timezone $TIMEZONE \ - --stringparam page $PAGE \ - --stringparam lang $LANG \ -+ --stringparam use_paco $USE_PACO \ - -o ./${PROGNAME}-commands/ $XSL $BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1 - ;; - -@@ -557,6 +558,7 @@ - --stringparam lang $LANG \ - --stringparam lc_all $LC_ALL \ - --stringparam grsecurity_host $GRSECURITY_HOST \ -+ --stringparam use_paco $USE_PACO \ - -o ./${PROGNAME}-commands/ $XSL $BOOK/index.xml >>$LOGDIR/$LOG 2>&1 - ;; - lfs) -@@ -569,6 +571,7 @@ - --stringparam timezone $TIMEZONE \ - --stringparam page $PAGE \ - --stringparam lang $LANG \ -+ --stringparam use_paco $USE_PACO \ - -o ./${PROGNAME}-commands/ $XSL $BOOK/index.xml >>$LOGDIR/$LOG 2>&1 - ;; - *) exit 1 ;; -@@ -653,6 +656,9 @@ - # Generate URLs file - create_urls - -+ # If Paco is to be used, then download the sources -+ get_paco_src -+ - IFS=$'\x0A' # Modify the 'internal field separator' to break on 'LF' only - for line in `cat urls.lst`; do - IFS=$saveIFS # Restore the system defaults -Index: HLFS/hlfs.xsl -=================================================================== ---- HLFS/hlfs.xsl (revision 3103) -+++ HLFS/hlfs.xsl (working copy) -@@ -43,6 +43,9 @@ - - - -+ -+ -+ - - - -@@ -193,6 +196,10 @@ - - -+ -+ -+ export LD_PRELOAD=/usr/lib/libpaco-log.so -+ - make install - cd ../blfs-bootscripts-&blfs-bootscripts-version; - -@@ -292,6 +299,25 @@ - - || true - -+ -+ -+ -+ export LD_PRELOAD=/usr/lib/libpaco-log.so -+ -+ -+ -+ -+ -+ export LD_PRELOAD=/usr/lib/libpaco-log.so -+ -+ -+ -+ - - - -Index: HLFS/master.sh -=================================================================== ---- HLFS/master.sh (revision 3103) -+++ HLFS/master.sh (working copy) -@@ -47,7 +47,9 @@ - EOF - ) >> $MKFILE.tmp - [[ "$TEST" != "0" ]] && wrt_test_log2 "${this_script}" -+ wrt_paco_prep - wrt_run_as_chroot1 "$toolchain" "$this_script" -+ wrt_paco_log "`echo $toolchain | sed -e 's@[0-9]\{3\}-@@'`" - ;; - - *) -@@ -281,6 +283,11 @@ - # Keep the script file name - this_script=`basename $file` - -+ # If this script is *-paco, then skip it -+ case $this_script in -+ *paco ) continue ;; -+ esac -+ - # Skip this script depending on jhalfs.conf flags set. - case $this_script in - # We'll run the chroot commands differently than the others, so skip them in the -@@ -290,6 +297,18 @@ - *-stripping* ) [[ "$STRIP" = "n" ]] && continue ;; - esac - -+ # Install paco as the first package in ch6, before installing -+ # linux-libc-headers, except in iterartive builds -+ if [[ -z "$N" ]]; then -+ case $this_script in -+ *linux-headers) -+ TMP_SCRIPT="$this_script" -+ this_script=`echo $this_script | sed -e 's/linux-headers/a-paco/'` -+ wrt_paco_inst "$this_script" -+ this_script="$TMP_SCRIPT" ;; -+ esac -+ fi -+ - # Grab the name of the target - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@'` - -@@ -355,7 +374,9 @@ - wrt_RunAsRoot "${this_script}" "${file}" - ;; - *) # The rest of Chapter06 -+ wrt_paco_prep - wrt_run_as_chroot1 "${this_script}" "${file}" -+ wrt_paco_log "$pkg_tarball" - ;; - esac - # -@@ -375,6 +396,16 @@ - PREV=${this_script}${N} - # Set system_build envar for iteration targets - system_build=$chapter6 -+ -+ # Reinstall paco after the toolchain has been readjusted. -+ case "${this_script}" in -+ *readjusting) -+ TMP_SCRIPT="$this_script" -+ this_script=`echo $this_script | sed -e 's/readjusting/x-paco/'` -+ wrt_paco_inst "$this_script" -+ this_script="$TMP_SCRIPT" ;; -+ esac -+ - done # end for file in chapter06/* - - } -@@ -433,9 +464,19 @@ - else # Initialize the log and run the script - wrt_run_as_chroot2 "${this_script}" "${file}" - fi -+ wrt_paco_log "hlfs-sysconf" - ;; -+ *kernel) wrt_paco_prep -+ wrt_run_as_chroot2 "$this_script" "$file" -+ wrt_paco_log "$(get_package_tarball_name "linux")" -+ ;; -+ *bootscripts) wrt_paco_prep -+ wrt_run_as_chroot2 "$this_script" "$file" -+ wrt_paco_log "$(get_package_tarball_name "lfs-bootscripts")" -+ ;; - *) # All other scripts - wrt_run_as_chroot2 "${this_script}" "${file}" -+ wrt_paco_log "hlfs-sysconf" - ;; - esac - -Index: jhalfs -=================================================================== ---- jhalfs (revision 3103) -+++ jhalfs (working copy) -@@ -111,6 +111,7 @@ - REPORT=${REPORT:=n} - VIMLANG=${VIMLANG:-n} - GRSECURITY_HOST=${GRSECURITY_HOST:-n} -+USE_PACO=${USE_PACO:-n} - - # Book surces envars - BRANCH_ID=${BRANCH_ID:=development} -@@ -269,6 +270,14 @@ - [[ $VERBOSITY > 0 ]] && echo "OK" - fi - # -+# paco module -+if [[ "$USE_PACO" = "y" ]]; then -+ [[ $VERBOSITY > 0 ]] && echo -n "Loading paco module..." -+ source $COMMON_DIR/paco-functions -+ [[ $? > 0 ]] && echo "$COMMON_DIR/paco-functions did not load.." && exit 2 -+ [[ $VERBOSITY > 0 ]] && echo "OK" -+fi -+# - # optimize module - if [[ "$OPTIMIZE" != "0" ]]; then - [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..." -@@ -314,6 +323,8 @@ - # - cp $COMMON_DIR/{makefile-functions,progress_bar.sh} $JHALFSDIR/ - # -+[[ $USE_PACO != "n" ]] && cp $COMMON_DIR/paco-build-$PROGNAME.sh $JHALFSDIR/ -+# - [[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/ - # - if [[ "$COMPARE" = "y" ]]; then -Index: Config.in -=================================================================== ---- Config.in (revision 3103) -+++ Config.in (working copy) -@@ -786,3 +786,72 @@ - - #--- End Advanced Features - endmenu -+ -+#--- PACO -+config USE_PACO -+ bool "Use PACO" -+ default n -+ depends on !BOOK_BLFS && !BOOK_CLFS2 && !LIB_UCLIBC -+ -+ config PACO_VERSION -+ string "PACO package version" -+ default "1.10.10" -+ depends USE_PACO -+ -+ config PACO_FILE -+ string "PACO package full name" -+ default "paco-$PACO_VERSION.tar.bz2" -+ depends USE_PACO -+ help -+ #-- You can use .tar.gz if preferred -+ -+ config PACO_MIRROR1 -+ string "Sourceforge mirror 1" -+ default "heanet" -+ depends USE_PACO -+ help -+ #-- Sourceforge mirror to use for Paco source download -+ # -+ # Europe: heanet, belnet, puzzle, surfnet, switch, kent -+ # North America: superb-east, superb-west, umn, easynews -+ # South America: ufpr -+ # Asia: nchc, jaist -+ # Australia: optusnet -+ -+ config PACO_MIRROR2 -+ string "Sourceforge mirror 2" -+ default "kent" -+ depends USE_PACO -+ help -+ #-- Sourceforge mirror to use for Paco source download -+ # -+ # Europe: heanet, belnet, puzzle, surfnet, switch, kent -+ # North America: superb-east, superb-west, umn, easynews -+ # South America: ufpr -+ # Asia: nchc, jaist -+ # Australia: optusnet -+ -+ #-- Internal Settings -+ menu "--- Internal Settings (WARNING: for paco developers only)" -+ depends USE_PACO -+ -+ config PACO_INCLUDE -+ string "Include dirs" -+ default "/" -+ -+ config PACO_EXCLUDE -+ string "Exclude dirs" -+ default "/${SCRIPT_ROOT}" -+ -+ config PACO_TMPFILE -+ string "Temp file" -+ default "/tmp/paco.tmp" -+ -+ config LD_PRELOAD -+ string "LD_PRELOAD" -+ default "/usr/lib/libpaco-log.so" -+ -+ #--- End Internal Settings -+ endmenu -+#--- End PACO -+