Merged r2954:3058 from experimental.

This commit is contained in:
Manuel Canales Esparcia 2006-08-24 20:38:22 +00:00
parent 7bf2fdd68f
commit f4ed135b17
18 changed files with 950 additions and 302 deletions

38
BLFS/Makefile Normal file
View file

@ -0,0 +1,38 @@
# From the Build Scripts Written By: Jim Gifford <lfs@jg555.com>
# Modified By: Joe Ciccone <jciccone@linuxfromscratch.org
# Additional changes: George Boudreau <georgeb@linuxfromscratch.org>
# $Id$
TOPDIR=$(shell pwd)
CONFIG_CONFIG_IN = Config.in
CONFIG = menu
all: menuconfig
$(CONFIG)/conf:
$(MAKE) -C $(CONFIG) conf
$(CONFIG)/mconf:
$(MAKE) -C $(CONFIG) ncurses conf mconf
menuconfig: $(CONFIG)/mconf
@./update_book.sh none
@./gen_config.sh
@$(CONFIG)/mconf $(CONFIG_CONFIG_IN)
@./gen_pkg_book.sh
config: $(CONFIG)/conf
@$(CONFIG)/conf $(CONFIG_CONFIG_IN)
# Clean up
clean:
rm -f configuration configuration.old error
- $(MAKE) -C $(CONFIG) clean
clean-target:
rm -f error
- $(MAKE) -C $(CONFIG) clean
.PHONY: all menuconfig config clean clean-target

View file

@ -5,24 +5,15 @@
# $Id$
#####
For now the code is able to do the first step for the new approach: to create
LFS-like books from BLFS sources, allowing to create linear build scrips and
Makefiles similars to the current ones for {C,H}LFS.
What remains to do:
-- Review generated scripts for bugs trying to figure out if are due fails
in the BLFS book XML tagging (that will implied that the book need be
fixed) or are required variations due book layout. If the latter, try
to fix it via XSL, documenting in README.BLFS that issues that can't be
fixed.
-- To review the XSL code needed to create the build scripts.
A lot of book-versus-scripts and testing is needed.
We need yet to figure out if we can to to handle Perl modules installation
and other pages that have commands to install more that one package
(e.g., Gnat in GCC Java-bin in Java, sane-backends and sane-frontends
in Sane, etc) or not-estandart installations, like Xorg7
-- Test the method used to track already installed packages by previous runs.
See if the packages version can be watched also.
-- Integrate the menuconfig based package selection, trying to make use of the
installed packages traking system.
This is an on-going and never-end task due that, ideally, each commit to
the BLFS book should be revised and validated, but our time is limited.
-- Bugs hunting.

View file

@ -1,27 +0,0 @@
#####
#
# Configuration file for the BLFS module
#
# $Id$
#
# Set default package for alternatives when resolving dependencies
#
#####
# Print server cups/LPRng
PRINT_SERVER=cups
# Mail server sendmail/postfix/exim
MAIL_SERVER=sendmail
# GhostScript gs/espgs
GHOSTSCRIPT=espgs
# Kerberos 5 mitkrb/heimdal
KBR5=heimdal
# X11 implementation xorg7/xorg/xfree86
X11=xorg7

View file

@ -1,119 +0,0 @@
#!/bin/bash
#
# $Id$
#
set -e
declare TARGET
declare DEP_LEVEL
declare PKGXML
declare BLFS_XML
declare VERBOSITY=1
# Grab and name the command line options
optTARGET=$1 # Package target
optDEPENDENCY=$2 # Dependencies level, 1/2/3
SUDO=$3 # Build as user (y) or as root (n)
[[ -z $SUDO ]] && SUDO=y
#---------------------
# Constants
source libs/constants.inc
[[ $? > 0 ]] && echo -e "\n\tERROR: constants.inc did not load..\n" && exit
#---------------------
# Configuration file for alternatives
source alternatives.conf
[[ $? > 0 ]] && echo -e "\n\tERROR: alternatives.conf did not load..\n" && exit
#---------------------
# Dependencies module
source libs/func_dependencies
[[ $? > 0 ]] && echo -e "\n\tERROR: func_dependencies did not load..\n" && exit
#---------------------
# parser module
source libs/func_parser
[[ $? > 0 ]] && echo -e "\n\tERROR: func_parser did not load..\n" && exit
#-------------------------#
validate_target() { # ID of target package (as listed in packages file)
#-------------------------#
: <<inline_doc
function: Validate the TARGET parameter.
input vars: $1, package/target to validate
externals: file: packages
modifies: TARGET
returns: nothing
output: nothing
on error: exit
on success: modifies TARGET
inline_doc
if [[ -z "$1" ]] ; then
echo -e "\n\tYou must to provide a package ID."
echo -e "\tSee packages file for a list of available targets.\n"
exit 1
fi
if ! grep "^$1[[:space:]]" packages > /dev/null ; then
echo -e "\n\t$1 is not a valid package ID."
echo -e "\tSee packages file for a list of available targets.\n"
exit 1
fi
TARGET=$1
echo -e "\n\tUsing $TARGET as the target package."
}
#-------------------------#
validate_dependency() { # Dependencies level 1(required)/2(1 + recommended)/3(2+ optional)
#-------------------------#
: <<inline_doc
function: Validate the dependency level requested.
input vars: $1, requested dependency level
externals: vars: TARGET
modifies: vars: DEP_LEVEL
returns: nothing
output: nothing
on error: nothing
on success: modifies DEP_LEVEL, default value = 2
inline_doc
if [[ -z "$1" ]] ; then
DEP_LEVEL=2
echo -e "\n\tNo dependencies level has been defined."
echo -e "\tAssuming level $DEP_LEVEL (Required plus Recommended).\n"
return
fi
case $1 in
1 | 2 | 3 )
DEP_LEVEL=$1
echo -e "\n\tUsing $DEP_LEVEL as dependencies level.\n"
;;
* )
DEP_LEVEL=2
echo -e "\n\t$1 is not a valid dependencies level."
echo -e "\tAssuming level $DEP_LEVEL (Required plus Recommended).\n"
;;
esac
}
#------- MAIN --------
if [[ ! -f packages ]] ; then
echo -e "\tNo packages file has been found.\n"
echo -e "\tExecution aborted.\n"
exit 1
fi
validate_target "${optTARGET}"
validate_dependency "${optDEPENDENCY}"
generate_dependency_tree
generate_TARGET_xml
generate_target_book
create_build_scripts "${SUDO}"

View file

