diff --git a/2.3/BLFS/Makefile b/2.3/BLFS/Makefile deleted file mode 100644 index e82f1d4..0000000 --- a/2.3/BLFS/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -# From the Build Scripts Written By: Jim Gifford -# Modified By: Joe Ciccone - -# $Id$ - -TOPDIR=$(shell pwd) -CONFIG_CONFIG_IN = Config.in -CONFIG = menu - -all: menuconfig - -$(CONFIG)/conf: - $(MAKE) -B -C $(CONFIG) conf - -$(CONFIG)/mconf: - $(MAKE) -B -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 $(CONFIG)/conf $(CONFIG)/mconf diff --git a/2.3/BLFS/TODO b/2.3/BLFS/TODO deleted file mode 100644 index b2d5ee0..0000000 --- a/2.3/BLFS/TODO +++ /dev/null @@ -1,20 +0,0 @@ -##### -# -# Project TODO list -# -# $Id$ -##### - - --- 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. - - 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. - --- Find a better way to define circular dependencies. \ No newline at end of file diff --git a/2.3/BLFS/envars.conf b/2.3/BLFS/envars.conf deleted file mode 100644 index d3b8986..0000000 --- a/2.3/BLFS/envars.conf +++ /dev/null @@ -1,91 +0,0 @@ -##### -# -# Configuration file for the BLFS module -# -# $Id$ -# -# Set default envars used in the build scripts -# -##### - -#======== Common envars ========== - -#--- Set a well-known working locale when building software -export LC_ALL=C - -#--- The local repository for packages/file -# Any missing file will be downloaded and archived here, -# if the user has the right priviledges. -export SRC_ARCHIVE=$SRC_ARCHIVE - -#--- Server used if the file isn't found in SRC_ARCHIVE. -# As a last resort, the file will dowloaded from upstream, if possible. -# -# The server path MUST be set as listed in -# http://www.linuxfromscratch.org/blfs/download.html -export FTP_SERVER=ftp://anduin.linuxfromscratch.org/BLFS/ - - -#--- The sources directory. -# Full path to the top level directory where packages will be stored, -# unpacked, and compiled. -export SRC_DIR=$HOME/sources - - -#======== Xorg7 envars =========== - -#--- Installation prefix -export XORG_PREFIX=/usr - -#--- Configure switches -export XORG_CONFIG="--prefix=$XORG_PREFIX --sysconfdir=/etc --mandir=$XORG_PREFIX/share/man --localstatedir=/var" - -#======== GNOME envars =========== - -#--- Installation prefix -export GNOME_PREFIX=/usr - -#--- If you want to install GNOME on a non standart prefix, uncomment -# the next export lines and edit it if needed. -# See also the GNOME Pre-installation Configuration HTML page for -# aditional required commands. -#export PATH=$PATH:$GNOME_PREFIX/bin -#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$GNOME_PREFIX/lib/pkgconfig -#export GNOME_LIBCONFIG_PATH=/usr/lib:$GNOME_PREFIX/lib - -#======== KDE envars ============= - -#--- Installation prefix -export KDE_PREFIX=/usr - -#--- If you want to install KDE on a non standart prefix, uncomment -# the next export lines and edit it if needed. -# See also the KDE Pre-installation Configuration HTML page for -# aditional required commands. -#export PATH=$PATH:$KDE_PREFIX/bin -#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$KDE_PREFIX/lib/pkgconfig - - - -#======== Optimizations ============= - -# Global optimization settings can be placed here. This settings can be -# overrided by settings in the packages build scripts. - -# WARNING: The use of build optimizations may be dangerous. -# You should know what you are doing and be sure that the -# optimization settings placed below are what you want. -# It there are build issues or the system doesn't work as -# expected, please rebuild without optimizations before -# asking for support. - -#export MAKEFLAGS="-j3" - -#export CFLAGS="-O3 -pipe" -#export CXXFLAGS=$CFLAGS -#export LDFLAGS="-s" - -#export OTHER_CFLAGS=$CFLAGS -#export OTHER_CXXFLAGS=$CXXFLAGS -#export OTHER_LDFLAGS=$LDFLAGS - diff --git a/2.3/BLFS/gen-makefile.sh b/2.3/BLFS/gen-makefile.sh deleted file mode 100755 index 936ce49..0000000 --- a/2.3/BLFS/gen-makefile.sh +++ /dev/null @@ -1,264 +0,0 @@ -#!/bin/bash -# -# $Id$ -# -set -e - -# TEMPORARY VARIABLES.. development use only -declare MKFILE=Makefile -declare PREV_PACKAGE="" -declare BUILD_SCRIPTS=scripts -declare TRACKING_DIR=tracking-dir - -HEADER="# This file is automatically generated by gen-makefile.sh -# YOU MAY NEED TO EDIT THIS FILE MANUALLY -# -# Generated on `date \"+%F %X %Z\"`" - - -#----------------------------------# -__wrt_target() { # Create target and initialize log file -#----------------------------------# - local i=$1 - local PREV=$2 -( -cat << EOF - -$i: $PREV - @\$(call echo_message, Building) - @/bin/bash progress_bar.sh \$@ \$\$PPID & -EOF -) >> $MKFILE.tmp -} - - - -#----------------------------------# -__write_build_cmd() { # -#----------------------------------# -( -cat << EOF - @source ../envars.conf && ${BUILD_SCRIPTS}/\$@ >logs/\$@ 2>&1 -EOF -) >> $MKFILE.tmp -} - -#----------------------------------# -__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 - @rm -f \$(TRACKING_DIR)/${pkg_name#*-?-}-{0..9}* && \\ - 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 - @rm -f \$(TRACKING_DIR)/alsa-{0..9}* && \\ - touch \$(TRACKING_DIR)/alsa-${alsa_ver} -EOF -) >> $MKFILE.tmp - ;; - *-kdebase ) -( -cat << EOF - @rm -f \$(TRACKING_DIR)/kde-core-{0..9}* && \\ - touch \$(TRACKING_DIR)/kde-core-${kde_core_ver} -EOF -) >> $MKFILE.tmp - ;; - *-xorg7-driver ) # xtrerm2 and rman are optional -( -cat << EOF - @rm -f \$(TRACKING_DIR)/xorg7-{0..9}* && \\ - touch \$(TRACKING_DIR)/xorg7-${xorg7_ver} -EOF -) >> $MKFILE.tmp - ;; - esac - -( -cat << EOF - @touch \$@ && \\ - sleep .25 && \\ - echo -e "\n\n "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\ - echo --------------------------------------------------------------------------------\$(WHITE) -EOF -) >> $MKFILE.tmp -} - - -#----------------------------# -__write_entry() { # -#----------------------------# - local script_name=$1 - local pkg_ver=$2 - - echo -n "${tab_}${tab_} entry for <$script_name>" - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - __wrt_target "${script_name}" "$PREV_PACKAGE" - __write_build_cmd - - # Include a touch of the target name so make can check - # if it's already been made. - __wrt_touch "${script_name}" "${pkg_ver}" - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile 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 - @rm -f \$(TRACKING_DIR)/${meta_pkg}-{0..9}* && \\ - touch \$(TRACKING_DIR)/${meta_pkg}-${pkg_ver} -EOF -) >> $MKFILE.tmp - - case $meta_pkg in - gnome-full ) -( -cat << EOF - @rm -f \$(TRACKING_DIR)/gnome-core-{0..9}* && \\ - touch \$(TRACKING_DIR)/gnome-core-${gnome_core_ver} -EOF -) >> $MKFILE.tmp - ;; - kde-koffice ) -( -cat << EOF - @rm -f \$(TRACKING_DIR)/kde-full-{0..9}* && \\ - touch \$(TRACKING_DIR)/kde-full-${kde_full_ver} -EOF -) >> $MKFILE.tmp - ;; - esac - -( -cat << EOF - @touch \$@ -EOF -) >> $MKFILE.tmp - -} - -#----------------------------# -generate_Makefile () { # -#----------------------------# - - - echo "${tab_}Creating Makefile... ${BOLD}START${OFF}" - - # Start with a clean files - >$MKFILE - >$MKFILE.tmp - - - for package_script in scripts/* ; do - this_script=`basename $package_script` - pkg_ver=$(grep "^${this_script#*-?-}[[:space:]]" ../packages | cut -f3) - pkg_list="$pkg_list ${this_script}" - __write_entry "${this_script}" "${pkg_ver}" - PREV_PACKAGE=${this_script} - 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. -( - cat << EOF -$HEADER - -PACKAGE= $PACKAGE -TRACKING_DIR= $TRACKING_DIR - -BOLD= "" -RED= "" -GREEN= "" -ORANGE= "" -BLUE= "" -WHITE= "" - -define echo_message - @echo \$(BOLD) - @echo -------------------------------------------------------------------------------- - @echo \$(BOLD)\$(1) target \$(BLUE)\$@\$(BOLD) - @echo \$(WHITE) -endef - - -define fin_message - @echo \$(BOLD) - @echo -------------------------------------------------------------------------------- - @echo \$(BOLD) Build complete for the package \$(BLUE)\$(PACKAGE)\$(BOLD) and its dependencies - @echo \$(WHITE) -endef - -all : $pkg_list - @\$(call fin_message ) -EOF -) > $MKFILE - - cat $MKFILE.tmp >> $MKFILE - echo "${tab_}Creating Makefile... ${BOLD}DONE${OFF}" - - rm $MKFILE.tmp - -} - -if [[ -e Config.in ]] ; then - echo -e "\n\tThis script must be run from inside a target package directory.\n" - exit 1 -fi - -if [[ ! -d scripts ]] ; then - echo -e "\n\tNo ./scripts/ directory has been found.\n" - exit 1 -fi - -generate_Makefile - -cp ../progress_bar.sh . - -mkdir -p logs diff --git a/2.3/BLFS/gen_config.sh b/2.3/BLFS/gen_config.sh deleted file mode 100755 index 89c169e..0000000 --- a/2.3/BLFS/gen_config.sh +++ /dev/null @@ -1,276 +0,0 @@ -#!/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 # -#---------------------# -: <. - 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 targets that are part of a meta-package but that are in the same - # directory that non meta-package targets - case ${PKG_NAME} in - alsa-* | \ - xorg7-* | \ - x-config | \ - x-setup | \ - libXau | \ - libxcb | \ - libXdmcp | \ - luit | \ - xbitmaps | \ - xcb-proto | \ - xkeyboard-config | \ - mesalib | \ - libdrm ) 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_xfree86 - bool "xfree86" -endchoice -config X11 - string - default xorg7 if WIN_xorg7 - 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" - - diff --git a/2.3/BLFS/gen_pkg_book.sh b/2.3/BLFS/gen_pkg_book.sh deleted file mode 100755 index 9d720b2..0000000 --- a/2.3/BLFS/gen_pkg_book.sh +++ /dev/null @@ -1,178 +0,0 @@ -#!/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 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 29 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 diff --git a/2.3/BLFS/libs/book.xsl b/2.3/BLFS/libs/book.xsl deleted file mode 100644 index 1a1c6b5..0000000 --- a/2.3/BLFS/libs/book.xsl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - alsa-lib - - - aRts - - - kdelibs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (in the full book) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/2.3/BLFS/libs/constants.inc b/2.3/BLFS/libs/constants.inc deleted file mode 100644 index 9308a7c..0000000 --- a/2.3/BLFS/libs/constants.inc +++ /dev/null @@ -1,35 +0,0 @@ -##### -# -# common constants -# -# $Id$ -##### - - -# VT100 colors -declare -r BLACK=$'\e[1;30m' -declare -r DK_GRAY=$'\e[0;30m' - -declare -r RED=$'\e[31m' -declare -r GREEN=$'\e[32m' -declare -r YELLOW=$'\e[33m' -declare -r BLUE=$'\e[34m' -declare -r MAGENTA=$'\e[35m' -declare -r CYAN=$'\e[36m' -declare -r WHITE=$'\e[37m' - -declare -r OFF=$'\e[0m' -declare -r BOLD=$'\e[1m' -declare -r REVERSE=$'\e[7m' -declare -r HIDDEN=$'\e[8m' - -declare -r tab_=$'\t' -declare -r nl_=$'\n' - -declare -r DD_BORDER="${BOLD}==============================================================================${OFF}" -declare -r SD_BORDER="${BOLD}------------------------------------------------------------------------------${OFF}" -declare -r STAR_BORDER="${BOLD}******************************************************************************${OFF}" - -# bold yellow > < pair -declare -r R_arrow=$'\e[1;33m>\e[0m' -declare -r L_arrow=$'\e[1;33m<\e[0m' diff --git a/2.3/BLFS/libs/dependencies.xsl b/2.3/BLFS/libs/dependencies.xsl deleted file mode 100644 index f62a271..0000000 --- a/2.3/BLFS/libs/dependencies.xsl +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/2.3/BLFS/libs/func_dependencies b/2.3/BLFS/libs/func_dependencies deleted file mode 100644 index 1de1e46..0000000 --- a/2.3/BLFS/libs/func_dependencies +++ /dev/null @@ -1,421 +0,0 @@ -#!/bin/bash -# -# $Id$ -# -set -e - -declare -i cntr=0 -declare -a spaceSTR=" " - -#----------------------------# -generate_dependency_tree() { # -#----------------------------# -: <" - - echo -e "\tGenerating $TARGET dependencies tree ..." - - mkdir dependencies - - #--------------------- - # Create target package dependencies list - case $TARGET in - # Skip the creation when all dependencies are circular. - alsa-lib | cracklib | libexif | unixodbc ) ;; - - # Meta-packages at target level - alsa ) - cp ../libs/alsa.dep dependencies/ - ;; - gnome-core ) - cp ../libs/gnome-core.dep dependencies/ - ;; - gnome-full ) - cp ../libs/gnome-{core,full}.dep dependencies/ - ;; - kde-core ) - cp ../libs/kde-core.dep dependencies/ - ;; - kde-full ) - cp ../libs/kde-{core,full}.dep dependencies/ - ;; - kde-koffice ) - cp ../libs/kde-{core,full,koffice}.dep dependencies/ - ;; - xorg7 ) - cp ../libs/xorg7.dep dependencies/ - ;; - * ) # Default - xsltproc --stringparam dependencies $DEP_LEVEL \ - -o dependencies/$TARGET.dep \ - ../libs/dependencies.xsl ../$PKGXML - ;; - esac - - #--------------------- - # Start with a clean $TARGET-index.xml.tmp file - > $TARGET-index.xml.tmp - - #--------------------- - # 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 | xorg7) ;; - * ) - echo -e " $ENTRY_START$PKGXML$ENTRY_END" >> $TARGET-index.xml.tmp - ;; - esac - - #--------------------- - # If have dependencies, write its XInclude and find sub-dependencies - if [[ -f dependencies/$TARGET.dep ]]; then - mkdir xincludes && do_dependencies $TARGET - fi - - echo -e "\n\t... done" -} - - - -#-----------------------# -do_dependencies() { # Loop to find sub-dependencies :::WARNING::: THIS IS A RECURVISE FUNCTION -#-----------------------# -: <> $TARGET-index.xml.tmp - done - return - fi - - #------------------ - # Start with a clean $PKG.xinc.tmp file - > xincludes/$PKG.xinc.tmp - for DEP in `cat dependencies/$PKG.dep`; do - - # Special packages that need be remaped - case $DEP in - - db ) continue ;; # The proper version of DB is installed in LFS - - # Don't have their own XML file - hal-requirements | hal-runtime-dependencies ) continue ;; - perl-* | tk-perl ) DEP=perl-modules ;; - dbus-* ) DEP=dbus-bindings ;; - - # Orphan links (proper link must be created when generating the book) - arts ) DEP=aRts ;; - kde ) DEP=kde-core ;; - - # Set values for alternative packages - 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 - # If all dependencies are circular, the creation of the *.dep file - # must be skipped, not placed here, to avoid that the script will bomb - # due empty *.xinc files - case $DEP in - akode ) - # Both are in the same page - [[ "$PKG" = "kdemultimedia" ]] && continue - ;; - aRts ) - # esound-->aRts-->esound - [[ "$PKG" = "esound" ]] && continue - ;; - dbus-bindings ) - # True circular dependecy - [[ "$PKG" = "dbus-bindings" ]] && continue - ;; - DocBook ) - # Used to rebuild the documentation - [[ "$PKG" = "linux-pam" ]] && continue - ;; - docbook-xsl ) - # Used to rebuild the documentation - [[ "$PKG" = "linux-pam" ]] && continue - ;; - doxygen ) - # Used to rebuild the documentation - [[ "$PKG" = "dbus" ]] && continue - [[ "$PKG" = "libdvdcss" ]] && continue - [[ "$PKG" = "libusb" ]] && continue - [[ "$PKG" = "libxcb" ]] && continue - ;; - espgs ) - # Used to rebuild the documentation - [[ "$PKG" = "$MAIL_SERVER" ]] && continue - ;; - ffmpeg ) - # alsa-plugins-->ffmpeg-->several-->alsa-plugins - [[ "$PKG" = "alsa-plugins" ]] && continue - ;; - fop ) - # Used to rebuild the documentation - [[ "$PKG" = "linux-pam" ]] && continue - ;; - graphviz ) - # Used to build the API documentation - [[ "$PKG" = "libusb" ]] && continue - ;; - GTK ) - # deprecated GTK version - [[ "$PKG" = "alsa-tools" ]] && continue - ;; - gtk2 ) - # Testsuite only - [[ "$PKG" = "cairo" ]] && continue - ;; - jadetex ) - # Runtime only - [[ "$PKG" = "docbook-utils" ]] && continue - ;; - $KBR5 ) - # cyrus-sasl-->postgresql-->$KBR5-->openldap-->cyrus-sasl - [[ "$PKG" = "cyrus-sasl" ]] && continue - ;; - librsvg ) - # Testsuite only - [[ "$PKG" = "cairo" ]] && continue - ;; - libxslt ) - # libxml2-->libxslt-->libxml2 - [[ "$PKG" = "libxml2" ]] && continue - ;; - Links ) - # Runtime only - [[ "$PKG" = "docbook-utils" ]] && continue - ;; - lynx ) - # Runtime only - [[ "$PKG" = "docbook-utils" ]] && continue - ;; - openldap ) - # cyrus-sasl-->postgresql-->$KBR5-->openldap-->cyrus-sasl - [[ "$PKG" = "cyrus-sasl" ]] && continue - ;; - poppler ) - # Testsuite only - [[ "$PKG" = "cairo" ]] && continue - ;; - postgresql ) - # cyrus-sasl-->postgresql-->$KBR5-->openldap-->cyrus-sasl - [[ "$PKG" = "cyrus-sasl" ]] && continue - ;; - tk ) - # python-->tk-->xorg7-->several combinations-->libxslt-->python - [[ "$PKG" = "python" ]] && continue - ;; - w3m ) - # Runtime only - [[ "$PKG" = "docbook-utils" ]] && continue - # Used to rebuild the documentation - [[ "$PKG" = "linux-pam" ]] && continue - ;; - esac - - #------------------ - # XML file of dependency package - DEP_XML=`grep "^$DEP[[:space:]]" ../packages | cut -f2` - case $DEP in - x-window-system | alsa ) ;; # No page for that (proper link must be created when generating the book) - xorg7 ) ;; # This page will be dump in the xorg7.xinc file - gnome-core | kde-core | kde-full ) ;; # Invented packages - * ) - # Remove the Xinclude entry if found - sed -e "s,^[[:space:]]*$ENTRY_START$DEP_XML$ENTRY_END,," \ - -e '/./!d' -i xincludes/$PKG.xinc.tmp - # Write the XInclude - echo -e " $ENTRY_START$DEP_XML$ENTRY_END" >> xincludes/$PKG.xinc.tmp - ;; - esac - - #------------------ - # If not already created, create its dependencies list - if [[ ! -f dependencies/$DEP.dep ]] ; then - case $DEP in - # Skip the creation when all dependencies are circular. - alsa-lib | cracklib | libexif | unixodbc ) ;; - # Meta-packages at dependency level - alsa ) - cp ../libs/alsa.dep dependencies/ - ;; - kde-core ) - cp ../libs/kde-core.dep dependencies/ - ;; - x-window-system ) # When X11 is not Xorg7 - echo -e "x-config\nx-setup\n$X11" > dependencies/x-window-system.dep - ;; - xorg7 ) - cp ../libs/xorg7.dep dependencies/ - ;; - * ) xsltproc --stringparam dependencies $DEP_LV \ - -o dependencies/$DEP.dep ../libs/dependencies.xsl ../$DEP_XML - ;; - esac - fi - - #------------------ - # If needed, process its dependencies - if [[ -f dependencies/$DEP.dep ]] ; then - # If a premade xinclude file esist, include it - if [[ -f xincludes/$DEP.xinc ]] ; then - IFS=$'\x0A' - for line2 in `cat xincludes/$DEP.xinc` ; do - IFS=$saveIFS - # Remove the Xinclude entry if found - sed -e "s,^[[:space:]]*$line2,," -e '/./!d' -i xincludes/$PKG.xinc.tmp - # Write the XInclude - echo -e "$line2" >> xincludes/$PKG.xinc.tmp - done - #------------------ - # Create the xinclude file - else - # - # >>>>>> THIS IS A RECURSIVE FUNCTION CALL.. BEWARE OF GREMLINS. <<<<<< - # - # If the recursion depth is not too great this is an acceptable methodology for a script language - # However, uncontrolled recursion will cause a seg-fault due to stack issues with local variables. - # - set +e - [[ "${VERBOSITY}" > 0 ]] && echo -ne "\ncall: $((++cntr))${spaceSTR:0:$cntr}${RED}$DEP${OFF}" - do_dependencies $DEP - [[ "${VERBOSITY}" > 0 ]] && echo -ne "\n ret: $cntr${spaceSTR:0:$((cntr--))}${GREEN}$DEP${OFF} Using $DEP Xinc to solve $PKG" - set -e - - # Include it when done - IFS=$'\x0A' - for line2 in `cat xincludes/$DEP.xinc` ; do - IFS=$saveIFS - # Remove the Xinclude entry if found - sed -e "s,^[[:space:]]*$line2,," -e '/./!d' -i xincludes/$PKG.xinc.tmp - # Write the XInclude - echo -e "$line2" >> xincludes/$PKG.xinc.tmp - done - fi - fi - done - - #------------------ - if [[ "$PKG" = "xorg7" ]] ; then - # Add their XInclude - PKG_XML=${BLFS_XML}/x/installing/xorg7.xml - echo -e " $ENTRY_START$PKG_XML$ENTRY_END" >> xincludes/$PKG.xinc.tmp - fi - - #------------------ - mv xincludes/$PKG.xinc.tmp xincludes/$PKG.xinc - IFS=$'\x0A' - for line in `cat xincludes/$PKG.xinc` ; do - IFS=$saveIFS - # Remove the Xinclude entry if found. - sed -e "s,^[[:space:]]*$line,," -e '/./!d' -i $TARGET-index.xml.tmp - # Write the XInclude - echo -e "$line" >> $TARGET-index.xml.tmp - done -} diff --git a/2.3/BLFS/libs/func_packages b/2.3/BLFS/libs/func_packages deleted file mode 100644 index 9a75bd0..0000000 --- a/2.3/BLFS/libs/func_packages +++ /dev/null @@ -1,210 +0,0 @@ -#!/bin/bash -# -# $Id$ -# -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 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/> packages.tmp - done - - # IDs clean-up (unuseful pages or commented-out packages, could be more) - sed -i '/template/d;/ntroduction/d;/preface/d;/alsa.xml/d;/xorg.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;/^ash\t/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 - sed -i '/errata\t/d;/foreword\t/d;/organization\t/d;/whoread\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 -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.tmp - - # Dump packages list - sort packages.tmp -b --key=2 --field-separator=/ --output=packages - - # Clean up - rm packages.tmp -} - -# Pre-made *.dep files for meta-packages - -#--------------------------# -generate_gnome_core() { # GNOME core -#--------------------------# - local line base_xml package - - > gnome-core.dep.tmp - - for line in `grep "xi:include" $BLFS_XML/gnome/core/core.xml` ; do - base_xml=`echo $line | sed 's/^.*href="//;s/".*//'` - package=`grep "gnome/core/$base_xml" packages | cut -f1` - [[ -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 -} - -#--------------------------# -generate_gnome_full() { # GNOME full -#--------------------------# - local line base_xml package - - echo "gnome-core" > gnome-full.dep.tmp - - for line in `grep "xi:include" $BLFS_XML/gnome/add/add.xml` ; do - base_xml=`echo $line | sed 's/^.*href="//;s/".*//'` - package=`grep "gnome/add/$base_xml" packages | cut -f1` - [[ -n "$package" ]] && echo $package >> gnome-full.dep.tmp - done - - tac gnome-full.dep.tmp > libs/gnome-full.dep - rm gnome-full.dep.tmp -} - -#--------------------------# -generate_kde_core() { # KDE core -#--------------------------# - local line base_xml package - - > kde-core.dep.tmp - - for line in `grep "xi:include" $BLFS_XML/kde/core/core.xml` ; do - base_xml=`echo $line | sed 's/^.*href="//;s/".*//'` - package=`grep "kde/core/$base_xml" packages | cut -f1` - [[ -n "$package" ]] && echo $package >> kde-core.dep.tmp - done - - tac kde-core.dep.tmp > libs/kde-core.dep - rm kde-core.dep.tmp -} - -#--------------------------# -generate_kde_full() { # KDE full -#--------------------------# - local line base_xml package - - echo "kde-core" > kde-full.dep.tmp - - for line in `grep "xi:include" $BLFS_XML/kde/add/add.xml` ; do - base_xml=`echo $line | sed 's/^.*href="//;s/".*//'` - package=`grep "kde/add/$base_xml" packages | cut -f1` - [[ -n "$package" ]] && echo $package >> kde-full.dep.tmp - done - - for line in `grep "xi:include" $BLFS_XML/kde/devel/devel.xml` ; do - base_xml=`echo $line | sed 's/^.*href="//;s/".*//'` - package=`grep "kde/devel/$base_xml" packages | cut -f1` - [[ -n "$package" ]] && echo $package >> kde-full.dep.tmp - done - - 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\ -xkeyboard-config\nxorg7-font\nxorg7-data\nxorg7-app\nmesalib\nlibdrm\nxbitmaps\n\ -xorg7-lib\nlibxcb\nxcb-proto\nlibXdmcp\nlibXau\nxorg7-util\nxorg7-proto" > libs/xorg7.dep -} diff --git a/2.3/BLFS/libs/func_parser b/2.3/BLFS/libs/func_parser deleted file mode 100644 index 3cf2356..0000000 --- a/2.3/BLFS/libs/func_parser +++ /dev/null @@ -1,151 +0,0 @@ -#!/bin/bash -##### -# -# Parse the XML documents to create a 'package' book -# -# $Id$ -##### - - -#----------------------------# -generate_TARGET_xml() { # -#----------------------------# -: < - - - - - - - - - - Preface - - - - - - - - - - Installing $TARGET in Dependencies Build Order - -EOF -} > $TARGET-index.xml - - #--------------------- - # Dump $TARGET-index.xml.tmp in reverse order. - tac $TARGET-index.xml.tmp >> $TARGET-index.xml - rm $TARGET-index.xml.tmp - - #--------------------- - # Footer of $TARGET-index.xml -{ -cat << EOF - - - - - - - - - - -EOF -} >> $TARGET-index.xml - - echo "done" -} - - -#-------------------------# -generate_target_book() { # -#-------------------------# -: < HTML book from <$BLFS_XML> xml files ..." - xsltproc --xinclude --nonet \ - --stringparam mail_server $MAIL_SERVER \ - --stringparam xwindow $X11 \ - --stringparam base.dir HTML/ \ - ../libs/book.xsl \ - $TARGET-index.xml > xsltproc.log 2>&1 - mkdir HTML/{stylesheets,images} - cp ../$BLFS_XML/stylesheets/lfs-xsl/*.css HTML/stylesheets - cp ../$BLFS_XML/images/*.png HTML/images - cd HTML - sed -i -e "s@../stylesheets@stylesheets@g" *.html - sed -i -e "s@../images@images@g" *.html - for filename in `find . -name "*.html"` ; do - tidy -config ../../$BLFS_XML/tidy.conf $filename || true - sh ../../$BLFS_XML/obfuscate.sh $filename - sed -i -e "s@text/html@application/xhtml+xml@g" $filename - done - cd .. - echo "done" -} - - -#-------------------------# -create_build_scripts() { # -#-------------------------# -: <> xsltproc.log - - echo -en "\n\tGenerating the build scripts ..." - xsltproc --xinclude --nonet \ - --stringparam sudo $SUDO \ - -o ./scripts/ ../libs/scripts.xsl \ - $TARGET-index.xml >> xsltproc.log 2>&1 - # Make the scripts executable. - chmod -R +x scripts - cd .. - echo -e "done\n" - -} diff --git a/2.3/BLFS/libs/scripts.xsl b/2.3/BLFS/libs/scripts.xsl deleted file mode 100644 index bb54b23..0000000 --- a/2.3/BLFS/libs/scripts.xsl +++ /dev/null @@ -1,496 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00 - - - - 0 - - - - - - - - - - - SCRIPT is - - PACKAGE is - - FTPDIR is - - - - - - - #!/bin/bash set -e - - - - - SRC_ARCHIVE=$SRC_ARCHIVE - FTP_SERVER=$FTP_SERVER PACKAGE= - - PKG_DIR= - - SRC_DIR=$SRC_DIR - - - - - - - - cd $SRC_DIR/$PKG_DIR - rm -rf $UNPACKDIR unpacked - - - cd $SRC_DIR/MesaLib -UNPACKDIR=`head -n1 unpacked | sed 's@^./@@;s@/.*@@'` -rm -rf $UNPACKDIR unpacked - - - - - SRC_DIR=$SRC_DIR - -cd $SRC_DIR -mkdir -p xc -cd xc - - - - - - - - exit - - - - - - - - - - - - - mkdir -p $SRC_DIR/$PKG_DIR - cd $SRC_DIR/$PKG_DIR - - - - - - - - -if [[ -e unpacked ]] ; then - UNPACKDIR=`head -n1 unpacked | sed 's@^./@@;s@/.*@@'` - rm -rf $UNPACKDIR -fi -tar -xvf $PACKAGE > unpacked -UNPACKDIR=`head -n1 unpacked | sed 's@^./@@;s@/.*@@'` -cd $UNPACKDIR - - - sudo /sbin/ - - ldconfig - - - - - - - - - - - - - - - SRC_ARCHIVE=$SRC_ARCHIVE -FTP_SERVER=$FTP_SERVER - - mkdir -p ${section} cd ${section} - - for line in $(grep -v '^#' ../${sect-ver}.wget) ; do - if [[ ! -f ${line} ]] ; then - if [[ -f $SRC_ARCHIVE/Xorg/${section}/${line} ]] ; then - cp $SRC_ARCHIVE/Xorg/${section}/${line} ${line} - elif [[ -f $SRC_ARCHIVE/Xorg/${line} ]] ; then - cp $SRC_ARCHIVE/Xorg/${line} ${line} - elif [[ -f $SRC_ARCHIVE/${section}/${line} ]] ; then - cp $SRC_ARCHIVE/${section}/${line} ${line} - elif [[ -f $SRC_ARCHIVE/${line} ]] ; then - cp $SRC_ARCHIVE/${line} ${line} - else - wget ${FTP_SERVER}conglomeration/Xorg/${line} || \ - wget http://xorg.freedesktop.org/releases/individual/${section}/${line} - fi - fi -done -md5sum -c ../${sect-ver}.md5 -cp ../${sect-ver}.wget ../${sect-ver}.wget.orig -cp ../${sect-ver}.md5 ../${sect-ver}.md5.orig - - - for package in $(grep -v '^#' ../${sect-ver}.wget) ; do - packagedir=$(echo $package | sed 's/.tar.bz2//') - tar -xf ${package} - cd ${packagedir} - - cd .. - rm -rf ${packagedir} - sed -i "/${package}/d" ../${sect-ver}.wget - sed -i "/${package}/d" ../${sect-ver}.md5 -done -mv ../${sect-ver}.wget.orig ../${sect-ver}.wget -mv ../${sect-ver}.md5.orig ../${sect-ver}.md5 - - sudo /sbin/ - - ldconfig - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cdparanoia - - - - docbk - - - - gc - - - - iso-codes - - - - jpeg - - - - lynx - - - - ntp - - - - openldap - - - - OOo - - - - pine - - - - portmap - - - - psutils - - - - qpopper - - - - qt-x11-free - - - - sendmail - - - - slib - - - - tcl - - - - tcp_wrappers - - - - tetex - - - - tidy - - - - tk - - - - unzip - - - - wireless_tools - - - - whois - - - - Xorg - - - - zip - - - - - - - - - - - - - - - - - - - - - - if [[ ! -f $PACKAGE ]] ; then - - if [[ -f $SRC_ARCHIVE/$PKG_DIR/$PACKAGE ]] ; then - cp $SRC_ARCHIVE/$PKG_DIR/$PACKAGE $PACKAGE - elif [[ -f $SRC_ARCHIVE/$PACKAGE ]] ; then - cp $SRC_ARCHIVE/$PACKAGE $PACKAGE else - - wget ${FTP_SERVER}conglomeration/$PKG_DIR/$PACKAGE - - - || \ wget - - - - - - - - - - - - - - || \ wget - - - fi fi - - - echo " - - $PACKAGE" | md5sum -c - - - - - wget - - - - - - - - - wget - - - - - - - - wget - - - - - - - - - - - sudo sh -c " - - - - " - - - - - - - section= - - sect-ver= - - - - - - - # - - make -k - - || true - - - - - - - - - - - $SRC_DIR/MesaLib - - - **EDITME - - EDITME** - - - - - diff --git a/2.3/BLFS/update_book.sh b/2.3/BLFS/update_book.sh deleted file mode 100755 index e37284c..0000000 --- a/2.3/BLFS/update_book.sh +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/bash -# -# $Id$ -# -set -e - -declare -r SVN="svn://svn.linuxfromscratch.org" - -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 -[[ $? > 0 ]] && echo -e "\n\tERROR: func_packages did not load..\n" && exit - -#----------------------------# -BOOK_Source() { # -#----------------------------# -: < /dev/null - svn up - popd 1> /dev/null - echo -e "\n\tBook sources updated." - else - echo -e "\n\tLooks like $BLFS_XML is not a svn working copy." - echo -e "\tSkipping BLFS sources update.\n" - fi - ;; - - get ) - [[ ! -d $BLFS_XML ]] && mkdir -pv $BLFS_XML - svn co $SVN/BLFS/$TREE $BLFS_XML 2>&1 - ;; - * ) - echo -e "\n\tUnknown option ${DOC_MODE} ignored.\n" - ;; - esac -} - -[ "${DOC_MODE}" != "none" ] && BOOK_Source - -if [ "${DOC_MODE}" = "none" ] ; then - echo -en "\n\tGenerating packages database file ..." - LC_ALL=C && generate_packages - echo "done." - - echo -en "\tGenerating alsa dependencies list ..." - generate_alsa - echo "done." - - echo -en "\tGenerating gnome-core dependencies list ..." - generate_gnome_core - echo "done." - - echo -en "\tGenerating gnome-full dependencies list ..." - generate_gnome_full - echo "done." - - 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 - diff --git a/2.3/CLFS/clfs.xsl b/2.3/CLFS/clfs.xsl deleted file mode 100644 index f0e871e..0000000 --- a/2.3/CLFS/clfs.xsl +++ /dev/null @@ -1,328 +0,0 @@ - - - %general-entities; -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00 - - - - 0 - - - - - - - - - - - - #!/tools/bin/bash set +h - - - #!/bin/bash set +h - - - - set -e - - - - cd $PKGDIR - - tar -xvf ../vim-&vim-version;-lang.* --strip-components=1 - - - - exit - - - - - - - - - - - - - - - - - - make -k - - >> $TEST_LOG 2>&1 || true - - - - >> $TEST_LOG 2>&1 - - || true - - - - - - - - - - - - - tar.* - - - - - - - export LANG= - - - - - - - - - make mrproper - - cp -v ../bootkernel-config .config - - - cp -v ../kernel-config .config - - - - - - - - - - - - - - - - - - -k check - - >> $TEST_LOG 2>&1 || true - - - - >> $TEST_LOG 2>&1 - - || true - - - - - - - - - - - - - - - make -k check >> $TEST_LOG 2>&1 || true - - - - >> $TEST_LOG 2>&1 - - || true - - - - - - - - - - - - - - >> $TEST_LOG 2>&1 || true - - - >> $TEST_LOG 2>&1 - - || true - - - - - - - - - - - - >> $TEST_LOG - - - - - - - || true - - - - - - - - - - - - - - - - - - - - - - - -m32 -mcpu=ultrasparc -mtune=ultrasparc - - - -m32 -mcpu=ultrasparc3 -mtune=ultrasparc3 - - - - - - - -m64 -mcpu=ultrasparc -mtune=ultrasparc - - - -m64 -mcpu=ultrasparc3 -mtune=ultrasparc3 - - - - - - - -mcpu=ultrasparc -mtune=ultrasparc - - - -mcpu=ultrasparc3 -mtune=ultrasparc3 - - - - - - - **EDITME - - EDITME** - - - - - diff --git a/2.3/CLFS/master.sh b/2.3/CLFS/master.sh deleted file mode 100644 index 0c79135..0000000 --- a/2.3/CLFS/master.sh +++ /dev/null @@ -1,1002 +0,0 @@ -#!/bin/bash -# $Id$ - - -orphan_scripts="" # 2 scripts do not fit BOOT_Makefiles LUSER environment - - -#--------------------------------------# -host_prep_Makefiles() { # -#--------------------------------------# - local CLFS_HOST - - echo "${tab_}${GREEN}Processing... ${L_arrow}host prep files ( SETUP ) ${R_arrow}" - - # defined here, only for ease of reading - CLFS_HOST="$(echo $MACHTYPE | sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")" -( -cat << EOF -023-creatingtoolsdir: - @\$(call echo_message, Building) - @mkdir \$(MOUNT_PT)/tools && \\ - rm -f /tools && \\ - ln -s \$(MOUNT_PT)/tools / - @\$(call housekeeping) - -024-creatingcrossdir: 023-creatingtoolsdir - @\$(call echo_message, Building) - @mkdir -v \$(MOUNT_PT)/cross-tools && \\ - rm -f /cross-tools && \\ - ln -s \$(MOUNT_PT)/cross-tools / - @\$(call housekeeping) - -025-addinguser: 024-creatingcrossdir - @\$(call echo_message, Building) - @if [ ! -d \$(LUSER_HOME) ]; then \\ - groupadd \$(LGROUP); \\ - useradd -s /bin/bash -g \$(LGROUP) -m -k /dev/null \$(LUSER); \\ - else \\ - touch luser-exist; \\ - fi; - @chown \$(LUSER) \$(MOUNT_PT)/tools && \\ - chown \$(LUSER) \$(MOUNT_PT)/cross-tools && \\ - chmod -R a+wt \$(MOUNT_PT)/\$(SCRIPT_ROOT) && \\ - chmod a+wt \$(SRCSDIR) - @\$(call housekeeping) - -026-settingenvironment: 025-addinguser - @\$(call echo_message, Building) - @if [ -f \$(LUSER_HOME)/.bashrc -a ! -f \$(LUSER_HOME)/.bashrc.XXX ]; then \\ - mv \$(LUSER_HOME)/.bashrc \$(LUSER_HOME)/.bashrc.XXX; \\ - fi; - @if [ -f \$(LUSER_HOME)/.bash_profile -a ! -f \$(LUSER_HOME)/.bash_profile.XXX ]; then \\ - mv \$(LUSER_HOME)/.bash_profile \$(LUSER_HOME)/.bash_profile.XXX; \\ - fi; - @echo "set +h" > \$(LUSER_HOME)/.bashrc && \\ - echo "umask 022" >> \$(LUSER_HOME)/.bashrc && \\ - echo "CLFS=\$(MOUNT_PT)" >> \$(LUSER_HOME)/.bashrc && \\ - echo "LC_ALL=POSIX" >> \$(LUSER_HOME)/.bashrc && \\ - echo "PATH=/cross-tools/bin:/bin:/usr/bin" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export CLFS LC_ALL PATH" >> \$(LUSER_HOME)/.bashrc && \\ - echo "" >> \$(LUSER_HOME)/.bashrc && \\ - echo "unset CFLAGS" >> \$(LUSER_HOME)/.bashrc && \\ - echo "unset CXXFLAGS" >> \$(LUSER_HOME)/.bashrc && \\ - echo "" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export CLFS_HOST=\"${CLFS_HOST}\"" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export CLFS_TARGET=\"${TARGET}\"" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export CLFS_TARGET32=\"${TARGET32}\"" >> \$(LUSER_HOME)/.bashrc && \\ - echo "source $JHALFSDIR/envars" >> \$(LUSER_HOME)/.bashrc - @chown \$(LUSER):\$(LGROUP) \$(LUSER_HOME)/.bashrc && \\ - touch envars && \\ - chmod -R a+wt \$(MOUNT_PT) && \\ - chown -R \$(LUSER) \$(MOUNT_PT)/\$(SCRIPT_ROOT) - @\$(call housekeeping) -EOF -) >> $MKFILE.tmp - host_prep=" 023-creatingtoolsdir 024-creatingcrossdir 026-settingenvironment" - -} - -#--------------------------------------# -cross_tools_Makefiles() { # -#--------------------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}cross tools ( LUSER ) ${R_arrow}" - - for file in cross-tools/* ; do - # Keep the script file name - this_script=`basename $file` - # - # Skip this script... - case $this_script in - *cflags* | *variables* ) # work done in host_prep_Makefiles - continue; ;; - *) ;; - esac - # - # Set the dependency for the first target. - if [ -z $PREV ] ; then PREV=026-settingenvironment ; fi - - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - cross_tools="$cross_tools $this_script" - - # Grab the name of the target (minus the -headers or -cross in the case of gcc - # and binutils in chapter 5) - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' \ - -e 's@-static@@' \ - -e 's@-final@@' \ - -e 's@-64@@' \ - -e 's@-n32@@'` - pkg_tarball=$(get_package_tarball_name $name) - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - # - [[ "$pkg_tarball" != "" ]] && LUSER_wrt_unpack "$pkg_tarball" - # - LUSER_wrt_RunAsUser "${file}" - # - [[ "$pkg_tarball" != "" ]] && LUSER_RemoveBuildDirs "${name}" - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done # for file in .... -} - -#--------------------------------------# -temptools_Makefiles() { # -#--------------------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}temp system ( LUSER ) ${R_arrow}" - - for file in temp-system/* ; do - # Keep the script file name - this_script=`basename $file` - # - # Deal with any odd scripts.. - case $this_script in - *choose) # The choose script will fail if you cannot enter the new environment - # If the 'boot' build method was chosen don't run the script - [[ $METHOD = "boot" ]] && continue; ;; - *) ;; - esac - - # - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - temptools="$temptools $this_script" - - # - # Grab the name of the target, strip id number, XXX-script - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@'` - # - pkg_tarball=$(get_package_tarball_name $name) - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - # - # 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" != "" ]] && LUSER_wrt_unpack "$pkg_tarball" - [[ "$pkg_tarball" != "" ]] && [[ "$OPTIMIZE" = "2" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - # - LUSER_wrt_RunAsUser "${file}" - # - [[ "$pkg_tarball" != "" ]] && LUSER_RemoveBuildDirs "${name}" - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - done # for file in .... -} - - -#--------------------------------------# -chroot_Makefiles() { # -#--------------------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}tmptools CHROOT ( CHROOT ) ${R_arrow}" - - for file in chroot/* ; do - # Keep the script file name - this_script=`basename $file` - # - # Skipping scripts is done now and not included in the build tree. - case $this_script in - *chroot*) continue ;; - esac - - # - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - case "${this_script}" in - *kernfs) orphan_scripts="${orphan_scripts} ${this_script}" ;; - *) chroottools="$chroottools $this_script" ;; - esac - - # Grab the name of the target, strip id number, XXX-script - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@'` - - pkg_tarball=$(get_package_tarball_name $name) - - # This is very ugly:: util-linux is in /chroot but must be run under LUSER - # .. Customized makefile entry - case "${this_script}" in - *util-linux) - LUSER_wrt_target "${this_script}" "$PREV" - LUSER_wrt_unpack "$pkg_tarball" - [[ "$OPTIMIZE" = "2" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - LUSER_wrt_RunAsUser "${file}" - LUSER_RemoveBuildDirs "${name}" - wrt_touch - temptools="$temptools $this_script" - continue ;; - esac - - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - CHROOT_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - # Insert instructions for unpacking the package and changing directories - # - if [ "$pkg_tarball" != "" ] ; then - CHROOT_Unpack "$pkg_tarball" - [[ "$OPTIMIZE" = "2" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - fi - # - # Select a script execution method - case $this_script in - *kernfs) wrt_RunAsRoot "${file}" ;; - *) CHROOT_wrt_RunAsRoot "${file}" ;; - esac - # - # Housekeeping...remove the build directory(ies), except if the package build fails. - [[ "$pkg_tarball" != "" ]] && CHROOT_wrt_RemoveBuildDirs "${name}" - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done # for file in... -} - - -#--------------------------------------# -boot_Makefiles() { # -#--------------------------------------# - - echo "${tab_}${GREEN}Processing... ${L_arrow}tmptools BOOT ( LUSER ) ${R_arrow}" - # - # Create a target bootable partition containing a compile environment. Later - # on we boot into this environment and contine the build. - # - for file in boot/* ; do - # Keep the script file name - this_script=`basename $file` - - # A little housekeeping on the scripts - case $this_script in - *grub | *aboot | *colo | *silo | *arcload | *lilo ) continue ;; - *whatnext*) continue ;; - *fstab) [[ ! -z ${FSTAB} ]] && cp ${FSTAB} $BUILDDIR/sources/fstab ;; - *kernel) # if there is no kernel config file do not build the kernel - [[ -z $CONFIG ]] && continue - # Copy the config file to /sources with a standardized name - cp $BOOT_CONFIG $BUILDDIR/sources/bootkernel-config - ;; - esac - # - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - case "${this_script}" in - *changingowner) orphan_scripts="${orphan_scripts} ${this_script}" ;; - *devices) orphan_scripts="${orphan_scripts} ${this_script}" ;; - *) boottools="$boottools $this_script" ;; - esac - # - # Grab the name of the target, strip id number and misc words. - case $this_script in - *kernel) name=linux ;; - *bootscripts) name="bootscripts-cross-lfs" ;; - *udev-rules) name="udev-cross-lfs" ;; - *grub-build) name=grub ;; - *-aboot-build) name=aboot ;; - *yaboot-build) name=yaboot ;; - *colo-build) name=colo ;; - *silo-build) name=silo ;; - *arcload-build) name=arcload ;; - *lilo-build) name=lilo ;; - *) name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' -e 's@-build@@' ` ;; - esac - # Identify the unique version naming scheme for the clfs bootscripts..(bad boys) - pkg_tarball=$(get_package_tarball_name $name) - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - # Insert instructions for unpacking the package and changing directories - # - [[ "$pkg_tarball" != "" ]] && LUSER_wrt_unpack "$pkg_tarball" - [[ "$pkg_tarball" != "" ]] && [[ "$OPTIMIZE" = "2" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - # - # Select a script execution method - case $this_script in - # The following 2 scripts are defined in the /boot directory but need - # to be run as a root user. Set them up here but run them in another phase - *changingowner*) wrt_RunAsRoot "${file}" ;; - *devices*) wrt_RunAsRoot "${file}" ;; - *fstab*) if [[ -n "$FSTAB" ]]; then - LUSER_wrt_CopyFstab - else - LUSER_wrt_RunAsUser "${file}" - fi - ;; - *) LUSER_wrt_RunAsUser "${file}" ;; - esac - # - # Housekeeping...remove any build directory(ies) except if the package build fails. - [[ "$pkg_tarball" != "" ]] && LUSER_RemoveBuildDirs "${name}" - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done -} - - -#--------------------------------------# -testsuite_tools_Makefiles() { # -#--------------------------------------# - - if [[ "${METHOD}" = "chroot" ]]; then - echo "${tab_}${GREEN}Processing... ${L_arrow}(chroot) testsuite tools ( CHROOT ) ${R_arrow}" - else - echo "${tab_}${GREEN}Processing... ${L_arrow}(boot) testsuite tools ( ROOT ) ${R_arrow}" - PREV="" - fi - - for file in testsuite-tools/* ; do - # Keep the script file name - this_script=`basename $file` - - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - testsuitetools="$testsuitetools $this_script" - - # Grab the name of the target, strip id number, XXX-script - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@'\ - -e 's@-64bit@@' \ - -e 's@-64@@' \ - -e 's@64@@' \ - -e 's@n32@@'` - - pkg_tarball=$(get_package_tarball_name $name) - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - CHROOT_wrt_target "${this_script}" "$PREV" - # - CHROOT_Unpack "$pkg_tarball" - [[ "$OPTIMIZE" = "2" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - # - CHROOT_wrt_RunAsRoot "${file}" - # - CHROOT_wrt_RemoveBuildDirs "${name}" - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done -} - - -#--------------------------------------# -final_system_Makefiles() { # -#--------------------------------------# - # Set envars and scripts for iteration targets - if [[ -z "$1" ]] ; then - local N="" - # In boot method the makesys phase was initiated in testsuite_tools_makefile - [[ "${METHOD}" = "boot" ]] && [[ "$TEST" = 0 ]] && PREV="" - else - local N=-build_$1 - local basicsystem="" - mkdir final-system$N - cp final-system/* final-system$N - for script in final-system$N/* ; do - # Overwrite existing symlinks, files, and dirs - sed -e 's/ln -sv/&f/g' \ - -e 's/mv -v/&f/g' \ - -e 's/mkdir -v/&p/g' -i ${script} - # Rename the scripts - mv ${script} ${script}$N - done - # Remove Bzip2 binaries before make install (CLFS-1.0 compatibility) - sed -e 's@make install@rm -vf /usr/bin/bz*\n&@' -i final-system$N/*-bzip2$N - # Delete *old Readline libraries just after make install - sed -e 's@make install@&\nrm -v /lib/lib{history,readline}*old@' -i final-system$N/*-readline$N - fi - - if [[ "${METHOD}" = "chroot" ]]; then - echo "${tab_}${GREEN}Processing... ${L_arrow}(chroot) final system$N ( CHROOT ) ${R_arrow}" - else - echo "${tab_}${GREEN}Processing... ${L_arrow}(boot) final system$N ( ROOT ) ${R_arrow}" - fi - - for file in final-system$N/* ; do - # Keep the script file name - this_script=`basename $file` - - # Test if the stripping phase must be skipped. - # Skip alsp temp-perl for iterative runs - case $this_script in - *stripping*) [[ "$STRIP" = "n" ]] && continue ;; - *temp-perl*) [[ -n "$N" ]] && continue ;; - esac - - # Grab the name of the target, strip id number, XXX-script - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' \ - -e 's@temp-@@' \ - -e 's@-64bit@@' \ - -e 's@-64@@' \ - -e 's@64@@' \ - -e 's@n32@@' \ - -e 's,'$N',,'` - - # Find the version of the command files, if it corresponds with the building of - # a specific package. We need this here to can skip scripts not needed for - # iterations rebuilds - pkg_tarball=$(get_package_tarball_name $name) - - if [[ "$pkg_tarball" = "" ]] && [[ -n "$N" ]] ; then - case "${this_script}" in - *stripping*) ;; - *) continue ;; - esac - fi - - # Append each name of the script files to a list (this will become - # the names of the targets in the Makefile - basicsystem="$basicsystem ${this_script}" - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - CHROOT_wrt_target "${this_script}" "$PREV" - - # If $pkg_tarball isn't empty, we've got a package... - if [ "$pkg_tarball" != "" ] ; then - # Touch timestamp file if installed files logs will be created. - # But only for the firt build when running iterative builds. - if [ "${INSTALL_LOG}" = "y" ] && [ "x${N}" = "x" ] ; then - CHROOT_wrt_TouchTimestamp - fi - CHROOT_Unpack "$pkg_tarball" - # If the testsuites must be run, initialize the log file - case $name in - binutils | gcc | glibc ) - [[ "$TEST" != "0" ]] && CHROOT_wrt_test_log "${this_script}" - ;; - * ) - [[ "$TEST" = "2" ]] || [[ "$TEST" = "3" ]] && CHROOT_wrt_test_log "${this_script}" - ;; - esac - # If using optimizations, write the instructions - [[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - fi - # - CHROOT_wrt_RunAsRoot "${file}" - # - # Write installed files log and remove the build directory(ies) - # except if the package build fails. - if [ "$pkg_tarball" != "" ] ; then - CHROOT_wrt_RemoveBuildDirs "$name" - if [ "${INSTALL_LOG}" = "y" ] && [ "x${N}" = "x" ] ; then - CHROOT_wrt_LogNewFiles "$name" - fi - fi - # - # Include a touch of the target name so make can check - # if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=${this_script} - # Set system_build envar for iteration targets - system_build=$basicsystem - done # for file in final-system/* ... -} - -#--------------------------------------# -bootscripts_Makefiles() { # -#--------------------------------------# - - if [[ "${METHOD}" = "chroot" ]]; then - echo "${tab_}${GREEN}Processing... ${L_arrow}(chroot) bootscripts ( CHROOT ) ${R_arrow}" - else - echo "${tab_}${GREEN}Processing... ${L_arrow}(boot) bootscripts ( ROOT ) ${R_arrow}" - fi - - for file in bootscripts/* ; do - # Keep the script file name - this_script=`basename $file` - - case $this_script in - *udev) continue ;; # This is not a script but a commentary, we want udev-rules - *console*) continue ;; # Use the files that came with the bootscripts - *) ;; - esac - - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - bootscripttools="$bootscripttools $this_script" - - # Grab the name of the target, strip id number, XXX-script - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@'\ - -e 's@-64bit@@' \ - -e 's@-64@@' \ - -e 's@64@@' \ - -e 's@n32@@'` - case $name in - *bootscripts*) name=bootscripts-cross-lfs ;; - *udev-rules) name=udev-cross-lfs ;; - esac - - pkg_tarball=$(get_package_tarball_name $name) - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - CHROOT_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - # - if [ "$pkg_tarball" != "" ] ; then - if [ "${INSTALL_LOG}" = "y" ] ; then - CHROOT_wrt_LogNewFiles "$name" - fi - CHROOT_Unpack "$pkg_tarball" - fi - # - CHROOT_wrt_RunAsRoot "${file}" - # - # Write installed files log and remove the build directory(ies) - # except if the package build fails. - if [ "$pkg_tarball" != "" ] ; then - CHROOT_wrt_RemoveBuildDirs "$name" - if [ "${INSTALL_LOG}" = "y" ] ; then - CHROOT_wrt_LogNewFiles "$name" - fi - fi - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done # for file in bootscripts/* ... -} - -#--------------------------------------# -bootable_Makefiles() { # -#--------------------------------------# - - if [[ "${METHOD}" = "chroot" ]]; then - echo "${tab_}${GREEN}Processing... ${L_arrow}(chroot) make bootable ( CHROOT ) ${R_arrow}" - else - echo "${tab_}${GREEN}Processing... ${L_arrow}(boot) make bootable ( ROOT ) ${R_arrow}" - fi - - - for file in bootable/* ; do - # Keep the script file name - this_script=`basename $file` - - # A little housekeeping on the scripts - case $this_script in - *grub | *aboot | *colo | *silo | *arcload | *lilo | *reboot* ) continue ;; - *fstab) [[ ! -z ${FSTAB} ]] && cp ${FSTAB} $BUILDDIR/sources/fstab ;; - *kernel) # if there is no kernel config file do not build the kernel - [[ -z $CONFIG ]] && continue - # Copy the config file to /sources with a standardized name - cp $CONFIG $BUILDDIR/sources/kernel-config - ;; - esac - # - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - bootabletools="$bootabletools $this_script" - # - # Grab the name of the target, strip id number and misc words. - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' -e 's@-build@@' ` - case $this_script in - *kernel*) name=linux - ;; - esac - - pkg_tarball=$(get_package_tarball_name $name) - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - CHROOT_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - # Insert instructions for unpacking the package and changing directories - # - if [ "$pkg_tarball" != "" ] ; then - if [ "${INSTALL_LOG}" = "y" ] ; then - CHROOT_wrt_LogNewFiles "$name" - fi - CHROOT_Unpack "$pkg_tarball" - fi - # - # Select a script execution method - case $this_script in - *fstab*) if [[ -n "$FSTAB" ]]; then - CHROOT_wrt_CopyFstab - else - CHROOT_wrt_RunAsRoot "${file}" - fi - ;; - *) CHROOT_wrt_RunAsRoot "${file}" - ;; - esac - # - # Write installed files log and remove the build directory(ies) - # except if the package build fails. - if [ "$pkg_tarball" != "" ] ; then - CHROOT_wrt_RemoveBuildDirs "$name" - if [ "${INSTALL_LOG}" = "y" ] ; then - CHROOT_wrt_LogNewFiles "$name" - fi - fi - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done - -} - - -#--------------------------------------# -build_Makefile() { # Construct a Makefile from the book scripts -#--------------------------------------# - # - # Script crashes if error trapping is on - # -set +e - declare -f method_cmds -set -e - - echo "...Creating Makefile... ${BOLD}START${OFF}" - - cd $JHALFSDIR/${PROGNAME}-commands - # Start with a clean files - >$MKFILE - >$MKFILE.tmp - - method_cmds=${METHOD}_Makefiles - - host_prep_Makefiles # mk_SETUP (SETUP) $host_prep - cross_tools_Makefiles # mk_CROSS (LUSER) $cross_tools - temptools_Makefiles # mk_TEMP (LUSER) $temptools - $method_cmds # mk_SYSTOOLS (CHROOT) $chroottools/$boottools - if [[ ! $TEST = "0" ]]; then - testsuite_tools_Makefiles # mk_SYSTOOLS (CHROOT) $testsuitetools - fi - final_system_Makefiles # mk_FINAL (CHROOT) $basicsystem - # Add the iterations targets, if needed - [[ "$COMPARE" = "y" ]] && wrt_compare_targets - bootscripts_Makefiles # mk_BOOTSCRIPT (CHROOT) $bootscripttools - bootable_Makefiles # mk_BOOTABLE (CHROOT) $bootabletools - - # Add the CUSTOM_TOOLS targets, if needed - [[ "$CUSTOM_TOOLS" = "y" ]] && wrt_CustomTools_target - # Add the BLFS_TOOL targets, if needed - [[ "$BLFS_TOOL" = "y" ]] && wrt_blfs_tool_targets - - # Add a header, some variables and include the function file - # to the top of the real Makefile. - wrt_Makefile_header - - # Add chroot commands - if [ "$METHOD" = "chroot" ] ; then - CHROOT_LOC="`whereis -b chroot | cut -d " " -f2`" - chroot=`cat chroot/*chroot* | \ - sed -e "s@chroot@$CHROOT_LOC@" \ - -e '/#!\/bin\/bash/d' \ - -e '/^export/d' \ - -e '/^logout/d' \ - -e 's@ \\\@ @g' | \ - tr -d '\n' | \ - sed -e 's/ */ /g' \ - -e 's|\\$|&&|g' \ - -e 's|exit||g' \ - -e 's|$| -c|' \ - -e 's|"$${CLFS}"|$(MOUNT_PT)|'\ - -e 's|set -e||' \ - -e 's|set +h||'` - echo -e "CHROOT1= $chroot\n" >> $MKFILE - fi - -################## CHROOT #################### - -if [[ "${METHOD}" = "chroot" ]]; then -( -cat << EOF - -all: ck_UID mk_SETUP mk_CROSS mk_SUDO mk_SYSTOOLS create-sbu_du-report mk_CUSTOM_TOOLS mk_BLFS_TOOL - @sudo make do-housekeeping - @echo "$VERSION - jhalfs build" > clfs-release && \\ - sudo mv clfs-release \$(MOUNT_PT)/etc - @\$(call echo_finished,$VERSION) - -ck_UID: - @if [ \`id -u\` = "0" ]; then \\ - echo "+--------------------------------------------------+"; \\ - echo "|You cannot run this makefile from the root account|"; \\ - echo "+--------------------------------------------------+"; \\ - exit 1; \\ - fi - -#---------------AS ROOT -mk_SETUP: - @\$(call echo_SU_request) - @sudo make BREAKPOINT=\$(BREAKPOINT) SETUP - @touch \$@ - -#---------------AS LUSER -mk_CROSS: mk_SETUP - @\$(call echo_PHASE,Cross and Temporary Tools) - @(sudo \$(SU_LUSER) "source .bashrc && cd \$(MOUNT_PT)/\$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) AS_LUSER" ) - @sudo make restore-luser-env - @touch \$@ - -mk_SUDO: mk_CROSS - @sudo make BREAKPOINT=\$(BREAKPOINT) SUDO - @touch \$@ - -#---------------CHROOT JAIL -mk_SYSTOOLS: mk_SUDO - @\$(call echo_CHROOT_request) - @\$(call echo_PHASE, CHROOT JAIL ) - @( sudo \$(CHROOT1) "cd \$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) PREP_CHROOT_JAIL") - @( sudo \$(CHROOT1) "cd \$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) CHROOT_JAIL") - @touch \$@ - -mk_CUSTOM_TOOLS: create-sbu_du-report - @if [ "\$(ADD_CUSTOM_TOOLS)" = "y" ]; then \\ - \$(call sh_echo_PHASE,Building CUSTOM_TOOLS); \\ - sudo mkdir -p ${BUILDDIR}${TRACKING_DIR}; \\ - (sudo \$(CHROOT1) "cd \$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) CUSTOM_TOOLS"); \\ - fi; - @touch \$@ - -mk_BLFS_TOOL: mk_CUSTOM_TOOLS - @if [ "\$(ADD_BLFS_TOOLS)" = "y" ]; then \\ - \$(call sh_echo_PHASE,Building BLFS_TOOL); \\ - sudo mkdir -p $BUILDDIR$TRACKING_DIR; \\ - sudo \$(CHROOT1) "cd \$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) BLFS_TOOL"; \\ - fi; - @touch \$@ - -SETUP: $host_prep -AS_LUSER: $cross_tools $temptools -SUDO: $orphan_scripts -PREP_CHROOT_JAIL: SHELL=/tools/bin/bash -PREP_CHROOT_JAIL: ${chroottools} -CHROOT_JAIL: SHELL=/tools/bin/bash -CHROOT_JAIL: $testsuitetools $basicsystem $bootscripttools $bootabletools -CUSTOM_TOOLS: $custom_list -BLFS_TOOL: $blfs_tool - - -create-sbu_du-report: mk_SYSTOOLS - @\$(call echo_message, Building) - @if [ "\$(ADD_REPORT)" = "y" ]; then \\ - ./create-sbu_du-report.sh logs $VERSION; \\ - \$(call echo_report,$VERSION-SBU_DU-$(date --iso-8601).report); \\ - fi; - @touch \$@ - -do-housekeeping: - @-umount \$(MOUNT_PT)/dev/pts - @-umount \$(MOUNT_PT)/dev/shm - @-umount \$(MOUNT_PT)/dev - @-umount \$(MOUNT_PT)/sys - @-umount \$(MOUNT_PT)/proc - @-rm /tools /cross-tools - @-if [ ! -f luser-exist ]; then \\ - userdel \$(LUSER); \\ - rm -rf \$(LUSER_HOME); \\ - fi; - -EOF -) >> $MKFILE - -fi - -################### BOOT ##################### - -if [[ "${METHOD}" = "boot" ]]; then -( -cat << EOF - -all: ck_UID mk_SETUP mk_CROSS mk_SUDO - @sudo make restore-luser-env - @sudo make do-housekeeping - @\$(call echo_boot_finished,$VERSION) - -makesys: mk_FINAL mk_CUSTOM_TOOLS mk_BLFS_TOOL - @echo "$VERSION - jhalfs build" > /etc/clfs-release - @\$(call echo_finished,$VERSION) - - -ck_UID: - @if [ \`id -u\` = "0" ]; then \\ - echo "+--------------------------------------------------+"; \\ - echo "|You cannot run this makefile from the root account|"; \\ - echo "|However, if this is the boot environment |"; \\ - echo "| the command you are looking for is |"; \\ - echo "| make makesys |"; \\ - echo "| to finish off the build |"; \\ - echo "+--------------------------------------------------+"; \\ - exit 1; \\ - fi - -#---------------AS ROOT - -mk_SETUP: - @\$(call echo_SU_request) - @sudo make BREAKPOINT=\$(BREAKPOINT) SETUP - @touch \$@ - -#---------------AS LUSER - -mk_CROSS: mk_SETUP - @\$(call echo_PHASE,Cross Tool) - @(sudo \$(SU_LUSER) "source .bashrc && cd \$(MOUNT_PT)/\$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) AS_LUSER" ) - @touch \$@ - -mk_SUDO: mk_CROSS - @sudo make BREAKPOINT=\$(BREAKPOINT) SUDO - @touch \$@ - -#---------------AS ROOT - -mk_FINAL: - @\$(call echo_PHASE,Final System) - @( source /root/.bash_profile && make BREAKPOINT=\$(BREAKPOINT) AS_ROOT ) - @touch \$@ - -mk_CUSTOM_TOOLS: mk_FINAL - @if [ "\$(ADD_CUSTOM_TOOLS)" = "y" ]; then \\ - \$(call sh_echo_PHASE,Building CUSTOM_TOOLS); \\ - mkdir -p ${TRACKING_DIR}; \\ - ( source /root/.bash_profile && make BREAKPOINT=\$(BREAKPOINT) CUSTOM_TOOLS ); \\ - fi; - @touch \$@ - -mk_BLFS_TOOL: mk_CUSTOM_TOOLS - @if [ "\$(ADD_BLFS_TOOLS)" = "y" ]; then \\ - \$(call sh_echo_PHASE,Building BLFS_TOOL); \\ - mkdir -p $TRACKING_DIR; \\ - ( source /root/.bash_profile && make BREAKPOINT=\$(BREAKPOINT) BLFS_TOOL ); \\ - fi - @touch \$@ - -SETUP: $host_prep -AS_LUSER: $cross_tools $temptools ${boottools} -SUDO: $orphan_scripts -AS_ROOT: SHELL=/tools/bin/bash -AS_ROOT: $testsuitetools $basicsystem $bootscripttools $bootabletools -CUSTOM_TOOLS: $custom_list -BLFS_TOOL: $blfs_tool - -do-housekeeping: - @-rm /tools /cross-tools - @-if [ ! -f luser-exist ]; then \\ - userdel \$(LUSER); \\ - rm -rf \$(LUSER_HOME); \\ - fi; - -EOF -) >> $MKFILE -fi - -( - cat << EOF - -restore-luser-env: - @\$(call echo_message, Building) - @if [ -f \$(LUSER_HOME)/.bashrc.XXX ]; then \\ - mv -f \$(LUSER_HOME)/.bashrc.XXX \$(LUSER_HOME)/.bashrc; \\ - fi; - @if [ -f \$(LUSER_HOME)/.bash_profile.XXX ]; then \\ - mv \$(LUSER_HOME)/.bash_profile.XXX \$(LUSER_HOME)/.bash_profile; \\ - fi; - @chown \$(LUSER):\$(LGROUP) \$(LUSER_HOME)/.bash* && \\ - touch \$@ && \\ - echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\ - echo --------------------------------------------------------------------------------\$(WHITE) - -######################################################## - - -EOF -) >> $MKFILE - - # Bring over the items from the Makefile.tmp - cat $MKFILE.tmp >> $MKFILE - rm $MKFILE.tmp - - echo "Creating Makefile... ${BOLD}DONE${OFF}" -} diff --git a/2.3/CLFS2/clfs2.xsl b/2.3/CLFS2/clfs2.xsl deleted file mode 100644 index 76fa0f0..0000000 --- a/2.3/CLFS2/clfs2.xsl +++ /dev/null @@ -1,153 +0,0 @@ - - - %general-entities; -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00 - - - - 0 - - - - - - - - - - #!/bin/bash set +h - - set -e - - - - cd $PKGDIR - - tar -xvf ../vim-&vim-version;-lang.* --strip-components=1 - - - - exit - - - - - - - - - - - - - - - - - - - - tar.* - - - - - - - export LANG= - - - - - - - - - make mrproper - cp -v ../kernel-config .config - - - - - - - || true - - - - - - - - - - - - - - - - - - - **EDITME - - EDITME** - - - - - diff --git a/2.3/CLFS2/master.sh b/2.3/CLFS2/master.sh deleted file mode 100644 index f3d97fb..0000000 --- a/2.3/CLFS2/master.sh +++ /dev/null @@ -1,536 +0,0 @@ -#!/bin/bash -# $Id$ - -################################### -### FUNCTIONS ### -################################### - - -#----------------------------# -host_prep_Makefiles() { # Initialization of the system -#----------------------------# - local CLFS_HOST - - echo "${tab_}${GREEN}Processing... ${L_arrow}host prep files ( SETUP ) ${R_arrow}" - - # defined here, only for ease of reading - CLFS_HOST="$(echo $MACHTYPE | sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")" -( -cat << EOF - -025-addinguser: - @\$(call echo_message, Building) - @if [ ! -d \$(LUSER_HOME) ]; then \\ - groupadd \$(LGROUP); \\ - useradd -s /bin/bash -g \$(LGROUP) -m -k /dev/null \$(LUSER); \\ - else \\ - touch luser-exist; \\ - fi; - @\$(call housekeeping) - -026-settingenvironment: 025-addinguser - @\$(call echo_message, Building) - @if [ -f \$(LUSER_HOME)/.bashrc -a ! -f \$(LUSER_HOME)/.bashrc.XXX ]; then \\ - mv \$(LUSER_HOME)/.bashrc \$(LUSER_HOME)/.bashrc.XXX; \\ - fi; - @if [ -f \$(LUSER_HOME)/.bash_profile -a ! -f \$(LUSER_HOME)/.bash_profile.XXX ]; then \\ - mv \$(LUSER_HOME)/.bash_profile \$(LUSER_HOME)/.bash_profile.XXX; \\ - fi; - @echo "set +h" > \$(LUSER_HOME)/.bashrc && \\ - echo "umask 022" >> \$(LUSER_HOME)/.bashrc && \\ - echo "CLFS=\$(MOUNT_PT)" >> \$(LUSER_HOME)/.bashrc && \\ - echo "LC_ALL=POSIX" >> \$(LUSER_HOME)/.bashrc && \\ - echo "PATH=\$(MOUNT_PT)/cross-tools/bin:/bin:/usr/bin" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export CLFS LC_ALL PATH" >> \$(LUSER_HOME)/.bashrc && \\ - echo "" >> \$(LUSER_HOME)/.bashrc && \\ - echo "unset CFLAGS" >> \$(LUSER_HOME)/.bashrc && \\ - echo "unset CXXFLAGS" >> \$(LUSER_HOME)/.bashrc && \\ - echo "" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export CLFS_HOST=\"${CLFS_HOST}\"" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export CLFS_TARGET=\"${TARGET}\"" >> \$(LUSER_HOME)/.bashrc && \\ - echo "source $JHALFSDIR/envars" >> \$(LUSER_HOME)/.bashrc - @chown \$(LUSER):\$(LGROUP) \$(LUSER_HOME)/.bashrc && \\ - touch envars && \\ - chown \$(LUSER):\$(LGROUP) envars - @\$(call housekeeping) - -027-create-directories: 026-settingenvironment - @\$(call echo_message, Building) - - @mkdir -p \$(MOUNT_PT)/{bin,boot,dev,{etc/,}opt,home,lib,mnt} - @mkdir -p \$(MOUNT_PT)/{proc,media/{floppy,cdrom},sbin,srv,sys} - @mkdir -p \$(MOUNT_PT)/var/{lock,log,mail,run,spool} - @mkdir -p \$(MOUNT_PT)/var/{opt,cache,lib/{misc,locate},local} - @install -d -m 0750 \$(MOUNT_PT)/root - @install -d -m 1777 \$(MOUNT_PT){/var,}/tmp - @mkdir -p \$(MOUNT_PT)/usr/{,local/}{bin,include,lib,sbin,src} - @mkdir -p \$(MOUNT_PT)/usr/{,local/}share/{doc,info,locale,man} - @mkdir -p \$(MOUNT_PT)/usr/{,local/}share/{misc,terminfo,zoneinfo} - @mkdir -p \$(MOUNT_PT)/usr/{,local/}share/man/man{1,2,3,4,5,6,7,8} - @for dir in \$(MOUNT_PT)/usr{,/local}; do \\ - ln -s share/{man,doc,info} \$\$dir ; \\ - done - @\$(call housekeeping) - -028-creating-sysfile: 027-create-directories - @\$(call echo_message, Building) - - @touch \$(MOUNT_PT)/etc/mtab - @echo "root::0:0:root:/root:/bin/bash" >> \$(MOUNT_PT)/etc/passwd - @echo "root:x:0:" >> \$(MOUNT_PT)/etc/group - @echo "bin:x:1:" >> \$(MOUNT_PT)/etc/group - @echo "sys:x:2:" >> \$(MOUNT_PT)/etc/group - @echo "kmem:x:3" >> \$(MOUNT_PT)/etc/group - @echo "tty:x:4:" >> \$(MOUNT_PT)/etc/group - @echo "tape:x:5:" >> \$(MOUNT_PT)/etc/group - @echo "daemon:x:6:" >> \$(MOUNT_PT)/etc/group - @echo "floppy:x:7:" >> \$(MOUNT_PT)/etc/group - @echo "disk:x:8:" >> \$(MOUNT_PT)/etc/group - @echo "lp:x:9:" >> \$(MOUNT_PT)/etc/group - @echo "dialout:x:10:" >> \$(MOUNT_PT)/etc/group - @echo "audio:x:11:" >> \$(MOUNT_PT)/etc/group - @echo "video:x:12:" >> \$(MOUNT_PT)/etc/group - @echo "utmp:x:13:" >> \$(MOUNT_PT)/etc/group - @echo "usb:x:14:" >> \$(MOUNT_PT)/etc/group - @echo "cdrom:x:15:" >> \$(MOUNT_PT)/etc/group - - @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 \$(LUSER) \$(MOUNT_PT) && \\ - chmod -R a+w \$(MOUNT_PT)/\$(SCRIPT_ROOT) && \\ - chmod -R a+w \$(SRCSDIR) - @\$(call housekeeping) - -EOF -) >> $MKFILE.tmp - - host_prep=" 025-addinguser 026-settingenvironment 027-create-directories 028-creating-sysfile" -} - - -#-----------------------------# -cross_tools_Makefiles() { # -#-----------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}cross tools ( LUSER ) ${R_arrow}" - - for file in cross-tools/* ; do - # Keep the script file name - this_script=`basename $file` - # - # Skip this script... - case $this_script in - *cflags* | *variables* ) # work done in host_prep_Makefiles - continue ;; - *) ;; - esac - - # - # Set the dependency for the first target. - if [ -z $PREV ] ; then PREV=028-creating-sysfile ; fi - - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - cross_tools="$cross_tools $this_script" - - # Grab the name of the target (minus the -headers or -cross in the case of gcc - # and binutils in chapter 5) - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' \ - -e 's@-static@@' \ - -e 's@-final@@' \ - -e 's@-64@@' \ - -e 's@-n32@@'` - case $name in - glibc-headers) name="glibc" ;; - esac - pkg_tarball=$(get_package_tarball_name $name) - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - if [ "$pkg_tarball" != "" ] ; then - LUSER_wrt_unpack "$pkg_tarball" - # If using optimizations, write the instructions - [[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - fi - # - LUSER_wrt_RunAsUser "${file}" - # - [[ "$pkg_tarball" != "" ]] && LUSER_RemoveBuildDirs "${name}" - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done # for file in .... -} - - - -#-----------------------------# -final_system_Makefiles() { # -#-----------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}final system ( LUSER ) ${R_arrow}" - - for file in final-system/* ; do - # Keep the script file name - this_script=`basename $file` - - # Test if the stripping phase must be skipped. - # Skip alsp temp-perl for iterative runs - case $this_script in - *stripping*) [[ "$STRIP" = "n" ]] && continue ;; - esac - - # Grab the name of the target, strip id number, XXX-script - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' \ - -e 's@temp-@@' \ - -e 's@-64bit@@' \ - -e 's@-64@@' \ - -e 's@64@@' \ - -e 's@n32@@'` - - # Find the version of the command files, if it corresponds with the building of - # a specific package. - pkg_tarball=$(get_package_tarball_name $name) - - # Append each name of the script files to a list (this will become - # the names of the targets in the Makefile - basicsystem="$basicsystem ${this_script}" - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - if [ "$pkg_tarball" != "" ] ; then - # Touch timestamp file if installed files logs will be created. - # But only for the firt build when running iterative builds. - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_TouchTimestamp - fi - LUSER_wrt_unpack "$pkg_tarball" - # If using optimizations, write the instructions - [[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - fi - # - LUSER_wrt_RunAsUser "${file}" - # - # Write installed files log and remove the build directory(ies) - # except if the package build fails. - if [ "$pkg_tarball" != "" ] ; then - LUSER_RemoveBuildDirs "${name}" - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_LogNewFiles "$name" - fi - fi - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=${this_script} - done # for file in final-system/* ... -} - - - -#-----------------------------# -bootscripts_Makefiles() { # -#-----------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}bootscripts ( LUSER ) ${R_arrow}" - - for file in bootscripts/* ; do - # Keep the script file name - this_script=`basename $file` - - case $this_script in - *udev) continue ;; # This is not a script but a commentary, we want udev-rules - *console*) continue ;; # Use the files that came with the bootscripts - *network*) continue ;; # Manually create these files - *) ;; - esac - - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - bootscripttools="$bootscripttools $this_script" - - # Grab the name of the target, strip id number, XXX-script - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@'\ - -e 's@-64bit@@' \ - -e 's@-64@@' \ - -e 's@64@@' \ - -e 's@n32@@'` - case $name in - *bootscripts*) name=bootscripts-cross-lfs ;; - *udev-rules) name=udev-cross-lfs ;; - esac - - pkg_tarball=$(get_package_tarball_name $name) - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - if [ "$pkg_tarball" != "" ] ; then - LUSER_wrt_unpack "$pkg_tarball" - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_TouchTimestamp - fi - fi - # - LUSER_wrt_RunAsUser "${file}" - # - if [ "$pkg_tarball" != "" ] ; then - LUSER_RemoveBuildDirs "${name}" - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_LogNewFiles "$name" - fi - fi - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done # for file in bootscripts/* ... - -} - - -#-----------------------------# -bootable_Makefiles() { # -#-----------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}make bootable ( LUSER ) ${R_arrow}" - - for file in bootable/* ; do - # Keep the script file name - this_script=`basename $file` - - # A little housekeeping on the scripts - case $this_script in - *grub | *aboot | *colo | *silo | *arcload | *lilo | *reboot* ) continue ;; - *fstab) [[ ! -z ${FSTAB} ]] && cp ${FSTAB} $BUILDDIR/sources/fstab ;; - *kernel) # if there is no kernel config file do not build the kernel - [[ -z $CONFIG ]] && continue - # Copy the config file to /sources with a standardized name - cp $CONFIG $BUILDDIR/sources/kernel-config - ;; - esac - # - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - # NOTE: new makfile format forces the last script, *chowning, into a separate - # phase. - case ${this_script} in - *chowning) chowning=" ${this_script}" ;; - *) bootable="$bootable $this_script" ;; - esac - # - # Grab the name of the target, strip id number and misc words. - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' -e 's@-build@@' ` - case $this_script in - *kernel*) name=linux - ;; - esac - - pkg_tarball=$(get_package_tarball_name $name) - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - if [ "$pkg_tarball" != "" ] ; then - LUSER_wrt_unpack "$pkg_tarball" - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_TouchTimestamp - fi - fi - # - # Select a script execution method - case $this_script in - *fstab*) if [[ -n "$FSTAB" ]]; then - LUSER_wrt_CopyFstab - else - LUSER_wrt_RunAsUser "${file}" - fi - ;; - *chowning) wrt_RunAsRoot "${file}" - ;; - *) LUSER_wrt_RunAsUser "${file}" - ;; - esac - # - # Housekeeping...remove any build directory(ies) except if the package build fails. - if [ "$pkg_tarball" != "" ] ; then - LUSER_RemoveBuildDirs "${name}" - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_LogNewFiles "$name" - fi - fi - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done - -} - - -#-----------------------------# -build_Makefile() { # Construct a Makefile from the book scripts -#-----------------------------# - echo "Creating Makefile... ${BOLD}START${OFF}" - - cd $JHALFSDIR/${PROGNAME}-commands - # Start with a clean Makefile.tmp file - >$MKFILE.tmp - - host_prep_Makefiles - cross_tools_Makefiles # $cross_tools - final_system_Makefiles # $basicsystem - bootscripts_Makefiles # $bootscripttools - bootable_Makefiles # $bootable - # Add the CUSTOM_TOOLS targets, if needed - [[ "$CUSTOM_TOOLS" = "y" ]] && wrt_CustomTools_target - # Add the BLFS_TOOL targets, if needed. - [[ "$BLFS_TOOL" = "y" ]] && wrt_blfs_tool_targets - - # Add a header, some variables and include the function file - # to the top of the real Makefile. - wrt_Makefile_header - - # Drop in the main target 'all:' and the chapter targets with each sub-target - # as a dependency. -( -cat << EOF - -all: ck_UID mk_SETUP mk_LUSER create-sbu_du-report mk_CUSTOM_TOOLS mk_BLFS_TOOL mk_ROOT - @sudo make restore-luser-env - @sudo make do-housekeeping - @\$(call echo_finished,$VERSION) - -ck_UID: - @if [ \`id -u\` = "0" ]; then \\ - echo "--------------------------------------------------"; \\ - echo "You cannot run this makefile from the root account"; \\ - echo "--------------------------------------------------"; \\ - exit 1; \\ - fi - -mk_SETUP: - @\$(call echo_SU_request) - @sudo make BREAKPOINT=\$(BREAKPOINT) SETUP - @touch \$@ - -mk_LUSER: mk_SETUP - @\$(call echo_SULUSER_request) - @(sudo \$(SU_LUSER) "source .bashrc && cd \$(MOUNT_PT)/\$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) LUSER" ) - @touch \$@ - -mk_CUSTOM_TOOLS: create-sbu_du-report - @if [ "\$(ADD_CUSTOM_TOOLS)" = "y" ]; then \\ - \$(call sh_echo_PHASE,Building CUSTOM_TOOLS); \\ - (sudo \$(SU_LUSER) "mkdir -p $BUILDDIR$TRACKING_DIR"); \\ - (sudo \$(SU_LUSER) "source .bashrc && cd \$(MOUNT_PT)/\$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) CUSTOM_TOOLS"); \\ - fi; - @touch \$@ - -mk_BLFS_TOOL: mk_CUSTOM_TOOLS - @if [ "\$(ADD_BLFS_TOOLS)" = "y" ]; then \\ - \$(call sh_echo_PHASE,Building BLFS_TOOL); \\ - (sudo \$(SU_LUSER) "mkdir -p $BUILDDIR$TRACKING_DIR"); \\ - (sudo \$(SU_LUSER) "source .bashrc && cd \$(MOUNT_PT)/\$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) BLFS_TOOL"); \\ - fi; - @touch \$@ - -mk_ROOT: create-sbu_du-report - @\$(call echo_SU_request) - @echo "$VERSION-sysroot - jhalfs build" > clfs-release && \\ - sudo mv clfs-release \$(MOUNT_PT)/etc - @sudo make BREAKPOINT=\$(BREAKPOINT) ROOT - @touch \$@ - -SETUP: $host_prep -LUSER: $cross_tools $basicsystem $bootscripttools $bootable -CUSTOM_TOOLS: $custom_list -BLFS_TOOL: $blfs_tool -ROOT: $chowning - - -create-sbu_du-report: mk_LUSER - @\$(call echo_message, Building) - @if [ "\$(ADD_REPORT)" = "y" ]; then \\ - ./create-sbu_du-report.sh logs $VERSION; \\ - \$(call echo_report,$VERSION-SBU_DU-$(date --iso-8601).report); \\ - fi; - @touch \$@ - -restore-luser-env: - @\$(call echo_message, Building) - @if [ -f \$(LUSER_HOME)/.bashrc.XXX ]; then \\ - mv -f \$(LUSER_HOME)/.bashrc.XXX \$(LUSER_HOME)/.bashrc; \\ - fi; - @if [ -f \$(LUSER_HOME)/.bash_profile.XXX ]; then \\ - mv \$(LUSER_HOME)/.bash_profile.XXX \$(LUSER_HOME)/.bash_profile; \\ - fi; - @chown \$(LUSER):\$(LGROUP) \$(LUSER_HOME)/.bash* && \\ - touch \$@ && \\ - echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\ - echo --------------------------------------------------------------------------------\$(WHITE) - -do-housekeeping: - @-if [ ! -f luser-exist ]; then \\ - userdel \$(LUSER); \\ - rm -rf \$(LUSER_HOME); \\ - fi; - -EOF -) >> $MKFILE - - # Bring over the items from the Makefile.tmp - cat $MKFILE.tmp >> $MKFILE - rm $MKFILE.tmp - echo "Creating Makefile... ${BOLD}DONE${OFF}" - -} diff --git a/2.3/CLFS3/clfs3.xsl b/2.3/CLFS3/clfs3.xsl deleted file mode 100644 index e0ec0f9..0000000 --- a/2.3/CLFS3/clfs3.xsl +++ /dev/null @@ -1,154 +0,0 @@ - - - %general-entities; -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00 - - - - 0 - - - - - - - - - - #!/bin/bash set +h set -e - - - - - - - cd $PKGDIR - - - exit - - - - - - - - - - - - - - - - - - - - tar.* - - - - - - - - - - export LANG= - - - - - - - - - make mrproper - cp -v ../kernel-config .config - - - - - - - || true - - - - - - - - - - - - - - - - - - - **EDITME - - EDITME** - - - - - diff --git a/2.3/CLFS3/master.sh b/2.3/CLFS3/master.sh deleted file mode 100644 index 9f500dc..0000000 --- a/2.3/CLFS3/master.sh +++ /dev/null @@ -1,586 +0,0 @@ -#!/bin/bash -# $Id$ - -################################### -### FUNCTIONS ### -################################### - - -#----------------------------# -host_prep_Makefiles() { # Initialization of the system -#----------------------------# - local CLFS_HOST - - echo "${tab_}${GREEN}Processing... ${L_arrow}host prep files ( SETUP ) ${R_arrow}" - - # defined here, only for ease of reading - CLFS_HOST="$(echo $MACHTYPE | sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")" -( -cat << EOF - -025-addinguser: - @\$(call echo_message, Building) - @if [ ! -d \$(LUSER_HOME) ]; then \\ - groupadd \$(LGROUP); \\ - useradd -s /bin/bash -g \$(LGROUP) -m -k /dev/null \$(LUSER); \\ - else \\ - touch luser-exist; \\ - fi; - @\$(call housekeeping) - -026-settingenvironment: 025-addinguser - @\$(call echo_message, Building) - @if [ -f \$(LUSER_HOME)/.bashrc -a ! -f \$(LUSER_HOME)/.bashrc.XXX ]; then \\ - mv \$(LUSER_HOME)/.bashrc \$(LUSER_HOME)/.bashrc.XXX; \\ - fi; - @if [ -f \$(LUSER_HOME)/.bash_profile -a ! -f \$(LUSER_HOME)/.bash_profile.XXX ]; then \\ - mv \$(LUSER_HOME)/.bash_profile \$(LUSER_HOME)/.bash_profile.XXX; \\ - fi; - @echo "set +h" > \$(LUSER_HOME)/.bashrc && \\ - echo "umask 022" >> \$(LUSER_HOME)/.bashrc && \\ - echo "CLFS=\$(MOUNT_PT)" >> \$(LUSER_HOME)/.bashrc && \\ - echo "LC_ALL=POSIX" >> \$(LUSER_HOME)/.bashrc && \\ - echo "PATH=\$(MOUNT_PT)/cross-tools/bin:/bin:/usr/bin" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export CLFS LC_ALL PATH" >> \$(LUSER_HOME)/.bashrc && \\ - echo "" >> \$(LUSER_HOME)/.bashrc && \\ - echo "unset CFLAGS" >> \$(LUSER_HOME)/.bashrc && \\ - echo "unset CXXFLAGS" >> \$(LUSER_HOME)/.bashrc && \\ - echo "" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export CLFS_HOST=\"${CLFS_HOST}\"" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export CLFS_TARGET=\"${TARGET}\"" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export CLFS_MIPS_LEVEL=\"${MIPS_LEVEL}\"" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export BUILD=\"${ABI}\"" >> \$(LUSER_HOME)/.bashrc && \\ - echo "source $JHALFSDIR/envars" >> \$(LUSER_HOME)/.bashrc - @chown \$(LUSER):\$(LGROUP) \$(LUSER_HOME)/.bashrc && \\ - touch envars && \\ - chown \$(LUSER):\$(LGROUP) envars - @\$(call housekeeping) - -027-create-directories: 026-settingenvironment - @\$(call echo_message, Building) - - @mkdir -p \$(MOUNT_PT)/{bin,boot,dev,{etc/,}opt,home,lib,mnt} - @mkdir -p \$(MOUNT_PT)/{proc,media/{floppy,cdrom},sbin,srv,sys} - @mkdir -p \$(MOUNT_PT)/var/{lock,log,mail,run,spool} - @mkdir -p \$(MOUNT_PT)/var/{opt,cache,lib/{misc,locate},local} - @install -d -m 0750 \$(MOUNT_PT)/root - @install -d -m 1777 \$(MOUNT_PT){/var,}/tmp - @mkdir -p \$(MOUNT_PT)/usr/{,local/}{bin,include,lib,sbin,src} - @mkdir -p \$(MOUNT_PT)/usr/{,local/}share/{doc,info,locale,man} - @mkdir -p \$(MOUNT_PT)/usr/{,local/}share/{misc,terminfo,zoneinfo} - @mkdir -p \$(MOUNT_PT)/usr/{,local/}share/man/man{1,2,3,4,5,6,7,8} - @for dir in \$(MOUNT_PT)/usr{,/local}; do \\ - ln -s share/{man,doc,info} \$\$dir ; \\ - done - @\$(call housekeeping) - -028-creating-sysfile: 027-create-directories - @\$(call echo_message, Building) - - @touch \$(MOUNT_PT)/etc/mtab - @echo "root::0:0:root:/root:/bin/ash" >> \$(MOUNT_PT)/etc/passwd - @echo "root:x:0:" >> \$(MOUNT_PT)/etc/group - @echo "bin:x:1:" >> \$(MOUNT_PT)/etc/group - @echo "sys:x:2:" >> \$(MOUNT_PT)/etc/group - @echo "kmem:x:3" >> \$(MOUNT_PT)/etc/group - @echo "tty:x:4:" >> \$(MOUNT_PT)/etc/group - @echo "tape:x:5:" >> \$(MOUNT_PT)/etc/group - @echo "daemon:x:6:" >> \$(MOUNT_PT)/etc/group - @echo "floppy:x:7:" >> \$(MOUNT_PT)/etc/group - @echo "disk:x:8:" >> \$(MOUNT_PT)/etc/group - @echo "lp:x:9:" >> \$(MOUNT_PT)/etc/group - @echo "dialout:x:10:" >> \$(MOUNT_PT)/etc/group - @echo "audio:x:11:" >> \$(MOUNT_PT)/etc/group - @echo "video:x:12:" >> \$(MOUNT_PT)/etc/group - @echo "utmp:x:13:" >> \$(MOUNT_PT)/etc/group - @echo "usb:x:14:" >> \$(MOUNT_PT)/etc/group - @echo "cdrom:x:15:" >> \$(MOUNT_PT)/etc/group - - @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 \$(LUSER) \$(MOUNT_PT) && \\ - chmod -R a+w \$(MOUNT_PT)/\$(SCRIPT_ROOT) && \\ - chmod -R a+w \$(SRCSDIR) - @\$(call housekeeping) - -EOF -) >> $MKFILE.tmp - - host_prep=" 025-addinguser 026-settingenvironment 027-create-directories 028-creating-sysfile" -} - -#-----------------------------# -systemprep_Makefiles() { # -#-----------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}system prep tools ( LUSER ) ${R_arrow}" - - for file in systemprep/* ; do - # Keep the script file name - this_script=`basename $file` - - # Set the dependency for the first target. - if [ -z $PREV ] ; then PREV=028-creating-sysfile ; fi - - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile) - cross_tools="$cross_tools $this_script" - - # Grab the name of the target (minus the -headers or -cross in the case of gcc - # and binutils in chapter 5) - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@'` - - pkg_tarball=$(get_package_tarball_name $name) - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - if [ "$pkg_tarball" != "" ] ; then - LUSER_wrt_unpack "$pkg_tarball" - fi - # - LUSER_wrt_RunAsUser "${file}" - # - [[ "$pkg_tarball" != "" ]] && LUSER_RemoveBuildDirs "${name}" - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done # for file in .... -} - - -#-----------------------------# -cross_tools_Makefiles() { # -#-----------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}cross tools ( LUSER ) ${R_arrow}" - - for file in cross-tools/* ; do - # Keep the script file name - this_script=`basename $file` - # - # Skip this script... - # NOTE.. the book indicated you only needed to install groff or file if the host - # had older versions. The packages would be installed in the target directory - # and not the host. - case $this_script in - *cflags* | *variables* | *abi | *toolchain*) # work done in host_prep_Makefiles - continue ;; - *) ;; - esac - - # - # Set the dependency for the first target. - if [ -z $PREV ] ; then PREV=028-creating-sysfile ; fi - - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile) - cross_tools="$cross_tools $this_script" - - # Grab the name of the target (minus the -headers or -cross in the case of gcc - # and binutils in chapter 5) - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' \ - -e 's@-static@@' \ - -e 's@-final@@' \ - -e 's@-64@@' \ - -e 's@-n32@@'` - case $name in - uclibc*) name="uClibc" ;; - esac - pkg_tarball=$(get_package_tarball_name $name) - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - if [ "$pkg_tarball" != "" ] ; then - LUSER_wrt_unpack "$pkg_tarball" - # Touch timestamp file if installed files logs will be created. - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_TouchTimestamp - fi - # If using optimizations, write the instructions - [[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - fi - # - LUSER_wrt_RunAsUser "${file}" - # - # Write installed files log and remove the build directory(ies) - # except if the package build fails. - if [ "$pkg_tarball" != "" ] ; then - LUSER_RemoveBuildDirs "${name}" - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_LogNewFiles "$name" - fi - fi - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done # for file in .... -} - - - -#-----------------------------# -final_system_Makefiles() { # -#-----------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}final system ( LUSER ) ${R_arrow}" - - for file in final-system/* ; do - # Keep the script file name - this_script=`basename $file` - - # Grab the name of the target, strip id number, XXX-script - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' \ - -e 's@temp-@@' \ - -e 's@-64bit@@' \ - -e 's@-64@@' \ - -e 's@64@@' \ - -e 's@n32@@'` - - # Find the version of the command files, if it corresponds with the building of - # a specific package. - pkg_tarball=$(get_package_tarball_name $name) - - # Append each name of the script files to a list (this will become - # the names of the targets in the Makefile - basicsystem="$basicsystem ${this_script}" - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - if [ "$pkg_tarball" != "" ] ; then - # Touch timestamp file if installed files logs will be created. - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_TouchTimestamp - fi - LUSER_wrt_unpack "$pkg_tarball" - # If using optimizations, write the instructions - [[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - fi - # - LUSER_wrt_RunAsUser "${file}" - # - # Write installed files log and remove the build directory(ies) - # except if the package build fails. - if [ "$pkg_tarball" != "" ] ; then - LUSER_RemoveBuildDirs "${name}" - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_LogNewFiles "$name" - fi - fi - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=${this_script} - done # for file in final-system/* ... -} - - - -#-----------------------------# -bootscripts_Makefiles() { # -#-----------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}bootscripts ( LUSER ) ${R_arrow}" - - for file in bootscripts/* ; do - # Keep the script file name - this_script=`basename $file` - - case $this_script in - *console*) continue ;; # Use the files that came with the bootscripts - *network*) continue ;; # Manually create these files - *) ;; - esac - - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - bootscripttools="$bootscripttools $this_script" - - # Grab the name of the target, strip id number, XXX-script - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@'\ - -e 's@-64bit@@' \ - -e 's@-64@@' \ - -e 's@64@@' \ - -e 's@n32@@'` - case $name in - *bootscripts*) name=clfs-embedded-bootscripts ;; - esac - - pkg_tarball=$(get_package_tarball_name $name) - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - if [ "$pkg_tarball" != "" ] ; then - LUSER_wrt_unpack "$pkg_tarball" - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_TouchTimestamp - fi - fi - # - LUSER_wrt_RunAsUser "${file}" - # - if [ "$pkg_tarball" != "" ] ; then - LUSER_RemoveBuildDirs "${name}" - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_LogNewFiles "$name" - fi - fi - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done # for file in bootscripts/* ... - -} - - -#-----------------------------# -bootable_Makefiles() { # -#-----------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}make bootable ( LUSER ) ${R_arrow}" - - for file in bootable/* ; do - # Keep the script file name - this_script=`basename $file` - - # A little housekeeping on the scripts - case $this_script in - *grub | *aboot | *colo | *silo | *arcload | *lilo | *reboot* ) continue ;; - *fstab) [[ ! -z ${FSTAB} ]] && cp ${FSTAB} $BUILDDIR/sources/fstab ;; - *kernel) # if there is no kernel config file do not build the kernel - [[ -z $CONFIG ]] && continue - # Copy the config file to /sources with a standardized name - cp $CONFIG $BUILDDIR/sources/kernel-config - ;; - esac - # - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - # NOTE: new makfile format forces the last script, *chowning, into a separate - # phase. - case ${this_script} in - *chowning) chowning=${this_script} ;; - *) bootable="$bootable $this_script" ;; - esac - # - # Grab the name of the target, strip id number and misc words. - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' -e 's@-build@@' ` - case $this_script in - *kernel*) name=linux - ;; - esac - - pkg_tarball=$(get_package_tarball_name $name) - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - # - # If $pkg_tarball isn't empty, we've got a package... - if [ "$pkg_tarball" != "" ] ; then - LUSER_wrt_unpack "$pkg_tarball" - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_TouchTimestamp - fi - fi - # - # Select a script execution method - case $this_script in - *fstab*) if [[ -n "$FSTAB" ]]; then - LUSER_wrt_CopyFstab - else - LUSER_wrt_RunAsUser "${file}" - fi - ;; - *chowning) wrt_RunAsRoot "${file}" - ;; - *) LUSER_wrt_RunAsUser "${file}" - ;; - esac - # - # Housekeeping...remove any build directory(ies) except if the package build fails. - if [ "$pkg_tarball" != "" ] ; then - LUSER_RemoveBuildDirs "${name}" - if [ "${INSTALL_LOG}" = "y" ] ; then - LUSER_wrt_LogNewFiles "$name" - fi - fi - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Keep the script file name for Makefile dependencies. - PREV=$this_script - - done - -} - - -#-----------------------------# -build_Makefile() { # Construct a Makefile from the book scripts -#-----------------------------# - echo "Creating Makefile... ${BOLD}START${OFF}" - - cd $JHALFSDIR/${PROGNAME}-commands - # Start with a clean Makefile.tmp file - >$MKFILE.tmp - - host_prep_Makefiles - [[ "${PLATFORM% -*}" = "WRT" ]] && systemprep_Makefiles # $cross_tools - cross_tools_Makefiles # $cross_tools - final_system_Makefiles # $basicsystem - bootscripts_Makefiles # $bootscripttools - bootable_Makefiles # $bootable - # Add the CUSTOM_TOOLS targets, if needed - [[ "$CUSTOM_TOOLS" = "y" ]] && wrt_CustomTools_target - - # Add a header, some variables and include the function file - # to the top of the real Makefile. - wrt_Makefile_header - - # Drop in the main target 'all:' and the chapter targets with each sub-target - # as a dependency. -( -cat << EOF - -all: ck_UID mk_SETUP mk_LUSER create-sbu_du-report mk_CUSTOM_TOOLS mk_ROOT - @sudo make restore-luser-env - @sudo make do-housekeeping - @\$(call echo_finished,$VERSION) - -ck_UID: - @if [ \`id -u\` = "0" ]; then \\ - echo "--------------------------------------------------"; \\ - echo "You cannot run this makefile from the root account"; \\ - echo "--------------------------------------------------"; \\ - exit 1; \\ - fi - -mk_SETUP: - @\$(call echo_SU_request) - @sudo make BREAKPOINT=\$(BREAKPOINT) SETUP - @touch \$@ - -mk_LUSER: mk_SETUP - @\$(call echo_SULUSER_request) - @(sudo \$(SU_LUSER) "source .bashrc && cd \$(MOUNT_PT)/\$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) LUSER" ) - @touch \$@ - -mk_CUSTOM_TOOLS: create-sbu_du-report - @if [ "\$(ADD_CUSTOM_TOOLS)" = "y" ]; then \\ - \$(call sh_echo_PHASE,Building CUSTOM_TOOLS); \\ - (sudo \$(SU_LUSER) "mkdir -p $BUILDDIR$TRACKING_DIR"); \\ - (sudo \$(SU_LUSER) "source .bashrc && cd \$(MOUNT_PT)/\$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) CUSTOM_TOOLS"); \\ - fi; - @touch \$@ - -mk_ROOT: - @\$(call echo_SU_request) - @echo "$VERSION-embedded - jhalfs build" > clfs-release && \\ - sudo mv clfs-release \$(MOUNT_PT)/etc - @sudo make BREAKPOINT=\$(BREAKPOINT) ROOT - @touch \$@ - - -SETUP: $host_prep -LUSER: $cross_tools $basicsystem $bootscripttools $bootable -CUSTOM_TOOLS: $custom_list -ROOT: $chowning - - -create-sbu_du-report: mk_LUSER - @\$(call echo_message, Building) - @if [ "\$(ADD_REPORT)" = "y" ]; then \\ - ./create-sbu_du-report.sh logs $VERSION; \\ - \$(call echo_report,$VERSION-SBU_DU-$(date --iso-8601).report); \\ - fi; - @touch \$@ - -restore-luser-env: - @\$(call echo_message, Building) - @if [ -f \$(LUSER_HOME)/.bashrc.XXX ]; then \\ - mv -f \$(LUSER_HOME)/.bashrc.XXX \$(LUSER_HOME)/.bashrc; \\ - fi; - @if [ -f \$(LUSER_HOME)/.bash_profile.XXX ]; then \\ - mv \$(LUSER_HOME)/.bash_profile.XXX \$(LUSER_HOME)/.bash_profile; \\ - fi; - @chown \$(LUSER):\$(LGROUP) \$(LUSER_HOME)/.bash* && \\ - touch \$@ && \\ - echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\ - echo --------------------------------------------------------------------------------\$(WHITE) - -do-housekeeping: - @-if [ ! -f luser-exist ]; then \\ - userdel \$(LUSER); \\ - rm -rf \$(LUSER_HOME); \\ - fi; - -EOF -) >> $MKFILE - - # Bring over the items from the Makefile.tmp - cat $MKFILE.tmp >> $MKFILE - rm $MKFILE.tmp - echo "Creating Makefile... ${BOLD}DONE${OFF}" - -} - diff --git a/2.3/Config.in b/2.3/Config.in deleted file mode 100644 index 01eac91..0000000 --- a/2.3/Config.in +++ /dev/null @@ -1,1108 +0,0 @@ -menu "--- BOOK Settings" - - #--- BOOK/script - choice - prompt "Use BOOK" - default BOOK_LFS - help - #-- Select the BOOK/Build style you wish to configure. - - config BOOK_LFS - bool "Linux From Scratch" - - config BOOK_CLFS - bool "Cross-Compiled Linux From Scratch" - - config BOOK_CLFS2 - bool "Cross-Compiled Linux From Scratch (Sysroot method)" - - config BOOK_CLFS3 - bool "Cross-Compiled Linux From Scratch (Embedded Systems)" - - config BOOK_HLFS - bool "Hardened Linux From Scratch" - - config BOOK_BLFS - bool "Beyond Linux From Scratch" - endchoice - - config PROGNAME - string - default "lfs" if BOOK_LFS - default "clfs" if BOOK_CLFS - default "clfs2" if BOOK_CLFS2 - default "clfs3" if BOOK_CLFS3 - default "hlfs" if BOOK_HLFS - default "blfs" if BOOK_BLFS - - config RUN_ME - string - default "./jhalfs run" if !BOOK_BLFS - default "./blfs-tool" if BOOK_BLFS - #--- End BOOK/script - - #--- Book version - choice - prompt "Release" - default relSVN - config relSVN - bool "SVN" - help - #-- Current development version as in trunk - - config WORKING_COPY - bool "Working Copy" - depends on !BOOK_BLFS - help - #-- A local working copy - - config BRANCH - bool "Branch or stable book" if !BOOK_CLFS2 && !BOOK_CLFS3 - help - #-- A supported SVN branch or stable released book - endchoice - - config BRANCH_ID - string "Book Version (mandatory)" - default "**EDIT ME**" - depends BRANCH - help - #-- A list of valid branches and stable books ID's is available here. - # http://wiki.linuxfromscratch.org/alfs/wiki/SupportedBooks - - config BOOK - string "Loc of working copy (mandatory)" - default "**EDIT ME**" - depends WORKING_COPY - help - #-- The full path to a local copy of the book XML sources - # - #--- End BOOK version - - #--- CLFS specific params - choice - prompt "Target architecture" - default ARCH_X86 - depends BOOK_CLFS || BOOK_CLFS2 || BOOK_CLFS3 - help - #-- Choose the target system base architecture - - config ARCH_X86 - bool "x86" - - config ARCH_MIPS - bool "mips" if !BOOK_CLFS2 - - config ARCH_PPC - bool "ppc" if BOOK_CLFS - - config ARCH_SPARC - bool "sparc" if BOOK_CLFS - - config ARCH_ALPHA - bool "alpha" if !BOOK_CLFS3 - - config ARCH_ARM - bool "arm" if !BOOK_CLFS - - config ARCH_HPPA - bool "hppa" if BOOK_CLFS2 - endchoice - - choice - prompt "Hardware Platform" - depends BOOK_CLFS3 && ARCH_MIPS - default PLATFORM_GENERIC - help - # Chose a destination platform - # Platform specific files will be included - - config PLATFORM_GENERIC - bool "Generic platform" - - config PLATFORM_WRT - bool "WRT - MIPS based wireless router" if ARCH_MIPS - endchoice - - choice - prompt "Library" - depends (BOOK_CLFS && !ARCH_ALPHA) || (BOOK_CLFS3 && ARCH_MIPS) - default DATA_32 - help - #-- Choose the target system libraries type - - config DATA_32 - bool "32-bit" - - config DATA_64 - bool "64-bit" if !ARCH_PPC - - config DATA_MULTI - bool "multilib" if !(BOOK_CLFS3 && ARCH_MIPS ) - endchoice - - choice - prompt "Processor type" - depends (BOOK_CLFS || BOOK_CLFS2 || BOOK_CLFS3) && ((ARCH_X86 && !(DATA_64 || DATA_MULTI)) || ARCH_MIPS || ARCH_HPPA || ARCH_ALPHA || (ARCH_SPARC && (DATA_64 || DATA_MULTI)) || (ARCH_ARM && BOOK_CLFS3)) - help - #-- Choose the target system processor - - config PROC_i486 - bool "486 Compatibles" if ARCH_X86 - - config PROC_i586 - bool "Pentium, K6, 586 Compatibles" if ARCH_X86 - - config PROC_i686 - bool "Pentium II, Pentium III, Pentium 4, Athlon, Duron" if ARCH_X86 - - config PROC_mipsel - bool "MIPS Little Endian" if ARCH_MIPS - - config PROC_mips - bool "MIPS Big Endian" if ARCH_MIPS - - config PROC_unknown - bool "Unknown" if ARCH_HPPA || ARCH_ALPHA - - config PROC_hppa1 - bool "PA 7000 Series" if ARCH_HPPA - - config PROC_hppa2 - bool "PA 8000 Series" if ARCH_HPPA - - config PROC_EV5 - bool "EV5 Series" if ARCH_ALPHA - - config PROC_EV56 - bool "EV56 Series" if ARCH_ALPHA - - config PROC_PCA56 - bool "PCA56 Series" if ARCH_ALPHA - - config PROC_PCA57 - bool "PCA57 Series" if ARCH_ALPHA - - config PROC_EV6 - bool "EV6 Series" if ARCH_ALPHA - - config PROC_EV67 - bool "EV67 Series" if ARCH_ALPHA - - config PROC_EV68 - bool "EV68 Series" if ARCH_ALPHA - - config PROC_ARM - bool "Generic arm, little endian" if ARCH_ARM - - config PROC_ARM5L - bool "Generic arm, version 5, little endian" if ARCH_ARM - - config PROC_ARM5B - bool "Generic arm, version 5, big endian" if ARCH_ARM - - config PROC_ULTRA1 - bool "UtraSparc" if ARCH_SPARC && (DATA_64 || DATA_MULTI) - - config PROC_ULTRA2 - bool "UtraSparc2" if ARCH_SPARC && (DATA_64 || DATA_MULTI) - - config PROC_ULTRA3 - bool "UtraSparc3" if ARCH_SPARC && (DATA_64 || DATA_MULTI) - endchoice - - choice - prompt "MIPS 64 ABI" - depends BOOK_CLFS3 && ARCH_MIPS && DATA_64 - default ABI_64 - help - #-- Choose the target system ABI to use - - config ABI_32 - bool "o32" - - config ABI_N32 - bool "n32" - - config ABI_64 - bool "n64" - endchoice - - config TARGET - string - default "i486-pc-linux-gnu" if !BOOK_CLFS3 && PROC_i486 - default "i586-pc-linux-gnu" if !BOOK_CLFS3 && PROC_i586 - default "i686-pc-linux-gnu" if !BOOK_CLFS3 && PROC_i686 - - default "i486-pc-linux-uclibc" if BOOK_CLFS3 && PROC_i486 - default "i586-pc-linux-uclibc" if BOOK_CLFS3 && PROC_i586 - default "i686-pc-linux-uclibc" if BOOK_CLFS3 && PROC_i686 - - default "x86_64-unknown-linux-gnu" if ARCH_X86 && (DATA_64 || DATA_MULTI) - - default "mipsel-unknown-linux-gnu" if !BOOK_CLFS3 && PROC_mipsel && DATA_32 - default "mips-unknown-linux-gnu" if !BOOK_CLFS3 && PROC_mips && DATA_32 - default "mips64el-unknown-linux-gnu" if !BOOK_CLFS3 && PROC_mipsel && (DATA_64 || DATA_MULTI) - default "mips64-unknown-linux-gnu" if !BOOK_CLFS3 && PROC_mips && (DATA_64 || DATA_MULTI) - - default "mipsel-unknown-linux-uclibc" if BOOK_CLFS3 && PROC_mipsel && DATA_32 - default "mips-unknown-linux-uclibc" if BOOK_CLFS3 && PROC_mips && DATA_32 - default "mips64el-unknown-linux-uclibc" if BOOK_CLFS3 && PROC_mipsel && DATA_64 - default "mips64-unknown-linux-uclibc" if BOOK_CLFS3 && PROC_mips && DATA_64 - - default "powerpc-unknown-linux-gnu" if ARCH_PPC && DATA_32 - default "powerpc64-unknown-linux-gnu" if ARCH_PPC && DATA_MULTI - - default "sparc-unknown-linux-gnu" if ARCH_SPARC && DATA_32 - default "sparc64-unknown-linux-gnu" if ARCH_SPARC && (DATA_64 || DATA_MULTI) - - default "hppa-unknown-linux-gnu" if PROC_unknown && ARCH_HPPA - default "hppa1.1-unknown-linux-gnu" if PROC_hppa1 - default "hppa2.0-unknown-linux-gnu" if PROC_hppa2 - - default "arm-unknown-linux-gnu" if ARCH_ARM && BOOK_CLFS2 - - default "arm-unknown-linux-uclibc" if PROC_ARM - default "armv5l-unknown-linux-uclibc" if PROC_ARM5L - default "armv5b-unknown-linux-uclibc" if PROC_ARM5B - - default "alpha-unknown-linux-gnu" if PROC_unknown && ARCH_ALPHA - default "alphaev5-unknown-linux-gnu" if PROC_EV5 - default "alphaev56-unknown-linux-gnu" if PROC_EV56 - default "alphapca56-unknown-linux-gnu" if PROC_PCA56 - default "alphapca57-unknown-linux-gnu" if PROC_PCA57 - default "alphaev6-unknown-linux-gnu" if PROC_EV6 - default "alphaev67-unknown-linux-gnu" if PROC_EV67 - default "alphaev68-unknown-linux-gnu" if PROC_EV68 - - config TARGET32 - string - depends DATA_MULTI - default "i686-pc-linux-gnu" if ARCH_X86 - default "mipsel-unknown-linux-gnu" if PROC_mipsel - default "mips-unknown-linux-gnu" if PROC_mips - default "sparc-unknown-linux-gnu" if ARCH_SPARC - default "powerpc-unknown-linux-gnu" if ARCH_PPC - - config PLATFORM - string - default "GENERIC" if (!BOOK_CLFS3) || PLATFORM_GENERIC - default "WRT - Wireless Router" if PLATFORM_WRT - - config SPARC64_PROC - string - default "none" if !(ARCH_SPARC && (DATA_64 || DATA_MULTI)) - default "1" if PROC_ULTRA1 - default "2" if PROC_ULTRA2 - default "3" if PROC_ULTRA3 - - config ARCH - string - default "x86" if ARCH_X86 && (DATA_32 || BOOK_CLFS2 || BOOK_CLFS3) - default "x86_64" if ARCH_X86 && DATA_MULTI - default "x86_64-64" if ARCH_X86 && DATA_64 - - default "wrt" if PLATFORM_WRT && BOOK_CLFS3 - - default "mips" if ARCH_MIPS && (DATA_32 || BOOK_CLFS3) - default "mips64" if ARCH_MIPS && DATA_MULTI - default "mips64-64" if ARCH_MIPS && DATA_64 && BOOK_CLFS - - - default "ppc" if ARCH_PPC && DATA_32 - default "ppc64" if ARCH_PPC && DATA_MULTI - - default "sparc" if ARCH_SPARC && DATA_32 - default "sparc64" if ARCH_SPARC && DATA_MULTI - default "sparc64-64" if ARCH_SPARC && DATA_64 - - default "alpha" if ARCH_ALPHA - default "arm" if ARCH_ARM - default "hppa" if ARCH_HPPA - - config MIPS_LEVEL - string - depends BOOK_CLFS3 && ARCH_MIPS - default "1" if DATA_32 - default "3" if DATA_64 - - config ABI - string - depends BOOK_CLFS3 - default "-m32" if ARCH_X86 || ARCH_ARM -# default "-m64" if NO USED YET IN THE BOOK - default "-mabi=32" if ABI_32 || (ARCH_MIPS && DATA_32) - default "-mabi=n32" if ABI_N32 - default "-mabi=64" if ABI_64 - - config ENDIAN - string - depends BOOK_CLFS3 && (ARCH_MIPS || ARCH_ARM) - default "little" if PROC_mipsel || PROC_ARM || PROC_ARM5L - default "big" if PROC_mips || PROC_ARM5B - - choice - prompt "Build method" - depends BOOK_CLFS - help - #-- What build method should be used: a chroot jail or minimal boot system - # Review the Cross-LFS book chap6 "TO BOOT OR CHROOT" for a full explanation. - - config BUILD_CHROOT - bool "chroot" - - config BUILD_BOOT - bool "boot" - endchoice - - config METHOD - string - default "chroot" if BUILD_CHROOT - default "boot" if BUILD_BOOT - - config BOOT_CONFIG - string "BOOT kernel config file (mandatory)" - default "***EDIT ME***" - depends on BUILD_BOOT - help - #-- If METHOD=boot, location of boot-kernel config file - # The config file will be copied to ${BUILD_DIR}/sources - # and renamed 'bootkernel-config' - # - # NOTE: this setting is required - #--- End CLFS specific params - - #--- HLFS specific params - config GRSECURITY_HOST - bool "Building on grsecurity enabled host?" - default n - depends on BOOK_HLFS - help - #-- If your build system has grsecurity patches applied - # you MUST enable this switch. - - choice - prompt "Library" - depends on BOOK_HLFS - help - #-- Which library model to use: uClibc/glibc - - config LIB_GLIBC - bool "glibc" - - config LIB_UCLIBC - bool "uClibc" - endchoice - - config MODEL - depends on BOOK_HLFS - string - default "glibc" if LIB_GLIBC - default "uclibc" if LIB_UCLIBC - - choice - prompt "Kernel series" - depends on BOOK_HLFS - help - #-- Which kernel series to use: 2.6/2.4 - - config KERNEL_26 - bool "2.6 kernel series" - - config KERNEL_24 - bool "2.4 kernel series" - endchoice - - config KERNEL - depends on BOOK_HLFS - string - default "2.6" if KERNEL_26 - default "2.4" if KERNEL_24 - -# menu "HLFS Additional Features" -# depends on BOOK_HLFS -# -# config SET_SSP -# bool "Stack-smashing protector" -# default y -# -# config SET_ASLR -# bool "Address-space layout randomization" -# default y -# -# config SET_PAX -# bool "PaX-aware ELF executables and kernel" -# default y -# -# config SET_HARDENED_TMP -# bool "Hardened temporary files creation" -# default y -# -# config SET_WARNINGS -# bool "Additional warnings" -# default y -# -# config SET_MISC -# bool "Miscellaneous features" -# default y -# -# config SET_BLOWFISH -# bool "Blowfish passwords" -# default y -# endmenu - - config SSP -# depends on SET_SSP - string - default ",ssp," - - config ASLR -# depends on SET_ASLR - string - default ",aslr," - - config PAX -# depends on SET_PAX - string - default ",pax," - - config HARDENED_TMP -# depends on SET_HARDENED_TMP - string - default ",hardened_tmp," - - config WARNINGS -# depends on SET_WARNINGS - string - default ",warnings," - - config MISC -# depends on SET_MISC - string - default ",misc," - - config BLOWFISH -# depends on SET_BLOWFISH - string - default ",blowfish," - #--- End HLFS specific params - - #--- Custom Tools support - config CUSTOM_TOOLS - bool "Add custom tools support" - default n - depends on !BOOK_BLFS - help - #--- Activating this option additional packages you create - # will be installed after finished the xLFS system build. - # - #--- End Custom Tools support - - #--- blfs-tool Support - config BLFS_TOOL - bool "Add blfs-tool support" - default n - depends on !BOOK_BLFS && !BOOK_CLFS3 - help - #--- Activating this option will install additional - # packages needed to use blfs-tool when booting - # the new system. - # - # The blfs-tool files will be installed under - # $BUILD_DIR/blfs_root. - - # After booting the new xLFS system you should to - # create an user account and move the /blfs-root - # directory to the user's home, making he the - # directory and files owner, before start - # using blfs-tool. - # - # Also, be sure to bring to that user read and write - # privileges over the $TRACKING_DIR directory and - # the files that it contains. - # - # And don't forget to configure sudo properly. - - choice - prompt "BLFS Release" - default BLFS_SVN - depends on BLFS_TOOL - config BLFS_SVN - bool "BLFS SVN" - help - #-- Current development version as in trunk - - config BLFS_BRANCH - bool "BLFS Branch or stable book" - help - #-- A supported SVN branch or stable released book - endchoice - - config BLFS_BRANCH_ID - string "BLFS Book Version (mandatory)" - default "**EDIT ME**" - depends on BLFS_BRANCH - help - #-- A list of valid branches and stable books ID's is available here. - # http://wiki.linuxfromscratch.org/alfs/wiki/SupportedBooks - - menu "blfs-tool dependencies" - depends on BLFS_TOOL - - config DEP_LIBXML - bool "libxml2 (required)" - default y - - config DEP_LIBXSLT - bool "libxslt (required)" - default y - - config DEP_TIDY - bool "tidy (required)" - default y - - config DEP_DBXML - bool "DocBook XML DTD (required)" - default y - - config DEP_UNZIP - bool "UnZip (required to install DocBook XML DTD)" - default y - depends on DEP_DBXML - - #config DEP_DBXSL - #bool "DocBook XSL (required)" - #default y - - config DEP_LINKS - bool "links (required)" - default y - - config DEP_SUDO - bool "sudo (recommended)" - default y - - config DEP_WGET - bool "wget (recommended)" - default y - - config DEP_GPM - bool "GPM (optional, see help)" - default y - help - #-- You MUST to install manually the gpm bootscript - # and create its configuration file. - # - # An alternative is to unselect this option and - # install gpm, its configuration file, and its - # bootscript using the custom tools support. - - config DEP_SVN - bool "SVN client (optional, see help)" - default n - help - #-- Subversion-1.3.1 will be installed. This version is - # old but does not rely on additional packages to be - # built. - # - # If you are happy with this old version and don't - # need extra features, select this option. - endmenu - #--- End blfs-tool Support - - #--- BLFS specific params - config BLFS_ROOT - string "Directory root" - default "$HOME/blfs_root" if BOOK_BLFS - default "/blfs_root" if BLFS_TOOL - depends on BOOK_BLFS || BLFS_TOOL - help - #-- Full path to the directory where all required - # files and scripts will be stored. - - config BLFS_XML - string "BLFS sources directory" - default "blfs-xml" - depends on BOOK_BLFS || BLFS_TOOL - help - #-- The directory name under $BLFS_ROOT where BLFS book - # sources will be checkout. - - config TRACKING_DIR - string "Installed packages database directory" - default "/var/lib/jhalfs/BLFS" - depends on BOOK_BLFS || BLFS_TOOL || CUSTOM_TOOLS - help - #-- Full path to the directory where the installed - # packages database will be created. - # - # If you are installing blfs-tool on a running xLFS system - # you MUST to create manually this directory. - # - # If you are installing blfs-tool as part of a xLFS build - # and/or using the customized scripts feature, you will - # need to fix that directory permissions after booting - # the new system. - # - # 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 -endmenu - -menu "--- General Settings" - depends on !BOOK_BLFS - - #--- Set User Account - config CONFIG_USER - bool "Change the default user/group and homedir 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 - # HLFS hlfs - # - # Also, if your host place users home dirs into a - # directory other than /home you can specify it here. - - config DEF_USER - string - default "lfs" if BOOK_LFS - default "clfs" if BOOK_CLFS || BOOK_CLFS2 || BOOK_CLFS3 - 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 CONFIG_HOME - bool "Set home dir?" - default n - depends CONFIG_USER - - config SET_HOME - string "Path to the directory where user home dir will be created" - depends CONFIG_HOME - default "/home" - - 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 - - config LHOME - string - default "/home" if !CONFIG_HOME - default SET_HOME if CONFIG_HOME - #--- End Set User Account - - config BUILDDIR - string "Build Directory" - default "/mnt/build_dir" - help - #-- The directory where the created system will be located. - - config GETPKG - bool "Retrieve source files" - default n - help - #-- Download all packages and patches required by the book selected - # NOTE: Looks for files in the local archive defined by SRC_ARCHIVE - # first and if necessary retrieve them from the 'net. - # Files will be transfered to $BUILDDIR/sources. - - config SRC_ARCHIVE - string "Package Archive Directory" - default "$SRC_ARCHIVE" - depends GETPKG - help - #-- A local archive for packages/file (not $BUILDDIR/sources) - # Used only if GETPKG = 1 - # Any missing file will be downloaded and archived here, - # if the user has the right priviledges. - - config SERVER - string "FTP mirror" - default "ftp://ftp.lfs-matrix.net" - depends GETPKG - help - #-- FTP mirror to download packages and patches if not found - # in $SRC_ARCHIVE - # As a last resort, the files will dowloaded from upstream, - # if possible. - - config GETKERNEL - bool "Always retrieve kernel package (see help)" - default y if BOOK_LFS || BOOK_HLFS - depends GETPKG - help - #-- Get the kernel package and patches even if no kernel - # configuration file has been supplied. - - # NOTE: - # The kernel package must be available when building - # the SVN version of LFS or HLFS to can install the - # headers files. - # - # If building LFS-6.2 this setting can be disabled. - - config RUNMAKE - bool "Run the makefile" - default n - help - #-- Automatically run the makefile once it has been created - - config CLEAN - bool "Rebuild files" - default n - help - #-- Clean the build directory before performing any other task. - # The directory is cleaned only if it was populated by a - # previous JHALFS run. - # - -#--- End General Settings -endmenu - -menu "--- Build Settings" - depends on !BOOK_BLFS - - #--- Test Suites - config CONFIG_TESTS - bool "Run testsuites" - depends !BOOK_CLFS2 && !BOOK_CLFS3 - default y - help - #-- Run test suites - # - # You will can to select between: - # - # - Only final system Glibc, GCC and Binutils testsuites - # - All final system testsuites - # - Both temporary tools and final system testsuites - # - # HLFS and CLFS has no testsuites available in the - # temporary tools phase - - # You will be promt also about the "flavour" of the - # testsuites run: - # - # - Don't stop on test suite failures - # - Abort the build at the first test suite failure - # - - choice - prompt "Tests level" - depends CONFIG_TESTS - default TEST_1 - - config TST_1 - bool "Only final system Glibc, GCC and Binutils testsuites" - - config TST_2 - bool "All final system testsuites" - - config TST_3 - bool "Both temporary tools and final system testsuites" if !BOOK_HLFS && !BOOK_CLFS - endchoice - - config TEST - int - default "0" if !CONFIG_TESTS - default "1" if TST_1 - default "2" if TST_2 - default "3" if TST_3 - - choice - prompt "Flavour" - depends CONFIG_TESTS - - config NO_BOMB - bool "Don't stop on test suite failures" - - config BOMB - bool "Abort the build at the first test suite failure" - endchoice - - config BOMB_TEST - bool - default n if NO_BOMB - default y if BOMB - - #--- End Test Suites - - #--- Installed files logs - config INSTALL_LOG - bool "Create installed files logs" - default n - help - #-- Select this if you want to create logs of the files - # installed by each package on the final system. - - #--- End Installed files logs - - #--- FSTAB - config HAVE_FSTAB - bool "Use a custom fstab file" - default n - help - #-- Select this if you have ready a proper fstab file - - config FSTAB - string "Fstab file (optional)" - default "***EDIT ME***" - depends on HAVE_FSTAB - help - #-- The location of fstab file (if empty, a template is created) - #--- End FSTAB - - #--- Kernel - config CONFIG_BUILD_KERNEL - bool "Build the kernel" - default n - help - #-- Select this option if you wish to build the kernel. - # - # You will be prompted for the full path to the .config - # file. It will be copied to the 'sources' directory and - # rename kernel-config - - config CONFIG - string "Kernel config file" - default "***EDIT ME***" - depends on CONFIG_BUILD_KERNEL - help - #-- Fully qualified path to a kernel config file - # The config file will be copied to ${BUILD_DIR}/sources - # and renamed 'kernel-config' - #--- End Kernel - - config STRIP - bool "Strip Installed Binaries/Libraries" - default y - depends on !BOOK_CLFS3 - - config VIMLANG - bool "Install vim-lang package" - default y - depends on !BOOK_HLFS && !BOOK_CLFS3 - help - #-- Install the optional vim-lang package - - config TIMEZONE - string "TimeZone" - default "GMT" - help - #-- The timezone as output by tzselect - # This will be copied to /etc/localtime - - config LANG - string "Language" - default "$LANG" - help - #-- Language information in /etc/profile See for values - - #--- Groff page - choice - prompt "Groff page size" - default PAGE_LETTER - help - #-- Page definition for groff: letter or A4 - - config PAGE_LETTER - bool "letter" - - config PAGE_A4 - bool "A4" - endchoice - - config PAGE - string - default "letter" if PAGE_LETTER - default "A4" if PAGE_A4 - #--- End Groff page - -#--- End Build Settings -endmenu - -menu "--- Advanced Features" - depends on !BOOK_BLFS - - config REPORT - bool "Create SBU and disk usage report" - default y - - #--- ICA/farce - config COMPARE - bool "Run comparison analysis on final stage" - depends !BOOK_CLFS2 && !BOOK_CLFS3 - default n - help - #-- Should some iterative comparison analysis by made? - # - # Unless you are familiar with ICA and/or FARCE do not - # select this option - # - # ICA and FARCE are analysis tools for comparing one - # build to the next. Builds mays differ from one iteration - # to another due to the build order and these tools try - # to ferret out those differences by examining the stored - # build logs and binary files. - # - # The scripts are well commented and can be found in ./extras/* - # - - config ITERATIONS - int "Number of test runs (2,3,4,5)" if COMPARE - depends on COMPARE - range 2 5 - default 3 - - config RUN_ICA - bool "ICA testing" - depends on COMPARE - default y - help - #-- Run ICA testing - - config RUN_FARCE - bool "farce testing" - depends on COMPARE - default n - help - #-- Run farce testing - #--- End ICA/farce - - #--- Optimizations -if !BOOK_CLFS2 && !BOOK_CLFS3 - config CONFIG_OPTIMIZE - bool "Use optimization (see help)" - default n - help - #-- Actual optimzation flags MUST be defined in ./optimize/* - # files before activate this option. - # - # WARNING: The use of build optimizations may be dangerous. - # You should know what you are doing and be sure that the - # optimization settings listed below are what you want. - # It there are build issues or the system doesn't work as - # expected, please rebuild without optimizations before - # asking for support. - - choice - prompt "Optimization level " - default OPT_1 - depends CONFIG_OPTIMIZE - help - #-- Optimization values are set in optimize/* files - - config OPT_1 - bool "Final system only" - - config OPT_2 - bool "Both temp tools and final system" - endchoice - - config OPTIMIZE - int - default "0" if !CONFIG_OPTIMIZE - default "1" if OPT_1 - default "2" if OPT_2 -endif - #--- End Optimizations - - #-- Internal Settings - menu "--- Internal Settings (WARNING: for jhalfs developers only)" - - config SCRIPT_ROOT - string "Scripts root" - default "jhalfs" - - config JHALFSDIR - string "jhalfs directory" - default "$BUILDDIR/$SCRIPT_ROOT" - - config LOGDIRBASE - string "Build logs directory basename" - default "logs" - - config LOGDIR - string "Build logs directory" - default "$JHALFSDIR/$LOGDIRBASE" - - config TESTLOGDIRBASE - string "Test suites logs directory basename" - default "test-logs" - - config TESTLOGDIR - string "Test suites logs directory" - default "$JHALFSDIR/$TESTLOGDIRBASE" - - config FILELOGDIRBASE - string "Installed files logs directory basename" - default "installed-files" - - config FILELOGDIR - string "Installed files logs directory" - default "$JHALFSDIR/$FILELOGDIRBASE" - - config ICALOGDIR - string "ICA logs directory" - default "$LOGDIR/ICA" - - config FARCELOGDIR - string "farce logs directory" - default "$LOGDIR/farce" - - config MKFILE - string "Makefile" - default "$JHALFSDIR/Makefile" - - config XSL - string "XSL stylesheet" - default "$PROGNAME.xsl" - - config PKG_LST - string "Package contents list" - default "unpacked" - - #--- End Internal Settings - endmenu - -#--- End Advanced Features -endmenu - -config REBUILD_MAKEFILE - bool "Rebuild the Makefile (see help)" - default n - depends on !BOOK_BLFS - help - #-- Rebuild the Makefile - # - # This option alow to rebuild the Makefile after - # customizing the base system build scripts. - # - # See README.CUSTOM for more info about this feature. - diff --git a/2.3/HLFS/hlfs.xsl b/2.3/HLFS/hlfs.xsl deleted file mode 100644 index e8d0fb4..0000000 --- a/2.3/HLFS/hlfs.xsl +++ /dev/null @@ -1,326 +0,0 @@ - - - %general-entities; -]> - - - - - - - - - - - - - - - - - - - - - - - - ,ssp,aslr,pax,hardened_tmp,warnings,misc,blowfish, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00 - - - - 0 - - - - - - - - - - - - #!/tools/bin/bash set +h - - - #!/bin/bash set +h - - - - set -e - - - - cd $PKGDIR - - pushd ../; tar -xvf gettext-&gettext-version;.*; popd; - - - - tar -xvf gcc-core-&gcc-version;.*; - tar -xvf binutils-&binutils-version;.*; - - - tar -xvf gcc-g++-&gcc-version;.*; - - - - tar -xvf gcc-testsuite-&gcc-version;.*; - - - - - exit - - - - - - - - - - - - - - - - make -k - - >> $TEST_LOG 2>&1 || true - - - - >> $TEST_LOG 2>&1 - - || true - - - - - - - - - - - - - - - export LANG= - - - - - - - make mrproper - cp -v /sources/kernel-config .config - - - - - - - echo "export - - " >> ~/.bashrc - - - - cd ../gettext-*/gettext-runtime - - - - - - - - - - - - - - - - - -k check - - >> $TEST_LOG 2>&1 || true - - - - >> $TEST_LOG 2>&1 - - || true - - - - - - - - - - - - - - - make -k check >> $TEST_LOG 2>&1 || true - - - - >> $TEST_LOG 2>&1 - - || true - - - - - - - - - - - - - - - - - - - - - >> $TEST_LOG 2>&1 || true - - - - - - set +e - - set -e - - - - ! - - - - - - - || true - - - - - - - - - - - - - - - - - - - - - - - - - **EDITME - - EDITME** - - - - - diff --git a/2.3/HLFS/master.sh b/2.3/HLFS/master.sh deleted file mode 100644 index 5d12ec4..0000000 --- a/2.3/HLFS/master.sh +++ /dev/null @@ -1,659 +0,0 @@ -#!/bin/bash -set -e # Enable error trapping - -# $Id$ - -################################### -### FUNCTIONS ### -################################### - - -#----------------------------# -process_toolchain() { # embryo,cocoon and butterfly need special handling -#----------------------------# - local toolchain=$1 - local this_file=$2 - local tc_phase - local binutil_tarball - local gcc_core_tarball - local TC_MountPT - local remove_existing - - tc_phase=`echo $toolchain | sed -e 's@[0-9]\{3\}-@@' -e 's@-toolchain@@' -e 's,'$N',,'` - case $tc_phase in - embryo | \ - cocoon) # Vars for LUSER phase - remove_existing="remove_existing_dirs" - TC_MountPT="\$(MOUNT_PT)\$(SRC)" - ;; - butterfly) # Vars for CHROOT phase - remove_existing="remove_existing_dirs2" - TC_MountPT="\$(SRC)" - ;; - esac - - # - # Safe method to remove existing toolchain dirs - binutil_tarball=$(get_package_tarball_name "binutils") - gcc_core_tarball=$(get_package_tarball_name "gcc-core") -( -cat << EOF - @\$(call ${remove_existing},$binutil_tarball) - @\$(call ${remove_existing},$gcc_core_tarball) -EOF -) >> $MKFILE.tmp - - # - # Manually remove the toolchain directories.. -( -cat << EOF - @rm -rf ${TC_MountPT}/${tc_phase}-toolchain && \\ - rm -rf ${TC_MountPT}/${tc_phase}-build -EOF -) >> $MKFILE.tmp - - -( -cat << EOF - @echo "export PKGDIR=${TC_MountPT}" > envars -EOF -) >> $MKFILE.tmp - - case ${tc_phase} in - butterfly) - [[ "$TEST" != "0" ]] && CHROOT_wrt_test_log "${toolchain}" - CHROOT_wrt_RunAsRoot "$this_file" - ;; - *) LUSER_wrt_RunAsUser "$this_file" - ;; - esac - # -( -cat << EOF - @\$(call ${remove_existing},$binutil_tarball) - @\$(call ${remove_existing},$gcc_core_tarball) -EOF -) >> $MKFILE.tmp - - # - # Manually remove the toolchain directories.. -( -cat << EOF - @rm -rf ${TC_MountPT}/${tc_phase}-toolchain && \\ - rm -rf ${TC_MountPT}/${tc_phase}-build -EOF -) >> $MKFILE.tmp - -} - - -#----------------------------# -chapter3_Makefiles() { # Initialization of the system -#----------------------------# - - echo "${tab_}${GREEN}Processing... ${L_arrow}Chapter3 ( SETUP ) ${R_arrow}" - - # If $LUSER_HOME is already present in the host, we asume that the - # hlfs user and group are also presents in the host, and a backup - # of their bash init files is made. -( -cat << EOF -020-creatingtoolsdir: - @\$(call echo_message, Building) - @mkdir \$(MOUNT_PT)/tools && \\ - rm -f /tools && \\ - ln -s \$(MOUNT_PT)/tools / - @\$(call housekeeping) - -021-addinguser: 020-creatingtoolsdir - @\$(call echo_message, Building) - @if [ ! -d \$(LUSER_HOME) ]; then \\ - groupadd \$(LGROUP); \\ - useradd -s /bin/bash -g \$(LGROUP) -m -k /dev/null \$(LUSER); \\ - else \\ - touch luser-exist; \\ - fi; - @chown \$(LUSER) \$(MOUNT_PT)/tools && \\ - chmod -R a+wt \$(MOUNT_PT)/\$(SCRIPT_ROOT) && \\ - chmod a+wt \$(SRCSDIR) - @\$(call housekeeping) - -022-settingenvironment: 021-addinguser - @\$(call echo_message, Building) - @if [ -f \$(LUSER_HOME)/.bashrc -a ! -f \$(LUSER_HOME)/.bashrc.XXX ]; then \\ - mv \$(LUSER_HOME)/.bashrc \$(LUSER_HOME)/.bashrc.XXX; \\ - fi; - @if [ -f \$(LUSER_HOME)/.bash_profile -a ! -f \$(LUSER_HOME)/.bash_profile.XXX ]; then \\ - mv \$(LUSER_HOME)/.bash_profile \$(LUSER_HOME)/.bash_profile.XXX; \\ - fi; - @echo "set +h" > \$(LUSER_HOME)/.bashrc && \\ - echo "umask 022" >> \$(LUSER_HOME)/.bashrc && \\ - echo "HLFS=\$(MOUNT_PT)" >> \$(LUSER_HOME)/.bashrc && \\ - echo "LC_ALL=POSIX" >> \$(LUSER_HOME)/.bashrc && \\ - echo "PATH=/tools/bin:/bin:/usr/bin" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export HLFS LC_ALL PATH" >> \$(LUSER_HOME)/.bashrc && \\ - echo "" >> \$(LUSER_HOME)/.bashrc && \\ - echo "source $JHALFSDIR/envars" >> \$(LUSER_HOME)/.bashrc && \\ - chown \$(LUSER):\$(LGROUP) \$(LUSER_HOME)/.bashrc && \\ - chmod -R a+wt \$(MOUNT_PT) && \\ - touch envars && \\ - chown \$(LUSER) envars - @\$(call housekeeping) -EOF -) >> $MKFILE.tmp - chapter3=" 020-creatingtoolsdir 021-addinguser 022-settingenvironment" -} - -#----------------------------# -chapter5_Makefiles() { # Bootstrap or temptools phase -#----------------------------# - local file - local this_script - - echo "${tab_}${GREEN}Processing... ${L_arrow}Chapter5 ( LUSER ) ${R_arrow}" - - for file in chapter05/* ; do - # Keep the script file name - this_script=`basename $file` - - # Skip this script depending on jhalfs.conf flags set. - case $this_script in - # If no testsuites will be run, then TCL, Expect and DejaGNU aren't needed - *tcl* ) [[ "$TEST" = "0" ]] && continue; ;; - *expect* ) [[ "$TEST" = "0" ]] && continue; ;; - *dejagnu* ) [[ "$TEST" = "0" ]] && continue; ;; - # Test if the stripping phase must be skipped - *stripping* ) [[ "$STRIP" = "n" ]] && continue ;; - *) ;; - esac - - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - chapter5="$chapter5 $this_script" - - # Grab the name of the target - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' -e 's@-pass[0-9]\{1\}@@'` - - # Adjust 'name' - case $name in - uclibc) name="uClibc" ;; - esac - - # Set the dependency for the first target. - if [ -z $PREV ] ; then PREV=022-settingenvironment ; fi - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - - # This is a very special script and requires manual processing - # NO Optimization allowed - if [[ ${name} = "embryo-toolchain" ]] || \ - [[ ${name} = "cocoon-toolchain" ]]; then - LUSER_wrt_target "$this_script" "$PREV" - process_toolchain "${this_script}" "${file}" - wrt_touch - PREV=$this_script - continue - fi - # - LUSER_wrt_target "$this_script" "$PREV" - # Find the version of the command files, if it corresponds with the building of - # a specific package. Fix GCC tarball name for 2.4-branch. - case $name in - gcc ) pkg_tarball=$(get_package_tarball_name gcc-core) ;; - * ) pkg_tarball=$(get_package_tarball_name $name) ;; - esac - # 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. - LUSER_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. - LUSER_wrt_RunAsUser "${file}" - - # Remove the build directory(ies) except if the package build fails - # (so we can review config.cache, config.log, etc.) - if [ "$pkg_tarball" != "" ] ; then - LUSER_RemoveBuildDirs "$name" - fi - - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - - # Keep the script file name for Makefile dependencies. - PREV=$this_script - done # end for file in chapter05/* -} - - -#----------------------------# -chapter6_Makefiles() { # sysroot or chroot build phase -#----------------------------# - local file - local this_script - # Set envars and scripts for iteration targets - if [[ -z "$1" ]] ; then - local N="" - else - local N=-build_$1 - local chapter6="" - mkdir chapter06$N - cp chapter06/* chapter06$N - for script in chapter06$N/* ; do - # Overwrite existing symlinks, files, and dirs - sed -e 's/ln -s /ln -sf /g' \ - -e 's/^mv /&-f /g' \ - -e 's/mkdir -v/&p/g' -i ${script} - # Rename the scripts - mv ${script} ${script}$N - done - # Remove Bzip2 binaries before make install - sed -e 's@make install@rm -vf /usr/bin/bz*\n&@' -i chapter06$N/*-bzip2$N - # Fix how Module-Init-Tools do the install target - sed -e 's@make install@make INSTALL=install install@' -i chapter06$N/*-module-init-tools$N - # Don't readd already existing groups - sed -e '/groupadd/d' -i chapter06$N/*-udev$N - fi - - echo "${tab_}${GREEN}Processing... ${L_arrow}Chapter6$N ( CHROOT ) ${R_arrow}" - - for file in chapter06$N/* ; do - # Keep the script file name - this_script=`basename $file` - - # 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 - # dependencies and target creation. - *chroot* ) continue ;; - # Test if the stripping phase must be skipped - *-stripping* ) [[ "$STRIP" = "n" ]] && continue ;; - # Skip linux-headers in iterative builds - *linux-headers*) [[ -n "$N" ]] && continue ;; - esac - - # Grab the name of the target - name=`echo $this_script | sed -e 's@[0-9]\{3\}-@@' -e 's,'$N',,'` - - case $name in - uclibc) name="uClibc" ;; - esac - - # Find the version of the command files, if it corresponds with the building of - # a specific package. Fix GCC tarball name for 2.4-branch. - case $name in - gcc ) pkg_tarball=$(get_package_tarball_name gcc-core) ;; - * ) pkg_tarball=$(get_package_tarball_name $name) ;; - esac - - if [[ "$pkg_tarball" = "" ]] && [[ -n "$N" ]] ; then - case "${this_script}" in - *stripping*) ;; - *) continue ;; - esac - fi - - # Append each name of the script files to a list (this will become - # the names of the targets in the Makefile - case "${this_script}" in - *kernfs* ) runasroot=" ${this_script}" ;; - * ) chapter6="$chapter6 ${this_script}" ;; - esac - - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - if [[ ${name} = "butterfly-toolchain" ]]; then - CHROOT_wrt_target "${this_script}" "$PREV" - # Touch timestamp file if installed files logs will be created. - # But only for the firt build when running iterative builds. - if [ "${INSTALL_LOG}" = "y" ] && [ "x${N}" = "x" ] ; then - CHROOT_wrt_TouchTimestamp - fi - process_toolchain "${this_script}" "${file}" - if [ "${INSTALL_LOG}" = "y" ] && [ "x${N}" = "x" ] ; then - CHROOT_wrt_LogNewFiles "$name" - fi - wrt_touch - PREV=$this_script - continue - fi - # kernfs is run in SUDO target - case "${this_script}" in - *kernfs* ) LUSER_wrt_target "${this_script}" "$PREV" ;; - * ) CHROOT_wrt_target "${this_script}" "$PREV" ;; - esac - - # If $pkg_tarball isn't empty, we've got a package... - # Insert instructions for unpacking the package and changing directories - if [ "$pkg_tarball" != "" ] ; then - # Touch timestamp file if installed files logs will be created. - # But only for the firt build when running iterative builds. - if [ "${INSTALL_LOG}" = "y" ] && [ "x${N}" = "x" ] ; then - CHROOT_wrt_TouchTimestamp - fi - CHROOT_Unpack "$pkg_tarball" - # If the testsuites must be run, initialize the log file - # butterfly-toolchain tests are enabled in 'process_tookchain' function - # 2.4-branch toolchain is ernabled here. - case $name in - glibc | gcc | binutils) - [[ "$TEST" != "0" ]] && CHROOT_wrt_test_log "${this_script}" ;; - * ) [[ "$TEST" > "1" ]] && CHROOT_wrt_test_log "${this_script}" ;; - esac - # If using optimizations, write the instructions - [[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - fi - - # In kernfs we need to set HLFS and not to use chroot. - case "${this_script}" in - *kernfs* ) wrt_RunAsRoot "${file}" ;; - * ) CHROOT_wrt_RunAsRoot "${file}" ;; - esac - # - # Write installed files log and remove the build directory(ies) - # except if the package build fails. - if [ "$pkg_tarball" != "" ] ; then - CHROOT_wrt_RemoveBuildDirs "$name" - if [ "${INSTALL_LOG}" = "y" ] && [ "x${N}" = "x" ] ; then - CHROOT_wrt_LogNewFiles "$name" - fi - fi - # - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - - # Keep the script file name for Makefile dependencies. - PREV=${this_script} - # Set system_build envar for iteration targets - system_build=$chapter6 - done # end for file in chapter06/* - -} - -#----------------------------# -chapter7_Makefiles() { # Create a bootable system.. kernel, bootscripts..etc -#----------------------------# - local file - local this_script - - echo "${tab_}${GREEN}Processing... ${L_arrow}Chapter7 ( BOOT ) ${R_arrow}" - for file in chapter07/*; do - # Keep the script file name - this_script=`basename $file` - - case $this_script in - *grub) continue ;; # Grub must be configured manually. - *console) continue ;; # Use the file generated by lfs-bootscripts - *fstab) [[ ! -z ${FSTAB} ]] && cp ${FSTAB} $BUILDDIR/sources/fstab - ;; - *kernel) # If no .config file is supplied, the kernel build is skipped - [[ -z $CONFIG ]] && continue - cp $CONFIG $BUILDDIR/sources/kernel-config - ;; - esac - - # First append then name of the script file to a list (this will become - # the names of the targets in the Makefile - chapter7="$chapter7 $this_script" - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - CHROOT_wrt_target "$this_script" "$PREV" - - case "${this_script}" in - *bootscripts*) - if [ "${INSTALL_LOG}" = "y" ] ; then - CHROOT_wrt_TouchTimestamp - fi - CHROOT_Unpack $(get_package_tarball_name "lfs-bootscripts") - blfs_bootscripts=$(get_package_tarball_name "blfs-bootscripts" | sed -e 's/.tar.*//' ) - echo -e "\t@echo \"\$(MOUNT_PT)\$(SRC)/$blfs_bootscripts\" >> sources-dir" >> $MKFILE.tmp - ;; - *kernel) - name="linux" - pkg_tarball=$(get_package_tarball_name $name) - if [ "${INSTALL_LOG}" = "y" ] ; then - CHROOT_wrt_TouchTimestamp - fi - CHROOT_Unpack "$pkg_tarball" - ;; - esac - - case "${this_script}" in - *fstab*) # Check if we have a real /etc/fstab file - if [[ -n "$FSTAB" ]] ; then - CHROOT_wrt_CopyFstab - else - CHROOT_wrt_RunAsRoot "$file" - fi - ;; - *) # All other scripts - CHROOT_wrt_RunAsRoot "${file}" - ;; - esac - - # Remove the build directory except if the package build fails. - case "${this_script}" in - *bootscripts*) -( -cat << EOF - @ROOT=\`head -n1 \$(SRC)/\$(PKG_LST) | sed 's@^./@@;s@/.*@@'\` && \\ - rm -r \$(SRC)/\$\$ROOT - @rm -rf \`cat sources-dir\` && \\ - rm sources-dir -EOF -) >> $MKFILE.tmp - if [ "${INSTALL_LOG}" = "y" ] ; then - CHROOT_wrt_LogNewFiles "$name" - fi - ;; - *kernel) CHROOT_wrt_RemoveBuildDirs "dummy" - if [ "${INSTALL_LOG}" = "y" ] ; then - CHROOT_wrt_LogNewFiles "$name" - fi ;; - esac - - # Include a touch of the target name so make can check if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - - # Keep the script file name for Makefile dependencies. - PREV=$this_script - done # for file in chapter07/* -} - - -#----------------------------# -build_Makefile() { # Construct a Makefile from the book scripts -#----------------------------# - echo "Creating Makefile... ${BOLD}START${OFF}" - - cd $JHALFSDIR/${PROGNAME}-commands - # Start with a clean Makefile.tmp file - >$MKFILE.tmp - - chapter3_Makefiles - chapter5_Makefiles - chapter6_Makefiles - # Add the iterations targets, if needed - [[ "$COMPARE" = "y" ]] && wrt_compare_targets - chapter7_Makefiles - # Add the CUSTOM_TOOLS targets, if needed - [[ "$CUSTOM_TOOLS" = "y" ]] && wrt_CustomTools_target - # Add the BLFS_TOOL targets, if needed - [[ "$BLFS_TOOL" = "y" ]] && wrt_blfs_tool_targets - - # Add a header, some variables and include the function file - # to the top of the real Makefile. - wrt_Makefile_header - - # Add chroot commands - CHROOT_LOC="`whereis -b chroot | cut -d " " -f2`" - i=1 - for file in chapter06/*chroot* ; do - chroot=`cat $file | \ - sed -e "s@chroot@$CHROOT_LOC@" \ - -e '/#!\/bin\/bash/d' \ - -e '/^export/d' \ - -e '/^logout/d' \ - -e 's@ \\\@ @g' | \ - tr -d '\n' | \ - sed -e 's/ */ /g' \ - -e 's|\\$|&&|g' \ - -e 's|exit||g' \ - -e 's|$| -c|' \ - -e 's|"$$HLFS"|$(MOUNT_PT)|'\ - -e 's|set -e||' \ - -e 's|set +h||'` - echo -e "CHROOT$i= $chroot\n" >> $MKFILE - i=`expr $i + 1` - done - - # Drop in the main target 'all:' and the chapter targets with each sub-target - # as a dependency. -( - cat << EOF - -all: ck_UID mk_SETUP mk_LUSER mk_SUDO mk_CHROOT mk_BOOT create-sbu_du-report mk_CUSTOM_TOOLS mk_BLFS_TOOL - @sudo make do-housekeeping - @echo "$VERSION - jhalfs build" > hlfs-release && \\ - sudo install -m444 hlfs-release \$(MOUNT_PT)/etc/hlfs-release - @\$(call echo_finished,$VERSION) - -ck_UID: - @if [ \`id -u\` = "0" ]; then \\ - echo "--------------------------------------------------"; \\ - echo "You cannot run this makefile from the root account"; \\ - echo "--------------------------------------------------"; \\ - exit 1; \\ - fi - -mk_SETUP: - @\$(call echo_SU_request) - @sudo make BREAKPOINT=\$(BREAKPOINT) SETUP - @touch \$@ - -mk_LUSER: mk_SETUP - @\$(call echo_SULUSER_request) - @(sudo \$(SU_LUSER) "source .bashrc && cd \$(MOUNT_PT)/\$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) LUSER" ) - @sudo make restore-luser-env - @touch \$@ - -mk_SUDO: mk_LUSER - @sudo make SUDO - @touch \$@ - -mk_CHROOT: mk_SUDO - @if [ ! -e \$(MOUNT_PT)/dev ]; then \\ - mkdir \$(MOUNT_PT)/dev && \\ - sudo mknod -m 666 \$(MOUNT_PT)/dev/null c 1 3 && \\ - sudo mknod -m 600 \$(MOUNT_PT)/dev/console c 5 1 && \\ - sudo chown -R 0:0 \$(MOUNT_PT)/dev; \\ - fi; - @\$(call echo_CHROOT_request) - @( sudo \$(CHROOT1) "cd \$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) CHROOT") - @touch \$@ - -mk_BOOT: mk_CHROOT - @\$(call echo_CHROOT_request) - @( sudo \$(CHROOT2) "cd \$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) BOOT") - @touch \$@ - -mk_CUSTOM_TOOLS: create-sbu_du-report - @if [ "\$(ADD_CUSTOM_TOOLS)" = "y" ]; then \\ - \$(call sh_echo_PHASE,Building CUSTOM_TOOLS); \\ - sudo mkdir -p ${BUILDDIR}${TRACKING_DIR}; \\ - (sudo \$(CHROOT2) "cd \$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) CUSTOM_TOOLS"); \\ - fi; - @touch \$@ - -mk_BLFS_TOOL: mk_CUSTOM_TOOLS - @if [ "\$(ADD_BLFS_TOOLS)" = "y" ]; then \\ - \$(call sh_echo_PHASE,Building BLFS_TOOL); \\ - sudo mkdir -p $BUILDDIR$TRACKING_DIR; \\ - (sudo \$(CHROOT2) "cd \$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) BLFS_TOOL"); \\ - fi; - @touch \$@ - - -SETUP: $chapter3 -LUSER: $chapter5 -SUDO: $runasroot -CHROOT: SHELL=/tools/bin/bash -CHROOT: $chapter6 -BOOT: $chapter7 -CUSTOM_TOOLS: $custom_list -BLFS_TOOL: $blfs_tool - - -create-sbu_du-report: mk_BOOT - @\$(call echo_message, Building) - @if [ "\$(ADD_REPORT)" = "y" ]; then \\ - ./create-sbu_du-report.sh logs $VERSION; \\ - \$(call echo_report,$VERSION-SBU_DU-$(date --iso-8601).report); \\ - fi; - @touch \$@ - -restore-luser-env: - @\$(call echo_message, Building) - @if [ -f \$(LUSER_HOME)/.bashrc.XXX ]; then \\ - mv -f \$(LUSER_HOME)/.bashrc.XXX \$(LUSER_HOME)/.bashrc; \\ - fi; - @if [ -f \$(LUSER_HOME)/.bash_profile.XXX ]; then \\ - mv \$(LUSER_HOME)/.bash_profile.XXX \$(LUSER_HOME)/.bash_profile; \\ - fi; - @chown \$(LUSER):\$(LGROUP) \$(LUSER_HOME)/.bash* && \\ - touch \$@ && \\ - echo " "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\ - echo --------------------------------------------------------------------------------\$(WHITE) - -do-housekeeping: - @-umount \$(MOUNT_PT)/dev/pts - @-umount \$(MOUNT_PT)/dev/shm - @-umount \$(MOUNT_PT)/dev - @-umount \$(MOUNT_PT)/sys - @-umount \$(MOUNT_PT)/proc - @-rm /tools - @-if [ ! -f luser-exist ]; then \\ - userdel \$(LUSER); \\ - rm -rf \$(LUSER_HOME); \\ - fi; - - - -EOF -) >> $MKFILE - - # Bring over the items from the Makefile.tmp - cat $MKFILE.tmp >> $MKFILE - rm $MKFILE.tmp - echo "Creating Makefile... ${BOLD}DONE${OFF}" - -} diff --git a/2.3/LFS/lfs.xsl b/2.3/LFS/lfs.xsl deleted file mode 100644 index bebb86d..0000000 --- a/2.3/LFS/lfs.xsl +++ /dev/null @@ -1,306 +0,0 @@ - - - %general-entities; -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00 - - - - 0 - - - - - - - - - - - - #!/tools/bin/bash set +h - - - #!/bin/bash set +h - - - - set -e - - - - cd $PKGDIR - - tar -xvf ../vim-&vim-version;-lang.* --strip-components=1 - - - - - - - - exit - - - - - - - - - - - - - - - - make -k - - >> $TEST_LOG 2>&1 || true - - - - >> $TEST_LOG 2>&1 - - || true - - - - - - - - - - - - - tar.* - - - - - - - patch -Z - - - - - - if [[ ! -d /lib/udev/devices ]] ; then - - fi - - - - - export LANG= - - - - - - - make mrproper - cp -v ../kernel-config .config - - - - - - - - - - - - - - - - -k check - - >> $TEST_LOG 2>&1 || true - - - - >> $TEST_LOG 2>&1 - - || true - - - - - - - - - - - -k tests - - >> $TEST_LOG 2>&1 || true - - - - >> $TEST_LOG 2>&1 - - || true - - - - - - - - - - - - - - - make -k check >> $TEST_LOG 2>&1 || true - - - - >> $TEST_LOG 2>&1 - - || true - - - - - - - - - - - - >> $TEST_LOG 2>&1 || true - - - - - - - - >> $TEST_LOG - - - - - - - || true - - - - - - - - - - - - - - - - - - - **EDITME - - EDITME** - - - - - diff --git a/2.3/LFS/master.sh b/2.3/LFS/master.sh deleted file mode 100644 index f3d28ad..0000000 --- a/2.3/LFS/master.sh +++ /dev/null @@ -1,531 +0,0 @@ -#!/bin/bash - -# $Id$ - -################################### -### FUNCTIONS ### -################################### - - -############################################################# - - -#----------------------------# -chapter4_Makefiles() { # -#----------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}Chapter4 ( SETUP ) ${R_arrow}" - -# If $LUSER_HOME is already present in the host, we asume that the -# lfs user and group are also presents in the host, and a backup -# of their bash init files is made. -( - cat << EOF -020-creatingtoolsdir: - @\$(call echo_message, Building) - @mkdir \$(MOUNT_PT)/tools && \\ - rm -f /tools && \\ - ln -s \$(MOUNT_PT)/tools / - @\$(call housekeeping) - -021-addinguser: 020-creatingtoolsdir - @\$(call echo_message, Building) - @if [ ! -d \$(LUSER_HOME) ]; then \\ - groupadd \$(LGROUP); \\ - useradd -s /bin/bash -g \$(LGROUP) -m -k /dev/null \$(LUSER); \\ - else \\ - touch luser-exist; \\ - fi; - @chown \$(LUSER) \$(MOUNT_PT)/tools && \\ - chmod -R a+wt \$(MOUNT_PT)/\$(SCRIPT_ROOT) && \\ - chmod a+wt \$(SRCSDIR) - @\$(call housekeeping) - -022-settingenvironment: 021-addinguser - @\$(call echo_message, Building) - @if [ -f \$(LUSER_HOME)/.bashrc -a ! -f \$(LUSER_HOME)/.bashrc.XXX ]; then \\ - mv \$(LUSER_HOME)/.bashrc \$(LUSER_HOME)/.bashrc.XXX; \\ - fi; - @if [ -f \$(LUSER_HOME)/.bash_profile -a ! -f \$(LUSER_HOME)/.bash_profile.XXX ]; then \\ - mv \$(LUSER_HOME)/.bash_profile \$(LUSER_HOME)/.bash_profile.XXX; \\ - fi; - @echo "set +h" > \$(LUSER_HOME)/.bashrc && \\ - echo "umask 022" >> \$(LUSER_HOME)/.bashrc && \\ - echo "LFS=\$(MOUNT_PT)" >> \$(LUSER_HOME)/.bashrc && \\ - echo "LC_ALL=POSIX" >> \$(LUSER_HOME)/.bashrc && \\ - echo "PATH=/tools/bin:/bin:/usr/bin" >> \$(LUSER_HOME)/.bashrc && \\ - echo "export LFS LC_ALL PATH" >> \$(LUSER_HOME)/.bashrc && \\ - echo "source $JHALFSDIR/envars" >> \$(LUSER_HOME)/.bashrc && \\ - chown \$(LUSER):\$(LGROUP) \$(LUSER_HOME)/.bashrc && \\ - touch envars && \\ - chown \$(LUSER) envars - @\$(call housekeeping) -EOF -) > $MKFILE.tmp - - chapter4=" 020-creatingtoolsdir 021-addinguser 022-settingenvironment" -} - - - -#----------------------------# -chapter5_Makefiles() { -#----------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}Chapter5 ( LUSER ) ${R_arrow}" - - for file in chapter05/* ; do - # Keep the script file name - this_script=`basename $file` - - # If no testsuites will be run, then TCL, Expect and DejaGNU aren't needed - # Fix also locales creation when running chapter05 testsuites (ugly) - case "${this_script}" in - *tcl) [[ "${TEST}" = "0" ]] && continue ;; - *expect) [[ "${TEST}" = "0" ]] && continue ;; - *dejagnu) [[ "${TEST}" = "0" ]] && continue ;; - *stripping) [[ "${STRIP}" = "n" ]] && continue ;; - *glibc) [[ "${TEST}" = "3" ]] && \ - sed -i 's@/usr/lib/locale@/tools/lib/locale@' $file ;; - esac - - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - # DO NOT append the changingowner script, it need be run as root. - # A hack is necessary: create script in chap5 BUT run as a dependency for - # SUDO target - case "${this_script}" in - *changingowner) runasroot="$runasroot ${this_script}" ;; - *) chapter5="$chapter5 ${this_script}" ;; - esac - - # Grab the name of the target (minus the -pass1 or -pass2 in the case of gcc - # and binutils in chapter 5) - name=`echo ${this_script} | sed -e 's@[0-9]\{3\}-@@' -e 's@-pass[0-9]\{1\}@@'` - - # Set the dependency for the first target. - if [ -z $PREV ] ; then PREV=022-settingenvironment ; fi - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - LUSER_wrt_target "${this_script}" "$PREV" - - # Find the version of the command files, if it corresponds with the building of - # a specific package - pkg_tarball=$(get_package_tarball_name $name) - - # 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. - LUSER_wrt_unpack "$pkg_tarball" - # If the testsuites must be run, initialize the log file - [[ "$TEST" = "3" ]] && LUSER_wrt_test_log "${this_script}" - # 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. - # The changingowner script must be run as root. - case "${this_script}" in - *changingowner) wrt_RunAsRoot "$file" ;; - *) LUSER_wrt_RunAsUser "$file" ;; - esac - - # Remove the build directory(ies) except if the package build fails - # (so we can review config.cache, config.log, etc.) - if [ "$pkg_tarball" != "" ] ; then - LUSER_RemoveBuildDirs "$name" - fi - - # Include a touch of the target name so make can check - # if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - - # Keep the script file name for Makefile dependencies. - PREV=${this_script} - done # end for file in chapter05/* -} - - -#----------------------------# -chapter6_Makefiles() { -#----------------------------# - - # Set envars and scripts for iteration targets - if [[ -z "$1" ]] ; then - local N="" - else - local N=-build_$1 - local chapter6="" - mkdir chapter06$N - cp chapter06/* chapter06$N - for script in chapter06$N/* ; do - # Overwrite existing symlinks, files, and dirs - sed -e 's/ln -sv/&f/g' \ - -e 's/mv -v/&f/g' \ - -e 's/mkdir -v/&p/g' -i ${script} - # Rename the scripts - mv ${script} ${script}$N - done - # Remove Bzip2 binaries before make install (LFS-6.2 compatibility) - sed -e 's@make install@rm -vf /usr/bin/bz*\n&@' -i chapter06$N/*-bzip2$N - fi - - echo "${tab_}${GREEN}Processing... ${L_arrow}Chapter6$N ( CHROOT ) ${R_arrow}" - - for file in chapter06$N/* ; do - # Keep the script file name - this_script=`basename $file` - - # We'll run the chroot commands differently than the others, so skip them in the - # dependencies and target creation. - # Skip also linux-headers in iterative builds. - case "${this_script}" in - *chroot) continue ;; - *stripping*) [[ "${STRIP}" = "n" ]] && continue ;; - *linux-headers*) [[ -n "$N" ]] && continue ;; - esac - - # Grab the name of the target. - name=`echo ${this_script} | sed -e 's@[0-9]\{3\}-@@' -e 's,'$N',,'` - - # Find the version of the command files, if it corresponds with the building of - # a specific package. We need this here to can skip scripts not needed for - # iterations rebuilds - pkg_tarball=$(get_package_tarball_name $name) - - if [[ "$pkg_tarball" = "" ]] && [[ -n "$N" ]] ; then - case "${this_script}" in - *stripping*) ;; - *) continue ;; - esac - fi - - # Append each name of the script files to a list (this will become - # the names of the targets in the Makefile) - # The kernfs script must be run as part of SUDO target. - case "${this_script}" in - *kernfs) runasroot="$runasroot ${this_script}" ;; - *) chapter6="$chapter6 ${this_script}" ;; - esac - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - # In the mount of kernel filesystems we need to set LFS - # and not to use chroot. - case "${this_script}" in - *kernfs) LUSER_wrt_target "${this_script}" "$PREV" ;; - *) CHROOT_wrt_target "${this_script}" "$PREV" ;; - esac - - # If $pkg_tarball isn't empty, we've got a package... - # Insert instructions for unpacking the package and changing directories - if [ "$pkg_tarball" != "" ] ; then - # Touch timestamp file if installed files logs will be created. - # But only for the firt build when running iterative builds. - if [ "${INSTALL_LOG}" = "y" ] && [ "x${N}" = "x" ] ; then - CHROOT_wrt_TouchTimestamp - fi - CHROOT_Unpack "$pkg_tarball" - # If the testsuites must be run, initialize the log file - case $name in - binutils | gcc | glibc ) - [[ "$TEST" != "0" ]] && CHROOT_wrt_test_log "${this_script}" - ;; - * ) - [[ "$TEST" = "2" ]] || [[ "$TEST" = "3" ]] && CHROOT_wrt_test_log "${this_script}" - ;; - esac - # If using optimizations, write the instructions - [[ "$OPTIMIZE" != "0" ]] && wrt_optimize "$name" && wrt_makeflags "$name" - fi - - # In the mount of kernel filesystems we need to set LFS - # and not to use chroot. - case "${this_script}" in - *kernfs) wrt_RunAsRoot "$file" ;; - *) CHROOT_wrt_RunAsRoot "$file" ;; - esac - - # Write installed files log and remove the build directory(ies) - # except if the package build fails. - if [ "$pkg_tarball" != "" ] ; then - CHROOT_wrt_RemoveBuildDirs "$name" - if [ "${INSTALL_LOG}" = "y" ] && [ "x${N}" = "x" ] ; then - CHROOT_wrt_LogNewFiles "$name" - fi - fi - - # Include a touch of the target name so make can check - # if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - - # Keep the script file name for Makefile dependencies. - PREV=${this_script} - # Set system_build envar for iteration targets - system_build=$chapter6 - done # end for file in chapter06/* -} - -#----------------------------# -chapter78_Makefiles() { -#----------------------------# - echo "${tab_}${GREEN}Processing... ${L_arrow}Chapter7/8 ( BOOT ) ${R_arrow}" - - for file in chapter0{7,8}/* ; do - # Keep the script file name - this_script=`basename $file` - - # Grub must be configured manually. - # Handle fstab creation. - # If no .config file is supplied, the kernel build is skipped - case ${this_script} in - *grub) continue ;; - *fstab) [[ ! -z ${FSTAB} ]] && cp ${FSTAB} $BUILDDIR/sources/fstab ;; - *kernel) [[ -z ${CONFIG} ]] && continue - cp ${CONFIG} $BUILDDIR/sources/kernel-config ;; - esac - - # First append each name of the script files to a list (this will become - # the names of the targets in the Makefile - chapter78="$chapter78 ${this_script}" - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - CHROOT_wrt_target "${this_script}" "$PREV" - - # Find the bootscripts and kernel package names - case "${this_script}" in - *bootscripts) - name="lfs-bootscripts" - pkg_tarball=$(get_package_tarball_name $name) - if [ "${INSTALL_LOG}" = "y" ] ; then - CHROOT_wrt_TouchTimestamp - fi - CHROOT_Unpack "$pkg_tarball" - ;; - *kernel) - name="linux" - pkg_tarball=$(get_package_tarball_name $name) - if [ "${INSTALL_LOG}" = "y" ] ; then - CHROOT_wrt_TouchTimestamp - fi - CHROOT_Unpack "$pkg_tarball" - ;; - esac - - # Check if we have a real /etc/fstab file - case "${this_script}" in - *fstab) if [[ -n $FSTAB ]]; then - CHROOT_wrt_CopyFstab - else - CHROOT_wrt_RunAsRoot "$file" - fi - ;; - *) CHROOT_wrt_RunAsRoot "$file" - ;; - esac - - case "${this_script}" in - *bootscripts) CHROOT_wrt_RemoveBuildDirs "dummy" - if [ "${INSTALL_LOG}" = "y" ] ; then - CHROOT_wrt_LogNewFiles "$name" - fi ;; - *kernel) CHROOT_wrt_RemoveBuildDirs "dummy" - if [ "${INSTALL_LOG}" = "y" ] ; then - CHROOT_wrt_LogNewFiles "$name" - fi ;; - esac - - # Include a touch of the target name so make can check - # if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - - # Keep the script file name for Makefile dependencies. - PREV=${this_script} - done # for file in chapter0{7,8}/* - -} - - - -#----------------------------# -build_Makefile() { # -#----------------------------# - - echo "Creating Makefile... ${BOLD}START${OFF}" - - cd $JHALFSDIR/${PROGNAME}-commands - - # Start with a clean Makefile.tmp file - >$MKFILE - - chapter4_Makefiles - chapter5_Makefiles - chapter6_Makefiles - # Add the iterations targets, if needed - [[ "$COMPARE" = "y" ]] && wrt_compare_targets - chapter78_Makefiles - # Add the CUSTOM_TOOLS targets, if needed - [[ "$CUSTOM_TOOLS" = "y" ]] && wrt_CustomTools_target - # Add the BLFS_TOOL targets, if needed - [[ "$BLFS_TOOL" = "y" ]] && wrt_blfs_tool_targets - - # Add a header, some variables and include the function file - # to the top of the real Makefile. - wrt_Makefile_header - - # Add chroot commands - CHROOT_LOC="`whereis -b chroot | cut -d " " -f2`" - i=1 - for file in chapter06/*chroot* ; do - chroot=`cat $file | \ - sed -e "s@chroot@$CHROOT_LOC@" \ - -e '/#!\/bin\/bash/d' \ - -e 's@ \\\@ @g' | \ - tr -d '\n' | \ - sed -e 's/ */ /g' \ - -e 's|\\$|&&|g' \ - -e 's|exit||g' \ - -e 's|$| -c|' \ - -e 's|"$$LFS"|$(MOUNT_PT)|' \ - -e 's|set -e||' \ - -e 's|set +h||'` - echo -e "CHROOT$i= $chroot\n" >> $MKFILE - i=`expr $i + 1` - done - - # Drop in the main target 'all:' and the chapter targets with each sub-target - # as a dependency. -( - cat << EOF - -all: ck_UID mk_SETUP mk_LUSER mk_SUDO mk_CHROOT mk_BOOT create-sbu_du-report mk_CUSTOM_TOOLS mk_BLFS_TOOL - @sudo make do_housekeeping - @echo "$VERSION - jhalfs build" > lfs-release && \\ - sudo mv lfs-release \$(MOUNT_PT)/etc - @\$(call echo_finished,$VERSION) - -ck_UID: - @if [ \`id -u\` = "0" ]; then \\ - echo "--------------------------------------------------"; \\ - echo "You cannot run this makefile from the root account"; \\ - echo "--------------------------------------------------"; \\ - exit 1; \\ - fi - -mk_SETUP: - @\$(call echo_SU_request) - @sudo make BREAKPOINT=\$(BREAKPOINT) SETUP - @touch \$@ - -mk_LUSER: mk_SETUP - @\$(call echo_SULUSER_request) - @( sudo \$(SU_LUSER) "source .bashrc && cd \$(MOUNT_PT)/\$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) LUSER" ) - @sudo make restore-luser-env - @touch \$@ - -mk_SUDO: mk_LUSER - @sudo make BREAKPOINT=\$(BREAKPOINT) SUDO - @touch \$@ - -mk_CHROOT: mk_SUDO - @\$(call echo_CHROOT_request) - @( sudo \$(CHROOT1) "cd \$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) CHROOT") - @touch \$@ - -mk_BOOT: mk_CHROOT - @\$(call echo_CHROOT_request) - @( sudo \$(CHROOT2) "cd \$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) BOOT") - @touch \$@ - -mk_CUSTOM_TOOLS: create-sbu_du-report - @if [ "\$(ADD_CUSTOM_TOOLS)" = "y" ]; then \\ - \$(call sh_echo_PHASE,Building CUSTOM_TOOLS); \\ - sudo mkdir -p ${BUILDDIR}${TRACKING_DIR}; \\ - (sudo \$(CHROOT2) "cd \$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) CUSTOM_TOOLS"); \\ - fi; - @touch \$@ - -mk_BLFS_TOOL: mk_CUSTOM_TOOLS - @if [ "\$(ADD_BLFS_TOOLS)" = "y" ]; then \\ - \$(call sh_echo_PHASE,Building BLFS_TOOL); \\ - sudo mkdir -p $BUILDDIR$TRACKING_DIR; \\ - (sudo \$(CHROOT2) "cd \$(SCRIPT_ROOT) && make BREAKPOINT=\$(BREAKPOINT) BLFS_TOOL"); \\ - fi; - @touch \$@ - - -SETUP: $chapter4 -LUSER: $chapter5 -SUDO: $runasroot -CHROOT: SHELL=/tools/bin/bash -CHROOT: $chapter6 -BOOT: $chapter78 -CUSTOM_TOOLS: $custom_list -BLFS_TOOL: $blfs_tool - - -create-sbu_du-report: mk_BOOT - @\$(call echo_message, Building) - @if [ "\$(ADD_REPORT)" = "y" ]; then \\ - ./create-sbu_du-report.sh logs $VERSION; \\ - \$(call echo_report,$VERSION-SBU_DU-$(date --iso-8601).report); \\ - fi; - @touch \$@ - -restore-luser-env: - @\$(call echo_message, Building) - @if [ -f \$(LUSER_HOME)/.bashrc.XXX ]; then \\ - mv -f \$(LUSER_HOME)/.bashrc.XXX \$(LUSER_HOME)/.bashrc; \\ - fi; - @if [ -f \$(LUSER_HOME)/.bash_profile.XXX ]; then \\ - mv \$(LUSER_HOME)/.bash_profile.XXX \$(LUSER_HOME)/.bash_profile; \\ - fi; - @chown \$(LUSER):\$(LGROUP) \$(LUSER_HOME)/.bash* - @\$(call housekeeping) - -do_housekeeping: - @-umount \$(MOUNT_PT)/sys - @-umount \$(MOUNT_PT)/proc - @-umount \$(MOUNT_PT)/dev/shm - @-umount \$(MOUNT_PT)/dev/pts - @-umount \$(MOUNT_PT)/dev - @-rm /tools - @-if [ ! -f luser-exist ]; then \\ - userdel \$(LUSER); \\ - rm -rf \$(LUSER_HOME); \\ - fi; - - -EOF -) >> $MKFILE - - # Bring over the items from the Makefile.tmp - cat $MKFILE.tmp >> $MKFILE - rm $MKFILE.tmp - echo "Creating Makefile... ${BOLD}DONE${OFF}" -} diff --git a/2.3/LICENSE b/2.3/LICENSE deleted file mode 100644 index 3912109..0000000 --- a/2.3/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/2.3/Makefile b/2.3/Makefile deleted file mode 100644 index d5ae127..0000000 --- a/2.3/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# From the Build Scripts Written By: Jim Gifford -# Modified By: Joe Ciccone - -TOPDIR=$(shell pwd) -CONFIG_CONFIG_IN = Config.in -CONFIG = menu - -all: menuconfig -# @clear - @`grep RUN_ME configuration | sed -e 's@RUN_ME=\"@@' -e 's@\"@@' ` - -$(CONFIG)/conf: - $(MAKE) -C $(CONFIG) conf - -$(CONFIG)/mconf: - $(MAKE) -C $(CONFIG) ncurses conf mconf - -menuconfig: $(CONFIG)/mconf - @$(CONFIG)/mconf $(CONFIG_CONFIG_IN) - -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 diff --git a/2.3/README b/2.3/README deleted file mode 100644 index fc8bebf..0000000 --- a/2.3/README +++ /dev/null @@ -1,276 +0,0 @@ -$Id$ - -1. INTRODUCTION:: - - This collection of scripts, known as jhalfs, strives to create - accurate makefiles from the Linux From Scratch book series XML files. - This software is an evolution of the original "jhalfs-0.2" code developed - by Jeremy Huntwork. - - The usage of this script assumes you have read and are familiar with - the book(s) and, therefore, the configuration variables found in menuconfig - interface will have meaning to you. - - The list of supported books can be found at - http://wiki.linuxfromscratch.org/alfs/wiki/SupportedBooks - - NOTES:: - *. The resulting Makefile takes considerable time to run to completion. - Lay in a supply of caffeine beverages. - - *. It is recommended that you temporarily unpack your linux kernel, - run , configure the kernel as per the book and save - the resulting .config file. This suggestion also applies to the - configuration of the uClibc package when building a HLFS system using - uClibc rather than glibc. - - *. Read carefully this file and the other README.* files before start - using the tool. - -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 do not have the above skills, please don't use this tool. - - -3. INSTALLATION:: - - No installation is required. System-wide installation is not allowed. - -4. CONFIGURATION:: - - We have installed the familiar menu based configuration tool driven by - GNU make. see the section RUNNING, for details - -5. RUNNING:: - - The command will launch a menu based configuration program. You will - recognize the layout from building the kernel or uClibc/BusyBox. The - underlying menu code was borrowed from BusyBox and slightly modified for - our use. - - Help on parameter function is available from the on-line help. Please - make use of that feature for additional information not in this file. - - Once you have set the parameters you wish and have saved your work the - jhalfs script is launch. The script verify first that the host can run - it and build the xLFS system, then validate the configuration and present - you with your selections which you may accept or reject. - - If you accepted the displayed settings jhalfs will proceed to create the - Makefile, optionally download packages. - - ::NEWS:: - You must be logged as a normal user with sudo privileges to run - the Makefile. - - NOTE:: - If you run the jhalfs script directly the only function you can select - is to display the version number running <./jhalfs -v> - -6. BLFS_TOOL SUPPORT:: - - For books that support it, there is an option to install blfs-tool and its - dependencies on the final system. The pre-made build dependencies - scripts has been written based on a LFS build. For CLFS and HLFS - builds you may need to adjust that scripts, that are found into the - common/blfs-tool-deps directory in the jhalfs sources tree. - - WARNING:: If you add blfs-tool support on a CLFS Sysroot build - you MUST to edit the dependencies scripts to fix the - installation paths. - Be careful when you modify the scripts as you can - easily disable the host system. - - After booting the new xLFS system some steps are needed to finish - blfs-tool installation: - - - A user account must be created. You must be logged on that user - account to use blfs-tool. - - - Move /blfs-root to that user's home and change ownership of the - directory and files to the user. - - - Give the user read and write privileges over the $TRACKING_DIR - directory and the files that it contains. - - - If you think that you may need the libxml2/libxslt Python modules, - remove the libxml2 and libxslt trackin files found in $TRACKING_DIR. - - - Configure sudo, adding the needed privileges for the user. - - We assume that blfs-tool will be used on a running fresh xLFS system. - To use it to build BLFS packages from the chroot jail is also possible, - but is for you to figure out how to do that. - - To know how to blfs-tool works, see README.BLFS. - -7. LAYOUT:: - - /BLFS (see README.BLFS) - - /CLFS/master.sh - /clfs.xsl - - /CLFS2/master.sh - /clfs2.xsl - - /CLFS3/master.sh - /clfs3.xsl - - /HLFS/master.sh - /hlfs.xsl - - /LFS/master.sh - /lfs.xsl - - /common/common_functions - /makefile_functions - /packages.xsl - /urls.xsl - /create-sbu_du-report.sh - /progress_bar.sh - /blfs-tool-deps/9xx-* - /libs/func_* - - /custom/template - /config/ - /examples/* - /examples_CLFS-E/* - - /extras/do_copy_files - /do_ica_prep - /do_ica_work - /farce - /filelist - - /optimize/opt_config - /opt_override - /optimize_functions - /opt_config.d/noOpt - /noSymbols - /O3pipe - /O3pipe_march - /defOpt_fPIC - - /menu/* - - README - README.BLFS - README.CLFS - README.HLFS - README.CUSTOM - TODO - LICENSE - - Config.in - Makefile - jhalfs - blfs-tool - -8. 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 - solved by reading the book(s). - - Q. "It doesn't work!" - A. Yes it does, try >> make - Remember you must have 'sudo' privileges. - - Q. "It still doesn't work" - A. jhalfs was designed to work against the development versions of the LFS - series of books. Consequently changes in a book(s) sometimes breaks older - versions of jhalfs. Before you start pulling out your hair download the - latest version of jhalfs to see if that solves your problem. - - Q. "How do I specify the build location?" - A. The original LFS document worked against the well known location /mnt/lfs. - This script automates the build of all of the LFS series of books and uses - a generic location $BUILDDIR with a default value of /mnt/build_dir. - You may change this value to suit your needs. - - The layout below $BUILDDIR is as follows. - $BUILDDIR/ - jhalfs (Makefile, cmd scripts, logs, etc..) - sources (where packages reside) - tools (temporary bootstrap system) - cross-tools (temporary CLFS only) - ... - FHS dir structure - ... - blfs_root (files to use blfs-tool if selected to install it) - - Q. "What is the function of the SRC_ARCHIVE variable?" - A. When jhalfs runs and packages download was selected, it creates a local - copy of the necessary packages in BUILDDIR/sources by downloading the - files. If the variable SRC_ARCHIVE is defined the software will first - look in this location for the file and, if found, will copy it to - BUILDDIR/sources. - If the files are not found in SRC_ARCHIVE _and_ you have write priv to - the directory any downloaded files will be mirrored there. - - Q. "How do I set the SRC_ARCHIVE location?" - A. The best way to set the value of SRC_ARCHIVE is - - export SRC_ARCHIVE=/wherever/you/store/downloaded/packages - - or you can set the full path in the proper menu entry. - - Q. "Why have 2 copies of the files?" - A. The package files must be visible during the chroot phase and this is a - simple and reliable method of doing so. This method also handles the CLFS - boot build method where the final build may be done on a separate machine. - - Q. "What is the function of "User account" and "Group account" menu settings?" - A. If you are running jhalfs from a low or non-privileged account you may not - have the priv to create/delete the user needed to build temporary tools. - These settings allow you to use your own user and group name to do that - build steps. - - These variables are adjustable also when invoking make: - - $BUILDDIR make LUSER=myaccount LGROUP=mygroup - - The 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 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 - not compatible with the host. If you choose to build using the chroot - method a test is performed at the end of the temptools phase. If the test - succeeds the build continues inside a chroot jail. However if the test fails - it means the host and target are not compatible an you should use the - 'boot' method to create your target code. - As an extreme example: You can build a sparc target on a x86 platform but - only the temptools phase. You must select the 'boot' method and not the - 'chroot.' You must transfer the toolchain to a sparc platform, reboot the - sparc box and continue the build. - Of all the LFS series of books Cross-LFS requires the greatest - understanding of host/target hardware combination. Please read the book - carefully and don't skip the easy parts (there are none..) - - Q. "How could I stop the build at a predefined chosen point?" - A. Launch the Makefile manually passing the last numbered target to be build - as the break point. For example: - - make BREAKPOINT=84-bash - - The build can be stopped also at the end of a top-level build phase by - calling directly the appropriate mk_* target. For example: - - make mk_LUSER - - See the Makefile to know the proper target names for that book build. - -Authors: - George Boudreau - Manuel Canales Esparcia diff --git a/2.3/README.BLFS b/2.3/README.BLFS deleted file mode 100644 index 430f9ae..0000000 --- a/2.3/README.BLFS +++ /dev/null @@ -1,233 +0,0 @@ -$Id$ - -1. INTRODUCTION:: - - If you want to add blfs-tool support into a xLFS base system build, - read the "BLFS_TOOL SUPPORT" section found in the README and be sure - to follow the after-booting installation intructions. - - To automate package builds from the BLFS book instructions is a huge - task. Some of the issues are: the BLFS book isn't linear; some package - pages use a custom layout; there are circular dependencies; several - packages can be installed on a non-default prefix; build commands can - change based on what dependencies will be used, etc. - - That being said, the goal of the blfs-tool is to help you solve package - dependencies, create build scripts and a Makefile. Few of the auto-generated - build scripts and Makefile will work "as is", thus, as a general rule, - you will need to review and edit the scripts while reading the book. - - -2. PREREQUISITES:: - - To use this tool you MUST: - - - 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 do not have the above skills, please don't use this tool. - - -3. USAGE:: - - Due the complexity of the BLFS book, the scripts and Makefile generation - is done in several steps: - - 3.1 INSTALLED PACKAGES TRACKING SYSTEM - - This tool includes a very simple tracking system to log which packages - have been installed using the tool. It is used to skip installed packages - from target selection menu and to test if an installed package has been - updated in the BLFS book. Do not rely on this feature as a package - management tool. - - The directory where tracking files will be stored needs to be created - before installing blfs-tool. You can place this directory anywhere, taking - care that the user must have read and write privileges on that directory - and on all files it contains. - - To use the default path set in the installation menu, run as root: - - install -d -m1777 /var/lib/jhalfs/BLFS - - 3.2 BLFS_TOOL INSTALLATION:: - - Run "make" to launch the jhalfs menuconfig interface. Select the BLFS - book and version. Then set the installation directory (default - $HOME/blfs_root), the BLFS sources directory (default blfs-xml), and - the installed packages tracking directory (default /var/lib/jhalfs/BLFS). - - All required files will be placed in the installation directory and - BLFS XML sources will be installed in the named sub-directory. - - Installed 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 - 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 resolves dependencies and generates linear BLFS books - and build scripts - gen-makefile.sh generates the 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. - - When finished the installation, the configuration and target selection - menu is launch. - - 3.3 UPDATING BOOK SOURCES:: - - If you are using the development book version and you want to update - installed packages to the latest version found in that book, you need to - update the XML sources and packages database. - - To do that run "./update_book.sh" - - On the next configuration run, packages already installed but listed - with a new version in the book will be available for target selection - and used to solve dependencies. - - 3.4 CONFIGURING AND PARSING THE BOOK:: - - The next step is to create a book and build scripts in dependency - build order for a target package. A target can be a package or a - meta-package. - - WARNING: - Only one target (meta-package or individual package) must be - selected on each configuration run. - There is no way to solve dependencies properly when more - than one target are selected. - - Run to launch the configuration interface. The main menu contains - three blocks: meta-package selection, individual package selection, and - build options. - - When a meta-package is selected, it is possible to unselect unwanted - components. The unselected components will be skipped if no other components - depends on them. - - In the build options section, the dependencies level and default packages - used to solve alternatives are set. You can also select whether the build will - be made as a normal user or as root. That settings are saved to be reused in - future configuration runs. - - If, for example, your target selection is Xsoft-->Graphweb-->galeon, a - directory named "galeon" will be created. Inside that directory you will - find a directory named "HTML" that contains a galeon-based HTML book with - its dependencies in build order, and a "scripts" directory with build - scripts for that packages. - - There are also two other directories ("dependencies" and "xincludes") - that contain files generated while resolving dependencies trees. - - 3.5 EDITING BUILD SCRIPTS - - Now it is time to review the generated book and scripts, making any changes - to the scripts necessary to fix generation bugs or to suit your needs. - - Scripts for additional packages (i.e., for non-BLFS packages) can be - easily inserted. 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. - - Remember, the package tracking system isn't a package management tool - and knows nothing about packages not in the BLFS book. - - Also, review and edit envars.conf. This file is used to set global envars - needed by the build scripts. - - 3.6 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 - ../gen-makefile.sh - - Review the Makefile, and, if all looks sane, start the build. - -4. GENERATED BUILD SCRIPTS ISSUES:: - - In this section, known issues with the generated build scripts are - discussed. They are due to build procedures and/or BLFS layout particularities - that we can't handle. In several cases, editing the build scripts is mandatory. - You may also need to insert some build scripts created by you to resolve - unhandled dependencies and/or to remove some script installing the affected - package by hand. - - 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. - - 4.2 PACKAGE CONFIGURATION - - For those packages that have a "Configuration" section, you should - edit the build script to fit the needs of your system. - - 4.4 PDL, Perl modules, and Glib-Bindings. - - The generated scripts for these packages are broken and can not - be fixed. You must replace them with your own scripts or install the - packages by hand. - - 4.4 GCC, JDK, Sane, and KDE-multimedia - - On the pages for these packages, the BLFS book actually has instructions - to install two packages. You must edit the scripts to fix this. - - We will try to fix some of them, but this may not be possible. - - 4.5 XORG7 - - The generated scripts for Xorg7 pseudo-packages have $SRC_ARCHIVE - support for individual packages, but not for patches nor *.wget and *.md5 - files. - - If you have previously downloaded the patches, you must edit - the scripts to use your local packages. - - The *.wget and *.md5 files should be downladed always from inside - the scripts to be sure that the most current individual packages are - used. Thus don't reuse previouly existing ones. - - 4.6 PATCHES - - By default, all required patches will be downloaded from the NET. - - If you have previously downloaded the patches, you must edit the - scripts to use your local patches. - - Also, be sure that all scripts have the commands to download/apply the - required patches. Due to 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 require root privileges are run using sudo. Also make sure - necessary root privilege commands are visible in your PATH. - - Due to book layout issues, some sudo commands may be missing. - - 4.8 OTHERS - - There may be other issues that we are not aware of. If you find - any, please report it to . - - diff --git a/2.3/README.CLFS b/2.3/README.CLFS deleted file mode 100644 index e4251a2..0000000 --- a/2.3/README.CLFS +++ /dev/null @@ -1,44 +0,0 @@ -# $Id$ - - CLFS-1.x NOTES - - None for now. - - - - CLFS SYSROOT METHOD NOTES - - .- If you want to install additional custom packages via "Add custom tools - support" and/or select "Add blfs-tool support", be sure to review and edit - their packages build scripts to follow the sysroot build method or you will - end messing your host system. Be very careful with this. - - .- If you install additional packages not using the "Add custom tools support" - feature (i,e, you will install it manually after finished the Makefile run) - you will need to run manually the "Changing the Ownership Of The CLFS System" - phase commands found in the book. - - - - CLFS EMBEDDED SYSTEMS NOTES - - .- Mips, WRT and ARM builds are broken due a book bug on the uClibc - *ENDIAN* configuration settings. - - .- To install CBLFS packages you must to use the "Add custom tools support" - feature. To learn how it works and how to use it, see the section titled - "Adding Post-System Build Configuration Files and Extra Packages" - found in README.CUSTOM. That is also applicable to bootloaders installation. - - .- If you install additional packages not using the "Add custom tools support" - feature (i,e, you will install it manually after finished the Makefile run) - you will need to run manually the "Changing the Ownership Of The CLFS System" - phase commands found in the book. - - .- If your target is a MIPS wireless router, you must to select "mips" as - your target architecture and "WRT - MIPS based wireless route" as your - hardware platform. - - .- The backup & clean-up phases aren't run. This is to allow users to - review the installed files and do a more in-deeper clean-up before creating - the system tarball. diff --git a/2.3/README.CUSTOM b/2.3/README.CUSTOM deleted file mode 100644 index 171449d..0000000 --- a/2.3/README.CUSTOM +++ /dev/null @@ -1,268 +0,0 @@ -# -# $Id$ -# - HOW TO ADD CUSTOM SCRIPTS TO THE JHALFS MAKEFILE - - - Normally JHALFS creates a Makefile containing only those scripts found in -the {B,C,H}LFS books. An automated construction tool cannot predict the -needs of every individual and requests are made "Can you add xxxx package". -Rather than adding numerous package scripts and switches for each request it -was easier to add a tool for the user(s) to code their own package needs. - - There is two areas that can be customized: how the base system is build -and what additional configurations and packages requires your hardware to can -boot and work with. Each one of this areas is handled in a different way. - - - - - BASE SYSTEM CUSTOMIZATION - - There is two ways to alter how the base system will be built: - - - Using a working copy of the book sources and editing the XML files. - This is the way used by book editors to test packages upgrades, - command changes, build order changes. etc. - - This method requires you know very well the book sources and what - files need be edited. It will not be discussed here. - - - Editing the generated build scripts to make any change you would. - This is the method discussed below. - - - EDITING THE BASE SCRIPTS - - First step is to generate the build scripts with book defaults. To do that, -configure jhalfs activating any option you want included, but do not select -"Run the Makefile" option. - - Under the ${BUILD_DIR}/${SCRIPT_ROOT}/${PROGNAME}-commands directory -(using the defaults values to do an LFS build, that directory name is -/mnt/build_dir/jhalfs/lfs-commands) you will find the default build scripts. - - If all you want is modify, add, or remove some command from a package -installation, for example to change it ./configure line, just edit the related -script. If changing or adding a patch, be sure to copy the new patch to the -${BUILD_DIR}/sources directory. When done, run 'make' from inside the -${BUILD_DIR}/${SCRIPT_ROOT} directory. - - - REPLACING OR INSERTING PACKAGES AND CHANGING BUILD ORDER - - To remove a package from the system, just remove its script(s). - - To change the version of some package to build a newest or oldest one than the -one found in the book, edit ${BUILD_DIR}/${SCRIPT_ROOT}/pkg_tarball_list to -change it tarball name and place the new tarball in the ${BUILD_DIR}/sources -directory, - - To replace a package by an equivalent one, rename the replaced package script -to reflect the new package name (for example, 102-man-db -> 102-man), edit the -script to made the required commands changes, place the new tarball in the -${BUILD_DIR}/sources directory, and edit ${BUILD_DIR}/${SCRIPT_ROOT}/pkg_tarball_list -file to replace the removed package tarball name by the new package tarball name. - - To change the build order, rename the scripts changing the first 3-digits -string until have it ordered in the way you want. - - To insert a new package, for example to build Cracklib to can build Shadow -with Cracklib support, first you should decide before what default package it -need be installed, in this example before 107-shadow. Then create a new script -containing the needed commands, using an existing one as template, and name it with -the same 3-digits string used for that mentioned default package, but adding -another 1-digit string. In our example, the new script to build Cracklib just -before Shadow will be named 107-1-cracklib. This naming schema allow to insert -up to 10 scripts before each one of the default scripts. Place the tarball for -the new package and required patches, if any, if ${BUILD_DIR}/sources and edit -${BUILD_DIR}/${SCRIPT_ROOT}/pkg_tarball_list to add the tarball name for that -package. - - When ready, launch again the jhalfs configuration interface. Be sure that -are selected exactly the same options than when generating the default build -scripts. Be sure that "Rebuild files" is unselected and select "Run the Makefile" -if you want. Then select "Rebuild the Makefile". This will create a new Makefile -based on the changes you made to the build scripts. - - - - - ADDING POST-SYSTEM BUILD CONFIGURATION FILES AND EXTRA PACKAGES - - The installation of BLFS packages is handled via blfs-tool and activated -when you select the appropriate menu option. See README and README.BLFS for -more info. - - The feature described below was added so users could install remaining -configuration files, build the packages necessary to access the Internet -or to support specific hardware, or to install basic utilities that need -have available from the beginning, and was not intended to replace the BLFS -install system. - - :::NOTICE::: - The following examples are for use with LFS and are not applicable to any -of the CLFS-sysroot or CLFS-Embedded books. The directory examples_CLFS-E -contains code extracted from Beyond CLFS-embedded. Any packages you chose to -add should honour the DESTDIR=${CLFS} switch or equivalent. - - - LAYOUT - A new directory has been added to JHALFS tree which will contain the -configuration scripts and a few examples. A switch has been added to the -configuration file which enables/disables the inclusion of personal scripts. - - custom - /config <-- where to put your scripts. - /examples <-- a few example scripts - /examples_CLFS-E <-- example scripts for CLFS-Embedded - template <-- ALL scripts MUST look like this - - - - NOTE::: You are responsible for including all dependencies and ensuring they - are built in the proper order. - - 1. To add a package to the final JHALFS Makefile you must first create a file - in the custom/config directory. - **All config files MUST follow the naming convention, xxx-PKG, where xxx - is the order number and PKG is the name of the package. The file naming - format is important as it defines the build order. The example shown - below has an order number 950 and log files will list in alphabetical - order in the /logs directory after blfs-tools scripts. - The simplest method is to copy the template file into the config directory - and rename it. - - 2. Populate the variables with the necessary values. - Variable function is self explanatory except for the inclusion of the - build cmds. If the package you want to include is found in the BLFS - book then you only need to copy/paste the cmd strings between the xEOFx - pairs, otherwise you will need to define the build cmds yourself. - NOTE::: This script you just created is not usable directly but contains - all the information necessary for jhalfs to create a build script - and an entry in the jhalfs Makefile. - - 3. As mentioned previously the build order is dictated by the 3 digit number - in the file name. If a package has dependencies it must be numerically - larger than the dependency files. - i.e. The package mc has glib as a dependency and build order is - 950-glib - 951-mc - - 4. A config file for BLFS-bootscripts is already created as 999-blfs_bootscripts. - If a package requires a bootscript to be installed add the cmd to this - file and NOT in the package script. The gpm script is included as an - example of multiple patch files and the need for a blfs bootscript. - - -#--------- GLIB example ----------- - - # - # Filename syntax xxx-PKG ie. 950-glibc - # Create a file in the custom/config directory - # Populate the file using the following script as an example - # - -PKG="glib" -PKG_VERSION="1.2.10" -PKG_FILE="glib-1.2.10.tar.gz" -URL="http://gd.tuwien.ac.at/graphics/gimp/gtk/v1.2/${PKG_FILE}" -MD5="6fe30dad87c77b91b632def29dd69ef9" - - # The following code removes previously defined PATCHx variables -for i in PATCH{1..10}; do - unset $i -done - # Patches are named PATCH[1..10] - # This information is used to download the patch only - # If you do not have the MD5SUM the download will proceed with a warning. -PATCH1="http://www.linuxfromscratch.org/patches/blfs/svn/glib-1.2.10-gcc34-1.patch 0077a1cce5e8a2231ac5a9b08c6263ba" - - - # NOTE:: - # The convoluted scheme used to write out a temporary file is - # a work-around for embedded single and double quotes. - -( cat << "xEOFx" - -patch -Np1 -i ../glib-1.2.10-gcc34-1.patch && -./configure --prefix=/usr && -make -make install && -chmod -v 755 /usr/lib/libgmodule-1.2.so.0.0.10 - -xEOFx -) > tmp - - -#--------- GPM example ----------- - - -PKG="gpm" -PKG_VERSION="1.20.1" -PKG_FILE="gmp-1.20.1.tar.bz2" -URL="ftp://arcana.linux.it/pub/gpm/gpm-1.20.1.tar.bz2" -MD5="2c63e827d755527950d9d13fe3d87692" -for i in PATCH{1..10}; do - unset $i -done - # MD5SUM is not absolutely necessary but JHALFS whines and complains - # Add the MD5SUM if you can -PATCH1=" http://www.linuxfromscratch.org/patches/blfs/svn/gpm-1.20.1-segfault-1.patch" -PATCH2=" http://www.linuxfromscratch.org/patches/blfs/svn/gpm-1.20.1-silent-1.patch" - - -( cat << "xEOFx" - -patch -Np1 -i ../gpm-1.20.1-segfault-1.patch && -patch -Np1 -i ../gpm-1.20.1-silent-1.patch && -./configure --prefix=/usr --sysconfdir=/etc && -LDFLAGS="-lm" make - -make install && -cp -v conf/gpm-root.conf /etc && -ldconfig - -# The normal cmd to install the boot script for gpm -# --- PUT THIS CMD INSIDE 999-blfs_bootscripts -#make install-gpm - -cat > /etc/sysconfig/mouse << "EOF" -# Begin /etc/sysconfig/mouse - -MDEVICE="/dev/psaux" -PROTOCOL="imps2" -GPMOPTS="" - -# End /etc/sysconfig/mouse -EOF - -xEOFx -) > tmp - - -#--------- CMDS ONLY example ----------- - # This is an example of a self contained cmd script - # There are no referenced to a package or package dir. - # This method is useful for creating user files/profiles/etc - # at build time. - - -PKG="" -PKG_VERSION="" -PKG_FILE="" -URL="" -MD5="" -for i in PATCH{1..10}; do - unset $i -done -PATCH1="" - - -( cat << "xEOFx" - -echo "JUST A USELESS TRACE" - -xEOFx -) > tmp - diff --git a/2.3/README.HLFS b/2.3/README.HLFS deleted file mode 100644 index e7c2d1a..0000000 --- a/2.3/README.HLFS +++ /dev/null @@ -1,11 +0,0 @@ -$Id$ - - - ::::NOTICE:::: - - Hardened Linux From Scratch is a highly volatile project. Extreme design - changes can occur and the build could be broken for extended periods of - time. - - As of July 26.2007, the Glibc-based systems builds should work. - uClibc-based system still fail due book issues. diff --git a/2.3/TODO b/2.3/TODO deleted file mode 100644 index e743e3f..0000000 --- a/2.3/TODO +++ /dev/null @@ -1,25 +0,0 @@ - jhalfs TODO - --------------- - - -MASTER SCRIPT -------------- - - - Nothing for now. - - -xLFS MODULES ------------- - - - To develop a new "restart" Makefile target code to can resume an stopped build - after a host reboot, if possible. - - -BLFS MODULE (See BLFS/TODO) ------------ - - -OTHERS ------- - - - Bugs haunting and code clean-up. diff --git a/2.3/blfs-tool b/2.3/blfs-tool deleted file mode 100755 index 7244d14..0000000 --- a/2.3/blfs-tool +++ /dev/null @@ -1,182 +0,0 @@ -#!/bin/bash -# $Id$ - -set -e - -# From common/common-functions -# VT100 colors -declare -r BLACK=$'\e[1;30m' -declare -r DK_GRAY=$'\e[0;30m' - -declare -r RED=$'\e[31m' -declare -r GREEN=$'\e[32m' -declare -r YELLOW=$'\e[33m' -declare -r BLUE=$'\e[34m' -declare -r MAGENTA=$'\e[35m' -declare -r CYAN=$'\e[36m' -declare -r WHITE=$'\e[37m' - -declare -r OFF=$'\e[0m' -declare -r BOLD=$'\e[1m' -declare -r REVERSE=$'\e[7m' -declare -r HIDDEN=$'\e[8m' - -declare -r tab_=$'\t' -declare -r nl_=$'\n' - -declare -r DD_BORDER="${BOLD}==============================================================================${OFF}" -declare -r SD_BORDER="${BOLD}------------------------------------------------------------------------------${OFF}" -declare -r STAR_BORDER="${BOLD}******************************************************************************${OFF}" - -# bold yellow > < pair -declare -r R_arrow=$'\e[1;33m>\e[0m' -declare -r L_arrow=$'\e[1;33m<\e[0m' - - -#>>>>>>>>>>>>>>>ERROR TRAPPING >>>>>>>>>>>>>>>>>>>> -#-----------------------# -simple_error() { # Basic error trap.... JUST DIE -#-----------------------# - # If +e then disable text output - if [[ "$-" =~ e ]]; then - echo -e "\n${RED}ERROR:${GREEN} basic error trapped!${OFF}\n" >&2 - fi -} - -see_ya() { - echo -e "\n${L_arrow}${BOLD}jhalfs 2.3${R_arrow} exit${OFF}\n" -} -##### Simple error TRAPS -# ctrl-c SIGINT -# ctrl-y -# ctrl-z SIGTSTP -# SIGHUP 1 HANGUP -# SIGINT 2 INTRERRUPT FROM KEYBOARD Ctrl-C -# SIGQUIT 3 -# SIGKILL 9 KILL -# SIGTERM 15 TERMINATION -# SIGSTOP 17,18,23 STOP THE PROCESS -##### -set -e -trap see_ya 0 -trap simple_error ERR -trap 'echo -e "\n\n${RED}INTERRUPT${OFF} trapped\n" && exit 2' 1 2 3 15 17 18 23 -#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - -# envars not sourced from configuration file -COMMON_DIR="common" -VERBOSITY=1 - -[[ $VERBOSITY > 0 ]] && echo -n "Loading config params from ..." -source configuration -[[ $? > 0 ]] && echo "file:configuration did not load.." && exit 1 -[[ $VERBOSITY > 0 ]] && echo "OK" - -[[ $VERBOSITY > 0 ]] && echo -n "Loading function ..." -source $COMMON_DIR/libs/func_check_version.sh -[[ $? > 0 ]] && echo " function module did not load.." && exit 2 -[[ $VERBOSITY > 0 ]] && echo "OK" - -[[ $VERBOSITY > 0 ]] && echo -n "Loading function ..." -source $COMMON_DIR/libs/func_validate_configs.sh -[[ $? > 0 ]] && echo " function module did not load.." && exit 2 -[[ $VERBOSITY > 0 ]] && echo "OK" -[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}" - -# Be sure that we have a configuration file -[[ -z $BOOK_BLFS ]] && echo -e "\nNo BLFS configuration found. Please configure it." && exit 1 - -# Set default book version -BRANCH_ID=${BRANCH_ID:=development} - -# Set the SVN tree -case $BRANCH_ID in - development ) TREE=trunk/BOOK ;; - *EDIT* ) echo " You forgot to set the branch or stable book version." - echo " Please rerun make and fix the configuration." - exit 2 ;; - branch-* ) TREE=branches/${BRANCH_ID#branch-} ;; - * ) TREE=tags/${BRANCH_ID} ;; -esac - -# Check for minimun dependencies versions -xsltprocVer=`xsltproc -V | head -n1 ` - libxmlVer=$(echo $xsltprocVer | cut -d " " -f3) - libxsltVer=$(echo $xsltprocVer | cut -d " " -f5) - tidyVer=`tidy -V | cut -d " " -f9` - - # Version numbers are packed strings not xx.yy.zz format. -check_version "2.06.20" "${libxmlVer:0:1}.${libxmlVer:1:2}.${libxmlVer:3:2}" "LIBXML2" -check_version "1.01.14" "${libxsltVer:0:1}.${libxsltVer:1:2}.${libxsltVer:3:2}" "LIBXSLT" -check_version "2004" "${tidyVer}" "TIDY" - -XML_FILE=" - - -
- Test file - - Some title - Some text - -
" - -if `echo $XML_FILE | xmllint -noout -postvalid - 2>/dev/null` ; then - check_version "4.5" "4.5" "DocBook XML DTD" -else - echo "Warning: not found a working DocBook XML DTD 4.5 installation" - exit 2 -fi - -# if `echo $XML_FILE | xsltproc --noout - 2>/dev/null` ; then -# check_version "1.69.1" "1.69.1" "DocBook XSL" -# else -# echo "Warning: not found a working DocBook XSL 1.69.1 installation" -# exit 2 -# fi - -echo "${SD_BORDER}${nl_}" - -# For consistency with other books -validate_config -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 to fix the configuration options.${nl_}" - exit 1 -fi -echo "${nl_}${SD_BORDER}${nl_}" - -# Install the files -[[ ! -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 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 - - -# 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 get $BLFS_XML $TREE -fi - -# Run the menuconfig interface -make -B - diff --git a/2.3/common/blfs-tool-deps/901-libxml2 b/2.3/common/blfs-tool-deps/901-libxml2 deleted file mode 100644 index 5c48d38..0000000 --- a/2.3/common/blfs-tool-deps/901-libxml2 +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -# $Id$ - -set -e -cd $PKGDIR -./configure --prefix=/usr -make -make install - -exit diff --git a/2.3/common/blfs-tool-deps/902-libxslt b/2.3/common/blfs-tool-deps/902-libxslt deleted file mode 100644 index 5c48d38..0000000 --- a/2.3/common/blfs-tool-deps/902-libxslt +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -# $Id$ - -set -e -cd $PKGDIR -./configure --prefix=/usr -make -make install - -exit diff --git a/2.3/common/blfs-tool-deps/903-tidy b/2.3/common/blfs-tool-deps/903-tidy deleted file mode 100644 index b3053c1..0000000 --- a/2.3/common/blfs-tool-deps/903-tidy +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -# $Id$ - -set -e -cd $PKGDIR - -./configure --prefix=/usr -make -make install -make -C htmldoc install_apidocs - -exit diff --git a/2.3/common/blfs-tool-deps/904-unzip b/2.3/common/blfs-tool-deps/904-unzip deleted file mode 100644 index c25e898..0000000 --- a/2.3/common/blfs-tool-deps/904-unzip +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -# $Id$ - -set -e -cd $PKGDIR - -patch -Np1 -i ../unzip-5.52-security_fix-1.patch -make -f unix/Makefile LOCAL_UNZIP=-D_FILE_OFFSET_BITS=64 linux -make prefix=/usr install - -exit diff --git a/2.3/common/blfs-tool-deps/905-docbook-xml b/2.3/common/blfs-tool-deps/905-docbook-xml deleted file mode 100644 index ccd0a86..0000000 --- a/2.3/common/blfs-tool-deps/905-docbook-xml +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/bash - -# $Id$ - -set -e - -cd /sources -mkdir docbook-xml -cd docbook-xml -unzip ../docbook-xml-4.5.zip -install -v -d -m755 /usr/share/xml/docbook/xml-dtd-4.5 -install -v -d -m755 /etc/xml -chown -R root:root . -cp -v -af docbook.cat *.dtd ent/ *.mod \ - /usr/share/xml/docbook/xml-dtd-4.5 -if [ ! -e /etc/xml/docbook ]; then - xmlcatalog --noout --create /etc/xml/docbook -fi -xmlcatalog --noout --add "public" \ - "-//OASIS//DTD DocBook XML V4.5//EN" \ - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" \ - /etc/xml/docbook -xmlcatalog --noout --add "public" \ - "-//OASIS//DTD DocBook XML CALS Table Model V4.5//EN" \ - "file:///usr/share/xml/docbook/xml-dtd-4.5/calstblx.dtd" \ - /etc/xml/docbook -xmlcatalog --noout --add "public" \ - "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \ - "file:///usr/share/xml/docbook/xml-dtd-4.5/soextblx.dtd" \ - /etc/xml/docbook -xmlcatalog --noout --add "public" \ - "-//OASIS//ELEMENTS DocBook XML Information Pool V4.5//EN" \ - "file:///usr/share/xml/docbook/xml-dtd-4.5/dbpoolx.mod" \ - /etc/xml/docbook -xmlcatalog --noout --add "public" \ - "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V4.5//EN" \ - "file:///usr/share/xml/docbook/xml-dtd-4.5/dbhierx.mod" \ - /etc/xml/docbook -xmlcatalog --noout --add "public" \ - "-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN" \ - "file:///usr/share/xml/docbook/xml-dtd-4.5/htmltblx.mod" \ - /etc/xml/docbook -xmlcatalog --noout --add "public" \ - "-//OASIS//ENTITIES DocBook XML Notations V4.5//EN" \ - "file:///usr/share/xml/docbook/xml-dtd-4.5/dbnotnx.mod" \ - /etc/xml/docbook -xmlcatalog --noout --add "public" \ - "-//OASIS//ENTITIES DocBook XML Character Entities V4.5//EN" \ - "file:///usr/share/xml/docbook/xml-dtd-4.5/dbcentx.mod" \ - /etc/xml/docbook -xmlcatalog --noout --add "public" \ - "-//OASIS//ENTITIES DocBook XML Additional General Entities V4.5//EN" \ - "file:///usr/share/xml/docbook/xml-dtd-4.5/dbgenent.mod" \ - /etc/xml/docbook -xmlcatalog --noout --add "rewriteSystem" \ - "http://www.oasis-open.org/docbook/xml/4.5" \ - "file:///usr/share/xml/docbook/xml-dtd-4.5" \ - /etc/xml/docbook -xmlcatalog --noout --add "rewriteURI" \ - "http://www.oasis-open.org/docbook/xml/4.5" \ - "file:///usr/share/xml/docbook/xml-dtd-4.5" \ - /etc/xml/docbook -if [ ! -e /etc/xml/catalog ]; then - xmlcatalog --noout --create /etc/xml/catalog -fi -xmlcatalog --noout --add "delegatePublic" \ - "-//OASIS//ENTITIES DocBook XML" \ - "file:///etc/xml/docbook" \ - /etc/xml/catalog -xmlcatalog --noout --add "delegatePublic" \ - "-//OASIS//DTD DocBook XML" \ - "file:///etc/xml/docbook" \ - /etc/xml/catalog -xmlcatalog --noout --add "delegateSystem" \ - "http://www.oasis-open.org/docbook/" \ - "file:///etc/xml/docbook" \ - /etc/xml/catalog -xmlcatalog --noout --add "delegateURI" \ - "http://www.oasis-open.org/docbook/" \ - "file:///etc/xml/docbook" \ - /etc/xml/catalog -for DTDVERSION in 4.1.2 4.2 4.3 4.4 -do - xmlcatalog --noout --add "public" \ - "-//OASIS//DTD DocBook XML V$DTDVERSION//EN" \ - "http://www.oasis-open.org/docbook/xml/$DTDVERSION/docbookx.dtd" \ - /etc/xml/docbook - xmlcatalog --noout --add "rewriteSystem" \ - "http://www.oasis-open.org/docbook/xml/$DTDVERSION" \ - "file:///usr/share/xml/docbook/xml-dtd-4.5" \ - /etc/xml/docbook - xmlcatalog --noout --add "rewriteURI" \ - "http://www.oasis-open.org/docbook/xml/$DTDVERSION" \ - "file:///usr/share/xml/docbook/xml-dtd-4.5" \ - /etc/xml/docbook - xmlcatalog --noout --add "delegateSystem" \ - "http://www.oasis-open.org/docbook/xml/$DTDVERSION/" \ - "file:///etc/xml/docbook" \ - /etc/xml/catalog - xmlcatalog --noout --add "delegateURI" \ - "http://www.oasis-open.org/docbook/xml/$DTDVERSION/" \ - "file:///etc/xml/docbook" \ - /etc/xml/catalog -done -cd .. -rm -rf docbook-xml - -exit diff --git a/2.3/common/blfs-tool-deps/906-docbook-xsl b/2.3/common/blfs-tool-deps/906-docbook-xsl deleted file mode 100644 index 7610d77..0000000 --- a/2.3/common/blfs-tool-deps/906-docbook-xsl +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -# $Id$ - -set -e -cd $PKGDIR - -install -v -m755 -d /usr/share/xml/docbook/xsl-stylesheets-1.69.1 -cp -v -R VERSION common eclipse extensions fo html \ - htmlhelp images javahelp lib manpages params \ - profiling slides template website xhtml \ - /usr/share/xml/docbook/xsl-stylesheets-1.69.1 - -if [ ! -d /etc/xml ]; then install -v -m755 -d /etc/xml; fi -if [ ! -f /etc/xml/catalog ]; then - xmlcatalog --noout --create /etc/xml/catalog -fi - -xmlcatalog --noout --add "rewriteSystem" \ - "http://docbook.sourceforge.net/release/xsl/1.69.1" \ - "/usr/share/xml/docbook/xsl-stylesheets-1.69.1" \ - /etc/xml/catalog - -xmlcatalog --noout --add "rewriteURI" \ - "http://docbook.sourceforge.net/release/xsl/1.69.1" \ - "/usr/share/xml/docbook/xsl-stylesheets-1.69.1" \ - /etc/xml/catalog - -xmlcatalog --noout --add "rewriteSystem" \ - "http://docbook.sourceforge.net/release/xsl/current" \ - "/usr/share/xml/docbook/xsl-stylesheets-1.69.1" \ - /etc/xml/catalog - -xmlcatalog --noout --add "rewriteURI" \ - "http://docbook.sourceforge.net/release/xsl/current" \ - "/usr/share/xml/docbook/xsl-stylesheets-1.69.1" \ - /etc/xml/catalog - -exit diff --git a/2.3/common/blfs-tool-deps/907-gpm b/2.3/common/blfs-tool-deps/907-gpm deleted file mode 100644 index fa2ca01..0000000 --- a/2.3/common/blfs-tool-deps/907-gpm +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -# $Id$ - -set -e -cd $PKGDIR - -patch -Np1 -i ../gpm-1.20.1-segfault-1.patch -patch -Np1 -i ../gpm-1.20.1-silent-1.patch -./configure --prefix=/usr --sysconfdir=/etc -LDFLAGS="$LDFLAGS -lm" make -make install -cp -v conf/gpm-root.conf /etc -ldconfig - -exit diff --git a/2.3/common/blfs-tool-deps/908-links b/2.3/common/blfs-tool-deps/908-links deleted file mode 100644 index 5e7a8e4..0000000 --- a/2.3/common/blfs-tool-deps/908-links +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -# $Id$ - -set -e -cd $PKGDIR - -./configure --prefix=/usr -make CFLAGS="-O2 -Wno-sign-compare -Wno-pointer-sign" -make install -install -v -d -m755 /usr/share/doc/links-2.1pre23 -install -v -m644 doc/links_cal/* KEYS BRAILLE_HOWTO \ - /usr/share/doc/links-2.1pre23 - -exit diff --git a/2.3/common/blfs-tool-deps/909-sudo b/2.3/common/blfs-tool-deps/909-sudo deleted file mode 100644 index e906ed3..0000000 --- a/2.3/common/blfs-tool-deps/909-sudo +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -# $Id$ - -set -e -cd $PKGDIR - -patch -Np1 -i ../sudo-1.6.8p12-envvar_fix-1.patch -./configure --prefix=/usr --libexecdir=/usr/lib \ - --enable-noargs-shell --with-ignore-dot --with-all-insults \ - --enable-shell-sets-home -make -make install - -exit diff --git a/2.3/common/blfs-tool-deps/910-wget b/2.3/common/blfs-tool-deps/910-wget deleted file mode 100644 index 70e577c..0000000 --- a/2.3/common/blfs-tool-deps/910-wget +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -# $Id$ - -set -e -cd $PKGDIR - -./configure --prefix=/usr --sysconfdir=/etc -make -make install - -exit diff --git a/2.3/common/blfs-tool-deps/911-subversion b/2.3/common/blfs-tool-deps/911-subversion deleted file mode 100644 index 48a65dc..0000000 --- a/2.3/common/blfs-tool-deps/911-subversion +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# $Id$ - -set -e -cd $PKGDIR - -./configure --prefix=/usr \ - --without-berkeley-db \ - --with-installbuilddir=/usr/lib/apr-0 -make -make install -rm doc/{Makefile,doxygen.conf} -find doc -type d -exec chmod 755 {} \; -find doc -type f -exec chmod 644 {} \; -install -v -m755 -d /usr/share/doc/subversion-1.3.1 -cp -v -R doc/* /usr/share/doc/subversion-1.3.1 - -exit diff --git a/2.3/common/common-functions b/2.3/common/common-functions deleted file mode 100644 index dc510d4..0000000 --- a/2.3/common/common-functions +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/bash - -# $Id$ - -set -e - - -no_empty_builddir() { - 'clear' -cat <<- -EOF- -${DD_BORDER} - -${tab_}${tab_}${BOLD}${RED}W A R N I N G${OFF} - Looks like the \$BUILDDIR directory contains subdirectories - from a previous build. - - Please format the partition mounted on \$BUILDDIR or set - a different build directory before running jhalfs. -${OFF} -${DD_BORDER} --EOF- - exit -} - - -#----------------------------# -run_make() { # -#----------------------------# - # Test if make must be run. - if [ "$RUNMAKE" = "y" ] ; then - # Test to make sure we're not running the build as root - if [ "$UID" = "0" ] ; then - echo "You must not be logged in as root to build the system." - exit 1 - fi - # Build the system - if [ -e $MKFILE ] ; then - echo -ne "Building the system...\n" - cd $JHALFSDIR && make - echo -ne "done\n" - fi - fi -} - - -#----------------------------# -clean_builddir() { # -#----------------------------# - # Test if the clean must be done. - if [ "${CLEAN}" = "y" ]; then - # Test to make sure that the build directory was populated by jhalfs - if [ ! -d $JHALFSDIR ] || [ ! -d $BUILDDIR/sources ] ; then - echo "Looks like $BUILDDIR was not populated by a previous jhalfs run." - exit 1 - # Test that dev filesystems are not mounted in $BUILDDIR - elif mount | grep $BUILDDIR/dev > /dev/null ; then - echo "Looks like kernel fylesystems are yet mounted on $BUILDDIR." - exit 1 - else - # Clean the build directory - echo -n "Cleaning $BUILDDIR ..." - # First delete proc and sys directories, if exist. - # Both should be empty, if not be sure to exit. - if [ -d $BUILDDIR/proc ] ; then - sudo rmdir $BUILDDIR/proc || exit 1 - fi - if [ -d $BUILDDIR/sys ] ; then - sudo rmdir $BUILDDIR/sys || exit 1 - fi - sudo rm -rf $BUILDDIR/{bin,boot,dev,etc,home,lib,media,mnt,opt,root,sbin,srv,tmp,tools,cross-tools,usr,var} - echo "done" - echo -n "Cleaning $JHALFSDIR ..." - sudo rm -rf $JHALFSDIR - echo "done" - echo -n "Cleaning remainig extracted sources in $BUILDDIR/sources ..." - sudo rm -rf `find $BUILDDIR/sources/* -maxdepth 0 -type d` - echo "done" - fi - fi -} - -VERBOSITY2=$VERBOSITY - -[[ $VERBOSITY2 > 0 ]] && echo "" - -[[ $VERBOSITY2 > 0 ]] && echo -n "Loading ..." -source $COMMON_DIR/libs/func_book_parser -[[ $? > 0 ]] && echo "file libs/func_book_parser did not load.." && exit 1 -[[ $VERBOSITY2 > 0 ]] && echo "OK" - - -[[ $VERBOSITY2 > 0 ]] && echo -n "Loading ..." -source $COMMON_DIR/libs/func_download_pkgs -[[ $? > 0 ]] && echo "file libs/func_download_pkgs did not load.." && exit 1 -[[ $VERBOSITY2 > 0 ]] && echo "OK" - - -[[ $VERBOSITY2 > 0 ]] && echo -n "Loading ..." -source $COMMON_DIR/libs/func_wrt_Makefile -[[ $? > 0 ]] && echo "file libs/func_wrt_Makefile did not load.." && exit 1 -[[ $VERBOSITY2 > 0 ]] && echo "OK" - - -[[ $VERBOSITY2 > 0 ]] && echo -n "Loading ..." -source $COMMON_DIR/libs/func_blfs_deps -[[ $? > 0 ]] && echo "file libs/func_blfs_deps did not load.." && exit 1 -[[ $VERBOSITY2 > 0 ]] && echo "OK" - -[[ $VERBOSITY2 > 0 ]] && echo -n " ..." \ No newline at end of file diff --git a/2.3/common/create-sbu_du-report.sh b/2.3/common/create-sbu_du-report.sh deleted file mode 100755 index 1e08bf4..0000000 --- a/2.3/common/create-sbu_du-report.sh +++ /dev/null @@ -1,121 +0,0 @@ -#!/bin/bash -#$Id$ - -set -e - -LOGSDIR=$1 -VERSION=$2 - -LINE="================================================================================" - -# Make sure that we have a directory as first argument -[[ ! -d "$LOGSDIR" ]] && \ - echo -e "\nUSAGE: create-sbu_du-report.sh logs_directory [book_version]\n" && exit - -# Make sure that the first argument is a jhalfs logs directory -[[ ! -f "$LOGSDIR"/000-masterscript.log ]] && \ - echo -e "\nLooks like $LOGSDIR isn't a jhalfs logs directory.\n" && exit - -# If this script is run manually, the book version may be unknown -[[ -z "$VERSION" ]] && VERSION=unknown - -# If there is iteration logs directories, copy the logs inside iteration-1 -# to the top level dir -[[ -d "$LOGSDIR"/build_1 ]] && \ - cp $LOGSDIR/build_1/* $LOGSDIR - -# Set the report file -REPORT="$VERSION"-SBU_DU-$(date --iso-8601).report - -[ -f $REPORT ] && : >$REPORT - -# Dump generation time stamp and book version -echo -e "\n`date`\n" > "$REPORT" -echo -e "Book version is:\t$VERSION\n" >> "$REPORT" - -# If found, dump jhalfs.config file in a readable format -if [[ -f jhalfs.config ]] ; then - echo -e "\n\tjhalfs configuration settings:\n" >> "$REPORT" - cat jhalfs.config | sed -e '/parameters/d;s/.\[[013;]*m//g;s/> "$REPORT" -else - echo -e "\nNOTE: the jhalfs configuration settings are unknown" >> "$REPORT" -fi - -# Dump CPU and memory info -echo -e "\n\n\t\tCPU type:\n" >> "$REPORT" -cat /proc/cpuinfo >> "$REPORT" -echo -e "\n\t\tMemory info:\n" >> "$REPORT" -free >> "$REPORT" - -# Parse only that logs that have time data -BUILDLOGS="`grep -l "^Totalseconds:" ${LOGSDIR}/*`" - -# Match the first timed log to extract the SBU unit value from it -BASELOG=`grep -l "^Totalseconds:" $LOGSDIR/* | head -n1` -echo -e "\nUsing ${BASELOG#*[[:digit:]]-} to obtain the SBU unit value." -SBU_UNIT=`sed -n 's/^Totalseconds:\s\([[:digit:]]*.[[:digit:]]*\)$/\1/p' $BASELOG` -echo -e "\nThe SBU unit value is equal to $SBU_UNIT seconds.\n" -echo -e "\n\n$LINE\n\nThe SBU unit value is equal to $SBU_UNIT seconds.\n" >> "$REPORT" - -# Set the first value to 0 for grand totals calculation -SBU2=0 -INSTALL2=0 -INSTALLMB2=0 - -# Start the loop -for log in $BUILDLOGS ; do - -# Strip the filename - PACKAGE="${log#*[[:digit:]]*-}" - -# Start SBU calculation -# Build time - TIME=`sed -n 's/^Totalseconds:\s\([[:digit:]]*.[[:digit:]]*\)$/\1/p' $log` - SECS=`perl -e 'print ('$TIME' % '60')';` - MINUTES=`perl -e 'printf "%.0f" , (('$TIME' - '$SECS') / '60')';` - SBU=`perl -e 'printf "%.3f" , ('$TIME' / '$SBU_UNIT')';` - -# Append SBU value to SBU2 for grand total - SBU2=`perl -e 'printf "%.3f" , ('$SBU2' + '$SBU')';` - -# Start disk usage calculation -# Disk usage before unpacking the package - DU1=`grep "^KB: " $log | head -n1 | cut -f1 | sed -e 's/KB: //'` - DU1MB=`perl -e 'printf "%.3f" , ('$DU1' / '1024')';` -# Disk usage before deleting the source and build dirs - DU2=`grep "^KB: " $log | tail -n1 | cut -f1 | sed -e 's/KB: //'` - DU2MB=`perl -e 'printf "%.3f" , ('$DU2' / '1024')';` -# Calculate disk space required to do the build - REQUIRED1=`perl -e 'print ('$DU2' - '$DU1')';` - REQUIRED2=`perl -e 'printf "%.3f" , ('$DU2MB' - '$DU1MB')';` - -# Append installed files disk usage to the previous entry, -# except for the first parsed log - if [ "$log" != "$BASELOG" ] ; then - INSTALL=`perl -e 'print ('$DU1' - '$DU1PREV')';` - INSTALLMB=`perl -e 'printf "%.3f" , ('$DU1MB' - '$DU1MBPREV')';` - echo -e "Installed files disk usage:\t\t\t\t$INSTALL KB or $INSTALLMB MB\n" >> $REPORT - # Append install values for grand total - INSTALL2=`perl -e 'printf "%.3f" , ('$INSTALL2' + '$INSTALL')';` - INSTALLMB2=`perl -e 'printf "%.3f" , ('$INSTALLMB2' + '$INSTALLMB')';` - fi - -# Set variables to calculate installed files disk usage - DU1PREV=$DU1 - DU1MBPREV=$DU1MB - -# Dump time and disk usage values - echo -e "$LINE\n\t\t\t\t[$PACKAGE]\n" >> $REPORT - echo -e "Build time is:\t\t\t\t\t\t$MINUTES minutes and $SECS seconds" >> $REPORT - echo -e "Build time in seconds is:\t\t\t\t$TIME" >> $REPORT - echo -e "Approximate SBU time is:\t\t\t\t$SBU" >> $REPORT - echo -e "Disk usage before unpacking the package:\t\t$DU1 KB or $DU1MB MB" >> $REPORT - echo -e "Disk usage before deleting the source and build dirs:\t$DU2 KB or $DU2MB MB" >> $REPORT - echo -e "Required space to build the package:\t\t\t$REQUIRED1 KB or $REQUIRED2 MB" >> $REPORT - -done - -# Dump grand totals -echo -e "\n$LINE\n\nTotal time required to build the systen:\t\t$SBU2 SBU" >> $REPORT -# Total disk usage: including /tools but not /sources. -echo -e "Total Installed files disk usage:\t\t\t$INSTALL2 KB or $INSTALLMB2 MB" >> $REPORT diff --git a/2.3/common/libs/func_blfs_deps b/2.3/common/libs/func_blfs_deps deleted file mode 100644 index 22e8d47..0000000 --- a/2.3/common/libs/func_blfs_deps +++ /dev/null @@ -1,198 +0,0 @@ -#!/bin/bash - -# $Id$ - -#----------------------------# Hardcoded URLs and MD5. -add_blfs_deps_urls() { # No easy way to extract it. -#----------------------------# Some FTP mirrors may not work - - local BLFS_SERVER="${SERVER}/pub/blfs/conglomeration/" - - if [[ "${DEP_LIBXML}" = "y" ]] ; then - echo "${LIBXML_URL} ${BLFS_SERVER}libxml2/${LIBXML_PKG} ${LIBXML_MD5}" >> urls.lst - fi - - if [[ "${DEP_LIBXSLT}" = "y" ]] ; then - echo "${LIBXSLT_URL} ${BLFS_SERVER}libxslt/${LIBXSLT_PKG} ${LIBXSLT_MD5}" >> urls.lst - fi - - if [[ "${DEP_TIDY}" = "y" ]] ; then - echo "${TIDY_URL} ${BLFS_SERVER}tidy/${TIDY_PKG} ${TIDY_MD5}" >> urls.lst - fi - - if [[ "${DEP_UNZIP}" = "y" ]] ; then - echo "${UNZIP_URL} ${BLFS_SERVER}unzip/${UNZIP_PKG} ${UNZIP_MD5}" >> urls.lst - echo "${UNZIP_PATCH_URL} ${BLFS_SERVER}unzip/${UNZIP_PATCH} ${UNZIP_PATCH_MD5}" >> urls.lst - fi - - if [[ "${DEP_DBXML}" = "y" ]] ; then - echo "${DBXML_URL} ${BLFS_SERVER}docbook-xml/${DBXML_PKG} ${DBXML_MD5}" >> urls.lst - fi - -# if [[ "${DEP_DBXSL}" = "y" ]] ; then -# echo "${DBXSL_URL} ${BLFS_SERVER}docbook-xsl/${DBXSL_PKG} ${DBXSL_MD5}" >> urls.lst -# fi - - if [[ "${DEP_LINKS}" = "y" ]] ; then - echo "${LINKS_URL} ${BLFS_SERVER}links/${LINKS_PKG} ${LINKS_MD5}" >> urls.lst - fi - - if [[ "${DEP_SUDO}" = "y" ]] ; then - echo "${SUDO_URL} ${BLFS_SERVER}sudo/${SUDO_PKG} ${SUDO_MD5}" >> urls.lst - echo "${SUDO_PATCH_URL} ${BLFS_SERVER}sudo/${SUDO_PATCH} ${SUDO_PATCH_MD5}" >> urls.lst - fi - - if [[ "${DEP_WGET}" = "y" ]] ; then - echo "${WGET_URL} ${BLFS_SERVER}wget/${WGET_PKG} ${WGET_MD5}" >> urls.lst - fi - - if [[ "${DEP_SVN}" = "y" ]] ; then - echo "${SVN_URL} ${BLFS_SERVER}subversion/${SVN_PKG} ${SVN_MD5}" >> urls.lst - fi - - if [[ "${DEP_GPM}" = "y" ]] ; then - echo "${GPM_URL} ${BLFS_SERVER}gpm/${GPM_PKG} ${GPM_MD5}" >> urls.lst - echo "${GPM_PATCH_1_URL} ${BLFS_SERVER}gpm/${GPM_PATCH_1} ${GPM_PATCH_1_MD5}" >> urls.lst - echo "${GPM_PATCH_2_URL} ${BLFS_SERVER}gpm/${GPM_PATCH_2} ${GPM_PATCH_2_MD5}" >> urls.lst - fi - -} - -#----------------------------# Maybe there is a better way to do this, but this -copy_blfs_deps_scripts() { # method avoid to place the test on all -#----------------------------# $PROGNAME/master.sh scripts. - - mkdir -p ${PROGNAME}-commands/blfs-tool-deps - - if [[ "${DEP_LIBXML}" = "y" ]] ; then - mv blfs-tool-deps/901-libxml2 ${PROGNAME}-commands/blfs-tool-deps - fi - - if [[ "${DEP_LIBXSLT}" = "y" ]] ; then - mv blfs-tool-deps/902-libxslt ${PROGNAME}-commands/blfs-tool-deps - fi - - if [[ "${DEP_TIDY}" = "y" ]] ; then - mv blfs-tool-deps/903-tidy ${PROGNAME}-commands/blfs-tool-deps - fi - - if [[ "${DEP_UNZIP}" = "y" ]] ; then - mv blfs-tool-deps/904-unzip ${PROGNAME}-commands/blfs-tool-deps - fi - - if [[ "${DEP_DBXML}" = "y" ]] ; then - mv blfs-tool-deps/905-docbook-xml ${PROGNAME}-commands/blfs-tool-deps - fi - -# if [[ "${DEP_DBXSL}" = "y" ]] ; then -# mv blfs-tool-deps/906-docbook-xsl ${PROGNAME}-commands/blfs-tool-deps -# fi - - if [[ "${DEP_LINKS}" = "y" ]] ; then - mv blfs-tool-deps/908-links ${PROGNAME}-commands/blfs-tool-deps - fi - - if [[ "${DEP_SUDO}" = "y" ]] ; then - mv blfs-tool-deps/909-sudo ${PROGNAME}-commands/blfs-tool-deps - fi - - if [[ "${DEP_WGET}" = "y" ]] ; then - mv blfs-tool-deps/910-wget ${PROGNAME}-commands/blfs-tool-deps - fi - - if [[ "${DEP_SVN}" = "y" ]] ; then - mv blfs-tool-deps/911-subversion ${PROGNAME}-commands/blfs-tool-deps - fi - - if [[ "${DEP_GPM}" = "y" ]] ; then - mv blfs-tool-deps/907-gpm ${PROGNAME}-commands/blfs-tool-deps - fi - - rm -rf blfs-tool-deps - -} - - -#----------------------------------# -wrt_blfs_tool_targets() { # -#----------------------------------# - PREV="" - - echo "${tab_}${GREEN}Processing... ${L_arrow}BLFS_TOOL ${R_arrow}" - - for file in blfs-tool-deps/* ; do - # Keep the script file name - this_script=`basename $file` - - # Grab the name of the target - name=`echo ${this_script} | sed -e 's@[0-9]\{3\}-@@'` - - # Find the package. - case $name in - tidy ) pkg_tarball=${TIDY_PKG} ;; - unzip ) pkg_tarball=${UNZIP_PKG} ;; - * ) pkg_tarball=$(get_package_tarball_name $name) ;; - esac - - # Append each name of the script files to a list (this will become - # the names of the targets in the Makefile) - blfs_tool="$blfs_tool ${this_script}" - - #--------------------------------------------------------------------# - # >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - # - # Drop in the name of the target on a new line, and the previous target - # as a dependency. Also call the echo_message function. - if [ "$PROGNAME" = "clfs2" ]; then - LUSER_wrt_target "${this_script}" "$PREV" - else - CHROOT_wrt_target "${this_script}" "$PREV" - fi - - # Insert instructions for unpacking the package and changing directories - # DocBook-XML is a zip, the build script will handle that. - if [ "$PROGNAME" = "clfs2" ]; then - [[ ! "$name" = "docbook-xml" ]] && LUSER_wrt_unpack "$pkg_tarball" - else - [[ ! "$name" = "docbook-xml" ]] && CHROOT_Unpack "$pkg_tarball" - fi - - # Run the script. - if [ "$PROGNAME" = "clfs2" ]; then - LUSER_wrt_RunAsUser "${file}" - else - CHROOT_wrt_RunAsRoot "$file" - fi - - # Remove the build directory(ies) except if the package build fails. - if [ "$PROGNAME" = "clfs2" ]; then - [[ ! "$name" = "docbook-xml" ]] && LUSER_RemoveBuildDirs "$name" - else - [[ ! "$name" = "docbook-xml" ]] && CHROOT_wrt_RemoveBuildDirs "$name" - fi - - # Touch the tracking file. - case $name in - tidy ) pkg_ver=html-tidy-cvs_20070326 ;; - unzip ) pkg_ver=unzip-5.52 ;; - * ) pkg_ver=$(echo $pkg_tarball | sed -e 's/.tar.*//;s/.tgz//;s/.zip//') ;; - esac - if [ "$PROGNAME" = "clfs2" ]; then - echo -e "\t@touch \$(MOUNT_PT)$TRACKING_DIR/$pkg_ver" >> $MKFILE.tmp - else - echo -e "\t@touch $TRACKING_DIR/$pkg_ver" >> $MKFILE.tmp - fi - - # Include a touch of the target name so make can check - # if it's already been made. - wrt_touch - # - #--------------------------------------------------------------------# - # >>>>>>>> END OF Makefile ENTRY <<<<<<<< # - #--------------------------------------------------------------------# - - # Keep the script file name for Makefile dependencies. - PREV=${this_script} - done -} diff --git a/2.3/common/libs/func_book_parser b/2.3/common/libs/func_book_parser deleted file mode 100644 index ed6e5ad..0000000 --- a/2.3/common/libs/func_book_parser +++ /dev/null @@ -1,216 +0,0 @@ -#!/bin/bash - -# $Id$ - -#----------------------------# -get_book() { # -#----------------------------# - cd $JHALFSDIR - - if [ -z $WORKING_COPY ] ; then - # Check for Subversion instead of just letting the script hit 'svn' and fail. - test `type -p svn` || eval "echo \"This feature requires Subversion.\" - exit 1" - echo -n "Downloading the $PROGNAME document, $LFSVRS version... " - - case $PROGNAME in - lfs) svn_root="LFS" ;; - hlfs) svn_root="HLFS" ;; - clfs) svn_root="cross-lfs" ;; - clfs2) svn_root="cross-lfs" ;; - clfs3) svn_root="cross-lfs" ;; - *) echo "BOOK not defined in function " - exit 1 ;; - esac - # Grab a fresh book if it's missing, otherwise, update it from the - # repo. If we've already extracted the commands, move on to getting the - # sources. - if [ -d ${PROGNAME}-$LFSVRS ] ; then - cd ${PROGNAME}-$LFSVRS - if LC_ALL=C svn up | grep -q At && \ - test -d $JHALFSDIR/${PROGNAME}-commands && \ - test -f $JHALFSDIR/pkg_tarball_list ; then - # Set the canonical book version - echo -ne "done\n" - cd $JHALFSDIR - case $PROGNAME in - clfs | clfs2 | clfs3 ) - VERSION=$(xmllint --noent $BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;; - *) - VERSION=$(xmllint --noent $BOOK/prologue/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;; - esac - get_sources - else - echo -ne "done\n" - extract_commands - fi - else - svn co $SVN/${svn_root}/${TREE} ${PROGNAME}-$LFSVRS >>$LOGDIR/$LOG 2>&1 - echo -ne "done\n" - extract_commands - fi - - else - echo -ne "Using $BOOK as book's sources ...\n" - extract_commands - fi - echo -ne " Document version ${L_arrow}${BOLD}${VERSION}${R_arrow}\n" -} - -#----------------------------# -extract_commands() { # -#----------------------------# - - # Check for libxslt instead of just letting the script hit 'xsltproc' and fail. - test `type -p xsltproc` || eval "echo \"This feature requires libxslt.\" - exit 1" - - cd $JHALFSDIR - case $PROGNAME in - clfs | clfs2 | clfs3 ) - VERSION=$(xmllint --noent $BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;; - *) - VERSION=$(xmllint --noent $BOOK/prologue/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;; - esac - - # Start clean - if [ -d ${PROGNAME}-commands ]; then - rm -rf ${PROGNAME}-commands - mkdir -v ${PROGNAME}-commands - fi - echo -n "Extracting commands for" - - # Dump the commands in shell script form from the HLFS book. - case ${PROGNAME} in - clfs) - echo -n " ${L_arrow}${BOLD}$ARCH${R_arrow} target architecture... " - xsltproc --nonet \ - --xinclude \ - --stringparam method $METHOD \ - --stringparam testsuite $TEST \ - --stringparam bomb-testsuite $BOMB_TEST \ - --stringparam vim-lang $VIMLANG \ - --stringparam timezone $TIMEZONE \ - --stringparam page $PAGE \ - --stringparam lang $LANG \ - --stringparam sparc $SPARC64_PROC \ - -o ./${PROGNAME}-commands/ $XSL $BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1 - ;; - - clfs2) - echo -n " ${L_arrow}${BOLD}$ARCH${R_arrow} target architecture... " - xsltproc --nonet \ - --xinclude \ - --stringparam vim-lang $VIMLANG \ - --stringparam timezone $TIMEZONE \ - --stringparam page $PAGE \ - --stringparam lang $LANG \ - -o ./${PROGNAME}-commands/ $XSL $BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1 - ;; - - clfs3) - echo -n " ${L_arrow}${BOLD}$ARCH${R_arrow} target architecture... " - xsltproc --nonet \ - --xinclude \ - --stringparam endian x$ENDIAN \ - --stringparam timezone $TIMEZONE \ - --stringparam page $PAGE \ - --stringparam lang $LANG \ - -o ./${PROGNAME}-commands/ $XSL $BOOK/$ARCH-index.xml >>$LOGDIR/$LOG 2>&1 - ;; - - hlfs) - echo -n " ${L_arrow}${BOLD}$MODEL + $KERNEL${R_arrow} HLFS flavour... " - xsltproc --nonet \ - --xinclude \ - --stringparam model $MODEL \ - --stringparam kernel $KERNEL \ - --stringparam testsuite $TEST \ - --stringparam bomb-testsuite $BOMB_TEST \ - --stringparam features x$SSP$ASLR$PAX$HARDENED_TMP$WARNINGS$MISC$BLOWFISH \ - --stringparam timezone $TIMEZONE \ - --stringparam page $PAGE \ - --stringparam lang $LANG \ - --stringparam grsecurity_host $GRSECURITY_HOST \ - -o ./${PROGNAME}-commands/ $XSL $BOOK/index.xml >>$LOGDIR/$LOG 2>&1 - ;; - lfs) - echo -n " ${L_arrow}${BOLD}LFS${R_arrow} build... " - xsltproc --nonet \ - --xinclude \ - --stringparam testsuite $TEST \ - --stringparam bomb-testsuite $BOMB_TEST \ - --stringparam vim-lang $VIMLANG \ - --stringparam timezone $TIMEZONE \ - --stringparam page $PAGE \ - --stringparam lang $LANG \ - -o ./${PROGNAME}-commands/ $XSL $BOOK/index.xml >>$LOGDIR/$LOG 2>&1 - ;; - *) echo -n " ${L_arrow}${BOLD}${PROGNAME}${R_arrow} book invalid, terminate build... " - exit 1 ;; - esac - - [[ "${BLFS_TOOL}" = "y" ]] && copy_blfs_deps_scripts - - echo "done" - - # Make the scripts executable. - chmod -R +x $JHALFSDIR/${PROGNAME}-commands - - # Create the packages file. We need it for proper Makefile creation - create_package_list - - # Done. Moving on... - get_sources - -} - -#----------------------------# -create_package_list() { # -#----------------------------# - - # Create the packages file. We need it for proper Makefile creation - rm -f pkg_tarball_list - echo -n "Creating <${PROGNAME}> list of tarball names for $BOOK" - if [ ! -z $ARCH ] ; then echo -n " $ARCH" ; fi - echo -n "... " - case ${PROGNAME} in - clfs | clfs2 | clfs3 ) - xsltproc --nonet --xinclude -o pkg_tarball_list packages.xsl \ - $BOOK/materials/${ARCH}-chapter.xml >>$LOGDIR/$LOG 2>&1 - ;; - hlfs) - xsltproc --nonet --xinclude \ - --stringparam model $MODEL \ - --stringparam kernel $KERNEL \ - -o pkg_tarball_list packages.xsl \ - $BOOK/chapter04/chapter04.xml >>$LOGDIR/$LOG 2>&1 - ;; - lfs) - xsltproc --nonet --xinclude -o pkg_tarball_list packages.xsl \ - $BOOK/chapter03/chapter03.xml >>$LOGDIR/$LOG 2>&1 - ;; - esac - - if [[ "${BLFS_TOOL}" = "y" ]] ; then -( -cat << EOF -$LIBXML_PKG -$LIBXSLT_PKG -$TIDY_PKG -$UNZIP_PKG -$DBXML_PKG -$DBXSL_PKG -$LINKS_PKG -$SUDO_PKG -$WGET_PKG -$SVN_PKG -$GPM_PKG -EOF -) >> pkg_tarball_list - fi - - echo "done" - -} - diff --git a/2.3/common/libs/func_check_version.sh b/2.3/common/libs/func_check_version.sh deleted file mode 100644 index 9c4aab5..0000000 --- a/2.3/common/libs/func_check_version.sh +++ /dev/null @@ -1,163 +0,0 @@ -# $Id$ - -check_version() { -: <${tst_version}<-- is too old. - This script requires ${ref_version} or greater\n" - # Ask the user instead of bomb, to make happy that packages which version - # ouput don't follow our expectations - echo "If you are sure that you have instaled a proper version of ${BOLD}$TXT${OFF}" - echo "but jhalfs has failed to detect it, press 'c' and 'ENTER' keys to continue," - echo -n "otherwise press 'ENTER' key to stop jhalfs. " - read ANSWER - if [ x$ANSWER != "xc" ] ; then - echo "${nl_}Please, install a proper $TXT version.${nl_}" - exit 1 - else - minor=$ref_minor - revision=$ref_revision - fi - } - - echo -ne "${TXT}${dotSTR:${#TXT}} ${L_arrow}${BOLD}${tst_version}${OFF}${R_arrow}" - -# echo -ne "$TXT:\t${L_arrow}${BOLD}${tst_version}${OFF}${R_arrow}" - IFS=".-(pa" # Split up w.x.y.z as well as w.x.y-rc (catch release candidates) - set -- $ref_version # set postional parameters to minimum ver values - ref_major=$1; ref_minor=$2; ref_revision=$3 - # - set -- $tst_version # Set postional parameters to test version values - major=$1; minor=$2; revision=$3 - # - # Compare against minimum acceptable version.. - (( major > ref_major )) && echo " ${spaceSTR:${#tst_version}}${GREEN}OK${OFF}" && return - (( major < ref_major )) && write_error_and_die - # major=ref_major - (( minor < ref_minor )) && write_error_and_die - (( minor > ref_minor )) && echo " ${spaceSTR:${#tst_version}}${GREEN}OK${OFF}" && return - # minor=ref_minor - (( revision >= ref_revision )) && echo " ${spaceSTR:${#tst_version}}${GREEN}OK${OFF}" && return - - # oops.. write error msg and die - write_error_and_die -} -# local -r PARAM_VALS='${config_param}${dotSTR:${#config_param}} ${L_arrow}${BOLD}${!config_param}${OFF}${R_arrow}' - -#----------------------------# -check_prerequisites() { # -#----------------------------# - - # LFS/HLFS/CLFS prerequisites - check_version "2.6.2" "`uname -r`" "KERNEL" - check_version "3.0" "$BASH_VERSION" "BASH" - check_version "3.0.1" "`gcc -dumpversion`" "GCC" - libcVer="`/lib/libc.so.6 | head -n1`" - libcVer="${libcVer##*version }" - check_version "2.2.5" ${libcVer%%,*} "GLIBC" - check_version "2.12" "$(ld --version | head -n1 | cut -d" " -f4)" "BINUTILS" - check_version "1.15" "$(tar --version | head -n1 | cut -d" " -f4)" "TAR" - bzip2Ver="$(bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f8)" - check_version "1.0.2" "${bzip2Ver%%,*}" "BZIP2" - check_version "1.875" "$(bison --version | head -n1 | cut -d" " -f4)" "BISON" - check_version "5.0" "$(chown --version | head -n1 | cut -d")" -f2)" "COREUTILS" - check_version "2.8" "$(diff --version | head -n1 | cut -d" " -f4)" "DIFF" - check_version "4.1.20" "$(find --version | head -n1 | cut -d" " -f4)" "FIND" - check_version "3.0" "$(gawk --version | head -n1 | cut -d" " -f3)" "GAWK" - check_version "2.5" "$(grep --version | head -n1 | cut -d" " -f4)" "GREP" - check_version "1.2.4" "$(gzip --version 2>&1 | head -n1 | cut -d" " -f2)" "GZIP" - check_version "3.79.1" "$(make --version | head -n1 | cut -d " " -f3 | cut -c1-4)" "MAKE" - check_version "2.5.4" "$(patch --version | head -n1 | cut -d" " -f2)" "PATCH" - check_version "3.0.2" "$(sed --version | head -n1 | cut -d" " -f4)" "SED" - - # Check for minimum sudo version - SUDO_LOC="$(whereis -b sudo | cut -d" " -f2)" - if [ -x $SUDO_LOC ]; then - sudoVer="$(sudo -V | head -n1 | cut -d" " -f3)" - check_version "1.6.8" "${sudoVer}" "SUDO" - else - echo "${nl_}\"${RED}sudo${OFF}\" ${BOLD}must be installed on your system for jhalfs to run" - exit 1 - fi - - # Check for minimum libxml2 and libxslt versions - xsltprocVer=$(xsltproc -V | head -n1 ) - libxmlVer=$(echo $xsltprocVer | cut -d " " -f3) - libxsltVer=$(echo $xsltprocVer | cut -d " " -f5) - - # Version numbers are packed strings not xx.yy.zz format. - check_version "2.06.20" "${libxmlVer:0:1}.${libxmlVer:1:2}.${libxmlVer:3:2}" "LIBXML2" - check_version "1.01.14" "${libxsltVer:0:1}.${libxsltVer:1:2}.${libxsltVer:3:2}" "LIBXSLT" - - # The next versions checks are required only when BLFS_TOOL is set and - # this dependencies has not be selected for installation - if [[ "$BLFS_TOOL" = "y" ]] ; then - - if [[ -z "$DEP_TIDY" ]] ; then - tidyVer=$(tidy -V | cut -d " " -f9) - check_version "2004" "${tidyVer}" "TIDY" - fi - - # Check if the proper DocBook-XML-DTD and DocBook-XSL are correctly installed -XML_FILE=" - - -
- Test file - - Some title - Some text - -
" - - if [[ -z "$DEP_DBXML" ]] ; then - if `echo $XML_FILE | xmllint -noout -postvalid - 2>/dev/null` ; then - check_version "4.5" "4.5" "DocBook XML DTD" - else - echo "Warning: not found a working DocBook XML DTD 4.5 installation" - exit 2 - fi - fi - -# if [[ -z "$DEP_DBXSL" ]] ; then -# if `echo $XML_FILE | xsltproc --noout - 2>/dev/null` ; then -# check_version "1.69.1" "1.69.1" "DocBook XSL" -# else -# echo "Warning: not found a working DocBook XSL 1.69.1 installation" -# exit 2 -# fi -# fi - - fi # end BLFS_TOOL=Y - -} \ No newline at end of file diff --git a/2.3/common/libs/func_compare.sh b/2.3/common/libs/func_compare.sh deleted file mode 100644 index e9c072c..0000000 --- a/2.3/common/libs/func_compare.sh +++ /dev/null @@ -1,139 +0,0 @@ -# $Id$ - -#----------------------------------# -wrt_compare_targets() { # -#----------------------------------# - - for ((N=1; N <= ITERATIONS ; N++)) ; do # Double parentheses, - # and "ITERATIONS" with no "$". - ITERATION=iteration-$N - if [ "$N" != "1" ] ; then - wrt_system_build "$N" "$PREV_IT" - fi - this_script=$ITERATION - CHROOT_wrt_target "$ITERATION" "$PREV" - wrt_compare_work "$ITERATION" "$PREV_IT" - wrt_logs "$N" - wrt_touch - PREV_IT=$ITERATION - PREV=$ITERATION - done -} - -#----------------------------------# -wrt_system_build() { # -#----------------------------------# - local RUN=$1 - local PREV_IT=$2 - - if [[ "$PROGNAME" = "clfs" ]] ; then - final_system_Makefiles $RUN - else - chapter6_Makefiles $RUN - fi - - if [[ "$PROGNAME" = "clfs" ]] ; then - basicsystem="$basicsystem $PREV_IT $system_build" - else - chapter6="$chapter6 $PREV_IT $system_build" - fi - - if [[ "$RUN" = "$ITERATIONS" ]] ; then - if [[ "$PROGNAME" = "clfs" ]] ; then - basicsystem="$basicsystem iteration-$RUN" - else - chapter6="$chapter6 iteration-$RUN" - fi - fi -} - -#----------------------------------# -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" - - local ROOT_DIR=/ - local DEST_TOPDIR=/${SCRIPT_ROOT} - local ICALOGDIR=/${SCRIPT_ROOT}/logs/ICA - local FARCELOGDIR=/${SCRIPT_ROOT}/logs/farce - - if [[ "$RUN_ICA" = "y" ]] ; then - local DEST_ICA=$DEST_TOPDIR/ICA && \ -( - cat << EOF - @extras/do_copy_files "$PRUNEPATH" $ROOT_DIR $DEST_ICA/$ITERATION >>logs/\$@ 2>&1 && \\ - extras/do_ica_prep $DEST_ICA/$ITERATION >>logs/\$@ 2>&1 -EOF -) >> $MKFILE.tmp - if [[ "$ITERATION" != "iteration-1" ]] ; then - wrt_do_ica_work "$PREV_IT" "$ITERATION" "$DEST_ICA" - fi - fi - - if [[ "$RUN_FARCE" = "y" ]] ; then - local DEST_FARCE=$DEST_TOPDIR/farce && \ -( - cat << EOF - @extras/do_copy_files "$PRUNEPATH" $ROOT_DIR $DEST_FARCE/$ITERATION >>logs/\$@ 2>&1 && \\ - extras/filelist $DEST_FARCE/$ITERATION $DEST_FARCE/filelist-$ITERATION >>logs/\$@ 2>&1 -EOF -) >> $MKFILE.tmp - if [[ "$ITERATION" != "iteration-1" ]] ; then - wrt_do_farce_work "$PREV_IT" "$ITERATION" "$DEST_FARCE" - fi - fi -} - -#----------------------------------# -wrt_do_ica_work() { # -#----------------------------------# - echo -e "\t@extras/do_ica_work $1 $2 $ICALOGDIR $3 >>logs/\$@ 2>&1" >> $MKFILE.tmp -} - -#----------------------------------# -wrt_do_farce_work() { # -#----------------------------------# - local OUTPUT=$FARCELOGDIR/${1}_V_${2} - local PREDIR=$3/$1 - local PREFILE=$3/filelist-$1 - local ITEDIR=$3/$2 - local ITEFILE=$3/filelist-$2 - echo -e "\t@extras/farce --directory $OUTPUT $PREDIR $PREFILE $ITEDIR $ITEFILE >>logs/\$@ 2>&1" >> $MKFILE.tmp -} - -#----------------------------------# -wrt_logs() { # -#----------------------------------# - local build=build_$1 - local file - -( - cat << EOF - @cd logs && \\ - mkdir $build && \\ - mv -f ${system_build} $build && \\ - if [ ! $build = build_1 ] ; then \\ - cd $build && \\ - for file in \`ls .\` ; do \\ - mv -f \$\$file \`echo \$\$file | sed -e 's,-$build,,'\` ; \\ - done ; \\ - fi ; - @cd /\$(SCRIPT_ROOT) - @if [ -d test-logs ] ; then \\ - cd test-logs && \\ - mkdir $build && \\ - mv -f ${system_build} $build && \\ - if [ ! $build = build_1 ] ; then \\ - cd $build && \\ - for file in \`ls .\` ; do \\ - mv -f \$\$file \`echo \$\$file | sed -e 's,-$build,,'\` ; \\ - done ; \\ - fi ; \\ - cd /\$(SCRIPT_ROOT) ; \\ - fi ; -EOF -) >> $MKFILE.tmp -} diff --git a/2.3/common/libs/func_custom_pkgs b/2.3/common/libs/func_custom_pkgs deleted file mode 100644 index d865f98..0000000 --- a/2.3/common/libs/func_custom_pkgs +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/bash - -# $Id$ - -#----------------------------------# -wrt_CustomTools_target() { # Add any users supplied scripts -#----------------------------------# - PREV="" - - echo " Adding custom packages... ${BOLD}START${OFF}" - - # Create the custom_tools scripts directory - mkdir -p custom-tools - - for file in $JHALFSDIR/custom-commands/*; do - if [[ `basename ${file}` = "*" ]]; then - break - fi - source $file - this_script=$(basename ${file}) - echo "$tab_${GREEN}Adding${OFF} ${this_script}" - - # Create a Makefile entry - if [[ "x${PKG}" = "x" ]]; then - # Create an entry for a self contained cmd script that does not - # reference a package tarball - case $PROGNAME in - clfs2 | clfs3 ) - LUSER_wrt_target "${this_script}" "$PREV" - LUSER_wrt_RunAsUser "custom-tools/${this_script}" - ;; - *) - CHROOT_wrt_target "${this_script}" "$PREV" - CHROOT_wrt_RunAsRoot "custom-tools/${this_script}" - ;; - esac - wrt_touch - - # Create the build script file -( cat <<- xEOFx -#!/bin/bash -set -e - -`cat tmp` -exit -xEOFx -) > custom-tools/${this_script} - - else - # Create an entry for package - case $PROGNAME in - clfs2 | clfs3 ) - LUSER_wrt_target "${this_script}" "$PREV" - LUSER_wrt_unpack "${PKG_FILE}" - LUSER_wrt_RunAsUser "custom-tools/${this_script}" - LUSER_RemoveBuildDirs "${PKG}" - echo -e "\t@touch \$(MOUNT_PT)$TRACKING_DIR/${PKG}-${PKG_VERSION}" >> $MKFILE.tmp - ;; - *) - CHROOT_wrt_target "${this_script}" "$PREV" - CHROOT_Unpack "${PKG_FILE}" - CHROOT_wrt_RunAsRoot "custom-tools/${this_script}" - CHROOT_wrt_RemoveBuildDirs "${PKG}" - echo -e "\t@touch $TRACKING_DIR/${PKG}-${PKG_VERSION}" >> $MKFILE.tmp - ;; - esac - wrt_touch - - # Create the build script file -( cat <<- xEOFx -#!/bin/bash -set -e - -cd \$PKGDIR -`cat tmp` -exit -xEOFx -) > custom-tools/$this_script - fi - - rm -f tmp - PREV=$this_script - custom_list="${custom_list} ${this_script}" - done - - # Make the scripts executable. - chmod +x custom-tools/* - - echo " Adding custom packages... ${BOLD}DONE${OFF}" -} - - -#----------------------------------# -add_CustomToolsURLS() { # Add any users supplied scripts URL information -#----------------------------------# - local BLFS_SERVER="${SERVER}/pub/blfs/conglomeration/" - local this_script - local URL PKG PKG_VERSION PKG_FILE MD5 - - > urls.lst.tmp - for this_script in $JHALFSDIR/custom-commands/*; do - if [[ `basename ${this_script}` = "*" ]]; then - CUSTOM_TOOLS="n" - break - fi - source $this_script - # A cmd only script had no PKG defined - [[ "x${PKG}" = "x" ]] && continue - - echo "${URL} ${BLFS_SERVER}${PKG}/${PKG_FILE} ${MD5}" >> urls.lst.tmp - # Add any patches.. - for PATCH in PATCH{1..10}; do - [[ -n ${!PATCH} ]] && echo "dummy-url ${!PATCH}" >> urls.lst.tmp - done - done - cat urls.lst.tmp >> $BUILDDIR/sources/urls.lst - rm urls.lst.tmp -} diff --git a/2.3/common/libs/func_download_pkgs b/2.3/common/libs/func_download_pkgs deleted file mode 100644 index 265a593..0000000 --- a/2.3/common/libs/func_download_pkgs +++ /dev/null @@ -1,195 +0,0 @@ -#!/bin/bash - -# $Id$ - - -#----------------------------# -get_sources() { # Download file, write name to MISSING_FILES.DMP if an error -#----------------------------# - local saveIFS=$IFS - local IFS line URL1 URL2 FILE BOOKMD5 MD5 HAVEMD5 fromARCHIVE - - # Test if the packages must be downloaded - [ ! "$GETPKG" = "y" ] && return - - gs_wrt_message(){ - echo "${RED}$1${OFF}" - echo "$1" >> MISSING_FILES.DMP - } - # Housekeeping - [[ ! -d $BUILDDIR/sources ]] && mkdir $BUILDDIR/sources - cd $BUILDDIR/sources - [[ -f MD5SUMS ]] && rm MD5SUMS - [[ -f MISSING_FILES.DMP ]] && rm MISSING_FILES.DMP - [[ -f urls.lst ]] && rm urls.lst - - # Generate URLs file - create_urls - - 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 - - # Skip some packages if they aren't needed - case $line in - */tcl* | */expect* | */dejagnu* | */tree* | */gcc-testsuite* ) - [[ "$TEST" = "0" ]] && continue - ;; - */vim-*-lang* ) - [[ "$VIMLANG" = "0" ]] && continue - ;; - *linux/linux-* ) - [[ -z "$CONFIG" ]] && [[ -z "$BOOT_CONFIG" ]] && \ - [[ "$GETKERNEL" = "n" ]] && continue - ;; - esac - - # Locations - URL1=`echo $line | cut -d" " -f2` # Preferred URL - URL2=`echo $line | cut -d" " -f1` # Fallback Upstream URL - FILE=`basename $URL1` # File name - BOOKMD5=`echo $line | cut -d" " -f3` # MD5 book value - - # Validation pair - MD5="$BOOKMD5 $FILE" - HAVEMD5=1 - - set -e - # If the file exists in the archive copy it to the - # $BUILDDIR/sources dir. MD5SUM will be validated later. - if [ ! -z ${SRC_ARCHIVE} ] && - [ -d ${SRC_ARCHIVE} ] && - [ -f ${SRC_ARCHIVE}/$FILE ]; then - cp ${SRC_ARCHIVE}/$FILE . - echo "$FILE: -- copied from $SRC_ARCHIVE" - fromARCHIVE=1 - else - echo "${BOLD}${YELLOW}$FILE: not found in ${SRC_ARCHIVE}${OFF}" - fromARCHIVE=0 - # If the file does not exist yet in /sources download a fresh one - if [ ! -f $FILE ] ; then - if ! wget $URL1 && ! wget $URL2 ; then - gs_wrt_message "$FILE not found in the SRC_ARCHIVE or on any server..SKIPPING" - continue - fi - fi - fi - - # IF the md5sum does not match the existing files - if ! echo "$MD5" | md5sum -c - >/dev/null ; then - [[ $fromARCHIVE = "1" ]] && echo "${BOLD}${YELLOW}MD5SUM did not match SRC_ARCHIVE copy${OFF}" - [[ $fromARCHIVE = "0" ]] && echo "${BOLD}${YELLOW}MD5SUM did not match REMOTE copy${OFF}" - # Remove the old file and download a new one - rm -fv $FILE - # Force storage in SRC_ARCHIVE - fromARCHIVE=0; - # Try to retrieve again the file. Servers in reverse order. - if ! wget $URL2 && ! wget $URL1 ; then - gs_wrt_message "$FILE not found on the servers.. SKIPPING" - continue - fi - fi - - # Validate the MD5SUM one last time - if ! echo "$MD5" | md5sum -c - >/dev/null ; then - gs_wrt_message "$FILE does not match MD5SUMS value" - # Force generation of MD5SUM - HAVEMD5=0 - fi - - # Generate a fresh MD5SUM for this file - if [[ "$HAVEMD5" = "0" ]] ; then - echo "${BOLD}${YELLOW}Generating a new MD5SUM for ${OFF}$FILE" - echo "NEW MD5SUM: $(md5sum $FILE)" >> MISSING_FILES.DMP - fi - - # Good or bad we write the original md5sum to a file - echo "$MD5" >> MD5SUMS - - # 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:<$FILE> in the package archive" - cp -f $FILE ${SRC_ARCHIVE} - fi - - done - - if [[ -s MISSING_FILES.DMP ]]; then - echo -e "\n\n${tab_}${RED} One or more files were not retrieved or have bad MD5SUMS.\n${tab_} Check ${L_arrow}$BUILDDIR/sources/MISSING_FILES.DMP${R_arrow} for names ${OFF}\n" - # Do not allow the automatic execution of the Makefile. - echo "${tab_}${BOLD}${RED}*** ${YELLOW}Automatic execution of the generated makefile has been inhibited. ${RED}***${OFF}${nl_}" - RUNMAKE="n" - fi -} - -#----------------------------# -create_urls() { # -#----------------------------# - cd $JHALFSDIR - - case ${PROGNAME} in - clfs) - echo -n "Creating CLFS <${ARCH}> specific URLs file" - xsltproc --nonet --xinclude \ - --stringparam server $SERVER \ - --stringparam family clfs \ - -o $BUILDDIR/sources/urls.lst urls.xsl \ - $BOOK/materials/$ARCH-chapter.xml >>$LOGDIR/$LOG 2>&1 - echo " ...OK" - ;; - clfs2) - echo -n "Creating CLFS2 <${ARCH}> specific URLs file" - xsltproc --nonet --xinclude \ - --stringparam server $SERVER \ - --stringparam family clfs \ - -o $BUILDDIR/sources/urls.lst urls.xsl \ - $BOOK/materials/$ARCH-chapter.xml >>$LOGDIR/$LOG 2>&1 - echo " ...OK" - ;; - clfs3) - echo -n "Creating CLFS3 <${ARCH}> specific URLs file" - xsltproc --nonet --xinclude \ - --stringparam server $SERVER \ - --stringparam family clfs \ - -o $BUILDDIR/sources/urls.lst urls.xsl \ - $BOOK/materials/$ARCH-chapter.xml >>$LOGDIR/$LOG 2>&1 - echo " ...OK" - ;; - hlfs) - echo -n "Creating HLFS <${MODEL}> + <${KERNEL}> specific URLs file" - xsltproc --nonet --xinclude \ - --stringparam server $SERVER \ - --stringparam family lfs \ - --stringparam model $MODEL \ - --stringparam kernel $KERNEL \ - -o $BUILDDIR/sources/urls.lst urls.xsl \ - $BOOK/chapter04/chapter04.xml >>$LOGDIR/$LOG 2>&1 - echo " ...OK" - ;; - lfs) - echo -n "Creating LFS specific URLs file" - xsltproc --nonet --xinclude \ - --stringparam server $SERVER \ - --stringparam family lfs \ - -o ../sources/urls.lst urls.xsl \ - $BOOK/chapter03/chapter03.xml >>$LOGDIR/$LOG 2>&1 - echo " ...OK" - ;; - esac - - cd $BUILDDIR/sources - - if [[ "${BLFS_TOOL}" = "y" ]]; then - add_blfs_deps_urls - fi - - if [[ "${CUSTOM_TOOLS}" = "y" ]]; then - add_CustomToolsURLS - fi - -} - diff --git a/2.3/common/libs/func_validate_configs.sh b/2.3/common/libs/func_validate_configs.sh deleted file mode 100644 index 2336647..0000000 --- a/2.3/common/libs/func_validate_configs.sh +++ /dev/null @@ -1,211 +0,0 @@ -# $Id$ - -declare -r dotSTR=".................." - - -#----------------------------# -validate_config() { # Are the config values sane (within reason) -#----------------------------# -: <&2 - echo -e "`eval echo ${ERROR_MSG_pt2}`" >&2 - echo -e "${DD_BORDER}\n" - exit 1 - } - - validate_file() { - # For parameters ending with a '+' failure causes a warning message only - echo -n "`eval echo $PARAM_VALS`" - while test $# -gt 0 ; do - case $1 in - # Failures caused program exit - "-z") [[ -z "${!config_param}" ]] && echo "${tab_}<-- NO file name given" && write_error_and_die ;; - "-e") [[ ! -e "${!config_param}" ]] && echo "${tab_}<-- file does not exist" && write_error_and_die ;; - "-s") [[ ! -s "${!config_param}" ]] && echo "${tab_}<-- file has zero bytes" && write_error_and_die ;; - "-r") [[ ! -r "${!config_param}" ]] && echo "${tab_}<-- no read permission " && write_error_and_die ;; - "-w") [[ ! -w "${!config_param}" ]] && echo "${tab_}<-- no write permission" && write_error_and_die ;; - "-x") [[ ! -x "${!config_param}" ]] && echo "${tab_}<-- file cannot be executed" && write_error_and_die ;; - # Warning messages only - "-z+") [[ -z "${!config_param}" ]] && echo && return ;; - esac - shift 1 - done - echo - } - - validate_dir() { - # For parameters ending with a '+' failure causes a warning message only - echo -n "`eval echo $PARAM_VALS`" - while test $# -gt 0 ; do - case $1 in - "-z") [[ -z "${!config_param}" ]] && echo "${tab_}NO directory name given" && write_error_and_die ;; - "-d") [[ ! -d "${!config_param}" ]] && echo "${tab_}This is NOT a directory" && write_error_and_die ;; - "-w") if [[ ! -w "${!config_param}" ]]; then - echo "${nl_}${DD_BORDER}" - echo "${tab_}${RED}You do not have ${L_arrow}write${R_arrow}${RED} access to the directory${OFF}" - echo "${tab_}${BOLD}${!config_param}${OFF}" - echo "${DD_BORDER}${nl_}" - exit 1 - fi ;; - # Warnings only - "-w+") if [[ ! -w "${!config_param}" ]]; then - echo "${nl_}${DD_BORDER}" - echo "${tab_}WARNING-- You do not have ${L_arrow}write${R_arrow} access to the directory${OFF}" - echo "${tab_} -- ${BOLD}${!config_param}${OFF}" - echo "${DD_BORDER}" - fi ;; - "-z+") [[ -z "${!config_param}" ]] && echo "${tab_}<-- NO directory name given" && return - esac - shift 1 - done - echo - } - - set +e - PARAM_GROUP=${PROGNAME}_PARAM_LIST - for config_param in ${!PARAM_GROUP}; do - case $config_param in - # Envvars that depend on other settings to be displayed - GETKERNEL ) if [[ -z "$CONFIG" ]] && [[ -z "$BOOT_CONFIG" ]] ; then - [[ "$GETPKG" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" - fi ;; - COMPARE) [[ ! "$COMPARE" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; - RUN_ICA) [[ "$COMPARE" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; - RUN_FARCE) [[ "$COMPARE" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; - ITERATIONS) [[ "$COMPARE" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; - BOMB_TEST) [[ ! "$TEST" = "0" ]] && echo -e "`eval echo $PARAM_VALS`" ;; - TARGET32) [[ -n "${TARGET32}" ]] && echo -e "`eval echo $PARAM_VALS`" ;; - MIPS_LEVEL) [[ "${ARCH}" = "mips" ]] && echo -e "`eval echo $PARAM_VALS`" ;; - SERVER) [[ "$GETPKG" = "y" ]] && echo -e "`eval echo $PARAM_VALS`" ;; - - # Envars that requires some validation - 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 - ;; - # BOOK validation. Very ugly, need be fixed - BOOK) if [[ "${WORKING_COPY}" = "y" ]] ; then - validate_dir -z -d - else - echo -e "`eval echo $PARAM_VALS`" - fi - ;; - # Validate directories, testable states: - # fatal -z -d -w, - # warning -z+ -w+ - SRC_ARCHIVE) [[ "$GETPKG" = "y" ]] && validate_dir -z+ -d -w+ ;; - # The build directory/partition MUST exist and be writable by the user - BUILDDIR) validate_dir -z -d -w - [[ "xx x/x" =~ x${!config_param}x ]] && write_error_and_die ;; - LHOME) validate_dir -z -d ;; - - # Validate files, testable states: - # fatal -z -e -s -w -x -r, - # warning -z+ - FSTAB) validate_file -z+ -e -s ;; - CONFIG) validate_file -z+ -e -s ;; - BOOT_CONFIG) [[ "${METHOD}" = "boot" ]] && validate_file -z -e -s ;; - - # Treatment of LANG parameter - LANG ) # See it the locale value has been set - echo -n "`eval echo $PARAM_VALS`" - [[ -z "${!config_param}" ]] && - echo " -- Variable $config_param cannot be empty!" && - write_error_and_die - echo - ;; - - # BLFS params. - BRANCH_ID | BLFS_ROOT | BLFS_XML ) echo "`eval echo $PARAM_VALS`" ;; - TRACKING_DIR ) validate_dir -z -d -w ;; - - # Display non-validated envars found in ${PROGNAME}_PARAM_LIST - * ) echo -e "`eval echo $PARAM_VALS`" ;; - - esac - done - - if [[ "${BLFS_TOOL}" = "y" ]] ; then - echo "${nl_} ${BLUE}blfs-tool settings${OFF}" - for config_param in ${blfs_tool_PARAM_LIST}; do - echo -e "`eval echo $PARAM_VALS`" - done - fi - - if [[ "${CUSTOM_TOOLS}" = "y" ]] && [[ "${BLFS_TOOL}" = "n" ]] ; then - for config_param in ${custom_tool_PARAM_LIST}; do - echo -e "`eval echo $PARAM_VALS`" - done - fi - - set -e - echo "${nl_}***${BOLD}${GREEN} ${PARAM_GROUP%%_*T} config parameters look good${OFF} ***${nl_}" -} diff --git a/2.3/common/libs/func_wrt_Makefile b/2.3/common/libs/func_wrt_Makefile deleted file mode 100644 index 4a51ea3..0000000 --- a/2.3/common/libs/func_wrt_Makefile +++ /dev/null @@ -1,398 +0,0 @@ -#!/bin/bash - -# $Id$ - -#=== MAKEFILE HEADER === - -#----------------------------------# -wrt_Makefile_header() { # -#----------------------------------# -( - cat << EOF -# This file is automatically generated by jhalfs -# DO NOT EDIT THIS FILE MANUALLY -# -# Generated on `date "+%F %X %Z"` - - -SHELL = /bin/bash - -SRC = /sources -MOUNT_PT = $BUILDDIR -PKG_LST = $PKG_LST -LUSER = $LUSER -LGROUP = $LGROUP -LHOME = $LHOME -SCRIPT_ROOT = $SCRIPT_ROOT - -BASEDIR = \$(MOUNT_PT) -SRCSDIR = \$(BASEDIR)/sources -CMDSDIR = \$(BASEDIR)/\$(SCRIPT_ROOT)/$PROGNAME-commands -LOGDIR = \$(BASEDIR)/\$(SCRIPT_ROOT)/$LOGDIRBASE -TESTLOGDIR = \$(BASEDIR)/\$(SCRIPT_ROOT)/$TESTLOGDIRBASE - -crCMDSDIR = /\$(SCRIPT_ROOT)/$PROGNAME-commands -crLOGDIR = /\$(SCRIPT_ROOT)/$LOGDIRBASE -crTESTLOGDIR = /\$(SCRIPT_ROOT)/$TESTLOGDIRBASE -crFILELOGDIR = /\$(SCRIPT_ROOT)/$FILELOGDIRBASE - -SU_LUSER = su - \$(LUSER) -c -LUSER_HOME = \$(LHOME)/\$(LUSER) -PRT_DU = echo -e "\nKB: \`du -skx --exclude=\$(SCRIPT_ROOT) --exclude=lost+found \$(MOUNT_PT) \`\n" -PRT_DU_CR = echo -e "\nKB: \`du -skx --exclude=\$(SCRIPT_ROOT) --exclude=lost+found / \`\n" -TIME_MARK = \`date +%s.%N\` -BUILD_TIME = perl -e "printf \"\nTotalseconds: %.3f\", ('\$\$end' - '\$\$start')" - -ADD_REPORT = $REPORT -ADD_CUSTOM_TOOLS = $CUSTOM_TOOLS -ADD_BLFS_TOOLS = $BLFS_TOOL - - -export PATH := \${PATH}:/usr/sbin - -include makefile-functions - -EOF -) > $MKFILE -} - -#======================= - - -#==== PACKAGES NAMES === - -#----------------------------------# -get_package_tarball_name() { # -#----------------------------------# - local script_name=`echo ${1} | sed -e 's@[0-9]\{1\}-@@'` - - # The use of 'head' is necessary to limit the return value to the FIRST match.. - # hopefully this will not cause problems. - # - case $script_name in - tcl) echo $(grep "^tcl" $JHALFSDIR/pkg_tarball_list | head -n1 ) - ;; - powerpc-utils) echo $(grep "^powerpc-utils" $JHALFSDIR/pkg_tarball_list | head -n1 ) - ;; - uClibc) - if [[ "${PROGNAME}" = "clfs3" ]]; then - echo $(grep "^uClibc-" $JHALFSDIR/pkg_tarball_list | head -n1 ) - else - echo $(grep "^$script_name-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 ) - fi - ;; - linux-headers) - if [[ "${PROGNAME}" = "lfs" ]] || [[ "${PROGNAME}" = "hlfs" ]] ; then - # Uses kernel headers directly - echo $(grep "^linux-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 ) - else - # CLFS{,2,3} use massaged headers package - echo $(grep "^linux-headers-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 ) - fi - ;; - *) echo $(grep "^$script_name-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 ) - ;; - esac - -} - -#======================= - - -#==== TARGET HEADER ==== - -#----------------------------------# -LUSER_wrt_target() { # Create target and initialize log file -#----------------------------------# - local i=$1 - local PREV=$2 -( -cat << EOF - -$i: $PREV - @\$(call echo_message, Building) - @export BASHBIN=\$(SHELL) && \$(SHELL) progress_bar.sh \$@ \$\$PPID & - @echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@ - @\$(PRT_DU) >>logs/\$@ -EOF -) >> $MKFILE.tmp -} - -#----------------------------------# -CHROOT_wrt_target() { # Create target and initialize log file -#----------------------------------# - local i=$1 - local PREV=$2 -( -cat << EOF - -$i: $PREV - @\$(call echo_message, Building) - @export BASHBIN=\$(SHELL) && \$(SHELL) progress_bar.sh \$@ \$\$PPID & - @echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@ - @\$(PRT_DU_CR) >>logs/\$@ -EOF -) >> $MKFILE.tmp -} - -#======================= - - -#======== UNPACK ======= - -#----------------------------------# -LUSER_wrt_unpack() { # Unpack and set 'ROOT' var -#----------------------------------# - local FILE=$1 - local optSAVE_PREVIOUS=$2 - - if [[ "${optSAVE_PREVIOUS}" != "1" ]]; then -( -cat << EOF - @\$(call remove_existing_dirs,$FILE) -EOF -) >> $MKFILE.tmp - fi - -( -cat << EOF - @\$(call unpack,$FILE) - @\$(call get_pkg_root_LUSER) -EOF -) >> $MKFILE.tmp -} - -#----------------------------------# -CHROOT_Unpack() { # -#----------------------------------# - local FILE=$1 - local optSAVE_PREVIOUS=$2 - - if [ "${optSAVE_PREVIOUS}" != "1" ]; then -( -cat << EOF - @\$(call remove_existing_dirs2,$FILE) -EOF -) >> $MKFILE.tmp - fi -( -cat << EOF - @\$(call unpack2,$FILE) - @\$(call get_pkg_root2) -EOF -) >> $MKFILE.tmp -} - -#======================= - - -#===== TESTS LOGS ====== - -#----------------------------------# -LUSER_wrt_test_log() { # Initialize testsuite log file -#----------------------------------# - local TESTLOGFILE=$1 -( -cat << EOF - @echo "export TEST_LOG=\$(TESTLOGDIR)/$TESTLOGFILE" >> envars && \\ - echo "\$(nl_)\`date\`\$(nl_)" >\$(TESTLOGDIR)/\$@ -EOF -) >> $MKFILE.tmp -} - -#----------------------------------# -CHROOT_wrt_test_log() { # -#----------------------------------# - local TESTLOGFILE=$1 -( -cat << EOF - @echo "export TEST_LOG=\$(crTESTLOGDIR)/$TESTLOGFILE" >> envars && \\ - echo "\$(nl_)\`date\`\$(nl_)" >test-logs/\$@ -EOF -) >> $MKFILE.tmp -} - -#======================= - - -#======== RUN AS ======= - -#----------------------------------# -wrt_RunAsRoot() { # Some scripts must be run as root.. -#----------------------------------# - local MOUNT_ENV - local file=$1 - - case ${PROGNAME} in - lfs ) MOUNT_ENV="LFS" ;; - clfs ) MOUNT_ENV="CLFS" ;; - clfs2 ) MOUNT_ENV="CLFS" ;; - clfs3 ) MOUNT_ENV="CLFS" ;; - hlfs ) MOUNT_ENV="HLFS" ;; - *) echo "undefined progname $PROGNAME"; exit 1 ;; - esac - -( -cat << EOF - @start=\$(TIME_MARK) && \\ - export ${MOUNT_ENV}=\$(MOUNT_PT) && \\ - ${PROGNAME}-commands/`dirname $file`/\$@ >>logs/\$@ 2>&1 && \\ - end=\$(TIME_MARK) && \$(BUILD_TIME) >>logs/\$@ && \\ - \$(PRT_DU) >>logs/\$@ -EOF -) >> $MKFILE.tmp -} - -#----------------------------------# -LUSER_wrt_RunAsUser() { # Calculate time with perl, footer to log file -#----------------------------------# - local file=$1 - -( -cat << EOF - @start=\$(TIME_MARK) && \\ - source ~/.bashrc && \\ - \$(CMDSDIR)/`dirname $file`/\$@ >> logs/\$@ 2>&1 && \\ - end=\$(TIME_MARK) && \$(BUILD_TIME) >>logs/\$@ && \\ - \$(PRT_DU) >>logs/\$@ -EOF -) >> $MKFILE.tmp -} - -#----------------------------------# -CHROOT_wrt_RunAsRoot() { # -#----------------------------------# - local file=$1 -( -cat << EOF - @start=\$(TIME_MARK) && \\ - source envars && \\ - \$(crCMDSDIR)/`dirname $file`/\$@ >>logs/\$@ 2>&1 && \\ - end=\$(TIME_MARK) && \$(BUILD_TIME) >>logs/\$@ && \\ - \$(PRT_DU_CR) >>logs/\$@ -EOF -) >> $MKFILE.tmp - -} - -#======================= - - -#====== COPY FSTAB ===== - -#----------------------------------# -LUSER_wrt_CopyFstab() { # -#----------------------------------# -( -cat << EOF - @start=\$(TIME_MARK) && \\ - cp -v \$(MOUNT_PT)/sources/fstab \$(MOUNT_PT)/etc/fstab >>logs/\$@ 2>&1 && \\ - end=\$(TIME_MARK) && \$(BUILD_TIME) >>logs/\$@ && \\ - \$(PRT_DU) >>logs/\$@ -EOF -) >> $MKFILE.tmp -} - -#----------------------------------# -CHROOT_wrt_CopyFstab() { # -#----------------------------------# -( -cat << EOF - @start=\$(TIME_MARK) && \\ - cp -v /sources/fstab /etc/fstab >>logs/\$@ 2>&1 && \\ - end=\$(TIME_MARK) && \$(BUILD_TIME) >>logs/\$@ && \\ - \$(PRT_DU_CR) >>logs/\$@ -EOF -) >> $MKFILE.tmp -} - -#======================= - - -#==== INSTALLED FILES LOGS ==== - -#----------------------------------# -LUSER_wrt_TouchTimestamp() { # -#----------------------------------# -( -cat << EOF - @\$(call touch_timestamp_LUSER) -EOF -) >> $MKFILE.tmp -} - -#----------------------------------# -CHROOT_wrt_TouchTimestamp() { # -#----------------------------------# -( -cat << EOF - @\$(call touch_timestamp) -EOF -) >> $MKFILE.tmp -} - -#----------------------------------# -LUSER_wrt_LogNewFiles() { # -#----------------------------------# - local name=$1 -( -cat << EOF - @\$(call log_new_files_LUSER,$name) -EOF -) >> $MKFILE.tmp -} - -#----------------------------------# -CHROOT_wrt_LogNewFiles() { # -#----------------------------------# - local name=$1 -( -cat << EOF - @\$(call log_new_files,$name) -EOF -) >> $MKFILE.tmp -} - -#======================= - - -#==== RM BUILD DIRS ==== - -#----------------------------------# -LUSER_RemoveBuildDirs() { # -#----------------------------------# - local name=$1 -( -cat << EOF - @\$(call remove_build_dirs,$name) -EOF -) >> $MKFILE.tmp -} - -#----------------------------------# -CHROOT_wrt_RemoveBuildDirs() { # -#----------------------------------# - local name=$1 -( -cat << EOF - @\$(call remove_build_dirs2,$name) -EOF -) >> $MKFILE.tmp -} - -#======================= - - -#======== TOUCH ======== - -#----------------------------------# -wrt_touch() { # -#----------------------------------# -( -cat << EOF - @\$(call housekeeping) -EOF -) >> $MKFILE.tmp -} - -#======================= diff --git a/2.3/common/makefile-functions b/2.3/common/makefile-functions deleted file mode 100644 index d54938d..0000000 --- a/2.3/common/makefile-functions +++ /dev/null @@ -1,242 +0,0 @@ - -# $Id$ - -BOLD = "" -RED = "" -GREEN = "" -ORANGE = "" -BLUE = "" -WHITE = "" -YELLOW = "" - -OFF = "" -REVERSE = "" - -tab_ = " " -nl_ = "" - -#==== BUILD MESSAGES === - -define echo_PHASE - @echo $(BOLD)-------------------------------------------------------------------------------- - @echo $(tab_)$(tab_)Executing $(BLUE)$(1)$(WHITE) scripts - @echo $(BOLD)-------------------------------------------------------------------------------- - @echo $(WHITE) -endef - -define sh_echo_PHASE - echo $(BOLD)--------------------------------------------------------------------------------;\ - echo $(tab_)$(tab_)Executing $(BLUE)$(1)$(WHITE) scripts; \ - echo $(BOLD)--------------------------------------------------------------------------------echo $(WHITE) -endef - -define echo_SU_request - @echo $(BOLD)-------------------------------------------------------------------------------- - @echo $(BLUE)$@ - @echo $(WHITE)ROOT privilege is required to perform a number commands - @echo sudo will request a password to all high privilege cmds to execute correctly -endef - -define echo_SULUSER_request - @echo $(BOLD)-------------------------------------------------------------------------------- - @echo $(BOLD)$(BLUE)$@ - @echo $(WHITE)You are going to log into the user account $(BOLD)$(YELLOW)$(LUSER)$(OFF) - @echo sudo requires a password -endef - -define echo_CHROOT_request - @echo $(BOLD)-------------------------------------------------------------------------------- - @echo $(BOLD)$(BLUE)$@ - @echo $(WHITE)You are going to CHROOT into $(MOUNT_PT) $(BOLD)$(YELLOW)$(LUSER)$(OFF) - @echo a password is required -endef - -define echo_message - @echo $(BOLD)-------------------------------------------------------------------------------- - @echo $(BOLD)$(1) target $(BLUE)$@$(BOLD)$(WHITE) -endef - -#======================= - - -#=== BUILD FUNCTIONS === - -define remove_existing_dirs - @PKG_PATH=`ls -t $(SRCSDIR)/$(1) | head -n1` && \ - ROOT=`tar -tf $$PKG_PATH | head -n1 | sed -e 's@^./@@;s@/.*@@'` && \ - rm -rf $(SRCSDIR)/$$ROOT && \ - rm -rf $(SRCSDIR)/$${ROOT%-*}-build -endef - -define remove_existing_dirs2 - @PKG_PATH=`ls -t $(SRC)/$(1) | head -n1` && \ - ROOT=`tar -tf $$PKG_PATH | head -n1 | sed -e 's@^./@@;s@/.*@@'` && \ - rm -rf $(SRC)/$$ROOT && \ - rm -rf $(SRC)/$${ROOT%-*}-build -endef - -#==# - -define unpack - @cd $(SRCSDIR) && \ - tar -xvf `ls -t $(1) | head -n1` > $(PKG_LST) -endef - -define unpack2 - @cd $(SRC) && \ - tar -xvf `ls -t $(1) | head -n1` > $(PKG_LST) -endef - -#==# - -define get_pkg_root - @ROOT=`head -n1 $(SRCSDIR)/$(PKG_LST) | sed 's@^./@@;s@/.*@@'` && \ - if [ "$(1)" != "nouser" ]; then \ - echo "export PKGDIR=$(SRCSDIR)/$$ROOT" > envars; \ - chown -R $(LUSER) $(SRCSDIR)/$$ROOT; \ - else \ - echo "export PKGDIR=$(crSRCSDIR)/$$ROOT" > envars; \ - fi; -endef - -define get_pkg_root2 - @ROOT=`head -n1 $(SRC)/$(PKG_LST) | sed 's@^./@@;s@/.*@@'` && \ - echo "export PKGDIR=$(SRC)/$$ROOT" > envars -endef - -define get_pkg_root_LUSER - @ROOT=`head -n1 $(SRCSDIR)/$(PKG_LST) | sed 's@^./@@;s@/.*@@'` && \ - echo "export PKGDIR=$(SRCSDIR)/$$ROOT" > envars -endef - -#==# - -define touch_timestamp - @touch $(SRC)/timestamp-marker && sleep 1 -endef - -define touch_timestamp_LUSER - @touch $(SRCSDIR)/timestamp-marker && sleep 1 -endef - -define log_new_files - @find / -xdev ! -path "/$(SCRIPT_ROOT)/*" ! -path "/tmp/*" ! -path "$(SRC)/*" \ - -newer $(SRC)/timestamp-marker -not -type d \ - -printf "%p\t%s\t%u:%g\t%m\t%l\n" | sort > $(crFILELOGDIR)/$(1) -endef - -define log_new_files_LUSER - @find $(BASEDIR) -xdev ! -path "$(BASEDIR)/$(SCRIPT_ROOT)/*" ! -path "$(BASEDIR)/tmp/*" ! -path "$(SRCSDIR)/*" \ - -newer $(SRCSDIR)/timestamp-marker -not -type d \ - -printf "%p\t%s\t%u:%g\t%m\t%l\n" | sort > $(BASEDIR)$(crFILELOGDIR)/$(1) -endef - -#==@ - -define remove_build_dirs - @ROOT=`head -n1 $(SRCSDIR)/$(PKG_LST) | sed 's@^./@@;s@/.*@@'` && \ - rm -rf $(SRCSDIR)/$$ROOT && \ - rm -rf $(SRCSDIR)/$(1)-build -endef - -define remove_build_dirs2 - @ROOT=`head -n1 $(SRC)/$(PKG_LST) | sed 's@^./@@;s@/.*@@'` && \ - rm -rf $(SRC)/$$ROOT && \ - rm -rf $(SRC)/$(1)-build -endef - -#==# - -define housekeeping - @touch $@ && \ - sleep .25 && \ - echo -e "\n" $(BOLD)Target $(BLUE)$@ $(WHITE)$(BOLD)OK && \ - echo --------------------------------------------------------------------------------$(WHITE) && \ - if [ "$(BREAKPOINT)" = "$@" ] ; then \ - echo $(tab_)$(RED)The build has been stopped at $(BLUE)$@ $(RED)as requested$(WHITE) ; \ - false ; \ - fi -endef - -#======================= - - -#==== FINAL MESSAGES === - -define echo_report - echo ; \ - echo $(BOLD) The report file $(BLUE)$(1)$(BOLD) has been created ; \ - echo ; \ - echo $(WHITE)Please send the $(BOLD)$(MOUNT_PT)/jhalfs/$(1)$(WHITE) ; \ - echo file to $(BOLD)manuel@linuxfromscratch.org$(WHITE) ; \ - echo ; \ - echo That will help us to keep more accurate SBU and ; \ - echo disk usage values into the book. Thanks. ; \ - echo $(BOLD)--------------------------------------------------------------------------------$(WHITE) -endef - -define echo_finished - @echo $(BOLD) - @echo -------------------------------------------------------------------------------- - @echo $(BOLD) Finished the build of $(BLUE)$(1)$(BOLD) - @echo -------------------------------------------------------------------------------- - @echo $(tab_)$(tab_)$(RED)W A R N I N G$(BOLD) - @echo -------------------------------------------------------------------------------- - @echo - @echo To be able to boot your new system you need to follow - @echo the next steps:$(WHITE) - @echo - @echo $(tab_)- Enter to the chroot using the command found - @echo $(tab_)in the section -Entering the Chroot Environment- - @echo $(tab_)except if building CLFS with METHOD=boot. - @echo - @echo $(tab_)- Set a password for the root user. - @echo - @echo $(tab_)- Edit or create /etc/fstab, /etc/hosts, /etc/sysconfig/clock, - @echo $(tab_)/etc/sysconfig/console, /etc/sysconfig/network, - @echo $(tab_)/etc/sysconfig//network-devices/ifconfig.eth0/ipv4 and - @echo $(tab_)any other configuration file required to suit your needs. - @echo - @echo $(tab_)- Exit from the chroot. - @echo - @echo $(tab_)- Set-up the boot loader, except if building CLFS with METHOD=boot. - @echo $(tab_)You can set-up the host bootloader or the new boot-loader - @echo $(tab_)installed on the new system. - @echo $(tab_)If the last, you must to mount the virtual filesystems, re-enter - @echo $(tab_)the chroot and be sure that /dev is populated with the - @echo $(tab_)required devices before configure the boot-loader. When ready, - @echo $(tab_)exit from the chroot and umount the filesystems - @echo - @echo If you are an experienced LFS user, several of those steps can be - @echo skipped or done in a different way. But then, that is something - @echo that you already know and there is no need to discuss it here. - @echo $(BOLD) - @echo -------------------------------------------------------------------------------- - @echo $(tab_)$(tab_)$(GREEN)Have a nice day $(ORANGE):-\)$(BOLD) - @echo --------------------------------------------------------------------------------$(WHITE) -endef - -define echo_boot_finished - @echo $(BOLD) - @echo -------------------------------------------------------------------------------- - @echo $(BOLD) Finished building a minimal boot system for $(BLUE)$(1)$(BOLD) - @echo -------------------------------------------------------------------------------- - @echo $(tab_)$(tab_)$(RED)W A R N I N G$(BOLD) - @echo -------------------------------------------------------------------------------- - @echo - @echo The build is not complete. Follow the next steps:$(WHITE) - @echo - @echo $(tab_)- Edit or create $(MOUNT_PT)/etc/fstab - @echo $(tab_) and any other configuration file required to suit your needs. - @echo $(BOLD) - @echo $(BOLD)$(YELLOW) - @echo 1.If it is necessary, transfer the newly created partition to the target machine - @echo 2.Boot the new partition. - @echo 3.Once you are logged in issue the following commands - @echo $(tab_) $(BOLD)cd /jhalfs - @echo $(tab_) $(BOLD)make makesys - @echo The build process should resume. Follow any instructions that appear. - @echo -------------------------------------------------------------------------------- - @echo $(tab_)$(tab_)$(GREEN)Have a nice day $(ORANGE):-\)$(BOLD) - @echo --------------------------------------------------------------------------------$(WHITE) -endef diff --git a/2.3/common/packages.xsl b/2.3/common/packages.xsl deleted file mode 100644 index 5eab0a7..0000000 --- a/2.3/common/packages.xsl +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/2.3/common/progress_bar.sh b/2.3/common/progress_bar.sh deleted file mode 100644 index 41926fe..0000000 --- a/2.3/common/progress_bar.sh +++ /dev/null @@ -1,68 +0,0 @@ - -# $Id$ - -set -e - -# Be sure that we know the taget name -[[ -z $1 ]] && exit -TARGET=$1 # Remember the target build we are looking for -MAKE_PPID=$2 - -declare -r CSI=$'\e[' # DEC terminology, Control Sequence Introducer -declare -r CURSOR_OFF=${CSI}$'?25l' -declare -r CURSOR_ON=${CSI}$'?25h' -declare -r ERASE_LINE=${CSI}$'2K' -declare -r FRAME_OPEN=${CSI}$'2G[' -declare -r FRAME_CLOSE=${CSI}$'63G]' -declare -r TS_POSITION=${CSI}$'65G' -declare -r LINE_WRAP_OFF=${CSI}$'?7l' -declare -r LINE_WRAP_ON=${CSI}$'?7h' -declare -a RESET_LINE=${CURSOR_OFF}${ERASE_LINE}${FRAME_OPEN}${FRAME_CLOSE} - -declare -a GRAPHIC_STR="| / - \\ + " -declare -i SEC=0 # Seconds accumulator -declare -i PREV_SEC=0 - -# Prevent segfault on stripping phases -if [[ "$BASHBIN" = "/tools/bin/bash" ]] ; then - SLEEP=/tools/bin/sleep -else - SLEEP=/bin/sleep -fi - -write_or_exit() { - # make has been killed or failed or run to completion, leave - [[ ! -e /proc/${MAKE_PPID} ]] && echo -n "${CURSOR_ON}" && exit - - # Target build complete, leave. - [[ -f ${TARGET} ]] && echo -n "${CURSOR_ON}" && exit - - # It is safe to write to the screen - echo -n "$1" -} - - # initialize screen -write_or_exit "${RESET_LINE}${TS_POSITION}0 min. 0 sec" - - # loop forever.. -while true ; do - - # Loop through the animation string - for GRAPHIC_CHAR in ${GRAPHIC_STR} ; do - write_or_exit "${CSI}$((SEC + 3))G${GRAPHIC_CHAR}" - $SLEEP .12 # This value MUST be less than .2 seconds. - done - - # A BASH internal variable, the number of seconds the script - # has been running. modulo convert to 0-59 - SEC=$(($SECONDS % 60)) - - # Detect rollover of the seconds. - (( PREV_SEC > SEC )) && write_or_exit "${RESET_LINE}" - (( PREV_SEC = SEC )) - - # Display the accumulated time. div minutes.. modulo seconds. - write_or_exit "${TS_POSITION}$(($SECONDS / 60)) min. $SEC sec" -done - -exit diff --git a/2.3/common/urls.xsl b/2.3/common/urls.xsl deleted file mode 100644 index b136eb5..0000000 --- a/2.3/common/urls.xsl +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - ftp://ftp.osuosl.org - - - lfs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /pub/ - - /conglomeration/ - - - - bash/ - - - dvhtool/ - - - gcc/ - - - glibc/ - - - powerpc-utils/ - - - tcl/ - - - uClibc/ - - - udev/ - - - - / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/2.3/custom/examples/950-bc b/2.3/custom/examples/950-bc deleted file mode 100644 index e70d3dc..0000000 --- a/2.3/custom/examples/950-bc +++ /dev/null @@ -1,22 +0,0 @@ -# -# $Id$ -# -PKG="bc" -PKG_VERSION="1.06" -PKG_FILE="bc-1.06.tar.gz" -URL="http://ftp.gnu.org/gnu/bc/${PKG_FILE}" -MD5="d44b5dddebd8a7a7309aea6c36fda117" -for i in PATCH{1..10}; do - unset $i -done - -( cat << "xEOFx" -sed -i '/PROTO.*readline/d' bc/scan.l && -sed -i '/flex -I8/s/8//' configure && -sed -i '/stdlib/a #include ' lib/number.c && -sed -i 's/program.*save/static &/' bc/load.c && -./configure --prefix=/usr --with-readline && -make -make install -xEOFx -) > tmp diff --git a/2.3/custom/examples/951-glib b/2.3/custom/examples/951-glib deleted file mode 100644 index ddb0985..0000000 --- a/2.3/custom/examples/951-glib +++ /dev/null @@ -1,22 +0,0 @@ -# -# $Id$ -# -PKG="glib" -PKG_VERSION="1.2.10" -PKG_FILE="glib-1.2.10.tar.gz" -URL="http://gd.tuwien.ac.at/graphics/gimp/gtk/v1.2/${PKG_FILE}" -MD5="6fe30dad87c77b91b632def29dd69ef9" -for i in PATCH{1..10}; do - unset $i -done -PATCH1="http://www.linuxfromscratch.org/patches/blfs/svn/glib-1.2.10-gcc34-1.patch 0077a1cce5e8a2231ac5a9b08c6263ba" - - -( cat << "xEOFx" -patch -Np1 -i ../glib-1.2.10-gcc34-1.patch && -./configure --prefix=/usr && -make -make install && -chmod -v 755 /usr/lib/libgmodule-1.2.so.0.0.10 -xEOFx -) > tmp diff --git a/2.3/custom/examples/952-mc b/2.3/custom/examples/952-mc deleted file mode 100644 index 43af312..0000000 --- a/2.3/custom/examples/952-mc +++ /dev/null @@ -1,18 +0,0 @@ -# -# $Id$ -# -PKG="mc" -PKG_VERSION="4.6.1" -PKG_FILE="mc-4.6.1.tar.gz" -URL="http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/${PKG_FILE}" -MD5="18b20db6e40480a53bac2870c56fc3c4" -for i in PATCH{1..10}; do - unset $i -done - -( cat << "xEOFx" -./configure --prefix=/usr && -make -make install -xEOFx -) > tmp diff --git a/2.3/custom/examples/960-pppd b/2.3/custom/examples/960-pppd deleted file mode 100644 index feacb91..0000000 --- a/2.3/custom/examples/960-pppd +++ /dev/null @@ -1,26 +0,0 @@ -# -# $Id$ -# -# The PPP package contains the pppd daemon and the chat program. -# This is used for connecting to other machines; often for connecting -# to the Internet via a dial-up or PPPoE connection to an ISP. -# - -PKG="ppp" -PKG_VERSION="2.4.4" -PKG_FILE="ppp-${PKG_VERSION}.tar.gz" -URL="http://samba.org/ftp/ppp/${PKG_FILE}" -MD5="183800762e266132218b204dfb428d29" -for i in PATCH{1..10}; do - unset $i -done - -( cat << "xEOFx" -./configure --prefix=/usr && -make - -make install && -make install-etcppp - -xEOFx -) > tmp diff --git a/2.3/custom/examples/961-openssl b/2.3/custom/examples/961-openssl deleted file mode 100644 index e928c7c..0000000 --- a/2.3/custom/examples/961-openssl +++ /dev/null @@ -1,35 +0,0 @@ -# -# $Id$ -# -# The OpenSSL package contains management tools and libraries -# relating to cryptography. These are useful for providing -# cryptography functions to other packages, notably OpenSSH, -# email applications and web browsers (for accessing HTTPS sites). -# - -PKG="openssl" -PKG_VERSION="0.9.8d" -PKG_FILE="openssl-${PKG_VERSION}.tar.gz" -URL="ftp://ftp.openssl.org/source/${PKG_FILE}" -MD5="8ed1853538e1d05a1f5ada61ebf8bffa" -for i in PATCH{1..10}; do - unset $i -done -PATCH1=" http://www.linuxfromscratch.org/patches/blfs/svn/openssl-0.9.8d-fix_manpages-1.patch" - -( cat << "xEOFx" - -sed -i -e 's/mcpu/march/' config -patch -Np1 -i ../openssl-0.9.8d-fix_manpages-1.patch && -./config --openssldir=/etc/ssl --prefix=/usr shared && -make MANDIR=/usr/share/man - -make MANDIR=/usr/share/man install && -cp -v -r certs /etc/ssl && -install -v -d -m755 /usr/share/doc/openssl-0.9.8d && -cp -v -r doc/{HOWTO,README,*.{txt,html,gif}} \ - /usr/share/doc/openssl-0.9.8d - - -xEOFx -) > tmp diff --git a/2.3/custom/examples/963-gpm b/2.3/custom/examples/963-gpm deleted file mode 100644 index fce2d68..0000000 --- a/2.3/custom/examples/963-gpm +++ /dev/null @@ -1,43 +0,0 @@ -# -# $Id$ -# -PKG="gpm" -PKG_VERSION="1.20.1" -PKG_FILE="gpm-${PKG_VERSION}.tar.bz2" -URL="ftp://arcana.linux.it/pub/gpm/${PKG_FILE}" -MD5="2c63e827d755527950d9d13fe3d87692" -for i in PATCH{1..10}; do - unset $i -done -PATCH1=" http://www.linuxfromscratch.org/patches/blfs/svn/gpm-1.20.1-segfault-1.patch" -PATCH2=" http://www.linuxfromscratch.org/patches/blfs/svn/gpm-1.20.1-silent-1.patch" - - -( cat << "xEOFx" - -patch -Np1 -i ../gpm-1.20.1-segfault-1.patch && -patch -Np1 -i ../gpm-1.20.1-silent-1.patch && -./configure --prefix=/usr --sysconfdir=/etc && -LDFLAGS="-lm" make - -make install && -cp -v conf/gpm-root.conf /etc && -ldconfig - -# The normal cmd to install the boot script for gpm -# --- PUT THIS CMD INSIDE 999-blfs_bootscripts -#make install-gpm - -cat > /etc/sysconfig/mouse << "EOF" -# Begin /etc/sysconfig/mouse - -MDEVICE="/dev/psaux" -PROTOCOL="imps2" -GPMOPTS="" - -# End /etc/sysconfig/mouse -EOF - -xEOFx -) > tmp - diff --git a/2.3/custom/examples/963-lynx b/2.3/custom/examples/963-lynx deleted file mode 100644 index 45ac0da..0000000 --- a/2.3/custom/examples/963-lynx +++ /dev/null @@ -1,32 +0,0 @@ -# -# $Id$ -# -# Lynx is a text based web browser. -# - -PKG="lynx" -PKG_VERSION="2.8.6" -PKG_FILE="lynx${PKG_VERSION}.tar.bz2" -URL="ftp://lynx.isc.org/lynx2.8.6/${PKG_FILE}" -MD5="dc80497b7dda6a28fd80404684d27548" -for i in PATCH{1..10}; do - unset $i -done - -( cat << "xEOFx" - -./configure --prefix=/usr \ - --sysconfdir=/etc/lynx \ - --datadir=/usr/share/doc/lynx-2.8.6 \ - --with-zlib \ - --with-bzlib \ - --with-screen=ncursesw \ - --enable-locale-charset && - -make - -make install-full && -chgrp -v -R root /usr/share/doc/lynx-2.8.6/lynx_doc - -xEOFx -) > tmp diff --git a/2.3/custom/examples/964-hdcpcd b/2.3/custom/examples/964-hdcpcd deleted file mode 100644 index 9f07569..0000000 --- a/2.3/custom/examples/964-hdcpcd +++ /dev/null @@ -1,27 +0,0 @@ -# -# $Id$ -# -# dhcpcd is an implementation of the DHCP client specified in RFC2131. -# This is useful for connecting your computer to a network which uses -# DHCP to assign network addresses. -# - -PKG="dhcpcd" -PKG_VERSION="2.0.8" -PKG_FILE="dhcpcd-${PKG_VERSION}.tar.bz2" -URL="ftp://ftp.osuosl.org/pub/gentoo/distfiles/${PKG_FILE}" -MD5="ec91c33b6d9cb46a42f9564e573fd249" -for i in PATCH{1..10}; do - unset $i -done - -( cat << "xEOFx" - -./configure --prefix="" --mandir=/usr/share/man && -make - -make install && -chmod -v 754 /etc/dhcpc/dhcpcd.exe - -xEOFx -) > tmp diff --git a/2.3/custom/examples/965-eject b/2.3/custom/examples/965-eject deleted file mode 100644 index 686fe59..0000000 --- a/2.3/custom/examples/965-eject +++ /dev/null @@ -1,25 +0,0 @@ -# -# $Id$ -# -# Program for ejecting removable media under software control. -# Can also control the auto-eject feature of some drives and -# can be used to switch CDs on an IDE/ATAPI CD changer. -# - -PKG="eject" -PKG_VERSION="2.10" -PKG_FILE="eject-${PKG_VERSION}.tar.gz" -URL="ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/${PKG_FILE}" -MD5="82e3a7a4d7e3323018c6938015ff25f7" -PATCH1="" - -( cat << "xEOFx" - -./configure --prefix=/usr \ - --enable-default-device=/dev/cdrom \ - --disable-nls -make -make install - -xEOFx -) > tmp diff --git a/2.3/custom/examples/997-nasm b/2.3/custom/examples/997-nasm deleted file mode 100644 index ebeee4c..0000000 --- a/2.3/custom/examples/997-nasm +++ /dev/null @@ -1,33 +0,0 @@ -# -# $Id:$ -# NASM (Netwide Assembler) is an 80x86 assembler designed -# for portability and modularity. It includes a -# disassembler as well. - -PKG="nasm" -PKG_VERSION="0.98.39" -PKG_FILE="nasm-${PKG_VERSION}.tar.bz2" -URL="http://downloads.sourceforge.net/nasm/${PKG_FILE}" -MD5="2032ad44c7359f7a9a166a40a633e772" -for i in PATCH{1..10}; do - unset $i -done -PATCH1="http://www.linuxfromscratch.org/patches/blfs/svn/nasm-0.98.39-security_fix-1.patch" - -( cat << "xEOFx" - -patch -Np1 -i ../nasm-0.98.39-security_fix-1.patch && -./configure --prefix=/usr && -make -make -C rdoff/doc -make -C rdoff/doc html - -make install && -make install_rdf && -install -v -m644 rdoff/doc/rdoff.info /usr/share/info && -install -v -m755 -d /usr/share/doc/nasm/html && -install -v -m644 rdoff/doc/v1-v2.txt /usr/share/doc/nasm && -cp -v -R rdoff/doc/rdoff /usr/share/doc/nasm/html - -xEOFx -) > tmp diff --git a/2.3/custom/examples/998-syslinux b/2.3/custom/examples/998-syslinux deleted file mode 100644 index 59d5f12..0000000 --- a/2.3/custom/examples/998-syslinux +++ /dev/null @@ -1,35 +0,0 @@ -# -# $Id$ -# -# SYSLINUX is a collection of boot loaders for the Linux -# operating system which operates off Linux ext2/3 -# filesystems, MS-DOS FAT filesystems, network servers -# using PXE firmware, or from CD-ROMs. The FAT -# filesystem version can be installed from DOS, NT, or -# Linux. -# -# It includes a sophisticated API for add-on "COM32" -# modules, including a significant subset of the -# standard C library. -# -# It also includes MEMDISK, a tool to boot legacy -# operating systems from nontraditional media like PXE -# or CD-ROM. -# - -PKG="syslinux" -PKG_VERSION="3.36" -PKG_FILE="syslinux-$PKG_VERSION}.tar.bz2" -URL="http://www.kernel.org/pub/linux/utils/boot/syslinux/${PKG_FILE}" -MD5="d1bfdaa53d31f572f540be55d1480027" -for i in PATCH{1..10}; do - unset $i -done - -( cat << "xEOFx" - -make -make install - -xEOFx -) > tmp diff --git a/2.3/custom/examples/999-blfs_bootscripts b/2.3/custom/examples/999-blfs_bootscripts deleted file mode 100644 index 0494477..0000000 --- a/2.3/custom/examples/999-blfs_bootscripts +++ /dev/null @@ -1,22 +0,0 @@ -# -# $Id$ -# -PKG="blfs-bootscripts" -PKG_VERSION="20060910" -PKG_FILE="blfs-bootscripts-${PKG_VERSION}.tar.bz2" -URL="http://www.linuxfromscratch.org/blfs/downloads/svn/${PKG_FILE}" -MD5="e1715c58dc694bf474c4468e6bade3ad" -for i in PATCH{1..10}; do - unset $i -done - -( cat << "xEOFx" - -# -# Insert ALL the blfs bootscripts you want to install -# EXAMPLE -# -make install-gpm -make install-service-dhcpcd -xEOFx -) > tmp diff --git a/2.3/custom/examples_CLFS-E/950-dropbear b/2.3/custom/examples_CLFS-E/950-dropbear deleted file mode 100644 index bd98ae0..0000000 --- a/2.3/custom/examples_CLFS-E/950-dropbear +++ /dev/null @@ -1,49 +0,0 @@ -# -# $Id$ -# -# Code taken from CLFS-Embedded -# Chapter 12 Beyond CLFS Embedded -# -# Dropbear is a relatively small SSH 2 server and client. -# Dropbear has a small memory footprint suitable for memory-constrained -# environments, while still having the same features as OpenSSH. It -# does not depend on OpenSSL and it has a MIT style license. Optionally -# it can even be made smaller. -# - -PKG="DROPBEAR" -PKG_VERSION="0.48.1" -PKG_FILE="${PKG}-${PKG_VERSION}.tar.gz" -URL="http://matt.ucc.asn.au/dropbear/releases/${PKG_FILE}" -MD5="ca8e53a766faec831882831364568421" -for i in PATCH{1..10}; do - unset $i -done -PATCH1="http://svn.cross-lfs.org/svn/repos/cross-lfs/branches/clfs-embedded/patches/dropbear-0.48.1-autotool-1.patch" - -( cat << "xEOFx" - -patch -Np1 -i ../dropbear-0.48.1-autotool-1.patch - -cp Makefile.in{,.orig} -sed -e s/@LD@/@CC@/ Makefile.in.orig > Makefile.in - -CC="${CC} ${BUILD}" ./configure --prefix=/usr --host=${CLFS_TARGET} - -cp -v options.h options.h.backup -sed -e "s@/dev/random@/dev/urandom@" options.h.backup > options.h - -make MULTI=1 PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" - -make MULTI=1 PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install DESTDIR=${CLFS} -ln -svf ../../usr/bin/dropbearmulti ${CLFS}/usr/sbin/dropbear -ln -svf ../../usr/bin/dropbearmulti ${CLFS}/usr/bin/dbclient -ln -svf ../../usr/bin/dropbearmulti ${CLFS}/usr/bin/dropbearkey -ln -svf ../../usr/bin/dropbearmulti ${CLFS}/usr/bin/dropbearconvert -ln -svf ../../usr/bin/dropbearmulti ${CLFS}/usr/bin/scp - -install -dv ${CLFS}/etc/ssh - - -xEOFx -) > tmp diff --git a/2.3/custom/examples_CLFS-E/960-iptables b/2.3/custom/examples_CLFS-E/960-iptables deleted file mode 100644 index 17c2627..0000000 --- a/2.3/custom/examples_CLFS-E/960-iptables +++ /dev/null @@ -1,42 +0,0 @@ -# -# $Id:$ -# -# Code taken from CLFS-Embedded -# Chapter 12 Beyond CLFS Embedded -# -# iptables is the userspace command line program -# used to configure the Linux firewall. -# - -PKG="iptables" -PKG_VERSION="1.3.7" -PKG_FILE="${PKG}-${PKG_VERSION}.tar.bz2" -URL=" http://www.netfilter.org/projects/iptables/files/iptables-1.3.7.tar.bz2" -MD5="077e886a9c90a11bb47f3d7a4fc4a689" -for i in PATCH{1..10}; do - unset $i -done -PATCH1="http://svn.cross-lfs.org/svn/repos/cross-lfs/branches/clfs-embedded/patches/iptables-1.3.7-do_multi-1.patch" - -( cat << "xEOFx" - -patch -Np1 -i ../iptables-1.3.7-do_multi-1.patch - -make CC="${CC} ${BUILD}" \ - COPT_FLAGS="-Os" \ - LD=${LD} DO_MULTI=1 \ - PREFIX=/usr \ - KERNEL_DIR=${CLFS}/lib/modules/2.6.19.2/build \ - LIBDIR=/lib \ - BINDIR=/sbin - -make CC="${CC} ${BUILD}" \ - COPT_FLAGS="-Os" \ - LD=${LD} DO_MULTI=1 \ - PREFIX=/usr \ - KERNEL_DIR=${CLFS}/lib/modules/2.6.19.2/build \ - LIBDIR=/lib BINDIR=/sbin \ - DESTDIR=${CLFS} install - -xEOFx -) > tmp diff --git a/2.3/custom/template b/2.3/custom/template deleted file mode 100644 index f55201e..0000000 --- a/2.3/custom/template +++ /dev/null @@ -1,20 +0,0 @@ -# -# $Id$ -# -# Any comments you wish to add -# - -PKG="" -PKG_VERSION="" -PKG_FILE="" -URL="" -MD5="" -for i in PATCH{1..10}; do - unset $i -done -PATCH1="" - -( cat << "xEOFx" - -xEOFx -) > tmp diff --git a/2.3/extras/do_copy_files b/2.3/extras/do_copy_files deleted file mode 100755 index a176d7b..0000000 --- a/2.3/extras/do_copy_files +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -# $Id$ -set -e - -: <> $TMP_FILE -done - -mkdir -p $3 -cd $2 -tar -X $TMP_FILE -cf - . | tar -C $3 -xf - - -# Clear out the temporary file -rm -f ${TMP_FILE} - -echo "done." diff --git a/2.3/extras/do_ica_prep b/2.3/extras/do_ica_prep deleted file mode 100755 index 1bbfaba..0000000 --- a/2.3/extras/do_ica_prep +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash -# $Id$ - -# Acknowledgment: -# The following code is a modified version of an original work written by -# Greg Schafer for the "DIY Linux" project and is included here with his -# permission. -# ref: http://www.diy-linux.org -# - -set -e - -: <&2 - exit 1 - } - rm -f ../${BN}.XX - done - echo "done." - - echo -n "Stripping (debug) symbols from \".o\" files in ${CMP_DIR}... " - find $CMP_DIR -name '*.o' | xargs strip -p -g 2>/dev/null - echo "done." - - echo -n "Stripping (all) symbols from files OTHER THAN \".o\" files in ${CMP_DIR}... " - find $CMP_DIR ! -name '*.o' | xargs strip -p 2>/dev/null || : - echo "done." - - # We're all done - echo -en "\nSuccess: ICA preparation for " - echo -e "${CMP_DIR} complete." - touch $CMP_DIR/icaprep -else - echo -e "\n$CMP_DIR was already processed\n" -fi - diff --git a/2.3/extras/do_ica_work b/2.3/extras/do_ica_work deleted file mode 100755 index fde1fd1..0000000 --- a/2.3/extras/do_ica_work +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -# $Id$ - -# Acknowledgment: -# The following code is a modified version of an original work written by -# Greg Schafer for the "DIY Linux" project and is included here with his -# permission. -# ref: http://www.diy-linux.org -# - -set -e - -: < $REPORT -diff -ur ${1} ${2} > $RAWDIFF || : - -echo -e "The list of binary files that differ:\n" > $REPORT -grep "iles.*differ$" $RAWDIFF >> $REPORT - -echo -e "The list of files that exist \"only in\" 1 of the directories:\n" >> $REPORT - -if grep "^Only in" $RAWDIFF >/dev/null 2>&1; then - grep "^Only in" $RAWDIFF >> $REPORT -else - echo NONE >> $REPORT -fi - -grep -v "iles.*differ$" $RAWDIFF | \ -grep -v "^Only in" > ${3}/${1}V${2}.ASCII.DIFF - -rm -f $RAWDIFF - -echo "done." diff --git a/2.3/extras/farce b/2.3/extras/farce deleted file mode 100755 index 776aed4..0000000 --- a/2.3/extras/farce +++ /dev/null @@ -1,896 +0,0 @@ -#!/bin/bash - -# Acknowledgment: -# The following code is a no-modified version (except for this comment -# and the inline_doc fragment) of an original work written by -# Ken Moffat and is included here with his permission. -# - -# FARCE: Farce Assists Rebuild Comparison Evaluation ;) -# -# to answer the question "can it rebuild itself?" -# -# We expect four arguments - first directory path, filelist -# containing the files in this directory which we wish to compare, -# second directory path, filelist for second directory. -# -# Yes, we could just compare everything in each tree, but the -# filelist script knows about files it can reasonably ignore, -# and this also allows us to build a sytem, boot it and get a -# list of files, build a full desktop environment, and only then -# build and boot the "can it build itself" test system and get -# _its_ filelist. -# -# What this script aims to do: -# ____________________________ -# -# First, report files not in both builds. -# -# Then, confirm symlinks point to same targets. -# -# After that, compare individual files - -# if different, run the file name through 'expected' -# to pick out files that are unlikely to match (logs, -# pids, fstab [assumes '/' is a different device each time], -# count these as 'expected'. -# -# For whatever is left, check the file type - ar archives -# have their members extraced and compared (every member has -# a timestamp), gzipped files are compared beyond their -# timestamp, binaries, at least those using shared libs or -# which are shared objects, are copied and subjected to -# --strip-debug. If files match at this stage, count them as -# 'accepted'. -# -# As a last step for any file that doesn't match, copy it -# through some perl regexps to "process" it (convert any -# date, time, kernel-version information from standard formats -# into tokens, then see if the tokensi match. -# -# For details of the regexps, see the tokenize function. -# Those files that match after this are also counted as -# 'accepted'. Note that I don't always start from the kernel -# version that I'm going to build, so this copes with e.g. perl -# files that hardcode the kernel version. -# -# We now have files that don't match. A few of these seem to be -# common to all builds - some (members of) c++ libraries or ar -# archives, a few programs which perhaps use some sort of c++ code). -# The file name # is passed to the 'failure' function - these -# recognized filenames are labelled as 'predictable FAIL:', -# anything else is labelled as 'unexpected FAIL:'. -# -# output: -# stderr - files only in one of the builds, failure messages, -# and totals. -# -# farce-results - more details, including which files were treated -# as expected differences, files where neither copy could be read, -# files treated as accepted, with the reason (and member for ar -# archives). This data is typically up to 100 characters wide - -# sometimes it's a bit more, but it doesn't wrap too badly in a -# 100 character xterm. -# -# farce-extras - diffs for the files, or members, that didn't -# match. This file is to establish new regexps for picking up -# date/time/kernel-version formats. -# -# farce-identical - the names of the files which are identical -# -# farce-substitutions - whenever using tokenizeanddiff results in a -# difference being accepted, for both versions diff the before and -# after versions to show what got changed. If the file is a binary, -# the output may still be hard to read. Note that I _know_ glibc -# version strings pass one of the regexps looking for a kernel version -# - since I expect you to use the same version of glibc for each -# build, this is not a problem. -# -# farce-differ - the names of the files which could not be treated -# as matching (whether or not I regard the failure as predictable) -# for possible input to ICA processing. -# -# Copyright (C) 2005, 2006 Ken Moffat -# -# All rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or -# NON INFRINGEMENT. See the GNU General Public License for more -# details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# - -: <&2 - echo "$@" >&5 -} - -function expected() { - # if we expect it to differ because of its name, - # allow it and report, return true ; else return false - case $1 in - /boot/grub/menu.lst) - # just in case somebody puts this into the main filesystem - true;; - /etc/aliases.db) - # some sort of database for postfix, not parsable - true;; - /etc/blkid.tab) - # includes dev name for rootfs - true;; - /etc/fstab) - # fstab, e.g. ' / ' will differ - true;; - /etc/group*) - true;; - /etc/hosts) - # with dhcp client, I add current ip address to this in a hook - true;; - /etc/ld.so.*) - # .conf and .cache can vary, - # particularly if one system has a full build when I run this - true;; - /etc/lilo.conf|/etc/yaboot.conf) - # bootloader control, I assume grub will all be on a separate - true;; - /etc/mtab) - # at a minimum, different '/' - true;; - /etc/ntp.drift) - true;; - /etc/passwd*) - true;; - /etc/shadow*) - true;; - /etc/ssh/*key|/etc/ssh/*pub) - # openssh keys - true;; - /misc/*) - # where I put buildscripts (which mostly won't change) - # and stamps containing name/time/space which will differ in the times - true;; - /root/*) - # expect .bash_history etc to differ - if we can read them - true;; - /usr/bin/lynx) - # part of my inital builds, I guess this uses anonymous namespaces - true;; - /usr/include/c++/*/*/bits/stdc++.h.gch/*) - # precompiled headers - true;; - /usr/lib*/libstdc++.a|/usr/lib*/libstdc++.so*|/usr/lib*/libsupc++.a) - # probably, anonymous namespaces - # libstdc++.a, libstdc++.so.n.n.n, libsupc++.a - true;; - /usr/share/info/dir) - # if one system has had extra stuff built, this will likely be bigger - true;; - /usr/share/man/whatis) - # if one system has had extra stuff built, this will likely be bigger - true;; - /var/lib/locate/locatedb) - # if one system has had extra stuff built, this will likely be bigger - true;; - /var/lib/nfs/*) - # allow nfs bookkeeping - true;; - /var/log/*) - true;; - /var/run/utmp) - true;; - /var/spool/fcron*) - true;; - /var/state/*) - # allow dhcp leases - true;; - /var/tmp/random-seed) - true;; - # following start with wildcards - *Image*|*.PPCBoot*|*vmlinuz*|*lfskernel*) - # compressed kernels, sometimes just building at a different - # date/time is enough to change the length of them, because the - # long format date and time is part of the compressed data - true;; - *pid*) - # pids, including e.g. /var/spool/postfix/pid/* - true;; - *) - # nothing else is expected to be different - false;; - esac - if [ $? -eq 0 ]; then - message "expected difference in $1" - let expected=$expected+1 - case $TYPE in - AR) - let EXPAR=$EXPAR+1 - ;; - ELF) - let EXPELF=$EXPELF+1 - ;; - UNK) - let EXPUNK=$EXPUNK+1 - ;; - # so far, no other valid types, so don't accumulate them - *) - emessage "internal error, expected difference for $1 of type $TYPE not allowed" - exit 2 - ;; - esac - true - else - false - fi -} - -function failure() { - # first parm is filename or token - # second parm is the error message - # update the appropriate total - # and write to both stderr and the results - # by using emessage - - let different=$different+1 - case $TYPE in - AR) - let DIFAR=$DIFAR+1 - ;; - ELF) - let DIFELF=$DIFELF+1 - ;; - GZ) - let DIFGZ=$DIFGZ+1 - ;; - SYM) - let DIFSYM=$DIFSYM+1 - ;; - UNK) - let DIFUNK=$DIFUNK+1 - ;; - *) - emessage "internal error in failure() for TYPE $TYPE" - exit 2 - ;; - esac - test -f ${P1}$1 && echo $1 >&9 - emessage "FAIL: $2" -} - -function fatal() { - # unrecoverable error - echo $* - exit 1 -} - -function filetype() { - TYPE=`file ${P1}${FILE}` - case $TYPE in - *'current ar archive'*) - let TOTAR=$TOTAR+1 - TYPE=AR - ;; - *' ELF '*) - let TOTELF=$TOTELF+1 - TYPE=ELF - ;; - *'gzip compressed data'*) - let TOTGZ=$TOTGZ+1 - TYPE=GZ - ;; - *) - let TOTUNK=$TOTUNK+1 - TYPE=UNK - ;; - esac -} - -function message() { - # write a string to $RESULT - echo $* >&5 -} - -function onlyone() { - #report files only in one build - # text should go to both stderr and the results, - # but blank lines only go to the results - if [ $1 == '<' ]; then - emessage "File(s) only in the first build" - else - emessage "File(s) only in the second build" - fi - message "" - FILES=`cat $DIFF | grep "^$1" | cut -d ' ' -f 2` - for F in $FILES; do - emessage $F - let only=$only+1 - done - message "" -} - -# 'test' functions are called with three arguments: -# the two pathes and the filename -# - we know the file is of this type, so see if we -# can get it to match by reasonalbe means. -# if not, treat it as different. -# -# NB if pathes are absolute, we need to prefix them -# with the original $PWD to access the .a files -# -function testar() { - # ar archives include timestamps for the members, - # but diff doesn't show file timestamps unless the data differs - # put out a message to help locate which archive any messages - # about the members refer to. - - # try just stripping them U1,2 undebuggable - U1=`mktemp` || fatal "cannot create a temporary file" - U2=`mktemp` || fatal "cannot create a temporary file" - cp ${1}${3} $U1 - cp ${2}${3} $U2 - strip --strip-debug $U1 - strip --strip-debug $U2 - cmp -s $U1 $U2 - rm $U1 $U2 - if [ $? -eq 0 ]; then - let accepted=$accepted+1 - let ACCAR=$ACCAR+1 - message "archive $3 matches after strip --strip-debug" - return - fi - # rest of this function retained primarily for pathologically bad builds - # put out a message in the log to help identify which archive has issues. - message "examining ar archive $3" - D1=`mktemp -d` || fatal "cannot create a temporary directory" - D2=`mktemp -d` || fatal "cannot create a temporary directory" - cd $D1 - ar -x ${OP1}${1}${3} - cd $D2 - ar -x ${OP2}${2}${3} - cd - # diff the members - true means they match - diff -Na $D1 $D2 >/dev/null - if [ $? -eq 0 ]; then - message "accept: $3 after diffing the members" - let accepted=$accepted+1 - let ACCAR=$ACCAR+1 - else - # process individual members to eliminate date/time/kernel-version - # first, check the members are the same - M1=`mktemp` || fatal "cannot create a temporary file" - M2=`mktemp` || fatal "cannot create a temporary file" - cd $D1 - MEMBERS= - for F in *; do - MEMBERS="$MEMBERS $F" - done - cd - echo $MEMBERS | sort >$M1 - cd $D2 - MEMBERS= - for F in *; do - MEMBERS="$MEMBERS $F" - done - cd - echo $MEMBERS | sort >$M2 - cmp -s $M1 $M2 - if [ $? -ne 0 ]; then - # oh dear, different members - echo "list of members differs for archive $3" >&6 - diff $M1 $M2 >&6 - failure $3 "$3 list of members differs" - else - # members (names) are same, - # process each one - STATUS=0 - for M in $MEMBERS; do - #avoid firing up perl on matching members - cmp -s $D1/$M $D2/$M - if [ $? -ne 0 ]; then - tokenizeanddiff $D1/$M $D2/$M $FILE:$M - if [ $? -eq 0 ]; then - message "member $M matches after processing" - else - message "member $M DIFFERS after processing" - STATUS=1 - fi - fi - done - if [ $STATUS -eq 0 ]; then - let accepted=$accepted+1 - let ACCAR=$ACCAR+1 - else - let different=$different+1 - let DIFAR=$DIFAR+1 - echo $3 >&9 - emessage "FAIL: in $3" - fi - fi - rm $M1 $M2 - fi - rm -rf $D1 $D2 -} - -function testgzip() { - # bytes 4,5,6,7 are the timestamp, so ignore these - cmp -s -i 8 ${1}${3} ${2}${3} - if [ $? -eq 0 ]; then - message "accept: $3 after ignoring gzip timestamp" - let accepted=$accepted+1 - let ACCGZ=$ACCGZ+1 - else - failure $3 " $3 even after ignoring gzip timestamp" - fi -} - -function testso() { - # shared object - first try stripping it - # in fact, this now handles ALL ELF files - S1=`mktemp` || fatal "cannot create a temporary file" - S2=`mktemp` || fatal "cannot create a temporary file" - cp ${1}${3} $S1 - strip --strip-debug $S1 - cp ${2}${3} $S2 - strip --strip-debug $S2 - cmp -s $S1 $S2 - if [ $? -eq 0 ]; then - message "accept: $3 after --strip-debug" - let accepted=$accepted+1 - let ACCELF=$ACCELF+1 - else - tokenizeanddiff $S1 $S2 $3 - if [ $? -ne 0 ]; then - failure $3 " $3 differs after stripping and processing" - else - message "accept: $3 after --strip-debug and processing" - let accepted=$accepted+1 - let ACCELF=$ACCELF+1 - fi - fi - rm $S1 $S2 -} - -function tokenize() { - # use regexes to replace date/time/kernel-version text - # with tokens which may allow files to match even though - # they have hardcoded date/time/kernel-version. - # arguments are file to process, and where to put it. - # these regexes are somewhat long, and the order they - # are applied in is important (to stop short ones being - # used when a longer version would match). - # KV00 linux version date (e.g. as in the kernel itself) - # allow 2 or 3 groups of three alphas here - optional smp, with day, mon - # KV01 kernel version, including possible cpu details (that is for cdda2wav) - # KV02 just the version, in quotes e.g. "2.6.12.6" or '2.6.13', for perl stuff - # except that "|' gives me grif, so try a boundary - # also, it might need local version on the end, I really want - # quote2.\d+.\d+.{0,32}quote - it is the quotes that don't work. - # DT00 Day Mon .d+ hh:mm:ss TZN CCYY variations include non-caps and 'mon d' - # DT01 Mon .d+ CCYY hh:mm:ss - # DT02 hh:mm:ss Mon .d CCYY - # DT03 Mon .d CCYY - # DT04 Day Mon { ,d}d hh:mm:ss CCYY - for groff example postscript files - # (somewhat similar to DT00, but ' d' or ' dd' for day of month and no TZN ) - # DT05 hh:mm:ss - # DT06 ISO date using space as separator - # DT07 ISO date using dash as separator - # DT08 ISO date using slash as separator - # DT09 fullmonth (capitalised), day number, comma, 4-digit year (groff 1.18.1 ps) - # DT10 dd, fullmonth (capitalised), 4-digit year (groff 1.18.1 manpages) - # DT11 '(xample comma space digit(s) backslash ) in groff memef.ps which is - # quite clearly the day of the month when it was compiled, preceded by 'example' - # with something weird between the e and the x. - - if [ $# -ne 2 ]; then - fatal "tokenizing called with $# arguments : $*" - fi - - cat $1 | perl -p \ - -e 's/(L|l)inux.*\d\.\d\.\d+.* \#\d+( [A-Za-z][a-z]{2}){2,3} \d+ \d\d:\d\d:\d\d [A-Za-z]{3} \d{4}\b/%KV00%/g;' \ - -e 's/(L|l)inux( (\w|_)+)?(-| |_)\d\.\d(\.\d+){1,2}((-|_)?(\w|_)+)?( |\000)*/%KV01%/g;' \ - -e 's/\W2(\.\d+){2,3}(-|_)?((\w|_)+)?\s*\W/%KV02%/g;' \ - -e 's/\b([A-Za-z][a-z]{2} ){2}( |\d)?\d \d\d:\d\d:\d\d [A-Za-z]{3} \d{4}\b/%DT00%/g;' \ - -e 's/\b[A-Z][a-z]{2} ( |\d)\d \d{4} \d\d:\d\d:\d\d\b/%DT01%/g;' \ - -e 's/\b\d\d:\d\d:\d\d [A-Z][a-z]{2} ( |\d)\d \d{4}\b/%DT02%/g;' \ - -e 's/\b[A-Z][a-z]{2} ( |\d)\d \d{4}\b/%DT03%/g;' \ - -e 's/\b([A-Z][a-z]{2} ){2}( |\d)\d \d\d:\d\d:\d\d \d{4}/%DT04%/g;' \ - -e 's/\b\d\d:\d\d:\d\d\b/%DT05%/g;' \ - -e 's/\b\d{4} \d\d \d\d\b/%DT06%/g;' \ - -e 's/\b\d{4}-\d\d-\d\d\b/%DT07%/g;' \ - -e 's/\b\d{4}\/\d\d\/\d\d\b/%DT08%/g;' \ - -e 's/\b[A-Z][a-z]{2,} \d{1,2}, \d{4}/%DT09%/g;' \ - -e 's/\b\d\d [A-Z][a-z]{2,} \d{4}/%DT10%/g;' \ - -e 's/\(xample, \d{1,2}\\\)/%DT11%/g;' \ - >$2 -} - -function tokenizeanddiff() { - # Call tokenize for the inputs, then compare the results - # Input arguments are path/filename for old and new versions - # third parm is readable name (filename, or archivename:member) - # to help understand what is in the extras output. - # - sometimes called for files, but other times called for - # members of ar archives extracted into temporary directories - #message tokenizeanddiff called for $1 $2 $3 - F1=`mktemp` || fatal "cannot create a temporary file" - F2=`mktemp` || fatal "cannot create a temporary file" - tokenize $1 $F1 - tokenize $2 $F2 - - # actually, cmp is probably more efficient - # but for picking up the pieces it will be better to - # use diff to see what got through. - cmp -s $F1 $F2 - TOKENRESULT=$? - if [ $TOKENRESULT -ne 0 ]; then - echo "failure in $3..." >&6 - diff -a $F1 $F2 >&6 - rm $F1 $F2 - false - else - # show what we did - echo "substitutions for $3" >&8 - echo "build one" >&8 - diff -a $1 $F1 >&8 - echo "build two" >&8 - diff -a $2 $F2 >&8 - rm $F1 $F2 - true - fi -} - -function validateargs() { -# validate the arguments -BAD=0 -if ! [ -d $1 ]; then - echo "Error: first argument is not a directory" >&2 - let BAD=$BAD+1 -fi -NAME=`basename ${2%%-*}` -if [ $NAME != filelist ]; then - echo "Error: second argument is not a recognized filelist" >&2 - let BAD=$BAD+1 -fi -if ! [ -d $3 ]; then - echo "Error: third argument is not a directory" >&2 - let BAD=$BAD+1 -fi -NAME=`basename ${4%%-*}` -if [ $NAME != filelist ]; then - echo "Error: fourth argument is not a recognized filelist" >&2 - let BAD=$BAD+1 -fi -for I in $1 $2 $3 $4; do - if ! [ -r $I ]; then - echo "Error: cannot read $I" >&2 - let BAD=$BAD+1 - fi -done -if [ $1 == $3 ]; then - echo "Error: directory pathes are identical" >&2 - let BAD=$BAD+1 -fi -if [ $2 == $4 ]; then - echo "Error: filelist names are identical" >&2 - let BAD=$BAD+1 -fi -if [ $BAD -eq 0 ]; then - ARGS=valid -fi -} - -# Mainline -ARGS=unproven -OUTDIR= -if [ $# -eq 1 ]; then - case $1 in - -version|--version) - echo "`basename $0` version $VERSION" - exit 0 - ;; - -help|--help) - dohelp - exit 0 - ;; - esac -fi -if [ $1 = "--directory" ]; then - OUTDIR=$2 - shift 2 - grep '/$' $OUTDIR >/dev/null 2>&1 || OUTDIR=`echo $OUTDIR | sed 's%$%/%'` - echo "creating directory $OUTDIR" - mkdir -p $OUTDIR - if [ $? -ne 0 ]; then - echo "cannot mkdir $OUTDIR" - exit 1 - fi -fi -if [ $# -eq 4 ]; then - validateargs $* -fi -if ! [ $ARGS == valid ]; then - dohelp - fatal "`basename $0`: error in arguments" -fi - -# ok, we're happy, lets hit these files -exec 5>${OUTDIR}$RESULT -exec 6>${OUTDIR}$EXTRAS -exec 7>${OUTDIR}$IDENTICAL -exec 8>${OUTDIR}$SUBS -exec 9>${OUTDIR}$DIFFER - ->${OUTDIR}$RESULT -if [ $? -ne 0 ]; then - fatal "cannot write to ${OUTDIR}$RESULT" -fi - -emessage "will compare:" -emessage " first build at $1 with files listed in $2" -emessage "second build at $3 with files listed in $4" - -let accepted=0 -let different=0 -let expected=0 -let matched=0 -let only=0 -let predictable=0 -let unreadable=0 -let total=0 - -# break down the accepted -let ACCAR=0 -let ACCELF=0 -let ACCGZ=0 -let ACCUNK=0 - -# break down definitely different -let DIFAR=0 -let DIFELF=0 -let DIFGZ=0 -let DIFSYM=0 -let DIFUNK=0 - -# break down the expected differences -let EXPAR=0 -let EXPELF=0 -let EXPGZ=0 -let EXPUNK=0 - -# break down the identical files -let MATAR=0 -let MATELF=0 -let MATGZ=0 -let MATSYM=0 -let MATUNK=0 - -# break down how many of each type -let TOTAR=0 -let TOTELF=0 -let TOTGZ=0 -let TOTSYM=0 -let TOTUNK=0 - -# now identify differences between the two trees -DIFF=`mktemp` || fatal "cannot create a temporary file" -diff $2 $4 >$DIFF - -for RUN in '<' '>' ; do - grep -q "$RUN" $DIFF && onlyone "$RUN" -done - -rm $DIFF - -# and compare them -message "Results of file comparison:" -message "" - -# Strip any trailing slash from the path for tidyness, -# because the filenames all start with a slash. Unfortunately, -# unfortunately, '/' becomes empty, which breaks subroutines, -# so special case it. -# also, to process ar archives we need to extract them in temp -# directories - that means that after cd'ing we've broken any -# relative path, so save original pwd as necessary. -P1=`echo $1 | sed 's%/$%%'` -echo $1 | grep '^/' >/dev/null -if [ $? -ne 0 ]; then - # relative path - OP1=${PWD}/ - #echo "setting OP1 to $OP1" -else - OP1= - #echo "$1 is an absolute path" -fi -test -z "$P1" && P1='/' -P2=`echo $3 | sed 's%/$%%'` -echo $3 | grep '^/' >/dev/null -if [ $? -ne 0 ]; then - # relative path - OP2=${PWD}/ - #echo "setting OP2 to $OP2" -else - OP2= - #echo "$3 is an absolute path" -fi -test -z "$P2" && P2='/' - -echo "about to read $2" -while read FILE ; do -#echo "process $FILE" -#echo "test existence of ${P2}${FILE}" - # confirm it exists in second build - # we have already reported files only in one build - if [ -f ${P2}"${FILE}" ]; then - let total=$total+1 - # check we can read both of them - # or count as unreadable - I used to separate only-one-unreadable, - # but if you compre '/' and a _copy_ of /mnt/lfs that assumption - # breaks, so be less picky. - if ! [ -r "${P1}${FILE}" ] || ! [ -r "${P2}${FILE}" ]; then - message "cannot read one or both versions of $FILE" - let unreadable=$unreadable+1 - continue - fi - if [ -h "${P1}${FILE}" ]; then - # for symlink, look at what it points to - # exceptionally, do not call filetype - TYPE=SYM - let TOTSYM=$TOTSYM+1 - SL1=`ls -l "${P1}${FILE}" | awk '{ print $11 }'` - SL2=`ls -l "${P2}${FILE}" | awk '{ print $11 }'` - if [ "$SL1" = "$SL2" ]; then - echo "symlink $FILE matches for $SL1" >&5 - let matched=$matched+1 - let MATSYM=$MATSYM+1 - else - failure TARGET " symlink $FILE points to $SL1 and $SL2" - echo $FILE >&9 - fi - else - # regular file, start by typing it for accounting, - # then compare it - filetype ${P1}${FILE} - cmp -s "${P1}${FILE}" "${P2}${FILE}" - if [ $? -eq 0 ]; then - let matched=$matched+1 - case $TYPE in - AR) - let MATAR=$MATAR+1 - ;; - ELF) - let MATELF=$MATELF+1 - ;; - GZ) - let MATGZ=$MATGZ+1 - ;; - UNK) - let MATUNK=$MATUNK+1 - ;; - *) - echo "unexpected TYPE of $TYPE for $FILE" >&2 - exit 2 - ;; - esac - echo ${FILE} >&7 - else - # seems different, can we do better ? - # test if we expect it to differ - expected $FILE - if [ $? -ne 0 ]; then - case $TYPE in - GZ) - testgzip $P1 $P2 $FILE ;; - AR) - testar $P1 $P2 $FILE ;; - ELF) - testso $P1 $P2 $FILE ;; - *) - # long-stop - strip dates from text files - tokenizeanddiff "${P1}${FILE}" "${P2}${FILE}" "$FILE" - if [ $? -eq 0 ]; then - message "accepted $FILE after processing" - let accepted=$accepted+1 - let ACCUNK=$ACCUNK+1 - else - failure "$FILE" " $FILE is different" - fi - ;; - esac - fi - fi - fi - fi -done < $2 - -message "" -# write totals to stderr as well as the results file -emessage "$only files in only one of the builds" -emessage "$total files compared, of which" -emessage "$unreadable files could not be read, skipped" -emessage "$matched files are identical" -emessage "$expected files differed as expected" -emessage "$accepted files had allowable differences" -#emessage "$predictable files differed as they normally do" -emessage "$different files differed" - -# totals of different file types -emessage "" -emessage "$TOTAR ar archives" -emessage " of which $MATAR are identical" -emessage " of which $ACCAR are accepted after strip-debug or extracting, diffing, tokenizing" -emessage " of which $EXPAR differed as expected" -emessage " of which $DIFAR differed" -emessage "$TOTELF ELF executables or shared libraries" -emessage " of which $MATELF are identical" -emessage " of which $ACCELF are accepted after stripping and tokenizing" -emessage " of which $EXPELF differed as expected" -emessage " of which $DIFELF differed" -emessage "$TOTGZ gzipped files" -emessage " of which $MATGZ are identical" -emessage " of which $ACCGZ are accepted after comparing beyond timestamp" -emessage " of which $DIFGZ are different" -emessage "$TOTSYM symbolic links" -emessage " of which $MATSYM are identical" -emessage " of which $DIFSYM have different targets" -emessage "$TOTUNK other files" -emessage " of which $MATUNK are identical" -emessage " of which $ACCUNK are accepted after tokenizing" -emessage " of which $EXPUNK differed as expected" -emessage " of which $DIFUNK differed" - diff --git a/2.3/extras/filelist b/2.3/extras/filelist deleted file mode 100755 index f9b1b08..0000000 --- a/2.3/extras/filelist +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash -#$Id$ - -# Acknowledgment: -# The following code is a modified version of an original work written by -# Ken Moffat for their "farce" project and is included here with his -# permission. -# - -set -e - -: <$OUTFILE -if [ $? -ne 0 ]; then - echo "error, cannot write to $OUTFILE" - exit 1 -fi - -find $LOC -xdev -xtype f | sed "s%^${LOC}%/%" | sort >$OUTFILE - -echo -e "done.\n" - -exit diff --git a/2.3/jhalfs b/2.3/jhalfs deleted file mode 100755 index b933d8a..0000000 --- a/2.3/jhalfs +++ /dev/null @@ -1,449 +0,0 @@ -#!/bin/bash -# $Id$ -set -e - -# VT100 colors -declare -r BLACK=$'\e[1;30m' -declare -r DK_GRAY=$'\e[0;30m' - -declare -r RED=$'\e[31m' -declare -r GREEN=$'\e[32m' -declare -r YELLOW=$'\e[33m' -declare -r BLUE=$'\e[34m' -declare -r MAGENTA=$'\e[35m' -declare -r CYAN=$'\e[36m' -declare -r WHITE=$'\e[37m' - -declare -r OFF=$'\e[0m' -declare -r BOLD=$'\e[1m' -declare -r REVERSE=$'\e[7m' -declare -r HIDDEN=$'\e[8m' - -declare -r tab_=$'\t' -declare -r nl_=$'\n' - -declare -r DD_BORDER="${BOLD}==============================================================================${OFF}" -declare -r SD_BORDER="${BOLD}------------------------------------------------------------------------------${OFF}" -declare -r STAR_BORDER="${BOLD}******************************************************************************${OFF}" - -# bold yellow > < pair -declare -r R_arrow=$'\e[1;33m>\e[0m' -declare -r L_arrow=$'\e[1;33m<\e[0m' - - -#>>>>>>>>>>>>>>>ERROR TRAPPING >>>>>>>>>>>>>>>>>>>> -#-----------------------# -simple_error() { # Basic error trap.... JUST DIE -#-----------------------# - # If +e then disable text output - if [[ "$-" =~ e ]]; then - echo -e "\n${RED}ERROR:${GREEN} basic error trapped!${OFF}\n" >&2 - fi -} - -see_ya() { - echo -e "\n${L_arrow}${BOLD}jhalfs 2.3${R_arrow} exit${OFF}\n" -} -##### Simple error TRAPS -# ctrl-c SIGINT -# ctrl-y -# ctrl-z SIGTSTP -# SIGHUP 1 HANGUP -# SIGINT 2 INTRERRUPT FROM KEYBOARD Ctrl-C -# SIGQUIT 3 -# SIGKILL 9 KILL -# SIGTERM 15 TERMINATION -# SIGSTOP 17,18,23 STOP THE PROCESS -##### -set -e -trap see_ya 0 -trap simple_error ERR -trap 'echo -e "\n\n${RED}INTERRUPT${OFF} trapped\n" && exit 2' 1 2 3 15 17 18 23 -#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - -version=" -${BOLD} \"jhalfs 2.3\"${OFF} builder tool (stable) \$Rev$ - \$Date$ - - Written by George Boudreau and Manuel Canales Esparcia, - plus several contributions. - - Based on an idea from Jeremy Huntwork - - This set of files are published under the - ${BOLD}Gnu General Public License, Version 2.${OFF} -" - -case $1 in - -v ) echo "$version" && exit 1 ;; - run ) : ;; - * ) - echo "${nl_}${tab_}${BOLD}${RED}This script cannot be called directly: EXITING ${OFF}${nl_}" - exit 1 - ;; -esac - -VERBOSITY=1 - -[[ $VERBOSITY > 0 ]] && echo -n "Loading config params from ..." -source configuration -[[ $? > 0 ]] && echo "file:configuration did not load.." && exit 1 -[[ $VERBOSITY > 0 ]] && echo "OK" - -# These are boolean vars generated from Config.in. -# ISSUE: If a boolean parameter is not set that -# variable is not defined by the menu app. This can -# cause a headache if you are not careful. -# The following parameters MUST be created and have a -# default value. -RUNMAKE=${RUNMAKE:-n} -GETPKG=${GETPKG:-n} -GETKERNEL=${GETKERNEL:-n} -COMPARE=${COMPARE:-n} -RUN_FARCE=${RUN_FARCE:-n} -RUN_ICA=${RUN_ICA:-n} -BOMB_TEST=${BOMB_TEST:-n} -STRIP=${STRIP:=n} -REPORT=${REPORT:=n} -VIMLANG=${VIMLANG:-n} -GRSECURITY_HOST=${GRSECURITY_HOST:-n} -CUSTOM_TOOLS=${CUSTOM_TOOLS:-n} -REBUILD_MAKEFILE=${REBUILD_MAKEFILE:-n} -INSTALL_LOG=${INSTALL_LOG:-n} -CLEAN=${CLEAN:=n} -SET_SSP=${SET_SSP:=n} -SET_ASLR=${SET_ASLR:=n} -SET_PAX=${SET_PAX:=n} -SET_HARDENED_TMP=${SET_HARDENED_TMP:=n} -SET_WARNINGS=${SET_WARNINGS:=n} -SET_MISC=${SET_MISC:=n} -SET_BLOWFISH=${SET_BLOWFISH:=n} - -# Book surces envars -BRANCH_ID=${BRANCH_ID:=development} - -case $BRANCH_ID in - development ) - case $PROGNAME in - clfs2 ) TREE=branches/clfs-sysroot/BOOK ;; - clfs3 ) TREE=branches/clfs-embedded/BOOK ;; - *) TREE=trunk/BOOK ;; - esac - LFSVRS=development - ;; - *EDIT* ) echo " You forgot to set the branch or stable book version." - echo " Please rerun make and fix the configuration." - exit 2 ;; - branch-* ) - LFSVRS=${BRANCH_ID} - TREE=branches/${BRANCH_ID#branch-}/BOOK - ;; - * ) - case $PROGNAME in - lfs | hlfs ) - LFSVRS=${BRANCH_ID} - TREE=tags/${BRANCH_ID}/BOOK - ;; - clfs | clfs2 | clfs3) - LFSVRS=${BRANCH_ID} - TREE=tags/${BRANCH_ID} - ;; - esac - ;; -esac - -# Set the document location... -BOOK=${BOOK:=$PROGNAME-$LFSVRS} - -# blfs-tool envars -BLFS_TOOL=${BLFS_TOOL:-n} -if [[ "${BLFS_TOOL}" = "y" ]] ; then - BLFS_BRANCH_ID=${BLFS_BRANCH_ID:=development} - case $BLFS_BRANCH_ID in - development ) BLFS_TREE=trunk/BOOK ;; - *EDIT* ) echo " You forgot to set the BLFS branch or stable book version." - echo " Please rerun make and fix the configuration." - exit 2 ;; - branch-* ) BLFS_TREE=branches/${BLFS_BRANCH_ID#branch-} ;; - * ) BLFS_TREE=tags/${BLFS_BRANCH_ID} ;; - esac - # Dependencies envars, to can update it more easy. - # Tidy and Unzip version are harcoded also in wrt_blfs_tool_targets() - # libxml2 - LIBXML_PKG="libxml2-2.6.29.tar.gz" - LIBXML_URL="ftp://xmlsoft.org/libxml2/${LIBXML_PKG}" - LIBXML_MD5="8b99b6e8b08e838438d9e6b639d79ebd" - # libxslt - LIBXSLT_PKG="libxslt-1.1.21.tar.gz" - LIBXSLT_URL="ftp://xmlsoft.org/libxslt/${LIBXSLT_PKG}" - LIBXSLT_MD5="59fe34e85692f71df2a38c2ee291b3ca" - # tidy - TIDY_PKG="tidy-cvs_20070326.tar.bz2" - TIDY_URL="http://anduin.linuxfromscratch.org/files/BLFS/sources/${TIDY_PKG}" - TIDY_MD5="468bfaa5cf917a8ecbe7834c13a61376" - # unzip - UNZIP_PKG="unzip552.tar.gz" - UNZIP_URL="http://downloads.sourceforge.net/infozip/${UNZIP_PKG}" - UNZIP_MD5="9d23919999d6eac9217d1f41472034a9" - # unzip security patch - UNZIP_PATCH="unzip-5.52-security_fix-1.patch" - UNZIP_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${UNZIP_PATCH}" - UNZIP_PATCH_MD5="00ebf64fdda2ad54ddfc619f85f328bb" - # DocBook XML DTD - DBXML_PKG="docbook-xml-4.5.zip" - DBXML_URL="http://www.docbook.org/xml/4.5/${DBXML_PKG}" - DBXML_MD5="03083e288e87a7e829e437358da7ef9e" - # DocBook XSL -# DBXSL_PKG="docbook-xsl-1.69.1.tar.bz2" -# DBXSL_URL="http://prdownloads.sourceforge.net/docbook/${DBXSL_PKG}" -# DBXSL_MD5="6ebd29a67f2dcc3f2220f475ee6f6552" - # Links - LINKS_PKG="links-2.1pre23.tar.bz2" - LINKS_URL="http://links.twibright.com/download/${LINKS_PKG}" - LINKS_MD5="4a1fb575c133eee821b9a1f8e9220b40" - # sudo - SUDO_PKG="sudo-1.6.8p12.tar.gz" - SUDO_URL="http://anduin.linuxfromscratch.org/sources/BLFS/svn/s/${SUDO_PKG}" - SUDO_MD5="b29893c06192df6230dd5f340f3badf5" - # sudo envar fix patch - SUDO_PATCH="sudo-1.6.8p12-envvar_fix-1.patch" - SUDO_PATCH_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${SUDO_PATCH}" - SUDO_PATCH_MD5="454925aedfe054dff8fe0d03b209f986" - # wget - WGET_PKG="wget-1.10.2.tar.gz" - WGET_URL="ftp://ftp.gnu.org/gnu/wget/${WGET_PKG}" - WGET_MD5="795fefbb7099f93e2d346b026785c4b8" - # Subversion - SVN_PKG="subversion-1.3.1.tar.bz2" - SVN_URL="http://subversion.tigris.org/tarballs/${SVN_PKG}" - SVN_MD5="07b95963968ae345541ca99d0e7bf082" - # GPM - GPM_PKG="gpm-1.20.1.tar.bz2" - GPM_URL="ftp://ftp.linux.ee/pub/gentoo/distfiles/distfiles/${GPM_PKG}" - GPM_MD5="2c63e827d755527950d9d13fe3d87692" - # GPM segfaul patch - GPM_PATCH_1="gpm-1.20.1-segfault-1.patch" - GPM_PATCH_1_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_1}" - GPM_PATCH_1_MD5="8c88f92990ba7613014fcd1db14ca7ac" - # GPM silent patch - GPM_PATCH_2="gpm-1.20.1-silent-1.patch" - GPM_PATCH_2_URL="http://www.linuxfromscratch.org/patches/blfs/svn/${GPM_PATCH_2}" - GPM_PATCH_2_MD5="bf6cbefe20c6f15b587f19ebc1c8a37a" -fi - -#--- Envars not sourced from configuration -case $PROGNAME in - clfs* ) declare -r SVN="http://svn.cross-lfs.org/svn/repos" ;; - * ) declare -r SVN="svn://svn.linuxfromscratch.org" ;; -esac -declare -r LOG=000-masterscript.log - # Needed to can fetch BLFS book sources when building CLFS -declare -r SVN_2="svn://svn.linuxfromscratch.org" - -# Set true internal variables -COMMON_DIR="common" -PACKAGE_DIR=$(echo $PROGNAME | tr '[a-z]' '[A-Z]') -MODULE=$PACKAGE_DIR/master.sh - -[[ $VERBOSITY > 0 ]] && echo -n "Loading common-functions module..." -source $COMMON_DIR/common-functions -[[ $? > 0 ]] && echo " $COMMON_DIR/common-functions did not load.." && exit -[[ $VERBOSITY > 0 ]] && echo "OK" -[[ $VERBOSITY > 0 ]] && echo -n "Loading code module <$MODULE>..." -source $MODULE -[[ $? > 0 ]] && echo "$MODULE did not load.." && exit 2 -[[ $VERBOSITY > 0 ]] && echo "OK" -# -[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}" - - -#*******************************************************************# -[[ $VERBOSITY > 0 ]] && echo -n "Loading function ..." -source $COMMON_DIR/libs/func_check_version.sh -[[ $? > 0 ]] && echo " function module did not load.." && exit 2 -[[ $VERBOSITY > 0 ]] && echo "OK" - -[[ $VERBOSITY > 0 ]] && echo -n "Loading function ..." -source $COMMON_DIR/libs/func_validate_configs.sh -[[ $? > 0 ]] && echo " function module did not load.." && exit 2 -[[ $VERBOSITY > 0 ]] && echo "OK" - -[[ $VERBOSITY > 0 ]] && echo -n "Loading function ..." -source $COMMON_DIR/libs/func_custom_pkgs -[[ $? > 0 ]] && echo " function module did not load.." && exit 2 -[[ $VERBOSITY > 0 ]] && echo "OK" - - -[[ $VERBOSITY > 0 ]] && echo "${SD_BORDER}${nl_}" - - -################################### -### MAIN ### -################################### - -# Check for build prereequisites. -echo - check_prerequisites -echo "${SD_BORDER}${nl_}" - -validate_config -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 to fix the configuration options.${nl_}" - exit 1 -fi -echo "${nl_}${SD_BORDER}${nl_}" - -# Load additional modules or configuration files based on global settings -# compare module -if [[ "$COMPARE" = "y" ]]; then - [[ $VERBOSITY > 0 ]] && echo -n "Loading compare module..." - source $COMMON_DIR/libs/func_compare.sh - [[ $? > 0 ]] && echo "$COMMON_DIR/libs/func_compare.sh did not load.." && exit - [[ $VERBOSITY > 0 ]] && echo "OK" -fi -# -# optimize module -if [[ "$OPTIMIZE" != "0" ]]; then - [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization module..." - source optimize/optimize_functions - [[ $? > 0 ]] && echo " optimize/optimize_functions did not load.." && exit - [[ $VERBOSITY > 0 ]] && echo "OK" - # - # optimize configurations - [[ $VERBOSITY > 0 ]] && echo -n "Loading optimization config..." - source optimize/opt_config - [[ $? > 0 ]] && echo " optimize/opt_config did not load.." && exit - [[ $VERBOSITY > 0 ]] && echo "OK" - # Validate optimize settings, if required - validate_opt_settings -fi -# - -if [[ "$REBUILD_MAKEFILE" = "n" ]] ; then - - # If $BUILDDIR has subdirectories like tools/ or bin/, stop the run - # and notify the user about that. - if [ -d $BUILDDIR/tools -o -d $BUILDDIR/bin ] && [ -z $CLEAN ] ; then - eval "$no_empty_builddir" - fi - - # If requested, clean the build directory - clean_builddir - - if [[ ! -d $JHALFSDIR ]]; then - mkdir -p $JHALFSDIR - fi - - # Create $BUILDDIR/sources even though it could be created by get_sources() - if [[ ! -d $BUILDDIR/sources ]]; then - mkdir -p $BUILDDIR/sources - fi - # - # Create the log directory - if [[ ! -d $LOGDIR ]]; then - mkdir $LOGDIR - fi - >$LOGDIR/$LOG - # - # Copy common helper files - cp $COMMON_DIR/{makefile-functions,progress_bar.sh,packages.xsl} $JHALFSDIR/ - # - # Fix the XSL book parser - sed 's,FAKEDIR,'$BOOK',' $PACKAGE_DIR/$XSL > $JHALFSDIR/${XSL} - export XSL=$JHALFSDIR/${XSL} - # - - # Copy urls.xsl, if needed - [[ "$GETPKG" = "y" ]] && cp $COMMON_DIR/urls.xsl $JHALFSDIR/ - # - # Create the test-log directory, if needed - [[ "$TEST" != "0" ]] && [[ ! -d $TESTLOGDIR ]] && install -d -m 1777 $TESTLOGDIR - # - # Create the installed-files directory, if needed - [[ "$INSTALL_LOG" = "y" ]] && [[ ! -d $FILELOGDIR ]] && install -d -m 1777 $FILELOGDIR - # - # Prepare report creation, if needed - if [[ "$REPORT" = "y" ]]; then - cp $COMMON_DIR/create-sbu_du-report.sh $JHALFSDIR/ - # After being sure that all looks sane, dump the settings to a file - # This file will be used to create the REPORT header - validate_config > $JHALFSDIR/jhalfs.config - fi - # - # Copy optimize files, if needed - [[ "$OPTIMIZE" != "0" ]] && cp optimize/opt_override $JHALFSDIR/ - # - # Copy compare files, if needed - if [[ "$COMPARE" = "y" ]]; then - mkdir -p $JHALFSDIR/extras - cp extras/* $JHALFSDIR/extras - fi - # - - # Copy custom tools config files, if requested - if [[ "${CUSTOM_TOOLS}" = "y" ]]; then - echo "Copying custom tool scripts to $JHALFSDIR" - mkdir -p $JHALFSDIR/custom-commands - cp -f custom/config/* $JHALFSDIR/custom-commands - fi - # - # Install blfs-tool, if requested. - if [[ "${BLFS_TOOL}" = "y" ]] ; then - # Install the files - [[ ! -d ${BUILDDIR}${BLFS_ROOT} ]] && mkdir -p ${BUILDDIR}${BLFS_ROOT} - cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT} - cp -r menu ${BUILDDIR}${BLFS_ROOT} - cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT} - chmod 777 ${BUILDDIR}${BLFS_ROOT}/progress_bar.sh - cp README.BLFS ${BUILDDIR}${BLFS_ROOT} - # Clean-up - rm -rf ${BUILDDIR}${BLFS_ROOT}/libs/.svn - rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/.svn - rm -rf ${BUILDDIR}${BLFS_ROOT}/menu/lxdialog/.svn - # Set some harcoded envars to their proper values - sed -i 's,blfs-xml,'$BLFS_XML',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,libs/book.xsl} - sed -i 's,tracking-dir,'$TRACKING_DIR',' ${BUILDDIR}${BLFS_ROOT}/{update_book.sh,gen-makefile.sh} - # Copy the dependencies build scripts - cp -r $COMMON_DIR/blfs-tool-deps $JHALFSDIR/ - rm -rf $JHALFSDIR/blfs-tool-deps/.svn - fi - # - - get_book - echo "${SD_BORDER}${nl_}" - - # Get the BLFS book, if requested. - if [[ "${BLFS_TOOL}" = "y" ]] ; then - echo -n "Downloading the BLFS document, $BLFS_BRANCH_ID version... " - if [[ ! -d ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} ]] ; then - mkdir -p ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} - svn co $SVN_2/BLFS/$BLFS_TREE ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} >>$LOGDIR/$LOG 2>&1 - else - pushd ${BUILDDIR}${BLFS_ROOT}/${BLFS_XML} 1> /dev/null - svn up >>$LOGDIR/$LOG 2>&1 - popd 1> /dev/null - fi - echo -ne "done\n" - echo "${SD_BORDER}${nl_}" - fi - -fi - -# When regeneration the Makefile we need to know also the canonical book version -if [[ "$REBUILD_MAKEFILE" = "y" ]] ; then - case $PROGNAME in - clfs | clfs2 | clfs3 ) - VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/$ARCH/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;; - *) - VERSION=$(xmllint --noent $JHALFSDIR/$BOOK/prologue/bookinfo.xml 2>/dev/null | grep subtitle | sed -e 's/^.*ion //' -e 's/<\/.*//') ;; - esac -fi - -build_Makefile - -echo "${SD_BORDER}${nl_}" - -run_make diff --git a/2.3/menu/BusyBox-1.1.3-menu.patch b/2.3/menu/BusyBox-1.1.3-menu.patch deleted file mode 100644 index 6a4be25..0000000 --- a/2.3/menu/BusyBox-1.1.3-menu.patch +++ /dev/null @@ -1,507 +0,0 @@ -diff -Npr menu-bb/conf.c menu/conf.c -*** menu-bb/conf.c 2006-03-22 16:16:18.000000000 -0500 ---- menu/conf.c 2006-07-26 17:26:45.000000000 -0400 -*************** int main(int ac, char **av) -*** 535,554 **** - conf_parse(name); - //zconfdump(stdout); - switch (input_mode) { -- case set_default: -- if (!defconfig_file) -- defconfig_file = conf_get_default_confname(); -- if (conf_read(defconfig_file)) { -- printf("***\n" -- "*** Can't find default configuration \"%s\"!\n" -- "***\n", defconfig_file); -- exit(1); -- } -- break; - case ask_silent: - if (stat(".config", &tmpstat)) { - printf("***\n" -! "*** You have not yet configured BusyBox!\n" - "***\n" - "*** Please run some configurator (e.g. \"make oldconfig\" or\n" - "*** \"make menuconfig\" or \"make config\").\n" ---- 535,544 ---- - conf_parse(name); - //zconfdump(stdout); - switch (input_mode) { - case ask_silent: - if (stat(".config", &tmpstat)) { - printf("***\n" -! "*** You have not yet configured JHALFS!\n" - "***\n" - "*** Please run some configurator (e.g. \"make oldconfig\" or\n" - "*** \"make menuconfig\" or \"make config\").\n" -*************** int main(int ac, char **av) -*** 576,582 **** - check_conf(&rootmenu); - } while (conf_cnt); - if (conf_write(NULL)) { -! fprintf(stderr, "\n*** Error during writing of the BusyBox configuration.\n\n"); - return 1; - } - return 0; ---- 566,572 ---- - check_conf(&rootmenu); - } while (conf_cnt); - if (conf_write(NULL)) { -! fprintf(stderr, "\n*** Error during writing of the JHALFS configuration.\n\n"); - return 1; - } - return 0; -diff -Npr menu-bb/confdata.c menu/confdata.c -*** menu-bb/confdata.c 2006-03-22 16:16:18.000000000 -0500 ---- menu/confdata.c 2006-07-26 17:26:45.000000000 -0400 -*************** -*** 13,24 **** - #define LKC_DIRECT_LINK - #include "lkc.h" - -! const char conf_def_filename[] = ".config"; - - const char conf_defname[] = "defconfig"; - - const char *conf_confnames[] = { -! ".config", - conf_defname, - NULL, - }; ---- 13,24 ---- - #define LKC_DIRECT_LINK - #include "lkc.h" - -! const char conf_def_filename[] = "configuration"; - - const char conf_defname[] = "defconfig"; - - const char *conf_confnames[] = { -! "configuration", - conf_defname, - NULL, - }; -*************** static char *conf_expand_value(const cha -*** 49,70 **** - return res_value; - } - -- char *conf_get_default_confname(void) -- { -- struct stat buf; -- static char fullname[PATH_MAX+1]; -- char *env, *name; -- -- name = conf_expand_value(conf_defname); -- env = getenv(SRCTREE); -- if (env) { -- sprintf(fullname, "%s/%s", env, name); -- if (!stat(fullname, &buf)) -- return fullname; -- } -- return name; -- } -- - int conf_read(const char *name) - { - FILE *in = NULL; ---- 49,54 ---- -*************** struct menu *next_menu(struct menu *menu -*** 271,277 **** - - int conf_write(const char *name) - { -! FILE *out, *out_h; - struct symbol *sym; - struct menu *menu; - const char *basename; ---- 255,261 ---- - - int conf_write(const char *name) - { -! FILE *out; - struct symbol *sym; - struct menu *menu; - const char *basename; -*************** int conf_write(const char *name) -*** 279,288 **** - int type, l; - const char *str; - -- /* busybox`s code */ -- const char *opt_name; -- int use_flg; -- - dirname[0] = 0; - if (name && name[0]) { - struct stat st; ---- 263,268 ---- -*************** int conf_write(const char *name) -*** 309,342 **** - out = fopen(newname, "w"); - if (!out) - return 1; -- out_h = NULL; -- if (!name) { -- out_h = fopen(".tmpconfig.h", "w"); -- if (!out_h) -- return 1; -- } - fprintf(out, "#\n" -! "# Automatically generated make config: don't edit\n" - "#\n"); - -- /* busybox`s code */ -- if (out_h) { -- fprintf(out_h, "#ifndef BB_CONFIG_H\n#define BB_CONFIG_H\n"); -- fprintf(out_h, "/*\n" -- " * Automatically generated header file: don't edit\n" -- " */\n\n" -- "/* Version Number */\n" -- "#define BB_VER \"%s\"\n" -- "#define BB_BT \"%s\"\n", -- getenv("VERSION"), -- getenv("BUILDTIME")); -- if (getenv("EXTRA_VERSION")) -- fprintf(out_h, "#define BB_EXTRA_VERSION \"%s\"\n", -- getenv("EXTRA_VERSION")); -- fprintf(out_h, "\n"); -- } -- /* end busybox`s code */ -- - if (!sym_change_count) - sym_clear_all_valid(); - ---- 289,299 ---- - out = fopen(newname, "w"); - if (!out) - return 1; - fprintf(out, "#\n" -! "# Automatically generated configuration: don't edit\n" -! "# use make menuconfig or make config to make changes\n" - "#\n"); - - if (!sym_change_count) - sym_clear_all_valid(); - -*************** int conf_write(const char *name) -*** 357,367 **** - "#\n" - "# %s\n" - "#\n", str); -- if (out_h) -- fprintf(out_h, "\n" -- "/*\n" -- " * %s\n" -- " */\n", str); - } else if (!(sym->flags & SYMBOL_CHOICE)) { - sym_calc_value(sym); - if (!(sym->flags & SYMBOL_FORCEWRITE)) ---- 314,319 ---- -*************** int conf_write(const char *name) -*** 375,388 **** - type = S_BOOLEAN; - } - -- /* busybox`s code */ -- opt_name = strchr(sym->name, '_'); -- if(opt_name == NULL) -- opt_name = sym->name; -- else -- opt_name++; -- use_flg = 1; -- /* end busybox`s code */ - - switch (type) { - case S_BOOLEAN: ---- 327,332 ---- -*************** int conf_write(const char *name) -*** 390,410 **** - switch (sym_get_tristate_value(sym)) { - case no: - fprintf(out, "# %s is not set\n", sym->name); -- if (out_h) -- fprintf(out_h, "#undef %s\n", sym->name); -- use_flg = 0; /* busybox`s code */ - break; - case mod: -- #if 0 /* busybox`s code */ - fprintf(out, "%s=m\n", sym->name); -- if (out_h) -- fprintf(out_h, "#define %s_MODULE 1\n", sym->name); -- #endif /* busybox`s code */ - break; - case yes: - fprintf(out, "%s=y\n", sym->name); -- if (out_h) -- fprintf(out_h, "#define %s 1\n", sym->name); - break; - } - break; ---- 334,345 ---- -*************** int conf_write(const char *name) -*** 412,473 **** - // fix me - str = sym_get_string_value(sym); - fprintf(out, "%s=\"", sym->name); -- if (out_h) -- fprintf(out_h, "#define %s \"", sym->name); - do { - l = strcspn(str, "\"\\"); - if (l) { - fwrite(str, l, 1, out); -- if (out_h) -- fwrite(str, l, 1, out_h); - } - str += l; - while (*str == '\\' || *str == '"') { - fprintf(out, "\\%c", *str); -- if (out_h) -- fprintf(out_h, "\\%c", *str); - str++; - } - } while (*str); - fputs("\"\n", out); -- if (out_h) -- fputs("\"\n", out_h); - break; - case S_HEX: - str = sym_get_string_value(sym); - if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) { - fprintf(out, "%s=%s\n", sym->name, *str ? str : "0"); -- if (out_h) -- fprintf(out_h, "#define %s 0x%s\n", sym->name, str); - break; - } - case S_INT: - str = sym_get_string_value(sym); - fprintf(out, "%s=%s\n", sym->name, *str ? str : "0"); -- if (out_h) -- fprintf(out_h, "#define %s %s\n", sym->name, str); - break; - } -- /* busybox`s code */ -- if (out_h) { -- fprintf(out_h, "#define ENABLE_%s %d\n", opt_name, use_flg); -- fprintf(out_h, "#define USE_%s(...)%s\n", opt_name, -- (use_flg ? " __VA_ARGS__" : "")); -- fprintf(out_h, "#define SKIP_%s(...)%s\n\n", opt_name, -- (use_flg ? "" : " __VA_ARGS__")); -- } -- /* end busybox`s code */ - } - next: - menu = next_menu(menu); - } - fclose(out); -- if (out_h) { -- fprintf(out_h, "#endif /* BB_CONFIG_H */\n"); /* busybox`s code */ -- fclose(out_h); -- rename(".tmpconfig.h", "include/bb_config.h"); /* busybox`s config name */ -- file_write_dep(NULL); -- } - if (!name || basename != conf_def_filename) { - if (!name) - name = conf_def_filename; ---- 347,381 ---- -diff -Npr menu-bb/Makefile menu/Makefile -*** menu-bb/Makefile 2006-03-22 16:16:18.000000000 -0500 ---- menu/Makefile 2006-07-26 18:06:25.000000000 -0400 -*************** -*** 1,11 **** - # Makefile for BusyBox - # - # Copyright (C) 2002 Erik Andersen - -- top_srcdir=../.. -- top_builddir=../.. -- srcdir=$(top_srcdir)/scripts/config -- include $(top_srcdir)/Rules.mak - - all: ncurses conf mconf - ---- 1,30 ---- - # Makefile for BusyBox - # - # Copyright (C) 2002 Erik Andersen -+ # Modified by George Boudreau georgeb@LinuxFromScratch.org -+ -+ top_srcdir=. -+ top_builddir=. -+ srcdir=$(top_srcdir) -+ -+ # Select the compiler needed to build binaries for your development system -+ HOSTCC = gcc -+ HOSTCFLAGS= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -+ -+ # Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc. -+ LC_ALL:= C -+ -+ SED ?= sed -+ SECHO := @-false -+ DISP := pur -+ Q := @ -+ -+ show_objs = $(subst $(top_builddir)/,,$(subst ../,,$@)) -+ pur_disp_compile.h = echo " "HOSTCC $(show_objs) -+ disp_compile.h = $($(DISP)_disp_compile.h) -+ cmd_compile.h = $(HOSTCC) $(HOSTCFLAGS) -c -o $@ $< -+ compile.h = @$(disp_compile.h) ; $(cmd_compile.h) - - - all: ncurses conf mconf - -diff -Npr menu-bb/mconf.c menu/mconf.c -*** menu-bb/mconf.c 2006-03-22 16:16:18.000000000 -0500 ---- menu/mconf.c 2006-07-26 17:26:45.000000000 -0400 -*************** static char menu_backtitle[128]; -*** 32,38 **** - static const char mconf_readme[] = - "Overview\n" - "--------\n" -! "Some features may be built directly into BusyBox. Some features\n" - "may be completely removed altogether. There are also certain\n" - "parameters which are not really features, but must be\n" - "entered in as decimal or hexadecimal numbers or possibly text.\n" ---- 32,38 ---- - static const char mconf_readme[] = - "Overview\n" - "--------\n" -! "Some features may be built directly into JHALFS. Some features\n" - "may be completely removed altogether. There are also certain\n" - "parameters which are not really features, but must be\n" - "entered in as decimal or hexadecimal numbers or possibly text.\n" -*************** load_config_text[] = -*** 194,204 **** - "last retrieved. Leave blank to abort.", - load_config_help[] = - "\n" -! "For various reasons, one may wish to keep several different BusyBox\n" - "configurations available on a single machine.\n" - "\n" - "If you have saved a previous configuration in a file other than the\n" -! "BusyBox's default, entering the name of the file here will allow you\n" - "to modify that configuration.\n" - "\n" - "If you are uncertain, then you have probably never used alternate\n" ---- 194,204 ---- - "last retrieved. Leave blank to abort.", - load_config_help[] = - "\n" -! "For various reasons, one may wish to keep several different JHALFS\n" - "configurations available on a single machine.\n" - "\n" - "If you have saved a previous configuration in a file other than the\n" -! "JHALFS's default, entering the name of the file here will allow you\n" - "to modify that configuration.\n" - "\n" - "If you are uncertain, then you have probably never used alternate\n" -*************** save_config_text[] = -*** 208,214 **** - "as an alternate. Leave blank to abort.", - save_config_help[] = - "\n" -! "For various reasons, one may wish to keep different BusyBox\n" - "configurations available on a single machine.\n" - "\n" - "Entering a file name here will allow you to later retrieve, modify\n" ---- 208,214 ---- - "as an alternate. Leave blank to abort.", - save_config_help[] = - "\n" -! "For various reasons, one may wish to keep different JHALFS\n" - "configurations available on a single machine.\n" - "\n" - "Entering a file name here will allow you to later retrieve, modify\n" -*************** int main(int ac, char **av) -*** 940,946 **** - - sym = sym_lookup("VERSION", 0); - sym_calc_value(sym); -! snprintf(menu_backtitle, 128, "BusyBox v%s Configuration", - sym_get_string_value(sym)); - - mode = getenv("MENUCONFIG_MODE"); ---- 940,946 ---- - - sym = sym_lookup("VERSION", 0); - sym_calc_value(sym); -! snprintf(menu_backtitle, 128, "JHALFS v%s Configuration", - sym_get_string_value(sym)); - - mode = getenv("MENUCONFIG_MODE"); -*************** int main(int ac, char **av) -*** 961,976 **** - init_dialog(); - do { - stat = dialog_yesno(NULL, -! "Do you wish to save your new BusyBox configuration?", 5, 60); - } while (stat < 0); - end_dialog(); - - if (stat == 0) { - conf_write(NULL); - printf("\n" -! "*** End of BusyBox configuration.\n"); - } else -! printf("\n\nYour BusyBox configuration changes were NOT saved.\n\n"); - - return 0; - } ---- 961,976 ---- - init_dialog(); - do { - stat = dialog_yesno(NULL, -! "Do you wish to save your new JHALFS configuration?", 5, 60); - } while (stat < 0); - end_dialog(); - - if (stat == 0) { - conf_write(NULL); - printf("\n" -! "*** End of JHALFS configuration.\n"); - } else -! printf("\n\nYour JHALFS configuration changes were NOT saved.\n\n"); - - return 0; - } -diff -Npr menu-bb/zconf.tab.c_shipped menu/zconf.tab.c_shipped -*** menu-bb/zconf.tab.c_shipped 2006-03-22 16:16:18.000000000 -0500 ---- menu/zconf.tab.c_shipped 2006-07-26 17:26:45.000000000 -0400 -*************** void conf_parse(const char *name) -*** 1925,1931 **** - sym_init(); - menu_init(); - modules_sym = sym_lookup("MODULES", 0); -! rootmenu.prompt = menu_add_prop(P_MENU, "BusyBox Configuration", NULL, NULL); - - //zconfdebug = 1; - zconfparse(); ---- 1925,1931 ---- - sym_init(); - menu_init(); - modules_sym = sym_lookup("MODULES", 0); -! rootmenu.prompt = menu_add_prop(P_MENU, "JHALFS Configuration", NULL, NULL); - - //zconfdebug = 1; - zconfparse(); -diff -Npr menu-bb/zconf.y menu/zconf.y -*** menu-bb/zconf.y 2006-03-22 16:16:18.000000000 -0500 ---- menu/zconf.y 2006-07-26 17:26:45.000000000 -0400 -*************** void conf_parse(const char *name) -*** 487,493 **** - sym_init(); - menu_init(); - modules_sym = sym_lookup("MODULES", 0); -! rootmenu.prompt = menu_add_prop(P_MENU, "BusyBox Configuration", NULL, NULL); - - //zconfdebug = 1; - zconfparse(); ---- 487,493 ---- - sym_init(); - menu_init(); - modules_sym = sym_lookup("MODULES", 0); -! rootmenu.prompt = menu_add_prop(P_MENU, "JHALFS Configuration", NULL, NULL); - - //zconfdebug = 1; - zconfparse(); diff --git a/2.3/menu/Kconfig-language.txt b/2.3/menu/Kconfig-language.txt deleted file mode 100644 index 493749b..0000000 --- a/2.3/menu/Kconfig-language.txt +++ /dev/null @@ -1,255 +0,0 @@ -Introduction ------------- - -The configuration database is collection of configuration options -organized in a tree structure: - - +- Code maturity level options - | +- Prompt for development and/or incomplete code/drivers - +- General setup - | +- Networking support - | +- System V IPC - | +- BSD Process Accounting - | +- Sysctl support - +- Loadable module support - | +- Enable loadable module support - | +- Set version information on all module symbols - | +- Kernel module loader - +- ... - -Every entry has its own dependencies. These dependencies are used -to determine the visible of an entry. Any child entry is only -visible if its parent entry is also visible. - -Menu entries ------------- - -Most entries define a config option, all other entries help to organize -them. A single configuration option is defined like this: - -config MODVERSIONS - bool "Set version information on all module symbols" - depends MODULES - help - Usually, modules have to be recompiled whenever you switch to a new - kernel. ... - -Every line starts with a key word and can be followed by multiple -arguments. "config" starts a new config entry. The following lines -define attributes for this config option. Attributes can be the type of -the config option, input prompt, dependencies, help text and default -values. A config option can be defined multiple times with the same -name, but every definition can have only a single input prompt and the -type must not conflict. - -Menu attributes ---------------- - -A menu entry can have a number of attributes. Not all of them are -applicable everywhere (see syntax). - -- type definition: "bool"/"tristate"/"string"/"hex"/"integer" - Every config option must have a type. There are only two basic types: - tristate and string, the other types base on these two. The type - definition optionally accepts an input prompt, so these two examples - are equivalent: - - bool "Networking support" - and - bool - prompt "Networking support" - -- input prompt: "prompt" ["if" ] - Every menu entry can have at most one prompt, which is used to display - to the user. Optionally dependencies only for this prompt can be added - with "if". - -- default value: "default" ["if" ] - A config option can have any number of default values. If multiple - default values are visible, only the first defined one is active. - Default values are not limited to the menu entry, where they are - defined, this means the default can be defined somewhere else or be - overriden by an earlier definition. - The default value is only assigned to the config symbol if no other - value was set by the user (via the input prompt above). If an input - prompt is visible the default value is presented to the user and can - be overridden by him. - Optionally dependencies only for this default value can be added with - "if". - -- dependencies: "depends on"/"requires" - This defines a dependency for this menu entry. If multiple - dependencies are defined they are connected with '&&'. Dependencies - are applied to all other options within this menu entry (which also - accept "if" expression), so these two examples are equivalent: - - bool "foo" if BAR - default y if BAR - and - depends on BAR - bool "foo" - default y - -- help text: "help" - This defines a help text. The end of the help text is determined by - the level indentation, this means it ends at the first line which has - a smaller indentation than the first line of the help text. - - -Menu dependencies ------------------ - -Dependencies define the visibility of a menu entry and can also reduce -the input range of tristate symbols. The tristate logic used in the -expressions uses one more state than normal boolean logic to express the -module state. Dependency expressions have the following syntax: - - ::= (1) - '=' (2) - '!=' (3) - '(' ')' (4) - '!' (5) - '||' (6) - '&&' (7) - -Expressions are listed in decreasing order of precedence. - -(1) Convert the symbol into an expression. Boolean and tristate symbols - are simply converted into the respective expression values. All - other symbol types result in 'n'. -(2) If the values of both symbols are equal, it returns 'y', - otherwise 'n'. -(3) If the values of both symbols are equal, it returns 'n', - otherwise 'y'. -(4) Returns the value of the expression. Used to override precedence. -(5) Returns the result of (2-/expr/). -(6) Returns the result of min(/expr/, /expr/). -(7) Returns the result of max(/expr/, /expr/). - -An expression can have a value of 'n', 'm' or 'y' (or 0, 1, 2 -respectively for calculations). A menu entry becomes visible when it's -expression evaluates to 'm' or 'y'. - -There are two type of symbols: constant and nonconstant symbols. -Nonconstant symbols are the most common ones and are defined with the -'config' statement. Nonconstant symbols consist entirely of alphanumeric -characters or underscores. -Constant symbols are only part of expressions. Constant symbols are -always surrounded by single or double quotes. Within the quote any -other character is allowed and the quotes can be escaped using '\'. - -Menu structure --------------- - -The position of a menu entry in the tree is determined in two ways. First -it can be specified explicitely: - -menu "Network device support" - depends NET - -config NETDEVICES - ... - -endmenu - -All entries within the "menu" ... "endmenu" block become a submenu of -"Network device support". All subentries inherit the dependencies from -the menu entry, e.g. this means the dependency "NET" is added to the -dependency list of the config option NETDEVICES. - -The other way to generate the menu structure is done by analyzing the -dependencies. If a menu entry somehow depends on the previous entry, it -can be made a submenu of it. First the the previous (parent) symbol must -be part of the dependency list and then one of these two condititions -must be true: -- the child entry must become invisible, if the parent is set to 'n' -- the child entry must only be visible, if the parent is visible - -config MODULES - bool "Enable loadable module support" - -config MODVERSIONS - bool "Set version information on all module symbols" - depends MODULES - -comment "module support disabled" - depends !MODULES - -MODVERSIONS directly depends on MODULES, this means it's only visible if -MODULES is different from 'n'. The comment on the other hand is always -visible when MODULES it's visible (the (empty) dependency of MODULES is -also part of the comment dependencies). - - -Kconfig syntax --------------- - -The configuration file describes a series of menu entries, where every -line starts with a keyword (except help texts). The following keywords -end a menu entry: -- config -- choice/endchoice -- comment -- menu/endmenu -- if/endif -- source -The first four also start the definition of a menu entry. - -config: - - "config" - - -This defines a config symbol and accepts any of above -attributes as options. - -choices: - - "choice" - - - "endchoice" - -This defines a choice group and accepts any of above attributes as -options. A choice can only be of type bool or tristate, while a boolean -choice only allows a single config entry to be selected, a tristate -choice also allows any number of config entries to be set to 'm'. This -can be used if multiple drivers for a single hardware exists and only a -single driver can be compiled/loaded into the kernel, but all drivers -can be compiled as modules. -A choice accepts another option "optional", which allows to set the -choice to 'n' and no entry needs to be selected. - -comment: - - "comment" - - -This defines a comment which is displayed to the user during the -configuration process and is also echoed to the output files. The only -possible options are dependencies. - -menu: - - "menu" - - - "endmenu" - -This defines a menu block, see "Menu structure" above for more -information. The only possible options are dependencies. - -if: - - "if" - - "endif" - -This defines an if block. The dependency expression is appended -to all enclosed menu entries. - -source: - - "source" - -This reads the specified configuration file. This file is always parsed. diff --git a/2.3/menu/Makefile b/2.3/menu/Makefile deleted file mode 100644 index b619a4e..0000000 --- a/2.3/menu/Makefile +++ /dev/null @@ -1,145 +0,0 @@ -# Makefile for BusyBox -# -# Copyright (C) 2002 Erik Andersen -# Modified by George Boudreau georgeb@LinuxFromScratch.org - -top_srcdir=. -top_builddir=. -srcdir=$(top_srcdir) - -# Select the compiler needed to build binaries for your development system -HOSTCC = gcc -HOSTCFLAGS= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer - -# Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc. -LC_ALL:= C - -SED ?= sed -SECHO := @-false -DISP := pur -Q := @ - -show_objs = $(subst $(top_builddir)/,,$(subst ../,,$@)) -pur_disp_compile.h = echo " "HOSTCC $(show_objs) -disp_compile.h = $($(DISP)_disp_compile.h) -cmd_compile.h = $(HOSTCC) $(HOSTCFLAGS) -c -o $@ $< -compile.h = @$(disp_compile.h) ; $(cmd_compile.h) - - -all: ncurses conf mconf - -ifeq ($(shell uname),SunOS) -LIBS = -lcurses -else -LIBS = -lncurses -endif -ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h)) - HOSTNCURSES += -I/usr/include/ncurses -DCURSES_LOC="" -else -ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h)) - HOSTNCURSES += -I/usr/include/ncurses -DCURSES_LOC="" -else -ifeq (/usr/local/include/ncurses/ncurses.h, $(wildcard /usr/local/include/ncurses/ncurses.h)) - HOSTCFLAGS += -I/usr/local/include/ncurses -DCURSES_LOC="" -else -ifeq (/usr/local/include/ncurses/curses.h, $(wildcard /usr/local/include/ncurses/curses.h)) - HOSTCFLAGS += -I/usr/local/include/ncurses -DCURSES_LOC="" -else -ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h)) - HOSTNCURSES += -DCURSES_LOC="" -else - HOSTNCURSES += -DCURSES_LOC="" -endif -endif -endif -endif -endif - -ifeq (/usr/include/locale.h, $(wildcard /usr/include/locale.h)) - HOSTNCURSES += -DLOCALE=1 -endif - -CONF_SRC = conf.c -MCONF_SRC = mconf.c -LXD_SRC = lxdialog/checklist.c lxdialog/menubox.c lxdialog/textbox.c \ - lxdialog/yesno.c lxdialog/inputbox.c lxdialog/util.c \ - lxdialog/msgbox.c - -SHARED_SRC = zconf.tab.c -SHARED_DEPS := $(srcdir)/lkc.h $(srcdir)/lkc_proto.h \ - lkc_defs.h $(srcdir)/expr.h zconf.tab.h -CONF_OBJS = $(patsubst %.c,%.o, $(CONF_SRC)) -MCONF_OBJS = $(patsubst %.c,%.o, $(MCONF_SRC) $(LXD_SRC)) -SHARED_OBJS = $(patsubst %.c,%.o, $(SHARED_SRC)) - -conf: $(CONF_OBJS) $(SHARED_OBJS) - $(SECHO) " "HOSTCC $@ ; true - $(Q)$(HOSTCC) $(NATIVE_LDFLAGS) $^ -o $@ - -mconf: $(MCONF_OBJS) $(SHARED_OBJS) - $(SECHO) " "HOSTCC $@ ; true - $(Q)$(HOSTCC) $(NATIVE_LDFLAGS) $^ -o $@ $(LIBS) - -$(CONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS) - $(compile.h) -I. - -$(MCONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS) - @[ -d $(@D) ] || mkdir $(@D) - $(compile.h) $(HOSTNCURSES) -I. - -lkc_defs.h: $(srcdir)/lkc_proto.h - @$(SED) < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/' - -### -# The following requires flex/bison -# By default we use the _shipped versions, uncomment the -# following line if you are modifying the flex/bison src. -#LKC_GENPARSER := 1 - -ifdef LKC_GENPARSER - -%.tab.c %.tab.h: $(srcdir)/%.y - bison -t -d -v -b $* -p $(notdir $*) $< - -lex.%.c: $(srcdir)/%.l - flex -P$(notdir $*) -o$@ $< -else - -lex.zconf.o: lex.zconf.c $(SHARED_DEPS) - $(compile.h) -I$(srcdir) - -lex.zconf.c: $(srcdir)/lex.zconf.c_shipped - $(Q)cp $< $@ - -zconf.tab.c: $(srcdir)/zconf.tab.c_shipped - $(Q)cp $< $@ - -zconf.tab.h: $(srcdir)/zconf.tab.h_shipped - $(Q)cp $< $@ -endif - -zconf.tab.o: zconf.tab.c lex.zconf.c $(srcdir)/confdata.c $(srcdir)/expr.c \ - $(srcdir)/symbol.c $(srcdir)/menu.c $(SHARED_DEPS) - $(compile.h) -I$(srcdir) -I. - -.PHONY: ncurses - -ncurses: - @echo "main() {}" > lxtemp.c - @if $(HOSTCC) lxtemp.c $(LIBS) ; then \ - rm -f lxtemp.c a.out; \ - else \ - rm -f lxtemp.c; \ - echo -e "\007" ;\ - echo ">> Unable to find the Ncurses libraries." ;\ - echo ">>" ;\ - echo ">> You must have Ncurses installed in order" ;\ - echo ">> to use 'make menuconfig'" ;\ - echo ;\ - exit 1 ;\ - fi - -clean: - rm -f *.o *~ core $(TARGETS) $(MCONF_OBJS) $(CONF_OBJS) \ - conf mconf zconf.tab.c zconf.tab.h lex.zconf.c lkc_defs.h - diff --git a/2.3/menu/conf.c b/2.3/menu/conf.c deleted file mode 100644 index fdb3e5b..0000000 --- a/2.3/menu/conf.c +++ /dev/null @@ -1,573 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -static void conf(struct menu *menu); -static void check_conf(struct menu *menu); - -enum { - ask_all, - ask_new, - ask_silent, - set_default, - set_yes, - set_mod, - set_no, - set_random -} input_mode = ask_all; -char *defconfig_file; - -static int indent = 1; -static int valid_stdin = 1; -static int conf_cnt; -static char line[128]; -static struct menu *rootEntry; - -static char nohelp_text[] = "Sorry, no help available for this option yet.\n"; - -static void strip(char *str) -{ - char *p = str; - int l; - - while ((isspace(*p))) - p++; - l = strlen(p); - if (p != str) - memmove(str, p, l + 1); - if (!l) - return; - p = str + l - 1; - while ((isspace(*p))) - *p-- = 0; -} - -static void check_stdin(void) -{ - if (!valid_stdin && input_mode == ask_silent) { - printf("aborted!\n\n"); - printf("Console input/output is redirected. "); - printf("Run 'make oldconfig' to update configuration.\n\n"); - exit(1); - } -} - -static void conf_askvalue(struct symbol *sym, const char *def) -{ - enum symbol_type type = sym_get_type(sym); - tristate val; - - if (!sym_has_value(sym)) - printf("(NEW) "); - - line[0] = '\n'; - line[1] = 0; - - if (!sym_is_changable(sym)) { - printf("%s\n", def); - line[0] = '\n'; - line[1] = 0; - return; - } - - switch (input_mode) { - case ask_new: - case ask_silent: - if (sym_has_value(sym)) { - printf("%s\n", def); - return; - } - check_stdin(); - case ask_all: - fflush(stdout); - fgets(line, 128, stdin); - return; - case set_default: - printf("%s\n", def); - return; - default: - break; - } - - switch (type) { - case S_INT: - case S_HEX: - case S_STRING: - printf("%s\n", def); - return; - default: - ; - } - switch (input_mode) { - case set_yes: - if (sym_tristate_within_range(sym, yes)) { - line[0] = 'y'; - line[1] = '\n'; - line[2] = 0; - break; - } - case set_mod: - if (type == S_TRISTATE) { - if (sym_tristate_within_range(sym, mod)) { - line[0] = 'm'; - line[1] = '\n'; - line[2] = 0; - break; - } - } else { - if (sym_tristate_within_range(sym, yes)) { - line[0] = 'y'; - line[1] = '\n'; - line[2] = 0; - break; - } - } - case set_no: - if (sym_tristate_within_range(sym, no)) { - line[0] = 'n'; - line[1] = '\n'; - line[2] = 0; - break; - } - case set_random: - do { - val = (tristate)(random() % 3); - } while (!sym_tristate_within_range(sym, val)); - switch (val) { - case no: line[0] = 'n'; break; - case mod: line[0] = 'm'; break; - case yes: line[0] = 'y'; break; - } - line[1] = '\n'; - line[2] = 0; - break; - default: - break; - } - printf("%s", line); -} - -int conf_string(struct menu *menu) -{ - struct symbol *sym = menu->sym; - const char *def, *help; - - while (1) { - printf("%*s%s ", indent - 1, "", menu->prompt->text); - printf("(%s) ", sym->name); - def = sym_get_string_value(sym); - if (sym_get_string_value(sym)) - printf("[%s] ", def); - conf_askvalue(sym, def); - switch (line[0]) { - case '\n': - break; - case '?': - /* print help */ - if (line[1] == '\n') { - help = nohelp_text; - if (menu->sym->help) - help = menu->sym->help; - printf("\n%s\n", menu->sym->help); - def = NULL; - break; - } - default: - line[strlen(line)-1] = 0; - def = line; - } - if (def && sym_set_string_value(sym, def)) - return 0; - } -} - -static int conf_sym(struct menu *menu) -{ - struct symbol *sym = menu->sym; - int type; - tristate oldval, newval; - const char *help; - - while (1) { - printf("%*s%s ", indent - 1, "", menu->prompt->text); - if (sym->name) - printf("(%s) ", sym->name); - type = sym_get_type(sym); - putchar('['); - oldval = sym_get_tristate_value(sym); - switch (oldval) { - case no: - putchar('N'); - break; - case mod: - putchar('M'); - break; - case yes: - putchar('Y'); - break; - } - if (oldval != no && sym_tristate_within_range(sym, no)) - printf("/n"); - if (oldval != mod && sym_tristate_within_range(sym, mod)) - printf("/m"); - if (oldval != yes && sym_tristate_within_range(sym, yes)) - printf("/y"); - if (sym->help) - printf("/?"); - printf("] "); - conf_askvalue(sym, sym_get_string_value(sym)); - strip(line); - - switch (line[0]) { - case 'n': - case 'N': - newval = no; - if (!line[1] || !strcmp(&line[1], "o")) - break; - continue; - case 'm': - case 'M': - newval = mod; - if (!line[1]) - break; - continue; - case 'y': - case 'Y': - newval = yes; - if (!line[1] || !strcmp(&line[1], "es")) - break; - continue; - case 0: - newval = oldval; - break; - case '?': - goto help; - default: - continue; - } - if (sym_set_tristate_value(sym, newval)) - return 0; -help: - help = nohelp_text; - if (sym->help) - help = sym->help; - printf("\n%s\n", help); - } -} - -static int conf_choice(struct menu *menu) -{ - struct symbol *sym, *def_sym; - struct menu *child; - int type; - bool is_new; - - sym = menu->sym; - type = sym_get_type(sym); - is_new = !sym_has_value(sym); - if (sym_is_changable(sym)) { - conf_sym(menu); - sym_calc_value(sym); - switch (sym_get_tristate_value(sym)) { - case no: - return 1; - case mod: - return 0; - case yes: - break; - } - } else { - switch (sym_get_tristate_value(sym)) { - case no: - return 1; - case mod: - printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); - return 0; - case yes: - break; - } - } - - while (1) { - int cnt, def; - - printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); - def_sym = sym_get_choice_value(sym); - cnt = def = 0; - line[0] = '0'; - line[1] = 0; - for (child = menu->list; child; child = child->next) { - if (!menu_is_visible(child)) - continue; - if (!child->sym) { - printf("%*c %s\n", indent, '*', menu_get_prompt(child)); - continue; - } - cnt++; - if (child->sym == def_sym) { - def = cnt; - printf("%*c", indent, '>'); - } else - printf("%*c", indent, ' '); - printf(" %d. %s", cnt, menu_get_prompt(child)); - if (child->sym->name) - printf(" (%s)", child->sym->name); - if (!sym_has_value(child->sym)) - printf(" (NEW)"); - printf("\n"); - } - printf("%*schoice", indent - 1, ""); - if (cnt == 1) { - printf("[1]: 1\n"); - goto conf_childs; - } - printf("[1-%d", cnt); - if (sym->help) - printf("?"); - printf("]: "); - switch (input_mode) { - case ask_new: - case ask_silent: - if (!is_new) { - cnt = def; - printf("%d\n", cnt); - break; - } - check_stdin(); - case ask_all: - fflush(stdout); - fgets(line, 128, stdin); - strip(line); - if (line[0] == '?') { - printf("\n%s\n", menu->sym->help ? - menu->sym->help : nohelp_text); - continue; - } - if (!line[0]) - cnt = def; - else if (isdigit(line[0])) - cnt = atoi(line); - else - continue; - break; - case set_random: - def = (random() % cnt) + 1; - case set_default: - case set_yes: - case set_mod: - case set_no: - cnt = def; - printf("%d\n", cnt); - break; - } - - conf_childs: - for (child = menu->list; child; child = child->next) { - if (!child->sym || !menu_is_visible(child)) - continue; - if (!--cnt) - break; - } - if (!child) - continue; - if (line[strlen(line) - 1] == '?') { - printf("\n%s\n", child->sym->help ? - child->sym->help : nohelp_text); - continue; - } - sym_set_choice_value(sym, child->sym); - if (child->list) { - indent += 2; - conf(child->list); - indent -= 2; - } - return 1; - } -} - -static void conf(struct menu *menu) -{ - struct symbol *sym; - struct property *prop; - struct menu *child; - - if (!menu_is_visible(menu)) - return; - - sym = menu->sym; - prop = menu->prompt; - if (prop) { - const char *prompt; - - switch (prop->type) { - case P_MENU: - if (input_mode == ask_silent && rootEntry != menu) { - check_conf(menu); - return; - } - case P_COMMENT: - prompt = menu_get_prompt(menu); - if (prompt) - printf("%*c\n%*c %s\n%*c\n", - indent, '*', - indent, '*', prompt, - indent, '*'); - default: - ; - } - } - - if (!sym) - goto conf_childs; - - if (sym_is_choice(sym)) { - conf_choice(menu); - if (sym->curr.tri != mod) - return; - goto conf_childs; - } - - switch (sym->type) { - case S_INT: - case S_HEX: - case S_STRING: - conf_string(menu); - break; - default: - conf_sym(menu); - break; - } - -conf_childs: - if (sym) - indent += 2; - for (child = menu->list; child; child = child->next) - conf(child); - if (sym) - indent -= 2; -} - -static void check_conf(struct menu *menu) -{ - struct symbol *sym; - struct menu *child; - - if (!menu_is_visible(menu)) - return; - - sym = menu->sym; - if (sym) { - if (sym_is_changable(sym) && !sym_has_value(sym)) { - if (!conf_cnt++) - printf("*\n* Restart config...\n*\n"); - rootEntry = menu_get_parent_menu(menu); - conf(rootEntry); - } - if (sym_is_choice(sym) && sym_get_tristate_value(sym) != mod) - return; - } - - for (child = menu->list; child; child = child->next) - check_conf(child); -} - -int main(int ac, char **av) -{ - int i = 1; - const char *name; - struct stat tmpstat; - - if (ac > i && av[i][0] == '-') { - switch (av[i++][1]) { - case 'o': - input_mode = ask_new; - break; - case 's': - input_mode = ask_silent; - valid_stdin = isatty(0) && isatty(1) && isatty(2); - break; - case 'd': - input_mode = set_default; - break; - case 'D': - input_mode = set_default; - defconfig_file = av[i++]; - if (!defconfig_file) { - printf("%s: No default config file specified\n", - av[0]); - exit(1); - } - break; - case 'n': - input_mode = set_no; - break; - case 'm': - input_mode = set_mod; - break; - case 'y': - input_mode = set_yes; - break; - case 'r': - input_mode = set_random; - srandom(time(NULL)); - break; - case 'h': - case '?': - printf("%s [-o|-s] config\n", av[0]); - exit(0); - } - } - name = av[i]; - if (!name) { - printf("%s: configuration file missing\n", av[0]); - } - conf_parse(name); - //zconfdump(stdout); - switch (input_mode) { - case ask_silent: - if (stat(".config", &tmpstat)) { - printf("***\n" - "*** You have not yet configured JHALFS!\n" - "***\n" - "*** Please run some configurator (e.g. \"make oldconfig\" or\n" - "*** \"make menuconfig\" or \"make config\").\n" - "***\n"); - exit(1); - } - case ask_all: - case ask_new: - conf_read(NULL); - break; - default: - break; - } - - if (input_mode != ask_silent) { - rootEntry = &rootmenu; - conf(&rootmenu); - if (input_mode == ask_all) { - input_mode = ask_silent; - valid_stdin = 1; - } - } - do { - conf_cnt = 0; - check_conf(&rootmenu); - } while (conf_cnt); - if (conf_write(NULL)) { - fprintf(stderr, "\n*** Error during writing of the JHALFS configuration.\n\n"); - return 1; - } - return 0; -} diff --git a/2.3/menu/confdata.c b/2.3/menu/confdata.c deleted file mode 100644 index 55cb512..0000000 --- a/2.3/menu/confdata.c +++ /dev/null @@ -1,392 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -const char conf_def_filename[] = "configuration"; - -const char conf_defname[] = "defconfig"; - -const char *conf_confnames[] = { - "configuration", - conf_defname, - NULL, -}; - -static char *conf_expand_value(const char *in) -{ - struct symbol *sym; - const char *src; - static char res_value[SYMBOL_MAXLENGTH]; - char *dst, name[SYMBOL_MAXLENGTH]; - - res_value[0] = 0; - dst = name; - while ((src = strchr(in, '$'))) { - strncat(res_value, in, src - in); - src++; - dst = name; - while (isalnum(*src) || *src == '_') - *dst++ = *src++; - *dst = 0; - sym = sym_lookup(name, 0); - sym_calc_value(sym); - strcat(res_value, sym_get_string_value(sym)); - in = src; - } - strcat(res_value, in); - - return res_value; -} - -int conf_read(const char *name) -{ - FILE *in = NULL; - char line[1024]; - char *p, *p2; - int lineno = 0; - struct symbol *sym; - struct property *prop; - struct expr *e; - int i; - - if (name) { - in = zconf_fopen(name); - } else { - const char **names = conf_confnames; - while ((name = *names++)) { - name = conf_expand_value(name); - in = zconf_fopen(name); - if (in) { - printf("#\n" - "# using defaults found in %s\n" - "#\n", name); - break; - } - } - } - - if (!in) - return 1; - - for_all_symbols(i, sym) { - sym->flags |= SYMBOL_NEW | SYMBOL_CHANGED; - sym->flags &= ~SYMBOL_VALID; - switch (sym->type) { - case S_INT: - case S_HEX: - case S_STRING: - free(sym->user.val); - default: - sym->user.val = NULL; - sym->user.tri = no; - } - } - - while (fgets(line, sizeof(line), in)) { - lineno++; - sym = NULL; - switch (line[0]) { - case '#': - if (line[1]!=' ') - continue; - p = strchr(line + 2, ' '); - if (!p) - continue; - *p++ = 0; - if (strncmp(p, "is not set", 10)) - continue; - sym = sym_find(line + 2); - if (!sym) { - fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line + 2); - break; - } - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - sym->user.tri = no; - sym->flags &= ~SYMBOL_NEW; - break; - default: - ; - } - break; - - case 'A' ... 'Z': - p = strchr(line, '='); - if (!p) - continue; - *p++ = 0; - p2 = strchr(p, '\n'); - if (p2) - *p2 = 0; - sym = sym_find(line); - if (!sym) { - fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line); - break; - } - switch (sym->type) { - case S_TRISTATE: - if (p[0] == 'm') { - sym->user.tri = mod; - sym->flags &= ~SYMBOL_NEW; - break; - } - case S_BOOLEAN: - if (p[0] == 'y') { - sym->user.tri = yes; - sym->flags &= ~SYMBOL_NEW; - break; - } - if (p[0] == 'n') { - sym->user.tri = no; - sym->flags &= ~SYMBOL_NEW; - break; - } - break; - case S_STRING: - if (*p++ != '"') - break; - for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { - if (*p2 == '"') { - *p2 = 0; - break; - } - memmove(p2, p2 + 1, strlen(p2)); - } - if (!p2) { - fprintf(stderr, "%s:%d: invalid string found\n", name, lineno); - exit(1); - } - case S_INT: - case S_HEX: - if (sym_string_valid(sym, p)) { - sym->user.val = strdup(p); - sym->flags &= ~SYMBOL_NEW; - } else { - fprintf(stderr, "%s:%d: symbol value '%s' invalid for %s\n", name, lineno, p, sym->name); - exit(1); - } - break; - default: - ; - } - break; - case '\n': - break; - default: - continue; - } - if (sym && sym_is_choice_value(sym)) { - struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); - switch (sym->user.tri) { - case no: - break; - case mod: - if (cs->user.tri == yes) - /* warn? */; - break; - case yes: - if (cs->user.tri != no) - /* warn? */; - cs->user.val = sym; - break; - } - cs->user.tri = E_OR(cs->user.tri, sym->user.tri); - cs->flags &= ~SYMBOL_NEW; - } - } - fclose(in); - - if (modules_sym) - sym_calc_value(modules_sym); - for_all_symbols(i, sym) { - sym_calc_value(sym); - if (sym_has_value(sym) && !sym_is_choice_value(sym)) { - if (sym->visible == no) - sym->flags |= SYMBOL_NEW; - switch (sym->type) { - case S_STRING: - case S_INT: - case S_HEX: - if (!sym_string_within_range(sym, sym->user.val)) - sym->flags |= SYMBOL_NEW; - default: - break; - } - } - if (!sym_is_choice(sym)) - continue; - prop = sym_get_choice_prop(sym); - for (e = prop->expr; e; e = e->left.expr) - if (e->right.sym->visible != no) - sym->flags |= e->right.sym->flags & SYMBOL_NEW; - } - - sym_change_count = 1; - - return 0; -} - -struct menu *next_menu(struct menu *menu) -{ - if (menu->list) return menu->list; - do { - if (menu->next) { - menu = menu->next; - break; - } - } while ((menu = menu->parent)); - - return menu; -} - -#define SYMBOL_FORCEWRITE (1<<31) - -int conf_write(const char *name) -{ - FILE *out; - struct symbol *sym; - struct menu *menu; - const char *basename; - char dirname[128], tmpname[128], newname[128]; - int type, l; - const char *str; - - dirname[0] = 0; - if (name && name[0]) { - struct stat st; - char *slash; - - if (!stat(name, &st) && S_ISDIR(st.st_mode)) { - strcpy(dirname, name); - strcat(dirname, "/"); - basename = conf_def_filename; - } else if ((slash = strrchr(name, '/'))) { - int size = slash - name + 1; - memcpy(dirname, name, size); - dirname[size] = 0; - if (slash[1]) - basename = slash + 1; - else - basename = conf_def_filename; - } else - basename = name; - } else - basename = conf_def_filename; - - sprintf(newname, "%s.tmpconfig.%d", dirname, (int)getpid()); - out = fopen(newname, "w"); - if (!out) - return 1; - fprintf(out, "#\n" - "# Automatically generated configuration: don't edit\n" - "# use make menuconfig or make config to make changes\n" - "#\n"); - - if (!sym_change_count) - sym_clear_all_valid(); - - /* Force write of all non-duplicate symbols. */ - - /* Write out everything by default. */ - for(menu = rootmenu.list; menu; menu = next_menu(menu)) - if (menu->sym) menu->sym->flags |= SYMBOL_FORCEWRITE; - - menu = rootmenu.list; - while (menu) { - sym = menu->sym; - if (!sym) { - if (!menu_is_visible(menu)) - goto next; - str = menu_get_prompt(menu); - fprintf(out, "\n" - "#\n" - "# %s\n" - "#\n", str); - } else if (!(sym->flags & SYMBOL_CHOICE)) { - sym_calc_value(sym); - if (!(sym->flags & SYMBOL_FORCEWRITE)) - goto next; - - sym->flags &= ~SYMBOL_FORCEWRITE; - type = sym->type; - if (type == S_TRISTATE) { - sym_calc_value(modules_sym); - if (modules_sym->curr.tri == no) - type = S_BOOLEAN; - } - - - switch (type) { - case S_BOOLEAN: - case S_TRISTATE: - switch (sym_get_tristate_value(sym)) { - case no: - fprintf(out, "# %s is not set\n", sym->name); - break; - case mod: - fprintf(out, "%s=m\n", sym->name); - break; - case yes: - fprintf(out, "%s=y\n", sym->name); - break; - } - break; - case S_STRING: - // fix me - str = sym_get_string_value(sym); - fprintf(out, "%s=\"", sym->name); - do { - l = strcspn(str, "\"\\"); - if (l) { - fwrite(str, l, 1, out); - } - str += l; - while (*str == '\\' || *str == '"') { - fprintf(out, "\\%c", *str); - str++; - } - } while (*str); - fputs("\"\n", out); - break; - case S_HEX: - str = sym_get_string_value(sym); - if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) { - fprintf(out, "%s=%s\n", sym->name, *str ? str : "0"); - break; - } - case S_INT: - str = sym_get_string_value(sym); - fprintf(out, "%s=%s\n", sym->name, *str ? str : "0"); - break; - } - } -next: - menu = next_menu(menu); - } - fclose(out); - if (!name || basename != conf_def_filename) { - if (!name) - name = conf_def_filename; - sprintf(tmpname, "%s.old", name); - rename(name, tmpname); - } - sprintf(tmpname, "%s%s", dirname, basename); - if (rename(newname, tmpname)) - return 1; - - sym_change_count = 0; - - return 0; -} diff --git a/2.3/menu/expr.c b/2.3/menu/expr.c deleted file mode 100644 index 6f39e7a..0000000 --- a/2.3/menu/expr.c +++ /dev/null @@ -1,1099 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -#define DEBUG_EXPR 0 - -struct expr *expr_alloc_symbol(struct symbol *sym) -{ - struct expr *e = malloc(sizeof(*e)); - memset(e, 0, sizeof(*e)); - e->type = E_SYMBOL; - e->left.sym = sym; - return e; -} - -struct expr *expr_alloc_one(enum expr_type type, struct expr *ce) -{ - struct expr *e = malloc(sizeof(*e)); - memset(e, 0, sizeof(*e)); - e->type = type; - e->left.expr = ce; - return e; -} - -struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2) -{ - struct expr *e = malloc(sizeof(*e)); - memset(e, 0, sizeof(*e)); - e->type = type; - e->left.expr = e1; - e->right.expr = e2; - return e; -} - -struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2) -{ - struct expr *e = malloc(sizeof(*e)); - memset(e, 0, sizeof(*e)); - e->type = type; - e->left.sym = s1; - e->right.sym = s2; - return e; -} - -struct expr *expr_alloc_and(struct expr *e1, struct expr *e2) -{ - if (!e1) - return e2; - return e2 ? expr_alloc_two(E_AND, e1, e2) : e1; -} - -struct expr *expr_alloc_or(struct expr *e1, struct expr *e2) -{ - if (!e1) - return e2; - return e2 ? expr_alloc_two(E_OR, e1, e2) : e1; -} - -struct expr *expr_copy(struct expr *org) -{ - struct expr *e; - - if (!org) - return NULL; - - e = malloc(sizeof(*org)); - memcpy(e, org, sizeof(*org)); - switch (org->type) { - case E_SYMBOL: - e->left = org->left; - break; - case E_NOT: - e->left.expr = expr_copy(org->left.expr); - break; - case E_EQUAL: - case E_UNEQUAL: - e->left.sym = org->left.sym; - e->right.sym = org->right.sym; - break; - case E_AND: - case E_OR: - case E_CHOICE: - e->left.expr = expr_copy(org->left.expr); - e->right.expr = expr_copy(org->right.expr); - break; - default: - printf("can't copy type %d\n", e->type); - free(e); - e = NULL; - break; - } - - return e; -} - -void expr_free(struct expr *e) -{ - if (!e) - return; - - switch (e->type) { - case E_SYMBOL: - break; - case E_NOT: - expr_free(e->left.expr); - return; - case E_EQUAL: - case E_UNEQUAL: - break; - case E_OR: - case E_AND: - expr_free(e->left.expr); - expr_free(e->right.expr); - break; - default: - printf("how to free type %d?\n", e->type); - break; - } - free(e); -} - -static int trans_count; - -#define e1 (*ep1) -#define e2 (*ep2) - -static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2) -{ - if (e1->type == type) { - __expr_eliminate_eq(type, &e1->left.expr, &e2); - __expr_eliminate_eq(type, &e1->right.expr, &e2); - return; - } - if (e2->type == type) { - __expr_eliminate_eq(type, &e1, &e2->left.expr); - __expr_eliminate_eq(type, &e1, &e2->right.expr); - return; - } - if (e1->type == E_SYMBOL && e2->type == E_SYMBOL && - e1->left.sym == e2->left.sym && (e1->left.sym->flags & (SYMBOL_YES|SYMBOL_NO))) - return; - if (!expr_eq(e1, e2)) - return; - trans_count++; - expr_free(e1); expr_free(e2); - switch (type) { - case E_OR: - e1 = expr_alloc_symbol(&symbol_no); - e2 = expr_alloc_symbol(&symbol_no); - break; - case E_AND: - e1 = expr_alloc_symbol(&symbol_yes); - e2 = expr_alloc_symbol(&symbol_yes); - break; - default: - ; - } -} - -void expr_eliminate_eq(struct expr **ep1, struct expr **ep2) -{ - if (!e1 || !e2) - return; - switch (e1->type) { - case E_OR: - case E_AND: - __expr_eliminate_eq(e1->type, ep1, ep2); - default: - ; - } - if (e1->type != e2->type) switch (e2->type) { - case E_OR: - case E_AND: - __expr_eliminate_eq(e2->type, ep1, ep2); - default: - ; - } - e1 = expr_eliminate_yn(e1); - e2 = expr_eliminate_yn(e2); -} - -#undef e1 -#undef e2 - -int expr_eq(struct expr *e1, struct expr *e2) -{ - int res, old_count; - - if (e1->type != e2->type) - return 0; - switch (e1->type) { - case E_EQUAL: - case E_UNEQUAL: - return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym; - case E_SYMBOL: - return e1->left.sym == e2->left.sym; - case E_NOT: - return expr_eq(e1->left.expr, e2->left.expr); - case E_AND: - case E_OR: - e1 = expr_copy(e1); - e2 = expr_copy(e2); - old_count = trans_count; - expr_eliminate_eq(&e1, &e2); - res = (e1->type == E_SYMBOL && e2->type == E_SYMBOL && - e1->left.sym == e2->left.sym); - expr_free(e1); - expr_free(e2); - trans_count = old_count; - return res; - case E_CHOICE: - case E_RANGE: - case E_NONE: - /* panic */; - } - - if (DEBUG_EXPR) { - expr_fprint(e1, stdout); - printf(" = "); - expr_fprint(e2, stdout); - printf(" ?\n"); - } - - return 0; -} - -struct expr *expr_eliminate_yn(struct expr *e) -{ - struct expr *tmp; - - if (e) switch (e->type) { - case E_AND: - e->left.expr = expr_eliminate_yn(e->left.expr); - e->right.expr = expr_eliminate_yn(e->right.expr); - if (e->left.expr->type == E_SYMBOL) { - if (e->left.expr->left.sym == &symbol_no) { - expr_free(e->left.expr); - expr_free(e->right.expr); - e->type = E_SYMBOL; - e->left.sym = &symbol_no; - e->right.expr = NULL; - return e; - } else if (e->left.expr->left.sym == &symbol_yes) { - free(e->left.expr); - tmp = e->right.expr; - *e = *(e->right.expr); - free(tmp); - return e; - } - } - if (e->right.expr->type == E_SYMBOL) { - if (e->right.expr->left.sym == &symbol_no) { - expr_free(e->left.expr); - expr_free(e->right.expr); - e->type = E_SYMBOL; - e->left.sym = &symbol_no; - e->right.expr = NULL; - return e; - } else if (e->right.expr->left.sym == &symbol_yes) { - free(e->right.expr); - tmp = e->left.expr; - *e = *(e->left.expr); - free(tmp); - return e; - } - } - break; - case E_OR: - e->left.expr = expr_eliminate_yn(e->left.expr); - e->right.expr = expr_eliminate_yn(e->right.expr); - if (e->left.expr->type == E_SYMBOL) { - if (e->left.expr->left.sym == &symbol_no) { - free(e->left.expr); - tmp = e->right.expr; - *e = *(e->right.expr); - free(tmp); - return e; - } else if (e->left.expr->left.sym == &symbol_yes) { - expr_free(e->left.expr); - expr_free(e->right.expr); - e->type = E_SYMBOL; - e->left.sym = &symbol_yes; - e->right.expr = NULL; - return e; - } - } - if (e->right.expr->type == E_SYMBOL) { - if (e->right.expr->left.sym == &symbol_no) { - free(e->right.expr); - tmp = e->left.expr; - *e = *(e->left.expr); - free(tmp); - return e; - } else if (e->right.expr->left.sym == &symbol_yes) { - expr_free(e->left.expr); - expr_free(e->right.expr); - e->type = E_SYMBOL; - e->left.sym = &symbol_yes; - e->right.expr = NULL; - return e; - } - } - break; - default: - ; - } - return e; -} - -/* - * bool FOO!=n => FOO - */ -struct expr *expr_trans_bool(struct expr *e) -{ - if (!e) - return NULL; - switch (e->type) { - case E_AND: - case E_OR: - case E_NOT: - e->left.expr = expr_trans_bool(e->left.expr); - e->right.expr = expr_trans_bool(e->right.expr); - break; - case E_UNEQUAL: - // FOO!=n -> FOO - if (e->left.sym->type == S_TRISTATE) { - if (e->right.sym == &symbol_no) { - e->type = E_SYMBOL; - e->right.sym = NULL; - } - } - break; - default: - ; - } - return e; -} - -/* - * e1 || e2 -> ? - */ -struct expr *expr_join_or(struct expr *e1, struct expr *e2) -{ - struct expr *tmp; - struct symbol *sym1, *sym2; - - if (expr_eq(e1, e2)) - return expr_copy(e1); - if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT) - return NULL; - if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT) - return NULL; - if (e1->type == E_NOT) { - tmp = e1->left.expr; - if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL) - return NULL; - sym1 = tmp->left.sym; - } else - sym1 = e1->left.sym; - if (e2->type == E_NOT) { - if (e2->left.expr->type != E_SYMBOL) - return NULL; - sym2 = e2->left.expr->left.sym; - } else - sym2 = e2->left.sym; - if (sym1 != sym2) - return NULL; - if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE) - return NULL; - if (sym1->type == S_TRISTATE) { - if (e1->type == E_EQUAL && e2->type == E_EQUAL && - ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || - (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) { - // (a='y') || (a='m') -> (a!='n') - return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no); - } - if (e1->type == E_EQUAL && e2->type == E_EQUAL && - ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || - (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) { - // (a='y') || (a='n') -> (a!='m') - return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod); - } - if (e1->type == E_EQUAL && e2->type == E_EQUAL && - ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || - (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) { - // (a='m') || (a='n') -> (a!='y') - return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes); - } - } - if (sym1->type == S_BOOLEAN && sym1 == sym2) { - if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) || - (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL)) - return expr_alloc_symbol(&symbol_yes); - } - - if (DEBUG_EXPR) { - printf("optimize ("); - expr_fprint(e1, stdout); - printf(") || ("); - expr_fprint(e2, stdout); - printf(")?\n"); - } - return NULL; -} - -struct expr *expr_join_and(struct expr *e1, struct expr *e2) -{ - struct expr *tmp; - struct symbol *sym1, *sym2; - - if (expr_eq(e1, e2)) - return expr_copy(e1); - if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT) - return NULL; - if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT) - return NULL; - if (e1->type == E_NOT) { - tmp = e1->left.expr; - if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL) - return NULL; - sym1 = tmp->left.sym; - } else - sym1 = e1->left.sym; - if (e2->type == E_NOT) { - if (e2->left.expr->type != E_SYMBOL) - return NULL; - sym2 = e2->left.expr->left.sym; - } else - sym2 = e2->left.sym; - if (sym1 != sym2) - return NULL; - if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE) - return NULL; - - if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) || - (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes)) - // (a) && (a='y') -> (a='y') - return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); - - if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) || - (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no)) - // (a) && (a!='n') -> (a) - return expr_alloc_symbol(sym1); - - if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) || - (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod)) - // (a) && (a!='m') -> (a='y') - return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); - - if (sym1->type == S_TRISTATE) { - if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) { - // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' - sym2 = e1->right.sym; - if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) - return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) - : expr_alloc_symbol(&symbol_no); - } - if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) { - // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' - sym2 = e2->right.sym; - if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) - return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) - : expr_alloc_symbol(&symbol_no); - } - if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && - ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || - (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) - // (a!='y') && (a!='n') -> (a='m') - return expr_alloc_comp(E_EQUAL, sym1, &symbol_mod); - - if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && - ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || - (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) - // (a!='y') && (a!='m') -> (a='n') - return expr_alloc_comp(E_EQUAL, sym1, &symbol_no); - - if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && - ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || - (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) - // (a!='m') && (a!='n') -> (a='m') - return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); - - if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) || - (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) || - (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) || - (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes)) - return NULL; - } - - if (DEBUG_EXPR) { - printf("optimize ("); - expr_fprint(e1, stdout); - printf(") && ("); - expr_fprint(e2, stdout); - printf(")?\n"); - } - return NULL; -} - -static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2) -{ -#define e1 (*ep1) -#define e2 (*ep2) - struct expr *tmp; - - if (e1->type == type) { - expr_eliminate_dups1(type, &e1->left.expr, &e2); - expr_eliminate_dups1(type, &e1->right.expr, &e2); - return; - } - if (e2->type == type) { - expr_eliminate_dups1(type, &e1, &e2->left.expr); - expr_eliminate_dups1(type, &e1, &e2->right.expr); - return; - } - if (e1 == e2) - return; - - switch (e1->type) { - case E_OR: case E_AND: - expr_eliminate_dups1(e1->type, &e1, &e1); - default: - ; - } - - switch (type) { - case E_OR: - tmp = expr_join_or(e1, e2); - if (tmp) { - expr_free(e1); expr_free(e2); - e1 = expr_alloc_symbol(&symbol_no); - e2 = tmp; - trans_count++; - } - break; - case E_AND: - tmp = expr_join_and(e1, e2); - if (tmp) { - expr_free(e1); expr_free(e2); - e1 = expr_alloc_symbol(&symbol_yes); - e2 = tmp; - trans_count++; - } - break; - default: - ; - } -#undef e1 -#undef e2 -} - -static void expr_eliminate_dups2(enum expr_type type, struct expr **ep1, struct expr **ep2) -{ -#define e1 (*ep1) -#define e2 (*ep2) - struct expr *tmp, *tmp1, *tmp2; - - if (e1->type == type) { - expr_eliminate_dups2(type, &e1->left.expr, &e2); - expr_eliminate_dups2(type, &e1->right.expr, &e2); - return; - } - if (e2->type == type) { - expr_eliminate_dups2(type, &e1, &e2->left.expr); - expr_eliminate_dups2(type, &e1, &e2->right.expr); - } - if (e1 == e2) - return; - - switch (e1->type) { - case E_OR: - expr_eliminate_dups2(e1->type, &e1, &e1); - // (FOO || BAR) && (!FOO && !BAR) -> n - tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); - tmp2 = expr_copy(e2); - tmp = expr_extract_eq_and(&tmp1, &tmp2); - if (expr_is_yes(tmp1)) { - expr_free(e1); - e1 = expr_alloc_symbol(&symbol_no); - trans_count++; - } - expr_free(tmp2); - expr_free(tmp1); - expr_free(tmp); - break; - case E_AND: - expr_eliminate_dups2(e1->type, &e1, &e1); - // (FOO && BAR) || (!FOO || !BAR) -> y - tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); - tmp2 = expr_copy(e2); - tmp = expr_extract_eq_or(&tmp1, &tmp2); - if (expr_is_no(tmp1)) { - expr_free(e1); - e1 = expr_alloc_symbol(&symbol_yes); - trans_count++; - } - expr_free(tmp2); - expr_free(tmp1); - expr_free(tmp); - break; - default: - ; - } -#undef e1 -#undef e2 -} - -struct expr *expr_eliminate_dups(struct expr *e) -{ - int oldcount; - if (!e) - return e; - - oldcount = trans_count; - while (1) { - trans_count = 0; - switch (e->type) { - case E_OR: case E_AND: - expr_eliminate_dups1(e->type, &e, &e); - expr_eliminate_dups2(e->type, &e, &e); - default: - ; - } - if (!trans_count) - break; - e = expr_eliminate_yn(e); - } - trans_count = oldcount; - return e; -} - -struct expr *expr_transform(struct expr *e) -{ - struct expr *tmp; - - if (!e) - return NULL; - switch (e->type) { - case E_EQUAL: - case E_UNEQUAL: - case E_SYMBOL: - case E_CHOICE: - break; - default: - e->left.expr = expr_transform(e->left.expr); - e->right.expr = expr_transform(e->right.expr); - } - - switch (e->type) { - case E_EQUAL: - if (e->left.sym->type != S_BOOLEAN) - break; - if (e->right.sym == &symbol_no) { - e->type = E_NOT; - e->left.expr = expr_alloc_symbol(e->left.sym); - e->right.sym = NULL; - break; - } - if (e->right.sym == &symbol_mod) { - printf("boolean symbol %s tested for 'm'? test forced to 'n'\n", e->left.sym->name); - e->type = E_SYMBOL; - e->left.sym = &symbol_no; - e->right.sym = NULL; - break; - } - if (e->right.sym == &symbol_yes) { - e->type = E_SYMBOL; - e->right.sym = NULL; - break; - } - break; - case E_UNEQUAL: - if (e->left.sym->type != S_BOOLEAN) - break; - if (e->right.sym == &symbol_no) { - e->type = E_SYMBOL; - e->right.sym = NULL; - break; - } - if (e->right.sym == &symbol_mod) { - printf("boolean symbol %s tested for 'm'? test forced to 'y'\n", e->left.sym->name); - e->type = E_SYMBOL; - e->left.sym = &symbol_yes; - e->right.sym = NULL; - break; - } - if (e->right.sym == &symbol_yes) { - e->type = E_NOT; - e->left.expr = expr_alloc_symbol(e->left.sym); - e->right.sym = NULL; - break; - } - break; - case E_NOT: - switch (e->left.expr->type) { - case E_NOT: - // !!a -> a - tmp = e->left.expr->left.expr; - free(e->left.expr); - free(e); - e = tmp; - e = expr_transform(e); - break; - case E_EQUAL: - case E_UNEQUAL: - // !a='x' -> a!='x' - tmp = e->left.expr; - free(e); - e = tmp; - e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL; - break; - case E_OR: - // !(a || b) -> !a && !b - tmp = e->left.expr; - e->type = E_AND; - e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); - tmp->type = E_NOT; - tmp->right.expr = NULL; - e = expr_transform(e); - break; - case E_AND: - // !(a && b) -> !a || !b - tmp = e->left.expr; - e->type = E_OR; - e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); - tmp->type = E_NOT; - tmp->right.expr = NULL; - e = expr_transform(e); - break; - case E_SYMBOL: - if (e->left.expr->left.sym == &symbol_yes) { - // !'y' -> 'n' - tmp = e->left.expr; - free(e); - e = tmp; - e->type = E_SYMBOL; - e->left.sym = &symbol_no; - break; - } - if (e->left.expr->left.sym == &symbol_mod) { - // !'m' -> 'm' - tmp = e->left.expr; - free(e); - e = tmp; - e->type = E_SYMBOL; - e->left.sym = &symbol_mod; - break; - } - if (e->left.expr->left.sym == &symbol_no) { - // !'n' -> 'y' - tmp = e->left.expr; - free(e); - e = tmp; - e->type = E_SYMBOL; - e->left.sym = &symbol_yes; - break; - } - break; - default: - ; - } - break; - default: - ; - } - return e; -} - -int expr_contains_symbol(struct expr *dep, struct symbol *sym) -{ - if (!dep) - return 0; - - switch (dep->type) { - case E_AND: - case E_OR: - return expr_contains_symbol(dep->left.expr, sym) || - expr_contains_symbol(dep->right.expr, sym); - case E_SYMBOL: - return dep->left.sym == sym; - case E_EQUAL: - case E_UNEQUAL: - return dep->left.sym == sym || - dep->right.sym == sym; - case E_NOT: - return expr_contains_symbol(dep->left.expr, sym); - default: - ; - } - return 0; -} - -bool expr_depends_symbol(struct expr *dep, struct symbol *sym) -{ - if (!dep) - return false; - - switch (dep->type) { - case E_AND: - return expr_depends_symbol(dep->left.expr, sym) || - expr_depends_symbol(dep->right.expr, sym); - case E_SYMBOL: - return dep->left.sym == sym; - case E_EQUAL: - if (dep->left.sym == sym) { - if (dep->right.sym == &symbol_yes || dep->right.sym == &symbol_mod) - return true; - } - break; - case E_UNEQUAL: - if (dep->left.sym == sym) { - if (dep->right.sym == &symbol_no) - return true; - } - break; - default: - ; - } - return false; -} - -struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2) -{ - struct expr *tmp = NULL; - expr_extract_eq(E_AND, &tmp, ep1, ep2); - if (tmp) { - *ep1 = expr_eliminate_yn(*ep1); - *ep2 = expr_eliminate_yn(*ep2); - } - return tmp; -} - -struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2) -{ - struct expr *tmp = NULL; - expr_extract_eq(E_OR, &tmp, ep1, ep2); - if (tmp) { - *ep1 = expr_eliminate_yn(*ep1); - *ep2 = expr_eliminate_yn(*ep2); - } - return tmp; -} - -void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2) -{ -#define e1 (*ep1) -#define e2 (*ep2) - if (e1->type == type) { - expr_extract_eq(type, ep, &e1->left.expr, &e2); - expr_extract_eq(type, ep, &e1->right.expr, &e2); - return; - } - if (e2->type == type) { - expr_extract_eq(type, ep, ep1, &e2->left.expr); - expr_extract_eq(type, ep, ep1, &e2->right.expr); - return; - } - if (expr_eq(e1, e2)) { - *ep = *ep ? expr_alloc_two(type, *ep, e1) : e1; - expr_free(e2); - if (type == E_AND) { - e1 = expr_alloc_symbol(&symbol_yes); - e2 = expr_alloc_symbol(&symbol_yes); - } else if (type == E_OR) { - e1 = expr_alloc_symbol(&symbol_no); - e2 = expr_alloc_symbol(&symbol_no); - } - } -#undef e1 -#undef e2 -} - -struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym) -{ - struct expr *e1, *e2; - - if (!e) { - e = expr_alloc_symbol(sym); - if (type == E_UNEQUAL) - e = expr_alloc_one(E_NOT, e); - return e; - } - switch (e->type) { - case E_AND: - e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); - e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); - if (sym == &symbol_yes) - e = expr_alloc_two(E_AND, e1, e2); - if (sym == &symbol_no) - e = expr_alloc_two(E_OR, e1, e2); - if (type == E_UNEQUAL) - e = expr_alloc_one(E_NOT, e); - return e; - case E_OR: - e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); - e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); - if (sym == &symbol_yes) - e = expr_alloc_two(E_OR, e1, e2); - if (sym == &symbol_no) - e = expr_alloc_two(E_AND, e1, e2); - if (type == E_UNEQUAL) - e = expr_alloc_one(E_NOT, e); - return e; - case E_NOT: - return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym); - case E_UNEQUAL: - case E_EQUAL: - if (type == E_EQUAL) { - if (sym == &symbol_yes) - return expr_copy(e); - if (sym == &symbol_mod) - return expr_alloc_symbol(&symbol_no); - if (sym == &symbol_no) - return expr_alloc_one(E_NOT, expr_copy(e)); - } else { - if (sym == &symbol_yes) - return expr_alloc_one(E_NOT, expr_copy(e)); - if (sym == &symbol_mod) - return expr_alloc_symbol(&symbol_yes); - if (sym == &symbol_no) - return expr_copy(e); - } - break; - case E_SYMBOL: - return expr_alloc_comp(type, e->left.sym, sym); - case E_CHOICE: - case E_RANGE: - case E_NONE: - /* panic */; - } - return NULL; -} - -tristate expr_calc_value(struct expr *e) -{ - tristate val1, val2; - const char *str1, *str2; - - if (!e) - return yes; - - switch (e->type) { - case E_SYMBOL: - sym_calc_value(e->left.sym); - return e->left.sym->curr.tri; - case E_AND: - val1 = expr_calc_value(e->left.expr); - val2 = expr_calc_value(e->right.expr); - return E_AND(val1, val2); - case E_OR: - val1 = expr_calc_value(e->left.expr); - val2 = expr_calc_value(e->right.expr); - return E_OR(val1, val2); - case E_NOT: - val1 = expr_calc_value(e->left.expr); - return E_NOT(val1); - case E_EQUAL: - sym_calc_value(e->left.sym); - sym_calc_value(e->right.sym); - str1 = sym_get_string_value(e->left.sym); - str2 = sym_get_string_value(e->right.sym); - return !strcmp(str1, str2) ? yes : no; - case E_UNEQUAL: - sym_calc_value(e->left.sym); - sym_calc_value(e->right.sym); - str1 = sym_get_string_value(e->left.sym); - str2 = sym_get_string_value(e->right.sym); - return !strcmp(str1, str2) ? no : yes; - default: - printf("expr_calc_value: %d?\n", e->type); - return no; - } -} - -int expr_compare_type(enum expr_type t1, enum expr_type t2) -{ -#if 0 - return 1; -#else - if (t1 == t2) - return 0; - switch (t1) { - case E_EQUAL: - case E_UNEQUAL: - if (t2 == E_NOT) - return 1; - case E_NOT: - if (t2 == E_AND) - return 1; - case E_AND: - if (t2 == E_OR) - return 1; - case E_OR: - if (t2 == E_CHOICE) - return 1; - case E_CHOICE: - if (t2 == 0) - return 1; - default: - return -1; - } - printf("[%dgt%d?]", t1, t2); - return 0; -#endif -} - -void expr_print(struct expr *e, void (*fn)(void *, const char *), void *data, int prevtoken) -{ - if (!e) { - fn(data, "y"); - return; - } - - if (expr_compare_type(prevtoken, e->type) > 0) - fn(data, "("); - switch (e->type) { - case E_SYMBOL: - if (e->left.sym->name) - fn(data, e->left.sym->name); - else - fn(data, ""); - break; - case E_NOT: - fn(data, "!"); - expr_print(e->left.expr, fn, data, E_NOT); - break; - case E_EQUAL: - fn(data, e->left.sym->name); - fn(data, "="); - fn(data, e->right.sym->name); - break; - case E_UNEQUAL: - fn(data, e->left.sym->name); - fn(data, "!="); - fn(data, e->right.sym->name); - break; - case E_OR: - expr_print(e->left.expr, fn, data, E_OR); - fn(data, " || "); - expr_print(e->right.expr, fn, data, E_OR); - break; - case E_AND: - expr_print(e->left.expr, fn, data, E_AND); - fn(data, " && "); - expr_print(e->right.expr, fn, data, E_AND); - break; - case E_CHOICE: - fn(data, e->right.sym->name); - if (e->left.expr) { - fn(data, " ^ "); - expr_print(e->left.expr, fn, data, E_CHOICE); - } - break; - case E_RANGE: - fn(data, "["); - fn(data, e->left.sym->name); - fn(data, " "); - fn(data, e->right.sym->name); - fn(data, "]"); - break; - default: - { - char buf[32]; - sprintf(buf, "", e->type); - fn(data, buf); - break; - } - } - if (expr_compare_type(prevtoken, e->type) > 0) - fn(data, ")"); -} - -static void expr_print_file_helper(void *data, const char *str) -{ - fwrite(str, strlen(str), 1, data); -} - -void expr_fprint(struct expr *e, FILE *out) -{ - expr_print(e, expr_print_file_helper, out, E_NONE); -} - -static void expr_print_gstr_helper(void *data, const char *str) -{ - str_append((struct gstr*)data, str); -} - -void expr_gstr_print(struct expr *e, struct gstr *gs) -{ - expr_print(e, expr_print_gstr_helper, gs, E_NONE); -} diff --git a/2.3/menu/expr.h b/2.3/menu/expr.h deleted file mode 100644 index 7d39ff4..0000000 --- a/2.3/menu/expr.h +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#ifndef EXPR_H -#define EXPR_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifndef __cplusplus -#include -#endif - -struct file { - struct file *next; - struct file *parent; - char *name; - int lineno; - int flags; -}; - -#define FILE_BUSY 0x0001 -#define FILE_SCANNED 0x0002 -#define FILE_PRINTED 0x0004 - -typedef enum tristate { - no, mod, yes -} tristate; - -enum expr_type { - E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_CHOICE, E_SYMBOL, E_RANGE -}; - -union expr_data { - struct expr *expr; - struct symbol *sym; -}; - -struct expr { - enum expr_type type; - union expr_data left, right; -}; - -#define E_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2)) -#define E_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2)) -#define E_NOT(dep) (2-(dep)) - -struct expr_value { - struct expr *expr; - tristate tri; -}; - -struct symbol_value { - void *val; - tristate tri; -}; - -enum symbol_type { - S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER -}; - -struct symbol { - struct symbol *next; - char *name; - char *help; - enum symbol_type type; - struct symbol_value curr, user; - tristate visible; - int flags; - struct property *prop; - struct expr *dep, *dep2; - struct expr_value rev_dep; -}; - -#define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) - -#define SYMBOL_YES 0x0001 -#define SYMBOL_MOD 0x0002 -#define SYMBOL_NO 0x0004 -#define SYMBOL_CONST 0x0007 -#define SYMBOL_CHECK 0x0008 -#define SYMBOL_CHOICE 0x0010 -#define SYMBOL_CHOICEVAL 0x0020 -#define SYMBOL_PRINTED 0x0040 -#define SYMBOL_VALID 0x0080 -#define SYMBOL_OPTIONAL 0x0100 -#define SYMBOL_WRITE 0x0200 -#define SYMBOL_CHANGED 0x0400 -#define SYMBOL_NEW 0x0800 -#define SYMBOL_AUTO 0x1000 -#define SYMBOL_CHECKED 0x2000 -#define SYMBOL_CHECK_DONE 0x4000 -#define SYMBOL_WARNED 0x8000 - -#define SYMBOL_MAXLENGTH 256 -#define SYMBOL_HASHSIZE 257 -#define SYMBOL_HASHMASK 0xff - -enum prop_type { - P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE -}; - -struct property { - struct property *next; - struct symbol *sym; - enum prop_type type; - const char *text; - struct expr_value visible; - struct expr *expr; - struct menu *menu; - struct file *file; - int lineno; -}; - -#define for_all_properties(sym, st, tok) \ - for (st = sym->prop; st; st = st->next) \ - if (st->type == (tok)) -#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT) -#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE) -#define for_all_prompts(sym, st) \ - for (st = sym->prop; st; st = st->next) \ - if (st->text) - -struct menu { - struct menu *next; - struct menu *parent; - struct menu *list; - struct symbol *sym; - struct property *prompt; - struct expr *dep; - unsigned int flags; - //char *help; - struct file *file; - int lineno; - void *data; -}; - -#define MENU_CHANGED 0x0001 -#define MENU_ROOT 0x0002 - -#ifndef SWIG - -extern struct file *file_list; -extern struct file *current_file; -struct file *lookup_file(const char *name); - -extern struct symbol symbol_yes, symbol_no, symbol_mod; -extern struct symbol *modules_sym; -extern int cdebug; -struct expr *expr_alloc_symbol(struct symbol *sym); -struct expr *expr_alloc_one(enum expr_type type, struct expr *ce); -struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2); -struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2); -struct expr *expr_alloc_and(struct expr *e1, struct expr *e2); -struct expr *expr_alloc_or(struct expr *e1, struct expr *e2); -struct expr *expr_copy(struct expr *org); -void expr_free(struct expr *e); -int expr_eq(struct expr *e1, struct expr *e2); -void expr_eliminate_eq(struct expr **ep1, struct expr **ep2); -tristate expr_calc_value(struct expr *e); -struct expr *expr_eliminate_yn(struct expr *e); -struct expr *expr_trans_bool(struct expr *e); -struct expr *expr_eliminate_dups(struct expr *e); -struct expr *expr_transform(struct expr *e); -int expr_contains_symbol(struct expr *dep, struct symbol *sym); -bool expr_depends_symbol(struct expr *dep, struct symbol *sym); -struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2); -struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2); -void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2); -struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym); - -void expr_fprint(struct expr *e, FILE *out); -struct gstr; /* forward */ -void expr_gstr_print(struct expr *e, struct gstr *gs); - -static inline int expr_is_yes(struct expr *e) -{ - return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes); -} - -static inline int expr_is_no(struct expr *e) -{ - return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no); -} -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* EXPR_H */ diff --git a/2.3/menu/lex.zconf.c_shipped b/2.3/menu/lex.zconf.c_shipped deleted file mode 100644 index 8e5e85e..0000000 --- a/2.3/menu/lex.zconf.c_shipped +++ /dev/null @@ -1,3688 +0,0 @@ - -#line 3 "lex.zconf.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 31 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE zconfrestart(zconfin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE 16384 -#endif - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -extern int zconfleng; - -extern FILE *zconfin, *zconfout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up zconftext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up zconftext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, (yytext_ptr) ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef unsigned int yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via zconfrestart()), so that the user can continue scanning by - * just pointing zconfin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when zconftext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int zconfleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow zconfwrap()'s to do buffer switches - * instead of setting up a fresh zconfin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void zconfrestart (FILE *input_file ); -void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size ); -void zconf_delete_buffer (YY_BUFFER_STATE b ); -void zconf_flush_buffer (YY_BUFFER_STATE b ); -void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer ); -void zconfpop_buffer_state (void ); - -static void zconfensure_buffer_stack (void ); -static void zconf_load_buffer_state (void ); -static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file ); - -#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len ); - -void *zconfalloc (yy_size_t ); -void *zconfrealloc (void *,yy_size_t ); -void zconffree (void * ); - -#define yy_new_buffer zconf_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - zconfensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - zconf_create_buffer(zconfin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - zconfensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - zconf_create_buffer(zconfin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -#define zconfwrap(n) 1 -#define YY_SKIP_YYWRAP - -typedef unsigned char YY_CHAR; - -FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0; - -typedef int yy_state_type; - -extern int zconflineno; - -int zconflineno = 1; - -extern char *zconftext; -#define yytext_ptr zconftext -static yyconst flex_int16_t yy_nxt[][38] = - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 18, 16, 16, 18, 18, 19, 20, - 21, 22, 18, 18, 23, 24, 18, 25, 18, 26, - 27, 18, 28, 29, 30, 18, 18, 16 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 18, 16, 16, 18, 18, 19, 20, - 21, 22, 18, 18, 23, 24, 18, 25, 18, 26, - 27, 18, 28, 29, 30, 18, 18, 16 - - }, - - { - 11, 31, 32, 33, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31 - }, - - { - 11, 31, 32, 33, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31 - }, - - { - 11, 34, 34, 35, 34, 36, 34, 34, 36, 34, - 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, - - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34 - }, - - { - 11, 34, 34, 35, 34, 36, 34, 34, 36, 34, - 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34 - }, - - { - 11, 38, 38, 39, 40, 41, 42, 43, 41, 44, - 45, 46, 47, 47, 48, 49, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 50, 47, 47, 47, 51, - 47, 47, 47, 47, 47, 47, 47, 52 - - }, - - { - 11, 38, 38, 39, 40, 41, 42, 43, 41, 44, - 45, 46, 47, 47, 48, 49, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 50, 47, 47, 47, 51, - 47, 47, 47, 47, 47, 47, 47, 52 - }, - - { - -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, - -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, - -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, - -11, -11, -11, -11, -11, -11, -11, -11 - }, - - { - 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, - -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, - - -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, - -12, -12, -12, -12, -12, -12, -12, -12 - }, - - { - 11, -13, 53, 54, -13, -13, 55, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13 - }, - - { - 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -14, -14 - - }, - - { - 11, 56, 56, 57, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56 - }, - - { - 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, - -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, - -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, - -16, -16, -16, -16, -16, -16, -16, -16 - }, - - { - 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, - -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, - - -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, - -17, -17, -17, -17, -17, -17, -17, -17 - }, - - { - 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, - -18, -18, -18, 58, -18, -18, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -18 - }, - - { - 11, -19, -19, -19, -19, -19, -19, -19, -19, -19, - -19, -19, -19, 58, -19, -19, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, - 58, 58, 58, 58, 58, 58, 58, -19 - - }, - - { - 11, -20, -20, -20, -20, -20, -20, -20, -20, -20, - -20, -20, -20, 58, -20, -20, 58, 58, 58, 58, - 58, 58, 58, 58, 60, 58, 58, 58, 58, 61, - 58, 58, 58, 58, 58, 58, 58, -20 - }, - - { - 11, -21, -21, -21, -21, -21, -21, -21, -21, -21, - -21, -21, -21, 58, -21, -21, 58, 58, 58, 58, - 58, 62, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -21 - }, - - { - 11, -22, -22, -22, -22, -22, -22, -22, -22, -22, - -22, -22, -22, 58, -22, -22, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 63, 58, - 58, 58, 58, 58, 58, 58, 58, -22 - }, - - { - 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, - -23, -23, -23, 58, -23, -23, 58, 58, 58, 58, - 58, 64, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -23 - }, - - { - 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, - -24, -24, -24, 58, -24, -24, 58, 58, 58, 58, - 58, 58, 65, 58, 58, 58, 58, 58, 66, 58, - 58, 58, 58, 58, 58, 58, 58, -24 - - }, - - { - 11, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, 58, -25, -25, 58, 67, 58, 58, - 58, 68, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -25 - }, - - { - 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, 58, -26, -26, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 69, 58, 58, 58, 58, 58, 58, -26 - }, - - { - 11, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, 58, -27, -27, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 70, 58, 58, 58, 58, -27 - }, - - { - 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, 58, -28, -28, 58, 71, 58, 58, - 58, 72, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -28 - }, - - { - 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, 58, -29, -29, 58, 58, 58, 58, - 58, 73, 58, 58, 58, 58, 58, 58, 58, 74, - 58, 58, 58, 58, 75, 58, 58, -29 - - }, - - { - 11, -30, -30, -30, -30, -30, -30, -30, -30, -30, - -30, -30, -30, 58, -30, -30, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 76, 58, 58, 58, 58, -30 - }, - - { - 11, 77, 77, -31, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77 - }, - - { - 11, -32, 78, 79, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32 - }, - - { - 11, 80, -33, -33, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80 - }, - - { - 11, 81, 81, 82, 81, -34, 81, 81, -34, 81, - 81, 81, 81, 81, 81, -34, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81 - - }, - - { - 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35 - }, - - { - 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36 - }, - - { - 11, 83, 83, 84, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83 - }, - - { - 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38 - }, - - { - 11, -39, -39, -39, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39, -39 - - }, - - { - 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, - -40, -40, -40, -40, 85, -40, -40, -40, -40, -40, - -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, - -40, -40, -40, -40, -40, -40, -40, -40 - }, - - { - 11, -41, -41, -41, -41, -41, -41, -41, -41, -41, - -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, - -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, - -41, -41, -41, -41, -41, -41, -41, -41 - }, - - { - 11, 86, 86, -42, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86 - }, - - { - 11, -43, -43, -43, -43, -43, -43, 87, -43, -43, - -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, - -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, - -43, -43, -43, -43, -43, -43, -43, -43 - }, - - { - 11, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44 - - }, - - { - 11, -45, -45, -45, -45, -45, -45, -45, -45, -45, - -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, - -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, - -45, -45, -45, -45, -45, -45, -45, -45 - }, - - { - 11, -46, -46, -46, -46, -46, -46, -46, -46, -46, - -46, 88, 89, 89, -46, -46, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -46 - }, - - { - 11, -47, -47, -47, -47, -47, -47, -47, -47, -47, - -47, 89, 89, 89, -47, -47, 89, 89, 89, 89, - - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -47 - }, - - { - 11, -48, -48, -48, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48, -48 - }, - - { - 11, -49, -49, 90, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49 - - }, - - { - 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, - -50, 89, 89, 89, -50, -50, 89, 89, 89, 89, - 89, 89, 91, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -50 - }, - - { - 11, -51, -51, -51, -51, -51, -51, -51, -51, -51, - -51, 89, 89, 89, -51, -51, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 92, 89, - 89, 89, 89, 89, 89, 89, 89, -51 - }, - - { - 11, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, - - -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, -52, -52, 93 - }, - - { - 11, -53, 53, 54, -53, -53, 55, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53, -53 - }, - - { - 11, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54 - - }, - - { - 11, 56, 56, 57, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56 - }, - - { - 11, 56, 56, 57, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56 - }, - - { - 11, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57 - }, - - { - 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, - -58, -58, -58, 58, -58, -58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -58 - }, - - { - 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, - -59, -59, -59, 58, -59, -59, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 94, - 58, 58, 58, 58, 58, 58, 58, -59 - - }, - - { - 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, - -60, -60, -60, 58, -60, -60, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 95, - 58, 58, 58, 58, 58, 58, 58, -60 - }, - - { - 11, -61, -61, -61, -61, -61, -61, -61, -61, -61, - -61, -61, -61, 58, -61, -61, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 96, 97, 58, - 58, 58, 58, 58, 58, 58, 58, -61 - }, - - { - 11, -62, -62, -62, -62, -62, -62, -62, -62, -62, - -62, -62, -62, 58, -62, -62, 58, 58, 58, 58, - - 58, 58, 98, 58, 58, 58, 58, 58, 58, 58, - 99, 58, 58, 58, 58, 58, 58, -62 - }, - - { - 11, -63, -63, -63, -63, -63, -63, -63, -63, -63, - -63, -63, -63, 58, -63, -63, 58, 100, 58, 58, - 101, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -63 - }, - - { - 11, -64, -64, -64, -64, -64, -64, -64, -64, -64, - -64, -64, -64, 58, -64, -64, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 102, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 103, -64 - - }, - - { - 11, -65, -65, -65, -65, -65, -65, -65, -65, -65, - -65, -65, -65, 58, -65, -65, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -65 - }, - - { - 11, -66, -66, -66, -66, -66, -66, -66, -66, -66, - -66, -66, -66, 58, -66, -66, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 104, 58, 58, -66 - }, - - { - 11, -67, -67, -67, -67, -67, -67, -67, -67, -67, - -67, -67, -67, 58, -67, -67, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 105, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -67 - }, - - { - 11, -68, -68, -68, -68, -68, -68, -68, -68, -68, - -68, -68, -68, 58, -68, -68, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 106, 58, - 58, 58, 58, 58, 58, 58, 58, -68 - }, - - { - 11, -69, -69, -69, -69, -69, -69, -69, -69, -69, - -69, -69, -69, 58, -69, -69, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 107, 58, 58, -69 - - }, - - { - 11, -70, -70, -70, -70, -70, -70, -70, -70, -70, - -70, -70, -70, 58, -70, -70, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 108, - 58, 58, 58, 58, 58, 58, 58, -70 - }, - - { - 11, -71, -71, -71, -71, -71, -71, -71, -71, -71, - -71, -71, -71, 58, -71, -71, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 109, 58, - 58, 58, 58, 58, 58, 58, 58, -71 - }, - - { - 11, -72, -72, -72, -72, -72, -72, -72, -72, -72, - -72, -72, -72, 58, -72, -72, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 110, 58, 58, 58, 58, 58, -72 - }, - - { - 11, -73, -73, -73, -73, -73, -73, -73, -73, -73, - -73, -73, -73, 58, -73, -73, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 111, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -73 - }, - - { - 11, -74, -74, -74, -74, -74, -74, -74, -74, -74, - -74, -74, -74, 58, -74, -74, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 112, 58, -74 - - }, - - { - 11, -75, -75, -75, -75, -75, -75, -75, -75, -75, - -75, -75, -75, 58, -75, -75, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 113, 58, 58, 58, 58, -75 - }, - - { - 11, -76, -76, -76, -76, -76, -76, -76, -76, -76, - -76, -76, -76, 58, -76, -76, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 114, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -76 - }, - - { - 11, 77, 77, -77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77 - }, - - { - 11, -78, 78, 79, -78, -78, -78, -78, -78, -78, - -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, - -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, - -78, -78, -78, -78, -78, -78, -78, -78 - }, - - { - 11, 80, -79, -79, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80 - - }, - - { - 11, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80 - }, - - { - 11, 81, 81, 82, 81, -81, 81, 81, -81, 81, - 81, 81, 81, 81, 81, -81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81 - }, - - { - 11, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82 - }, - - { - 11, -83, -83, 84, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83 - }, - - { - 11, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84 - - }, - - { - 11, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85 - }, - - { - 11, 86, 86, -86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86 - }, - - { - 11, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87 - }, - - { - 11, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, 115, 89, 89, -88, -88, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -88 - }, - - { - 11, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, 89, 89, 89, -89, -89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -89 - - }, - - { - 11, -90, -90, -90, -90, -90, -90, -90, -90, -90, - -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, - -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, - -90, -90, -90, -90, -90, -90, -90, -90 - }, - - { - 11, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, 89, 89, 89, -91, -91, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -91 - }, - - { - 11, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, 89, 89, 89, -92, -92, 89, 89, 89, 89, - - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -92 - }, - - { - 11, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93 - }, - - { - 11, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, 58, -94, -94, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 116, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -94 - - }, - - { - 11, -95, -95, -95, -95, -95, -95, -95, -95, -95, - -95, -95, -95, 58, -95, -95, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 117, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -95 - }, - - { - 11, -96, -96, -96, -96, -96, -96, -96, -96, -96, - -96, -96, -96, 58, -96, -96, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 118, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -96 - }, - - { - 11, -97, -97, -97, -97, -97, -97, -97, -97, -97, - -97, -97, -97, 58, -97, -97, 58, 58, 58, 58, - - 58, 58, 119, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -97 - }, - - { - 11, -98, -98, -98, -98, -98, -98, -98, -98, -98, - -98, -98, -98, 58, -98, -98, 120, 121, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -98 - }, - - { - 11, -99, -99, -99, -99, -99, -99, -99, -99, -99, - -99, -99, -99, 58, -99, -99, 58, 58, 58, 58, - 58, 122, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -99 - - }, - - { - 11, -100, -100, -100, -100, -100, -100, -100, -100, -100, - -100, -100, -100, 58, -100, -100, 58, 58, 123, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -100 - }, - - { - 11, -101, -101, -101, -101, -101, -101, -101, -101, -101, - -101, -101, -101, 58, -101, -101, 58, 58, 58, 124, - 58, 58, 58, 58, 58, 125, 58, 126, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -101 - }, - - { - 11, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, 58, -102, -102, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 127, 58, 58, 58, 58, 58, 58, -102 - }, - - { - 11, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, 58, -103, -103, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -103 - }, - - { - 11, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, 58, -104, -104, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -104 - - }, - - { - 11, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, 58, -105, -105, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 128, 58, - 58, 58, 58, 58, 58, 58, 58, -105 - }, - - { - 11, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, 58, -106, -106, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 129, 58, -106 - }, - - { - 11, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, 58, -107, -107, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 130, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -107 - }, - - { - 11, -108, -108, -108, -108, -108, -108, -108, -108, -108, - -108, -108, -108, 58, -108, -108, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 131, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -108 - }, - - { - 11, -109, -109, -109, -109, -109, -109, -109, -109, -109, - -109, -109, -109, 58, -109, -109, 58, 58, 58, 58, - 58, 58, 58, 132, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -109 - - }, - - { - 11, -110, -110, -110, -110, -110, -110, -110, -110, -110, - -110, -110, -110, 58, -110, -110, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 133, 58, -110 - }, - - { - 11, -111, -111, -111, -111, -111, -111, -111, -111, -111, - -111, -111, -111, 58, -111, -111, 58, 58, 58, 58, - 58, 134, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -111 - }, - - { - 11, -112, -112, -112, -112, -112, -112, -112, -112, -112, - -112, -112, -112, 58, -112, -112, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 135, 58, 58, 58, 58, -112 - }, - - { - 11, -113, -113, -113, -113, -113, -113, -113, -113, -113, - -113, -113, -113, 58, -113, -113, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 136, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -113 - }, - - { - 11, -114, -114, -114, -114, -114, -114, -114, -114, -114, - -114, -114, -114, 58, -114, -114, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 137, 58, 58, 58, -114 - - }, - - { - 11, -115, -115, -115, -115, -115, -115, -115, -115, -115, - -115, 89, 89, 89, -115, -115, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -115 - }, - - { - 11, -116, -116, -116, -116, -116, -116, -116, -116, -116, - -116, -116, -116, 58, -116, -116, 58, 58, 58, 58, - 58, 138, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -116 - }, - - { - 11, -117, -117, -117, -117, -117, -117, -117, -117, -117, - -117, -117, -117, 58, -117, -117, 58, 58, 58, 139, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -117 - }, - - { - 11, -118, -118, -118, -118, -118, -118, -118, -118, -118, - -118, -118, -118, 58, -118, -118, 58, 58, 58, 58, - 58, 140, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -118 - }, - - { - 11, -119, -119, -119, -119, -119, -119, -119, -119, -119, - -119, -119, -119, 58, -119, -119, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 141, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -119 - - }, - - { - 11, -120, -120, -120, -120, -120, -120, -120, -120, -120, - -120, -120, -120, 58, -120, -120, 58, 58, 142, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 143, 58, 58, -120 - }, - - { - 11, -121, -121, -121, -121, -121, -121, -121, -121, -121, - -121, -121, -121, 58, -121, -121, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 144, 58, -121 - }, - - { - 11, -122, -122, -122, -122, -122, -122, -122, -122, -122, - -122, -122, -122, 58, -122, -122, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 145, 58, - 58, 58, 58, 58, 58, 58, 58, -122 - }, - - { - 11, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, 58, -123, -123, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 146, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -123 - }, - - { - 11, -124, -124, -124, -124, -124, -124, -124, -124, -124, - -124, -124, -124, 58, -124, -124, 58, 58, 58, 58, - 58, 58, 58, 58, 147, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -124 - - }, - - { - 11, -125, -125, -125, -125, -125, -125, -125, -125, -125, - -125, -125, -125, 58, -125, -125, 58, 58, 58, 58, - 58, 58, 148, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -125 - }, - - { - 11, -126, -126, -126, -126, -126, -126, -126, -126, -126, - -126, -126, -126, 58, -126, -126, 58, 58, 58, 58, - 58, 149, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -126 - }, - - { - 11, -127, -127, -127, -127, -127, -127, -127, -127, -127, - -127, -127, -127, 58, -127, -127, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -127 - }, - - { - 11, -128, -128, -128, -128, -128, -128, -128, -128, -128, - -128, -128, -128, 58, -128, -128, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 150, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -128 - }, - - { - 11, -129, -129, -129, -129, -129, -129, -129, -129, -129, - -129, -129, -129, 58, -129, -129, 58, 58, 58, 151, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -129 - - }, - - { - 11, -130, -130, -130, -130, -130, -130, -130, -130, -130, - -130, -130, -130, 58, -130, -130, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 152, - 58, 58, 58, 58, 58, 58, 58, -130 - }, - - { - 11, -131, -131, -131, -131, -131, -131, -131, -131, -131, - -131, -131, -131, 58, -131, -131, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 153, 58, 58, 58, 58, 58, 58, -131 - }, - - { - 11, -132, -132, -132, -132, -132, -132, -132, -132, -132, - -132, -132, -132, 58, -132, -132, 58, 58, 58, 58, - - 58, 154, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -132 - }, - - { - 11, -133, -133, -133, -133, -133, -133, -133, -133, -133, - -133, -133, -133, 58, -133, -133, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 155, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -133 - }, - - { - 11, -134, -134, -134, -134, -134, -134, -134, -134, -134, - -134, -134, -134, 58, -134, -134, 58, 58, 58, 156, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -134 - - }, - - { - 11, -135, -135, -135, -135, -135, -135, -135, -135, -135, - -135, -135, -135, 58, -135, -135, 58, 58, 58, 157, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -135 - }, - - { - 11, -136, -136, -136, -136, -136, -136, -136, -136, -136, - -136, -136, -136, 58, -136, -136, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 158, 58, - 58, 58, 58, 58, 58, 58, 58, -136 - }, - - { - 11, -137, -137, -137, -137, -137, -137, -137, -137, -137, - -137, -137, -137, 58, -137, -137, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 159, 58, 58, -137 - }, - - { - 11, -138, -138, -138, -138, -138, -138, -138, -138, -138, - -138, -138, -138, 58, -138, -138, 58, 160, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -138 - }, - - { - 11, -139, -139, -139, -139, -139, -139, -139, -139, -139, - -139, -139, -139, 58, -139, -139, 58, 58, 58, 58, - 58, 161, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -139 - - }, - - { - 11, -140, -140, -140, -140, -140, -140, -140, -140, -140, - -140, -140, -140, 58, -140, -140, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 162, 58, - 58, 58, 58, 58, 58, 58, 58, -140 - }, - - { - 11, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, 58, -141, -141, 58, 58, 58, 58, - 58, 58, 58, 163, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -141 - }, - - { - 11, -142, -142, -142, -142, -142, -142, -142, -142, -142, - -142, -142, -142, 58, -142, -142, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 164, - 58, 58, 58, 58, 58, 58, 58, -142 - }, - - { - 11, -143, -143, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, 58, -143, -143, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 165, 58, 58, 58, 58, -143 - }, - - { - 11, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -144, -144, 58, -144, -144, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 166, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -144 - - }, - - { - 11, -145, -145, -145, -145, -145, -145, -145, -145, -145, - -145, -145, -145, 58, -145, -145, 58, 58, 58, 58, - 167, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -145 - }, - - { - 11, -146, -146, -146, -146, -146, -146, -146, -146, -146, - -146, -146, -146, 58, -146, -146, 58, 58, 58, 58, - 58, 168, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -146 - }, - - { - 11, -147, -147, -147, -147, -147, -147, -147, -147, -147, - -147, -147, -147, 58, -147, -147, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 169, - 58, 58, 58, 58, 58, 58, 58, -147 - }, - - { - 11, -148, -148, -148, -148, -148, -148, -148, -148, -148, - -148, -148, -148, 58, -148, -148, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -148 - }, - - { - 11, -149, -149, -149, -149, -149, -149, -149, -149, -149, - -149, -149, -149, 58, -149, -149, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 170, 58, - 58, 58, 58, 58, 58, 58, 58, -149 - - }, - - { - 11, -150, -150, -150, -150, -150, -150, -150, -150, -150, - -150, -150, -150, 58, -150, -150, 58, 58, 58, 58, - 58, 171, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -150 - }, - - { - 11, -151, -151, -151, -151, -151, -151, -151, -151, -151, - -151, -151, -151, 58, -151, -151, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 172, - 58, 58, 58, 58, 58, 58, 58, -151 - }, - - { - 11, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, 58, -152, -152, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 173, 58, - 58, 58, 58, 58, 58, 58, 58, -152 - }, - - { - 11, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, 58, -153, -153, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 174, 58, 58, -153 - }, - - { - 11, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, 58, -154, -154, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -154 - - }, - - { - 11, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, 58, -155, -155, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 175, 58, 58, 58, 58, -155 - }, - - { - 11, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, 58, -156, -156, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 176, 58, 58, -156 - }, - - { - 11, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, 58, -157, -157, 58, 58, 58, 58, - - 58, 177, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -157 - }, - - { - 11, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, 58, -158, -158, 58, 58, 58, 58, - 58, 58, 58, 178, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -158 - }, - - { - 11, -159, -159, -159, -159, -159, -159, -159, -159, -159, - -159, -159, -159, 58, -159, -159, 58, 179, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -159 - - }, - - { - 11, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, 58, -160, -160, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 180, 58, - 58, 58, 58, 58, 58, 58, 58, -160 - }, - - { - 11, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, 58, -161, -161, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -161 - }, - - { - 11, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, 58, -162, -162, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 181, 58, 58, -162 - }, - - { - 11, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, 58, -163, -163, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -163 - }, - - { - 11, -164, -164, -164, -164, -164, -164, -164, -164, -164, - -164, -164, -164, 58, -164, -164, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 182, - 58, 58, 58, 58, 58, 58, 58, -164 - - }, - - { - 11, -165, -165, -165, -165, -165, -165, -165, -165, -165, - -165, -165, -165, 58, -165, -165, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 183, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -165 - }, - - { - 11, -166, -166, -166, -166, -166, -166, -166, -166, -166, - -166, -166, -166, 58, -166, -166, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 184, 58, 58, -166 - }, - - { - 11, -167, -167, -167, -167, -167, -167, -167, -167, -167, - -167, -167, -167, 58, -167, -167, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 185, 58, 58, 58, -167 - }, - - { - 11, -168, -168, -168, -168, -168, -168, -168, -168, -168, - -168, -168, -168, 58, -168, -168, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -168 - }, - - { - 11, -169, -169, -169, -169, -169, -169, -169, -169, -169, - -169, -169, -169, 58, -169, -169, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 186, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -169 - - }, - - { - 11, -170, -170, -170, -170, -170, -170, -170, -170, -170, - -170, -170, -170, 58, -170, -170, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 187, 58, -170 - }, - - { - 11, -171, -171, -171, -171, -171, -171, -171, -171, -171, - -171, -171, -171, 58, -171, -171, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 188, 58, - 58, 58, 58, 58, 58, 58, 58, -171 - }, - - { - 11, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, 58, -172, -172, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 189, 58, - 58, 58, 58, 58, 58, 58, 58, -172 - }, - - { - 11, -173, -173, -173, -173, -173, -173, -173, -173, -173, - -173, -173, -173, 58, -173, -173, 58, 190, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -173 - }, - - { - 11, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, 58, -174, -174, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -174 - - }, - - { - 11, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, 58, -175, -175, 58, 58, 58, 58, - 58, 191, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -175 - }, - - { - 11, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, 58, -176, -176, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -176 - }, - - { - 11, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, 58, -177, -177, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -177 - }, - - { - 11, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, 58, -178, -178, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -178 - }, - - { - 11, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, 58, -179, -179, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 192, 58, 58, -179 - - }, - - { - 11, -180, -180, -180, -180, -180, -180, -180, -180, -180, - -180, -180, -180, 58, -180, -180, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -180 - }, - - { - 11, -181, -181, -181, -181, -181, -181, -181, -181, -181, - -181, -181, -181, 58, -181, -181, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -181 - }, - - { - 11, -182, -182, -182, -182, -182, -182, -182, -182, -182, - -182, -182, -182, 58, -182, -182, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 193, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -182 - }, - - { - 11, -183, -183, -183, -183, -183, -183, -183, -183, -183, - -183, -183, -183, 58, -183, -183, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 194, 58, 58, 58, -183 - }, - - { - 11, -184, -184, -184, -184, -184, -184, -184, -184, -184, - -184, -184, -184, 58, -184, -184, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -184 - - }, - - { - 11, -185, -185, -185, -185, -185, -185, -185, -185, -185, - -185, -185, -185, 58, -185, -185, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -185 - }, - - { - 11, -186, -186, -186, -186, -186, -186, -186, -186, -186, - -186, -186, -186, 58, -186, -186, 58, 58, 58, 195, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -186 - }, - - { - 11, -187, -187, -187, -187, -187, -187, -187, -187, -187, - -187, -187, -187, 58, -187, -187, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -187 - }, - - { - 11, -188, -188, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -188, 58, -188, -188, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 196, 58, -188 - }, - - { - 11, -189, -189, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -189, 58, -189, -189, 58, 58, 58, 58, - 58, 58, 197, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -189 - - }, - - { - 11, -190, -190, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, 58, -190, -190, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 198, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -190 - }, - - { - 11, -191, -191, -191, -191, -191, -191, -191, -191, -191, - -191, -191, -191, 58, -191, -191, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 199, 58, 58, 58, -191 - }, - - { - 11, -192, -192, -192, -192, -192, -192, -192, -192, -192, - -192, -192, -192, 58, -192, -192, 58, 58, 58, 58, - - 58, 200, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -192 - }, - - { - 11, -193, -193, -193, -193, -193, -193, -193, -193, -193, - -193, -193, -193, 58, -193, -193, 58, 58, 58, 58, - 58, 201, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -193 - }, - - { - 11, -194, -194, -194, -194, -194, -194, -194, -194, -194, - -194, -194, -194, 58, -194, -194, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 202, 58, 58, -194 - - }, - - { - 11, -195, -195, -195, -195, -195, -195, -195, -195, -195, - -195, -195, -195, 58, -195, -195, 58, 58, 58, 58, - 58, 203, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -195 - }, - - { - 11, -196, -196, -196, -196, -196, -196, -196, -196, -196, - -196, -196, -196, 58, -196, -196, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -196 - }, - - { - 11, -197, -197, -197, -197, -197, -197, -197, -197, -197, - -197, -197, -197, 58, -197, -197, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 204, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -197 - }, - - { - 11, -198, -198, -198, -198, -198, -198, -198, -198, -198, - -198, -198, -198, 58, -198, -198, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -198 - }, - - { - 11, -199, -199, -199, -199, -199, -199, -199, -199, -199, - -199, -199, -199, 58, -199, -199, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -199 - - }, - - { - 11, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, 58, -200, -200, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -200 - }, - - { - 11, -201, -201, -201, -201, -201, -201, -201, -201, -201, - -201, -201, -201, 58, -201, -201, 58, 205, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -201 - }, - - { - 11, -202, -202, -202, -202, -202, -202, -202, -202, -202, - -202, -202, -202, 58, -202, -202, 58, 206, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -202 - }, - - { - 11, -203, -203, -203, -203, -203, -203, -203, -203, -203, - -203, -203, -203, 58, -203, -203, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -203 - }, - - { - 11, -204, -204, -204, -204, -204, -204, -204, -204, -204, - -204, -204, -204, 58, -204, -204, 58, 58, 58, 58, - 58, 58, 58, 207, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -204 - - }, - - { - 11, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, -205, -205, 58, -205, -205, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 208, 58, - 58, 58, 58, 58, 58, 58, 58, -205 - }, - - { - 11, -206, -206, -206, -206, -206, -206, -206, -206, -206, - -206, -206, -206, 58, -206, -206, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 209, 58, 58, -206 - }, - - { - 11, -207, -207, -207, -207, -207, -207, -207, -207, -207, - -207, -207, -207, 58, -207, -207, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -207 - }, - - { - 11, -208, -208, -208, -208, -208, -208, -208, -208, -208, - -208, -208, -208, 58, -208, -208, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -208 - }, - - { - 11, -209, -209, -209, -209, -209, -209, -209, -209, -209, - -209, -209, -209, 58, -209, -209, 58, 58, 58, 58, - 58, 210, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -209 - - }, - - { - 11, -210, -210, -210, -210, -210, -210, -210, -210, -210, - -210, -210, -210, 58, -210, -210, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -210 - }, - - } ; - -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up zconftext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - zconfleng = (size_t) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 64 -#define YY_END_OF_BUFFER 65 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[211] = - { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 65, 5, 4, 3, 2, 36, 37, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 63, 60, 62, 55, 59, 58, 57, 53, 48, 42, - 47, 51, 53, 40, 41, 50, 50, 43, 53, 50, - 50, 53, 4, 3, 2, 2, 1, 35, 35, 35, - 35, 35, 35, 35, 16, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 63, 60, 62, 61, - 55, 54, 57, 56, 44, 51, 38, 50, 50, 52, - 45, 46, 39, 35, 35, 35, 35, 35, 35, 35, - - 35, 35, 30, 29, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 49, 25, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 15, 35, 7, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 17, 35, 35, - 35, 35, 35, 34, 35, 35, 35, 35, 35, 35, - 10, 35, 13, 35, 35, 35, 35, 33, 35, 35, - 35, 35, 35, 22, 35, 32, 9, 31, 35, 26, - 12, 35, 35, 21, 18, 35, 8, 35, 35, 35, - 35, 35, 27, 35, 35, 6, 35, 20, 19, 23, - - 35, 35, 11, 35, 35, 35, 14, 28, 35, 24 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, - 10, 1, 1, 1, 11, 12, 12, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, - 14, 1, 1, 1, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 1, 15, 1, 1, 16, 1, 17, 18, 19, 20, - - 21, 22, 23, 24, 25, 13, 13, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 13, 13, 36, - 13, 13, 1, 37, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -extern int zconf_flex_debug; -int zconf_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *zconftext; - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -#define START_STRSIZE 16 - -char *text; -static char *text_ptr; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static struct buffer *zconf_endfile(void); - -void new_string(void) -{ - text = malloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_ptr = text; - text_size = 0; - *text_ptr = 0; -} - -void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - text = realloc(text, new_size); - text_asize = new_size; - text_ptr = text + text_size; - } - memcpy(text_ptr, str, size); - text_ptr += size; - text_size += size; - *text_ptr = 0; -} - -void alloc_string(const char *str, int size) -{ - text = malloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} - -#define INITIAL 0 -#define COMMAND 1 -#define HELP 2 -#define STRING 3 -#define PARAM 4 - -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int zconfwrap (void ); -#else -extern int zconfwrap (void ); -#endif -#endif - - static void yyunput (int c,char *buf_ptr ); - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (void ); -#else -static int input (void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO (void) fwrite( zconftext, zconfleng, 1, zconfout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - errno=0; \ - while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(zconfin); \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int zconflex (void); - -#define YY_DECL int zconflex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after zconftext and zconfleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - - int str = 0; - int ts, i; - - if ( (yy_init) ) - { - (yy_init) = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! zconfin ) - zconfin = stdin; - - if ( ! zconfout ) - zconfout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - zconfensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - zconf_create_buffer(zconfin,YY_BUF_SIZE ); - } - - zconf_load_buffer_state( ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of zconftext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) - ++yy_cp; - - yy_current_state = -yy_current_state; - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -/* rule 1 can match eol */ -YY_RULE_SETUP -current_file->lineno++; - YY_BREAK -case 2: -YY_RULE_SETUP - - YY_BREAK -case 3: -/* rule 3 can match eol */ -YY_RULE_SETUP -current_file->lineno++; return T_EOL; - YY_BREAK -case 4: -YY_RULE_SETUP -{ - BEGIN(COMMAND); -} - YY_BREAK -case 5: -YY_RULE_SETUP -{ - unput(zconftext[0]); - BEGIN(COMMAND); -} - YY_BREAK - -case 6: -YY_RULE_SETUP -BEGIN(PARAM); return T_MAINMENU; - YY_BREAK -case 7: -YY_RULE_SETUP -BEGIN(PARAM); return T_MENU; - YY_BREAK -case 8: -YY_RULE_SETUP -BEGIN(PARAM); return T_ENDMENU; - YY_BREAK -case 9: -YY_RULE_SETUP -BEGIN(PARAM); return T_SOURCE; - YY_BREAK -case 10: -YY_RULE_SETUP -BEGIN(PARAM); return T_CHOICE; - YY_BREAK -case 11: -YY_RULE_SETUP -BEGIN(PARAM); return T_ENDCHOICE; - YY_BREAK -case 12: -YY_RULE_SETUP -BEGIN(PARAM); return T_COMMENT; - YY_BREAK -case 13: -YY_RULE_SETUP -BEGIN(PARAM); return T_CONFIG; - YY_BREAK -case 14: -YY_RULE_SETUP -BEGIN(PARAM); return T_MENUCONFIG; - YY_BREAK -case 15: -YY_RULE_SETUP -BEGIN(PARAM); return T_HELP; - YY_BREAK -case 16: -YY_RULE_SETUP -BEGIN(PARAM); return T_IF; - YY_BREAK -case 17: -YY_RULE_SETUP -BEGIN(PARAM); return T_ENDIF; - YY_BREAK -case 18: -YY_RULE_SETUP -BEGIN(PARAM); return T_DEPENDS; - YY_BREAK -case 19: -YY_RULE_SETUP -BEGIN(PARAM); return T_REQUIRES; - YY_BREAK -case 20: -YY_RULE_SETUP -BEGIN(PARAM); return T_OPTIONAL; - YY_BREAK -case 21: -YY_RULE_SETUP -BEGIN(PARAM); return T_DEFAULT; - YY_BREAK -case 22: -YY_RULE_SETUP -BEGIN(PARAM); return T_PROMPT; - YY_BREAK -case 23: -YY_RULE_SETUP -BEGIN(PARAM); return T_TRISTATE; - YY_BREAK -case 24: -YY_RULE_SETUP -BEGIN(PARAM); return T_DEF_TRISTATE; - YY_BREAK -case 25: -YY_RULE_SETUP -BEGIN(PARAM); return T_BOOLEAN; - YY_BREAK -case 26: -YY_RULE_SETUP -BEGIN(PARAM); return T_BOOLEAN; - YY_BREAK -case 27: -YY_RULE_SETUP -BEGIN(PARAM); return T_DEF_BOOLEAN; - YY_BREAK -case 28: -YY_RULE_SETUP -BEGIN(PARAM); return T_DEF_BOOLEAN; - YY_BREAK -case 29: -YY_RULE_SETUP -BEGIN(PARAM); return T_INT; - YY_BREAK -case 30: -YY_RULE_SETUP -BEGIN(PARAM); return T_HEX; - YY_BREAK -case 31: -YY_RULE_SETUP -BEGIN(PARAM); return T_STRING; - YY_BREAK -case 32: -YY_RULE_SETUP -BEGIN(PARAM); return T_SELECT; - YY_BREAK -case 33: -YY_RULE_SETUP -BEGIN(PARAM); return T_SELECT; - YY_BREAK -case 34: -YY_RULE_SETUP -BEGIN(PARAM); return T_RANGE; - YY_BREAK -case 35: -YY_RULE_SETUP -{ - alloc_string(zconftext, zconfleng); - zconflval.string = text; - return T_WORD; - } - YY_BREAK -case 36: -YY_RULE_SETUP - - YY_BREAK -case 37: -/* rule 37 can match eol */ -YY_RULE_SETUP -current_file->lineno++; BEGIN(INITIAL); - YY_BREAK - -case 38: -YY_RULE_SETUP -return T_AND; - YY_BREAK -case 39: -YY_RULE_SETUP -return T_OR; - YY_BREAK -case 40: -YY_RULE_SETUP -return T_OPEN_PAREN; - YY_BREAK -case 41: -YY_RULE_SETUP -return T_CLOSE_PAREN; - YY_BREAK -case 42: -YY_RULE_SETUP -return T_NOT; - YY_BREAK -case 43: -YY_RULE_SETUP -return T_EQUAL; - YY_BREAK -case 44: -YY_RULE_SETUP -return T_UNEQUAL; - YY_BREAK -case 45: -YY_RULE_SETUP -return T_IF; - YY_BREAK -case 46: -YY_RULE_SETUP -return T_ON; - YY_BREAK -case 47: -YY_RULE_SETUP -{ - str = zconftext[0]; - new_string(); - BEGIN(STRING); - } - YY_BREAK -case 48: -/* rule 48 can match eol */ -YY_RULE_SETUP -BEGIN(INITIAL); current_file->lineno++; return T_EOL; - YY_BREAK -case 49: -YY_RULE_SETUP -/* ignore */ - YY_BREAK -case 50: -YY_RULE_SETUP -{ - alloc_string(zconftext, zconfleng); - zconflval.string = text; - return T_WORD; - } - YY_BREAK -case 51: -YY_RULE_SETUP -/* comment */ - YY_BREAK -case 52: -/* rule 52 can match eol */ -YY_RULE_SETUP -current_file->lineno++; - YY_BREAK -case 53: -YY_RULE_SETUP - - YY_BREAK -case YY_STATE_EOF(PARAM): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 54: -/* rule 54 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up zconftext again */ -YY_RULE_SETUP -{ - append_string(zconftext, zconfleng); - zconflval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 55: -YY_RULE_SETUP -{ - append_string(zconftext, zconfleng); - } - YY_BREAK -case 56: -/* rule 56 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up zconftext again */ -YY_RULE_SETUP -{ - append_string(zconftext + 1, zconfleng - 1); - zconflval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 57: -YY_RULE_SETUP -{ - append_string(zconftext + 1, zconfleng - 1); - } - YY_BREAK -case 58: -YY_RULE_SETUP -{ - if (str == zconftext[0]) { - BEGIN(PARAM); - zconflval.string = text; - return T_WORD_QUOTE; - } else - append_string(zconftext, 1); - } - YY_BREAK -case 59: -/* rule 59 can match eol */ -YY_RULE_SETUP -{ - printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); - current_file->lineno++; - BEGIN(INITIAL); - return T_EOL; - } - YY_BREAK -case YY_STATE_EOF(STRING): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 60: -YY_RULE_SETUP -{ - ts = 0; - for (i = 0; i < zconfleng; i++) { - if (zconftext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - YY_BREAK -case 61: -/* rule 61 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up zconftext again */ -YY_RULE_SETUP -{ - current_file->lineno++; - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK -case 62: -/* rule 62 can match eol */ -YY_RULE_SETUP -{ - current_file->lineno++; - append_string("\n", 1); - } - YY_BREAK -case 63: -YY_RULE_SETUP -{ - append_string(zconftext, zconfleng); - if (!first_ts) - first_ts = last_ts; - } - YY_BREAK -case YY_STATE_EOF(HELP): -{ - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK - -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMAND): -{ - if (current_buf) { - zconf_endfile(); - return T_EOF; - } - fclose(zconfin); - yyterminate(); -} - YY_BREAK -case 64: -YY_RULE_SETUP -YY_FATAL_ERROR( "flex scanner jammed" ); - YY_BREAK - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed zconfin at a new source and called - * zconflex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( zconfwrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * zconftext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of zconflex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - size_t num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - zconfrestart(zconfin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - register int yy_is_jam; - - yy_current_state = yy_nxt[yy_current_state][1]; - yy_is_jam = (yy_current_state <= 0); - - return yy_is_jam ? 0 : yy_current_state; -} - - static void yyunput (int c, register char * yy_bp ) -{ - register char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up zconftext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - zconfrestart(zconfin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( zconfwrap( ) ) - return EOF; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve zconftext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void zconfrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - zconfensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - zconf_create_buffer(zconfin,YY_BUF_SIZE ); - } - - zconf_init_buffer(YY_CURRENT_BUFFER,input_file ); - zconf_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * zconfpop_buffer_state(); - * zconfpush_buffer_state(new_buffer); - */ - zconfensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - zconf_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (zconfwrap()) processing, but the only time this flag - * is looked at is after zconfwrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void zconf_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - zconf_init_buffer(b,file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with zconf_create_buffer() - * - */ - void zconf_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - zconffree((void *) b->yy_ch_buf ); - - zconffree((void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a zconfrestart() or at EOF. - */ - static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - zconf_flush_buffer(b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then zconf_init_buffer was _probably_ - * called from zconfrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void zconf_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - zconf_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - zconfensure_buffer_stack(); - - /* This block is copied from zconf_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from zconf_switch_to_buffer. */ - zconf_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void zconfpop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - zconf_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - zconf_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void zconfensure_buffer_stack (void) -{ - int num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - zconf_switch_to_buffer(b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to zconflex() will - * scan from a @e copy of @a str. - * @param str a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * zconf_scan_bytes() instead. - */ -YY_BUFFER_STATE zconf_scan_string (yyconst char * str ) -{ - - return zconf_scan_bytes(str,strlen(str) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will - * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE zconf_scan_bytes (yyconst char * bytes, int len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) zconfalloc(n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = zconf_scan_buffer(buf,n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg ) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up zconftext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - zconftext[zconfleng] = (yy_hold_char); \ - (yy_c_buf_p) = zconftext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - zconfleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int zconfget_lineno (void) -{ - - return zconflineno; -} - -/** Get the input stream. - * - */ -FILE *zconfget_in (void) -{ - return zconfin; -} - -/** Get the output stream. - * - */ -FILE *zconfget_out (void) -{ - return zconfout; -} - -/** Get the length of the current token. - * - */ -int zconfget_leng (void) -{ - return zconfleng; -} - -/** Get the current token. - * - */ - -char *zconfget_text (void) -{ - return zconftext; -} - -/** Set the current line number. - * @param line_number - * - */ -void zconfset_lineno (int line_number ) -{ - - zconflineno = line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * - * @see zconf_switch_to_buffer - */ -void zconfset_in (FILE * in_str ) -{ - zconfin = in_str ; -} - -void zconfset_out (FILE * out_str ) -{ - zconfout = out_str ; -} - -int zconfget_debug (void) -{ - return zconf_flex_debug; -} - -void zconfset_debug (int bdebug ) -{ - zconf_flex_debug = bdebug ; -} - -/* zconflex_destroy is for both reentrant and non-reentrant scanners. */ -int zconflex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - zconf_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - zconfpop_buffer_state(); - } - - /* Destroy the stack itself. */ - zconffree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *zconfalloc (yy_size_t size ) -{ - return (void *) malloc( size ); -} - -void *zconfrealloc (void * ptr, yy_size_t size ) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void zconffree (void * ptr ) -{ - free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#undef YY_NEW_FILE -#undef YY_FLUSH_BUFFER -#undef yy_set_bol -#undef yy_new_buffer -#undef yy_set_interactive -#undef yytext_ptr -#undef YY_DO_BEFORE_ACTION - -#ifdef YY_DECL_IS_OURS -#undef YY_DECL_IS_OURS -#undef YY_DECL -#endif - -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - zconflval.string = text; - BEGIN(INITIAL); -} - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - zconfin = zconf_fopen(name); - if (!zconfin) { - printf("can't find file %s\n", name); - exit(1); - } - - current_buf = malloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - current_file->lineno = 1; - current_file->flags = FILE_BUSY; -} - -void zconf_nextfile(const char *name) -{ - struct file *file = file_lookup(name); - struct buffer *buf = malloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - zconfin = zconf_fopen(name); - if (!zconfin) { - printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name); - exit(1); - } - zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - if (file->flags & FILE_BUSY) { - printf("recursive scan (%s)?\n", name); - exit(1); - } - if (file->flags & FILE_SCANNED) { - printf("file %s already scanned?\n", name); - exit(1); - } - file->flags |= FILE_BUSY; - file->lineno = 1; - file->parent = current_file; - current_file = file; -} - -static struct buffer *zconf_endfile(void) -{ - struct buffer *parent; - - current_file->flags |= FILE_SCANNED; - current_file->flags &= ~FILE_BUSY; - current_file = current_file->parent; - - parent = current_buf->parent; - if (parent) { - fclose(zconfin); - zconf_delete_buffer(YY_CURRENT_BUFFER); - zconf_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; - - return parent; -} - -int zconf_lineno(void) -{ - if (current_buf) - return current_file->lineno - 1; - else - return 0; -} - -char *zconf_curname(void) -{ - if (current_buf) - return current_file->name; - else - return ""; -} - diff --git a/2.3/menu/lkc.h b/2.3/menu/lkc.h deleted file mode 100644 index b8a67fc..0000000 --- a/2.3/menu/lkc.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#ifndef LKC_H -#define LKC_H - -#include "expr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef LKC_DIRECT_LINK -#define P(name,type,arg) extern type name arg -#else -#include "lkc_defs.h" -#define P(name,type,arg) extern type (*name ## _p) arg -#endif -#include "lkc_proto.h" -#undef P - -#define SRCTREE "srctree" - -int zconfparse(void); -void zconfdump(FILE *out); - -extern int zconfdebug; -void zconf_starthelp(void); -FILE *zconf_fopen(const char *name); -void zconf_initscan(const char *name); -void zconf_nextfile(const char *name); -int zconf_lineno(void); -char *zconf_curname(void); - -/* confdata.c */ -extern const char conf_def_filename[]; -extern char conf_filename[]; - -char *conf_get_default_confname(void); - -/* kconfig_load.c */ -void kconfig_load(void); - -/* menu.c */ -void menu_init(void); -void menu_add_menu(void); -void menu_end_menu(void); -void menu_add_entry(struct symbol *sym); -void menu_end_entry(void); -void menu_add_dep(struct expr *dep); -struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep); -void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); -void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); -void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); -void menu_finalize(struct menu *parent); -void menu_set_type(int type); - -/* util.c */ -struct file *file_lookup(const char *name); -int file_write_dep(const char *name); - -struct gstr { - size_t len; - char *s; -}; -struct gstr str_new(void); -struct gstr str_assign(const char *s); -void str_free(struct gstr *gs); -void str_append(struct gstr *gs, const char *s); -void str_printf(struct gstr *gs, const char *fmt, ...); -const char *str_get(struct gstr *gs); - -/* symbol.c */ -void sym_init(void); -void sym_clear_all_valid(void); -void sym_set_changed(struct symbol *sym); -struct symbol *sym_check_deps(struct symbol *sym); -struct property *prop_alloc(enum prop_type type, struct symbol *sym); -struct symbol *prop_get_symbol(struct property *prop); - -static inline tristate sym_get_tristate_value(struct symbol *sym) -{ - return sym->curr.tri; -} - - -static inline struct symbol *sym_get_choice_value(struct symbol *sym) -{ - return (struct symbol *)sym->curr.val; -} - -static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) -{ - return sym_set_tristate_value(chval, yes); -} - -static inline bool sym_is_choice(struct symbol *sym) -{ - return sym->flags & SYMBOL_CHOICE ? true : false; -} - -static inline bool sym_is_choice_value(struct symbol *sym) -{ - return sym->flags & SYMBOL_CHOICEVAL ? true : false; -} - -static inline bool sym_is_optional(struct symbol *sym) -{ - return sym->flags & SYMBOL_OPTIONAL ? true : false; -} - -static inline bool sym_has_value(struct symbol *sym) -{ - return sym->flags & SYMBOL_NEW ? false : true; -} - -#ifdef __cplusplus -} -#endif - -#endif /* LKC_H */ diff --git a/2.3/menu/lkc_proto.h b/2.3/menu/lkc_proto.h deleted file mode 100644 index 6dc6d0c..0000000 --- a/2.3/menu/lkc_proto.h +++ /dev/null @@ -1,40 +0,0 @@ - -/* confdata.c */ -P(conf_parse,void,(const char *name)); -P(conf_read,int,(const char *name)); -P(conf_write,int,(const char *name)); - -/* menu.c */ -P(rootmenu,struct menu,); - -P(menu_is_visible,bool,(struct menu *menu)); -P(menu_get_prompt,const char *,(struct menu *menu)); -P(menu_get_root_menu,struct menu *,(struct menu *menu)); -P(menu_get_parent_menu,struct menu *,(struct menu *menu)); - -/* symbol.c */ -P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]); -P(sym_change_count,int,); - -P(sym_lookup,struct symbol *,(const char *name, int isconst)); -P(sym_find,struct symbol *,(const char *name)); -P(sym_re_search,struct symbol **,(const char *pattern)); -P(sym_type_name,const char *,(enum symbol_type type)); -P(sym_calc_value,void,(struct symbol *sym)); -P(sym_get_type,enum symbol_type,(struct symbol *sym)); -P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri)); -P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri)); -P(sym_toggle_tristate_value,tristate,(struct symbol *sym)); -P(sym_string_valid,bool,(struct symbol *sym, const char *newval)); -P(sym_string_within_range,bool,(struct symbol *sym, const char *str)); -P(sym_set_string_value,bool,(struct symbol *sym, const char *newval)); -P(sym_is_changable,bool,(struct symbol *sym)); -P(sym_get_choice_prop,struct property *,(struct symbol *sym)); -P(sym_get_default_prop,struct property *,(struct symbol *sym)); -P(sym_get_string_value,const char *,(struct symbol *sym)); - -P(prop_get_type_name,const char *,(enum prop_type type)); - -/* expr.c */ -P(expr_compare_type,int,(enum expr_type t1, enum expr_type t2)); -P(expr_print,void,(struct expr *e, void (*fn)(void *, const char *), void *data, int prevtoken)); diff --git a/2.3/menu/lxdialog/BIG.FAT.WARNING b/2.3/menu/lxdialog/BIG.FAT.WARNING deleted file mode 100644 index a8999d8..0000000 --- a/2.3/menu/lxdialog/BIG.FAT.WARNING +++ /dev/null @@ -1,4 +0,0 @@ -This is NOT the official version of dialog. This version has been -significantly modified from the original. It is for use by the Linux -kernel configuration script. Please do not bother Savio Lam with -questions about this program. diff --git a/2.3/menu/lxdialog/checklist.c b/2.3/menu/lxdialog/checklist.c deleted file mode 100644 index 7565b5d..0000000 --- a/2.3/menu/lxdialog/checklist.c +++ /dev/null @@ -1,372 +0,0 @@ -/* - * checklist.c -- implements the checklist box - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * Stuart Herbert - S.Herbert@sheffield.ac.uk: radiolist extension - * Alessandro Rubini - rubini@ipvvis.unipv.it: merged the two - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "dialog.h" - -static int list_width, check_x, item_x, checkflag; - -/* - * Print list item - */ -static void -print_item (WINDOW * win, const char *item, int status, - int choice, int selected) -{ - int i; - - /* Clear 'residue' of last item */ - wattrset (win, menubox_attr); - wmove (win, choice, 0); - for (i = 0; i < list_width; i++) - waddch (win, ' '); - - wmove (win, choice, check_x); - wattrset (win, selected ? check_selected_attr : check_attr); - if (checkflag == FLAG_CHECK) - wprintw (win, "[%c]", status ? 'X' : ' '); - else - wprintw (win, "(%c)", status ? 'X' : ' '); - - wattrset (win, selected ? tag_selected_attr : tag_attr); - mvwaddch(win, choice, item_x, item[0]); - wattrset (win, selected ? item_selected_attr : item_attr); - waddstr (win, (char *)item+1); - if (selected) { - wmove (win, choice, check_x+1); - wrefresh (win); - } -} - -/* - * Print the scroll indicators. - */ -static void -print_arrows (WINDOW * win, int choice, int item_no, int scroll, - int y, int x, int height) -{ - wmove(win, y, x); - - if (scroll > 0) { - wattrset (win, uarrow_attr); - waddch (win, ACS_UARROW); - waddstr (win, "(-)"); - } - else { - wattrset (win, menubox_attr); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - } - - y = y + height + 1; - wmove(win, y, x); - - if ((height < item_no) && (scroll + choice < item_no - 1)) { - wattrset (win, darrow_attr); - waddch (win, ACS_DARROW); - waddstr (win, "(+)"); - } - else { - wattrset (win, menubox_border_attr); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - } -} - -/* - * Display the termination buttons - */ -static void -print_buttons( WINDOW *dialog, int height, int width, int selected) -{ - int x = width / 2 - 11; - int y = height - 2; - - print_button (dialog, "Select", y, x, selected == 0); - print_button (dialog, " Help ", y, x + 14, selected == 1); - - wmove(dialog, y, x+1 + 14*selected); - wrefresh (dialog); -} - -/* - * Display a dialog box with a list of options that can be turned on or off - * The `flag' parameter is used to select between radiolist and checklist. - */ -int -dialog_checklist (const char *title, const char *prompt, int height, int width, - int list_height, int item_no, struct dialog_list_item ** items, - int flag) - -{ - int i, x, y, box_x, box_y; - int key = 0, button = 0, choice = 0, scroll = 0, max_choice, *status; - WINDOW *dialog, *list; - - checkflag = flag; - - /* Allocate space for storing item on/off status */ - if ((status = malloc (sizeof (int) * item_no)) == NULL) { - endwin (); - fprintf (stderr, - "\nCan't allocate memory in dialog_checklist().\n"); - exit (-1); - } - - /* Initializes status */ - for (i = 0; i < item_no; i++) { - status[i] = (items[i]->selected == 1); /* ON */ - if ((!choice && status[i]) || items[i]->selected == 2) /* SELECTED */ - choice = i + 1; - } - if (choice) - choice--; - - max_choice = MIN (list_height, item_no); - - /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; - - draw_shadow (stdscr, y, x, height, width); - - dialog = newwin (height, width, y, x); - keypad (dialog, TRUE); - - draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr); - wattrset (dialog, border_attr); - mvwaddch (dialog, height-3, 0, ACS_LTEE); - for (i = 0; i < width - 2; i++) - waddch (dialog, ACS_HLINE); - wattrset (dialog, dialog_attr); - waddch (dialog, ACS_RTEE); - - if (title != NULL && strlen(title) >= width-2 ) { - /* truncate long title -- mec */ - char * title2 = malloc(width-2+1); - memcpy( title2, title, width-2 ); - title2[width-2] = '\0'; - title = title2; - } - - if (title != NULL) { - wattrset (dialog, title_attr); - mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' '); - waddstr (dialog, (char *)title); - waddch (dialog, ' '); - } - - wattrset (dialog, dialog_attr); - print_autowrap (dialog, prompt, width - 2, 1, 3); - - list_width = width - 6; - box_y = height - list_height - 5; - box_x = (width - list_width) / 2 - 1; - - /* create new window for the list */ - list = subwin (dialog, list_height, list_width, y+box_y+1, x+box_x+1); - - keypad (list, TRUE); - - /* draw a box around the list items */ - draw_box (dialog, box_y, box_x, list_height + 2, list_width + 2, - menubox_border_attr, menubox_attr); - - /* Find length of longest item in order to center checklist */ - check_x = 0; - for (i = 0; i < item_no; i++) - check_x = MAX (check_x, + strlen (items[i]->name) + 4); - - check_x = (list_width - check_x) / 2; - item_x = check_x + 4; - - if (choice >= list_height) { - scroll = choice - list_height + 1; - choice -= scroll; - } - - /* Print the list */ - for (i = 0; i < max_choice; i++) { - print_item (list, items[scroll + i]->name, - status[i+scroll], i, i == choice); - } - - print_arrows(dialog, choice, item_no, scroll, - box_y, box_x + check_x + 5, list_height); - - print_buttons(dialog, height, width, 0); - - wnoutrefresh (list); - wnoutrefresh (dialog); - doupdate (); - - while (key != ESC) { - key = wgetch (dialog); - - for (i = 0; i < max_choice; i++) - if (toupper(key) == toupper(items[scroll + i]->name[0])) - break; - - - if ( i < max_choice || key == KEY_UP || key == KEY_DOWN || - key == '+' || key == '-' ) { - if (key == KEY_UP || key == '-') { - if (!choice) { - if (!scroll) - continue; - /* Scroll list down */ - if (list_height > 1) { - /* De-highlight current first item */ - print_item (list, items[scroll]->name, - status[scroll], 0, FALSE); - scrollok (list, TRUE); - wscrl (list, -1); - scrollok (list, FALSE); - } - scroll--; - print_item (list, items[scroll]->name, - status[scroll], 0, TRUE); - wnoutrefresh (list); - - print_arrows(dialog, choice, item_no, scroll, - box_y, box_x + check_x + 5, list_height); - - wrefresh (dialog); - - continue; /* wait for another key press */ - } else - i = choice - 1; - } else if (key == KEY_DOWN || key == '+') { - if (choice == max_choice - 1) { - if (scroll + choice >= item_no - 1) - continue; - /* Scroll list up */ - if (list_height > 1) { - /* De-highlight current last item before scrolling up */ - print_item (list, items[scroll + max_choice - 1]->name, - status[scroll + max_choice - 1], - max_choice - 1, FALSE); - scrollok (list, TRUE); - scroll (list); - scrollok (list, FALSE); - } - scroll++; - print_item (list, items[scroll + max_choice - 1]->name, - status[scroll + max_choice - 1], - max_choice - 1, TRUE); - wnoutrefresh (list); - - print_arrows(dialog, choice, item_no, scroll, - box_y, box_x + check_x + 5, list_height); - - wrefresh (dialog); - - continue; /* wait for another key press */ - } else - i = choice + 1; - } - if (i != choice) { - /* De-highlight current item */ - print_item (list, items[scroll + choice]->name, - status[scroll + choice], choice, FALSE); - /* Highlight new item */ - choice = i; - print_item (list, items[scroll + choice]->name, - status[scroll + choice], choice, TRUE); - wnoutrefresh (list); - wrefresh (dialog); - } - continue; /* wait for another key press */ - } - switch (key) { - case 'H': - case 'h': - case '?': - for (i = 0; i < item_no; i++) - items[i]->selected = 0; - items[scroll + choice]->selected = 1; - delwin (dialog); - free (status); - return 1; - case TAB: - case KEY_LEFT: - case KEY_RIGHT: - button = ((key == KEY_LEFT ? --button : ++button) < 0) - ? 1 : (button > 1 ? 0 : button); - - print_buttons(dialog, height, width, button); - wrefresh (dialog); - break; - case 'S': - case 's': - case ' ': - case '\n': - if (!button) { - if (flag == FLAG_CHECK) { - status[scroll + choice] = !status[scroll + choice]; - wmove (list, choice, check_x); - wattrset (list, check_selected_attr); - wprintw (list, "[%c]", status[scroll + choice] ? 'X' : ' '); - } else { - if (!status[scroll + choice]) { - for (i = 0; i < item_no; i++) - status[i] = 0; - status[scroll + choice] = 1; - for (i = 0; i < max_choice; i++) - print_item (list, items[scroll + i]->name, - status[scroll + i], i, i == choice); - } - } - wnoutrefresh (list); - wrefresh (dialog); - - for (i = 0; i < item_no; i++) { - items[i]->selected = status[i]; - } - } else { - for (i = 0; i < item_no; i++) - items[i]->selected = 0; - items[scroll + choice]->selected = 1; - } - delwin (dialog); - free (status); - return button; - case 'X': - case 'x': - key = ESC; - case ESC: - break; - } - - /* Now, update everything... */ - doupdate (); - } - - - delwin (dialog); - free (status); - return -1; /* ESC pressed */ -} diff --git a/2.3/menu/lxdialog/colors.h b/2.3/menu/lxdialog/colors.h deleted file mode 100644 index d34dd37..0000000 --- a/2.3/menu/lxdialog/colors.h +++ /dev/null @@ -1,161 +0,0 @@ -/* - * colors.h -- color attribute definitions - * - * AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -/* - * Default color definitions - * - * *_FG = foreground - * *_BG = background - * *_HL = highlight? - */ -#define SCREEN_FG COLOR_CYAN -#define SCREEN_BG COLOR_BLUE -#define SCREEN_HL TRUE - -#define SHADOW_FG COLOR_BLACK -#define SHADOW_BG COLOR_BLACK -#define SHADOW_HL TRUE - -#define DIALOG_FG COLOR_BLACK -#define DIALOG_BG COLOR_WHITE -#define DIALOG_HL FALSE - -#define TITLE_FG COLOR_YELLOW -#define TITLE_BG COLOR_WHITE -#define TITLE_HL TRUE - -#define BORDER_FG COLOR_WHITE -#define BORDER_BG COLOR_WHITE -#define BORDER_HL TRUE - -#define BUTTON_ACTIVE_FG COLOR_WHITE -#define BUTTON_ACTIVE_BG COLOR_BLUE -#define BUTTON_ACTIVE_HL TRUE - -#define BUTTON_INACTIVE_FG COLOR_BLACK -#define BUTTON_INACTIVE_BG COLOR_WHITE -#define BUTTON_INACTIVE_HL FALSE - -#define BUTTON_KEY_ACTIVE_FG COLOR_WHITE -#define BUTTON_KEY_ACTIVE_BG COLOR_BLUE -#define BUTTON_KEY_ACTIVE_HL TRUE - -#define BUTTON_KEY_INACTIVE_FG COLOR_RED -#define BUTTON_KEY_INACTIVE_BG COLOR_WHITE -#define BUTTON_KEY_INACTIVE_HL FALSE - -#define BUTTON_LABEL_ACTIVE_FG COLOR_YELLOW -#define BUTTON_LABEL_ACTIVE_BG COLOR_BLUE -#define BUTTON_LABEL_ACTIVE_HL TRUE - -#define BUTTON_LABEL_INACTIVE_FG COLOR_BLACK -#define BUTTON_LABEL_INACTIVE_BG COLOR_WHITE -#define BUTTON_LABEL_INACTIVE_HL TRUE - -#define INPUTBOX_FG COLOR_BLACK -#define INPUTBOX_BG COLOR_WHITE -#define INPUTBOX_HL FALSE - -#define INPUTBOX_BORDER_FG COLOR_BLACK -#define INPUTBOX_BORDER_BG COLOR_WHITE -#define INPUTBOX_BORDER_HL FALSE - -#define SEARCHBOX_FG COLOR_BLACK -#define SEARCHBOX_BG COLOR_WHITE -#define SEARCHBOX_HL FALSE - -#define SEARCHBOX_TITLE_FG COLOR_YELLOW -#define SEARCHBOX_TITLE_BG COLOR_WHITE -#define SEARCHBOX_TITLE_HL TRUE - -#define SEARCHBOX_BORDER_FG COLOR_WHITE -#define SEARCHBOX_BORDER_BG COLOR_WHITE -#define SEARCHBOX_BORDER_HL TRUE - -#define POSITION_INDICATOR_FG COLOR_YELLOW -#define POSITION_INDICATOR_BG COLOR_WHITE -#define POSITION_INDICATOR_HL TRUE - -#define MENUBOX_FG COLOR_BLACK -#define MENUBOX_BG COLOR_WHITE -#define MENUBOX_HL FALSE - -#define MENUBOX_BORDER_FG COLOR_WHITE -#define MENUBOX_BORDER_BG COLOR_WHITE -#define MENUBOX_BORDER_HL TRUE - -#define ITEM_FG COLOR_BLACK -#define ITEM_BG COLOR_WHITE -#define ITEM_HL FALSE - -#define ITEM_SELECTED_FG COLOR_WHITE -#define ITEM_SELECTED_BG COLOR_BLUE -#define ITEM_SELECTED_HL TRUE - -#define TAG_FG COLOR_YELLOW -#define TAG_BG COLOR_WHITE -#define TAG_HL TRUE - -#define TAG_SELECTED_FG COLOR_YELLOW -#define TAG_SELECTED_BG COLOR_BLUE -#define TAG_SELECTED_HL TRUE - -#define TAG_KEY_FG COLOR_YELLOW -#define TAG_KEY_BG COLOR_WHITE -#define TAG_KEY_HL TRUE - -#define TAG_KEY_SELECTED_FG COLOR_YELLOW -#define TAG_KEY_SELECTED_BG COLOR_BLUE -#define TAG_KEY_SELECTED_HL TRUE - -#define CHECK_FG COLOR_BLACK -#define CHECK_BG COLOR_WHITE -#define CHECK_HL FALSE - -#define CHECK_SELECTED_FG COLOR_WHITE -#define CHECK_SELECTED_BG COLOR_BLUE -#define CHECK_SELECTED_HL TRUE - -#define UARROW_FG COLOR_GREEN -#define UARROW_BG COLOR_WHITE -#define UARROW_HL TRUE - -#define DARROW_FG COLOR_GREEN -#define DARROW_BG COLOR_WHITE -#define DARROW_HL TRUE - -/* End of default color definitions */ - -#define C_ATTR(x,y) ((x ? A_BOLD : 0) | COLOR_PAIR((y))) -#define COLOR_NAME_LEN 10 -#define COLOR_COUNT 8 - -/* - * Global variables - */ - -typedef struct { - char name[COLOR_NAME_LEN]; - int value; -} color_names_st; - -extern color_names_st color_names[]; -extern int color_table[][3]; diff --git a/2.3/menu/lxdialog/dialog.h b/2.3/menu/lxdialog/dialog.h deleted file mode 100644 index f9dc0da..0000000 --- a/2.3/menu/lxdialog/dialog.h +++ /dev/null @@ -1,203 +0,0 @@ - -/* - * dialog.h -- common declarations for all dialog modules - * - * AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include -#include -#include -#include -#include -#include - -#ifdef LOCALE -#include -#endif - -#ifdef CURSES_LOC -#ifdef __sun__ -#define CURS_MACROS -#endif -#include CURSES_LOC - -/* - * Colors in ncurses 1.9.9e do not work properly since foreground and - * background colors are OR'd rather than separately masked. This version - * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible - * with standard curses. The simplest fix (to make this work with standard - * curses) uses the wbkgdset() function, not used in the original hack. - * Turn it off if we're building with 1.9.9e, since it just confuses things. - */ -#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE) -#define OLD_NCURSES 1 -#undef wbkgdset -#define wbkgdset(w,p) /*nothing*/ -#else -#define OLD_NCURSES 0 -#endif - -#define TR(params) _tracef params - -#define ESC 27 -#define TAB 9 -#define MAX_LEN 2048 -#define BUF_SIZE (10*1024) -#define MIN(x,y) (x < y ? x : y) -#define MAX(x,y) (x > y ? x : y) - - -#ifndef ACS_ULCORNER -#define ACS_ULCORNER '+' -#endif -#ifndef ACS_LLCORNER -#define ACS_LLCORNER '+' -#endif -#ifndef ACS_URCORNER -#define ACS_URCORNER '+' -#endif -#ifndef ACS_LRCORNER -#define ACS_LRCORNER '+' -#endif -#ifndef ACS_HLINE -#define ACS_HLINE '-' -#endif -#ifndef ACS_VLINE -#define ACS_VLINE '|' -#endif -#ifndef ACS_LTEE -#define ACS_LTEE '+' -#endif -#ifndef ACS_RTEE -#define ACS_RTEE '+' -#endif -#ifndef ACS_UARROW -#define ACS_UARROW '^' -#endif -#ifndef ACS_DARROW -#define ACS_DARROW 'v' -#endif - -/* - * Attribute names - */ -#define screen_attr attributes[0] -#define shadow_attr attributes[1] -#define dialog_attr attributes[2] -#define title_attr attributes[3] -#define border_attr attributes[4] -#define button_active_attr attributes[5] -#define button_inactive_attr attributes[6] -#define button_key_active_attr attributes[7] -#define button_key_inactive_attr attributes[8] -#define button_label_active_attr attributes[9] -#define button_label_inactive_attr attributes[10] -#define inputbox_attr attributes[11] -#define inputbox_border_attr attributes[12] -#define searchbox_attr attributes[13] -#define searchbox_title_attr attributes[14] -#define searchbox_border_attr attributes[15] -#define position_indicator_attr attributes[16] -#define menubox_attr attributes[17] -#define menubox_border_attr attributes[18] -#define item_attr attributes[19] -#define item_selected_attr attributes[20] -#define tag_attr attributes[21] -#define tag_selected_attr attributes[22] -#define tag_key_attr attributes[23] -#define tag_key_selected_attr attributes[24] -#define check_attr attributes[25] -#define check_selected_attr attributes[26] -#define uarrow_attr attributes[27] -#define darrow_attr attributes[28] - -/* number of attributes */ -#define ATTRIBUTE_COUNT 29 - -/* - * Global variables - */ -extern bool use_colors; - -extern chtype attributes[]; -#endif - -extern const char *backtitle; - -struct dialog_list_item { - char *name; - int namelen; - char *tag; - int selected; /* Set to 1 by dialog_*() function. */ -}; - -/* - * Function prototypes - */ - -void init_dialog (void); -void end_dialog (void); -void dialog_clear (void); -#ifdef CURSES_LOC -void attr_clear (WINDOW * win, int height, int width, chtype attr); -void color_setup (void); -void print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x); -void print_button (WINDOW * win, const char *label, int y, int x, int selected); -void draw_box (WINDOW * win, int y, int x, int height, int width, chtype box, - chtype border); -void draw_shadow (WINDOW * win, int y, int x, int height, int width); -#endif - -int first_alpha (const char *string, const char *exempt); -int dialog_yesno (const char *title, const char *prompt, int height, int width); -int dialog_msgbox (const char *title, const char *prompt, int height, - int width, int pause); -int dialog_textbox (const char *title, const char *file, int height, int width); -int dialog_menu (const char *title, const char *prompt, int height, int width, - int menu_height, const char *choice, int item_no, - struct dialog_list_item ** items); -int dialog_checklist (const char *title, const char *prompt, int height, - int width, int list_height, int item_no, - struct dialog_list_item ** items, int flag); -extern unsigned char dialog_input_result[]; -int dialog_inputbox (const char *title, const char *prompt, int height, - int width, const char *init); - -struct dialog_list_item *first_sel_item(int item_no, - struct dialog_list_item ** items); - -/* - * This is the base for fictitious keys, which activate - * the buttons. - * - * Mouse-generated keys are the following: - * -- the first 32 are used as numbers, in addition to '0'-'9' - * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o') - * -- uppercase chars are used to invoke the button (M_EVENT + 'O') - */ -#ifdef CURSES_LOC -#define M_EVENT (KEY_MAX+1) -#endif - - -/* - * The `flag' parameter in checklist is used to select between - * radiolist and checklist - */ -#define FLAG_CHECK 1 -#define FLAG_RADIO 0 diff --git a/2.3/menu/lxdialog/inputbox.c b/2.3/menu/lxdialog/inputbox.c deleted file mode 100644 index fa7bebc..0000000 --- a/2.3/menu/lxdialog/inputbox.c +++ /dev/null @@ -1,240 +0,0 @@ -/* - * inputbox.c -- implements the input box - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "dialog.h" - -unsigned char dialog_input_result[MAX_LEN + 1]; - -/* - * Print the termination buttons - */ -static void -print_buttons(WINDOW *dialog, int height, int width, int selected) -{ - int x = width / 2 - 11; - int y = height - 2; - - print_button (dialog, " Ok ", y, x, selected==0); - print_button (dialog, " Help ", y, x + 14, selected==1); - - wmove(dialog, y, x+1+14*selected); - wrefresh(dialog); -} - -/* - * Display a dialog box for inputing a string - */ -int -dialog_inputbox (const char *title, const char *prompt, int height, int width, - const char *init) -{ - int i, x, y, box_y, box_x, box_width; - int input_x = 0, scroll = 0, key = 0, button = -1; - unsigned char *instr = dialog_input_result; - WINDOW *dialog; - - /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; - - - draw_shadow (stdscr, y, x, height, width); - - dialog = newwin (height, width, y, x); - keypad (dialog, TRUE); - - draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr); - wattrset (dialog, border_attr); - mvwaddch (dialog, height-3, 0, ACS_LTEE); - for (i = 0; i < width - 2; i++) - waddch (dialog, ACS_HLINE); - wattrset (dialog, dialog_attr); - waddch (dialog, ACS_RTEE); - - if (title != NULL && strlen(title) >= width-2 ) { - /* truncate long title -- mec */ - char * title2 = malloc(width-2+1); - memcpy( title2, title, width-2 ); - title2[width-2] = '\0'; - title = title2; - } - - if (title != NULL) { - wattrset (dialog, title_attr); - mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' '); - waddstr (dialog, (char *)title); - waddch (dialog, ' '); - } - - wattrset (dialog, dialog_attr); - print_autowrap (dialog, prompt, width - 2, 1, 3); - - /* Draw the input field box */ - box_width = width - 6; - getyx (dialog, y, x); - box_y = y + 2; - box_x = (width - box_width) / 2; - draw_box (dialog, y + 1, box_x - 1, 3, box_width + 2, - border_attr, dialog_attr); - - print_buttons(dialog, height, width, 0); - - /* Set up the initial value */ - wmove (dialog, box_y, box_x); - wattrset (dialog, inputbox_attr); - - if (!init) - instr[0] = '\0'; - else - strcpy (instr, init); - - input_x = strlen (instr); - - if (input_x >= box_width) { - scroll = input_x - box_width + 1; - input_x = box_width - 1; - for (i = 0; i < box_width - 1; i++) - waddch (dialog, instr[scroll + i]); - } else - waddstr (dialog, instr); - - wmove (dialog, box_y, box_x + input_x); - - wrefresh (dialog); - - while (key != ESC) { - key = wgetch (dialog); - - if (button == -1) { /* Input box selected */ - switch (key) { - case TAB: - case KEY_UP: - case KEY_DOWN: - break; - case KEY_LEFT: - continue; - case KEY_RIGHT: - continue; - case KEY_BACKSPACE: - case 127: - if (input_x || scroll) { - wattrset (dialog, inputbox_attr); - if (!input_x) { - scroll = scroll < box_width - 1 ? - 0 : scroll - (box_width - 1); - wmove (dialog, box_y, box_x); - for (i = 0; i < box_width; i++) - waddch (dialog, instr[scroll + input_x + i] ? - instr[scroll + input_x + i] : ' '); - input_x = strlen (instr) - scroll; - } else - input_x--; - instr[scroll + input_x] = '\0'; - mvwaddch (dialog, box_y, input_x + box_x, ' '); - wmove (dialog, box_y, input_x + box_x); - wrefresh (dialog); - } - continue; - default: - if (key < 0x100 && isprint (key)) { - if (scroll + input_x < MAX_LEN) { - wattrset (dialog, inputbox_attr); - instr[scroll + input_x] = key; - instr[scroll + input_x + 1] = '\0'; - if (input_x == box_width - 1) { - scroll++; - wmove (dialog, box_y, box_x); - for (i = 0; i < box_width - 1; i++) - waddch (dialog, instr[scroll + i]); - } else { - wmove (dialog, box_y, input_x++ + box_x); - waddch (dialog, key); - } - wrefresh (dialog); - } else - flash (); /* Alarm user about overflow */ - continue; - } - } - } - switch (key) { - case 'O': - case 'o': - delwin (dialog); - return 0; - case 'H': - case 'h': - delwin (dialog); - return 1; - case KEY_UP: - case KEY_LEFT: - switch (button) { - case -1: - button = 1; /* Indicates "Cancel" button is selected */ - print_buttons(dialog, height, width, 1); - break; - case 0: - button = -1; /* Indicates input box is selected */ - print_buttons(dialog, height, width, 0); - wmove (dialog, box_y, box_x + input_x); - wrefresh (dialog); - break; - case 1: - button = 0; /* Indicates "OK" button is selected */ - print_buttons(dialog, height, width, 0); - break; - } - break; - case TAB: - case KEY_DOWN: - case KEY_RIGHT: - switch (button) { - case -1: - button = 0; /* Indicates "OK" button is selected */ - print_buttons(dialog, height, width, 0); - break; - case 0: - button = 1; /* Indicates "Cancel" button is selected */ - print_buttons(dialog, height, width, 1); - break; - case 1: - button = -1; /* Indicates input box is selected */ - print_buttons(dialog, height, width, 0); - wmove (dialog, box_y, box_x + input_x); - wrefresh (dialog); - break; - } - break; - case ' ': - case '\n': - delwin (dialog); - return (button == -1 ? 0 : button); - case 'X': - case 'x': - key = ESC; - case ESC: - break; - } - } - - delwin (dialog); - return -1; /* ESC pressed */ -} diff --git a/2.3/menu/lxdialog/menubox.c b/2.3/menu/lxdialog/menubox.c deleted file mode 100644 index d0990c3..0000000 --- a/2.3/menu/lxdialog/menubox.c +++ /dev/null @@ -1,438 +0,0 @@ -/* - * menubox.c -- implements the menu box - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -/* - * Changes by Clifford Wolf (god@clifford.at) - * - * [ 1998-06-13 ] - * - * *) A bugfix for the Page-Down problem - * - * *) Formerly when I used Page Down and Page Up, the cursor would be set - * to the first position in the menu box. Now lxdialog is a bit - * smarter and works more like other menu systems (just have a look at - * it). - * - * *) Formerly if I selected something my scrolling would be broken because - * lxdialog is re-invoked by the Menuconfig shell script, can't - * remember the last scrolling position, and just sets it so that the - * cursor is at the bottom of the box. Now it writes the temporary file - * lxdialog.scrltmp which contains this information. The file is - * deleted by lxdialog if the user leaves a submenu or enters a new - * one, but it would be nice if Menuconfig could make another "rm -f" - * just to be sure. Just try it out - you will recognise a difference! - * - * [ 1998-06-14 ] - * - * *) Now lxdialog is crash-safe against broken "lxdialog.scrltmp" files - * and menus change their size on the fly. - * - * *) If for some reason the last scrolling position is not saved by - * lxdialog, it sets the scrolling so that the selected item is in the - * middle of the menu box, not at the bottom. - * - * 02 January 1999, Michael Elizabeth Chastain (mec@shout.net) - * Reset 'scroll' to 0 if the value from lxdialog.scrltmp is bogus. - * This fixes a bug in Menuconfig where using ' ' to descend into menus - * would leave mis-synchronized lxdialog.scrltmp files lying around, - * fscanf would read in 'scroll', and eventually that value would get used. - */ - -#include "dialog.h" - -static int menu_width, item_x; - -/* - * Print menu item - */ -static void -print_item (WINDOW * win, const char *item, int choice, int selected, int hotkey) -{ - int j; - char menu_item[menu_width+1]; - - strncpy(menu_item, item, menu_width); - menu_item[menu_width] = 0; - j = first_alpha(menu_item, "YyNnMmHh"); - - /* Clear 'residue' of last item */ - wattrset (win, menubox_attr); - wmove (win, choice, 0); -#if OLD_NCURSES - { - int i; - for (i = 0; i < menu_width; i++) - waddch (win, ' '); - } -#else - wclrtoeol(win); -#endif - wattrset (win, selected ? item_selected_attr : item_attr); - mvwaddstr (win, choice, item_x, menu_item); - if (hotkey) { - wattrset (win, selected ? tag_key_selected_attr : tag_key_attr); - mvwaddch(win, choice, item_x+j, menu_item[j]); - } - if (selected) { - wmove (win, choice, item_x+1); - wrefresh (win); - } -} - -/* - * Print the scroll indicators. - */ -static void -print_arrows (WINDOW * win, int item_no, int scroll, - int y, int x, int height) -{ - int cur_y, cur_x; - - getyx(win, cur_y, cur_x); - - wmove(win, y, x); - - if (scroll > 0) { - wattrset (win, uarrow_attr); - waddch (win, ACS_UARROW); - waddstr (win, "(-)"); - } - else { - wattrset (win, menubox_attr); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - } - - y = y + height + 1; - wmove(win, y, x); - - if ((height < item_no) && (scroll + height < item_no)) { - wattrset (win, darrow_attr); - waddch (win, ACS_DARROW); - waddstr (win, "(+)"); - } - else { - wattrset (win, menubox_border_attr); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - } - - wmove(win, cur_y, cur_x); -} - -/* - * Display the termination buttons. - */ -static void -print_buttons (WINDOW *win, int height, int width, int selected) -{ - int x = width / 2 - 16; - int y = height - 2; - - print_button (win, "Select", y, x, selected == 0); - print_button (win, " Exit ", y, x + 12, selected == 1); - print_button (win, " Help ", y, x + 24, selected == 2); - - wmove(win, y, x+1+12*selected); - wrefresh (win); -} - -/* - * Display a menu for choosing among a number of options - */ -int -dialog_menu (const char *title, const char *prompt, int height, int width, - int menu_height, const char *current, int item_no, - struct dialog_list_item ** items) -{ - int i, j, x, y, box_x, box_y; - int key = 0, button = 0, scroll = 0, choice = 0, first_item = 0, max_choice; - WINDOW *dialog, *menu; - FILE *f; - - max_choice = MIN (menu_height, item_no); - - /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; - - draw_shadow (stdscr, y, x, height, width); - - dialog = newwin (height, width, y, x); - keypad (dialog, TRUE); - - draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr); - wattrset (dialog, border_attr); - mvwaddch (dialog, height - 3, 0, ACS_LTEE); - for (i = 0; i < width - 2; i++) - waddch (dialog, ACS_HLINE); - wattrset (dialog, dialog_attr); - wbkgdset (dialog, dialog_attr & A_COLOR); - waddch (dialog, ACS_RTEE); - - if (title != NULL && strlen(title) >= width-2 ) { - /* truncate long title -- mec */ - char * title2 = malloc(width-2+1); - memcpy( title2, title, width-2 ); - title2[width-2] = '\0'; - title = title2; - } - - if (title != NULL) { - wattrset (dialog, title_attr); - mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' '); - waddstr (dialog, (char *)title); - waddch (dialog, ' '); - } - - wattrset (dialog, dialog_attr); - print_autowrap (dialog, prompt, width - 2, 1, 3); - - menu_width = width - 6; - box_y = height - menu_height - 5; - box_x = (width - menu_width) / 2 - 1; - - /* create new window for the menu */ - menu = subwin (dialog, menu_height, menu_width, - y + box_y + 1, x + box_x + 1); - keypad (menu, TRUE); - - /* draw a box around the menu items */ - draw_box (dialog, box_y, box_x, menu_height + 2, menu_width + 2, - menubox_border_attr, menubox_attr); - - /* - * Find length of longest item in order to center menu. - * Set 'choice' to default item. - */ - item_x = 0; - for (i = 0; i < item_no; i++) { - item_x = MAX (item_x, MIN(menu_width, strlen (items[i]->name) + 2)); - if (strcmp(current, items[i]->tag) == 0) choice = i; - } - - item_x = (menu_width - item_x) / 2; - - /* get the scroll info from the temp file */ - if ( (f=fopen("lxdialog.scrltmp","r")) != NULL ) { - if ( (fscanf(f,"%d\n",&scroll) == 1) && (scroll <= choice) && - (scroll+max_choice > choice) && (scroll >= 0) && - (scroll+max_choice <= item_no) ) { - first_item = scroll; - choice = choice - scroll; - fclose(f); - } else { - scroll=0; - remove("lxdialog.scrltmp"); - fclose(f); - f=NULL; - } - } - if ( (choice >= max_choice) || (f==NULL && choice >= max_choice/2) ) { - if (choice >= item_no-max_choice/2) - scroll = first_item = item_no-max_choice; - else - scroll = first_item = choice - max_choice/2; - choice = choice - scroll; - } - - /* Print the menu */ - for (i=0; i < max_choice; i++) { - print_item (menu, items[first_item + i]->name, i, i == choice, - (items[first_item + i]->tag[0] != ':')); - } - - wnoutrefresh (menu); - - print_arrows(dialog, item_no, scroll, - box_y, box_x+item_x+1, menu_height); - - print_buttons (dialog, height, width, 0); - wmove (menu, choice, item_x+1); - wrefresh (menu); - - while (key != ESC) { - key = wgetch(menu); - - if (key < 256 && isalpha(key)) key = tolower(key); - - if (strchr("ynmh", key)) - i = max_choice; - else { - for (i = choice+1; i < max_choice; i++) { - j = first_alpha(items[scroll + i]->name, "YyNnMmHh"); - if (key == tolower(items[scroll + i]->name[j])) - break; - } - if (i == max_choice) - for (i = 0; i < max_choice; i++) { - j = first_alpha(items[scroll + i]->name, "YyNnMmHh"); - if (key == tolower(items[scroll + i]->name[j])) - break; - } - } - - if (i < max_choice || - key == KEY_UP || key == KEY_DOWN || - key == '-' || key == '+' || - key == KEY_PPAGE || key == KEY_NPAGE) { - - print_item (menu, items[scroll + choice]->name, choice, FALSE, - (items[scroll + choice]->tag[0] != ':')); - - if (key == KEY_UP || key == '-') { - if (choice < 2 && scroll) { - /* Scroll menu down */ - scrollok (menu, TRUE); - wscrl (menu, -1); - scrollok (menu, FALSE); - - scroll--; - - print_item (menu, items[scroll]->name, 0, FALSE, - (items[scroll]->tag[0] != ':')); - } else - choice = MAX(choice - 1, 0); - - } else if (key == KEY_DOWN || key == '+') { - - print_item (menu, items[scroll + choice]->name, choice, FALSE, - (items[scroll + choice]->tag[0] != ':')); - - if ((choice > max_choice-3) && - (scroll + max_choice < item_no) - ) { - /* Scroll menu up */ - scrollok (menu, TRUE); - scroll (menu); - scrollok (menu, FALSE); - - scroll++; - - print_item (menu, items[scroll + max_choice - 1]->name, - max_choice-1, FALSE, - (items[scroll + max_choice - 1]->tag[0] != ':')); - } else - choice = MIN(choice+1, max_choice-1); - - } else if (key == KEY_PPAGE) { - scrollok (menu, TRUE); - for (i=0; (i < max_choice); i++) { - if (scroll > 0) { - wscrl (menu, -1); - scroll--; - print_item (menu, items[scroll]->name, 0, FALSE, - (items[scroll]->tag[0] != ':')); - } else { - if (choice > 0) - choice--; - } - } - scrollok (menu, FALSE); - - } else if (key == KEY_NPAGE) { - for (i=0; (i < max_choice); i++) { - if (scroll+max_choice < item_no) { - scrollok (menu, TRUE); - scroll(menu); - scrollok (menu, FALSE); - scroll++; - print_item (menu, items[scroll + max_choice - 1]->name, - max_choice-1, FALSE, - (items[scroll + max_choice - 1]->tag[0] != ':')); - } else { - if (choice+1 < max_choice) - choice++; - } - } - - } else - choice = i; - - print_item (menu, items[scroll + choice]->name, choice, TRUE, - (items[scroll + choice]->tag[0] != ':')); - - print_arrows(dialog, item_no, scroll, - box_y, box_x+item_x+1, menu_height); - - wnoutrefresh (dialog); - wrefresh (menu); - - continue; /* wait for another key press */ - } - - switch (key) { - case KEY_LEFT: - case TAB: - case KEY_RIGHT: - button = ((key == KEY_LEFT ? --button : ++button) < 0) - ? 2 : (button > 2 ? 0 : button); - - print_buttons(dialog, height, width, button); - wrefresh (menu); - break; - case ' ': - case 's': - case 'y': - case 'n': - case 'm': - case '/': - /* save scroll info */ - if ( (f=fopen("lxdialog.scrltmp","w")) != NULL ) { - fprintf(f,"%d\n",scroll); - fclose(f); - } - delwin (dialog); - items[scroll + choice]->selected = 1; - switch (key) { - case 's': return 3; - case 'y': return 3; - case 'n': return 4; - case 'm': return 5; - case ' ': return 6; - case '/': return 7; - } - return 0; - case 'h': - case '?': - button = 2; - case '\n': - delwin (dialog); - items[scroll + choice]->selected = 1; - - remove("lxdialog.scrltmp"); - return button; - case 'e': - case 'x': - key = ESC; - case ESC: - break; - } - } - - delwin (dialog); - remove("lxdialog.scrltmp"); - return -1; /* ESC pressed */ -} diff --git a/2.3/menu/lxdialog/msgbox.c b/2.3/menu/lxdialog/msgbox.c deleted file mode 100644 index de0f32b..0000000 --- a/2.3/menu/lxdialog/msgbox.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * msgbox.c -- implements the message box and info box - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "dialog.h" - -/* - * Display a message box. Program will pause and display an "OK" button - * if the parameter 'pause' is non-zero. - */ -int -dialog_msgbox (const char *title, const char *prompt, int height, int width, - int pause) -{ - int i, x, y, key = 0; - WINDOW *dialog; - - /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; - - draw_shadow (stdscr, y, x, height, width); - - dialog = newwin (height, width, y, x); - keypad (dialog, TRUE); - - draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr); - - if (title != NULL && strlen(title) >= width-2 ) { - /* truncate long title -- mec */ - char * title2 = malloc(width-2+1); - memcpy( title2, title, width-2 ); - title2[width-2] = '\0'; - title = title2; - } - - if (title != NULL) { - wattrset (dialog, title_attr); - mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' '); - waddstr (dialog, (char *)title); - waddch (dialog, ' '); - } - wattrset (dialog, dialog_attr); - print_autowrap (dialog, prompt, width - 2, 1, 2); - - if (pause) { - wattrset (dialog, border_attr); - mvwaddch (dialog, height - 3, 0, ACS_LTEE); - for (i = 0; i < width - 2; i++) - waddch (dialog, ACS_HLINE); - wattrset (dialog, dialog_attr); - waddch (dialog, ACS_RTEE); - - print_button (dialog, " Ok ", - height - 2, width / 2 - 4, TRUE); - - wrefresh (dialog); - while (key != ESC && key != '\n' && key != ' ' && - key != 'O' && key != 'o' && key != 'X' && key != 'x') - key = wgetch (dialog); - } else { - key = '\n'; - wrefresh (dialog); - } - - delwin (dialog); - return key == ESC ? -1 : 0; -} diff --git a/2.3/menu/lxdialog/textbox.c b/2.3/menu/lxdialog/textbox.c deleted file mode 100644 index b75e12a..0000000 --- a/2.3/menu/lxdialog/textbox.c +++ /dev/null @@ -1,556 +0,0 @@ -/* - * textbox.c -- implements the text box - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "dialog.h" - -static void back_lines (int n); -static void print_page (WINDOW * win, int height, int width); -static void print_line (WINDOW * win, int row, int width); -static char *get_line (void); -static void print_position (WINDOW * win, int height, int width); - -static int hscroll, fd, file_size, bytes_read; -static int begin_reached = 1, end_reached, page_length; -static char *buf, *page; - -/* - * Display text from a file in a dialog box. - */ -int -dialog_textbox (const char *title, const char *file, int height, int width) -{ - int i, x, y, cur_x, cur_y, fpos, key = 0; - int passed_end; - char search_term[MAX_LEN + 1]; - WINDOW *dialog, *text; - - search_term[0] = '\0'; /* no search term entered yet */ - - /* Open input file for reading */ - if ((fd = open (file, O_RDONLY)) == -1) { - endwin (); - fprintf (stderr, - "\nCan't open input file in dialog_textbox().\n"); - exit (-1); - } - /* Get file size. Actually, 'file_size' is the real file size - 1, - since it's only the last byte offset from the beginning */ - if ((file_size = lseek (fd, 0, SEEK_END)) == -1) { - endwin (); - fprintf (stderr, "\nError getting file size in dialog_textbox().\n"); - exit (-1); - } - /* Restore file pointer to beginning of file after getting file size */ - if (lseek (fd, 0, SEEK_SET) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer in dialog_textbox().\n"); - exit (-1); - } - /* Allocate space for read buffer */ - if ((buf = malloc (BUF_SIZE + 1)) == NULL) { - endwin (); - fprintf (stderr, "\nCan't allocate memory in dialog_textbox().\n"); - exit (-1); - } - if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) { - endwin (); - fprintf (stderr, "\nError reading file in dialog_textbox().\n"); - exit (-1); - } - buf[bytes_read] = '\0'; /* mark end of valid data */ - page = buf; /* page is pointer to start of page to be displayed */ - - /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; - - - draw_shadow (stdscr, y, x, height, width); - - dialog = newwin (height, width, y, x); - keypad (dialog, TRUE); - - /* Create window for text region, used for scrolling text */ - text = subwin (dialog, height - 4, width - 2, y + 1, x + 1); - wattrset (text, dialog_attr); - wbkgdset (text, dialog_attr & A_COLOR); - - keypad (text, TRUE); - - /* register the new window, along with its borders */ - draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr); - - wattrset (dialog, border_attr); - mvwaddch (dialog, height-3, 0, ACS_LTEE); - for (i = 0; i < width - 2; i++) - waddch (dialog, ACS_HLINE); - wattrset (dialog, dialog_attr); - wbkgdset (dialog, dialog_attr & A_COLOR); - waddch (dialog, ACS_RTEE); - - if (title != NULL && strlen(title) >= width-2 ) { - /* truncate long title -- mec */ - char * title2 = malloc(width-2+1); - memcpy( title2, title, width-2 ); - title2[width-2] = '\0'; - title = title2; - } - - if (title != NULL) { - wattrset (dialog, title_attr); - mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' '); - waddstr (dialog, (char *)title); - waddch (dialog, ' '); - } - print_button (dialog, " Exit ", height - 2, width / 2 - 4, TRUE); - wnoutrefresh (dialog); - getyx (dialog, cur_y, cur_x); /* Save cursor position */ - - /* Print first page of text */ - attr_clear (text, height - 4, width - 2, dialog_attr); - print_page (text, height - 4, width - 2); - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); /* Restore cursor position */ - wrefresh (dialog); - - while ((key != ESC) && (key != '\n')) { - key = wgetch (dialog); - switch (key) { - case 'E': /* Exit */ - case 'e': - case 'X': - case 'x': - delwin (dialog); - free (buf); - close (fd); - return 0; - case 'g': /* First page */ - case KEY_HOME: - if (!begin_reached) { - begin_reached = 1; - /* First page not in buffer? */ - if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) { - endwin (); - fprintf (stderr, - "\nError moving file pointer in dialog_textbox().\n"); - exit (-1); - } - if (fpos > bytes_read) { /* Yes, we have to read it in */ - if (lseek (fd, 0, SEEK_SET) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer in " - "dialog_textbox().\n"); - exit (-1); - } - if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) { - endwin (); - fprintf (stderr, - "\nError reading file in dialog_textbox().\n"); - exit (-1); - } - buf[bytes_read] = '\0'; - } - page = buf; - print_page (text, height - 4, width - 2); - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); /* Restore cursor position */ - wrefresh (dialog); - } - break; - case 'G': /* Last page */ - case KEY_END: - - end_reached = 1; - /* Last page not in buffer? */ - if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) { - endwin (); - fprintf (stderr, - "\nError moving file pointer in dialog_textbox().\n"); - exit (-1); - } - if (fpos < file_size) { /* Yes, we have to read it in */ - if (lseek (fd, -BUF_SIZE, SEEK_END) == -1) { - endwin (); - fprintf (stderr, - "\nError moving file pointer in dialog_textbox().\n"); - exit (-1); - } - if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) { - endwin (); - fprintf (stderr, - "\nError reading file in dialog_textbox().\n"); - exit (-1); - } - buf[bytes_read] = '\0'; - } - page = buf + bytes_read; - back_lines (height - 4); - print_page (text, height - 4, width - 2); - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); /* Restore cursor position */ - wrefresh (dialog); - break; - case 'K': /* Previous line */ - case 'k': - case KEY_UP: - if (!begin_reached) { - back_lines (page_length + 1); - - /* We don't call print_page() here but use scrolling to ensure - faster screen update. However, 'end_reached' and - 'page_length' should still be updated, and 'page' should - point to start of next page. This is done by calling - get_line() in the following 'for' loop. */ - scrollok (text, TRUE); - wscrl (text, -1); /* Scroll text region down one line */ - scrollok (text, FALSE); - page_length = 0; - passed_end = 0; - for (i = 0; i < height - 4; i++) { - if (!i) { - /* print first line of page */ - print_line (text, 0, width - 2); - wnoutrefresh (text); - } else - /* Called to update 'end_reached' and 'page' */ - get_line (); - if (!passed_end) - page_length++; - if (end_reached && !passed_end) - passed_end = 1; - } - - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); /* Restore cursor position */ - wrefresh (dialog); - } - break; - case 'B': /* Previous page */ - case 'b': - case KEY_PPAGE: - if (begin_reached) - break; - back_lines (page_length + height - 4); - print_page (text, height - 4, width - 2); - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); - wrefresh (dialog); - break; - case 'J': /* Next line */ - case 'j': - case KEY_DOWN: - if (!end_reached) { - begin_reached = 0; - scrollok (text, TRUE); - scroll (text); /* Scroll text region up one line */ - scrollok (text, FALSE); - print_line (text, height - 5, width - 2); - wnoutrefresh (text); - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); /* Restore cursor position */ - wrefresh (dialog); - } - break; - case KEY_NPAGE: /* Next page */ - case ' ': - if (end_reached) - break; - - begin_reached = 0; - print_page (text, height - 4, width - 2); - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); - wrefresh (dialog); - break; - case '0': /* Beginning of line */ - case 'H': /* Scroll left */ - case 'h': - case KEY_LEFT: - if (hscroll <= 0) - break; - - if (key == '0') - hscroll = 0; - else - hscroll--; - /* Reprint current page to scroll horizontally */ - back_lines (page_length); - print_page (text, height - 4, width - 2); - wmove (dialog, cur_y, cur_x); - wrefresh (dialog); - break; - case 'L': /* Scroll right */ - case 'l': - case KEY_RIGHT: - if (hscroll >= MAX_LEN) - break; - hscroll++; - /* Reprint current page to scroll horizontally */ - back_lines (page_length); - print_page (text, height - 4, width - 2); - wmove (dialog, cur_y, cur_x); - wrefresh (dialog); - break; - case ESC: - break; - } - } - - delwin (dialog); - free (buf); - close (fd); - return 1; /* ESC pressed */ -} - -/* - * Go back 'n' lines in text file. Called by dialog_textbox(). - * 'page' will be updated to point to the desired line in 'buf'. - */ -static void -back_lines (int n) -{ - int i, fpos; - - begin_reached = 0; - /* We have to distinguish between end_reached and !end_reached - since at end of file, the line is not ended by a '\n'. - The code inside 'if' basically does a '--page' to move one - character backward so as to skip '\n' of the previous line */ - if (!end_reached) { - /* Either beginning of buffer or beginning of file reached? */ - if (page == buf) { - if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer in " - "back_lines().\n"); - exit (-1); - } - if (fpos > bytes_read) { /* Not beginning of file yet */ - /* We've reached beginning of buffer, but not beginning of - file yet, so read previous part of file into buffer. - Note that we only move backward for BUF_SIZE/2 bytes, - but not BUF_SIZE bytes to avoid re-reading again in - print_page() later */ - /* Really possible to move backward BUF_SIZE/2 bytes? */ - if (fpos < BUF_SIZE / 2 + bytes_read) { - /* No, move less then */ - if (lseek (fd, 0, SEEK_SET) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer in " - "back_lines().\n"); - exit (-1); - } - page = buf + fpos - bytes_read; - } else { /* Move backward BUF_SIZE/2 bytes */ - if (lseek (fd, -(BUF_SIZE / 2 + bytes_read), SEEK_CUR) - == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer " - "in back_lines().\n"); - exit (-1); - } - page = buf + BUF_SIZE / 2; - } - if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) { - endwin (); - fprintf (stderr, "\nError reading file in back_lines().\n"); - exit (-1); - } - buf[bytes_read] = '\0'; - } else { /* Beginning of file reached */ - begin_reached = 1; - return; - } - } - if (*(--page) != '\n') { /* '--page' here */ - /* Something's wrong... */ - endwin (); - fprintf (stderr, "\nInternal error in back_lines().\n"); - exit (-1); - } - } - /* Go back 'n' lines */ - for (i = 0; i < n; i++) - do { - if (page == buf) { - if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) { - endwin (); - fprintf (stderr, - "\nError moving file pointer in back_lines().\n"); - exit (-1); - } - if (fpos > bytes_read) { - /* Really possible to move backward BUF_SIZE/2 bytes? */ - if (fpos < BUF_SIZE / 2 + bytes_read) { - /* No, move less then */ - if (lseek (fd, 0, SEEK_SET) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer " - "in back_lines().\n"); - exit (-1); - } - page = buf + fpos - bytes_read; - } else { /* Move backward BUF_SIZE/2 bytes */ - if (lseek (fd, -(BUF_SIZE / 2 + bytes_read), - SEEK_CUR) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer" - " in back_lines().\n"); - exit (-1); - } - page = buf + BUF_SIZE / 2; - } - if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) { - endwin (); - fprintf (stderr, "\nError reading file in " - "back_lines().\n"); - exit (-1); - } - buf[bytes_read] = '\0'; - } else { /* Beginning of file reached */ - begin_reached = 1; - return; - } - } - } while (*(--page) != '\n'); - page++; -} - -/* - * Print a new page of text. Called by dialog_textbox(). - */ -static void -print_page (WINDOW * win, int height, int width) -{ - int i, passed_end = 0; - - page_length = 0; - for (i = 0; i < height; i++) { - print_line (win, i, width); - if (!passed_end) - page_length++; - if (end_reached && !passed_end) - passed_end = 1; - } - wnoutrefresh (win); -} - -/* - * Print a new line of text. Called by dialog_textbox() and print_page(). - */ -static void -print_line (WINDOW * win, int row, int width) -{ - int y, x; - char *line; - - line = get_line (); - line += MIN (strlen (line), hscroll); /* Scroll horizontally */ - wmove (win, row, 0); /* move cursor to correct line */ - waddch (win, ' '); - waddnstr (win, line, MIN (strlen (line), width - 2)); - - getyx (win, y, x); - /* Clear 'residue' of previous line */ -#if OLD_NCURSES - { - int i; - for (i = 0; i < width - x; i++) - waddch (win, ' '); - } -#else - wclrtoeol(win); -#endif -} - -/* - * Return current line of text. Called by dialog_textbox() and print_line(). - * 'page' should point to start of current line before calling, and will be - * updated to point to start of next line. - */ -static char * -get_line (void) -{ - int i = 0, fpos; - static char line[MAX_LEN + 1]; - - end_reached = 0; - while (*page != '\n') { - if (*page == '\0') { - /* Either end of file or end of buffer reached */ - if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer in " - "get_line().\n"); - exit (-1); - } - if (fpos < file_size) { /* Not end of file yet */ - /* We've reached end of buffer, but not end of file yet, - so read next part of file into buffer */ - if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) { - endwin (); - fprintf (stderr, "\nError reading file in get_line().\n"); - exit (-1); - } - buf[bytes_read] = '\0'; - page = buf; - } else { - if (!end_reached) - end_reached = 1; - break; - } - } else if (i < MAX_LEN) - line[i++] = *(page++); - else { - /* Truncate lines longer than MAX_LEN characters */ - if (i == MAX_LEN) - line[i++] = '\0'; - page++; - } - } - if (i <= MAX_LEN) - line[i] = '\0'; - if (!end_reached) - page++; /* move pass '\n' */ - - return line; -} - -/* - * Print current position - */ -static void -print_position (WINDOW * win, int height, int width) -{ - int fpos, percent; - - if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer in print_position().\n"); - exit (-1); - } - wattrset (win, position_indicator_attr); - wbkgdset (win, position_indicator_attr & A_COLOR); - percent = !file_size ? - 100 : ((fpos - bytes_read + page - buf) * 100) / file_size; - wmove (win, height - 3, width - 9); - wprintw (win, "(%3d%%)", percent); -} diff --git a/2.3/menu/lxdialog/util.c b/2.3/menu/lxdialog/util.c deleted file mode 100644 index c48e337..0000000 --- a/2.3/menu/lxdialog/util.c +++ /dev/null @@ -1,378 +0,0 @@ -/* - * util.c - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "dialog.h" - - -/* use colors by default? */ -bool use_colors = 1; - -const char *backtitle = NULL; - -const char *dialog_result; - -/* - * Attribute values, default is for mono display - */ -chtype attributes[] = -{ - A_NORMAL, /* screen_attr */ - A_NORMAL, /* shadow_attr */ - A_NORMAL, /* dialog_attr */ - A_BOLD, /* title_attr */ - A_NORMAL, /* border_attr */ - A_REVERSE, /* button_active_attr */ - A_DIM, /* button_inactive_attr */ - A_REVERSE, /* button_key_active_attr */ - A_BOLD, /* button_key_inactive_attr */ - A_REVERSE, /* button_label_active_attr */ - A_NORMAL, /* button_label_inactive_attr */ - A_NORMAL, /* inputbox_attr */ - A_NORMAL, /* inputbox_border_attr */ - A_NORMAL, /* searchbox_attr */ - A_BOLD, /* searchbox_title_attr */ - A_NORMAL, /* searchbox_border_attr */ - A_BOLD, /* position_indicator_attr */ - A_NORMAL, /* menubox_attr */ - A_NORMAL, /* menubox_border_attr */ - A_NORMAL, /* item_attr */ - A_REVERSE, /* item_selected_attr */ - A_BOLD, /* tag_attr */ - A_REVERSE, /* tag_selected_attr */ - A_BOLD, /* tag_key_attr */ - A_REVERSE, /* tag_key_selected_attr */ - A_BOLD, /* check_attr */ - A_REVERSE, /* check_selected_attr */ - A_BOLD, /* uarrow_attr */ - A_BOLD /* darrow_attr */ -}; - - -#include "colors.h" - -/* - * Table of color values - */ -int color_table[][3] = -{ - {SCREEN_FG, SCREEN_BG, SCREEN_HL}, - {SHADOW_FG, SHADOW_BG, SHADOW_HL}, - {DIALOG_FG, DIALOG_BG, DIALOG_HL}, - {TITLE_FG, TITLE_BG, TITLE_HL}, - {BORDER_FG, BORDER_BG, BORDER_HL}, - {BUTTON_ACTIVE_FG, BUTTON_ACTIVE_BG, BUTTON_ACTIVE_HL}, - {BUTTON_INACTIVE_FG, BUTTON_INACTIVE_BG, BUTTON_INACTIVE_HL}, - {BUTTON_KEY_ACTIVE_FG, BUTTON_KEY_ACTIVE_BG, BUTTON_KEY_ACTIVE_HL}, - {BUTTON_KEY_INACTIVE_FG, BUTTON_KEY_INACTIVE_BG, BUTTON_KEY_INACTIVE_HL}, - {BUTTON_LABEL_ACTIVE_FG, BUTTON_LABEL_ACTIVE_BG, BUTTON_LABEL_ACTIVE_HL}, - {BUTTON_LABEL_INACTIVE_FG, BUTTON_LABEL_INACTIVE_BG, - BUTTON_LABEL_INACTIVE_HL}, - {INPUTBOX_FG, INPUTBOX_BG, INPUTBOX_HL}, - {INPUTBOX_BORDER_FG, INPUTBOX_BORDER_BG, INPUTBOX_BORDER_HL}, - {SEARCHBOX_FG, SEARCHBOX_BG, SEARCHBOX_HL}, - {SEARCHBOX_TITLE_FG, SEARCHBOX_TITLE_BG, SEARCHBOX_TITLE_HL}, - {SEARCHBOX_BORDER_FG, SEARCHBOX_BORDER_BG, SEARCHBOX_BORDER_HL}, - {POSITION_INDICATOR_FG, POSITION_INDICATOR_BG, POSITION_INDICATOR_HL}, - {MENUBOX_FG, MENUBOX_BG, MENUBOX_HL}, - {MENUBOX_BORDER_FG, MENUBOX_BORDER_BG, MENUBOX_BORDER_HL}, - {ITEM_FG, ITEM_BG, ITEM_HL}, - {ITEM_SELECTED_FG, ITEM_SELECTED_BG, ITEM_SELECTED_HL}, - {TAG_FG, TAG_BG, TAG_HL}, - {TAG_SELECTED_FG, TAG_SELECTED_BG, TAG_SELECTED_HL}, - {TAG_KEY_FG, TAG_KEY_BG, TAG_KEY_HL}, - {TAG_KEY_SELECTED_FG, TAG_KEY_SELECTED_BG, TAG_KEY_SELECTED_HL}, - {CHECK_FG, CHECK_BG, CHECK_HL}, - {CHECK_SELECTED_FG, CHECK_SELECTED_BG, CHECK_SELECTED_HL}, - {UARROW_FG, UARROW_BG, UARROW_HL}, - {DARROW_FG, DARROW_BG, DARROW_HL}, -}; /* color_table */ - -/* - * Set window to attribute 'attr' - */ -void -attr_clear (WINDOW * win, int height, int width, chtype attr) -{ - int i, j; - - wattrset (win, attr); - for (i = 0; i < height; i++) { - wmove (win, i, 0); - for (j = 0; j < width; j++) - waddch (win, ' '); - } - touchwin (win); -} - -void dialog_clear (void) -{ - attr_clear (stdscr, LINES, COLS, screen_attr); - /* Display background title if it exists ... - SLH */ - if (backtitle != NULL) { - int i; - - wattrset (stdscr, screen_attr); - mvwaddstr (stdscr, 0, 1, (char *)backtitle); - wmove (stdscr, 1, 1); - for (i = 1; i < COLS - 1; i++) - waddch (stdscr, ACS_HLINE); - } - wnoutrefresh (stdscr); -} - -/* - * Do some initialization for dialog - */ -void -init_dialog (void) -{ -#ifdef LOCALE - setlocale(LC_CTYPE, ""); /* required by ncurses on linux UTF-8 console */ -#endif - initscr (); /* Init curses */ - keypad (stdscr, TRUE); - cbreak (); - noecho (); - - - if (use_colors) /* Set up colors */ - color_setup (); - - - dialog_clear (); -} - -/* - * Setup for color display - */ -void -color_setup (void) -{ - int i; - - if (has_colors ()) { /* Terminal supports color? */ - start_color (); - - /* Initialize color pairs */ - for (i = 0; i < ATTRIBUTE_COUNT; i++) - init_pair (i + 1, color_table[i][0], color_table[i][1]); - - /* Setup color attributes */ - for (i = 0; i < ATTRIBUTE_COUNT; i++) - attributes[i] = C_ATTR (color_table[i][2], i + 1); - } -} - -/* - * End using dialog functions. - */ -void -end_dialog (void) -{ - endwin (); -} - - -/* - * Print a string of text in a window, automatically wrap around to the - * next line if the string is too long to fit on one line. Newline - * characters '\n' are replaced by spaces. We start on a new line - * if there is no room for at least 4 nonblanks following a double-space. - */ -void -print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x) -{ - int newl, cur_x, cur_y; - int i, prompt_len, room, wlen; - char tempstr[MAX_LEN + 1], *word, *sp, *sp2; - - strcpy (tempstr, prompt); - - prompt_len = strlen(tempstr); - - /* - * Remove newlines - */ - for(i=0; i room || - (newl && wlen < 4 && sp && wlen+1+strlen(sp) > room - && (!(sp2 = index(sp, ' ')) || wlen+1+(sp2-sp) > room))) { - cur_y++; - cur_x = x; - } - wmove (win, cur_y, cur_x); - waddstr (win, word); - getyx (win, cur_y, cur_x); - cur_x++; - if (sp && *sp == ' ') { - cur_x++; /* double space */ - while (*++sp == ' '); - newl = 1; - } else - newl = 0; - word = sp; - } - } -} - -/* - * Print a button - */ -void -print_button (WINDOW * win, const char *label, int y, int x, int selected) -{ - int i, temp; - - wmove (win, y, x); - wattrset (win, selected ? button_active_attr : button_inactive_attr); - waddstr (win, "<"); - temp = strspn (label, " "); - label += temp; - wattrset (win, selected ? button_label_active_attr - : button_label_inactive_attr); - for (i = 0; i < temp; i++) - waddch (win, ' '); - wattrset (win, selected ? button_key_active_attr - : button_key_inactive_attr); - waddch (win, label[0]); - wattrset (win, selected ? button_label_active_attr - : button_label_inactive_attr); - waddstr (win, (char *)label + 1); - wattrset (win, selected ? button_active_attr : button_inactive_attr); - waddstr (win, ">"); - wmove (win, y, x + temp + 1); -} - -/* - * Draw a rectangular box with line drawing characters - */ -void -draw_box (WINDOW * win, int y, int x, int height, int width, - chtype box, chtype border) -{ - int i, j; - - wattrset (win, 0); - for (i = 0; i < height; i++) { - wmove (win, y + i, x); - for (j = 0; j < width; j++) - if (!i && !j) - waddch (win, border | ACS_ULCORNER); - else if (i == height - 1 && !j) - waddch (win, border | ACS_LLCORNER); - else if (!i && j == width - 1) - waddch (win, box | ACS_URCORNER); - else if (i == height - 1 && j == width - 1) - waddch (win, box | ACS_LRCORNER); - else if (!i) - waddch (win, border | ACS_HLINE); - else if (i == height - 1) - waddch (win, box | ACS_HLINE); - else if (!j) - waddch (win, border | ACS_VLINE); - else if (j == width - 1) - waddch (win, box | ACS_VLINE); - else - waddch (win, box | ' '); - } -} - -/* - * Draw shadows along the right and bottom edge to give a more 3D look - * to the boxes - */ -void -draw_shadow (WINDOW * win, int y, int x, int height, int width) -{ - int i; - - if (has_colors ()) { /* Whether terminal supports color? */ - wattrset (win, shadow_attr); - wmove (win, y + height, x + 2); - for (i = 0; i < width; i++) - waddch (win, winch (win) & A_CHARTEXT); - for (i = y + 1; i < y + height + 1; i++) { - wmove (win, i, x + width); - waddch (win, winch (win) & A_CHARTEXT); - waddch (win, winch (win) & A_CHARTEXT); - } - wnoutrefresh (win); - } -} - -/* - * Return the position of the first alphabetic character in a string. - */ -int -first_alpha(const char *string, const char *exempt) -{ - int i, in_paren=0, c; - - for (i = 0; i < strlen(string); i++) { - c = tolower(string[i]); - - if (strchr("<[(", c)) ++in_paren; - if (strchr(">])", c) && in_paren > 0) --in_paren; - - if ((! in_paren) && isalpha(c) && - strchr(exempt, c) == 0) - return i; - } - - return 0; -} - -/* - * Get the first selected item in the dialog_list_item list. - */ -struct dialog_list_item * -first_sel_item(int item_no, struct dialog_list_item ** items) -{ - int i; - - for (i = 0; i < item_no; i++) { - if (items[i]->selected) - return items[i]; - } - - return NULL; -} diff --git a/2.3/menu/lxdialog/yesno.c b/2.3/menu/lxdialog/yesno.c deleted file mode 100644 index 11fcc25..0000000 --- a/2.3/menu/lxdialog/yesno.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * yesno.c -- implements the yes/no box - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "dialog.h" - -/* - * Display termination buttons - */ -static void -print_buttons(WINDOW *dialog, int height, int width, int selected) -{ - int x = width / 2 - 10; - int y = height - 2; - - print_button (dialog, " Yes ", y, x, selected == 0); - print_button (dialog, " No ", y, x + 13, selected == 1); - - wmove(dialog, y, x+1 + 13*selected ); - wrefresh (dialog); -} - -/* - * Display a dialog box with two buttons - Yes and No - */ -int -dialog_yesno (const char *title, const char *prompt, int height, int width) -{ - int i, x, y, key = 0, button = 0; - WINDOW *dialog; - - /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; - - draw_shadow (stdscr, y, x, height, width); - - dialog = newwin (height, width, y, x); - keypad (dialog, TRUE); - - draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr); - wattrset (dialog, border_attr); - mvwaddch (dialog, height-3, 0, ACS_LTEE); - for (i = 0; i < width - 2; i++) - waddch (dialog, ACS_HLINE); - wattrset (dialog, dialog_attr); - waddch (dialog, ACS_RTEE); - - if (title != NULL && strlen(title) >= width-2 ) { - /* truncate long title -- mec */ - char * title2 = malloc(width-2+1); - memcpy( title2, title, width-2 ); - title2[width-2] = '\0'; - title = title2; - } - - if (title != NULL) { - wattrset (dialog, title_attr); - mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' '); - waddstr (dialog, (char *)title); - waddch (dialog, ' '); - } - - wattrset (dialog, dialog_attr); - print_autowrap (dialog, prompt, width - 2, 1, 3); - - print_buttons(dialog, height, width, 0); - - while (key != ESC) { - key = wgetch (dialog); - switch (key) { - case 'Y': - case 'y': - delwin (dialog); - return 0; - case 'N': - case 'n': - delwin (dialog); - return 1; - - case TAB: - case KEY_LEFT: - case KEY_RIGHT: - button = ((key == KEY_LEFT ? --button : ++button) < 0) - ? 1 : (button > 1 ? 0 : button); - - print_buttons(dialog, height, width, button); - wrefresh (dialog); - break; - case ' ': - case '\n': - delwin (dialog); - return button; - case ESC: - break; - } - } - - delwin (dialog); - return -1; /* ESC pressed */ -} diff --git a/2.3/menu/mconf.c b/2.3/menu/mconf.c deleted file mode 100644 index 0722f4c..0000000 --- a/2.3/menu/mconf.c +++ /dev/null @@ -1,976 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - * - * Introduced single menu mode (show all sub-menus in one large tree). - * 2002-11-06 Petr Baudis - * - * Directly use liblxdialog library routines. - * 2002-11-14 Petr Baudis - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "lxdialog/dialog.h" - -#define LKC_DIRECT_LINK -#include "lkc.h" - -static char menu_backtitle[128]; -static const char mconf_readme[] = -"Overview\n" -"--------\n" -"Some features may be built directly into JHALFS. Some features\n" -"may be completely removed altogether. There are also certain\n" -"parameters which are not really features, but must be\n" -"entered in as decimal or hexadecimal numbers or possibly text.\n" -"\n" -"Menu items beginning with [*] or [ ] represent features\n" -"configured to be built in or removed respectively.\n" -"\n" -"To change any of these features, highlight it with the cursor\n" -"keys and press to build it in or to removed it.\n" -"You may also press the to cycle\n" -"through the available options (ie. Y->N->Y).\n" -"\n" -"Some additional keyboard hints:\n" -"\n" -"Menus\n" -"----------\n" -"o Use the Up/Down arrow keys (cursor keys) to highlight the item\n" -" you wish to change or submenu wish to select and press .\n" -" Submenus are designated by \"--->\".\n" -"\n" -" Shortcut: Press the option's highlighted letter (hotkey).\n" -" Pressing a hotkey more than once will sequence\n" -" through all visible items which use that hotkey.\n" -"\n" -" You may also use the and keys to scroll\n" -" unseen options into view.\n" -"\n" -"o To exit a menu use the cursor keys to highlight the button\n" -" and press .\n" -"\n" -" Shortcut: Press or or if there is no hotkey\n" -" using those letters. You may press a single , but\n" -" there is a delayed response which you may find annoying.\n" -"\n" -" Also, the and cursor keys will cycle between and\n" -" \n" -"\n" -"\n" -"Data Entry\n" -"-----------\n" -"o Enter the requested information and press \n" -" If you are entering hexadecimal values, it is not necessary to\n" -" add the '0x' prefix to the entry.\n" -"\n" -"o For help, use the or cursor keys to highlight the help option\n" -" and press . You can try as well.\n" -"\n" -"\n" -"Text Box (Help Window)\n" -"--------\n" -"o Use the cursor keys to scroll up/down/left/right. The VI editor\n" -" keys h,j,k,l function here as do and for those\n" -" who are familiar with less and lynx.\n" -"\n" -"o Press , , or to exit.\n" -"\n" -"\n" -"Alternate Configuration Files\n" -"-----------------------------\n" -"Menuconfig supports the use of alternate configuration files for\n" -"those who, for various reasons, find it necessary to switch\n" -"between different configurations.\n" -"\n" -"At the end of the main menu you will find two options. One is\n" -"for saving the current configuration to a file of your choosing.\n" -"The other option is for loading a previously saved alternate\n" -"configuration.\n" -"\n" -"Even if you don't use alternate configuration files, but you\n" -"find during a Menuconfig session that you have completely messed\n" -"up your settings, you may use the \"Load Alternate...\" option to\n" -"restore your previously saved settings from \".config\" without\n" -"restarting Menuconfig.\n" -"\n" -"Other information\n" -"-----------------\n" -"If you use Menuconfig in an XTERM window make sure you have your\n" -"$TERM variable set to point to a xterm definition which supports color.\n" -"Otherwise, Menuconfig will look rather bad. Menuconfig will not\n" -"display correctly in a RXVT window because rxvt displays only one\n" -"intensity of color, bright.\n" -"\n" -"Menuconfig will display larger menus on screens or xterms which are\n" -"set to display more than the standard 25 row by 80 column geometry.\n" -"In order for this to work, the \"stty size\" command must be able to\n" -"display the screen's current row and column geometry. I STRONGLY\n" -"RECOMMEND that you make sure you do NOT have the shell variables\n" -"LINES and COLUMNS exported into your environment. Some distributions\n" -"export those variables via /etc/profile. Some ncurses programs can\n" -"become confused when those variables (LINES & COLUMNS) don't reflect\n" -"the true screen size.\n" -"\n" -"Optional personality available\n" -"------------------------------\n" -"If you prefer to have all of the options listed in a single\n" -"menu, rather than the default multimenu hierarchy, run the menuconfig\n" -"with MENUCONFIG_MODE environment variable set to single_menu. Example:\n" -"\n" -"make MENUCONFIG_MODE=single_menu menuconfig\n" -"\n" -" will then unroll the appropriate category, or enfold it if it\n" -"is already unrolled.\n" -"\n" -"Note that this mode can eventually be a little more CPU expensive\n" -"(especially with a larger number of unrolled categories) than the\n" -"default mode.\n", -menu_instructions[] = - "Arrow keys navigate the menu. " - " selects submenus --->. " - "Highlighted letters are hotkeys. " - "Pressing selectes a feature, while will exclude a feature. " - "Press to exit, for Help, for Search. " - "Legend: [*] feature is selected [ ] feature is excluded", -radiolist_instructions[] = - "Use the arrow keys to navigate this window or " - "press the hotkey of the item you wish to select " - "followed by the . " - "Press for additional information about this option.", -inputbox_instructions_int[] = - "Please enter a decimal value. " - "Fractions will not be accepted. " - "Use the key to move from the input field to the buttons below it.", -inputbox_instructions_hex[] = - "Please enter a hexadecimal value. " - "Use the key to move from the input field to the buttons below it.", -inputbox_instructions_string[] = - "Please enter a string value. " - "Use the key to move from the input field to the buttons below it.", -setmod_text[] = - "This feature depends on another which has been configured as a module.\n" - "As a result, this feature will be built as a module.", -nohelp_text[] = - "There is no help available for this option.\n", -load_config_text[] = - "Enter the name of the configuration file you wish to load. " - "Accept the name shown to restore the configuration you " - "last retrieved. Leave blank to abort.", -load_config_help[] = - "\n" - "For various reasons, one may wish to keep several different JHALFS\n" - "configurations available on a single machine.\n" - "\n" - "If you have saved a previous configuration in a file other than the\n" - "JHALFS's default, entering the name of the file here will allow you\n" - "to modify that configuration.\n" - "\n" - "If you are uncertain, then you have probably never used alternate\n" - "configuration files. You should therefor leave this blank to abort.\n", -save_config_text[] = - "Enter a filename to which this configuration should be saved " - "as an alternate. Leave blank to abort.", -save_config_help[] = - "\n" - "For various reasons, one may wish to keep different JHALFS\n" - "configurations available on a single machine.\n" - "\n" - "Entering a file name here will allow you to later retrieve, modify\n" - "and use the current configuration as an alternate to whatever\n" - "configuration options you have selected at that time.\n" - "\n" - "If you are uncertain what all this means then you should probably\n" - "leave this blank.\n", -search_help[] = - "\n" - "Search for CONFIG_ symbols and display their relations.\n" - "Example: search for \"^FOO\"\n" - "Result:\n" - "-----------------------------------------------------------------\n" - "Symbol: FOO [=m]\n" - "Prompt: Foo bus is used to drive the bar HW\n" - "Defined at drivers/pci/Kconfig:47\n" - "Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" - "Location:\n" - " -> Bus options (PCI, PCMCIA, EISA, MCA, ISA)\n" - " -> PCI support (PCI [=y])\n" - " -> PCI access mode ( [=y])\n" - "Selects: LIBCRC32\n" - "Selected by: BAR\n" - "-----------------------------------------------------------------\n" - "o The line 'Prompt:' shows the text used in the menu structure for\n" - " this CONFIG_ symbol\n" - "o The 'Defined at' line tell at what file / line number the symbol\n" - " is defined\n" - "o The 'Depends on:' line tell what symbols needs to be defined for\n" - " this symbol to be visible in the menu (selectable)\n" - "o The 'Location:' lines tell where in the menu structure this symbol\n" - " is located\n" - " A location followed by a [=y] indicate that this is a selectable\n" - " menu item - and current value is displayed inside brackets.\n" - "o The 'Selects:' line tell what symbol will be automatically\n" - " selected if this symbol is selected (y or m)\n" - "o The 'Selected by' line tell what symbol has selected this symbol\n" - "\n" - "Only relevant lines are shown.\n" - "\n\n" - "Search examples:\n" - "Examples: USB => find all CONFIG_ symbols containing USB\n" - " ^USB => find all CONFIG_ symbols starting with USB\n" - " USB$ => find all CONFIG_ symbols ending with USB\n" - "\n"; - -static char filename[PATH_MAX+1] = ".config"; -static int indent; -static struct termios ios_org; -static int rows = 0, cols = 0; -static struct menu *current_menu; -static int child_count; -static int single_menu_mode; - -static struct dialog_list_item *items[16384]; /* FIXME: This ought to be dynamic. */ -static int item_no; - -static void conf(struct menu *menu); -static void conf_choice(struct menu *menu); -static void conf_string(struct menu *menu); -static void conf_load(void); -static void conf_save(void); -static void show_textbox(const char *title, const char *text, int r, int c); -static void show_helptext(const char *title, const char *text); -static void show_help(struct menu *menu); -static void show_file(const char *filename, const char *title, int r, int c); - -static void init_wsize(void) -{ - struct winsize ws; - char *env; - - if (!ioctl(STDIN_FILENO, TIOCGWINSZ, &ws)) { - rows = ws.ws_row; - cols = ws.ws_col; - } - - if (!rows) { - env = getenv("LINES"); - if (env) - rows = atoi(env); - if (!rows) - rows = 24; - } - if (!cols) { - env = getenv("COLUMNS"); - if (env) - cols = atoi(env); - if (!cols) - cols = 80; - } - - if (rows < 19 || cols < 80) { - fprintf(stderr, "Your display is too small to run Menuconfig!\n"); - fprintf(stderr, "It must be at least 19 lines by 80 columns.\n"); - exit(1); - } - - rows -= 4; - cols -= 5; -} - -static void cinit(void) -{ - item_no = 0; -} - -static void cmake(void) -{ - items[item_no] = malloc(sizeof(struct dialog_list_item)); - memset(items[item_no], 0, sizeof(struct dialog_list_item)); - items[item_no]->tag = malloc(32); items[item_no]->tag[0] = 0; - items[item_no]->name = malloc(512); items[item_no]->name[0] = 0; - items[item_no]->namelen = 0; - item_no++; -} - -static int cprint_name(const char *fmt, ...) -{ - va_list ap; - int res; - - if (!item_no) - cmake(); - va_start(ap, fmt); - res = vsnprintf(items[item_no - 1]->name + items[item_no - 1]->namelen, - 512 - items[item_no - 1]->namelen, fmt, ap); - if (res > 0) - items[item_no - 1]->namelen += res; - va_end(ap); - - return res; -} - -static int cprint_tag(const char *fmt, ...) -{ - va_list ap; - int res; - - if (!item_no) - cmake(); - va_start(ap, fmt); - res = vsnprintf(items[item_no - 1]->tag, 32, fmt, ap); - va_end(ap); - - return res; -} - -static void cdone(void) -{ - int i; - - for (i = 0; i < item_no; i++) { - free(items[i]->tag); - free(items[i]->name); - free(items[i]); - } - - item_no = 0; -} - -static void get_prompt_str(struct gstr *r, struct property *prop) -{ - int i, j; - struct menu *submenu[8], *menu; - - str_printf(r, "Prompt: %s\n", prop->text); - str_printf(r, " Defined at %s:%d\n", prop->menu->file->name, - prop->menu->lineno); - if (!expr_is_yes(prop->visible.expr)) { - str_append(r, " Depends on: "); - expr_gstr_print(prop->visible.expr, r); - str_append(r, "\n"); - } - menu = prop->menu->parent; - for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) - submenu[i++] = menu; - if (i > 0) { - str_printf(r, " Location:\n"); - for (j = 4; --i >= 0; j += 2) { - menu = submenu[i]; - str_printf(r, "%*c-> %s", j, ' ', menu_get_prompt(menu)); - if (menu->sym) { - str_printf(r, " (%s [=%s])", menu->sym->name ? - menu->sym->name : "", - sym_get_string_value(menu->sym)); - } - str_append(r, "\n"); - } - } -} - -static void get_symbol_str(struct gstr *r, struct symbol *sym) -{ - bool hit; - struct property *prop; - - str_printf(r, "Symbol: %s [=%s]\n", sym->name, - sym_get_string_value(sym)); - for_all_prompts(sym, prop) - get_prompt_str(r, prop); - hit = false; - for_all_properties(sym, prop, P_SELECT) { - if (!hit) { - str_append(r, " Selects: "); - hit = true; - } else - str_printf(r, " && "); - expr_gstr_print(prop->expr, r); - } - if (hit) - str_append(r, "\n"); - if (sym->rev_dep.expr) { - str_append(r, " Selected by: "); - expr_gstr_print(sym->rev_dep.expr, r); - str_append(r, "\n"); - } - str_append(r, "\n\n"); -} - -static struct gstr get_relations_str(struct symbol **sym_arr) -{ - struct symbol *sym; - struct gstr res = str_new(); - int i; - - for (i = 0; sym_arr && (sym = sym_arr[i]); i++) - get_symbol_str(&res, sym); - if (!i) - str_append(&res, "No matches found.\n"); - return res; -} - -static void search_conf(void) -{ - struct symbol **sym_arr; - struct gstr res; - -again: - switch (dialog_inputbox("Search Configuration Parameter", - "Enter Keyword", 10, 75, - NULL)) { - case 0: - break; - case 1: - show_helptext("Search Configuration", search_help); - goto again; - default: - return; - } - - sym_arr = sym_re_search(dialog_input_result); - res = get_relations_str(sym_arr); - free(sym_arr); - show_textbox("Search Results", str_get(&res), 0, 0); - str_free(&res); -} - -static void build_conf(struct menu *menu) -{ - struct symbol *sym; - struct property *prop; - struct menu *child; - int type, tmp, doint = 2; - tristate val; - char ch; - - if (!menu_is_visible(menu)) - return; - - sym = menu->sym; - prop = menu->prompt; - if (!sym) { - if (prop && menu != current_menu) { - const char *prompt = menu_get_prompt(menu); - switch (prop->type) { - case P_MENU: - child_count++; - cmake(); - cprint_tag("m%p", menu); - - if (single_menu_mode) { - cprint_name("%s%*c%s", - menu->data ? "-->" : "++>", - indent + 1, ' ', prompt); - } else { - cprint_name(" %*c%s --->", indent + 1, ' ', prompt); - } - - if (single_menu_mode && menu->data) - goto conf_childs; - return; - default: - if (prompt) { - child_count++; - cmake(); - cprint_tag(":%p", menu); - cprint_name("---%*c%s", indent + 1, ' ', prompt); - } - } - } else - doint = 0; - goto conf_childs; - } - - cmake(); - type = sym_get_type(sym); - if (sym_is_choice(sym)) { - struct symbol *def_sym = sym_get_choice_value(sym); - struct menu *def_menu = NULL; - - child_count++; - for (child = menu->list; child; child = child->next) { - if (menu_is_visible(child) && child->sym == def_sym) - def_menu = child; - } - - val = sym_get_tristate_value(sym); - if (sym_is_changable(sym)) { - cprint_tag("t%p", menu); - switch (type) { - case S_BOOLEAN: - cprint_name("[%c]", val == no ? ' ' : '*'); - break; - case S_TRISTATE: - switch (val) { - case yes: ch = '*'; break; - case mod: ch = 'M'; break; - default: ch = ' '; break; - } - cprint_name("<%c>", ch); - break; - } - } else { - cprint_tag("%c%p", def_menu ? 't' : ':', menu); - cprint_name(" "); - } - - cprint_name("%*c%s", indent + 1, ' ', menu_get_prompt(menu)); - if (val == yes) { - if (def_menu) { - cprint_name(" (%s)", menu_get_prompt(def_menu)); - cprint_name(" --->"); - if (def_menu->list) { - indent += 2; - build_conf(def_menu); - indent -= 2; - } - } - return; - } - } else { - if (menu == current_menu) { - cprint_tag(":%p", menu); - cprint_name("---%*c%s", indent + 1, ' ', menu_get_prompt(menu)); - goto conf_childs; - } - child_count++; - val = sym_get_tristate_value(sym); - if (sym_is_choice_value(sym) && val == yes) { - cprint_tag(":%p", menu); - cprint_name(" "); - } else { - switch (type) { - case S_BOOLEAN: - cprint_tag("t%p", menu); - if (sym_is_changable(sym)) - cprint_name("[%c]", val == no ? ' ' : '*'); - else - cprint_name("---"); - break; - case S_TRISTATE: - cprint_tag("t%p", menu); - switch (val) { - case yes: ch = '*'; break; - case mod: ch = 'M'; break; - default: ch = ' '; break; - } - if (sym_is_changable(sym)) - cprint_name("<%c>", ch); - else - cprint_name("---"); - break; - default: - cprint_tag("s%p", menu); - tmp = cprint_name("(%s)", sym_get_string_value(sym)); - tmp = indent - tmp + 4; - if (tmp < 0) - tmp = 0; - cprint_name("%*c%s%s", tmp, ' ', menu_get_prompt(menu), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : " (NEW)"); - goto conf_childs; - } - } - cprint_name("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : " (NEW)"); - if (menu->prompt->type == P_MENU) { - cprint_name(" --->"); - return; - } - } - -conf_childs: - indent += doint; - for (child = menu->list; child; child = child->next) - build_conf(child); - indent -= doint; -} - -static void conf(struct menu *menu) -{ - struct dialog_list_item *active_item = NULL; - struct menu *submenu; - const char *prompt = menu_get_prompt(menu); - struct symbol *sym; - char active_entry[40]; - int stat, type; - - unlink("lxdialog.scrltmp"); - active_entry[0] = 0; - while (1) { - indent = 0; - child_count = 0; - current_menu = menu; - cdone(); cinit(); - build_conf(menu); - if (!child_count) - break; - if (menu == &rootmenu) { - cmake(); cprint_tag(":"); cprint_name("--- "); - cmake(); cprint_tag("L"); cprint_name("Load an Alternate Configuration File"); - cmake(); cprint_tag("S"); cprint_name("Save Configuration to an Alternate File"); - } - dialog_clear(); - stat = dialog_menu(prompt ? prompt : "Main Menu", - menu_instructions, rows, cols, rows - 10, - active_entry, item_no, items); - if (stat < 0) - return; - - if (stat == 1 || stat == 255) - break; - - active_item = first_sel_item(item_no, items); - if (!active_item) - continue; - active_item->selected = 0; - strncpy(active_entry, active_item->tag, sizeof(active_entry)); - active_entry[sizeof(active_entry)-1] = 0; - type = active_entry[0]; - if (!type) - continue; - - sym = NULL; - submenu = NULL; - if (sscanf(active_entry + 1, "%p", &submenu) == 1) - sym = submenu->sym; - - switch (stat) { - case 0: - switch (type) { - case 'm': - if (single_menu_mode) - submenu->data = (void *) (long) !submenu->data; - else - conf(submenu); - break; - case 't': - if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) - conf_choice(submenu); - else if (submenu->prompt->type == P_MENU) - conf(submenu); - break; - case 's': - conf_string(submenu); - break; - case 'L': - conf_load(); - break; - case 'S': - conf_save(); - break; - } - break; - case 2: - if (sym) - show_help(submenu); - else - show_helptext("README", mconf_readme); - break; - case 3: - if (type == 't') { - if (sym_set_tristate_value(sym, yes)) - break; - if (sym_set_tristate_value(sym, mod)) - show_textbox(NULL, setmod_text, 6, 74); - } - break; - case 4: - if (type == 't') - sym_set_tristate_value(sym, no); - break; - case 5: - if (type == 't') - sym_set_tristate_value(sym, mod); - break; - case 6: - if (type == 't') - sym_toggle_tristate_value(sym); - else if (type == 'm') - conf(submenu); - break; - case 7: - search_conf(); - break; - } - } -} - -static void show_textbox(const char *title, const char *text, int r, int c) -{ - int fd; - - fd = creat(".help.tmp", 0777); - write(fd, text, strlen(text)); - close(fd); - show_file(".help.tmp", title, r, c); - unlink(".help.tmp"); -} - -static void show_helptext(const char *title, const char *text) -{ - show_textbox(title, text, 0, 0); -} - -static void show_help(struct menu *menu) -{ - struct gstr help = str_new(); - struct symbol *sym = menu->sym; - - if (sym->help) - { - if (sym->name) { - str_printf(&help, "%s:\n\n", sym->name); - str_append(&help, sym->help); - str_append(&help, "\n"); - } - } else { - str_append(&help, nohelp_text); - } - get_symbol_str(&help, sym); - show_helptext(menu_get_prompt(menu), str_get(&help)); - str_free(&help); -} - -static void show_file(const char *filename, const char *title, int r, int c) -{ - while (dialog_textbox(title, filename, r ? r : rows, c ? c : cols) < 0) - ; -} - -static void conf_choice(struct menu *menu) -{ - const char *prompt = menu_get_prompt(menu); - struct menu *child; - struct symbol *active; - - active = sym_get_choice_value(menu->sym); - while (1) { - current_menu = menu; - cdone(); cinit(); - for (child = menu->list; child; child = child->next) { - if (!menu_is_visible(child)) - continue; - cmake(); - cprint_tag("%p", child); - cprint_name("%s", menu_get_prompt(child)); - if (child->sym == sym_get_choice_value(menu->sym)) - items[item_no - 1]->selected = 1; /* ON */ - else if (child->sym == active) - items[item_no - 1]->selected = 2; /* SELECTED */ - else - items[item_no - 1]->selected = 0; /* OFF */ - } - - switch (dialog_checklist(prompt ? prompt : "Main Menu", - radiolist_instructions, 15, 70, 6, - item_no, items, FLAG_RADIO)) { - case 0: - if (sscanf(first_sel_item(item_no, items)->tag, "%p", &child) != 1) - break; - sym_set_tristate_value(child->sym, yes); - return; - case 1: - if (sscanf(first_sel_item(item_no, items)->tag, "%p", &child) == 1) { - show_help(child); - active = child->sym; - } else - show_help(menu); - break; - case 255: - return; - } - } -} - -static void conf_string(struct menu *menu) -{ - const char *prompt = menu_get_prompt(menu); - - while (1) { - char *heading; - - switch (sym_get_type(menu->sym)) { - case S_INT: - heading = (char *) inputbox_instructions_int; - break; - case S_HEX: - heading = (char *) inputbox_instructions_hex; - break; - case S_STRING: - heading = (char *) inputbox_instructions_string; - break; - default: - heading = "Internal mconf error!"; - /* panic? */; - } - - switch (dialog_inputbox(prompt ? prompt : "Main Menu", - heading, 10, 75, - sym_get_string_value(menu->sym))) { - case 0: - if (sym_set_string_value(menu->sym, dialog_input_result)) - return; - show_textbox(NULL, "You have made an invalid entry.", 5, 43); - break; - case 1: - show_help(menu); - break; - case 255: - return; - } - } -} - -static void conf_load(void) -{ - while (1) { - switch (dialog_inputbox(NULL, load_config_text, 11, 55, - filename)) { - case 0: - if (!dialog_input_result[0]) - return; - if (!conf_read(dialog_input_result)) - return; - show_textbox(NULL, "File does not exist!", 5, 38); - break; - case 1: - show_helptext("Load Alternate Configuration", load_config_help); - break; - case 255: - return; - } - } -} - -static void conf_save(void) -{ - while (1) { - switch (dialog_inputbox(NULL, save_config_text, 11, 55, - filename)) { - case 0: - if (!dialog_input_result[0]) - return; - if (!conf_write(dialog_input_result)) - return; - show_textbox(NULL, "Can't create file! Probably a nonexistent directory.", 5, 60); - break; - case 1: - show_helptext("Save Alternate Configuration", save_config_help); - break; - case 255: - return; - } - } -} - -static void conf_cleanup(void) -{ - tcsetattr(1, TCSAFLUSH, &ios_org); - unlink(".help.tmp"); -} - -static void winch_handler(int sig) -{ - struct winsize ws; - - if (ioctl(1, TIOCGWINSZ, &ws) == -1) { - rows = 24; - cols = 80; - } else { - rows = ws.ws_row; - cols = ws.ws_col; - } - - if (rows < 19 || cols < 80) { - end_dialog(); - fprintf(stderr, "Your display is too small to run Menuconfig!\n"); - fprintf(stderr, "It must be at least 19 lines by 80 columns.\n"); - exit(1); - } - - rows -= 4; - cols -= 5; - -} - -int main(int ac, char **av) -{ - struct symbol *sym; - char *mode; - int stat; - - conf_parse(av[1]); - conf_read(NULL); - - sym = sym_lookup("VERSION", 0); - sym_calc_value(sym); - snprintf(menu_backtitle, 128, "JHALFS v%s Configuration", - sym_get_string_value(sym)); - - mode = getenv("MENUCONFIG_MODE"); - if (mode) { - if (!strcasecmp(mode, "single_menu")) - single_menu_mode = 1; - } - - tcgetattr(1, &ios_org); - atexit(conf_cleanup); - init_wsize(); - init_dialog(); - signal(SIGWINCH, winch_handler); - conf(&rootmenu); - end_dialog(); - - /* Restart dialog to act more like when lxdialog was still separate */ - init_dialog(); - do { - stat = dialog_yesno(NULL, - "Do you wish to save your new JHALFS configuration?", 5, 60); - } while (stat < 0); - end_dialog(); - - if (stat == 0) { - conf_write(NULL); - printf("\n" - "*** End of JHALFS configuration.\n"); - } else - printf("\n\nYour JHALFS configuration changes were NOT saved.\n\n"); - - return 0; -} diff --git a/2.3/menu/menu.c b/2.3/menu/menu.c deleted file mode 100644 index 0c13156..0000000 --- a/2.3/menu/menu.c +++ /dev/null @@ -1,390 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -struct menu rootmenu; -static struct menu **last_entry_ptr; - -struct file *file_list; -struct file *current_file; - -static void menu_warn(struct menu *menu, const char *fmt, ...) -{ - va_list ap; - va_start(ap, fmt); - fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno); - vfprintf(stderr, fmt, ap); - fprintf(stderr, "\n"); - va_end(ap); -} - -static void prop_warn(struct property *prop, const char *fmt, ...) -{ - va_list ap; - va_start(ap, fmt); - fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno); - vfprintf(stderr, fmt, ap); - fprintf(stderr, "\n"); - va_end(ap); -} - -void menu_init(void) -{ - current_entry = current_menu = &rootmenu; - last_entry_ptr = &rootmenu.list; -} - -void menu_add_entry(struct symbol *sym) -{ - struct menu *menu; - - menu = malloc(sizeof(*menu)); - memset(menu, 0, sizeof(*menu)); - menu->sym = sym; - menu->parent = current_menu; - menu->file = current_file; - menu->lineno = zconf_lineno(); - - *last_entry_ptr = menu; - last_entry_ptr = &menu->next; - current_entry = menu; -} - -void menu_end_entry(void) -{ -} - -void menu_add_menu(void) -{ - current_menu = current_entry; - last_entry_ptr = ¤t_entry->list; -} - -void menu_end_menu(void) -{ - last_entry_ptr = ¤t_menu->next; - current_menu = current_menu->parent; -} - -struct expr *menu_check_dep(struct expr *e) -{ - if (!e) - return e; - - switch (e->type) { - case E_NOT: - e->left.expr = menu_check_dep(e->left.expr); - break; - case E_OR: - case E_AND: - e->left.expr = menu_check_dep(e->left.expr); - e->right.expr = menu_check_dep(e->right.expr); - break; - case E_SYMBOL: - /* change 'm' into 'm' && MODULES */ - if (e->left.sym == &symbol_mod) - return expr_alloc_and(e, expr_alloc_symbol(modules_sym)); - break; - default: - break; - } - return e; -} - -void menu_add_dep(struct expr *dep) -{ - current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep)); -} - -void menu_set_type(int type) -{ - struct symbol *sym = current_entry->sym; - - if (sym->type == type) - return; - if (sym->type == S_UNKNOWN) { - sym->type = type; - return; - } - menu_warn(current_entry, "type of '%s' redefined from '%s' to '%s'\n", - sym->name ? sym->name : "", - sym_type_name(sym->type), sym_type_name(type)); -} - -struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep) -{ - struct property *prop = prop_alloc(type, current_entry->sym); - - prop->menu = current_entry; - prop->text = prompt; - prop->expr = expr; - prop->visible.expr = menu_check_dep(dep); - - if (prompt) { - if (current_entry->prompt) - menu_warn(current_entry, "prompt redefined\n"); - current_entry->prompt = prop; - } - - return prop; -} - -void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep) -{ - menu_add_prop(type, prompt, NULL, dep); -} - -void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) -{ - menu_add_prop(type, NULL, expr, dep); -} - -void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep) -{ - menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep); -} - -void sym_check_prop(struct symbol *sym) -{ - struct property *prop; - struct symbol *sym2; - for (prop = sym->prop; prop; prop = prop->next) { - switch (prop->type) { - case P_DEFAULT: - if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) && - prop->expr->type != E_SYMBOL) - prop_warn(prop, - "default for config symbol '%'" - " must be a single symbol", sym->name); - break; - case P_SELECT: - sym2 = prop_get_symbol(prop); - if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE) - prop_warn(prop, - "config symbol '%s' uses select, but is " - "not boolean or tristate", sym->name); - else if (sym2->type == S_UNKNOWN) - prop_warn(prop, - "'select' used by config symbol '%s' " - "refer to undefined symbol '%s'", - sym->name, sym2->name); - else if (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE) - prop_warn(prop, - "'%s' has wrong type. 'select' only " - "accept arguments of boolean and " - "tristate type", sym2->name); - break; - case P_RANGE: - if (sym->type != S_INT && sym->type != S_HEX) - prop_warn(prop, "range is only allowed " - "for int or hex symbols"); - if (!sym_string_valid(sym, prop->expr->left.sym->name) || - !sym_string_valid(sym, prop->expr->right.sym->name)) - prop_warn(prop, "range is invalid"); - break; - default: - ; - } - } -} - -void menu_finalize(struct menu *parent) -{ - struct menu *menu, *last_menu; - struct symbol *sym; - struct property *prop; - struct expr *parentdep, *basedep, *dep, *dep2, **ep; - - sym = parent->sym; - if (parent->list) { - if (sym && sym_is_choice(sym)) { - /* find the first choice value and find out choice type */ - for (menu = parent->list; menu; menu = menu->next) { - if (menu->sym) { - current_entry = parent; - menu_set_type(menu->sym->type); - current_entry = menu; - menu_set_type(sym->type); - break; - } - } - parentdep = expr_alloc_symbol(sym); - } else if (parent->prompt) - parentdep = parent->prompt->visible.expr; - else - parentdep = parent->dep; - - for (menu = parent->list; menu; menu = menu->next) { - basedep = expr_transform(menu->dep); - basedep = expr_alloc_and(expr_copy(parentdep), basedep); - basedep = expr_eliminate_dups(basedep); - menu->dep = basedep; - if (menu->sym) - prop = menu->sym->prop; - else - prop = menu->prompt; - for (; prop; prop = prop->next) { - if (prop->menu != menu) - continue; - dep = expr_transform(prop->visible.expr); - dep = expr_alloc_and(expr_copy(basedep), dep); - dep = expr_eliminate_dups(dep); - if (menu->sym && menu->sym->type != S_TRISTATE) - dep = expr_trans_bool(dep); - prop->visible.expr = dep; - if (prop->type == P_SELECT) { - struct symbol *es = prop_get_symbol(prop); - es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr, - expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep))); - } - } - } - for (menu = parent->list; menu; menu = menu->next) - menu_finalize(menu); - } else if (sym) { - basedep = parent->prompt ? parent->prompt->visible.expr : NULL; - basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no); - basedep = expr_eliminate_dups(expr_transform(basedep)); - last_menu = NULL; - for (menu = parent->next; menu; menu = menu->next) { - dep = menu->prompt ? menu->prompt->visible.expr : menu->dep; - if (!expr_contains_symbol(dep, sym)) - break; - if (expr_depends_symbol(dep, sym)) - goto next; - dep = expr_trans_compare(dep, E_UNEQUAL, &symbol_no); - dep = expr_eliminate_dups(expr_transform(dep)); - dep2 = expr_copy(basedep); - expr_eliminate_eq(&dep, &dep2); - expr_free(dep); - if (!expr_is_yes(dep2)) { - expr_free(dep2); - break; - } - expr_free(dep2); - next: - menu_finalize(menu); - menu->parent = parent; - last_menu = menu; - } - if (last_menu) { - parent->list = parent->next; - parent->next = last_menu->next; - last_menu->next = NULL; - } - } - for (menu = parent->list; menu; menu = menu->next) { - if (sym && sym_is_choice(sym) && menu->sym) { - menu->sym->flags |= SYMBOL_CHOICEVAL; - if (!menu->prompt) - menu_warn(menu, "choice value must have a prompt"); - for (prop = menu->sym->prop; prop; prop = prop->next) { - if (prop->type == P_PROMPT && prop->menu != menu) { - prop_warn(prop, "choice values " - "currently only support a " - "single prompt"); - } - if (prop->type == P_DEFAULT) - prop_warn(prop, "defaults for choice " - "values not supported"); - } - current_entry = menu; - menu_set_type(sym->type); - menu_add_symbol(P_CHOICE, sym, NULL); - prop = sym_get_choice_prop(sym); - for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr) - ; - *ep = expr_alloc_one(E_CHOICE, NULL); - (*ep)->right.sym = menu->sym; - } - if (menu->list && (!menu->prompt || !menu->prompt->text)) { - for (last_menu = menu->list; ; last_menu = last_menu->next) { - last_menu->parent = parent; - if (!last_menu->next) - break; - } - last_menu->next = menu->next; - menu->next = menu->list; - menu->list = NULL; - } - } - - if (sym && !(sym->flags & SYMBOL_WARNED)) { - if (sym->type == S_UNKNOWN) - menu_warn(parent, "config symbol defined " - "without type\n"); - - if (sym_is_choice(sym) && !parent->prompt) - menu_warn(parent, "choice must have a prompt\n"); - - /* Check properties connected to this symbol */ - sym_check_prop(sym); - sym->flags |= SYMBOL_WARNED; - } - - if (sym && !sym_is_optional(sym) && parent->prompt) { - sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr, - expr_alloc_and(parent->prompt->visible.expr, - expr_alloc_symbol(&symbol_mod))); - } -} - -bool menu_is_visible(struct menu *menu) -{ - struct menu *child; - struct symbol *sym; - tristate visible; - - if (!menu->prompt) - return false; - sym = menu->sym; - if (sym) { - sym_calc_value(sym); - visible = menu->prompt->visible.tri; - } else - visible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr); - - if (visible != no) - return true; - if (!sym || sym_get_tristate_value(menu->sym) == no) - return false; - - for (child = menu->list; child; child = child->next) - if (menu_is_visible(child)) - return true; - return false; -} - -const char *menu_get_prompt(struct menu *menu) -{ - if (menu->prompt) - return menu->prompt->text; - else if (menu->sym) - return menu->sym->name; - return NULL; -} - -struct menu *menu_get_root_menu(struct menu *menu) -{ - return &rootmenu; -} - -struct menu *menu_get_parent_menu(struct menu *menu) -{ - enum prop_type type; - - for (; menu != &rootmenu; menu = menu->parent) { - type = menu->prompt ? menu->prompt->type : 0; - if (type == P_MENU) - break; - } - return menu; -} - diff --git a/2.3/menu/symbol.c b/2.3/menu/symbol.c deleted file mode 100644 index ea62972..0000000 --- a/2.3/menu/symbol.c +++ /dev/null @@ -1,809 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -struct symbol symbol_yes = { - .name = "y", - .curr = { "y", yes }, - .flags = SYMBOL_YES|SYMBOL_VALID, -}, symbol_mod = { - .name = "m", - .curr = { "m", mod }, - .flags = SYMBOL_MOD|SYMBOL_VALID, -}, symbol_no = { - .name = "n", - .curr = { "n", no }, - .flags = SYMBOL_NO|SYMBOL_VALID, -}, symbol_empty = { - .name = "", - .curr = { "", no }, - .flags = SYMBOL_VALID, -}; - -int sym_change_count; -struct symbol *modules_sym; -tristate modules_val; - -void sym_add_default(struct symbol *sym, const char *def) -{ - struct property *prop = prop_alloc(P_DEFAULT, sym); - - prop->expr = expr_alloc_symbol(sym_lookup(def, 1)); -} - -void sym_init(void) -{ - struct symbol *sym; - char *p; - static bool inited = false; - - if (inited) - return; - inited = true; - - sym = sym_lookup("VERSION", 0); - sym->type = S_STRING; - sym->flags |= SYMBOL_AUTO; - p = getenv("VERSION"); - if (p) - sym_add_default(sym, p); - - sym = sym_lookup("TARGET_ARCH", 0); - sym->type = S_STRING; - sym->flags |= SYMBOL_AUTO; - p = getenv("TARGET_ARCH"); - if (p) - sym_add_default(sym, p); - -} - -enum symbol_type sym_get_type(struct symbol *sym) -{ - enum symbol_type type = sym->type; - - if (type == S_TRISTATE) { - if (sym_is_choice_value(sym) && sym->visible == yes) - type = S_BOOLEAN; - else if (modules_val == no) - type = S_BOOLEAN; - } - return type; -} - -const char *sym_type_name(enum symbol_type type) -{ - switch (type) { - case S_BOOLEAN: - return "boolean"; - case S_TRISTATE: - return "tristate"; - case S_INT: - return "integer"; - case S_HEX: - return "hex"; - case S_STRING: - return "string"; - case S_UNKNOWN: - return "unknown"; - case S_OTHER: - break; - } - return "???"; -} - -struct property *sym_get_choice_prop(struct symbol *sym) -{ - struct property *prop; - - for_all_choices(sym, prop) - return prop; - return NULL; -} - -struct property *sym_get_default_prop(struct symbol *sym) -{ - struct property *prop; - - for_all_defaults(sym, prop) { - prop->visible.tri = expr_calc_value(prop->visible.expr); - if (prop->visible.tri != no) - return prop; - } - return NULL; -} - -struct property *sym_get_range_prop(struct symbol *sym) -{ - struct property *prop; - - for_all_properties(sym, prop, P_RANGE) { - prop->visible.tri = expr_calc_value(prop->visible.expr); - if (prop->visible.tri != no) - return prop; - } - return NULL; -} - -static void sym_calc_visibility(struct symbol *sym) -{ - struct property *prop; - tristate tri; - - /* any prompt visible? */ - tri = no; - for_all_prompts(sym, prop) { - prop->visible.tri = expr_calc_value(prop->visible.expr); - tri = E_OR(tri, prop->visible.tri); - } - if (tri == mod && (sym->type != S_TRISTATE || modules_val == no)) - tri = yes; - if (sym->visible != tri) { - sym->visible = tri; - sym_set_changed(sym); - } - if (sym_is_choice_value(sym)) - return; - tri = no; - if (sym->rev_dep.expr) - tri = expr_calc_value(sym->rev_dep.expr); - if (tri == mod && sym_get_type(sym) == S_BOOLEAN) - tri = yes; - if (sym->rev_dep.tri != tri) { - sym->rev_dep.tri = tri; - sym_set_changed(sym); - } -} - -static struct symbol *sym_calc_choice(struct symbol *sym) -{ - struct symbol *def_sym; - struct property *prop; - struct expr *e; - - /* is the user choice visible? */ - def_sym = sym->user.val; - if (def_sym) { - sym_calc_visibility(def_sym); - if (def_sym->visible != no) - return def_sym; - } - - /* any of the defaults visible? */ - for_all_defaults(sym, prop) { - prop->visible.tri = expr_calc_value(prop->visible.expr); - if (prop->visible.tri == no) - continue; - def_sym = prop_get_symbol(prop); - sym_calc_visibility(def_sym); - if (def_sym->visible != no) - return def_sym; - } - - /* just get the first visible value */ - prop = sym_get_choice_prop(sym); - for (e = prop->expr; e; e = e->left.expr) { - def_sym = e->right.sym; - sym_calc_visibility(def_sym); - if (def_sym->visible != no) - return def_sym; - } - - /* no choice? reset tristate value */ - sym->curr.tri = no; - return NULL; -} - -void sym_calc_value(struct symbol *sym) -{ - struct symbol_value newval, oldval; - struct property *prop; - struct expr *e; - - if (!sym) - return; - - if (sym->flags & SYMBOL_VALID) - return; - sym->flags |= SYMBOL_VALID; - - oldval = sym->curr; - - switch (sym->type) { - case S_INT: - case S_HEX: - case S_STRING: - newval = symbol_empty.curr; - break; - case S_BOOLEAN: - case S_TRISTATE: - newval = symbol_no.curr; - break; - default: - sym->curr.val = sym->name; - sym->curr.tri = no; - return; - } - if (!sym_is_choice_value(sym)) - sym->flags &= ~SYMBOL_WRITE; - - sym_calc_visibility(sym); - - /* set default if recursively called */ - sym->curr = newval; - - switch (sym_get_type(sym)) { - case S_BOOLEAN: - case S_TRISTATE: - if (sym_is_choice_value(sym) && sym->visible == yes) { - prop = sym_get_choice_prop(sym); - newval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no; - } else if (E_OR(sym->visible, sym->rev_dep.tri) != no) { - sym->flags |= SYMBOL_WRITE; - if (sym_has_value(sym)) - newval.tri = sym->user.tri; - else if (!sym_is_choice(sym)) { - prop = sym_get_default_prop(sym); - if (prop) - newval.tri = expr_calc_value(prop->expr); - } - newval.tri = E_OR(E_AND(newval.tri, sym->visible), sym->rev_dep.tri); - } else if (!sym_is_choice(sym)) { - prop = sym_get_default_prop(sym); - if (prop) { - sym->flags |= SYMBOL_WRITE; - newval.tri = expr_calc_value(prop->expr); - } - } - if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN) - newval.tri = yes; - break; - case S_STRING: - case S_HEX: - case S_INT: - if (sym->visible != no) { - sym->flags |= SYMBOL_WRITE; - if (sym_has_value(sym)) { - newval.val = sym->user.val; - break; - } - } - prop = sym_get_default_prop(sym); - if (prop) { - struct symbol *ds = prop_get_symbol(prop); - if (ds) { - sym->flags |= SYMBOL_WRITE; - sym_calc_value(ds); - newval.val = ds->curr.val; - } - } - break; - default: - ; - } - - sym->curr = newval; - if (sym_is_choice(sym) && newval.tri == yes) - sym->curr.val = sym_calc_choice(sym); - - if (memcmp(&oldval, &sym->curr, sizeof(oldval))) - sym_set_changed(sym); - if (modules_sym == sym) - modules_val = modules_sym->curr.tri; - - if (sym_is_choice(sym)) { - int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE); - prop = sym_get_choice_prop(sym); - for (e = prop->expr; e; e = e->left.expr) { - e->right.sym->flags |= flags; - if (flags & SYMBOL_CHANGED) - sym_set_changed(e->right.sym); - } - } -} - -void sym_clear_all_valid(void) -{ - struct symbol *sym; - int i; - - for_all_symbols(i, sym) - sym->flags &= ~SYMBOL_VALID; - sym_change_count++; - if (modules_sym) - sym_calc_value(modules_sym); -} - -void sym_set_changed(struct symbol *sym) -{ - struct property *prop; - - sym->flags |= SYMBOL_CHANGED; - for (prop = sym->prop; prop; prop = prop->next) { - if (prop->menu) - prop->menu->flags |= MENU_CHANGED; - } -} - -void sym_set_all_changed(void) -{ - struct symbol *sym; - int i; - - for_all_symbols(i, sym) - sym_set_changed(sym); -} - -bool sym_tristate_within_range(struct symbol *sym, tristate val) -{ - int type = sym_get_type(sym); - - if (sym->visible == no) - return false; - - if (type != S_BOOLEAN && type != S_TRISTATE) - return false; - - if (type == S_BOOLEAN && val == mod) - return false; - if (sym->visible <= sym->rev_dep.tri) - return false; - if (sym_is_choice_value(sym) && sym->visible == yes) - return val == yes; - return val >= sym->rev_dep.tri && val <= sym->visible; -} - -bool sym_set_tristate_value(struct symbol *sym, tristate val) -{ - tristate oldval = sym_get_tristate_value(sym); - - if (oldval != val && !sym_tristate_within_range(sym, val)) - return false; - - if (sym->flags & SYMBOL_NEW) { - sym->flags &= ~SYMBOL_NEW; - sym_set_changed(sym); - } - if (sym_is_choice_value(sym) && val == yes) { - struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); - - cs->user.val = sym; - cs->flags &= ~SYMBOL_NEW; - } - - sym->user.tri = val; - if (oldval != val) { - sym_clear_all_valid(); - if (sym == modules_sym) - sym_set_all_changed(); - } - - return true; -} - -tristate sym_toggle_tristate_value(struct symbol *sym) -{ - tristate oldval, newval; - - oldval = newval = sym_get_tristate_value(sym); - do { - switch (newval) { - case no: - newval = mod; - break; - case mod: - newval = yes; - break; - case yes: - newval = no; - break; - } - if (sym_set_tristate_value(sym, newval)) - break; - } while (oldval != newval); - return newval; -} - -bool sym_string_valid(struct symbol *sym, const char *str) -{ - signed char ch; - - switch (sym->type) { - case S_STRING: - return true; - case S_INT: - ch = *str++; - if (ch == '-') - ch = *str++; - if (!isdigit(ch)) - return false; - if (ch == '0' && *str != 0) - return false; - while ((ch = *str++)) { - if (!isdigit(ch)) - return false; - } - return true; - case S_HEX: - if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) - str += 2; - ch = *str++; - do { - if (!isxdigit(ch)) - return false; - } while ((ch = *str++)); - return true; - case S_BOOLEAN: - case S_TRISTATE: - switch (str[0]) { - case 'y': case 'Y': - case 'm': case 'M': - case 'n': case 'N': - return true; - } - return false; - default: - return false; - } -} - -bool sym_string_within_range(struct symbol *sym, const char *str) -{ - struct property *prop; - int val; - - switch (sym->type) { - case S_STRING: - return sym_string_valid(sym, str); - case S_INT: - if (!sym_string_valid(sym, str)) - return false; - prop = sym_get_range_prop(sym); - if (!prop) - return true; - val = strtol(str, NULL, 10); - return val >= strtol(prop->expr->left.sym->name, NULL, 10) && - val <= strtol(prop->expr->right.sym->name, NULL, 10); - case S_HEX: - if (!sym_string_valid(sym, str)) - return false; - prop = sym_get_range_prop(sym); - if (!prop) - return true; - val = strtol(str, NULL, 16); - return val >= strtol(prop->expr->left.sym->name, NULL, 16) && - val <= strtol(prop->expr->right.sym->name, NULL, 16); - case S_BOOLEAN: - case S_TRISTATE: - switch (str[0]) { - case 'y': case 'Y': - return sym_tristate_within_range(sym, yes); - case 'm': case 'M': - return sym_tristate_within_range(sym, mod); - case 'n': case 'N': - return sym_tristate_within_range(sym, no); - } - return false; - default: - return false; - } -} - -bool sym_set_string_value(struct symbol *sym, const char *newval) -{ - const char *oldval; - char *val; - int size; - - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - switch (newval[0]) { - case 'y': case 'Y': - return sym_set_tristate_value(sym, yes); - case 'm': case 'M': - return sym_set_tristate_value(sym, mod); - case 'n': case 'N': - return sym_set_tristate_value(sym, no); - } - return false; - default: - ; - } - - if (!sym_string_within_range(sym, newval)) - return false; - - if (sym->flags & SYMBOL_NEW) { - sym->flags &= ~SYMBOL_NEW; - sym_set_changed(sym); - } - - oldval = sym->user.val; - size = strlen(newval) + 1; - if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) { - size += 2; - sym->user.val = val = malloc(size); - *val++ = '0'; - *val++ = 'x'; - } else if (!oldval || strcmp(oldval, newval)) - sym->user.val = val = malloc(size); - else - return true; - - strcpy(val, newval); - free((void *)oldval); - sym_clear_all_valid(); - - return true; -} - -const char *sym_get_string_value(struct symbol *sym) -{ - tristate val; - - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - val = sym_get_tristate_value(sym); - switch (val) { - case no: - return "n"; - case mod: - return "m"; - case yes: - return "y"; - } - break; - default: - ; - } - return (const char *)sym->curr.val; -} - -bool sym_is_changable(struct symbol *sym) -{ - return sym->visible > sym->rev_dep.tri; -} - -struct symbol *sym_lookup(const char *name, int isconst) -{ - struct symbol *symbol; - const char *ptr; - char *new_name; - int hash = 0; - - if (name) { - if (name[0] && !name[1]) { - switch (name[0]) { - case 'y': return &symbol_yes; - case 'm': return &symbol_mod; - case 'n': return &symbol_no; - } - } - for (ptr = name; *ptr; ptr++) - hash += *ptr; - hash &= 0xff; - - for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { - if (!strcmp(symbol->name, name)) { - if ((isconst && symbol->flags & SYMBOL_CONST) || - (!isconst && !(symbol->flags & SYMBOL_CONST))) - return symbol; - } - } - new_name = strdup(name); - } else { - new_name = NULL; - hash = 256; - } - - symbol = malloc(sizeof(*symbol)); - memset(symbol, 0, sizeof(*symbol)); - symbol->name = new_name; - symbol->type = S_UNKNOWN; - symbol->flags = SYMBOL_NEW; - if (isconst) - symbol->flags |= SYMBOL_CONST; - - symbol->next = symbol_hash[hash]; - symbol_hash[hash] = symbol; - - return symbol; -} - -struct symbol *sym_find(const char *name) -{ - struct symbol *symbol = NULL; - const char *ptr; - int hash = 0; - - if (!name) - return NULL; - - if (name[0] && !name[1]) { - switch (name[0]) { - case 'y': return &symbol_yes; - case 'm': return &symbol_mod; - case 'n': return &symbol_no; - } - } - for (ptr = name; *ptr; ptr++) - hash += *ptr; - hash &= 0xff; - - for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { - if (!strcmp(symbol->name, name) && - !(symbol->flags & SYMBOL_CONST)) - break; - } - - return symbol; -} - -struct symbol **sym_re_search(const char *pattern) -{ - struct symbol *sym, **sym_arr = NULL; - int i, cnt, size; - regex_t re; - - cnt = size = 0; - /* Skip if empty */ - if (strlen(pattern) == 0) - return NULL; - if (regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB|REG_ICASE)) - return NULL; - - for_all_symbols(i, sym) { - if (sym->flags & SYMBOL_CONST || !sym->name) - continue; - if (regexec(&re, sym->name, 0, NULL, 0)) - continue; - if (cnt + 1 >= size) { - void *tmp = sym_arr; - size += 16; - sym_arr = realloc(sym_arr, size * sizeof(struct symbol *)); - if (!sym_arr) { - free(tmp); - return NULL; - } - } - sym_arr[cnt++] = sym; - } - if (sym_arr) - sym_arr[cnt] = NULL; - regfree(&re); - - return sym_arr; -} - - -struct symbol *sym_check_deps(struct symbol *sym); - -static struct symbol *sym_check_expr_deps(struct expr *e) -{ - struct symbol *sym; - - if (!e) - return NULL; - switch (e->type) { - case E_OR: - case E_AND: - sym = sym_check_expr_deps(e->left.expr); - if (sym) - return sym; - return sym_check_expr_deps(e->right.expr); - case E_NOT: - return sym_check_expr_deps(e->left.expr); - case E_EQUAL: - case E_UNEQUAL: - sym = sym_check_deps(e->left.sym); - if (sym) - return sym; - return sym_check_deps(e->right.sym); - case E_SYMBOL: - return sym_check_deps(e->left.sym); - default: - break; - } - printf("Oops! How to check %d?\n", e->type); - return NULL; -} - -struct symbol *sym_check_deps(struct symbol *sym) -{ - struct symbol *sym2; - struct property *prop; - - if (sym->flags & SYMBOL_CHECK_DONE) - return NULL; - if (sym->flags & SYMBOL_CHECK) { - printf("Warning! Found recursive dependency: %s", sym->name); - return sym; - } - - sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED); - sym2 = sym_check_expr_deps(sym->rev_dep.expr); - if (sym2) - goto out; - - for (prop = sym->prop; prop; prop = prop->next) { - if (prop->type == P_CHOICE || prop->type == P_SELECT) - continue; - sym2 = sym_check_expr_deps(prop->visible.expr); - if (sym2) - goto out; - if (prop->type != P_DEFAULT || sym_is_choice(sym)) - continue; - sym2 = sym_check_expr_deps(prop->expr); - if (sym2) - goto out; - } -out: - if (sym2) - printf(" %s", sym->name); - sym->flags &= ~SYMBOL_CHECK; - return sym2; -} - -struct property *prop_alloc(enum prop_type type, struct symbol *sym) -{ - struct property *prop; - struct property **propp; - - prop = malloc(sizeof(*prop)); - memset(prop, 0, sizeof(*prop)); - prop->type = type; - prop->sym = sym; - prop->file = current_file; - prop->lineno = zconf_lineno(); - - /* append property to the prop list of symbol */ - if (sym) { - for (propp = &sym->prop; *propp; propp = &(*propp)->next) - ; - *propp = prop; - } - - return prop; -} - -struct symbol *prop_get_symbol(struct property *prop) -{ - if (prop->expr && (prop->expr->type == E_SYMBOL || - prop->expr->type == E_CHOICE)) - return prop->expr->left.sym; - return NULL; -} - -const char *prop_get_type_name(enum prop_type type) -{ - switch (type) { - case P_PROMPT: - return "prompt"; - case P_COMMENT: - return "comment"; - case P_MENU: - return "menu"; - case P_DEFAULT: - return "default"; - case P_CHOICE: - return "choice"; - case P_SELECT: - return "select"; - case P_RANGE: - return "range"; - case P_UNKNOWN: - break; - } - return "unknown"; -} diff --git a/2.3/menu/util.c b/2.3/menu/util.c deleted file mode 100644 index a72f5ea..0000000 --- a/2.3/menu/util.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2002-2005 Roman Zippel - * Copyright (C) 2002-2005 Sam Ravnborg - * - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include "lkc.h" - -/* file already present in list? If not add it */ -struct file *file_lookup(const char *name) -{ - struct file *file; - - for (file = file_list; file; file = file->next) { - if (!strcmp(name, file->name)) - return file; - } - - file = malloc(sizeof(*file)); - memset(file, 0, sizeof(*file)); - file->name = strdup(name); - file->next = file_list; - file_list = file; - return file; -} - -/* write a dependency file as used by kbuild to track dependencies */ -int file_write_dep(const char *name) -{ - struct file *file; - FILE *out; - - if (!name) - name = ".config.cmd"; - out = fopen(".config.tmp", "w"); - if (!out) - return 1; - fprintf(out, "deps_config := \\\n"); - for (file = file_list; file; file = file->next) { - if (file->next) - fprintf(out, "\t%s \\\n", file->name); - else - fprintf(out, "\t%s\n", file->name); - } - fprintf(out, "\n.config include/config.h: $(deps_config)\n\n$(deps_config):\n"); - fclose(out); - rename(".config.tmp", name); - return 0; -} - - -/* Allocate initial growable sting */ -struct gstr str_new(void) -{ - struct gstr gs; - gs.s = malloc(sizeof(char) * 64); - gs.len = 16; - strcpy(gs.s, "\0"); - return gs; -} - -/* Allocate and assign growable string */ -struct gstr str_assign(const char *s) -{ - struct gstr gs; - gs.s = strdup(s); - gs.len = strlen(s) + 1; - return gs; -} - -/* Free storage for growable string */ -void str_free(struct gstr *gs) -{ - if (gs->s) - free(gs->s); - gs->s = NULL; - gs->len = 0; -} - -/* Append to growable string */ -void str_append(struct gstr *gs, const char *s) -{ - size_t l = strlen(gs->s) + strlen(s) + 1; - if (l > gs->len) { - gs->s = realloc(gs->s, l); - gs->len = l; - } - strcat(gs->s, s); -} - -/* Append printf formatted string to growable string */ -void str_printf(struct gstr *gs, const char *fmt, ...) -{ - va_list ap; - char s[10000]; /* big enough... */ - va_start(ap, fmt); - vsnprintf(s, sizeof(s), fmt, ap); - str_append(gs, s); - va_end(ap); -} - -/* Retreive value of growable string */ -const char *str_get(struct gstr *gs) -{ - return gs->s; -} - diff --git a/2.3/menu/zconf.l b/2.3/menu/zconf.l deleted file mode 100644 index 55517b2..0000000 --- a/2.3/menu/zconf.l +++ /dev/null @@ -1,366 +0,0 @@ -%option backup nostdinit noyywrap never-interactive full ecs -%option 8bit backup nodefault perf-report perf-report -%x COMMAND HELP STRING PARAM -%{ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -#define START_STRSIZE 16 - -char *text; -static char *text_ptr; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static struct buffer *zconf_endfile(void); - -void new_string(void) -{ - text = malloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_ptr = text; - text_size = 0; - *text_ptr = 0; -} - -void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - text = realloc(text, new_size); - text_asize = new_size; - text_ptr = text + text_size; - } - memcpy(text_ptr, str, size); - text_ptr += size; - text_size += size; - *text_ptr = 0; -} - -void alloc_string(const char *str, int size) -{ - text = malloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} -%} - -ws [ \n\t] -n [A-Za-z0-9_] - -%% - int str = 0; - int ts, i; - -[ \t]*#.*\n current_file->lineno++; -[ \t]*#.* - -[ \t]*\n current_file->lineno++; return T_EOL; - -[ \t]+ { - BEGIN(COMMAND); -} - -. { - unput(yytext[0]); - BEGIN(COMMAND); -} - - -{ - "mainmenu" BEGIN(PARAM); return T_MAINMENU; - "menu" BEGIN(PARAM); return T_MENU; - "endmenu" BEGIN(PARAM); return T_ENDMENU; - "source" BEGIN(PARAM); return T_SOURCE; - "choice" BEGIN(PARAM); return T_CHOICE; - "endchoice" BEGIN(PARAM); return T_ENDCHOICE; - "comment" BEGIN(PARAM); return T_COMMENT; - "config" BEGIN(PARAM); return T_CONFIG; - "menuconfig" BEGIN(PARAM); return T_MENUCONFIG; - "help" BEGIN(PARAM); return T_HELP; - "if" BEGIN(PARAM); return T_IF; - "endif" BEGIN(PARAM); return T_ENDIF; - "depends" BEGIN(PARAM); return T_DEPENDS; - "requires" BEGIN(PARAM); return T_REQUIRES; - "optional" BEGIN(PARAM); return T_OPTIONAL; - "default" BEGIN(PARAM); return T_DEFAULT; - "prompt" BEGIN(PARAM); return T_PROMPT; - "tristate" BEGIN(PARAM); return T_TRISTATE; - "def_tristate" BEGIN(PARAM); return T_DEF_TRISTATE; - "bool" BEGIN(PARAM); return T_BOOLEAN; - "boolean" BEGIN(PARAM); return T_BOOLEAN; - "def_bool" BEGIN(PARAM); return T_DEF_BOOLEAN; - "def_boolean" BEGIN(PARAM); return T_DEF_BOOLEAN; - "int" BEGIN(PARAM); return T_INT; - "hex" BEGIN(PARAM); return T_HEX; - "string" BEGIN(PARAM); return T_STRING; - "select" BEGIN(PARAM); return T_SELECT; - "enable" BEGIN(PARAM); return T_SELECT; - "range" BEGIN(PARAM); return T_RANGE; - {n}+ { - alloc_string(yytext, yyleng); - zconflval.string = text; - return T_WORD; - } - . - \n current_file->lineno++; BEGIN(INITIAL); -} - -{ - "&&" return T_AND; - "||" return T_OR; - "(" return T_OPEN_PAREN; - ")" return T_CLOSE_PAREN; - "!" return T_NOT; - "=" return T_EQUAL; - "!=" return T_UNEQUAL; - "if" return T_IF; - "on" return T_ON; - \"|\' { - str = yytext[0]; - new_string(); - BEGIN(STRING); - } - \n BEGIN(INITIAL); current_file->lineno++; return T_EOL; - --- /* ignore */ - ({n}|[-/.])+ { - alloc_string(yytext, yyleng); - zconflval.string = text; - return T_WORD; - } - #.* /* comment */ - \\\n current_file->lineno++; - . - <> { - BEGIN(INITIAL); - } -} - -{ - [^'"\\\n]+/\n { - append_string(yytext, yyleng); - zconflval.string = text; - return T_WORD_QUOTE; - } - [^'"\\\n]+ { - append_string(yytext, yyleng); - } - \\.?/\n { - append_string(yytext + 1, yyleng - 1); - zconflval.string = text; - return T_WORD_QUOTE; - } - \\.? { - append_string(yytext + 1, yyleng - 1); - } - \'|\" { - if (str == yytext[0]) { - BEGIN(PARAM); - zconflval.string = text; - return T_WORD_QUOTE; - } else - append_string(yytext, 1); - } - \n { - printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); - current_file->lineno++; - BEGIN(INITIAL); - return T_EOL; - } - <> { - BEGIN(INITIAL); - } -} - -{ - [ \t]+ { - ts = 0; - for (i = 0; i < yyleng; i++) { - if (yytext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - [ \t]*\n/[^ \t\n] { - current_file->lineno++; - zconf_endhelp(); - return T_HELPTEXT; - } - [ \t]*\n { - current_file->lineno++; - append_string("\n", 1); - } - [^ \t\n].* { - append_string(yytext, yyleng); - if (!first_ts) - first_ts = last_ts; - } - <> { - zconf_endhelp(); - return T_HELPTEXT; - } -} - -<> { - if (current_buf) { - zconf_endfile(); - return T_EOF; - } - fclose(yyin); - yyterminate(); -} - -%% -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - zconflval.string = text; - BEGIN(INITIAL); -} - - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - yyin = zconf_fopen(name); - if (!yyin) { - printf("can't find file %s\n", name); - exit(1); - } - - current_buf = malloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - current_file->lineno = 1; - current_file->flags = FILE_BUSY; -} - -void zconf_nextfile(const char *name) -{ - struct file *file = file_lookup(name); - struct buffer *buf = malloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - yyin = zconf_fopen(name); - if (!yyin) { - printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name); - exit(1); - } - yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - if (file->flags & FILE_BUSY) { - printf("recursive scan (%s)?\n", name); - exit(1); - } - if (file->flags & FILE_SCANNED) { - printf("file %s already scanned?\n", name); - exit(1); - } - file->flags |= FILE_BUSY; - file->lineno = 1; - file->parent = current_file; - current_file = file; -} - -static struct buffer *zconf_endfile(void) -{ - struct buffer *parent; - - current_file->flags |= FILE_SCANNED; - current_file->flags &= ~FILE_BUSY; - current_file = current_file->parent; - - parent = current_buf->parent; - if (parent) { - fclose(yyin); - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; - - return parent; -} - -int zconf_lineno(void) -{ - if (current_buf) - return current_file->lineno - 1; - else - return 0; -} - -char *zconf_curname(void) -{ - if (current_buf) - return current_file->name; - else - return ""; -} diff --git a/2.3/menu/zconf.tab.c_shipped b/2.3/menu/zconf.tab.c_shipped deleted file mode 100644 index f79289f..0000000 --- a/2.3/menu/zconf.tab.c_shipped +++ /dev/null @@ -1,2130 +0,0 @@ -/* A Bison parser, made by GNU Bison 1.875a. */ - -/* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* Written by Richard Stallman by simplifying the original so called - ``semantic'' parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Using locations. */ -#define YYLSP_NEEDED 0 - -/* If NAME_PREFIX is specified substitute the variables and functions - names. */ -#define yyparse zconfparse -#define yylex zconflex -#define yyerror zconferror -#define yylval zconflval -#define yychar zconfchar -#define yydebug zconfdebug -#define yynerrs zconfnerrs - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - T_MAINMENU = 258, - T_MENU = 259, - T_ENDMENU = 260, - T_SOURCE = 261, - T_CHOICE = 262, - T_ENDCHOICE = 263, - T_COMMENT = 264, - T_CONFIG = 265, - T_MENUCONFIG = 266, - T_HELP = 267, - T_HELPTEXT = 268, - T_IF = 269, - T_ENDIF = 270, - T_DEPENDS = 271, - T_REQUIRES = 272, - T_OPTIONAL = 273, - T_PROMPT = 274, - T_DEFAULT = 275, - T_TRISTATE = 276, - T_DEF_TRISTATE = 277, - T_BOOLEAN = 278, - T_DEF_BOOLEAN = 279, - T_STRING = 280, - T_INT = 281, - T_HEX = 282, - T_WORD = 283, - T_WORD_QUOTE = 284, - T_UNEQUAL = 285, - T_EOF = 286, - T_EOL = 287, - T_CLOSE_PAREN = 288, - T_OPEN_PAREN = 289, - T_ON = 290, - T_SELECT = 291, - T_RANGE = 292, - T_OR = 293, - T_AND = 294, - T_EQUAL = 295, - T_NOT = 296 - }; -#endif -#define T_MAINMENU 258 -#define T_MENU 259 -#define T_ENDMENU 260 -#define T_SOURCE 261 -#define T_CHOICE 262 -#define T_ENDCHOICE 263 -#define T_COMMENT 264 -#define T_CONFIG 265 -#define T_MENUCONFIG 266 -#define T_HELP 267 -#define T_HELPTEXT 268 -#define T_IF 269 -#define T_ENDIF 270 -#define T_DEPENDS 271 -#define T_REQUIRES 272 -#define T_OPTIONAL 273 -#define T_PROMPT 274 -#define T_DEFAULT 275 -#define T_TRISTATE 276 -#define T_DEF_TRISTATE 277 -#define T_BOOLEAN 278 -#define T_DEF_BOOLEAN 279 -#define T_STRING 280 -#define T_INT 281 -#define T_HEX 282 -#define T_WORD 283 -#define T_WORD_QUOTE 284 -#define T_UNEQUAL 285 -#define T_EOF 286 -#define T_EOL 287 -#define T_CLOSE_PAREN 288 -#define T_OPEN_PAREN 289 -#define T_ON 290 -#define T_SELECT 291 -#define T_RANGE 292 -#define T_OR 293 -#define T_AND 294 -#define T_EQUAL 295 -#define T_NOT 296 - - - - -/* Copy the first part of user declarations. */ - - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include -#include - -#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) - -#define PRINTD 0x0001 -#define DEBUG_PARSE 0x0002 - -int cdebug = PRINTD; - -extern int zconflex(void); -static void zconfprint(const char *err, ...); -static void zconferror(const char *err); -static bool zconf_endtoken(int token, int starttoken, int endtoken); - -struct symbol *symbol_hash[257]; - -static struct menu *current_menu, *current_entry; - -#define YYERROR_VERBOSE - - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) - -typedef union YYSTYPE { - int token; - char *string; - struct symbol *symbol; - struct expr *expr; - struct menu *menu; -} YYSTYPE; -/* Line 191 of yacc.c. */ - -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - - - -/* Copy the second part of user declarations. */ - - -#define LKC_DIRECT_LINK -#include "lkc.h" - - -/* Line 214 of yacc.c. */ - - -#if ! defined (yyoverflow) || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# if YYSTACK_USE_ALLOCA -# define YYSTACK_ALLOC alloca -# else -# ifndef YYSTACK_USE_ALLOCA -# if defined (alloca) || (defined (_ALLOCA_H) && defined (__GNUC__)) -# define YYSTACK_ALLOC alloca -# else -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# else -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -# define YYSTACK_ALLOC malloc -# define YYSTACK_FREE free -# endif -#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ - - -#if (! defined (yyoverflow) \ - && (! defined (__cplusplus) \ - || (YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - short yyss; - YYSTYPE yyvs; - }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - register YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (0) -# endif -# endif - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined (__STDC__) || defined (__cplusplus) - typedef signed char yysigned_char; -#else - typedef short yysigned_char; -#endif - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 2 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 201 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 42 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 41 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 104 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 182 - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 296 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const unsigned char yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41 -}; - -#if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const unsigned short yyprhs[] = -{ - 0, 0, 3, 4, 7, 9, 11, 13, 17, 19, - 21, 23, 26, 28, 30, 32, 34, 36, 38, 42, - 45, 49, 52, 53, 56, 59, 62, 65, 69, 74, - 78, 83, 87, 91, 95, 100, 105, 110, 116, 119, - 122, 124, 128, 131, 132, 135, 138, 141, 144, 149, - 153, 157, 160, 165, 166, 169, 173, 175, 179, 182, - 183, 186, 189, 192, 196, 199, 201, 205, 208, 209, - 212, 215, 218, 222, 226, 228, 232, 235, 238, 241, - 242, 245, 248, 253, 257, 261, 262, 265, 267, 269, - 272, 275, 278, 280, 282, 283, 286, 288, 292, 296, - 300, 303, 307, 311, 313 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yysigned_char yyrhs[] = -{ - 43, 0, -1, -1, 43, 44, -1, 45, -1, 55, - -1, 66, -1, 3, 77, 79, -1, 5, -1, 15, - -1, 8, -1, 1, 79, -1, 61, -1, 71, -1, - 47, -1, 49, -1, 69, -1, 79, -1, 10, 28, - 32, -1, 46, 50, -1, 11, 28, 32, -1, 48, - 50, -1, -1, 50, 51, -1, 50, 75, -1, 50, - 73, -1, 50, 32, -1, 21, 76, 32, -1, 22, - 81, 80, 32, -1, 23, 76, 32, -1, 24, 81, - 80, 32, -1, 26, 76, 32, -1, 27, 76, 32, - -1, 25, 76, 32, -1, 19, 77, 80, 32, -1, - 20, 81, 80, 32, -1, 36, 28, 80, 32, -1, - 37, 82, 82, 80, 32, -1, 7, 32, -1, 52, - 56, -1, 78, -1, 53, 58, 54, -1, 53, 58, - -1, -1, 56, 57, -1, 56, 75, -1, 56, 73, - -1, 56, 32, -1, 19, 77, 80, 32, -1, 21, - 76, 32, -1, 23, 76, 32, -1, 18, 32, -1, - 20, 28, 80, 32, -1, -1, 58, 45, -1, 14, - 81, 32, -1, 78, -1, 59, 62, 60, -1, 59, - 62, -1, -1, 62, 45, -1, 62, 66, -1, 62, - 55, -1, 4, 77, 32, -1, 63, 74, -1, 78, - -1, 64, 67, 65, -1, 64, 67, -1, -1, 67, - 45, -1, 67, 66, -1, 67, 55, -1, 67, 1, - 32, -1, 6, 77, 32, -1, 68, -1, 9, 77, - 32, -1, 70, 74, -1, 12, 32, -1, 72, 13, - -1, -1, 74, 75, -1, 74, 32, -1, 16, 35, - 81, 32, -1, 16, 81, 32, -1, 17, 81, 32, - -1, -1, 77, 80, -1, 28, -1, 29, -1, 5, - 79, -1, 8, 79, -1, 15, 79, -1, 32, -1, - 31, -1, -1, 14, 81, -1, 82, -1, 82, 40, - 82, -1, 82, 30, 82, -1, 34, 81, 33, -1, - 41, 81, -1, 81, 38, 81, -1, 81, 39, 81, - -1, 28, -1, 29, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const unsigned short yyrline[] = -{ - 0, 94, 94, 95, 98, 99, 100, 101, 102, 103, - 104, 105, 109, 110, 111, 112, 113, 114, 120, 128, - 134, 142, 152, 154, 155, 156, 157, 160, 166, 173, - 179, 186, 192, 198, 204, 210, 216, 222, 230, 239, - 245, 254, 255, 261, 263, 264, 265, 266, 269, 275, - 281, 287, 293, 299, 301, 306, 315, 324, 325, 331, - 333, 334, 335, 340, 347, 353, 362, 363, 369, 371, - 372, 373, 374, 377, 383, 390, 397, 404, 410, 417, - 418, 419, 422, 427, 432, 440, 442, 447, 448, 451, - 452, 453, 457, 457, 459, 460, 463, 464, 465, 466, - 467, 468, 469, 472, 473 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE -/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU", - "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", - "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", - "T_REQUIRES", "T_OPTIONAL", "T_PROMPT", "T_DEFAULT", "T_TRISTATE", - "T_DEF_TRISTATE", "T_BOOLEAN", "T_DEF_BOOLEAN", "T_STRING", "T_INT", - "T_HEX", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", "T_EOF", "T_EOL", - "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_ON", "T_SELECT", "T_RANGE", "T_OR", - "T_AND", "T_EQUAL", "T_NOT", "$accept", "input", "block", - "common_block", "config_entry_start", "config_stmt", - "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", - "config_option", "choice", "choice_entry", "choice_end", "choice_stmt", - "choice_option_list", "choice_option", "choice_block", "if", "if_end", - "if_stmt", "if_block", "menu", "menu_entry", "menu_end", "menu_stmt", - "menu_block", "source", "source_stmt", "comment", "comment_stmt", - "help_start", "help", "depends_list", "depends", "prompt_stmt_opt", - "prompt", "end", "nl_or_eof", "if_expr", "expr", "symbol", 0 -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const unsigned short yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296 -}; -# endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const unsigned char yyr1[] = -{ - 0, 42, 43, 43, 44, 44, 44, 44, 44, 44, - 44, 44, 45, 45, 45, 45, 45, 45, 46, 47, - 48, 49, 50, 50, 50, 50, 50, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 52, 53, - 54, 55, 55, 56, 56, 56, 56, 56, 57, 57, - 57, 57, 57, 58, 58, 59, 60, 61, 61, 62, - 62, 62, 62, 63, 64, 65, 66, 66, 67, 67, - 67, 67, 67, 68, 69, 70, 71, 72, 73, 74, - 74, 74, 75, 75, 75, 76, 76, 77, 77, 78, - 78, 78, 79, 79, 80, 80, 81, 81, 81, 81, - 81, 81, 81, 82, 82 -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const unsigned char yyr2[] = -{ - 0, 2, 0, 2, 1, 1, 1, 3, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 3, 2, - 3, 2, 0, 2, 2, 2, 2, 3, 4, 3, - 4, 3, 3, 3, 4, 4, 4, 5, 2, 2, - 1, 3, 2, 0, 2, 2, 2, 2, 4, 3, - 3, 2, 4, 0, 2, 3, 1, 3, 2, 0, - 2, 2, 2, 3, 2, 1, 3, 2, 0, 2, - 2, 2, 3, 3, 1, 3, 2, 2, 2, 0, - 2, 2, 4, 3, 3, 0, 2, 1, 1, 2, - 2, 2, 1, 1, 0, 2, 1, 3, 3, 3, - 2, 3, 3, 1, 1 -}; - -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const unsigned char yydefact[] = -{ - 2, 0, 1, 0, 0, 0, 8, 0, 0, 10, - 0, 0, 0, 0, 9, 93, 92, 3, 4, 22, - 14, 22, 15, 43, 53, 5, 59, 12, 79, 68, - 6, 74, 16, 79, 13, 17, 11, 87, 88, 0, - 0, 0, 38, 0, 0, 0, 103, 104, 0, 0, - 0, 96, 19, 21, 39, 42, 58, 64, 0, 76, - 7, 63, 73, 75, 18, 20, 0, 100, 55, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, - 85, 0, 85, 85, 85, 26, 0, 0, 23, 0, - 25, 24, 0, 0, 0, 85, 85, 47, 44, 46, - 45, 0, 0, 0, 54, 41, 40, 60, 62, 57, - 61, 56, 81, 80, 0, 69, 71, 66, 70, 65, - 99, 101, 102, 98, 97, 77, 0, 0, 0, 94, - 94, 0, 94, 94, 0, 94, 0, 0, 0, 94, - 0, 78, 51, 94, 94, 0, 0, 89, 90, 91, - 72, 0, 83, 84, 0, 0, 0, 27, 86, 0, - 29, 0, 33, 31, 32, 0, 94, 0, 0, 49, - 50, 82, 95, 34, 35, 28, 30, 36, 0, 48, - 52, 37 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const short yydefgoto[] = -{ - -1, 1, 17, 18, 19, 20, 21, 22, 52, 88, - 23, 24, 105, 25, 54, 98, 55, 26, 109, 27, - 56, 28, 29, 117, 30, 58, 31, 32, 33, 34, - 89, 90, 57, 91, 131, 132, 106, 35, 155, 50, - 51 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -99 -static const short yypact[] = -{ - -99, 48, -99, 38, 46, 46, -99, 46, -29, -99, - 46, -17, -3, -11, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, -99, -99, -99, -99, -99, 38, - 12, 15, -99, 18, 51, 62, -99, -99, -11, -11, - 4, -24, 138, 138, 160, 121, 110, -4, 81, -4, - -99, -99, -99, -99, -99, -99, -19, -99, -99, -11, - -11, 70, 70, 73, 32, -11, 46, -11, 46, -11, - 46, -11, 46, 46, 46, -99, 36, 70, -99, 95, - -99, -99, 96, 46, 106, 46, 46, -99, -99, -99, - -99, 38, 38, 38, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, 112, -99, -99, -99, -99, -99, - -99, 117, -99, -99, -99, -99, -11, 33, 65, 131, - 1, 119, 131, 1, 136, 1, 153, 154, 155, 131, - 70, -99, -99, 131, 131, 156, 157, -99, -99, -99, - -99, 101, -99, -99, -11, 158, 159, -99, -99, 161, - -99, 162, -99, -99, -99, 163, 131, 164, 165, -99, - -99, -99, 99, -99, -99, -99, -99, -99, 166, -99, - -99, -99 -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const short yypgoto[] = -{ - -99, -99, -99, 111, -99, -99, -99, -99, 178, -99, - -99, -99, -99, 91, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, 115, -99, -99, -99, -99, -99, - -99, 146, 168, 89, 27, 0, 126, -1, -98, -48, - -63 -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -68 -static const short yytable[] = -{ - 66, 67, 36, 42, 39, 40, 71, 41, 123, 124, - 43, 44, 74, 75, 120, 154, 72, 46, 47, 69, - 70, 121, 122, 48, 140, 45, 127, 128, 112, 130, - 49, 133, 156, 135, 158, 159, 68, 161, 60, 69, - 70, 165, 69, 70, 61, 167, 168, 62, 2, 3, - 63, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 46, 47, 13, 14, 139, 152, 48, 126, 178, 15, - 16, 69, 70, 49, 37, 38, 129, 166, 151, 15, - 16, -67, 114, 64, -67, 5, 101, 7, 8, 102, - 10, 11, 12, 143, 65, 13, 103, 153, 46, 47, - 147, 148, 149, 69, 70, 125, 172, 134, 141, 136, - 137, 138, 15, 16, 5, 101, 7, 8, 102, 10, - 11, 12, 145, 146, 13, 103, 101, 7, 142, 102, - 10, 11, 12, 171, 144, 13, 103, 69, 70, 69, - 70, 15, 16, 100, 150, 154, 113, 108, 113, 116, - 73, 157, 15, 16, 74, 75, 70, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 104, 107, 160, 115, - 85, 110, 73, 118, 86, 87, 74, 75, 92, 93, - 94, 95, 111, 96, 119, 162, 163, 164, 169, 170, - 173, 174, 97, 175, 176, 177, 179, 180, 181, 53, - 99, 59 -}; - -static const unsigned char yycheck[] = -{ - 48, 49, 3, 32, 4, 5, 30, 7, 71, 72, - 10, 28, 16, 17, 33, 14, 40, 28, 29, 38, - 39, 69, 70, 34, 87, 28, 74, 75, 32, 77, - 41, 79, 130, 81, 132, 133, 32, 135, 39, 38, - 39, 139, 38, 39, 32, 143, 144, 32, 0, 1, - 32, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 28, 29, 14, 15, 28, 32, 34, 35, 166, 31, - 32, 38, 39, 41, 28, 29, 76, 140, 126, 31, - 32, 0, 1, 32, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 93, 32, 14, 15, 32, 28, 29, - 101, 102, 103, 38, 39, 32, 154, 80, 13, 82, - 83, 84, 31, 32, 4, 5, 6, 7, 8, 9, - 10, 11, 95, 96, 14, 15, 5, 6, 32, 8, - 9, 10, 11, 32, 28, 14, 15, 38, 39, 38, - 39, 31, 32, 54, 32, 14, 57, 56, 59, 58, - 12, 32, 31, 32, 16, 17, 39, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 55, 56, 32, 58, - 32, 56, 12, 58, 36, 37, 16, 17, 18, 19, - 20, 21, 56, 23, 58, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 21, - 54, 33 -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const unsigned char yystos[] = -{ - 0, 43, 0, 1, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 14, 15, 31, 32, 44, 45, 46, - 47, 48, 49, 52, 53, 55, 59, 61, 63, 64, - 66, 68, 69, 70, 71, 79, 79, 28, 29, 77, - 77, 77, 32, 77, 28, 28, 28, 29, 34, 41, - 81, 82, 50, 50, 56, 58, 62, 74, 67, 74, - 79, 32, 32, 32, 32, 32, 81, 81, 32, 38, - 39, 30, 40, 12, 16, 17, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 32, 36, 37, 51, 72, - 73, 75, 18, 19, 20, 21, 23, 32, 57, 73, - 75, 5, 8, 15, 45, 54, 78, 45, 55, 60, - 66, 78, 32, 75, 1, 45, 55, 65, 66, 78, - 33, 81, 81, 82, 82, 32, 35, 81, 81, 77, - 81, 76, 77, 81, 76, 81, 76, 76, 76, 28, - 82, 13, 32, 77, 28, 76, 76, 79, 79, 79, - 32, 81, 32, 32, 14, 80, 80, 32, 80, 80, - 32, 80, 32, 32, 32, 80, 82, 80, 80, 32, - 32, 32, 81, 32, 32, 32, 32, 32, 80, 32, - 32, 32 -}; - -#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) -# define YYSIZE_T __SIZE_TYPE__ -#endif -#if ! defined (YYSIZE_T) && defined (size_t) -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -#endif -#if ! defined (YYSIZE_T) -# define YYSIZE_T unsigned int -#endif - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrlab1 - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ - -#define YYFAIL goto yyerrlab - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror ("syntax error: cannot back up");\ - YYERROR; \ - } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -/* YYLLOC_DEFAULT -- Compute the default location (before the actions - are run). */ - -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - Current.first_line = Rhs[1].first_line; \ - Current.first_column = Rhs[1].first_column; \ - Current.last_line = Rhs[N].last_line; \ - Current.last_column = Rhs[N].last_column; -#endif - -/* YYLEX -- calling `yylex' with the right arguments. */ - -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -# define YYDSYMPRINT(Args) \ -do { \ - if (yydebug) \ - yysymprint Args; \ -} while (0) - -# define YYDSYMPRINTF(Title, Token, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yysymprint (stderr, \ - Token, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (cinluded). | -`------------------------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_stack_print (short *bottom, short *top) -#else -static void -yy_stack_print (bottom, top) - short *bottom; - short *top; -#endif -{ - YYFPRINTF (stderr, "Stack now"); - for (/* Nothing. */; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_reduce_print (int yyrule) -#else -static void -yy_reduce_print (yyrule) - int yyrule; -#endif -{ - int yyi; - unsigned int yylineno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", - yyrule - 1, yylineno); - /* Print the symbols being reduced, and their result. */ - for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) - YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); - YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YYDSYMPRINT(Args) -# define YYDSYMPRINTF(Title, Token, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#if YYMAXDEPTH == 0 -# undef YYMAXDEPTH -#endif - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined (__GLIBC__) && defined (_STRING_H) -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -# if defined (__STDC__) || defined (__cplusplus) -yystrlen (const char *yystr) -# else -yystrlen (yystr) - const char *yystr; -# endif -{ - register const char *yys = yystr; - - while (*yys++ != '\0') - continue; - - return yys - yystr - 1; -} -# endif -# endif - -# ifndef yystpcpy -# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -# if defined (__STDC__) || defined (__cplusplus) -yystpcpy (char *yydest, const char *yysrc) -# else -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -# endif -{ - register char *yyd = yydest; - register const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -#endif /* !YYERROR_VERBOSE */ - - - -#if YYDEBUG -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) -#else -static void -yysymprint (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - if (yytype < YYNTOKENS) - { - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); -# ifdef YYPRINT - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# endif - } - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - - switch (yytype) - { - default: - break; - } - YYFPRINTF (yyoutput, ")"); -} - -#endif /* ! YYDEBUG */ -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yydestruct (int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yytype, yyvaluep) - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - switch (yytype) - { - - default: - break; - } -} - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM); -# else -int yyparse (); -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; - -/* Number of syntax errors so far. */ -int yynerrs; - - - -/*----------. -| yyparse. | -`----------*/ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM) -# else -int yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int -yyparse (void) -#else -int -yyparse () - -#endif -#endif -{ - - register int yystate; - register int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - short yyssa[YYINITDEPTH]; - short *yyss = yyssa; - register short *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - register YYSTYPE *yyvsp; - - - -#define YYPOPSTACK (yyvsp--, yyssp--) - - YYSIZE_T yystacksize = YYINITDEPTH; - - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - - - /* When reducing, the number of symbols on the RHS of the reduced - rule. */ - int yylen; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; - - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. - */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; - - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow ("parser stack overflow", - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyoverflowlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyoverflowlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - short *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyoverflowlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken])); - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; - - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - yystate = yyn; - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 8: - - { zconfprint("unexpected 'endmenu' statement"); ;} - break; - - case 9: - - { zconfprint("unexpected 'endif' statement"); ;} - break; - - case 10: - - { zconfprint("unexpected 'endchoice' statement"); ;} - break; - - case 11: - - { zconfprint("syntax error"); yyerrok; ;} - break; - - case 18: - - { - struct symbol *sym = sym_lookup(yyvsp[-1].string, 0); - sym->flags |= SYMBOL_OPTIONAL; - menu_add_entry(sym); - printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string); -;} - break; - - case 19: - - { - menu_end_entry(); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 20: - - { - struct symbol *sym = sym_lookup(yyvsp[-1].string, 0); - sym->flags |= SYMBOL_OPTIONAL; - menu_add_entry(sym); - printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string); -;} - break; - - case 21: - - { - if (current_entry->prompt) - current_entry->prompt->type = P_MENU; - else - zconfprint("warning: menuconfig statement without prompt"); - menu_end_entry(); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 27: - - { - menu_set_type(S_TRISTATE); - printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 28: - - { - menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr); - menu_set_type(S_TRISTATE); - printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 29: - - { - menu_set_type(S_BOOLEAN); - printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 30: - - { - menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr); - menu_set_type(S_BOOLEAN); - printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 31: - - { - menu_set_type(S_INT); - printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 32: - - { - menu_set_type(S_HEX); - printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 33: - - { - menu_set_type(S_STRING); - printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 34: - - { - menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 35: - - { - menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 36: - - { - menu_add_symbol(P_SELECT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 37: - - { - menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,yyvsp[-3].symbol, yyvsp[-2].symbol), yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 38: - - { - struct symbol *sym = sym_lookup(NULL, 0); - sym->flags |= SYMBOL_CHOICE; - menu_add_entry(sym); - menu_add_expr(P_CHOICE, NULL, NULL); - printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 39: - - { - menu_end_entry(); - menu_add_menu(); -;} - break; - - case 40: - - { - if (zconf_endtoken(yyvsp[0].token, T_CHOICE, T_ENDCHOICE)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); - } -;} - break; - - case 42: - - { - printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno); - zconfnerrs++; -;} - break; - - case 48: - - { - menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 49: - - { - menu_set_type(S_TRISTATE); - printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 50: - - { - menu_set_type(S_BOOLEAN); - printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 51: - - { - current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 52: - - { - menu_add_symbol(P_DEFAULT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 55: - - { - printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); - menu_add_entry(NULL); - menu_add_dep(yyvsp[-1].expr); - menu_end_entry(); - menu_add_menu(); -;} - break; - - case 56: - - { - if (zconf_endtoken(yyvsp[0].token, T_IF, T_ENDIF)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); - } -;} - break; - - case 58: - - { - printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno); - zconfnerrs++; -;} - break; - - case 63: - - { - menu_add_entry(NULL); - menu_add_prop(P_MENU, yyvsp[-1].string, NULL, NULL); - printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 64: - - { - menu_end_entry(); - menu_add_menu(); -;} - break; - - case 65: - - { - if (zconf_endtoken(yyvsp[0].token, T_MENU, T_ENDMENU)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); - } -;} - break; - - case 67: - - { - printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno); - zconfnerrs++; -;} - break; - - case 72: - - { zconfprint("invalid menu option"); yyerrok; ;} - break; - - case 73: - - { - yyval.string = yyvsp[-1].string; - printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string); -;} - break; - - case 74: - - { - zconf_nextfile(yyvsp[0].string); -;} - break; - - case 75: - - { - menu_add_entry(NULL); - menu_add_prop(P_COMMENT, yyvsp[-1].string, NULL, NULL); - printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 76: - - { - menu_end_entry(); -;} - break; - - case 77: - - { - printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); - zconf_starthelp(); -;} - break; - - case 78: - - { - current_entry->sym->help = yyvsp[0].string; -;} - break; - - case 82: - - { - menu_add_dep(yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 83: - - { - menu_add_dep(yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 84: - - { - menu_add_dep(yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 86: - - { - menu_add_prop(P_PROMPT, yyvsp[-1].string, NULL, yyvsp[0].expr); -;} - break; - - case 89: - - { yyval.token = T_ENDMENU; ;} - break; - - case 90: - - { yyval.token = T_ENDCHOICE; ;} - break; - - case 91: - - { yyval.token = T_ENDIF; ;} - break; - - case 94: - - { yyval.expr = NULL; ;} - break; - - case 95: - - { yyval.expr = yyvsp[0].expr; ;} - break; - - case 96: - - { yyval.expr = expr_alloc_symbol(yyvsp[0].symbol); ;} - break; - - case 97: - - { yyval.expr = expr_alloc_comp(E_EQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;} - break; - - case 98: - - { yyval.expr = expr_alloc_comp(E_UNEQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;} - break; - - case 99: - - { yyval.expr = yyvsp[-1].expr; ;} - break; - - case 100: - - { yyval.expr = expr_alloc_one(E_NOT, yyvsp[0].expr); ;} - break; - - case 101: - - { yyval.expr = expr_alloc_two(E_OR, yyvsp[-2].expr, yyvsp[0].expr); ;} - break; - - case 102: - - { yyval.expr = expr_alloc_two(E_AND, yyvsp[-2].expr, yyvsp[0].expr); ;} - break; - - case 103: - - { yyval.symbol = sym_lookup(yyvsp[0].string, 0); free(yyvsp[0].string); ;} - break; - - case 104: - - { yyval.symbol = sym_lookup(yyvsp[0].string, 1); free(yyvsp[0].string); ;} - break; - - - } - -/* Line 999 of yacc.c. */ - - - yyvsp -= yylen; - yyssp -= yylen; - - - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (YYPACT_NINF < yyn && yyn < YYLAST) - { - YYSIZE_T yysize = 0; - int yytype = YYTRANSLATE (yychar); - char *yymsg; - int yyx, yycount; - - yycount = 0; - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - for (yyx = yyn < 0 ? -yyn : 0; - yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - yysize += yystrlen (yytname[yyx]) + 15, yycount++; - yysize += yystrlen ("syntax error, unexpected ") + 1; - yysize += yystrlen (yytname[yytype]); - yymsg = (char *) YYSTACK_ALLOC (yysize); - if (yymsg != 0) - { - char *yyp = yystpcpy (yymsg, "syntax error, unexpected "); - yyp = yystpcpy (yyp, yytname[yytype]); - - if (yycount < 5) - { - yycount = 0; - for (yyx = yyn < 0 ? -yyn : 0; - yyx < (int) (sizeof (yytname) / sizeof (char *)); - yyx++) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - const char *yyq = ! yycount ? ", expecting " : " or "; - yyp = yystpcpy (yyp, yyq); - yyp = yystpcpy (yyp, yytname[yyx]); - yycount++; - } - } - yyerror (yymsg); - YYSTACK_FREE (yymsg); - } - else - yyerror ("syntax error; also virtual memory exhausted"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror ("syntax error"); - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - /* Return failure if at end of input. */ - if (yychar == YYEOF) - { - /* Pop the error token. */ - YYPOPSTACK; - /* Pop the rest of the stack. */ - while (yyss < yyssp) - { - YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); - yydestruct (yystos[*yyssp], yyvsp); - YYPOPSTACK; - } - YYABORT; - } - - YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc); - yydestruct (yytoken, &yylval); - yychar = YYEMPTY; - - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*----------------------------------------------------. -| yyerrlab1 -- error raised explicitly by an action. | -`----------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); - yydestruct (yystos[yystate], yyvsp); - yyvsp--; - yystate = *--yyssp; - - YY_STACK_PRINT (yyss, yyssp); - } - - if (yyn == YYFINAL) - YYACCEPT; - - YYDPRINTF ((stderr, "Shifting error token, ")); - - *++yyvsp = yylval; - - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#ifndef yyoverflow -/*----------------------------------------------. -| yyoverflowlab -- parser overflow comes here. | -`----------------------------------------------*/ -yyoverflowlab: - yyerror ("parser stack overflow"); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif - return yyresult; -} - - - - - -void conf_parse(const char *name) -{ - struct symbol *sym; - int i; - - zconf_initscan(name); - - sym_init(); - menu_init(); - modules_sym = sym_lookup("MODULES", 0); - rootmenu.prompt = menu_add_prop(P_MENU, "JHALFS Configuration", NULL, NULL); - - //zconfdebug = 1; - zconfparse(); - if (zconfnerrs) - exit(1); - menu_finalize(&rootmenu); - for_all_symbols(i, sym) { - if (!(sym->flags & SYMBOL_CHECKED) && sym_check_deps(sym)) - printf("\n"); - else - sym->flags |= SYMBOL_CHECK_DONE; - } - - sym_change_count = 1; -} - -const char *zconf_tokenname(int token) -{ - switch (token) { - case T_MENU: return "menu"; - case T_ENDMENU: return "endmenu"; - case T_CHOICE: return "choice"; - case T_ENDCHOICE: return "endchoice"; - case T_IF: return "if"; - case T_ENDIF: return "endif"; - } - return ""; -} - -static bool zconf_endtoken(int token, int starttoken, int endtoken) -{ - if (token != endtoken) { - zconfprint("unexpected '%s' within %s block", zconf_tokenname(token), zconf_tokenname(starttoken)); - zconfnerrs++; - return false; - } - if (current_menu->file != current_file) { - zconfprint("'%s' in different file than '%s'", zconf_tokenname(token), zconf_tokenname(starttoken)); - zconfprint("location of the '%s'", zconf_tokenname(starttoken)); - zconfnerrs++; - return false; - } - return true; -} - -static void zconfprint(const char *err, ...) -{ - va_list ap; - - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno() + 1); - va_start(ap, err); - vfprintf(stderr, err, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -static void zconferror(const char *err) -{ - fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); -} - -void print_quoted_string(FILE *out, const char *str) -{ - const char *p; - int len; - - putc('"', out); - while ((p = strchr(str, '"'))) { - len = p - str; - if (len) - fprintf(out, "%.*s", len, str); - fputs("\\\"", out); - str = p + 1; - } - fputs(str, out); - putc('"', out); -} - -void print_symbol(FILE *out, struct menu *menu) -{ - struct symbol *sym = menu->sym; - struct property *prop; - - if (sym_is_choice(sym)) - fprintf(out, "choice\n"); - else - fprintf(out, "config %s\n", sym->name); - switch (sym->type) { - case S_BOOLEAN: - fputs(" boolean\n", out); - break; - case S_TRISTATE: - fputs(" tristate\n", out); - break; - case S_STRING: - fputs(" string\n", out); - break; - case S_INT: - fputs(" integer\n", out); - break; - case S_HEX: - fputs(" hex\n", out); - break; - default: - fputs(" ???\n", out); - break; - } - for (prop = sym->prop; prop; prop = prop->next) { - if (prop->menu != menu) - continue; - switch (prop->type) { - case P_PROMPT: - fputs(" prompt ", out); - print_quoted_string(out, prop->text); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_DEFAULT: - fputs( " default ", out); - expr_fprint(prop->expr, out); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_CHOICE: - fputs(" #choice value\n", out); - break; - default: - fprintf(out, " unknown prop %d!\n", prop->type); - break; - } - } - if (sym->help) { - int len = strlen(sym->help); - while (sym->help[--len] == '\n') - sym->help[len] = 0; - fprintf(out, " help\n%s\n", sym->help); - } - fputc('\n', out); -} - -void zconfdump(FILE *out) -{ - struct property *prop; - struct symbol *sym; - struct menu *menu; - - menu = rootmenu.list; - while (menu) { - if ((sym = menu->sym)) - print_symbol(out, menu); - else if ((prop = menu->prompt)) { - switch (prop->type) { - case P_COMMENT: - fputs("\ncomment ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - case P_MENU: - fputs("\nmenu ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - default: - ; - } - if (!expr_is_yes(prop->visible.expr)) { - fputs(" depends ", out); - expr_fprint(prop->visible.expr, out); - fputc('\n', out); - } - fputs("\n", out); - } - - if (menu->list) - menu = menu->list; - else if (menu->next) - menu = menu->next; - else while ((menu = menu->parent)) { - if (menu->prompt && menu->prompt->type == P_MENU) - fputs("\nendmenu\n", out); - if (menu->next) { - menu = menu->next; - break; - } - } - } -} - -#include "lex.zconf.c" -#include "util.c" -#include "confdata.c" -#include "expr.c" -#include "symbol.c" -#include "menu.c" - - diff --git a/2.3/menu/zconf.tab.h_shipped b/2.3/menu/zconf.tab.h_shipped deleted file mode 100644 index 3b191ef..0000000 --- a/2.3/menu/zconf.tab.h_shipped +++ /dev/null @@ -1,125 +0,0 @@ -/* A Bison parser, made from zconf.y, by GNU bison 1.75. */ - -/* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -#ifndef BISON_ZCONF_TAB_H -# define BISON_ZCONF_TAB_H - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - T_MAINMENU = 258, - T_MENU = 259, - T_ENDMENU = 260, - T_SOURCE = 261, - T_CHOICE = 262, - T_ENDCHOICE = 263, - T_COMMENT = 264, - T_CONFIG = 265, - T_HELP = 266, - T_HELPTEXT = 267, - T_IF = 268, - T_ENDIF = 269, - T_DEPENDS = 270, - T_REQUIRES = 271, - T_OPTIONAL = 272, - T_PROMPT = 273, - T_DEFAULT = 274, - T_TRISTATE = 275, - T_BOOLEAN = 276, - T_INT = 277, - T_HEX = 278, - T_WORD = 279, - T_STRING = 280, - T_UNEQUAL = 281, - T_EOF = 282, - T_EOL = 283, - T_CLOSE_PAREN = 284, - T_OPEN_PAREN = 285, - T_ON = 286, - T_OR = 287, - T_AND = 288, - T_EQUAL = 289, - T_NOT = 290 - }; -#endif -#define T_MAINMENU 258 -#define T_MENU 259 -#define T_ENDMENU 260 -#define T_SOURCE 261 -#define T_CHOICE 262 -#define T_ENDCHOICE 263 -#define T_COMMENT 264 -#define T_CONFIG 265 -#define T_HELP 266 -#define T_HELPTEXT 267 -#define T_IF 268 -#define T_ENDIF 269 -#define T_DEPENDS 270 -#define T_REQUIRES 271 -#define T_OPTIONAL 272 -#define T_PROMPT 273 -#define T_DEFAULT 274 -#define T_TRISTATE 275 -#define T_BOOLEAN 276 -#define T_INT 277 -#define T_HEX 278 -#define T_WORD 279 -#define T_STRING 280 -#define T_UNEQUAL 281 -#define T_EOF 282 -#define T_EOL 283 -#define T_CLOSE_PAREN 284 -#define T_OPEN_PAREN 285 -#define T_ON 286 -#define T_OR 287 -#define T_AND 288 -#define T_EQUAL 289 -#define T_NOT 290 - - - - -#ifndef YYSTYPE -#line 33 "zconf.y" -typedef union { - int token; - char *string; - struct symbol *symbol; - struct expr *expr; - struct menu *menu; -} yystype; -/* Line 1281 of /usr/share/bison/yacc.c. */ -#line 118 "zconf.tab.h" -# define YYSTYPE yystype -#endif - -extern YYSTYPE zconflval; - - -#endif /* not BISON_ZCONF_TAB_H */ - diff --git a/2.3/menu/zconf.y b/2.3/menu/zconf.y deleted file mode 100644 index ee4ce96..0000000 --- a/2.3/menu/zconf.y +++ /dev/null @@ -1,690 +0,0 @@ -%{ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include -#include - -#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) - -#define PRINTD 0x0001 -#define DEBUG_PARSE 0x0002 - -int cdebug = PRINTD; - -extern int zconflex(void); -static void zconfprint(const char *err, ...); -static void zconferror(const char *err); -static bool zconf_endtoken(int token, int starttoken, int endtoken); - -struct symbol *symbol_hash[257]; - -static struct menu *current_menu, *current_entry; - -#define YYERROR_VERBOSE -%} -%expect 40 - -%union -{ - int token; - char *string; - struct symbol *symbol; - struct expr *expr; - struct menu *menu; -} - -%token T_MAINMENU -%token T_MENU -%token T_ENDMENU -%token T_SOURCE -%token T_CHOICE -%token T_ENDCHOICE -%token T_COMMENT -%token T_CONFIG -%token T_MENUCONFIG -%token T_HELP -%token T_HELPTEXT -%token T_IF -%token T_ENDIF -%token T_DEPENDS -%token T_REQUIRES -%token T_OPTIONAL -%token T_PROMPT -%token T_DEFAULT -%token T_TRISTATE -%token T_DEF_TRISTATE -%token T_BOOLEAN -%token T_DEF_BOOLEAN -%token T_STRING -%token T_INT -%token T_HEX -%token T_WORD -%token T_WORD_QUOTE -%token T_UNEQUAL -%token T_EOF -%token T_EOL -%token T_CLOSE_PAREN -%token T_OPEN_PAREN -%token T_ON -%token T_SELECT -%token T_RANGE - -%left T_OR -%left T_AND -%left T_EQUAL T_UNEQUAL -%nonassoc T_NOT - -%type prompt -%type source -%type symbol -%type expr -%type if_expr -%type end - -%{ -#define LKC_DIRECT_LINK -#include "lkc.h" -%} -%% -input: /* empty */ - | input block -; - -block: common_block - | choice_stmt - | menu_stmt - | T_MAINMENU prompt nl_or_eof - | T_ENDMENU { zconfprint("unexpected 'endmenu' statement"); } - | T_ENDIF { zconfprint("unexpected 'endif' statement"); } - | T_ENDCHOICE { zconfprint("unexpected 'endchoice' statement"); } - | error nl_or_eof { zconfprint("syntax error"); yyerrok; } -; - -common_block: - if_stmt - | comment_stmt - | config_stmt - | menuconfig_stmt - | source_stmt - | nl_or_eof -; - - -/* config/menuconfig entry */ - -config_entry_start: T_CONFIG T_WORD T_EOL -{ - struct symbol *sym = sym_lookup($2, 0); - sym->flags |= SYMBOL_OPTIONAL; - menu_add_entry(sym); - printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2); -}; - -config_stmt: config_entry_start config_option_list -{ - menu_end_entry(); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -}; - -menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL -{ - struct symbol *sym = sym_lookup($2, 0); - sym->flags |= SYMBOL_OPTIONAL; - menu_add_entry(sym); - printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2); -}; - -menuconfig_stmt: menuconfig_entry_start config_option_list -{ - if (current_entry->prompt) - current_entry->prompt->type = P_MENU; - else - zconfprint("warning: menuconfig statement without prompt"); - menu_end_entry(); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -}; - -config_option_list: - /* empty */ - | config_option_list config_option - | config_option_list depends - | config_option_list help - | config_option_list T_EOL -; - -config_option: T_TRISTATE prompt_stmt_opt T_EOL -{ - menu_set_type(S_TRISTATE); - printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_DEF_TRISTATE expr if_expr T_EOL -{ - menu_add_expr(P_DEFAULT, $2, $3); - menu_set_type(S_TRISTATE); - printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_BOOLEAN prompt_stmt_opt T_EOL -{ - menu_set_type(S_BOOLEAN); - printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_DEF_BOOLEAN expr if_expr T_EOL -{ - menu_add_expr(P_DEFAULT, $2, $3); - menu_set_type(S_BOOLEAN); - printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_INT prompt_stmt_opt T_EOL -{ - menu_set_type(S_INT); - printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_HEX prompt_stmt_opt T_EOL -{ - menu_set_type(S_HEX); - printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_STRING prompt_stmt_opt T_EOL -{ - menu_set_type(S_STRING); - printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_PROMPT prompt if_expr T_EOL -{ - menu_add_prompt(P_PROMPT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_DEFAULT expr if_expr T_EOL -{ - menu_add_expr(P_DEFAULT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_SELECT T_WORD if_expr T_EOL -{ - menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3); - printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_RANGE symbol symbol if_expr T_EOL -{ - menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4); - printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); -}; - -/* choice entry */ - -choice: T_CHOICE T_EOL -{ - struct symbol *sym = sym_lookup(NULL, 0); - sym->flags |= SYMBOL_CHOICE; - menu_add_entry(sym); - menu_add_expr(P_CHOICE, NULL, NULL); - printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); -}; - -choice_entry: choice choice_option_list -{ - menu_end_entry(); - menu_add_menu(); -}; - -choice_end: end -{ - if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); - } -}; - -choice_stmt: - choice_entry choice_block choice_end - | choice_entry choice_block -{ - printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno); - zconfnerrs++; -}; - -choice_option_list: - /* empty */ - | choice_option_list choice_option - | choice_option_list depends - | choice_option_list help - | choice_option_list T_EOL -; - -choice_option: T_PROMPT prompt if_expr T_EOL -{ - menu_add_prompt(P_PROMPT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -}; - -choice_option: T_TRISTATE prompt_stmt_opt T_EOL -{ - menu_set_type(S_TRISTATE); - printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno()); -}; - -choice_option: T_BOOLEAN prompt_stmt_opt T_EOL -{ - menu_set_type(S_BOOLEAN); - printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno()); -}; - -choice_option: T_OPTIONAL T_EOL -{ - current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); -}; - -choice_option: T_DEFAULT T_WORD if_expr T_EOL -{ - menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3); - printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno()); -}; - -choice_block: - /* empty */ - | choice_block common_block -; - -/* if entry */ - -if: T_IF expr T_EOL -{ - printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); - menu_add_entry(NULL); - menu_add_dep($2); - menu_end_entry(); - menu_add_menu(); -}; - -if_end: end -{ - if (zconf_endtoken($1, T_IF, T_ENDIF)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); - } -}; - -if_stmt: - if if_block if_end - | if if_block -{ - printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno); - zconfnerrs++; -}; - -if_block: - /* empty */ - | if_block common_block - | if_block menu_stmt - | if_block choice_stmt -; - -/* menu entry */ - -menu: T_MENU prompt T_EOL -{ - menu_add_entry(NULL); - menu_add_prop(P_MENU, $2, NULL, NULL); - printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); -}; - -menu_entry: menu depends_list -{ - menu_end_entry(); - menu_add_menu(); -}; - -menu_end: end -{ - if (zconf_endtoken($1, T_MENU, T_ENDMENU)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); - } -}; - -menu_stmt: - menu_entry menu_block menu_end - | menu_entry menu_block -{ - printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno); - zconfnerrs++; -}; - -menu_block: - /* empty */ - | menu_block common_block - | menu_block menu_stmt - | menu_block choice_stmt - | menu_block error T_EOL { zconfprint("invalid menu option"); yyerrok; } -; - -source: T_SOURCE prompt T_EOL -{ - $$ = $2; - printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); -}; - -source_stmt: source -{ - zconf_nextfile($1); -}; - -/* comment entry */ - -comment: T_COMMENT prompt T_EOL -{ - menu_add_entry(NULL); - menu_add_prop(P_COMMENT, $2, NULL, NULL); - printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); -}; - -comment_stmt: comment depends_list -{ - menu_end_entry(); -}; - -/* help option */ - -help_start: T_HELP T_EOL -{ - printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); - zconf_starthelp(); -}; - -help: help_start T_HELPTEXT -{ - current_entry->sym->help = $2; -}; - -/* depends option */ - -depends_list: /* empty */ - | depends_list depends - | depends_list T_EOL -; - -depends: T_DEPENDS T_ON expr T_EOL -{ - menu_add_dep($3); - printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); -} - | T_DEPENDS expr T_EOL -{ - menu_add_dep($2); - printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno()); -} - | T_REQUIRES expr T_EOL -{ - menu_add_dep($2); - printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno()); -}; - -/* prompt statement */ - -prompt_stmt_opt: - /* empty */ - | prompt if_expr -{ - menu_add_prop(P_PROMPT, $1, NULL, $2); -}; - -prompt: T_WORD - | T_WORD_QUOTE -; - -end: T_ENDMENU nl_or_eof { $$ = T_ENDMENU; } - | T_ENDCHOICE nl_or_eof { $$ = T_ENDCHOICE; } - | T_ENDIF nl_or_eof { $$ = T_ENDIF; } -; - -nl_or_eof: - T_EOL | T_EOF; - -if_expr: /* empty */ { $$ = NULL; } - | T_IF expr { $$ = $2; } -; - -expr: symbol { $$ = expr_alloc_symbol($1); } - | symbol T_EQUAL symbol { $$ = expr_alloc_comp(E_EQUAL, $1, $3); } - | symbol T_UNEQUAL symbol { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); } - | T_OPEN_PAREN expr T_CLOSE_PAREN { $$ = $2; } - | T_NOT expr { $$ = expr_alloc_one(E_NOT, $2); } - | expr T_OR expr { $$ = expr_alloc_two(E_OR, $1, $3); } - | expr T_AND expr { $$ = expr_alloc_two(E_AND, $1, $3); } -; - -symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); } - | T_WORD_QUOTE { $$ = sym_lookup($1, 1); free($1); } -; - -%% - -void conf_parse(const char *name) -{ - struct symbol *sym; - int i; - - zconf_initscan(name); - - sym_init(); - menu_init(); - modules_sym = sym_lookup("MODULES", 0); - rootmenu.prompt = menu_add_prop(P_MENU, "JHALFS Configuration", NULL, NULL); - - //zconfdebug = 1; - zconfparse(); - if (zconfnerrs) - exit(1); - menu_finalize(&rootmenu); - for_all_symbols(i, sym) { - if (!(sym->flags & SYMBOL_CHECKED) && sym_check_deps(sym)) - printf("\n"); - else - sym->flags |= SYMBOL_CHECK_DONE; - } - - sym_change_count = 1; -} - -const char *zconf_tokenname(int token) -{ - switch (token) { - case T_MENU: return "menu"; - case T_ENDMENU: return "endmenu"; - case T_CHOICE: return "choice"; - case T_ENDCHOICE: return "endchoice"; - case T_IF: return "if"; - case T_ENDIF: return "endif"; - } - return ""; -} - -static bool zconf_endtoken(int token, int starttoken, int endtoken) -{ - if (token != endtoken) { - zconfprint("unexpected '%s' within %s block", zconf_tokenname(token), zconf_tokenname(starttoken)); - zconfnerrs++; - return false; - } - if (current_menu->file != current_file) { - zconfprint("'%s' in different file than '%s'", zconf_tokenname(token), zconf_tokenname(starttoken)); - zconfprint("location of the '%s'", zconf_tokenname(starttoken)); - zconfnerrs++; - return false; - } - return true; -} - -static void zconfprint(const char *err, ...) -{ - va_list ap; - - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno() + 1); - va_start(ap, err); - vfprintf(stderr, err, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -static void zconferror(const char *err) -{ - fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); -} - -void print_quoted_string(FILE *out, const char *str) -{ - const char *p; - int len; - - putc('"', out); - while ((p = strchr(str, '"'))) { - len = p - str; - if (len) - fprintf(out, "%.*s", len, str); - fputs("\\\"", out); - str = p + 1; - } - fputs(str, out); - putc('"', out); -} - -void print_symbol(FILE *out, struct menu *menu) -{ - struct symbol *sym = menu->sym; - struct property *prop; - - if (sym_is_choice(sym)) - fprintf(out, "choice\n"); - else - fprintf(out, "config %s\n", sym->name); - switch (sym->type) { - case S_BOOLEAN: - fputs(" boolean\n", out); - break; - case S_TRISTATE: - fputs(" tristate\n", out); - break; - case S_STRING: - fputs(" string\n", out); - break; - case S_INT: - fputs(" integer\n", out); - break; - case S_HEX: - fputs(" hex\n", out); - break; - default: - fputs(" ???\n", out); - break; - } - for (prop = sym->prop; prop; prop = prop->next) { - if (prop->menu != menu) - continue; - switch (prop->type) { - case P_PROMPT: - fputs(" prompt ", out); - print_quoted_string(out, prop->text); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_DEFAULT: - fputs( " default ", out); - expr_fprint(prop->expr, out); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_CHOICE: - fputs(" #choice value\n", out); - break; - default: - fprintf(out, " unknown prop %d!\n", prop->type); - break; - } - } - if (sym->help) { - int len = strlen(sym->help); - while (sym->help[--len] == '\n') - sym->help[len] = 0; - fprintf(out, " help\n%s\n", sym->help); - } - fputc('\n', out); -} - -void zconfdump(FILE *out) -{ - struct property *prop; - struct symbol *sym; - struct menu *menu; - - menu = rootmenu.list; - while (menu) { - if ((sym = menu->sym)) - print_symbol(out, menu); - else if ((prop = menu->prompt)) { - switch (prop->type) { - case P_COMMENT: - fputs("\ncomment ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - case P_MENU: - fputs("\nmenu ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - default: - ; - } - if (!expr_is_yes(prop->visible.expr)) { - fputs(" depends ", out); - expr_fprint(prop->visible.expr, out); - fputc('\n', out); - } - fputs("\n", out); - } - - if (menu->list) - menu = menu->list; - else if (menu->next) - menu = menu->next; - else while ((menu = menu->parent)) { - if (menu->prompt && menu->prompt->type == P_MENU) - fputs("\nendmenu\n", out); - if (menu->next) { - menu = menu->next; - break; - } - } - } -} - -#include "lex.zconf.c" -#include "util.c" -#include "confdata.c" -#include "expr.c" -#include "symbol.c" -#include "menu.c" diff --git a/2.3/optimize/opt_config b/2.3/optimize/opt_config deleted file mode 100644 index 05ca5a5..0000000 --- a/2.3/optimize/opt_config +++ /dev/null @@ -1,51 +0,0 @@ -##### -# -# optimization configuration file -# -##### -# -#$Id$ -# - -#--- Extra flags passed to the packages make commands -# "unset" will cause the variable to be not set -# instead of just set to null. -MAKEFLAGS="-j3" - -#--- List of packages that don't support well MAKEFLAGS. -# This list may be different for you. -BLACK_LIST="autoconf dejagnu gettext groff" - -#--- Default optimization mode -# This mode is overridden by definitions in opt_override; -# in this way, packages can be tuned independently. For example, -# if you have trouble building a package in the mode set here, add -# the package to opt_override with a different mode. -# -# Not set here combined modes of form defOpt_myMode. -# Combined modes of form modeA_modeB can be set here. -DEF_OPT_MODE=O3pipe - - -#--- Active optimization variables -# Variables listed here will be set as defined in the appropriate -# file in opt_config.d/; others will be ignored. -ACTIVE_OPT_VARS="CFLAGS CXXFLAGS LDFLAGS \ - OTHER_CFLAGS OTHER_CXXFLAGS OTHER_LDFLAGS" - -#--- Load optimization modes -# To add modes, create a working template.. -# cp opt_config.d/O3pipe opt_config.d/newMode -# ..and edit it as desired. -# -# To inherit another mode and add to it, see opt_config.d/O3pipe_march -# or opt_config.d/defOpt_fPIC as examples for two different ways of -# doing it. Given opt_config.d/modeA_modeB_modeC, modeB inherits -# the optimizations of modeA by sourcing it, and modeC inherits those -# of modeB (which includes those of modeA). -# -# Add packages that are to use this mode to opt_override with: -# echo 'myPkg newMode' >> opt_override -for mode in optimize/opt_config.d/* ; do - source $mode -done diff --git a/2.3/optimize/opt_config.d/O3pipe b/2.3/optimize/opt_config.d/O3pipe deleted file mode 100644 index 517f39f..0000000 --- a/2.3/optimize/opt_config.d/O3pipe +++ /dev/null @@ -1,22 +0,0 @@ -# -#$Id$ -# -##### -# -# MODE O3pipe configuration -# -# Usage: - Apply optimization string to each variable -# - "unset" will cause the variable to be not set -# instead of just set to null. -# -# Use this as an example for cunstomized modes -# -##### - -CFLAGS_O3pipe="-O3 -pipe" -CXXFLAGS_O3pipe=$CFLAGS_O3pipe -LDFLAGS_O3pipe="unset" - -OTHER_CFLAGS_O3pipe=$CFLAGS_O3pipe -OTHER_CXXFLAGS_O3pipe=$CXXFLAGS_O3pipe -OTHER_LDFLAGS_O3pipe=$LDFLAGS_O3pipe diff --git a/2.3/optimize/opt_config.d/O3pipe_march b/2.3/optimize/opt_config.d/O3pipe_march deleted file mode 100644 index 7f0f50e..0000000 --- a/2.3/optimize/opt_config.d/O3pipe_march +++ /dev/null @@ -1,25 +0,0 @@ -# -#$Id$ -# -##### -# -# MODE O3pipe_march configuration -# -# Usage: - Apply optimization string to each variable -# - "unset" will cause the variable to be not set -# instead of just set to null. -# -# Use this as an example for modeA_modeB combined modes -# -##### - -# Inherit optimizations from O3pipe -source optimize/opt_config.d/O3pipe - -CFLAGS_O3pipe_march=$CFLAGS_O3pipe" -march=pentium4" -CXXFLAGS_O3pipe_march=$CFLAGS_O3pipe" -march=pentium4" -LDFLAGS_O3pipe_march=$LDFLAGS_O3pipe - -OTHER_CFLAGS_O3pipe_march=$CFLAGS_O3pipe" -march=pentium4" -OTHER_CXXFLAGS_O3pipe_march=$CXXFLAGS_O3pipe" -march=pentium4" -OTHER_LDFLAGS_O3pipe_march=$LDFLAGS_O3pipe diff --git a/2.3/optimize/opt_config.d/defOpt_fPIC b/2.3/optimize/opt_config.d/defOpt_fPIC deleted file mode 100644 index f114ab8..0000000 --- a/2.3/optimize/opt_config.d/defOpt_fPIC +++ /dev/null @@ -1,36 +0,0 @@ -# -#$Id$ -# -##### -# -# MODE defOpt_fPIC configuration -# -# WARNING: Do not edit this mode unless you know what you are -# doing. It's required to build Zlib. -# -# Usage: - Apply optimization string to each variable -# - "unset" will cause the variable to be not set -# instead of just set to null. -# -# Use this as an example for defOpt_myMode combined modes -# -##### - -# Inherit optimizations from DEF_OPT_MODE -source optimize/opt_config.d/${DEF_OPT_MODE} - -# Append " -fPIC" to default *C{,XX}FLAGS and retain other defaults -for OPT_VAR in $ACTIVE_OPT_VARS ; do - case $OPT_VAR in - CFLAGS | CXXFLAGS | OTHER_CFLAGS | OTHER_CXXFLAGS) - if [[ "$(eval "echo \$${OPT_VAR}_${DEF_OPT_MODE}")" != "unset" ]] ; then - eval ${OPT_VAR}_defOpt_fPIC=\$${OPT_VAR}_${DEF_OPT_MODE}\" -fPIC\" - else - eval ${OPT_VAR}_defOpt_fPIC="unset" - fi - ;; - *) - eval ${OPT_VAR}_defOpt_fPIC=\$${OPT_VAR}_${DEF_OPT_MODE} - ;; - esac -done diff --git a/2.3/optimize/opt_config.d/noOpt b/2.3/optimize/opt_config.d/noOpt deleted file mode 100644 index 39abdb3..0000000 --- a/2.3/optimize/opt_config.d/noOpt +++ /dev/null @@ -1,27 +0,0 @@ -# -#$Id$ -# -##### -# -# MODE noOpt configuration -# -# WARNING: Do not edit this mode unless you know what you are -# doing. By default, this is set to disable optimization -# of packages known to have build or runtime failure. -# -# Also, if you what to use MAKEFLAGS but no build -# optimizations, set this mode in DEF_OPT_MODE -# -# Usage: - Apply optimization string to each variable -# - "unset" will cause the variable to be not set -# instead of being just set to null. -# -##### - -CFLAGS_noOpt="unset" -CXXFLAGS_noOpt="unset" -LDFLAGS_noOpt="unset" - -OTHER_CFLAGS_noOpt="unset" -OTHER_CXXFLAGS_noOpt="unset" -OTHER_LDFLAGS_noOpt="unset" diff --git a/2.3/optimize/opt_config.d/noSymbols b/2.3/optimize/opt_config.d/noSymbols deleted file mode 100644 index 7089f02..0000000 --- a/2.3/optimize/opt_config.d/noSymbols +++ /dev/null @@ -1,23 +0,0 @@ -# -#$Id$ -# -##### -# -# MODE noOpt_noSymbols configuration -# -# Usage: - Apply optimization string to each variable -# - "unset" will cause the variable to be not set -# instead of just set to null. -# -# NOTE: If using this mode in DEF_OPT_MODE (alone or combined with -# other modes) please set STRIP=0 in common/config -# -##### - -CFLAGS_noSymbols="-s" -CXXFLAGS_noSymbols=$CFLAGS_noSymbols -LDFLAGS_noSymbols="-s" - -OTHER_CFLAGS_noSymbols=$CFLAGS_noSymbols -OTHER_CXXFLAGS_noSymbols=$CXXFLAGS_noSymbols -OTHER_LDFLAGS_noSymbols=$LDFLAGS_noSymbols diff --git a/2.3/optimize/opt_override b/2.3/optimize/opt_override deleted file mode 100644 index 05f8637..0000000 --- a/2.3/optimize/opt_override +++ /dev/null @@ -1,5 +0,0 @@ -binutils noOpt -gcc noOpt -glibc noOpt -grub noOpt -zlib defOpt_fPIC diff --git a/2.3/optimize/optimize_functions b/2.3/optimize/optimize_functions deleted file mode 100644 index baec318..0000000 --- a/2.3/optimize/optimize_functions +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash - -# $Id$ - -set +e - - -#----------------------------------# -validate_opt_settings() { # Show optimize setting and wait user agreement -#----------------------------------# - local OPT_VAR optVal - - echo -e "\t\t${RED}${BOLD}WARNING:${OFF}\n" - echo -e "${BOLD}The use of build optimizations may be dangerous.\n" - echo -e "You should know what you are doing and be sure that the" - echo -e "optimization settings listed below are what you want.\n" - echo -e "If there are build issues or the system doesn't work as" - echo -e "expected, please rebuild without optimizations before" - echo -e "asking for support.${OFF}\n" - - echo -e "MAKEFLAGS: ${L_arrow}${BOLD}${MAKEFLAGS}${OFF}${R_arrow}" - [[ "$MAKEFLAGS" = "unset" ]] && echo - [[ "$MAKEFLAGS" != "unset" ]] && \ - echo -e "BLACK_LIST: ${L_arrow}${BOLD}${BLACK_LIST}${OFF}${R_arrow}\n" - - echo -e "DEF_OPT_MODE: ${L_arrow}${BOLD}${DEF_OPT_MODE}${OFF}${R_arrow}\n" - - for OPT_VAR in $ACTIVE_OPT_VARS ; do - eval optVal=\$${OPT_VAR}_${DEF_OPT_MODE} - echo -e "${OPT_VAR}: ${L_arrow}${BOLD}${optVal}${OFF}${R_arrow}" - done - - echo -e "\nOverridden packages:" - cat optimize/opt_override - echo "${nl_}${SD_BORDER}${nl_}" - - echo -n "Are you happy with these optimization settings? yes/no (no): " - read ANSWER - if [ x$ANSWER != "xyes" ] ; then - echo "${nl_}Fix the optimization options and rerun the script.${nl_}" - exit 1 - fi - echo "${nl_}${SD_BORDER}${nl_}" -} - -#----------------------------------# -wrt_optimize() { # Apply pkg specific opt's to build -#----------------------------------# - local pkg=$1 - local optMode optVal OPT_VAR - - optMode=`awk -v pkg="$pkg" '$1 == pkg { print $2 }' $JHALFSDIR/opt_override` - if [[ "$optMode" = "" ]] ; then - optMode=$DEF_OPT_MODE; - fi - - for OPT_VAR in $ACTIVE_OPT_VARS ; do - eval optVal=\$${OPT_VAR}_$optMode - - if [[ "$optVal" != "unset" ]]; then -( -cat << EOF - @echo "export $OPT_VAR=\"$optVal\"" >> envars -EOF -) >> $MKFILE.tmp - else - continue - fi - done -} - -#----------------------------------# -wrt_makeflags() { # Apply MAKEFLAGS to build -#----------------------------------# - local pkg=$1 - local MKF - - if [[ "$BLACK_LIST" =~ ${pkg} ]]; then - MKF=unset - else - MKF=$MAKEFLAGS - fi - - if [[ "$MKF" != "unset" ]]; then -( -cat << EOF - @echo "export MAKEFLAGS=\"$MAKEFLAGS\"" >> envars -EOF -) >> $MKFILE.tmp - fi -}