diff options
author | Pierre Labastie <pierre.labastie@neuf.fr> | 2023-09-19 22:11:11 +0200 |
---|---|---|
committer | Pierre Labastie <pierre.labastie@neuf.fr> | 2023-09-19 22:11:11 +0200 |
commit | 0cd09c69545e2bae0bea15333bc97f0a2ec452d6 (patch) | |
tree | a572ec5b3cdf15b7c7b66d0b1e1b11f16e2fc666 | |
parent | b39f283e3d5de90f3e1e12bda88c3f5f49be2c5e (diff) |
Add automation for kf5 and plasma5
-rwxr-xr-x | BLFS/gen-special.sh | 50 | ||||
-rw-r--r-- | BLFS/xsl/gen_config.xsl | 4 | ||||
-rw-r--r-- | BLFS/xsl/gen_pkg_list.xsl | 4 | ||||
-rw-r--r-- | BLFS/xsl/make_book.xsl | 73 |
4 files changed, 85 insertions, 46 deletions
diff --git a/BLFS/gen-special.sh b/BLFS/gen-special.sh index 4dcd904c8e..cc8033e565 100755 --- a/BLFS/gen-special.sh +++ b/BLFS/gen-special.sh @@ -98,7 +98,9 @@ cat >tmpfile << EOF <xsl:param name="build"/> <xsl:choose> EOF -for file in $(ls ${BLFS_DIR}/x/installing/x7* | grep -v x7driver); do +for file in $(ls ${BLFS_DIR}/x/installing/x7* | grep -v x7driver) \ + ${BLFS_DIR}/kde/kf5/kf5-frameworks.xml \ + ${BLFS_DIR}/kde/plasma5/plasma-all.xml; do id=$(grep xreflabel $file | sed 's@.*id="\([^"]*\).*@\1@') cat >>$SPECIAL_FILE << EOF <xsl:when test="@id='$id'"> @@ -116,26 +118,35 @@ EOF # So we have to read that command too, since it may be assumed # that the preceding package is a dependency of the following, # except the first. - list_cat="$(sed -n '/>cat/,/EOF</p' $file | grep -v 'cat\|EOF\|#' | +list_cat="$(sed -n '/>cat.*\.\(md5\|dat\)/,/EOF</p' $file | grep -v 'cat\|EOF\|#' | awk '{ print $NF }' | sed 's/-&.*//')" -# Rationale for the sed below: the following for breaks words at spaces (unless -# we tweak IFS). So replace spaces with commas in lines so that only newlines -# are separators. - for pack in \ - $(grep 'ENTITY.*version' $file | sed 's/[ ]\+/,/g'); do - packname=$(echo $pack | sed s'@.*ENTITY,\(.*\)-version.*@\1@') - packversion=$(echo $pack | sed 's@[^"]*"\([^"]*\).*@\1@') - precpack=NONE - for i in $list_cat; do - if [ "$i" = "$packname" ]; then break; fi - precpack=$i - done -# It may happen that packname is not in list_cat, because its entity -# is commented out in the xml, but we do not check that (too complicated). -# In that case, the whole list is scanned, and $precpack=$i at the end. -# when packname is found in the list $precpack!=$i. - if [ "$precpack" = "$i" ]; then continue; fi + precpack=NONE + for pack in $list_cat; do + if grep -q x7 $file; then # this is an xorg package + packname=$pack + packversion=$(grep "ENTITY ${pack}-version" $file | \ + sed 's@[^"]*"\([^"]*\).*@\1@') + else + packname=${pack%%-[[:digit:]]*} + packversion=$(echo $pack | sed 's/[^.]*-\([.[:digit:]]*\)\.tar.*/\1/') + fi +## Rationale for the sed below: the following for breaks words at spaces (unless +## we tweak IFS). So replace spaces with commas in lines so that only newlines +## are separators. +# for pack in \ +# $(grep 'ENTITY.*version' $file | sed 's/[ ]\+/,/g'); do +# packname=$(echo $pack | sed s'@.*ENTITY,\(.*\)-version.*@\1@') +# packversion=$(echo $pack | sed 's@[^"]*"\([^"]*\).*@\1@') +# for i in $list_cat; do +# if [ "$i" = "$packname" ]; then break; fi +# precpack=$i +# done +## It may happen that packname is not in list_cat, because its entity +## is commented out in the xml, but we do not check that (too complicated). +## In that case, the whole list is scanned, and $precpack=$i at the end. +## when packname is found in the list $precpack!=$i. +# if [ "$precpack" = "$i" ]; then continue; fi cat >>$SPECIAL_FILE << EOF <module><xsl:text>
 </xsl:text> <xsl:element name="name">$packname</xsl:element> @@ -182,6 +193,7 @@ EOF <xsl:attribute name="type">ref</xsl:attribute> </xsl:element> EOF + precpack=$packname done cat >>$SPECIAL_FILE << EOF </package> diff --git a/BLFS/xsl/gen_config.xsl b/BLFS/xsl/gen_config.xsl index 63b376899d..71e5c66406 100644 --- a/BLFS/xsl/gen_config.xsl +++ b/BLFS/xsl/gen_config.xsl @@ -309,7 +309,9 @@ if	MENU_</xsl:text> <xsl:text>" 			default	</xsl:text> <xsl:choose> - <xsl:when test="contains(../name,'xorg')"> + <xsl:when test="contains(../name,'xorg') or + contains(../name,'plasma') or + contains(../name,'kf5')"> <xsl:text>y </xsl:text> diff --git a/BLFS/xsl/gen_pkg_list.xsl b/BLFS/xsl/gen_pkg_list.xsl index b069245dc4..e3e0ef629d 100644 --- a/BLFS/xsl/gen_pkg_list.xsl +++ b/BLFS/xsl/gen_pkg_list.xsl @@ -359,7 +359,9 @@ <!-- do not depend on something which is not a dependency --> <xsl:when test="@role='nodep'"/> <!-- Call list expansion when we have an xorg7 series of packages --> - <xsl:when test="contains(@linkend,'xorg7-')"> + <xsl:when test="contains(@linkend,'xorg7-') or + @linkend='kf5-frameworks' or + @linkend='plasma5-build'"> <xsl:call-template name="expand-deps"> <xsl:with-param name="section"> <xsl:value-of select="@linkend"/> diff --git a/BLFS/xsl/make_book.xsl b/BLFS/xsl/make_book.xsl index 6e35b914c9..129e1cce3b 100644 --- a/BLFS/xsl/make_book.xsl +++ b/BLFS/xsl/make_book.xsl @@ -57,15 +57,13 @@ <!-- apply-templates for each item in the list. Normally, those items are id of nodes. Those nodes can be sect1 (normal case), - sect2 (python modules or DBus bindings) - bridgehead (perl modules) - para (dependency of perl modules). + sect2 (python/perl modules/dependencies ) The templates after this one treat each of those cases. However, some items are xorg package names, and not id. We need special instructions in that case. The difficulty is that some of those names *are* id's, because they are referenced in the index. - Hopefully, none of those id's are sect{1,2}, bridgehead or para...--> + Hopefully, none of those id's are sect{1,2}...--> <xsl:template name="apply-list"> <xsl:param name="list" select="''"/> <xsl:if test="string-length($list) > 0"> @@ -100,7 +98,7 @@ </xsl:call-template> </xsl:when> <xsl:when test="contains(concat($list,' '),'-pass1 ')"> -<!-- We need to do it only for sect1 and sect2, because of libva --> +<!-- We need to do it for both sect1 and sect2, because of libva --> <xsl:variable name="real-id" select="substring-before(concat($list,' '),'-pass1 ')"/> @@ -113,9 +111,11 @@ </xsl:when> <xsl:when test="not(id($list)[self::sect1 or self::sect2 or self::para or self::bridgehead])"> <xsl:apply-templates - select="//sect1[contains(@id,'xorg7') - and contains(string(.//userinput), - concat($list,'-'))]" + select="//sect1[(contains(@id,'xorg7') or + contains(@id,'frameworks') or + contains(@id,'plasma5')) + and .//userinput/literal[contains(string(), + concat($list,'-'))]]" mode="xorg"> <xsl:with-param name="package" select="$list"/> </xsl:apply-templates> @@ -497,6 +497,17 @@ one --> <xsl:template match="sect1" mode="xorg"> <xsl:param name="package"/> + <!--DEBUG + <xsl:message> + <xsl:text>Entering sect1 template in xorg mode: +- page id:</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text> +- package:</xsl:text> + <xsl:value-of select="$package"/> + <xsl:text> +</xsl:text> + </xsl:message> END DEBUG --> <xsl:variable name="tarball"> <xsl:call-template name="tarball"> <xsl:with-param name="package" select="concat(' ',$package,'-')"/> @@ -521,7 +532,13 @@ <xsl:variable name="install-instructions"> <xsl:call-template name="inst-instr"> <xsl:with-param name="inst-instr" - select=".//userinput[starts-with(string(),'for ')]"/> + select= + "substring-after( + substring-after(.//userinput[starts-with(string(),'for ') or + starts-with(string(),'while ')], + 'pushd'), + '