@ -4,13 +4,11 @@
#
set -e
# TEMPORARY VARIABLES.. development use only
declare MKFILE=Makefile
declare PREV_PACKAGE=""
declare BUILD_SCRIPTS=scripts
declare TRACKING_DIR=/var/lib/jhalfs/BLFS
declare TRACKING_DIR=tracking-dir
HEADER="# This file is automatically generated by jhalfs
# YOU MAY NEED TO EDIT THIS FILE MANUALLY
@ -50,10 +48,45 @@ __wrt_touch() { #
#----------------------------------#
local pkg_name=$1
local pkg_ver=$2
local alsa_ver=$(grep "^alsa[[:space:]]" ../packages | cut -f3)
local kde_core_ver=$(grep "^kde-core[[:space:]]" ../packages | cut -f3)
local xorg7_ver=$(grep "^xorg7[[:space:]]" ../packages | cut -f3)
if [[ -n "$pkg_ver" ]] ; then
(
cat << EOF
@touch \$(TRACKING_DIR)/${pkg_name#*-?-}-${pkg_ver}
EOF
) >> $MKFILE.tmp
fi
case $pkg_name in
*-alsa-lib ) #this the unique mandatory package for ALSA support.
(
cat << EOF
@touch \$(TRACKING_DIR)/alsa-${alsa_ver}
EOF
) >> $MKFILE.tmp
;;
*-kdebase )
(
cat << EOF
@touch \$(TRACKING_DIR)/kde-core-${kde_core_ver}
EOF
) >> $MKFILE.tmp
;;
*-xorg7-driver ) # xtrerm2 and rman are optional
(
cat << EOF
@touch \$(TRACKING_DIR)/xorg7-${xorg7_ver}
EOF
) >> $MKFILE.tmp
;;
esac
(
cat << EOF
@touch \$@ && \\
touch \$(TRACKING_DIR)/${pkg_name#*-?-}-${pkg_ver} && \\
sleep .25 && \\
echo -e "\n\n "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
echo --------------------------------------------------------------------------------\$(WHITE)
@ -89,6 +122,47 @@ __write_entry() { #
echo " .. OK"
}
#----------------------------#
__write_meta_pkg_touch() { #
#----------------------------#
local meta_pkg=$1
local pkg_ver=$(grep "^${meta_pkg}[[:space:]]" ../packages | cut -f3)
local gnome_core_ver=$(grep "^gnome-core[[:space:]]" ../packages | cut -f3)
local kde_full_ver=$(grep "^kde-full[[:space:]]" ../packages | cut -f3)
(
cat << EOF
999-z-$meta_pkg: $PREV_PACKAGE
@touch \$(TRACKING_DIR)/${meta_pkg}-${pkg_ver}
EOF
) >> $MKFILE.tmp
case $meta_pkg in
gnome-full )
(
cat << EOF
@touch \$(TRACKING_DIR)/gnome-core-${gnome_core_ver}
EOF
) >> $MKFILE.tmp
;;
kde-koffice )
(
cat << EOF
@touch \$(TRACKING_DIR)/kde-full-${kde_full_ver}
EOF
) >> $MKFILE.tmp
;;
esac
(
cat << EOF
@touch \$@
EOF
) >> $MKFILE.tmp
}
#----------------------------#
generate_Makefile () { #
#----------------------------#
@ -103,16 +177,25 @@ generate_Makefile () { #
for package_script in scripts/* ; do
this_script=`basename $package_script`
script_ver=$(xmllint --noent ../blfs-xml/book/bookinfo.xml 2>/dev/null | \
grep -i " ${this_script#*-?-}-version " | \
cut -d "\"" -f2 )
if [ ! -e $TRACKING_DIR/${this_script#*-?-}-$script_ver ]; then
pkg_ver=$(grep "^${this_script#*-?-}[[:space:]]" ../packages | cut -f3)
pkg_list="$pkg_list ${this_script}"
__write_entry "${this_script}" "${script_ver}"
__write_entry "${this_script}" "${pkg_ver}"
PREV_PACKAGE=${this_script}
fi
done
PACKAGE=$(basename $PWD)
# alsa, kde-core and xorg7 are also available dependencies, thus handled
# in another way.
case $PACKAGE in
gnome-core | \
gnome-full | \
kde-full | \
kde-koffice ) pkg_list="$pkg_list 999-z-${PACKAGE}"
__write_meta_pkg_touch "${PACKAGE}"
;;
esac
# Add a header, some variables and include the function file
# to the top of the real Makefile.
@ -120,7 +203,7 @@ generate_Makefile () { #
cat << EOF
$HEADER
PACKAGE= "`basename $PWD`"
PACKAGE= $PACKAGE
TRACKING_DIR= $TRACKING_DIR
BOLD= ""

268
BLFS/gen_config.sh Executable file
View file

@ -0,0 +1,268 @@
#!/bin/bash
#
# $Id$
#
export outFile=Config.in # file for reading and writing to.
export inFile=packages # file for reading and writing to.
declare PKG_NAME
declare PKG_XML_FILE
declare PKG_DIR
declare PKG_VER
declare INST_VER
declare INST_STRING
declare SAVE_IFS=${IFS}
declare -a DIR_TREE
declare PREV_DIR1="none"
declare PREV_DIR2="none"
declare MENU_SET1="n"
declare MENU_SET2="n"
> $outFile
#---------------------#
# MAIN #
#---------------------#
: <<enddoc
This script will create a Config.in file from the contents
of the file <packages>.
Packages previously installed will not be included.
enddoc
echo -en "\tGenerating Config.in from package data ..."
while [ 0 ]
do
# read -r || break 1
read || break 1
set -- $REPLY
PKG_NAME=$1
PKG_XML_FILE=$(basename $2)
PKG_DIR=$(dirname $2)
PKG_VER=$3
INST_VER=$4
# These are the META packages.
if [ $PKG_DIR = "." ]; then
SET_COMMENT=y
# Do not include previously installed packages
if [ -n "${PKG_VER}" ] && [ "x${PKG_VER}" = "x${INST_VER}" ]; then
continue
fi
# Set installed version for updated meta-packages
[ -n "${INST_VER}" ] && INST_STRING="[installed ${INST_VER}]"
META_PKG=$(echo ${PKG_NAME} | tr [a-z] [A-Z])
(
cat << EOF
config CONFIG_$META_PKG
bool "$META_PKG $PKG_VER $INST_STRING"
default n
menu "$(echo ${PKG_NAME} | tr [a-z] [A-Z]) components"
depends CONFIG_$META_PKG
EOF
) >> $outFile
unset INST_STRING
# Include the dependency data for this meta package
while [ 0 ]; do
read || break 1
PKG_NAME=${REPLY}
PKG_VER=$(grep "^${PKG_NAME}[[:space:]]" $inFile | cut -f3)
INST_VER=$(grep "^${PKG_NAME}[[:space:]]" $inFile | cut -f4)
# Skip installed meta-package components
if [ -n "${PKG_VER}" ] && [ "x${PKG_VER}" = "x${INST_VER}" ]; then
continue
fi
# Set installed version for updated meta-packages components
[ -n "${INST_VER}" ] && INST_STRING="[installed ${INST_VER}]"
(
cat << EOF
config DEP_${META_PKG}_${PKG_NAME}
bool "$PKG_NAME ${PKG_VER} ${INST_STRING}"
default y
EOF
) >> $outFile
unset INST_STRING
done <./libs/${PKG_NAME}.dep
echo -e "endmenu" >> $outFile
continue
fi
[[ "${SET_COMMENT}" = "y" ]] && echo "comment \"\"" >>$outFile; unset SET_COMMENT
# Deal with a few unusable (at target level) package names
case ${PKG_NAME} in
xorg7-* ) continue ;;
alsa-* ) continue ;;
x-config | x-setup ) continue ;;
esac
# Skip installed packages
if [ -n "${PKG_VER}" ] && [ "x${PKG_VER}" = "x${INST_VER}" ]; then
continue
fi
# Set installed version for updated packages
[ -n "${INST_VER}" ] && INST_STRING="[installed ${INST_VER}]"
IFS="/"
DIR_TREE=(${PKG_DIR})
IFS="$SAVE_IFS"
# Define a top level menu
if [ "$PREV_DIR1" != "${DIR_TREE[1]}" ]; then
[[ "${DIR_TREE[1]}" = "kde" ]] && continue
[[ "${DIR_TREE[1]}" = "gnome" ]] && continue
if [ $MENU_SET1 = "y" ]; then
# Close out any open secondary menu
if [ $MENU_SET2 = "y" ]; then
echo -e "\tendmenu" >> $outFile
# Reset 'menu open' flag
MENU_SET2="n"
fi
# Close the current top level menu
echo -e "endmenu\n" >> $outFile
fi
# Open a new top level menu
echo -e "menu "$(echo ${DIR_TREE[1]:0:1} | tr [a-z] [A-Z])${DIR_TREE[1]:1}"" >> $outFile
MENU_SET1="y"
fi
# Define a secondary menu
if [ "$PREV_DIR2" != "${DIR_TREE[2]}" ]; then
# Close out the previous open menu structure
if [ $MENU_SET2 = "y" ]; then
echo -e "\tendmenu\n" >> $outFile
fi
# Initialize a new 2nd level menu structure.
echo -e "\tmenu "$(echo ${DIR_TREE[2]:0:1} | tr [a-z] [A-Z])${DIR_TREE[2]:1}"" >> $outFile
MENU_SET2="y"
fi
(
cat << EOF
config CONFIG_$PKG_NAME
bool "$PKG_NAME ${PKG_VER} ${INST_STRING}"
default n
EOF
) >> $outFile
unset INST_STRING
PREV_DIR1=${DIR_TREE[1]}
PREV_DIR2=${DIR_TREE[2]}
done <"$inFile"
if [ $MENU_SET2 = "y" ]; then echo -e "\tendmenu" >> $outFile; fi
if [ $MENU_SET1 = "y" ]; then echo "endmenu" >> $outFile; fi
(
cat << EOF
comment ""
menu "Default packages for resolving dependencies"
choice
prompt "Default print server"
config PS_cups
bool "cups"
config PS_LPRng
bool "LPRng"
endchoice
config PRINT_SERVER
string
default cups if PS_cups
default LPRng if PS_LPRng
choice
prompt "Mail server"
config MS_sendmail
bool "sendmail"
config MS_postfix
bool "postfix"
config MS_exim
bool "exim"
endchoice
config MAIL_SERVER
string
default sendmail if MS_sendmail
default postfix if MS_postfix
default exim if MS_exim
choice
prompt "Postscript package"
config GS_espgs
bool "espgs"
config GS_ghostscript
bool "ghostscript"
endchoice
config GHOSTSCRIPT
string
default espgs if GS_espgs
default ghostscript if GS_ghostscript
choice
prompt "Kerberos 5"
config KER_mitkrb
bool "mitkrb"
config KER_heimdal
bool "heimdal"
endchoice
config KBR5
string
default heimdal if KER_heimdal
default mitkrb if KER_mitkrb
choice
prompt "Window package"
config WIN_xorg7
bool "Xorg7"
config WIN_xorg
bool "Xorg"
config WIN_xfree86
bool "xfree86"
endchoice
config X11
string
default xorg7 if WIN_xorg7
default xorg if WIN_xorg
default xfree86 if WIN_xfree86
endmenu
choice
prompt "Dependency level"
default DEPLVL_2
config DEPLVL_1
bool "Required dependencies only"
config DEPLVL_2
bool "Required and recommended dependencies"
config DEPLVL_3
bool "Required, recommended and optional dependencies"
endchoice
config optDependency
int
default 1 if DEPLVL_1
default 2 if DEPLVL_2
default 3 if DEPLVL_3
config SUDO
bool "Build as User"
default y
help
Select if sudo will be used (you want build as a normal user)
otherwise sudo is not needed (you want build as root)
EOF
) >> $outFile
echo "done"

178
BLFS/gen_pkg_book.sh Executable file
View file

@ -0,0 +1,178 @@
#!/bin/bash
#
# $Id$
#
# Read and parse the configuration parameters..
#
set -e
declare -r ConfigFile="configuration"
declare TARGET
declare DEP_LEVEL
declare SUDO
declare PKGXML
declare BLFS_XML
declare VERBOSITY=1
#--------------------------#
parse_configuration() { #
#--------------------------#
local cntr
local optTARGET
while [ 0 ]; do
read || break 1
# Garbage collection
case ${REPLY} in
\#* | '') continue ;;
esac
case "${REPLY}" in
CONFIG_ALSA=* | \
CONFIG_GNOME-CORE=* | \
CONFIG_GNOME-FULL=* | \
CONFIG_KDE-CORE=* | \
CONFIG_KDE-FULL=* | \
CONFIG_KDE-KOFFICE=* | \
CONFIG_XORG7=* ) REPLY=${REPLY%=*} # Strip the trailing '=y' test.. unecessary
echo -n "${REPLY}"
if [[ $((++cntr)) > 1 ]]; then
echo " <<-- ERROR:: SELECT ONLY 1 PACKAGE AT A TIME, META-PACKAGE NOT SELECTED"
else
echo ""
optTARGET=$(echo $REPLY | cut -d "_" -f2 | tr [A-Z] [a-z])
fi
continue ;;
# Create global variables for these parameters.
optDependency=* | \
PRINT_SERVER=* | \
MAIL_SERVER=* | \
GHOSTSCRIPT=* | \
KBR5=* | \
X11=* | \
SUDO=* ) eval ${REPLY} # Define/set a global variable..
continue ;;
esac
if [[ "${REPLY}" =~ "^CONFIG_" ]]; then
echo -n "$REPLY"
if [[ $((++cntr)) > 1 ]]; then
echo " <<-- ERROR SELECT ONLY 1 PACKAGE AT A TIME, WILL NOT BUILD"
else
echo ""
optTARGET=$( echo $REPLY | sed -e 's@CONFIG_@@' -e 's@=y@@' )
fi
fi
done <$ConfigFile
if [[ $optTARGET = "" ]]; then
echo -e "\n>>> NO TARGET SELECTED.. applicaton terminated"
echo -e " Run <make> again and select a package to build\n"
exit 0
fi
TARGET=$optTARGET
DEP_LEVEL=$optDependency
SUDO=${SUDO:-n}
}
#--------------------------#
validate_configuration() { #
#--------------------------#
local -r dotSTR=".................."
local -r PARAM_LIST="TARGET DEP_LEVEL SUDO PRINT_SERVER MAIL_SERVER GHOSTSCRIPT KBR5 X11"
local -r PARAM_VALS='${config_param}${dotSTR:${#config_param}} ${L_arrow}${BOLD}${!config_param}${OFF}${R_arrow}'
local config_param
for config_param in ${PARAM_LIST}; do
echo -e "`eval echo $PARAM_VALS`"
done
}
#
# Regenerate the META-package dependencies from the configuration file
#
#--------------------------#
regenerate_deps() { #
#--------------------------#
rm -f libs/*.dep-MOD
while [ 0 ]; do
read || break 1
case ${REPLY} in
\#* | '') continue ;;
esac
# Drop the "=y"
REPLY=${REPLY%=*}
if [[ "${REPLY}" =~ "^DEP_" ]]; then
META_PACKAGE=$(echo $REPLY | cut -d "_" -f2 | tr [A-Z] [a-z])
DEP_FNAME=$(echo $REPLY | cut -d "_" -f3)
echo "${DEP_FNAME}" >>libs/${META_PACKAGE}.dep-MOD
fi
done <$ConfigFile
#
# Replace to 'old' dependency file with a new one.
#
for dst in `ls ./libs/*.dep-MOD 2>/dev/null`; do
cp -vf $dst ${dst%-MOD}
done
}
#
# Clean configuration file keeping only global default settings.
# That prevent "trying to assign nonexistent symbol" messages
# and assures that there is no TARGET selected from a previous run
#
#--------------------------#
clean_configuration() { #
#--------------------------#
tail -n 30 configuration > configuration.tmp
mv configuration.tmp configuration
}
#---------------------
# Constants
source libs/constants.inc
[[ $? > 0 ]] && echo -e "\n\tERROR: constants.inc did not load..\n" && exit
#---------------------
# Dependencies module
source libs/func_dependencies
[[ $? > 0 ]] && echo -e "\n\tERROR: func_dependencies did not load..\n" && exit
#---------------------
# parser module
source libs/func_parser
[[ $? > 0 ]] && echo -e "\n\tERROR: func_parser did not load..\n" && exit
#------- MAIN --------
if [[ ! -f packages ]] ; then
echo -e "\tNo packages file has been found.\n"
echo -e "\tExecution aborted.\n"
exit 1
fi
parse_configuration
validate_configuration
echo "${SD_BORDER}${nl_}"
echo -n "Are you happy with these settings? yes/no (no): "
read ANSWER
if [ x$ANSWER != "xyes" ] ; then
echo "${nl_}Rerun make and fix your settings.${nl_}"
exit 1
fi
echo "${nl_}${SD_BORDER}${nl_}"
regenerate_deps
generate_dependency_tree
generate_TARGET_xml
generate_target_book
create_build_scripts "${SUDO}"
clean_configuration

View file

@ -2,7 +2,7 @@
#
# common constants
#
# $Id:
# $Id$
#####

View file

@ -46,8 +46,6 @@ inline_doc
#---------------------
# The BLFS sources directory.
# Note: for book.xsl this value must be set via a sed in ./blfs.
# For consistency, we should to do the same here.
BLFS_XML=`echo $PKGXML | sed -e 's,/.*,,'`
if [[ ! -d ../$BLFS_XML ]] ; then
@ -73,10 +71,8 @@ inline_doc
alsa-lib | cracklib | libexif | unixodbc ) ;;
# Meta-packages at target level
# KDE and Gnome-{core,full} could be made via packages.sh, but not sure yet how.
alsa )
echo -e "alsa-oss\nalsa-firmware\nalsa-tools\nalsa-utils\n \
alsa-plugins\nalsa-lib" > dependencies/alsa.dep
cp ../libs/alsa.dep dependencies/
;;
gnome-core )
cp ../libs/gnome-core.dep dependencies/
@ -91,13 +87,10 @@ inline_doc
cp ../libs/kde-{core,full}.dep dependencies/
;;
kde-koffice )
cp ../libs/kde-{core,full}.dep dependencies/
echo -e "koffice\nkde-full\nkde-core" > dependencies/kde-koffice.dep
cp ../libs/kde-{core,full,koffice}.dep dependencies/
;;
xorg7 ) # At atarget level, add also x-config and x-setup
echo -e "x-config\nx-setup\nrman\nxterm2\nxorg7-driver\nxorg7-server\nluit\n \
xorg7-font\nxorg7-data\nxorg7-app\nxbitmaps\nmesalib\nlibdrm\n \
xorg7-lib\nxorg7-util\nxorg7-proto" > dependencies/xorg7.dep
xorg7 )
cp ../libs/xorg7.dep dependencies/
;;
* ) # Default
xsltproc --stringparam dependencies $DEP_LEVEL \
@ -114,7 +107,7 @@ inline_doc
# Write the XInclude
case $TARGET in
# If there is no usefull XML page, skip it.
alsa | gnome-core | gnome-full | kde-core | kde-full | kde-koffice ) ;;
alsa | gnome-core | gnome-full | kde-core | kde-full | kde-koffice | xorg7) ;;
* )
echo -e " $ENTRY_START$PKGXML$ENTRY_END" >> $TARGET-index.xml.tmp
;;
@ -160,7 +153,7 @@ inline_doc
local PKG=$1
local saveIFS=$IFS
local DEP_LV=$DEP_LEVEL
local line line2 DEP
local line line2 DEP pkg_ver inst_ver
#------------------
# If a premade xinclude file exists, use it. If not, create one
@ -184,7 +177,8 @@ inline_doc
# Start with a clean $PKG.xinc.tmp file
> xincludes/$PKG.xinc.tmp
for DEP in `cat dependencies/$PKG.dep`; do
# Special packages (a lot of hacks)
# Special packages that need be remaped
case $DEP in
db ) continue ;; # The proper version of DB is installed in LFS
@ -197,17 +191,27 @@ inline_doc
arts ) DEP=aRts ;;
kde ) DEP=kde-core ;;
# Dummy gnome-core pages
GNOME-desktop-file-utils ) DEP=desktop-file-utils ;;
GNOME-shared-mime-info ) DEP=shared-mime-info ;;
# Set values for alternative packages
# X is a meta-package, thus handled in another way.
LPRng | cups ) DEP=$PRINT_SERVER ;;
mitkrb | heimdal ) DEP=$KBR5 ;;
gs | espgs ) DEP=$GHOSTSCRIPT ;;
server-mail ) DEP=$MAIL_SERVER ;;
x-window-system )
case $X11 in
xorg7 ) DEP=xorg7 ;;
* )
pkg_ver=$(grep "^${X11}[[:space:]]" ../packages | cut -f3)
inst_ver=$(grep "^${X11}[[:space:]]" ../packages | cut -f4)
[ -n "${pkg_ver}" ] && [ "x${pkg_ver}" = "x${inst_ver}" ] && continue
;;
esac
;;
esac
# If DEP has been previouly installed, skip it
pkg_ver=$(grep "^${DEP}[[:space:]]" ../packages | cut -f3)
inst_ver=$(grep "^${DEP}[[:space:]]" ../packages | cut -f4)
[ -n "${pkg_ver}" ] && [ "x${pkg_ver}" = "x${inst_ver}" ] && continue
#------------------
# Prevent circular dependencies
@ -271,21 +275,18 @@ inline_doc
case $DEP in
# Skip the creation when all dependencies are circular.
alsa-lib | cracklib | libexif | unixodbc ) ;;
# Meta-packages at dependency level (ugly *.dep files, but work for now)
alsa ) # When dependency "alsa", use all alsa-* packages
echo -e "alsa-oss\nalsa-firmware\nalsa-tools\nalsa-utils\n \
alsa-plugins\nalsa-lib" > dependencies/alsa.dep
# Meta-packages at dependency level
alsa )
cp ../libs/alsa.dep dependencies/
;;
kde-core )
cp ../libs/kde-core.dep dependencies/
;;
x-window-system ) # X11 alternatives
x-window-system ) # When X11 is not Xorg7
echo -e "x-config\nx-setup\n$X11" > dependencies/x-window-system.dep
;;
xorg7 )
echo -e "rman\nxterm2\nxorg7-driver\nxorg7-server\nluit\nxorg7-font\n \
xorg7-data\nxorg7-app\nxbitmaps\nmesalib\nlibdrm\n \
xorg7-lib\nxorg7-util\nxorg7-proto" > dependencies/xorg7.dep
cp ../libs/xorg7.dep dependencies/
;;
* ) xsltproc --stringparam dependencies $DEP_LV \
-o dependencies/$DEP.dep ../libs/dependencies.xsl ../$DEP_XML
@ -337,7 +338,7 @@ inline_doc
#------------------
if [[ "$PKG" = "xorg7" ]] ; then
# Add their XInclude
PKG_XML=`grep "^$PKG[[:space:]]" ../packages | cut -f2`
PKG_XML=${BLFS_XML}/x/installing/xorg7.xml
echo -e " $ENTRY_START$PKG_XML$ENTRY_END" >> xincludes/$PKG.xinc.tmp
fi

View file

@ -4,49 +4,105 @@
#
set -e
#-----------------------#
get_pkg_ver() { # Find package version for a given package ID
#-----------------------#
local pkg_id=$1
case ${pkg_id} in
# ALSA packages version
alsa* ) pkg_id=alsa ;;
# KDE packages version
kdevelop ) : ;;
kde*config ) : ;;
kde* ) pkg_id=kde ;;
# Xorg7 packages version
xorg7-server ) pkg_id=xorg-server ;;
xterm2 ) pkg_id=xterm ;;
xorg7* ) pkg_id=xorg7 ;;
# Others (ID value don't match entity name)
wireless_tools ) pkg_id=wireless-tools ;;
bind-utils ) pkg_id=bind ;;
html-tidy ) pkg_id=tidy ;;
jdk ) pkg_id=jdk-src ;;
reiserfs ) pkg_id=reiser ;;
xfs ) pkg_id=xfsprogs ;;
esac
xmllint --noent ./${BLFS_XML}/book/bookinfo.xml 2>/dev/null | \
grep -i " ${pkg_id}-version " | cut -d "\"" -f2
}
#-----------------------#
get_installed_ver() { # Find installed package version for a given package ID
#-----------------------#
local pkg_id=$1
find $TRACKING_DIR -name "${pkg_id}-[[:digit:]]*" | sed "s/.*${pkg_id}-//"
}
#-----------------------#
generate_packages() { # Master packages file
#-----------------------#
local pkg_id file
local pkg_id file pkg_ver
local ALSA_VER GNOME_VER GNOME_MINOR_VER KDE_VER KDE_KOFFICE_VER XORG7_VER
> packages.tmp
# Extract Id and path for sect1 files
for file in `find $BLFS_XML -name "*.xml"` ; do
pkg_id=`grep "sect1 id" $file | sed -e 's/<sect1 id="//;s/".*//'`
[[ ! -z "$pkg_id" ]] && echo -e "$pkg_id\t$file" >> packages.tmp
pkg_id=$(grep "sect1 id" $file | sed -e 's/<sect1 id="//;s/".*//')
pkg_ver=$(get_pkg_ver $pkg_id)
installed_ver=$(get_installed_ver $pkg_id)
[[ ! -z "$pkg_id" ]] && echo -e "$pkg_id\t$file\t$pkg_ver\t$installed_ver" >> packages.tmp
done
# IDs clean-up (unuseful pages or commented-out packages, could be more)
sed -i '/template/d;/ntroduction/d;/preface/d' packages.tmp
sed -i '/courier.xml/d' packages.tmp
sed -i '/nautilus-media.xml/d;/gal.xml/d;/gpdf.xml/d;/gv.xml/d' packages.tmp
sed -i '/template/d;/ntroduction/d;/preface/d;/alsa.xml/d' packages.tmp
sed -i '/obsolete/d;/postlfs-/d;/-client.xml/d;/xorg7.xml/d' packages.tmp
sed -i '/courier.xml/d;/-other\t/d;/others-/d;/other-/d' packages.tmp
sed -i '/fw-firewall\t/d;/gcc2\t/d;/cvsserver\t/d;/svnserver\t/d' packages.tmp
sed -i '/fam\t/d;/libungif\t/d;/ncpfs\t/d;/slrn\t/d;/konq\t/d' packages.tmp
sed -i '/gst-plugins\t/d;/openquicktime\t/d;/compressdoc\t/d' packages.tmp
# Meta-packages version
ALSA_VER=$(get_pkg_ver alsa)
GNOME_VER=$(get_pkg_ver gnome)
GNOME_MINOR_VER=$(get_pkg_ver gnome-minor)
KDE_VER=$(get_pkg_ver kde)
KDE_INST_VER=$(get_installed_ver kde)
KDE_KOFFICE_VER=$(get_pkg_ver koffice)
XORG7_VER=$(get_pkg_ver xorg7)
# Meta-packages installed version
ALSA_INST_VER=$(get_installed_ver alsa)
GNOME_CORE_INST_VER=$(get_installed_ver gnome-core)
GNOME_FULL_INST_VER=$(get_installed_ver gnome-full)
KDE_CORE_INST_VER=$(get_installed_ver kde-core)
KDE_FULL_INST_VER=$(get_installed_ver kde-full)
KDE_KOFFICE_INST_VER=$(get_installed_ver kde-koffice)
XORG7_INST_VER=$(get_installed_ver xorg7)
# Add header with meta-packages pseudo Id
{
cat << EOF
=== GNOME META-PACKAGES ===
# GNOME base packages
gnome-core $BLFS_XML
# All GNOME packages
gnome-full $BLFS_XML
=== KDE META-PACKAGES ===
# KDE base packages
kde-core $BLFS_XML
# All KDE packages
kde-full $BLFS_XML
# All KDE packages plus Koffice
kde-koffice $BLFS_XML
=== INDIVIDUAL PACKAGES ===
alsa $BLFS_XML $ALSA_VER $ALSA_INST_VER
gnome-core $BLFS_XML $GNOME_VER$GNOME_MINOR_VER $GNOME_CORE_INST_VER
gnome-full $BLFS_XML $GNOME_VER$GNOME_MINOR_VER $GNOME_FULL_INST_VER
kde-core $BLFS_XML $KDE_VER $KDE_CORE_INST_VER
kde-full $BLFS_XML $KDE_VER $KDE_FULL_INST_VER
kde-koffice $BLFS_XML $KDE_KOFFICE_VER $KDE_KOFFICE_INST_VER
xorg7 $BLFS_XML $XORG7_VER $XORG7_INST_VER
EOF
} > packages
} >> packages.tmp
# Dump packages list
sort packages.tmp >> packages
sort packages.tmp -b --key=2 --field-separator=/ --output=packages
# Clean up
rm packages.tmp
@ -67,6 +123,9 @@ generate_gnome_core() { # GNOME core
[[ -n "$package" ]] && echo $package >> gnome-core.dep.tmp
done
# Replace dummy packages with the proper ones
sed -i 's/GNOME-//g' gnome-core.dep.tmp
tac gnome-core.dep.tmp > libs/gnome-core.dep
rm gnome-core.dep.tmp
}
@ -127,3 +186,24 @@ generate_kde_full() { # KDE full
tac kde-full.dep.tmp > libs/kde-full.dep
rm kde-full.dep.tmp
}
#--------------------------#
generate_kde_koffice() { # KDE full + Koffice
#--------------------------#
echo -e "koffice\nkde-full\nkde-core" > libs/kde-koffice.dep
}
#--------------------------#
generate_alsa() { # ALSA packages
#--------------------------#
echo -e "alsa-oss\nalsa-firmware\nalsa-tools\nalsa-utils\n\
alsa-plugins\nalsa-lib" > libs/alsa.dep
}
#--------------------------#
generate_xorg7() { # Xorg7 packages
#--------------------------#
echo -e "x-config\nx-setup\nrman\nxterm2\nxorg7-driver\nxorg7-server\nluit\n\
xorg7-font\nxorg7-data\nxorg7-app\nxbitmaps\nmesalib\nlibdrm\n\
xorg7-lib\nxorg7-util\nxorg7-proto" > libs/xorg7.dep
}

View file

@ -143,8 +143,9 @@ inline_doc
--stringparam sudo $SUDO \
-o ./scripts/ ../libs/scripts.xsl \
$TARGET-index.xml >> xsltproc.log 2>&1
echo -e "done\n"
# Make the scripts executable.
chmod -R +x scripts
cd ..
echo -e "done\n"
}

