Author: pierre Date: Fri Sep 28 07:35:46 2018 New Revision: 4064 Log: Add possibility to automate bash shell startup files, vimrc, and rng. This adds a new variable to the configuration (LANGUAGE). Also automate the generation of various <replaceable> instructions
Modified: jhalfs/trunk/BLFS/gen-special.sh jhalfs/trunk/BLFS/gen_pkg_book.sh jhalfs/trunk/BLFS/xsl/gen_config.xsl jhalfs/trunk/BLFS/xsl/scripts.xsl jhalfs/trunk/common/libs/func_install_blfs Modified: jhalfs/trunk/BLFS/gen-special.sh ============================================================================== --- jhalfs/trunk/BLFS/gen-special.sh Tue Sep 4 03:06:09 2018 (r4063) +++ jhalfs/trunk/BLFS/gen-special.sh Fri Sep 28 07:35:46 2018 (r4064) @@ -38,8 +38,9 @@ sed 's@^[^"]*"\([^"]*\)".*@\1@') # Non-versioned packages: -NV_LIST="cacerts xorg-env kde-pre-install-config kf5-intro lxqt-pre-install \ -lxqt-post-install ojdk-conf tex-path" +NV_LIST="postlfs-config-profile postlfs-config-random postlfs-config-vimrc \ +xorg-env kde-pre-install-config kf5-intro \ +lxqt-pre-install lxqt-post-install ojdk-conf tex-path" # Set PATH to be sure to find udevadm SAVPATH=$PATH Modified: jhalfs/trunk/BLFS/gen_pkg_book.sh ============================================================================== --- jhalfs/trunk/BLFS/gen_pkg_book.sh Tue Sep 4 03:06:09 2018 (r4063) +++ jhalfs/trunk/BLFS/gen_pkg_book.sh Fri Sep 28 07:35:46 2018 (r4064) @@ -30,7 +30,10 @@ declare -a TARGET declare DEP_LEVEL declare SUDO +declare LANGUAGE declare WRAP_INSTALL +declare DEL_LA_FILES +declare STATS #--------------------------# parse_configuration() { # @@ -52,6 +55,7 @@ WRAP_INSTALL=* | \ DEL_LA_FILES=* | \ STATS=* | \ + LANGUAGE=* | \ SUDO=* ) eval ${REPLY} # Define/set a global variable.. continue ;; esac @@ -79,7 +83,7 @@ validate_configuration() { # #--------------------------# local -r dotSTR=".................." - local -r PARAM_LIST="DEP_LEVEL SUDO MAIL_SERVER WRAP_INSTALL DEL_LA_FILES STATS" + local -r PARAM_LIST="DEP_LEVEL SUDO LANGUAGE MAIL_SERVER WRAP_INSTALL DEL_LA_FILES STATS" local -r PARAM_VALS='${config_param}${dotSTR:${#config_param}} ${L_arrow}${BOLD}${!config_param}${OFF}${R_arrow}' local config_param local -i index @@ -211,6 +215,7 @@ --stringparam wrap-install "$WRAP_INSTALL" \ --stringparam del-la-files "$DEL_LA_FILES" \ --stringparam list-stat "$LIST_STAT" \ + --stringparam language "$LANGUAGE" \ -o ./scripts/ ${MakeScripts} \ ${BookXml} # Make the scripts executable. Modified: jhalfs/trunk/BLFS/xsl/gen_config.xsl ============================================================================== --- jhalfs/trunk/BLFS/xsl/gen_config.xsl Tue Sep 4 03:06:09 2018 (r4063) +++ jhalfs/trunk/BLFS/xsl/gen_config.xsl Fri Sep 28 07:35:46 2018 (r4064) @@ -55,6 +55,12 @@ default 3 if DEPLVL_3 default 4 if DEPLVL_4 +config LANGUAGE + string "LANG variable in the form ll_CC.charmap[@modifiers]" + default "en_US.UTF-8" + help + Because of the book layout, the 3 fields, ll, CC and charmap are + mandatory. The @modfier is honoured if present. config SUDO bool "Build as User" Modified: jhalfs/trunk/BLFS/xsl/scripts.xsl ============================================================================== --- jhalfs/trunk/BLFS/xsl/scripts.xsl Tue Sep 4 03:06:09 2018 (r4063) +++ jhalfs/trunk/BLFS/xsl/scripts.xsl Fri Sep 28 07:35:46 2018 (r4064) @@ -34,6 +34,41 @@ <!-- Build as user (y) or as root (n)? --> <xsl:param name="sudo" select="'y'"/> + <!-- Localization in the form ll_CC.charmap@modifier (to be used in + bash shell startup scripts). ll, CC, and charmap must be present: + no way to use "C" or "POSIX". --> + <xsl:param name="language" select="'en_US.UTF-8'"/> + + <!-- Break it in pieces --> + <xsl:variable name="lang-ll"> + <xsl:copy-of select="substring-before($language,'_')"/> + </xsl:variable> + <xsl:variable name="lang-CC"> + <xsl:copy-of + select="substring-before(substring-after($language,'_'),'.')"/> + </xsl:variable> + <xsl:variable name="lang-charmap"> + <xsl:choose> + <xsl:when test="contains($language,'@')"> + <xsl:copy-of + select="substring-before(substring-after($language,'.'),'@')"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="substring-after($language,'.')"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="lang-modifier"> + <xsl:choose> + <xsl:when test="contains($language,'@')"> + <xsl:copy-of select="concat('@',substring-after($language,'@'))"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="''"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <!-- simple instructions for removing .la files. --> <xsl:variable name="la-files-instr"> @@ -133,12 +168,12 @@ </xsl:when> <!-- Non-package page --> <xsl:otherwise> - <xsl:apply-templates select=".//screen"/> + <xsl:apply-templates select=".//screen" mode="not-pack"/> </xsl:otherwise> </xsl:choose> <xsl:text>exit</xsl:text> </exsl:document> - </xsl:if> + </xsl:if><!-- id!=bootscript or id!=systemd-units --> </xsl:template> <!--======================= Sub-sections code =======================--> @@ -153,7 +188,7 @@ <xsl:text>
</xsl:text> </xsl:when> <xsl:when test="@role = 'qt4-prefix' or @role = 'qt5-prefix'"> - <xsl:apply-templates select=".//screen"/> + <xsl:apply-templates select=".//screen[./userinput]"/> </xsl:when> <xsl:when test="@role = 'installation'"> <xsl:text> @@ -208,14 +243,17 @@ </xsl:text> </xsl:if> - <xsl:apply-templates select=".//screen | .//para/command"/> + <xsl:apply-templates + select=".//screen[not(@role = 'nodump') and ./userinput] | + .//para/command"/> <xsl:if test="$sudo = 'y'"> <xsl:text>sudo /sbin/</xsl:text> </xsl:if> <xsl:text>ldconfig