')"/> + <xsl:with-param name="package" select="$package"/> </xsl:call-template> </xsl:variable> <xsl:element name="sect1"> @@ -540,20 +557,17 @@ <xsl:value-of select=".//para[contains(string(),'(HTTP)')]/ulink/@url"/> <xsl:value-of select="$download-dir"/> + <xsl:if test="contains(@id,'frameworks') or + contains(@id,'plasma5')"> + <xsl:text>/</xsl:text> + </xsl:if> <xsl:value-of select="$tarball"/> </xsl:attribute> </xsl:element> </para> </listitem> <listitem> - <para>Download (FTP): <xsl:element name="ulink"> - <xsl:attribute name="url"> - <xsl:value-of - select=".//para[contains(string(),'(FTP)')]/ulink/@url"/> - <xsl:value-of select="$download-dir"/> - <xsl:value-of select="$tarball"/> - </xsl:attribute> - </xsl:element> + <para>Download (FTP): <ulink url=" "/> </para> </listitem> <listitem> @@ -581,7 +595,9 @@ <screen><userinput>packagedir=<xsl:value-of select="substring-before($tarball,'.tar.')"/> - <xsl:text>
</xsl:text> + <xsl:text> + name=$(echo $pkg | sed 's/-[[:digit:]].*//') + </xsl:text> <xsl:value-of select="substring-before($install-instructions, 'as_root')"/> </userinput></screen> @@ -680,14 +696,21 @@ END DEBUG --> <xsl:template name="inst-instr"> <xsl:param name="inst-instr"/> + <xsl:param name="package"/> <xsl:choose> - <xsl:when test="contains($inst-instr,'pushd')"> - <xsl:call-template name="inst-instr"> - <xsl:with-param name="inst-instr" - select="substring-after( - substring-after($inst-instr,'pushd'), - '
')"/> - </xsl:call-template> + <xsl:when test="contains(substring-after($inst-instr,'popd'),'popd')"> + <xsl:choose> + <xsl:when test="$package='kapidox'"> + <xsl:copy-of select="substring-after(substring-before($inst-instr,'popd'),'kapidox)')"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="substring-before($inst-instr,'kapidox)')"/> + <xsl:call-template name="inst-instr"> + <xsl:with-param name="inst-instr" + select="substring-after($inst-instr,';;')"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:copy-of select="substring-before($inst-instr,'popd')"/> |