View file

@ -26,9 +26,7 @@
@id != 'x-setup'">
<!-- The file names -->
<xsl:variable name="pi-file" select="processing-instruction('dbhtml')"/>
<xsl:variable name="pi-file-value" select="substring-after($pi-file,'filename=')"/>
<xsl:variable name="filename" select="substring-before(substring($pi-file-value,2),'.html')"/>
<xsl:variable name="filename" select="@id"/>
<!-- Package name (use "Download FTP" by default. If empty, use "Download HTTP" -->
<xsl:param name="package">

View file

@ -6,14 +6,16 @@ set -e
declare -r SVN="svn://svn.linuxfromscratch.org"
BLFS_XML=$1 # Book directory
DOC_MODE=$2 # Action to take, update or get
DOC_MODE=$1 # Action to take, update, get or none
BLFS_XML=$2 # Book directory
TREE=$3 # SVN tree for the BLFS book version
[[ -z $BLFS_XML ]] && BLFS_XML=blfs-xml
[[ -z $DOC_MODE ]] && DOC_MODE=update
[[ -z $TREE ]] && TREE=trunk/BOOK
TRACKING_DIR=tracking-dir
#---------------------
# packages module
source libs/func_packages
@ -68,25 +70,39 @@ inline_doc
esac
}
BOOK_Source
[ "${DOC_MODE}" != "none" ] && BOOK_Source
echo -en "\n\tGenerating packages file ..."
generate_packages
echo "done."
if [ "${DOC_MODE}" = "none" ] ; then
echo -en "\n\tGenerating packages database file ..."
generate_packages
echo "done."
echo -en "\tGenerating gnome-core dependencies list ..."
generate_gnome_core
echo "done."
echo -en "\tGenerating alsa dependencies list ..."
generate_alsa
echo "done."
echo -en "\tGenerating gnome-full dependencies list ..."
generate_gnome_full
echo "done."
echo -en "\tGenerating gnome-core dependencies list ..."
generate_gnome_core
echo "done."
echo -en "\tGenerating kde-core dependencies list ..."
generate_kde_core
echo "done."
echo -en "\tGenerating gnome-full dependencies list ..."
generate_gnome_full
echo "done."
echo -en "\tGenerating kde-full dependencies list ..."
generate_kde_full
echo -e "done.\n"
echo -en "\tGenerating kde-core dependencies list ..."
generate_kde_core
echo "done."
echo -en "\tGenerating kde-full dependencies list ..."
generate_kde_full
echo -e "done."
echo -en "\tGenerating kde-koffice dependencies list ..."
generate_kde_koffice
echo -e "done."
echo -en "\tGenerating xorg7 dependencies list ..."
generate_xorg7
echo "done."
fi