</xsl:text> </xsl:when> <xsl:when test="@role = 'configuration'"> - <xsl:apply-templates select=".//screen" mode="config"/> + <xsl:apply-templates mode="config" + select=".//screen[not(@role = 'nodump') and ./userinput]"/> </xsl:when> </xsl:choose> </xsl:template> @@ -455,6 +493,25 @@ <xsl:with-param name="varname" select="$varname"/> </xsl:call-template> </xsl:template> + +<!--====================== Non package code =========================--> + + <xsl:template match="screen" mode="not-pack"> + <xsl:choose> + <xsl:when test="ancestor::sect1[@id='postlfs-config-vimrc']"> + <xsl:text> +cat > ~/.vimrc <<EOF +</xsl:text> + <xsl:apply-templates/> + <xsl:text> +EOF +</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="config"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> <!--======================== Commands code ==========================--> <xsl:template match="screen"> @@ -464,6 +521,10 @@ <xsl:when test="@role = 'root' and ancestor::sect2[@role='installation'] and not(contains(string(),'useradd')) and + not(contains(string(),'usermod')) and + not(contains(string(),'icon-cache')) and + not(contains(string(),'desktop-database')) and + not(contains(string(),'compile-schemas')) and not(contains(string(),'groupadd'))"> <xsl:if test="not(preceding-sibling::screen[1][@role='root'])"> <xsl:if test="contains($list-stat-norm, @@ -704,15 +765,63 @@ </xsl:template> <xsl:template match="replaceable"> + <xsl:choose> +<!-- When adding a user to a group, the book uses "username" in a replaceable + tag. Replace by the user name only if not running as root --> + <xsl:when test="contains(string(),'username') and $sudo='y'"> + <xsl:text>$USER</xsl:text> + </xsl:when> +<!-- The next three entries are for gpm. I guess those settings are OK + for a laptop or desktop. --> + <xsl:when test="contains(string(),'yourprotocol')"> + <xsl:text>imps2</xsl:text> + </xsl:when> + <xsl:when test="contains(string(),'yourdevice')"> + <xsl:text>/dev/input/mice</xsl:text> + </xsl:when> + <xsl:when test="contains(string(),'additional options')"/> +<!-- the book has four fields for language. The language param is + broken into four pieces above. We use the results here. --> + <xsl:when test="contains(string(),'<ll>')"> + <xsl:copy-of select="$lang-ll"/> + </xsl:when> + <xsl:when test="contains(string(),'<CC>')"> + <xsl:copy-of select="$lang-CC"/> + </xsl:when> + <xsl:when test="contains(string(),'<charmap>')"> + <xsl:copy-of select="$lang-charmap"/> + </xsl:when> + <xsl:when test="contains(string(),'@modifier')"> + <xsl:copy-of select="$lang-modifier"/> + </xsl:when> +<!-- At several places, the number of jobs is given as "N" in a replaceable + tag. We either detect "N" alone or <N> Replace N with 4. --> + <xsl:when test="contains(string(),'<N>') or string()='N'"> + <xsl:text>4</xsl:text> + </xsl:when> +<!-- Mercurial config file uses user_name. Replace only if non root. + Add a bogus mail field. That works for the proposed tests anyway. --> + <xsl:when test="contains(string(),'user_name') and $sudo='y'"> + <xsl:text>$USER ${USER}@mail.bogus</xsl:text> + </xsl:when> +<!-- Use the config for Gtk+3 as is --> + <xsl:when test="ancestor::sect1[@id='gtk3']"> + <xsl:copy-of select="string()"/> + </xsl:when> +<!-- Give 1Gb to fop. Hopefully, nobody has less RAM nowadays. --> + <xsl:when test="contains(string(),'RAM_Installed')"> + <xsl:text>1024</xsl:text> + </xsl:when> + <xsl:otherwise> <xsl:text>**EDITME</xsl:text> <xsl:apply-templates/> <xsl:text>EDITME**</xsl:text> + </xsl:otherwise> + </xsl:choose> </xsl:template> <xsl:template match="replaceable" mode="root"> - <xsl:text>**EDITME</xsl:text> - <xsl:apply-templates/> - <xsl:text>EDITME**</xsl:text> + <xsl:apply-templates select="."/> </xsl:template> <xsl:template name="output-destdir"> Modified: jhalfs/trunk/common/libs/func_install_blfs ============================================================================== --- jhalfs/trunk/common/libs/func_install_blfs Tue Sep 4 03:06:09 2018 (r4063) +++ jhalfs/trunk/common/libs/func_install_blfs Fri Sep 28 07:35:46 2018 (r4064) @@ -133,8 +133,10 @@ MAIL_SERVER=sendmail optDependency=2 SUDO=n +LANGUAGE=$LANG WRAP_INSTALL=$WRAP_INSTALL DEL_LA_FILES=$DEL_LA_FILES +STATS=n EOF # Generates the scripts for the blfs tools dependencies (in ./scripts) -- http://lists.linuxfromscratch.org/listinfo/alfs-log Unsubscribe: See the above information page