Implement suggestion made byDan Nicholson for configurable user/group. Required many changes and allowed for the removal of user specific function calls. Tnx Dan

This commit is contained in:
George Boudreau 2006-08-04 20:06:15 +00:00
parent 725ae5a469
commit 9485eba95e
13 changed files with 307 additions and 323 deletions

View file

@ -6,6 +6,10 @@
#
#####
#--- Unprivileged user and group name
LUSER=clfs
LGROUP=clfs
#--- Which target architecture you want to build for,
# used to select proper book and set TARGETS
#--------------------------------
@ -38,6 +42,10 @@ TARGET=
# NOTE: not all combinations are 'bootable' yet.
METHOD=chroot
#--- Unprivileged user and group name
LUSER=clfs
LGROUP=clfs
#--- Location of fstab file (if empty, a template is created)
FSTAB=

View file

@ -41,43 +41,43 @@ cat << EOF
025-addinguser: 024-creatingcrossdir
@\$(call echo_message, Building)
@if [ ! -d /home/clfs ]; then \\
groupadd clfs; \\
useradd -s /bin/bash -g clfs -m -k /dev/null clfs; \\
@if [ ! -d /home/\$(LUSER) ]; then \\
groupadd \$(LGROUP); \\
useradd -s /bin/bash -g \$(LGROUP) -m -k /dev/null \$(LUSER); \\
else \\
touch user-clfs-exist; \\
fi;
@chown clfs \$(MOUNT_PT) && \\
chown clfs \$(MOUNT_PT)/tools && \\
chown clfs \$(MOUNT_PT)/cross-tools && \\
chown clfs \$(MOUNT_PT)/sources && \\
@chown \$(LUSER) \$(MOUNT_PT) && \\
chown \$(LUSER) \$(MOUNT_PT)/tools && \\
chown \$(LUSER) \$(MOUNT_PT)/cross-tools && \\
chown \$(LUSER) \$(MOUNT_PT)/sources && \\
touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
echo --------------------------------------------------------------------------------\$(WHITE)
026-settingenvironment: 025-addinguser
@\$(call echo_message, Building)
@if [ -f /home/clfs/.bashrc -a ! -f /home/clfs/.bashrc.XXX ]; then \\
mv /home/clfs/.bashrc /home/clfs/.bashrc.XXX; \\
@if [ -f /home/\$(LUSER)/.bashrc -a ! -f /home/\$(LUSER)/.bashrc.XXX ]; then \\
mv /home/\$(LUSER)/.bashrc /home/\$(LUSER)/.bashrc.XXX; \\
fi;
@if [ -f /home/clfs/.bash_profile -a ! -f /home/clfs/.bash_profile.XXX ]; then \\
mv /home/clfs/.bash_profile /home/clfs/.bash_profile.XXX; \\
@if [ -f /home/\$(LUSER)/.bash_profile -a ! -f /home/\$(LUSER)/.bash_profile.XXX ]; then \\
mv /home/\$(LUSER)/.bash_profile /home/\$(LUSER)/.bash_profile.XXX; \\
fi;
@echo "set +h" > /home/clfs/.bashrc && \\
echo "umask 022" >> /home/clfs/.bashrc && \\
echo "CLFS=\$(MOUNT_PT)" >> /home/clfs/.bashrc && \\
echo "LC_ALL=POSIX" >> /home/clfs/.bashrc && \\
echo "PATH=/cross-tools/bin:/bin:/usr/bin" >> /home/clfs/.bashrc && \\
echo "export CLFS LC_ALL PATH" >> /home/clfs/.bashrc && \\
echo "" >> /home/clfs/.bashrc && \\
echo "unset CFLAGS" >> /home/clfs/.bashrc && \\
echo "unset CXXFLAGS" >> /home/clfs/.bashrc && \\
echo "" >> /home/clfs/.bashrc && \\
echo "export CLFS_HOST=\"${CLFS_HOST}\"" >> /home/clfs/.bashrc && \\
echo "export CLFS_TARGET=\"${TARGET}\"" >> /home/clfs/.bashrc && \\
echo "export CLFS_TARGET32=\"${TARGET32}\"" >> /home/clfs/.bashrc && \\
echo "source $JHALFSDIR/envars" >> /home/clfs/.bashrc
@chown clfs:clfs /home/clfs/.bashrc && \\
@echo "set +h" > /home/\$(LUSER)/.bashrc && \\
echo "umask 022" >> /home/\$(LUSER)/.bashrc && \\
echo "CLFS=\$(MOUNT_PT)" >> /home/\$(LUSER)/.bashrc && \\
echo "LC_ALL=POSIX" >> /home/\$(LUSER)/.bashrc && \\
echo "PATH=/cross-tools/bin:/bin:/usr/bin" >> /home/\$(LUSER)/.bashrc && \\
echo "export CLFS LC_ALL PATH" >> /home/\$(LUSER)/.bashrc && \\
echo "" >> /home/\$(LUSER)/.bashrc && \\
echo "unset CFLAGS" >> /home/\$(LUSER)/.bashrc && \\
echo "unset CXXFLAGS" >> /home/\$(LUSER)/.bashrc && \\
echo "" >> /home/\$(LUSER)/.bashrc && \\
echo "export CLFS_HOST=\"${CLFS_HOST}\"" >> /home/\$(LUSER)/.bashrc && \\
echo "export CLFS_TARGET=\"${TARGET}\"" >> /home/\$(LUSER)/.bashrc && \\
echo "export CLFS_TARGET32=\"${TARGET32}\"" >> /home/\$(LUSER)/.bashrc && \\
echo "source $JHALFSDIR/envars" >> /home/\$(LUSER)/.bashrc
@chown \$(LUSER):\$(LGROUP) /home/\$(LUSER)/.bashrc && \\
touch envars && \\
touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
@ -131,9 +131,9 @@ cross_tools_Makefiles() { #
#
# If $pkg_tarball isn't empty, we've got a package...
#
[[ "$pkg_tarball" != "" ]] && wrt_unpack_clfs "$pkg_tarball"
[[ "$pkg_tarball" != "" ]] && wrt_unpack "$pkg_tarball"
#
wrt_run_as_clfs_su "${this_script}" "${file}"
wrt_RunAsUser "${this_script}" "${file}"
#
[[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs "${name}"
#
@ -190,10 +190,10 @@ temptools_Makefiles() { #
# If $pkg_tarball isn't empty, we've got a package...
# Insert instructions for unpacking the package and to set the PKGDIR variable.
#
[[ "$pkg_tarball" != "" ]] && wrt_unpack_clfs "$pkg_tarball"
[[ "$pkg_tarball" != "" ]] && wrt_unpack "$pkg_tarball"
[[ "$pkg_tarball" != "" ]] && [[ "$OPTIMIZE" = "2" ]] && wrt_optimize "$name" && wrt_makeflags "$name"
#
wrt_run_as_clfs_su "${this_script}" "${file}"
wrt_RunAsUser "${this_script}" "${file}"
#
[[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs "${name}"
#
@ -262,20 +262,20 @@ boot_Makefiles() { #
# If $pkg_tarball isn't empty, we've got a package...
# Insert instructions for unpacking the package and changing directories
#
[[ "$pkg_tarball" != "" ]] && wrt_unpack_clfs "$pkg_tarball"
[[ "$pkg_tarball" != "" ]] && wrt_unpack "$pkg_tarball"
[[ "$pkg_tarball" != "" ]] && [[ "$OPTIMIZE" = "2" ]] && wrt_optimize "$name" && wrt_makeflags "$name"
#
# Select a script execution method
case $this_script in
*changingowner*) wrt_run_as_clfs_root "${this_script}" "${file}" ;;
*devices*) wrt_run_as_clfs_root "${this_script}" "${file}" ;;
*changingowner*) wrt_RunAsRoot "${this_script}" "${file}" ;;
*devices*) wrt_RunAsRoot "${this_script}" "${file}" ;;
*fstab*) if [[ -n "$FSTAB" ]]; then
wrt_copy_fstab "${this_script}"
else
wrt_run_as_clfs_su "${this_script}" "${file}"
wrt_RunAsUser "${this_script}" "${file}"
fi
;;
*) wrt_run_as_clfs_su "${this_script}" "${file}" ;;
*) wrt_RunAsUser "${this_script}" "${file}" ;;
esac
#
# Housekeeping...remove any build directory(ies) except if the package build fails.
@ -332,7 +332,7 @@ chroot_Makefiles() { #
#
if [ "$pkg_tarball" != "" ] ; then
case $this_script in
*util-linux) wrt_unpack_clfs "$pkg_tarball" ;;
*util-linux) wrt_unpack "$pkg_tarball" ;;
*) wrt_unpack2 "$pkg_tarball" ;;
esac
[[ "$OPTIMIZE" = "2" ]] && wrt_optimize "$name" && wrt_makeflags "$name"
@ -340,9 +340,9 @@ chroot_Makefiles() { #
#
# Select a script execution method
case $this_script in
*kernfs) wrt_run_as_clfs_root "${this_script}" "${file}" ;;
*util-linux) wrt_run_as_clfs_su "${this_script}" "${file}" ;;
*) wrt_run_as_chroot1 "${this_script}" "${file}" ;;
*kernfs) wrt_RunAsRoot "${this_script}" "${file}" ;;
*util-linux) wrt_RunAsUser "${this_script}" "${file}" ;;
*) wrt_run_as_chroot1 "${this_script}" "${file}" ;;
esac
#
# Housekeeping...remove the build directory(ies), except if the package build fails.
@ -757,7 +757,7 @@ bm_bootscripts_Makefiles() { #
this_script=`basename $file`
case $this_script in
*udev*) continue ;; # This is not a script but a commentary
*udev) continue ;; # This is not a script but a commentary
*console*) continue ;; # Use the files that came with the bootscripts
*) ;;
esac
@ -773,8 +773,8 @@ bm_bootscripts_Makefiles() { #
-e 's@64@@' \
-e 's@n32@@'`
case $name in
*bootscripts*) name=bootscripts-cross-lfs
;;
*bootscripts*) name=bootscripts-cross-lfs ;;
*udev-rules) name=udev-cross-lfs ;;
esac
pkg_tarball=$(get_package_tarball_name $name)
@ -1012,6 +1012,8 @@ $HEADER
SRC= /sources
MOUNT_PT= $BUILDDIR
PKG_LST= $PKG_LST
LUSER= $LUSER
LGROUP= $LGROUP
include makefile-functions
@ -1064,8 +1066,8 @@ restart:
clean-chapter2:
-if [ ! -f user-clfs-exist ]; then \\
userdel clfs; \\
rm -rf /home/clfs; \\
userdel \$(LUSER); \\
rm -rf /home/\$(LUSER); \\
fi;
rm -rf \$(MOUNT_PT)/tools
rm -f /tools
@ -1092,13 +1094,13 @@ clean-chapter4:
restore-clfs-env:
@\$(call echo_message, Building)
@if [ -f /home/clfs/.bashrc.XXX ]; then \\
mv -f /home/clfs/.bashrc.XXX /home/clfs/.bashrc; \\
@if [ -f /home/\$(LUSER)/.bashrc.XXX ]; then \\
mv -f /home/\$(LUSER)/.bashrc.XXX /home/\$(LUSER)/.bashrc; \\
fi;
@if [ -f /home/clfs/.bash_profile.XXX ]; then \\
mv /home/clfs/.bash_profile.XXX /home/clfs/.bash_profile; \\
@if [ -f /home/\$(LUSER)/.bash_profile.XXX ]; then \\
mv /home/\$(LUSER)/.bash_profile.XXX /home/\$(LUSER)/.bash_profile; \\
fi;
@chown clfs:clfs /home/clfs/.bash* && \\
@chown \$(LUSER):\$(LGROUP) /home/\$(LUSER)/.bash* && \\
touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
echo --------------------------------------------------------------------------------\$(WHITE)
@ -1110,8 +1112,8 @@ do-housekeeping:
@-umount \$(MOUNT_PT)/sys
@-umount \$(MOUNT_PT)/proc
@-if [ ! -f user-clfs-exist ]; then \\
userdel clfs; \\
rm -rf /home/clfs; \\
userdel \$(LUSER); \\
rm -rf /home/\$(LUSER); \\
fi;
EOF
@ -1146,8 +1148,8 @@ restart:
clean-jhalfs:
-if [ ! -f user-clfs-exist ]; then \\
userdel clfs; \\
rm -rf /home/clfs; \\
userdel \$(LUSER); \\
rm -rf /home/\$(LUSER); \\
fi;
rm -rf \$(MOUNT_PT)/tools
rm -f /tools
@ -1177,13 +1179,13 @@ clean-makesys:
restore-clfs-env:
@\$(call echo_message, Building)
@if [ -f /home/clfs/.bashrc.XXX ]; then \\
mv -fv /home/clfs/.bashrc.XXX /home/clfs/.bashrc; \\
@if [ -f /home/\$(LUSER)/.bashrc.XXX ]; then \\
mv -fv /home/\$(LUSER)/.bashrc.XXX /home/\$(LUSER)/.bashrc; \\
fi;
@if [ -f /home/clfs/.bash_profile.XXX ]; then \\
mv -v /home/clfs/.bash_profile.XXX /home/clfs/.bash_profile; \\
@if [ -f /home/\$(LUSER)/.bash_profile.XXX ]; then \\
mv -v /home/\$(LUSER)/.bash_profile.XXX /home/\$(LUSER)/.bash_profile; \\
fi;
@chown clfs:clfs /home/clfs/.bash* && \\
@chown \$(LUSER):\$(LGROUP) /home/\$(LUSER)/.bash* && \\
touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
echo --------------------------------------------------------------------------------\$(WHITE)

View file

@ -5,6 +5,10 @@
# $Id$
#
#####
#--- Unprivileged user and group name
LUSER=clfs
LGROUP=clfs
#--- Which target architecture you want to build for,
# used to select proper book and set TARGETS
@ -21,6 +25,10 @@ TARGET32=
#--------------------------------
# >>>> MULTILIB 32/64 <<<<
#--- Unprivileged user and group name
LUSER=clfs
LGROUP=clfs
#--- Location of fstab file (if empty, a template is created)
FSTAB=

View file

@ -5,41 +5,6 @@
### FUNCTIONS ###
###################################
#----------------------------------#
wrt_ExecuteAsUser() { # Execute the file ($3) under the users account ($1), log in $2
#----------------------------------#
local this_user=$1
local this_script=$2
local file=$3
(
cat << EOF
@( time { su - ${this_user} -c "source /home/${this_user}/.bashrc && $JHALFSDIR/${PROGNAME}-commands/$file" >>logs/$this_script 2>&1 ; } ) 2>>logs/$this_script && \\
echo -e "\nKB: \`du -skx --exclude=${SCRIPT_ROOT} \$(MOUNT_PT)\`\n" >>logs/$this_script
EOF
) >> $MKFILE.tmp
}
#----------------------------------#
wrt_Unpack_SetOwner() { # Unpack and set owner. Assign 'ROOT' var
#----------------------------------#
local USER_ACCT=$1
local FILE=$2
local optSAVE_PREVIOUS=$3
if [ "${optSAVE_PREVIOUS}" != "1" ]; then
wrt_remove_existing_dirs "$FILE"
fi
(
cat << EOF
@\$(call unpack,$FILE)
@ROOT=\`head -n1 \$(MOUNT_PT)\$(SRC)/\$(PKG_LST) | sed 's@^./@@;s@/.*@@'\` && \\
echo "export PKGDIR=\$(MOUNT_PT)\$(SRC)/\$\$ROOT" > envars && \\
chown -R ${USER_ACCT} \$(MOUNT_PT)\$(SRC)/\$\$ROOT
EOF
) >> $MKFILE.tmp
}
#----------------------------#
host_prep_Makefiles() { # Initialization of the system
@ -67,42 +32,42 @@ cat << EOF
025-addinguser: 023-creatingtoolsdir
@\$(call echo_message, Building)
@if [ ! -d /home/clfs ]; then \\
groupadd clfs; \\
useradd -s /bin/bash -g clfs -m -k /dev/null clfs; \\
@if [ ! -d /home/\$(LUSER) ]; then \\
groupadd \$(LGROUP); \\
useradd -s /bin/bash -g \$(LGROUP) -m -k /dev/null \$(LUSER); \\
else \\
touch user-clfs-exist; \\
fi;
@chown clfs \$(MOUNT_PT) && \\
chown clfs \$(MOUNT_PT)/tools && \\
chown clfs \$(MOUNT_PT)/sources
@chown \$(LUSER) \$(MOUNT_PT) && \\
chown \$(LUSER) \$(MOUNT_PT)/tools && \\
chown \$(LUSER) \$(MOUNT_PT)/sources
@touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
echo --------------------------------------------------------------------------------\$(WHITE)
026-settingenvironment: 025-addinguser
@\$(call echo_message, Building)
@if [ -f /home/clfs/.bashrc -a ! -f /home/clfs/.bashrc.XXX ]; then \\
mv /home/clfs/.bashrc /home/clfs/.bashrc.XXX; \\
@if [ -f /home/\$(LUSER)/.bashrc -a ! -f /home/\$(LUSER)/.bashrc.XXX ]; then \\
mv /home/\$(LUSER)/.bashrc /home/\$(LUSER)/.bashrc.XXX; \\
fi;
@if [ -f /home/clfs/.bash_profile -a ! -f /home/clfs/.bash_profile.XXX ]; then \\
mv /home/clfs/.bash_profile /home/clfs/.bash_profile.XXX; \\
@if [ -f /home/\$(LUSER)/.bash_profile -a ! -f /home/\$(LUSER)/.bash_profile.XXX ]; then \\
mv /home/\$(LUSER)/.bash_profile /home/\$(LUSER)/.bash_profile.XXX; \\
fi;
@echo "set +h" > /home/clfs/.bashrc && \\
echo "umask 022" >> /home/clfs/.bashrc && \\
echo "CLFS=\$(MOUNT_PT)" >> /home/clfs/.bashrc && \\
echo "LC_ALL=POSIX" >> /home/clfs/.bashrc && \\
echo "PATH=\$(MOUNT_PT)/cross-tools/bin:/bin:/usr/bin" >> /home/clfs/.bashrc && \\
echo "export CLFS LC_ALL PATH" >> /home/clfs/.bashrc && \\
echo "" >> /home/clfs/.bashrc && \\
echo "unset CFLAGS" >> /home/clfs/.bashrc && \\
echo "unset CXXFLAGS" >> /home/clfs/.bashrc && \\
echo "" >> /home/clfs/.bashrc && \\
echo "export CLFS_HOST=\"${CLFS_HOST}\"" >> /home/clfs/.bashrc && \\
echo "export CLFS_TARGET=\"${TARGET}\"" >> /home/clfs/.bashrc && \\
echo "export CLFS_TARGET32=\"${TARGET32}\"" >> /home/clfs/.bashrc && \\
echo "source $JHALFSDIR/envars" >> /home/clfs/.bashrc
@chown clfs:clfs /home/clfs/.bashrc && \\
@echo "set +h" > /home/\$(LUSER)/.bashrc && \\
echo "umask 022" >> /home/\$(LUSER)/.bashrc && \\
echo "CLFS=\$(MOUNT_PT)" >> /home/\$(LUSER)/.bashrc && \\
echo "LC_ALL=POSIX" >> /home/\$(LUSER)/.bashrc && \\
echo "PATH=\$(MOUNT_PT)/cross-tools/bin:/bin:/usr/bin" >> /home/\$(LUSER)/.bashrc && \\
echo "export CLFS LC_ALL PATH" >> /home/\$(LUSER)/.bashrc && \\
echo "" >> /home/\$(LUSER)/.bashrc && \\
echo "unset CFLAGS" >> /home/\$(LUSER)/.bashrc && \\
echo "unset CXXFLAGS" >> /home/\$(LUSER)/.bashrc && \\
echo "" >> /home/\$(LUSER)/.bashrc && \\
echo "export CLFS_HOST=\"${CLFS_HOST}\"" >> /home/\$(LUSER)/.bashrc && \\
echo "export CLFS_TARGET=\"${TARGET}\"" >> /home/\$(LUSER)/.bashrc && \\
echo "export CLFS_TARGET32=\"${TARGET32}\"" >> /home/\$(LUSER)/.bashrc && \\
echo "source $JHALFSDIR/envars" >> /home/\$(LUSER)/.bashrc
@chown \$(LUSER):\$(LGROUP) /home/\$(LUSER)/.bashrc && \\
touch envars
@touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
@ -153,7 +118,7 @@ cat << EOF
@touch \$(MOUNT_PT)/var/run/utmp \$(MOUNT_PT)/var/log/{btmp,lastlog,wtmp}
@chmod 664 \$(MOUNT_PT)/var/run/utmp \$(MOUNT_PT)/var/log/lastlog
@chown -R clfs \$(MOUNT_PT)
@chown -R \$(LUSER) \$(MOUNT_PT)
@touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
@ -199,7 +164,6 @@ cross_tools_Makefiles() { #
glibc-headers) name="glibc" ;;
esac
pkg_tarball=$(get_package_tarball_name $name)
#--------------------------------------------------------------------#
# >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< #
#--------------------------------------------------------------------#
@ -210,12 +174,12 @@ cross_tools_Makefiles() { #
#
# If $pkg_tarball isn't empty, we've got a package...
if [ "$pkg_tarball" != "" ] ; then
wrt_Unpack_SetOwner "clfs" "$pkg_tarball"
wrt_unpack "$pkg_tarball"
# If using optimizations, write the instructions
[[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name"
fi
#
wrt_ExecuteAsUser "clfs" "${this_script}" "${file}"
wrt_RunAsUser "${this_script}" "${file}"
#
[[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs "${name}"
#
@ -308,12 +272,12 @@ final_system_Makefiles() { #
#
# If $pkg_tarball isn't empty, we've got a package...
if [ "$pkg_tarball" != "" ] ; then
wrt_Unpack_SetOwner "clfs" "$pkg_tarball"
wrt_unpack "$pkg_tarball"
# If using optimizations, write the instructions
[[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name"
fi
#
wrt_ExecuteAsUser "clfs" "${this_script}" "${file}"
wrt_RunAsUser "${this_script}" "${file}"
#
[[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs "${name}"
#
@ -374,9 +338,9 @@ bootscripts_Makefiles() { #
wrt_target "${this_script}" "$PREV"
#
# If $pkg_tarball isn't empty, we've got a package...
[[ "$pkg_tarball" != "" ]] && wrt_Unpack_SetOwner "clfs" "$pkg_tarball"
[[ "$pkg_tarball" != "" ]] && wrt_unpack "$pkg_tarball"
#
wrt_ExecuteAsUser "clfs" "${this_script}" "${file}"
wrt_RunAsUser "${this_script}" "${file}"
#
[[ "$pkg_tarball" != "" ]] && wrt_remove_build_dirs "${name}"
#
@ -436,17 +400,19 @@ bootable_Makefiles() { #
wrt_target "${this_script}" "$PREV"
#
# If $pkg_tarball isn't empty, we've got a package...
[[ "$pkg_tarball" != "" ]] && wrt_Unpack_SetOwner "clfs" "$pkg_tarball"
[[ "$pkg_tarball" != "" ]] && wrt_unpack "$pkg_tarball"
#
# Select a script execution method
case $this_script in
*fstab*) if [[ -n "$FSTAB" ]]; then
wrt_copy_fstab "${this_script}"
else
wrt_ExecuteAsUser "clfs" "${this_script}" "${file}"
wrt_RunAsUser "${this_script}" "${file}"
fi
;;
*) wrt_ExecuteAsUser "clfs" "${this_script}" "${file}"
*chowning) wrt_RunAsRoot "${this_script}" "${file}"
;;
*) wrt_RunAsUser "${this_script}" "${file}"
;;
esac
#
@ -495,6 +461,8 @@ $HEADER
SRC= /sources
MOUNT_PT= $BUILDDIR
PKG_LST= $PKG_LST
LUSER= $LUSER
LGROUP= $LGROUP
include makefile-functions
@ -528,21 +496,21 @@ restart:
restore-clfs-env:
@\$(call echo_message, Building)
@if [ -f /home/clfs/.bashrc.XXX ]; then \\
mv -f /home/clfs/.bashrc.XXX /home/clfs/.bashrc; \\
@if [ -f /home/\$(LUSER)/.bashrc.XXX ]; then \\
mv -f /home/\$(LUSER)/.bashrc.XXX /home/\$(LUSER)/.bashrc; \\
fi;
@if [ -f /home/clfs/.bash_profile.XXX ]; then \\
mv /home/clfs/.bash_profile.XXX /home/clfs/.bash_profile; \\
@if [ -f /home/\$(LUSER)/.bash_profile.XXX ]; then \\
mv /home/\$(LUSER)/.bash_profile.XXX /home/\$(LUSER)/.bash_profile; \\
fi;
@chown clfs:clfs /home/clfs/.bash* && \\
@chown \$(LUSER):\$(LGROUP) /home/\$(LUSER)/.bash* && \\
touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
echo --------------------------------------------------------------------------------\$(WHITE)
do-housekeeping:
@-if [ ! -f user-clfs-exist ]; then \\
userdel clfs; \\
rm -rf /home/clfs; \\
userdel \$(LUSER); \\
rm -rf /home/\$(LUSER); \\
fi;
EOF

View file

@ -29,6 +29,7 @@ mainmenu "JHALFS Build Script Configuration"
default "./blfs" if BOOK_BLFS
#--- Book version
#menu "Book Version"
choice
@ -58,8 +59,55 @@ mainmenu "JHALFS Build Script Configuration"
#--- The full path to a local copy of the book
#
#endmenu
#-----------------------
#--- Set User Account
config CONFIG_USER
bool "Change the default user/group for this build"
default n
help #--- Unprivileged user and group name
# If you do not have the priv to create/delete
# users and groups you can specifiy your own
# user id for the build
# default values for each book
# LFS lfs
# CLFS clfs
# CLFS2 clfs
# HLFS hlfs
config DEF_USER
string
default "lfs" if BOOK_LFS
default "blfs" if BOOK_BLFS
default "clfs" if BOOK_CLFS || BOOK_CLFS2
default "hlfs" if BOOK_HLFS
config SET_USER
string "User account"
depends CONFIG_USER
default DEF_USER
config CONFIG_GROUP
bool "Set Group?"
default n
depends CONFIG_USER
config SET_GROUP
string "GROUP account"
depends CONFIG_GROUP
default DEF_USER
config LUSER
string
default DEF_USER if !CONFIG_USER
default SET_USER if CONFIG_USER
config LGROUP
string
default LUSER if !CONFIG_GROUP
default SET_GROUP if CONFIG_GROUP
------------------------
comment "--------CLFS specific params---------"
depends on BOOK_CLFS || BOOK_CLFS2

View file

@ -6,12 +6,20 @@
#
#####
#--- Unprivileged user and group name
LUSER=hlfs
LGROUP=hlfs
#--- Which library model to use uclibc/glibc
MODEL=glibc
#--- The host system has grsecurity options enabled? 0(no)/1(yes)
GRSECURITY_HOST=0
#--- Unprivileged user and group name
LUSER=hlfs
LGROUP=hlfs
#--- Location of fstab file (if empty, a template is created)
FSTAB=

View file

@ -7,58 +7,6 @@ set -e # Enable error trapping
### FUNCTIONS ###
###################################
#----------------------------------#
wrt_ExecuteAsUser() { # Execute the file ($3) under the users account ($1), log in $2
#----------------------------------#
local this_user=$1
local this_script=$2
local file=$3
(
cat << EOF
@( time { su - ${this_user} -c "source /home/${this_user}/.bashrc && $JHALFSDIR/${PROGNAME}-commands/$file" >>logs/$this_script 2>&1 ; } ) 2>>logs/$this_script && \\
echo -e "\nKB: \`du -skx --exclude=${SCRIPT_ROOT} \$(MOUNT_PT)\`\n" >>logs/$this_script
EOF
) >> $MKFILE.tmp
}
#----------------------------------#
wrt_Unpack_SetOwner() { # Unpack and set owner. Assign 'ROOT' var
#----------------------------------#
local USER_ACCT=$1
local FILE=$2
local optSAVE_PREVIOUS=$3
if [ "${optSAVE_PREVIOUS}" != "1" ]; then
wrt_remove_existing_dirs "$FILE"
fi
(
cat << EOF
@\$(call unpack,$FILE)
@ROOT=\`head -n1 \$(MOUNT_PT)\$(SRC)/\$(PKG_LST) | sed 's@^./@@;s@/.*@@'\` && \\
echo "export PKGDIR=\$(MOUNT_PT)\$(SRC)/\$\$ROOT" > envars && \\
chown -R ${USER_ACCT} \$(MOUNT_PT)\$(SRC)/\$\$ROOT
EOF
) >> $MKFILE.tmp
}
#----------------------------------#
wrt_RunAsRoot() { # Some scripts must be run as root..
#----------------------------------#
local user_ACCT=$(echo $1 | tr [a-z] [A-Z])
local this_script=$2
local file=$3
(
cat << EOF
@( time { export ${user_ACCT}=\$(MOUNT_PT) && ${PROGNAME}-commands/$file >>logs/$this_script 2>&1 ; } ) 2>>logs/$this_script && \\
echo -e "\nKB: \`du -skx --exclude=${SCRIPT_ROOT} \$(MOUNT_PT)\`\n" >>logs/$this_script
EOF
) >> $MKFILE.tmp
}
#----------------------------#
process_toolchain() { # embryo,cocoon and butterfly need special handling
#----------------------------#
@ -85,11 +33,11 @@ cat << EOF
@echo "export PKGDIR=\$(MOUNT_PT)\$(SRC)" > envars
EOF
) >> $MKFILE.tmp
wrt_ExecuteAsUser "hlfs" "$toolchain" "$this_script"
wrt_RunAsUser "$toolchain" "$this_script"
;;
esac
#
# Safe method to remove packages unpacked outside the toolchain
# Safe method to remove packages unpacked while inside the toolchain script
pkg_tarball=$(get_package_tarball_name "binutils")
wrt_remove_existing_dirs "$pkg_tarball"
pkg_tarball=$(get_package_tarball_name "gcc-core")
@ -140,38 +88,38 @@ cat << EOF
021-addinguser: 020-creatingtoolsdir
@\$(call echo_message, Building)
@if [ ! -d /home/hlfs ]; then \\
groupadd hlfs; \\
useradd -s /bin/bash -g hlfs -m -k /dev/null hlfs; \\
@if [ ! -d /home/\$(LUSER) ]; then \\
groupadd \$(LGROUP); \\
useradd -s /bin/bash -g \$(LGROUP) -m -k /dev/null \$(LUSER); \\
else \\
touch user-hlfs-exist; \\
fi;
@chown hlfs \$(MOUNT_PT)/tools && \\
chown hlfs \$(MOUNT_PT)/sources && \\
@chown \$(LUSER) \$(MOUNT_PT)/tools && \\
chown \$(LUSER) \$(MOUNT_PT)/sources && \\
touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
echo --------------------------------------------------------------------------------\$(WHITE)
022-settingenvironment: 021-addinguser
@\$(call echo_message, Building)
@if [ -f /home/hlfs/.bashrc -a ! -f /home/hlfs/.bashrc.XXX ]; then \\
mv /home/hlfs/.bashrc /home/hlfs/.bashrc.XXX; \\
@if [ -f /home/\$(LUSER)/.bashrc -a ! -f /home/\$(LUSER)/.bashrc.XXX ]; then \\
mv /home/\$(LUSER)/.bashrc /home/\$(LUSER)/.bashrc.XXX; \\
fi;
@if [ -f /home/hlfs/.bash_profile -a ! -f /home/hlfs/.bash_profile.XXX ]; then \\
mv /home/hlfs/.bash_profile /home/hlfs/.bash_profile.XXX; \\
@if [ -f /home/\$(LUSER)/.bash_profile -a ! -f /home/\$(LUSER)/.bash_profile.XXX ]; then \\
mv /home/\$(LUSER)/.bash_profile /home/\$(LUSER)/.bash_profile.XXX; \\
fi;
@echo "set +h" > /home/hlfs/.bashrc && \\
echo "umask 022" >> /home/hlfs/.bashrc && \\
echo "HLFS=\$(MOUNT_PT)" >> /home/hlfs/.bashrc && \\
echo "LC_ALL=POSIX" >> /home/hlfs/.bashrc && \\
echo "PATH=/tools/bin:/bin:/usr/bin" >> /home/hlfs/.bashrc && \\
echo "export HLFS LC_ALL PATH" >> /home/hlfs/.bashrc && \\
echo "" >> /home/hlfs/.bashrc && \\
echo "target=$(uname -m)-${TARGET}" >> /home/lfs/.bashrc && \\
echo "ldso=/tools/lib/${LOADER}" >> /home/lfs/.bashrc && \\
echo "export target ldso" >> /home/lfs/.bashrc && \\
echo "source $JHALFSDIR/envars" >> /home/hlfs/.bashrc && \\
chown hlfs:hlfs /home/hlfs/.bashrc && \\
@echo "set +h" > /home/\$(LUSER)/.bashrc && \\
echo "umask 022" >> /home/\$(LUSER)/.bashrc && \\
echo "HLFS=\$(MOUNT_PT)" >> /home/\$(LUSER)/.bashrc && \\
echo "LC_ALL=POSIX" >> /home/\$(LUSER)/.bashrc && \\
echo "PATH=/tools/bin:/bin:/usr/bin" >> /home/\$(LUSER)/.bashrc && \\
echo "export HLFS LC_ALL PATH" >> /home/\$(LUSER)/.bashrc && \\
echo "" >> /home/\$(LUSER)/.bashrc && \\
echo "target=$(uname -m)-${TARGET}" >> /home/\$(LUSER)/.bashrc && \\
echo "ldso=/tools/lib/${LOADER}" >> /home/\$(LUSER)/.bashrc && \\
echo "export target ldso" >> /home/\$(LUSER)/.bashrc && \\
echo "source $JHALFSDIR/envars" >> /home/\$(LUSER)/.bashrc && \\
chown \$(LUSER):\$(LGROUP) /home/\$(LUSER)/.bashrc && \\
touch envars && \\
touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
@ -246,13 +194,13 @@ chapter5_Makefiles() { # Bootstrap or temptools phase
# If $pkg_tarball isn't empty, we've got a package...
if [ "$pkg_tarball" != "" ] ; then
# Insert instructions for unpacking the package and to set the PKGDIR variable.
wrt_Unpack_SetOwner "hlfs" "$pkg_tarball"
wrt_unpack "$pkg_tarball"
# If using optimizations, write the instructions
[[ "$OPTIMIZE" = "2" ]] && wrt_optimize "$name" && wrt_makeflags "$name"
fi
# Insert date and disk usage at the top of the log file, the script run
# and date and disk usage again at the bottom of the log file.
wrt_ExecuteAsUser "hlfs" "$this_script" "${file}"
wrt_RunAsUser "$this_script" "${file}"
# Remove the build directory(ies) except if the package build fails
# (so we can review config.cache, config.log, etc.)
@ -379,7 +327,7 @@ chapter6_Makefiles() { # sysroot or chroot build phase
# In the mount of kernel filesystems we need to set HLFS and not to use chroot.
case "${this_script}" in
*kernfs*)
wrt_RunAsRoot "hlfs" "${this_script}" "${file}"
wrt_RunAsRoot "${this_script}" "${file}"
;;
*) # The rest of Chapter06
wrt_run_as_chroot1 "${this_script}" "${file}"
@ -521,6 +469,8 @@ $HEADER
SRC= /sources
MOUNT_PT= $BUILDDIR
PKG_LST= $PKG_LST
LUSER= $LUSER
LGROUP= $LGROUP
include makefile-functions
@ -568,8 +518,8 @@ restart: restart_code all
clean-chapter3:
-if [ ! -f user-hlfs-exist ]; then \\
userdel hlfs; \\
rm -rf /home/hlfs; \\
userdel \$(LUSER); \\
rm -rf /home/\$(LUSER); \\
fi;
rm -rf \$(MOUNT_PT)/tools
rm -f /tools
@ -597,13 +547,13 @@ clean-chapter7:
restore-hlfs-env:
@\$(call echo_message, Building)
@if [ -f /home/hlfs/.bashrc.XXX ]; then \\
mv -f /home/hlfs/.bashrc.XXX /home/hlfs/.bashrc; \\
@if [ -f /home/\$(LUSER)/.bashrc.XXX ]; then \\
mv -f /home/\$(LUSER)/.bashrc.XXX /home/\$(LUSER)/.bashrc; \\
fi;
@if [ -f /home/hlfs/.bash_profile.XXX ]; then \\
mv /home/hlfs/.bash_profile.XXX /home/hlfs/.bash_profile; \\
@if [ -f /home/\$(LUSER)/.bash_profile.XXX ]; then \\
mv /home/\$(LUSER)/.bash_profile.XXX /home/\$(LUSER)/.bash_profile; \\
fi;
@chown hlfs:hlfs /home/hlfs/.bash* && \\
@chown \$(LUSER):\$(LGROUP) /home/\$(LUSER)/.bash* && \\
touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
echo --------------------------------------------------------------------------------\$(WHITE)
@ -615,8 +565,8 @@ do-housekeeping:
@-umount \$(MOUNT_PT)/sys
@-umount \$(MOUNT_PT)/proc
@-if [ ! -f user-hlfs-exist ]; then \\
userdel hlfs; \\
rm -rf /home/hlfs; \\
userdel \$(LUSER); \\
rm -rf /home/\$(LUSER); \\
fi;
restart_code:

View file

@ -6,6 +6,10 @@
#
#####
#--- Unprivileged user and group name
LUSER=lfs
LGROUP=lfs
#--- Location of fstab file (if empty, a template is created)
FSTAB=

View file

@ -29,13 +29,13 @@ chapter4_Makefiles() {
021-addinguser: 020-creatingtoolsdir
@\$(call echo_message, Building)
@if [ ! -d /home/lfs ]; then \\
groupadd lfs; \\
useradd -s /bin/bash -g lfs -m -k /dev/null lfs; \\
@if [ ! -d /home/\$(LUSER) ]; then \\
groupadd \$(LGROUP); \\
useradd -s /bin/bash -g \$(LGROUP) -m -k /dev/null \$(LUSER); \\
else \\
touch user-lfs-exist; \\
fi;
@chown lfs \$(MOUNT_PT)/tools && \\
@chown \$(LUSER) \$(MOUNT_PT)/tools && \\
chmod a+wt \$(MOUNT_PT)/sources && \\
touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
@ -43,20 +43,20 @@ chapter4_Makefiles() {
022-settingenvironment: 021-addinguser
@\$(call echo_message, Building)
@if [ -f /home/lfs/.bashrc -a ! -f /home/lfs/.bashrc.XXX ]; then \\
mv /home/lfs/.bashrc /home/lfs/.bashrc.XXX; \\
@if [ -f /home/\$(LUSER)/.bashrc -a ! -f /home/\$(LUSER)/.bashrc.XXX ]; then \\
mv /home/\$(LUSER)/.bashrc /home/\$(LUSER)/.bashrc.XXX; \\
fi;
@if [ -f /home/lfs/.bash_profile -a ! -f /home/lfs/.bash_profile.XXX ]; then \\
mv /home/lfs/.bash_profile /home/lfs/.bash_profile.XXX; \\
@if [ -f /home/\$(LUSER)/.bash_profile -a ! -f /home/\$(LUSER)/.bash_profile.XXX ]; then \\
mv /home/\$(LUSER)/.bash_profile /home/\$(LUSER)/.bash_profile.XXX; \\
fi;
@echo "set +h" > /home/lfs/.bashrc && \\
echo "umask 022" >> /home/lfs/.bashrc && \\
echo "LFS=\$(MOUNT_PT)" >> /home/lfs/.bashrc && \\
echo "LC_ALL=POSIX" >> /home/lfs/.bashrc && \\
echo "PATH=/tools/bin:/bin:/usr/bin" >> /home/lfs/.bashrc && \\
echo "export LFS LC_ALL PATH" >> /home/lfs/.bashrc && \\
echo "source $JHALFSDIR/envars" >> /home/lfs/.bashrc && \\
chown lfs:lfs /home/lfs/.bashrc && \\
@echo "set +h" > /home/\$(LUSER)/.bashrc && \\
echo "umask 022" >> /home/\$(LUSER)/.bashrc && \\
echo "LFS=\$(MOUNT_PT)" >> /home/\$(LUSER)/.bashrc && \\
echo "LC_ALL=POSIX" >> /home/\$(LUSER)/.bashrc && \\
echo "PATH=/tools/bin:/bin:/usr/bin" >> /home/\$(LUSER)/.bashrc && \\
echo "export LFS LC_ALL PATH" >> /home/\$(LUSER)/.bashrc && \\
echo "source $JHALFSDIR/envars" >> /home/\$(LUSER)/.bashrc && \\
chown \$(LUSER):\$(LGROUP) /home/\$(LUSER)/.bashrc && \\
touch envars && \\
touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
@ -122,8 +122,8 @@ chapter5_Makefiles() {
# and date and disk usage again at the bottom of the log file.
# The changingowner script must be run as root.
case "${this_script}" in
*changingowner) wrt_run_as_root "${this_script}" "$file" ;;
*) wrt_run_as_su "${this_script}" "$file" ;;
*changingowner) wrt_RunAsRoot "${this_script}" "$file" ;;
*) wrt_RunAsUser "${this_script}" "$file" ;;
esac
# Remove the build directory(ies) except if the package build fails
@ -234,7 +234,7 @@ chapter6_Makefiles() {
# In the mount of kernel filesystems we need to set LFS
# and not to use chroot.
case "${this_script}" in
*kernfs) wrt_run_as_root "${this_script}" "$file" ;;
*kernfs) wrt_RunAsRoot "${this_script}" "$file" ;;
*) wrt_run_as_chroot1 "${this_script}" "$file" ;;
esac
@ -368,6 +368,8 @@ $HEADER
SRC= /sources
MOUNT_PT= $BUILDDIR
PKG_LST= $PKG_LST
LUSER= $LUSER
LGROUP= $LGROUP
include makefile-functions
@ -409,8 +411,8 @@ restart: restart_code all
clean-chapter4:
-if [ ! -f user-lfs-exist ]; then \\
userdel lfs; \\
rm -rf /home/lfs; \\
userdel \$(LUSER); \\
rm -rf /home/\$(LUSER); \\
fi;
rm -rf \$(MOUNT_PT)/tools
rm -f /tools
@ -438,13 +440,13 @@ clean-chapter789:
restore-lfs-env:
@\$(call echo_message, Building)
@if [ -f /home/lfs/.bashrc.XXX ]; then \\
mv -f /home/lfs/.bashrc.XXX /home/lfs/.bashrc; \\
@if [ -f /home/\$(LUSER)/.bashrc.XXX ]; then \\
mv -f /home/\$(LUSER)/.bashrc.XXX /home/\$(LUSER)/.bashrc; \\
fi;
@if [ -f /home/lfs/.bash_profile.XXX ]; then \\
mv /home/lfs/.bash_profile.XXX /home/lfs/.bash_profile; \\
@if [ -f /home/\$(LUSER)/.bash_profile.XXX ]; then \\
mv /home/\$(LUSER)/.bash_profile.XXX /home/\$(LUSER)/.bash_profile; \\
fi;
@chown lfs:lfs /home/lfs/.bash* && \\
@chown \$(LUSER):\$(LGROUP) /home/\$(LUSER)/.bash* && \\
touch \$@ && \\
echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
echo --------------------------------------------------------------------------------\$(WHITE)
@ -456,8 +458,8 @@ do_housekeeping:
@-umount \$(MOUNT_PT)/dev/pts
@-umount \$(MOUNT_PT)/dev
@-if [ ! -f user-lfs-exist ]; then \\
userdel lfs; \\
rm -rf /home/lfs; \\
userdel \$(LUSER); \\
rm -rf /home/\$(LUSER); \\
fi;
restart_code:

27
README
View file

@ -32,15 +32,21 @@ $Id$
::NEWS:: There is new configuration method for jhalfs.
We have installed the familiar menu based configuration tool driven by
make. If you type the command <make> you will be presented with a list of
configurable parameters (starting with the book you wish to use). All the
parameters found in the individual config files are available. Once you
have finished setting the parameters and exit the make file will launch
the chosen book version of jhalfs. JHALFS will import your created file
and overider the values found in normal "config" files.
make. If you type the command
make
you will be presented with a list of configurable parameters (starting
with the book you wish to use). All the parameters found in the individual
config files are available. Once you have finished setting the parameters
and exit the make file will launch the chosen book version of jhalfs.
JHALFS will import your created file and overider the values found in normal
"config" files.
..note.. The generated file <configuration> is only used by jhalfs if you
run jhalfs via make otherwise it is ignored.
If you want to try out the new configuration system without running jhalfs
issue the following.
make menuconfig
This will create a new file named configuration but will not launch jhalfs.
4. RUNNING::
The script master.sh cannot be invoked directly but only via the
@ -158,6 +164,7 @@ $Id$
Q. "It doesn't work!"
A. Yes it does, try ./lfs --help
Remember you must either be 'root' to run this script or have 'sudo' privileges.
Q. "It still doesn't work"
A. jhalfs was designed to work against the developement versions of the LFS
@ -200,6 +207,14 @@ $Id$
simple and reliable method of doing so. This method also handles the CLFS
build method where the final build may be done on a separate machine.
Q. "What is the function of LUSER and LGROUP? There is no cmd line switch"
A. If you are running jhalfs from a low or non-priveledged account you may not
have the priv to create/delete accounts. These variables are adjustable
when invoking make.
make LUSER=myaccount LGROUP=mygroup
Then only changes to your account will be the creation of a NEW .bashrc after
saving your original to .bashrc.XXX
Q. "When I try to build 'xxx' with clfs the makefile fails at the mid-point"
A. There could be numerous reasons for the failure but the most likely reason
is you are doing a cross-build using the 'chroot' method and the target is

View file

@ -253,8 +253,9 @@ get_package_tarball_name() { #
# hopefully this will not cause problems.
#
case $script_name in
tcl) echo $(grep "^tcl" $JHALFSDIR/pkg_tarball_list | head -n1 ) ;;
*) echo $(grep "^$script_name-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 ) ;;
tcl) echo $(grep "^tcl" $JHALFSDIR/pkg_tarball_list | head -n1 ) ;;
linux-headers) echo $(grep "^linux-headers.*.bz2" $JHALFSDIR/pkg_tarball_list | head -n1 ) ;;
*) echo $(grep "^$script_name-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 ) ;;
esac
}
@ -309,27 +310,7 @@ cat << EOF
@\$(call unpack,$FILE)
@ROOT=\`head -n1 \$(MOUNT_PT)\$(SRC)/\$(PKG_LST) | sed 's@^./@@;s@/.*@@'\` && \\
echo "export PKGDIR=\$(MOUNT_PT)\$(SRC)/\$\$ROOT" > envars && \\
chown -R lfs \$(MOUNT_PT)\$(SRC)/\$\$ROOT
EOF
) >> $MKFILE.tmp
}
#----------------------------------#
wrt_unpack_clfs() { # Unpack and set 'ROOT' var
#----------------------------------#
local FILE=$1
local optSAVE_PREVIOUS=$2
if [ "${optSAVE_PREVIOUS}" != "1" ]; then
wrt_remove_existing_dirs "$FILE"
fi
(
cat << EOF
@\$(call unpack,$FILE)
@ROOT=\`head -n1 \$(MOUNT_PT)\$(SRC)/\$(PKG_LST) | sed 's@^./@@;s@/.*@@'\` && \\
echo "export PKGDIR=\$(MOUNT_PT)\$(SRC)/\$\$ROOT" > envars && \\
chown -R clfs \$(MOUNT_PT)\$(SRC)/\$\$ROOT
chown -R \$(LUSER) \$(MOUNT_PT)\$(SRC)/\$\$ROOT
EOF
) >> $MKFILE.tmp
}
@ -379,7 +360,7 @@ wrt_test_log() { # Initialize testsuite log file
(
cat << EOF
@echo "export TEST_LOG=$TESTLOGDIR/$TESTLOGFILE" >> envars && \\
su - lfs -c "echo -e '\n\`date\`\n' >$TESTLOGDIR/$TESTLOGFILE"
su - \$(LUSER) -c "echo -e '\n\`date\`\n' >$TESTLOGDIR/$TESTLOGFILE"
EOF
) >> $MKFILE.tmp
}
@ -410,13 +391,13 @@ EOF
#----------------------------------#
wrt_run_as_su() { # Execute script inside time { }, footer to log file
wrt_RunAsUser() { # Execute script inside time { }, footer to log file
#----------------------------------#
local this_script=$1
local file=$2
(
cat << EOF
@( time { su - lfs -c "source /home/lfs/.bashrc && $JHALFSDIR/${PROGNAME}-commands/$file" >>logs/$this_script 2>&1 ; } ) 2>>logs/$this_script && \\
@( time { su - \$(LUSER) -c "source /home/\$(LUSER)/.bashrc && $JHALFSDIR/${PROGNAME}-commands/$file" >>logs/$this_script 2>&1 ; } ) 2>>logs/$this_script && \\
echo -e "\nKB: \`du -skx --exclude=${SCRIPT_ROOT} \$(MOUNT_PT)\`\n" >>logs/$this_script
EOF
) >> $MKFILE.tmp
@ -424,41 +405,24 @@ EOF
#----------------------------------#
wrt_run_as_root() { # Some scripts must be run as root..
wrt_RunAsRoot() { # Some scripts must be run as root..
#----------------------------------#
local ENV_MOUNT
local this_script=$1
local file=$2
case ${PROGNAME} in
lfs ) MOUNT_ENV="LFS" ;;
blfs ) MOUNT_ENV="BLFS" ;;
clfs ) MOUNT_ENV="CLFS" ;;
clfs2 ) MOUNT_ENV="CLFS" ;;
hlfs ) MOUNT_ENV="HLFS" ;;
*) echo "undefined progname $PROGNAME"; exit 1
esac
(
cat << EOF
@( time { export LFS=\$(MOUNT_PT) && ${PROGNAME}-commands/$file >>logs/$this_script 2>&1 ; } ) 2>>logs/$this_script && \\
echo -e "\nKB: \`du -skx --exclude=${SCRIPT_ROOT} \$(MOUNT_PT)\`\n" >>logs/$this_script
EOF
) >> $MKFILE.tmp
}
#----------------------------------#
wrt_run_as_clfs_su() { # Execute script inside time { }, footer to log file
#----------------------------------#
local this_script=$1
local file=$2
(
cat << EOF
@( time { su - clfs -c "source /home/clfs/.bashrc && $JHALFSDIR/${PROGNAME}-commands/$file" >>logs/$this_script 2>&1 ; } ) 2>>logs/$this_script && \\
echo -e "\nKB: \`du -skx --exclude=${SCRIPT_ROOT} \$(MOUNT_PT)\`\n" >>logs/$this_script
EOF
) >> $MKFILE.tmp
}
#----------------------------------#
wrt_run_as_clfs_root() { # Some scripts must be run as root..
#----------------------------------#
local this_script=$1
local file=$2
(
cat << EOF
@( time { export CLFS=\$(MOUNT_PT) && ${PROGNAME}-commands/$file >>logs/$this_script 2>&1 ; } ) 2>>logs/$this_script && \\
@( time { export ${MOUNT_ENV}=\$(MOUNT_PT) && ${PROGNAME}-commands/$file >>logs/$this_script 2>&1 ; } ) 2>>logs/$this_script && \\
echo -e "\nKB: \`du -skx --exclude=${SCRIPT_ROOT} \$(MOUNT_PT)\`\n" >>logs/$this_script
EOF
) >> $MKFILE.tmp
@ -479,7 +443,6 @@ EOF
}
#----------------------------------#
wrt_run_as_chroot1() { #
#----------------------------------#
@ -538,9 +501,9 @@ wrt_remove_build_dirs() { #
(
cat << EOF
@ROOT=\`head -n1 \$(MOUNT_PT)\$(SRC)/\$(PKG_LST) | sed 's@^./@@;s@/.*@@'\` && \\
rm -r \$(MOUNT_PT)\$(SRC)/\$\$ROOT && \\
rm -rf \$(MOUNT_PT)\$(SRC)/\$\$ROOT && \\
if [ -e \$(MOUNT_PT)\$(SRC)/$name-build ]; then \\
rm -r \$(MOUNT_PT)\$(SRC)/$name-build; \\
rm -rf \$(MOUNT_PT)\$(SRC)/$name-build; \\
fi;
EOF
) >> $MKFILE.tmp
@ -554,9 +517,9 @@ wrt_remove_build_dirs2() { #
(
cat << EOF
@ROOT=\`head -n1 \$(SRC)/\$(PKG_LST) | sed 's@^./@@;s@/.*@@'\` && \\
rm -r \$(SRC)/\$\$ROOT && \\
rm -rf \$(SRC)/\$\$ROOT && \\
if [ -e \$(SRC)/$name-build ]; then \\
rm -r \$(SRC)/$name-build; \\
rm -rf \$(SRC)/$name-build; \\
fi;
EOF
) >> $MKFILE.tmp

View file

@ -86,10 +86,10 @@ validate_config() { # Are the config values sane (within reason)
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 OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL KEYMAP PAGE TIMEZONE LANG LC_ALL"
local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE METHOD ARCH TARGET TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG"
local -r clfs2_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE ARCH TARGET OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG"
local -r lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL VIMLANG PAGE TIMEZONE LANG"
local -r hlfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE MODEL GRSECURITY_HOST TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL KEYMAP PAGE TIMEZONE LANG LC_ALL LUSER LGROUP"
local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE METHOD ARCH TARGET TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB BOOT_CONFIG CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG LUSER LGROUP"
local -r clfs2_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE ARCH TARGET OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG LUSER LGROUP"
local -r lfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE TEST OPTIMIZE REPORT COMPARE RUN_ICA RUN_FARCE ITERATIONS STRIP FSTAB CONFIG GETKERNEL VIMLANG PAGE TIMEZONE LANG LUSER LGROUP"
local -r ERROR_MSG_pt1='The variable \"${L_arrow}${config_param}${R_arrow}\" value ${L_arrow}${BOLD}${!config_param}${R_arrow} is invalid,'
local -r ERROR_MSG_pt2=' check the config file ${BOLD}${GREEN}\<$(echo $PROGNAME | tr [a-z] [A-Z])/config\> or \<common/config\>${OFF}'
@ -213,6 +213,12 @@ inline_doc
METHOD) validate_against_str "xchrootx xbootx" ;;
ARCH) validate_against_str "xx86x xx86_64x xx86_64-64x xsparcx xsparc64x xsparc64-64x xmipsx xmips64x xmips64-64x xppcx xppc64x xalphax xarmx" ;;
TARGET) validate_target ;;
LUSER) echo -e "`eval echo $PARAM_VALS`"
[[ "${!config_param}" = "**EDIT ME**" ]] && write_error_and_die
;;
LGROUP) echo -e "`eval echo $PARAM_VALS`"
[[ "${!config_param}" = "**EDIT ME**" ]] && write_error_and_die
;;
GRSECURITY_HOST) validate_against_str "x0x x1x" ;;
# BOOK validation. Very ugly, need be fixed

View file

@ -70,6 +70,8 @@ source $MODULE
if [[ -e using_menuconfig ]]; then
source configuration
#--- Working directories
SCRIPT_ROOT=jhalfs
JHALFSDIR=$BUILDDIR/$SCRIPT_ROOT