View file

@ -294,6 +294,17 @@ menu "--- BOOK Settings"
help
#-- The directory name where BLFS book sources
# will be checkout.
config TRACKING_DIR
string "Installed packages database directory"
default "/var/lib/jhalfs/BLFS"
depends on BOOK_BLFS
help
#-- Full path to the directory where the installed
# packages database will be created.
#
# Note that the user that will build the packages must
# have read and write privileges on that directory.
#--- End BLFS specific params
#--- End BOOK Settings

23
README
View file

@ -21,11 +21,24 @@ $Id$
configuration of the uClibc package when building a HLFS system using
uClibc rather than glibc.
2. INSTALLATION::
2. PREREQUISITES::
To use this tool you MUST:
- have experience building {c,h,b}LFS packages
- know how to edit and write shell scripts
- know how a Makefile works
- be able to trace build failures and to find what is causing it
(user error, package bug, {c,h,b}LFS command bug, or jhalfs code bug)
If you don't have the above skill, please don't use this tool.
3. INSTALLATION::
No installation is required. System-wide installation is not allowed
for now.
3. CONFIGURATION FILES::
4. CONFIGURATION FILES::
Each book in the LFS series has its own set of configurable parameters
as well as the common parameters file.
@ -48,7 +61,7 @@ $Id$
make menuconfig
This will create a new file named configuration but will not launch jhalfs.
4. RUNNING::
5. RUNNING::
The script master.sh cannot be invoked directly but only via the
supplied symlinks. After editing the config file for the project you wish
to build, run the script.
@ -114,7 +127,7 @@ $Id$
-M # automatically run make against Makefile once jhalfs finishes its work.
5. LAYOUT::
6. LAYOUT::
/CLFS/config
/master.sh
@ -156,7 +169,7 @@ $Id$
./lfs ---|
6. FAQ::
7. FAQ::
Q. "This 'help' file is very sparse"
A. Yes, it is. This tool, jhalfs, is for those who understand the LFS books
and wish to automate the build. 99% of any problems that arise can be

View file

@ -17,14 +17,28 @@ $Id$
NOTE:: The code is still under development and may contains several bugs
2. USAGE::
2. PREREQUISITES::
To use this tool you MUST to:
- have experience building BLFS packages
- know how to edit and write shell scripts
- know how a Makefile works
- be able to trace build failures and to find what is causing it
(user error, package bug, BLFS command bug, or jhalfs code bug)
If you don't have the above skill, please don't use this tool.
3. USAGE::
Due the complexity of the BLFS book, the scripts/Makefile generation is
done in several steps:
2.1 INSTALLATION::
Run "make" to launch the menuconfig interface. Select the BLFS book
and it version. Then set the installation directory (default
3.1 INSTALLATION::
Run "make" to launch the jhalfs menuconfig interface. Select the BLFS
book and it version. Then set the installation directory (default
$HOME/blfs_root) and the BLFS sources directory (default blfs-xml).
All required files will be placed in the installation directory and
@ -32,26 +46,39 @@ $Id$
Installed files:
lib/* functions, xsl, and auto-generates dependencies tree files
blfs-xml/* SVN tree of the selected BLFS book version
lib/* functions libraries, xsl stylesheets, and auto-generated
meta-packages dependencies tree files
menu/* lxdialog and menuconfig source code
README.BLFS this file
TODO developers notes
packages auto-generated file with packages info
alternatives.conf configuration files for alternative packages
envars.conf envars needed when running the build scripts
update_book.sh update the XML book sources and regenerate packages file
and GNOME and KDE dependencies tree
blfs-parser.sh generates linear BLFS books and build scripts
gen-makefile.sh generates Makefile
progress_bar.sh the Makefile progress bar
update_book.sh update the XML book sources and regenerates packages
database and meta-packages dependencies tree
gen_config.sh regenerates Config.in
gen_pkg_book.sh solve dependencies and generates linear BLFS books
and build scripts
gen-makefile.sh generates target Makefile
progress_bar.sh the target Makefile progress bar
Makefile run gen_config.sh to update Config.in,
then launch the menuconfig interface, and lastly run
gen_pkg_book.sh based on configuration settings
Config.in menuconfig interface input file
packages auto-generated packages database
envars.conf envars needed when running the target build scripts
From now on, all the work must be done from inside the installation
root directory.
2.2 UPDATING BOOK SOURCES::
If using the SVN book version, from time to time you may want to update
the XML sources. To do that run "./update_book.sh"
3.2 UPDATING BOOK SOURCES::
If using the development book version, and if you want to update already
installed packages to the new version found in that book, you need to update
the XML sources and packages database.
To do that run "./update_book.sh"
3.3 CONFIGURING AND PARSING THE BOOK:: (obsolete, to be rewritten)
2.3 PARSING THE BOOK::
Next step is to create a book and build scripts in dependencies build order
for a target package. A target package can be any of the ones listed in the
packages file. That is done using the blfs-parser.sh script, but we are trying
@ -75,14 +102,24 @@ $Id$
dependencies in build order and a "scripts" directory with build scripts
that uses sudo for commands that need root privileges.
There is also two other directories that contains files generated while
resolving dependencies trees.
There is also two other directories, dependencies and xincludes, that
contains files generated while resolving dependencies trees.
3.4 EDITING BUILD SCRIPTS
Now is the time to review the generated book and scripts, making in the
scripts any changes you want to fit your needs. Scripts for additional
packages (i.e., for non-BLFS packages) can be inserted in an easy way.
scripts any changes required to fix generation bugs or to fit your needs.
2.4 CREATING THE MAKEFILE
Scripts for additional packages (i.e., for non-BLFS packages) can be
inserted in an easy way due how the scripts are named. For example, if you
want to install the external dependency "bar" before "foo" package and the
"foo" script is named "064-z-foo", you need to create a "064-y-bar" build
script.
Note that the packages tracking system isn't a packages management tool
and know nothing about packages not in the BLFS book.
3.5 CREATING THE MAKEFILE
When the build scripts are ready to be run, the Makefile can be
created. Be sure that you cd into the "package" directory and run
@ -91,41 +128,116 @@ $Id$
Review the Makefile and if all look sane, start the build.
(Text is needed for the installed packages tracking system and like)
(Text is needed about meta-packages, the installed packages tracking system
and like)
3. GENERATED BUILD SCRIPTS ISSUES::
(The TRACKING_DIR directory must be created before using this tool running as root
install -d -m1777 /var/lib/jhalfs/BLFS )
4. GENERATED BUILD SCRIPTS ISSUES::
In this section known issues with the generated build scripts are
discussed. They are due build procedures and BLFS layout particularities
than we can't handle. In some cases editing the build scripts is mandatory.
discussed. They are due build procedures and/or BLFS layout particularities
than we can't handle. In several cases editing the build scripts is mandatory.
You may need also to insert some build script created by you to resolve
unhandled dependencies and/or to remove some script and install the
affected package by hand.
unhandled dependencies and/or to remove some script installing the affected
package by hand.
3.1 BLFS BOOTSCRIPTS
4.1 BLFS BOOTSCRIPTS
For now, bootscripts installation will fail. You will need to edit the
scripts for packages that install bootscripts and fix their installation
command. That could be fixed in the future, but not sure.
3.2 PACKAGES CONFIGURATION
4.2 PACKAGES CONFIGURATION
For that packages that have a "Configuration" section, you should to
edit it build script to fit the configuration to your needs.
3.4 PDL and Perl modules.
4.4 PDL and Perl modules.
The generated scripts for that packages are plainly broken and can't
be fixed. You must to replace it by your own ones or install that
packages by hand.
3.4 GCC, JDK, Sane, and KDE-multimedia
4.4 GCC, JDK, Sane, and KDE-multimedia
On the pages for that packages, the BLFS book actually have instructions
to install two packages. You must to edit the scripts to fix it. We will
try to fix some of them, but may not be possible.
3.5 OTHERS
4.5 XORG7
The generated scripts for Xorg7 pseudo-packages don't have support for
$SRC_ARCHIVE nor MD5 checking.
If you has downloaded previously the packages, you must to edit the scripts
to make it to use your local packages.
Also, you will need to edit the scripts to fix the commands that must
be applied only to a concret individual sub-package. For example the "for"
loop to install xotg7-util packages may read like:
for package in $(cat $WGET_LST) ; do
packagedir=$(echo $package | sed 's/.tar.bz2//')
tar -xf $package
cd $packagedir
sed -i "s@/usr/X11R6@$XORG_PREFIX@" X11.tmpl &&
./configure $XORG_CONFIG --with-config-dir=$XORG_PREFIX/lib/X11/config
sudo sh -c "make install"
./configure $XORG_CONFIG --with-config-dir=$XORG_PREFIX/lib/X11/config &&
make
sudo sh -c "make install"
./configure $XORG_CONFIG &&
make
sudo sh -c "make install"
cd ..
rm -rf $packagedir
done
After reading the HTML page to know what commands is for what package,
the loop can be changed to read something like:
for package in $(cat $WGET_LST) ; do
packagedir=$(echo $package | sed 's/.tar.bz2//')
tar -xf $package
cd $packagedir
if [ ${packagedir} = "xorg-cf-files" ] ; then
sed -i "s@/usr/X11R6@$XORG_PREFIX@" X11.tmpl &&
./configure $XORG_CONFIG --with-config-dir=$XORG_PREFIX/lib/X11/config
sudo sh -c "make install"
elif [ ${packagedir} = "Imake" ] ; then
./configure $XORG_CONFIG --with-config-dir=$XORG_PREFIX/lib/X11/config &&
make
sudo sh -c "make install"
else
./configure $XORG_CONFIG &&
make
sudo sh -c "make install"
fi
cd ..
rm -rf $packagedir
done
4.6 PATCHES
By default all required patches will be downloaded from the NET.
If you has downloaded previously the patches, you must to edit the scripts
to make it to use your local patches.
Also, be sure that all scripts have the commands to download/apply the
required patches. Due book layout issues some patches may be missing.
4.7 ROOT COMMANDS
If building as a normal user (the default setting) be sure that all
commands that need root privileges are run using sudo.
Due book layout issues some sudo command may be missing.
4.8 OTHERS
May have other issues that we are not aware on them yet. If you find
someone, please report it to <alfs-discuss@linuxfromscratch.org>.

21
blfs
View file

@ -111,27 +111,30 @@ echo "${nl_}${SD_BORDER}${nl_}"
[[ ! -d $BLFS_ROOT ]] && mkdir -p $BLFS_ROOT
cp -r BLFS/* $BLFS_ROOT
cp -r menu $BLFS_ROOT
cp $COMMON_DIR/progress_bar.sh $BLFS_ROOT
# cp -r menu $BLFS_ROOT
cp README.BLFS $BLFS_ROOT
# Start the work
cd $BLFS_ROOT
# Clean-up
rm -rf libs/.svn
rm -rf menu/.svn
rm -rf menu/lxdialog/.svn
# Fix BLFS_XML harcoded values
sed -i 's,blfs-xml,'$BLFS_XML',' update_book.sh
sed -i 's,blfs-xml,'$BLFS_XML',' libs/book.xsl
# Fetch book sources and create packages and GNOME/KDE dependencies files
# Set some harcoded envars to their proper values
sed -i 's,blfs-xml,'$BLFS_XML',' update_book.sh libs/book.xsl
sed -i 's,tracking-dir,'$TRACKING_DIR',' update_book.sh gen-makefile.sh
# Fetch book sources and create packages and meta-packages dependencies files
if [[ -d $BLFS_XML ]] ; then
./update_book.sh
else
./update_book.sh $BLFS_XML get $TREE
./update_book.sh get $BLFS_XML $TREE
fi
# Generate Config.in and run the menuconfig interfaz
# ./gen_config.sh
# make
# Run the menuconfig interface
make

View file

@ -92,7 +92,7 @@ inline_doc
local -r clfs_PARAM_LIST="BOOK BUILDDIR SRC_ARCHIVE GETPKG RUNMAKE METHOD ARCH TARGET TEST BOMB_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 STRIP FSTAB CONFIG GETKERNEL KEYMAP VIMLANG PAGE TIMEZONE LANG LUSER LGROUP"
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"
local -r blfs_PARAM_LIST="BRANCH_ID BLFS_ROOT BLFS_XML"
local -r blfs_PARAM_LIST="BRANCH_ID BLFS_ROOT BLFS_XML TRACKING_DIR"
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}'
@ -267,7 +267,8 @@ inline_doc
;;
# BLFS params. No validation is required/allowed, IMHO
BRANCH_ID | BLFS_ROOT | BLFS_XML) echo "`eval echo $PARAM_VALS`" ;;
BRANCH_ID | BLFS_ROOT | BLFS_XML ) echo "`eval echo $PARAM_VALS`" ;;
TRACKING_DIR ) validate_dir -z -d -w ;;
esac
done