Merge the new_features branch (manully, thanks to svn)
This commit is contained in:
parent
909ee37e1a
commit
945ccaa75e
13 changed files with 810 additions and 117 deletions
|
@ -26,6 +26,7 @@ declare BLFS_XML="${TOPDIR}/blfs-xml"
|
||||||
declare -a TARGET
|
declare -a TARGET
|
||||||
declare DEP_LEVEL
|
declare DEP_LEVEL
|
||||||
declare SUDO
|
declare SUDO
|
||||||
|
declare WRAP_INSTALL
|
||||||
|
|
||||||
#--------------------------#
|
#--------------------------#
|
||||||
parse_configuration() { #
|
parse_configuration() { #
|
||||||
|
@ -44,6 +45,7 @@ parse_configuration() { #
|
||||||
# Create global variables for these parameters.
|
# Create global variables for these parameters.
|
||||||
optDependency=* | \
|
optDependency=* | \
|
||||||
MAIL_SERVER=* | \
|
MAIL_SERVER=* | \
|
||||||
|
WRAP_INSTALL=* | \
|
||||||
SUDO=* ) eval ${REPLY} # Define/set a global variable..
|
SUDO=* ) eval ${REPLY} # Define/set a global variable..
|
||||||
continue ;;
|
continue ;;
|
||||||
esac
|
esac
|
||||||
|
@ -62,13 +64,14 @@ parse_configuration() { #
|
||||||
TARGET=(${optTARGET[*]})
|
TARGET=(${optTARGET[*]})
|
||||||
DEP_LEVEL=$optDependency
|
DEP_LEVEL=$optDependency
|
||||||
SUDO=${SUDO:-n}
|
SUDO=${SUDO:-n}
|
||||||
|
WRAP_INSTALL=${WRAP_INSTALL:-n}
|
||||||
}
|
}
|
||||||
|
|
||||||
#--------------------------#
|
#--------------------------#
|
||||||
validate_configuration() { #
|
validate_configuration() { #
|
||||||
#--------------------------#
|
#--------------------------#
|
||||||
local -r dotSTR=".................."
|
local -r dotSTR=".................."
|
||||||
local -r PARAM_LIST="DEP_LEVEL SUDO MAIL_SERVER"
|
local -r PARAM_LIST="DEP_LEVEL SUDO MAIL_SERVER WRAP_INSTALL"
|
||||||
local -r PARAM_VALS='${config_param}${dotSTR:${#config_param}} ${L_arrow}${BOLD}${!config_param}${OFF}${R_arrow}'
|
local -r PARAM_VALS='${config_param}${dotSTR:${#config_param}} ${L_arrow}${BOLD}${!config_param}${OFF}${R_arrow}'
|
||||||
local config_param
|
local config_param
|
||||||
local -i index
|
local -i index
|
||||||
|
@ -179,6 +182,7 @@ echo -en "\n\tGenerating the build scripts ...\n"
|
||||||
rm -rf scripts
|
rm -rf scripts
|
||||||
xsltproc --xinclude --nonet \
|
xsltproc --xinclude --nonet \
|
||||||
--stringparam sudo $SUDO \
|
--stringparam sudo $SUDO \
|
||||||
|
--stringparam wrap-install $WRAP_INSTALL \
|
||||||
-o ./scripts/ ${MakeScripts} \
|
-o ./scripts/ ${MakeScripts} \
|
||||||
${BookXml}
|
${BookXml}
|
||||||
# Make the scripts executable.
|
# Make the scripts executable.
|
||||||
|
|
|
@ -58,6 +58,16 @@ config SUDO
|
||||||
help
|
help
|
||||||
Select if sudo will be used (you build as a normal user)
|
Select if sudo will be used (you build as a normal user)
|
||||||
otherwise sudo is not needed (you build as root)
|
otherwise sudo is not needed (you build as root)
|
||||||
|
|
||||||
|
|
||||||
|
config WRAP_INSTALL
|
||||||
|
bool "Use `porg style' package management"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Select if you want the installation commands to be wrapped
|
||||||
|
between "wrapInstall '" and "' ; packInstall" functions,
|
||||||
|
where wrapInstall is used to set up a LD_PRELOAD library (for
|
||||||
|
example using porg), and packInstall makes the package tarball
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,10 @@
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
</xsl:variable>
|
</xsl:variable>
|
||||||
|
|
||||||
|
<!-- Wrap "root" commands inside a wrapper function, allowing
|
||||||
|
"porg style" package management -->
|
||||||
|
<xsl:param name="wrap-install" select="'n'"/>
|
||||||
|
|
||||||
<!-- Build as user (y) or as root (n)? -->
|
<!-- Build as user (y) or as root (n)? -->
|
||||||
<xsl:param name="sudo" select="'y'"/>
|
<xsl:param name="sudo" select="'y'"/>
|
||||||
|
|
||||||
|
@ -69,8 +73,10 @@
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<!-- Package page -->
|
<!-- Package page -->
|
||||||
<xsl:when test="sect2[@role='package']">
|
<xsl:when test="sect2[@role='package']">
|
||||||
<!-- We build in a subdirectory -->
|
<!-- We build in a subdirectory, whose name may be needed
|
||||||
<xsl:text>PKG_DIR=</xsl:text>
|
if using package management (see envars.conf), so
|
||||||
|
"export" it -->
|
||||||
|
<xsl:text>export PKG_DIR=</xsl:text>
|
||||||
<xsl:value-of select="$filename"/>
|
<xsl:value-of select="$filename"/>
|
||||||
<xsl:text>
|
<xsl:text>
|
||||||
SRC_DIR=${SRC_ARCHIVE}${SRC_SUBDIRS:+/${PKG_DIR}}
|
SRC_DIR=${SRC_ARCHIVE}${SRC_SUBDIRS:+/${PKG_DIR}}
|
||||||
|
@ -149,6 +155,7 @@ case $PACKAGE in
|
||||||
cp $(find . -mindepth 1 -maxdepth 1 -type l) $UNPACKDIR
|
cp $(find . -mindepth 1 -maxdepth 1 -type l) $UNPACKDIR
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
export UNPACKDIR
|
||||||
cd $UNPACKDIR

|
cd $UNPACKDIR

|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
<xsl:apply-templates select=".//screen | .//para/command"/>
|
<xsl:apply-templates select=".//screen | .//para/command"/>
|
||||||
|
@ -407,12 +414,30 @@ fi
|
||||||
<xsl:if test="child::* = userinput and not(@role = 'nodump')">
|
<xsl:if test="child::* = userinput and not(@role = 'nodump')">
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="@role = 'root'">
|
<xsl:when test="@role = 'root'">
|
||||||
<xsl:if test="$sudo = 'y'">
|
<xsl:if test="not(preceding-sibling::screen[1][@role='root'])">
|
||||||
<xsl:text>sudo -E sh << ROOT_EOF
</xsl:text>
|
<xsl:if test="$sudo = 'y'">
|
||||||
|
<xsl:text>sudo -E sh << ROOT_EOF
</xsl:text>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="$wrap-install = 'y' and
|
||||||
|
ancestor::sect2[@role='installation']">
|
||||||
|
<xsl:text>if [ -r "$PACK_INSTALL" ]; then
|
||||||
|
source $PACK_INSTALL
|
||||||
|
export -f wrapInstall
|
||||||
|
export -f packInstall
|
||||||
|
fi
|
||||||
|
wrapInstall '
|
||||||
|
</xsl:text>
|
||||||
|
</xsl:if>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
<xsl:apply-templates mode="root"/>
|
<xsl:apply-templates mode="root"/>
|
||||||
<xsl:if test="$sudo = 'y'">
|
<xsl:if test="not(following-sibling::screen[1][@role='root'])">
|
||||||
<xsl:text>
ROOT_EOF</xsl:text>
|
<xsl:if test="$wrap-install = 'y' and
|
||||||
|
ancestor::sect2[@role='installation']">
|
||||||
|
<xsl:text>'
packInstall</xsl:text>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="$sudo = 'y'">
|
||||||
|
<xsl:text>
ROOT_EOF</xsl:text>
|
||||||
|
</xsl:if>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
</xsl:when>
|
</xsl:when>
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
|
@ -514,6 +539,8 @@ popd</xsl:text>
|
||||||
</xsl:call-template>
|
</xsl:call-template>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:variable name="APOS">'</xsl:variable>
|
||||||
|
|
||||||
<xsl:template name="output-root">
|
<xsl:template name="output-root">
|
||||||
<xsl:param name="out-string" select="''"/>
|
<xsl:param name="out-string" select="''"/>
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
|
@ -561,6 +588,19 @@ popd</xsl:text>
|
||||||
select="substring-after($out-string,'\')"/>
|
select="substring-after($out-string,'\')"/>
|
||||||
</xsl:call-template>
|
</xsl:call-template>
|
||||||
</xsl:when>
|
</xsl:when>
|
||||||
|
<xsl:when test="contains($out-string,string($APOS))
|
||||||
|
and $wrap-install = 'y'
|
||||||
|
and ancestor::sect2[@role='installation']">
|
||||||
|
<xsl:call-template name="output-root">
|
||||||
|
<xsl:with-param name="out-string"
|
||||||
|
select="substring-before($out-string,string($APOS))"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:text>'\''</xsl:text>
|
||||||
|
<xsl:call-template name="output-root">
|
||||||
|
<xsl:with-param name="out-string"
|
||||||
|
select="substring-after($out-string,string($APOS))"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<xsl:value-of select="$out-string"/>
|
<xsl:value-of select="$out-string"/>
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
|
|
152
Config.in
152
Config.in
|
@ -757,13 +757,12 @@ depends !BOOK_BLFS
|
||||||
#
|
#
|
||||||
# You will have to select between:
|
# You will have to select between:
|
||||||
#
|
#
|
||||||
# - Only final system Glibc, GCC and Binutils testsuites
|
# - Only critical final system testsuites
|
||||||
# - All final system testsuites
|
# - All final system testsuites
|
||||||
# - Both temporary tools and final system testsuites
|
# - Both temporary tools and final system testsuites
|
||||||
#
|
#
|
||||||
# HLFS and CLFS have no testsuites available in the
|
# HLFS and CLFS have no testsuites available in the
|
||||||
# temporary tools phase
|
# temporary tools phase
|
||||||
|
|
||||||
# You will be prompted also about the "flavour" of the
|
# You will be prompted also about the "flavour" of the
|
||||||
# testsuites run:
|
# testsuites run:
|
||||||
#
|
#
|
||||||
|
@ -771,19 +770,38 @@ depends !BOOK_BLFS
|
||||||
# - Abort the build at the first test suite failure
|
# - Abort the build at the first test suite failure
|
||||||
#
|
#
|
||||||
|
|
||||||
|
menu "Test settings"
|
||||||
|
depends CONFIG_TESTS
|
||||||
choice
|
choice
|
||||||
prompt "Tests level"
|
prompt "Tests level"
|
||||||
depends CONFIG_TESTS
|
|
||||||
default TST_1
|
default TST_1
|
||||||
|
|
||||||
config TST_1
|
config TST_1
|
||||||
bool "Only final critical testsuites" if !BOOK_CLFS2 && !BOOK_CLFS3
|
bool "Only final system critical testsuites"
|
||||||
|
help
|
||||||
|
#-- Critical tests:
|
||||||
|
# Only Glibc, Binutils, GMP, MPFR, MPC and GCC
|
||||||
|
# testsuites for final system
|
||||||
|
|
||||||
config TST_2
|
config TST_2
|
||||||
bool "All final system testsuites"
|
bool "All final system testsuites"
|
||||||
|
|
||||||
config TST_3
|
config TST_3
|
||||||
bool "Both temporary tools and final system testsuites" if !BOOK_HLFS && !BOOK_CLFS
|
bool "All testsuites" if !BOOK_HLFS && !BOOK_CLFS
|
||||||
|
help
|
||||||
|
#-- All tests:
|
||||||
|
# Runs all the testsuites for both temporary tools
|
||||||
|
# and final system
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "Flavour"
|
||||||
|
|
||||||
|
config NO_BOMB
|
||||||
|
bool "Don't stop on test failures"
|
||||||
|
|
||||||
|
config BOMB
|
||||||
|
bool "Abort the build on the first test failure"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config TEST
|
config TEST
|
||||||
|
@ -793,23 +811,13 @@ depends !BOOK_BLFS
|
||||||
default "2" if TST_2
|
default "2" if TST_2
|
||||||
default "3" if TST_3
|
default "3" if TST_3
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Flavour"
|
|
||||||
depends CONFIG_TESTS
|
|
||||||
|
|
||||||
config NO_BOMB
|
|
||||||
bool "Don't stop on testsuite failures"
|
|
||||||
|
|
||||||
config BOMB
|
|
||||||
bool "Abort the build on the first testsuite failure"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config BOMB_TEST
|
config BOMB_TEST
|
||||||
bool
|
bool
|
||||||
default n if NO_BOMB
|
default n if NO_BOMB
|
||||||
default y if BOMB
|
default y if BOMB
|
||||||
|
|
||||||
#--- End Test Suites
|
#--- End Test Suites
|
||||||
|
endmenu # test settings
|
||||||
|
|
||||||
#--- Package Management
|
#--- Package Management
|
||||||
config PKGMNGT
|
config PKGMNGT
|
||||||
|
@ -819,10 +827,18 @@ depends !BOOK_BLFS
|
||||||
help
|
help
|
||||||
#-- Use package management
|
#-- Use package management
|
||||||
#
|
#
|
||||||
# If set, the packages in the final phase are built
|
# If set, you'll have to choose between
|
||||||
# in a separate directory, PKG_DEST.
|
# two package management styles:
|
||||||
# You should provide a bash function for packing
|
# - Build and install:
|
||||||
# and installing the package.
|
# the packages in the final phase are built
|
||||||
|
# in a separate directory, PKG_DEST.
|
||||||
|
# You should provide a bash function for
|
||||||
|
# packaing and installing the package.
|
||||||
|
# - Preload a library before install:
|
||||||
|
# Run the install instructions inside a
|
||||||
|
# wrapper command, which monitors the
|
||||||
|
# installed files.
|
||||||
|
#
|
||||||
# Also, you have to provide the instructions
|
# Also, you have to provide the instructions
|
||||||
# to build the package manager during the
|
# to build the package manager during the
|
||||||
# temporary tools phase, in the form of a
|
# temporary tools phase, in the form of a
|
||||||
|
@ -830,7 +846,22 @@ depends !BOOK_BLFS
|
||||||
# sect1. See README.PACKAGE_MANAGEMENT
|
# sect1. See README.PACKAGE_MANAGEMENT
|
||||||
#
|
#
|
||||||
# For now, this only works with LFS
|
# For now, this only works with LFS
|
||||||
|
choice
|
||||||
|
depends PKGMNGT
|
||||||
|
prompt "Package management style"
|
||||||
|
default PKG_PACK
|
||||||
|
|
||||||
|
config PKG_PACK
|
||||||
|
bool "Build and pack (pacman or dpkg style)"
|
||||||
|
|
||||||
|
config LIB_LOAD
|
||||||
|
bool "Preload a library before installing (porg style)"
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config WRAP_INSTALL
|
||||||
|
bool
|
||||||
|
default y if LIB_LOAD
|
||||||
|
default n if PKG_PACK
|
||||||
#--- End package management
|
#--- End package management
|
||||||
|
|
||||||
#--- Installed files logs
|
#--- Installed files logs
|
||||||
|
@ -843,13 +874,31 @@ depends !BOOK_BLFS
|
||||||
|
|
||||||
#--- End Installed files logs
|
#--- End Installed files logs
|
||||||
|
|
||||||
|
config STRIP
|
||||||
|
bool "Strip Installed Binaries/Libraries"
|
||||||
|
default n
|
||||||
|
depends on !BOOK_CLFS3
|
||||||
|
|
||||||
|
config NO_PROGRESS_BAR
|
||||||
|
bool "DO NOT use/display progress_bar "
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
#-- Do not use the progress bar routine. On slower machines
|
||||||
|
# this function consumes precious CPU cycles.
|
||||||
|
|
||||||
|
#--- End Build Settings
|
||||||
|
endmenu
|
||||||
|
|
||||||
|
menu "System configuration
|
||||||
|
depends !BOOK_BLFS
|
||||||
|
|
||||||
#--- FSTAB
|
#--- FSTAB
|
||||||
config HAVE_FSTAB
|
config HAVE_FSTAB
|
||||||
bool "Use a custom fstab file"
|
bool "Use a custom fstab file"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
#-- Select this if you have an fstab file with entries
|
#-- Select this if you have an fstab file with entries
|
||||||
# for the target system
|
# for the target system
|
||||||
|
|
||||||
config FSTAB
|
config FSTAB
|
||||||
string "Fstab file (optional)"
|
string "Fstab file (optional)"
|
||||||
|
@ -880,11 +929,6 @@ depends !BOOK_BLFS
|
||||||
# and renamed 'kernel-config'
|
# and renamed 'kernel-config'
|
||||||
#--- End Kernel
|
#--- End Kernel
|
||||||
|
|
||||||
config STRIP
|
|
||||||
bool "Strip Installed Binaries/Libraries"
|
|
||||||
default n
|
|
||||||
depends on !BOOK_CLFS3
|
|
||||||
|
|
||||||
config VIMLANG
|
config VIMLANG
|
||||||
bool "Install vim-lang package"
|
bool "Install vim-lang package"
|
||||||
default n
|
default n
|
||||||
|
@ -894,13 +938,6 @@ depends !BOOK_BLFS
|
||||||
# NOTE: This option is obsolete with the 7.3 release of Vim
|
# NOTE: This option is obsolete with the 7.3 release of Vim
|
||||||
# which is included in all recent releases of LFS.
|
# which is included in all recent releases of LFS.
|
||||||
|
|
||||||
config NO_PROGRESS_BAR
|
|
||||||
bool "DO NOT use/display progress_bar "
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
#-- Do not use the progress bar routine. On slower machines
|
|
||||||
# this function consumes precious CPU cycles.
|
|
||||||
|
|
||||||
config TIMEZONE
|
config TIMEZONE
|
||||||
string "TimeZone"
|
string "TimeZone"
|
||||||
default "GMT"
|
default "GMT"
|
||||||
|
@ -946,8 +983,53 @@ depends !BOOK_BLFS
|
||||||
default "A4" if PAGE_A4
|
default "A4" if PAGE_A4
|
||||||
#--- End Groff page
|
#--- End Groff page
|
||||||
|
|
||||||
#--- End Build Settings
|
config HOSTNAME
|
||||||
endmenu
|
string "Hostname"
|
||||||
|
default "**EDITME**"
|
||||||
|
|
||||||
|
menu "Network configuration"
|
||||||
|
config INTERFACE
|
||||||
|
string "netword card name"
|
||||||
|
default "eth0"
|
||||||
|
config IP_ADDR
|
||||||
|
string "Static IP address"
|
||||||
|
default "10.0.2.9"
|
||||||
|
config GATEWAY
|
||||||
|
string "Gateway"
|
||||||
|
default "10.0.2.2"
|
||||||
|
config PREFIX
|
||||||
|
string "Subnet prefix"
|
||||||
|
default "24"
|
||||||
|
config BROADCAST
|
||||||
|
string "Broadcast address"
|
||||||
|
default "10.0.2.255"
|
||||||
|
config DOMAIN
|
||||||
|
string "Domain name"
|
||||||
|
default "lfs.org"
|
||||||
|
config DNS1
|
||||||
|
string "Primary Name server"
|
||||||
|
default "10.0.2.3"
|
||||||
|
config DNS2
|
||||||
|
string "Secondary Name server"
|
||||||
|
default "8.8.8.8"
|
||||||
|
endmenu # Network configuration
|
||||||
|
|
||||||
|
menu "Console configuration"
|
||||||
|
config FONT
|
||||||
|
string "Console font"
|
||||||
|
default "lat0-16"
|
||||||
|
config FONTMAP
|
||||||
|
string "Font map (-m option to setfont)"
|
||||||
|
default "8859-1"
|
||||||
|
config UNICODE
|
||||||
|
bool "Unicode mode"
|
||||||
|
default y
|
||||||
|
config KEYMAP
|
||||||
|
string "Keymap name"
|
||||||
|
default "us"
|
||||||
|
endmenu # Console configuration
|
||||||
|
|
||||||
|
endmenu #--- System configuration
|
||||||
|
|
||||||
menu "Advanced Features"
|
menu "Advanced Features"
|
||||||
depends !BOOK_BLFS
|
depends !BOOK_BLFS
|
||||||
|
|
381
LFS/lfs.xsl
381
LFS/lfs.xsl
|
@ -8,6 +8,8 @@
|
||||||
extension-element-prefixes="exsl"
|
extension-element-prefixes="exsl"
|
||||||
version="1.0">
|
version="1.0">
|
||||||
|
|
||||||
|
<!-- Parameters -->
|
||||||
|
|
||||||
<!-- which revision attribute to include: can only be sysv or systemd,
|
<!-- which revision attribute to include: can only be sysv or systemd,
|
||||||
but we leave checking to the caller-->
|
but we leave checking to the caller-->
|
||||||
<xsl:param name="revision" select="'sysv'"/>
|
<xsl:param name="revision" select="'sysv'"/>
|
||||||
|
@ -16,11 +18,18 @@
|
||||||
n = no, original behavior
|
n = no, original behavior
|
||||||
y = yes, add PKG_DEST to scripts in install commands of chapter06-08
|
y = yes, add PKG_DEST to scripts in install commands of chapter06-08
|
||||||
-->
|
-->
|
||||||
<xsl:param name="pkgmngt" select="n"/>
|
<xsl:param name="pkgmngt" select="'n'"/>
|
||||||
|
|
||||||
|
<!-- Package management with "porg style" ?
|
||||||
|
n = no, same as pkgmngt description above
|
||||||
|
y = yes, wrap install commands of chapter06-08 into a bash function.
|
||||||
|
note that pkgmngt must be 'y' in this case
|
||||||
|
-->
|
||||||
|
<xsl:param name="wrap-install" select='"n"'/>
|
||||||
|
|
||||||
<!-- Run test suites?
|
<!-- Run test suites?
|
||||||
0 = none
|
0 = none
|
||||||
1 = only chapter06 Glibc, GCC and Binutils testsuites
|
1 = only chapter06 critical testsuites
|
||||||
2 = all chapter06 testsuites
|
2 = all chapter06 testsuites
|
||||||
3 = all chapter05 and chapter06 testsuites
|
3 = all chapter05 and chapter06 testsuites
|
||||||
-->
|
-->
|
||||||
|
@ -30,23 +39,39 @@
|
||||||
n = no, I want to build the full system and review the logs
|
n = no, I want to build the full system and review the logs
|
||||||
y = yes, bomb at the first test suite failure to can review the build dir
|
y = yes, bomb at the first test suite failure to can review the build dir
|
||||||
-->
|
-->
|
||||||
<xsl:param name="bomb-testsuite" select="n"/>
|
<xsl:param name="bomb-testsuite" select="'n'"/>
|
||||||
|
|
||||||
<!-- Install vim-lang package? OBSOLETE should always be 'n'-->
|
<!-- Install vim-lang package? OBSOLETE should always be 'n'-->
|
||||||
<xsl:param name="vim-lang" select="n"/>
|
<xsl:param name="vim-lang" select="'n'"/>
|
||||||
|
|
||||||
<!-- Time zone -->
|
<!-- Time zone -->
|
||||||
<xsl:param name="timezone" select="GMT"/>
|
<xsl:param name="timezone" select="'GMT'"/>
|
||||||
|
|
||||||
<!-- Page size -->
|
<!-- Page size -->
|
||||||
<xsl:param name="page" select="letter"/>
|
<xsl:param name="page" select="'letter'"/>
|
||||||
|
|
||||||
<!-- Locale settings -->
|
<!-- Locale settings -->
|
||||||
<xsl:param name="lang" select="C"/>
|
<xsl:param name="lang" select="'C'"/>
|
||||||
|
|
||||||
<!-- Install the whole set of locales -->
|
<!-- Install the whole set of locales -->
|
||||||
<xsl:param name='full-locale' select='n'/>
|
<xsl:param name='full-locale' select='"n"'/>
|
||||||
|
|
||||||
|
<!-- Hostname -->
|
||||||
|
<xsl:param name='hostname' select='"HOSTNAME"'/>
|
||||||
|
|
||||||
|
<!-- Network parameters: interface, ip, gateway, prefix, broadcast, domain
|
||||||
|
and nameservers -->
|
||||||
|
<xsl:param name='interface' select="'eth0'"/>
|
||||||
|
<xsl:param name='ip' select='"10.0.2.9"'/>
|
||||||
|
<xsl:param name='gateway' select='"10.0.2.2"'/>
|
||||||
|
<xsl:param name='prefix' select='24'/>
|
||||||
|
<xsl:param name='broadcast' select='"10.0.2.255"'/>
|
||||||
|
<xsl:param name='domain' select='"lfs.org"'/>
|
||||||
|
<xsl:param name='nameserver1' select='"10.0.2.3"'/>
|
||||||
|
<xsl:param name='nameserver2' select='"8.8.8.8"'/>
|
||||||
|
|
||||||
|
<!-- End parameters -->
|
||||||
|
|
||||||
<xsl:template match="/">
|
<xsl:template match="/">
|
||||||
<xsl:apply-templates select="//sect1[not(@revision) or
|
<xsl:apply-templates select="//sect1[not(@revision) or
|
||||||
@revision=$revision]"/>
|
@revision=$revision]"/>
|
||||||
|
@ -176,7 +201,13 @@
|
||||||
descendant::screen[not(@role) or
|
descendant::screen[not(@role) or
|
||||||
@role != 'nodump']/userinput[
|
@role != 'nodump']/userinput[
|
||||||
@remap='install']">
|
@remap='install']">
|
||||||
<xsl:text>mkdir -pv $PKG_DEST/{boot,etc,lib,bin,sbin}
|
<xsl:choose>
|
||||||
|
<xsl:when test="$wrap-install='y'">
|
||||||
|
<xsl:text>wrapInstall '
|
||||||
|
</xsl:text>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:text>mkdir -pv $PKG_DEST/{boot,etc,lib,bin,sbin}
|
||||||
mkdir -pv $PKG_DEST/usr/{lib,bin,sbin,include}
|
mkdir -pv $PKG_DEST/usr/{lib,bin,sbin,include}
|
||||||
mkdir -pv $PKG_DEST/usr/share/{doc,info,man}
|
mkdir -pv $PKG_DEST/usr/share/{doc,info,man}
|
||||||
mkdir -pv $PKG_DEST/usr/share/man/man{1..8}
|
mkdir -pv $PKG_DEST/usr/share/man/man{1..8}
|
||||||
|
@ -185,10 +216,13 @@ case $(uname -m) in
|
||||||
x86_64) ln -sv lib $PKG_DEST/lib64 && ln -sv lib $PKG_DEST/usr/lib64 ;;
|
x86_64) ln -sv lib $PKG_DEST/lib64 && ln -sv lib $PKG_DEST/usr/lib64 ;;
|
||||||
esac
|
esac
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
<xsl:if test="../@id = 'ch-system-glibc' and
|
<xsl:if test="../@id = 'ch-system-glibc' and
|
||||||
@role='installation' and
|
@role='installation' and
|
||||||
$pkgmngt = 'y'">
|
$pkgmngt = 'y' and
|
||||||
|
$wrap-install = 'n'">
|
||||||
<xsl:text>mkdir -pv $PKG_DEST/usr/include/{rpc,rpcsvc}
|
<xsl:text>mkdir -pv $PKG_DEST/usr/include/{rpc,rpcsvc}
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
|
@ -202,27 +236,54 @@ esac
|
||||||
descendant::screen[not(@role) or
|
descendant::screen[not(@role) or
|
||||||
@role != 'nodump']/userinput[
|
@role != 'nodump']/userinput[
|
||||||
@remap='install']">
|
@remap='install']">
|
||||||
<xsl:if test="../@id = 'ch-system-man-pages'">
|
<xsl:choose>
|
||||||
|
<xsl:when test="$wrap-install='y'">
|
||||||
|
<xsl:if test="../@id = 'ch-system-man-pages'">
|
||||||
<!-- these files are provided by the shadow package -->
|
<!-- these files are provided by the shadow package -->
|
||||||
<xsl:text>rm -fv $PKG_DEST/usr/share/man/{man3/getspnam.3,man5/passwd.5}
|
<xsl:text>rm -fv /usr/share/man/{man3/getspnam.3,man5/passwd.5}
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
<!-- Attr man/man2 pages are already installed by man-pages. As of
|
<!-- Attr man/man2 pages are already installed by man-pages. As of
|
||||||
March 2013, they are the same pages.
|
March 2013, they are the same pages.
|
||||||
November 2015: now they are more accurate
|
November 2015: now they are more accurate
|
||||||
in man-pages, and the man5 section is also in man-pages... -->
|
in man-pages, and the man5 section is also in man-pages... -->
|
||||||
<xsl:if test="../@id = 'ch-system-attr'">
|
<xsl:if test="../@id = 'ch-system-attr'">
|
||||||
<xsl:text>rm -fv $PKG_DEST/usr/share/man/man2/*
|
<xsl:text>rm -fv /usr/share/man/man2/*
|
||||||
|
rm -fv /usr/share/man/man5/*
|
||||||
|
</xsl:text>
|
||||||
|
</xsl:if>
|
||||||
|
<!-- nologin is installed by util-linux. remove it from shadow -->
|
||||||
|
<xsl:if test="../@id = 'ch-system-shadow'">
|
||||||
|
<xsl:text>rm -fv /usr/share/man/man8/nologin.8
|
||||||
|
rm -fv /sbin/nologin
|
||||||
|
</xsl:text>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:text>'
|
||||||
|
packInstall
|
||||||
|
</xsl:text>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:if test="../@id = 'ch-system-man-pages'">
|
||||||
|
<!-- these files are provided by the shadow package -->
|
||||||
|
<xsl:text>rm -fv $PKG_DEST/usr/share/man/{man3/getspnam.3,man5/passwd.5}
|
||||||
|
</xsl:text>
|
||||||
|
</xsl:if>
|
||||||
|
<!-- Attr man/man2 pages are already installed by man-pages. As of
|
||||||
|
March 2013, they are the same pages.
|
||||||
|
November 2015: now they are more accurate
|
||||||
|
in man-pages, and the man5 section is also in man-pages... -->
|
||||||
|
<xsl:if test="../@id = 'ch-system-attr'">
|
||||||
|
<xsl:text>rm -fv $PKG_DEST/usr/share/man/man2/*
|
||||||
rm -fv $PKG_DEST/usr/share/man/man5/*
|
rm -fv $PKG_DEST/usr/share/man/man5/*
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
<!-- nologin is installed by util-linux. remove it from shadow -->
|
<!-- nologin is installed by util-linux. remove it from shadow -->
|
||||||
<xsl:if test="../@id = 'ch-system-shadow'">
|
<xsl:if test="../@id = 'ch-system-shadow'">
|
||||||
<xsl:text>rm -fv $PKG_DEST/usr/share/man/man8/nologin.8
|
<xsl:text>rm -fv $PKG_DEST/usr/share/man/man8/nologin.8
|
||||||
rm -fv $PKG_DEST/sbin/nologin
|
rm -fv $PKG_DEST/sbin/nologin
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
<xsl:text>rm -fv $PKG_DEST/{,usr/}lib64
|
<xsl:text>rm -fv $PKG_DEST/{,usr/}lib64
|
||||||
rm -fv $PKG_DEST/usr/{man,doc,info}
|
rm -fv $PKG_DEST/usr/{man,doc,info}
|
||||||
for dir in $PKG_DEST/usr/share/man/man{1..8}; do
|
for dir in $PKG_DEST/usr/share/man/man{1..8}; do
|
||||||
[[ -z $(ls $dir) ]] && rmdir -v $dir
|
[[ -z $(ls $dir) ]] && rmdir -v $dir
|
||||||
|
@ -239,6 +300,8 @@ done
|
||||||
packInstall
|
packInstall
|
||||||
rm -rf $PKG_DEST
|
rm -rf $PKG_DEST
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
<xsl:if test="$testsuite='3' and
|
<xsl:if test="$testsuite='3' and
|
||||||
../@id='ch-tools-glibc' and
|
../@id='ch-tools-glibc' and
|
||||||
|
@ -309,7 +372,7 @@ cd $PKGDIR
|
||||||
mode="pkgmngt"/>
|
mode="pkgmngt"/>
|
||||||
<xsl:if test="$dirname = 'chapter06'">
|
<xsl:if test="$dirname = 'chapter06'">
|
||||||
<xsl:text>packInstall
|
<xsl:text>packInstall
|
||||||
rm -rf $PKG_DEST
|
rm -rf "$PKG_DEST"
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
<xsl:apply-templates
|
<xsl:apply-templates
|
||||||
|
@ -452,7 +515,26 @@ exit
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
</xsl:when>
|
</xsl:when>
|
||||||
<xsl:otherwise><!--pkgmngt = 'y'-->
|
<xsl:when test="$wrap-install='y'">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="./literal">
|
||||||
|
<xsl:call-template name="output-wrap">
|
||||||
|
<xsl:with-param name="commands" select="text()[1]"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:apply-templates select="literal"/>
|
||||||
|
<xsl:call-template name="output-wrap">
|
||||||
|
<xsl:with-param name="commands" select="text()[2]"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:call-template name="output-wrap">
|
||||||
|
<xsl:with-param name="commands" select="string()"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<xsl:text>
</xsl:text>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise><!--pkgmngt = 'y' and wrap-install='n'-->
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
<xsl:when test="./literal">
|
<xsl:when test="./literal">
|
||||||
<xsl:call-template name="outputpkgdest">
|
<xsl:call-template name="outputpkgdest">
|
||||||
|
@ -476,7 +558,7 @@ exit
|
||||||
tzdata. -->
|
tzdata. -->
|
||||||
<xsl:when test="contains(string(),'tzdata') and $pkgmngt='y'">
|
<xsl:when test="contains(string(),'tzdata') and $pkgmngt='y'">
|
||||||
<xsl:text>
|
<xsl:text>
|
||||||
OLD_PKG_DEST=$PKG_DEST
|
OLD_PKG_DEST="$PKG_DEST"
|
||||||
OLD_PKGDIR=$PKGDIR
|
OLD_PKGDIR=$PKGDIR
|
||||||
PKG_DEST=$(dirname $OLD_PKG_DEST)/001-tzdata
|
PKG_DEST=$(dirname $OLD_PKG_DEST)/001-tzdata
|
||||||
PKGDIR=$(dirname $PKGDIR)/tzdata-</xsl:text>
|
PKGDIR=$(dirname $PKGDIR)/tzdata-</xsl:text>
|
||||||
|
@ -485,12 +567,28 @@ PKGDIR=$(dirname $PKGDIR)/tzdata-</xsl:text>
|
||||||
'.tar')"/>
|
'.tar')"/>
|
||||||
<xsl:text>
|
<xsl:text>
|
||||||
</xsl:text>
|
</xsl:text>
|
||||||
<xsl:copy-of select="substring-before(string(),'ZONEINFO=')"/>
|
<xsl:choose>
|
||||||
<xsl:text>ZONEINFO=$PKG_DEST</xsl:text>
|
<xsl:when test="$wrap-install='n'">
|
||||||
<xsl:copy-of select="substring-after(string(),'ZONEINFO=')"/>
|
<xsl:copy-of select="substring-before(string(),'ZONEINFO=')"/>
|
||||||
<xsl:text>
|
<xsl:text>ZONEINFO=$PKG_DEST</xsl:text>
|
||||||
|
<xsl:copy-of select="substring-after(string(),'ZONEINFO=')"/>
|
||||||
|
<xsl:text>
|
||||||
packInstall
|
packInstall
|
||||||
rm -rf $PKG_DEST
|
rm -rf $PKG_DEST
|
||||||
|
</xsl:text>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise><!-- wrap-install='y' -->
|
||||||
|
<xsl:copy-of select="substring-before(string(),'ZONEINFO=')"/>
|
||||||
|
<xsl:text>
|
||||||
|
wrapInstall '
|
||||||
|
ZONEINFO=</xsl:text>
|
||||||
|
<xsl:copy-of select="substring-after(string(),'ZONEINFO=')"/>
|
||||||
|
<xsl:text>'
|
||||||
|
packInstall
|
||||||
|
</xsl:text>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
<xsl:text>
|
||||||
PKG_DEST=$OLD_PKG_DEST
|
PKG_DEST=$OLD_PKG_DEST
|
||||||
unset OLD_PKG_DEST
|
unset OLD_PKG_DEST
|
||||||
PKGDIR=$OLD_PKGDIR
|
PKGDIR=$OLD_PKGDIR
|
||||||
|
@ -517,6 +615,34 @@ unset OLD_PKGDIR
|
||||||
<xsl:when test="contains(string(.),'<ll>_<CC>')">
|
<xsl:when test="contains(string(.),'<ll>_<CC>')">
|
||||||
<xsl:value-of select="$lang"/>
|
<xsl:value-of select="$lang"/>
|
||||||
</xsl:when>
|
</xsl:when>
|
||||||
|
<xsl:when test="contains(string(.),'Domain')">
|
||||||
|
<xsl:value-of select="$domain"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains(string(.),'primary')">
|
||||||
|
<xsl:value-of select="$nameserver1"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains(string(.),'secondary')">
|
||||||
|
<xsl:value-of select="$nameserver2"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains(string(.),'192.168.1.1')">
|
||||||
|
<xsl:value-of select="$ip"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains(string(.),'192.168.0.2')">
|
||||||
|
<xsl:value-of select="$ip"/>
|
||||||
|
</xsl:when>
|
||||||
|
<!-- Only adapted to LFS-20170310 and later -->
|
||||||
|
<xsl:when test="contains(string(.),'HOSTNAME')">
|
||||||
|
<xsl:value-of select="$hostname"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains(string(.),'FQDN')">
|
||||||
|
<xsl:value-of select="$hostname"/>
|
||||||
|
<xsl:text>.</xsl:text>
|
||||||
|
<xsl:value-of select="$domain"/>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains(string(.),'alias')"/>
|
||||||
|
<xsl:when test="contains(string(.),'<lfs>')">
|
||||||
|
<xsl:value-of select="$hostname"/>
|
||||||
|
</xsl:when>
|
||||||
<xsl:otherwise>
|
<xsl:otherwise>
|
||||||
<xsl:text>**EDITME</xsl:text>
|
<xsl:text>**EDITME</xsl:text>
|
||||||
<xsl:apply-templates/>
|
<xsl:apply-templates/>
|
||||||
|
@ -525,6 +651,185 @@ unset OLD_PKGDIR
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="literal">
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="contains(string(),'ONBOOT')">
|
||||||
|
<xsl:call-template name="outputnet">
|
||||||
|
<xsl:with-param name="netstring" select="string()"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains(string(),'[Match]')">
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring" select="string()"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:apply-templates/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="outputnet">
|
||||||
|
<xsl:param name="netstring" select="''"/>
|
||||||
|
<!-- We suppose that book example has the following values:
|
||||||
|
- interface: eth0
|
||||||
|
- ip: 192.168.1.2
|
||||||
|
- gateway: 192.168.1.1
|
||||||
|
- prefix: 24
|
||||||
|
- broadcast: 192.168.1.255
|
||||||
|
Change below if book changes -->
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="contains($netstring,'eth0')">
|
||||||
|
<xsl:call-template name="outputnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-before($netstring,'eth0')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:value-of select="$interface"/>
|
||||||
|
<xsl:call-template name="outputnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-after($netstring,'eth0')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains($netstring,'192.168.1.1')">
|
||||||
|
<xsl:call-template name="outputnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-before($netstring,'192.168.1.1')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:value-of select="$gateway"/>
|
||||||
|
<xsl:call-template name="outputnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-after($netstring,'192.168.1.1')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<!-- must test this before the following, because 192.168.1.255 contains
|
||||||
|
192.168.1.2! -->
|
||||||
|
<xsl:when test="contains($netstring,'192.168.1.255')">
|
||||||
|
<xsl:call-template name="outputnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-before($netstring,'192.168.1.255')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:value-of select="$broadcast"/>
|
||||||
|
<xsl:call-template name="outputnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-after($netstring,'192.168.1.255')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains($netstring,'192.168.1.2')">
|
||||||
|
<xsl:call-template name="outputnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-before($netstring,'192.168.1.2')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:value-of select="$ip"/>
|
||||||
|
<xsl:call-template name="outputnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-after($netstring,'192.168.1.2')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains($netstring,'24')">
|
||||||
|
<xsl:call-template name="outputnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-before($netstring,'24')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:value-of select="$prefix"/>
|
||||||
|
<xsl:call-template name="outputnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-after($netstring,'24')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="$netstring"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template name="outputsysdnet">
|
||||||
|
<xsl:param name="netstring" select="''"/>
|
||||||
|
<!-- We suppose that book example has the following values:
|
||||||
|
- interface: eth0
|
||||||
|
- ip: 192.168.0.2
|
||||||
|
- gateway: 192.168.0.1
|
||||||
|
- prefix: 24
|
||||||
|
- DNS: 192.168.0.1
|
||||||
|
- Domain: <Your Domain Name>
|
||||||
|
and gateway comes before DNS. Change below if book changes -->
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="contains($netstring,'eth0')">
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-before($netstring,'eth0')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:value-of select="$interface"/>
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-after($netstring,'eth0')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains($netstring,'192.168.0.1') and
|
||||||
|
contains($netstring,'Gateway')">
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-before($netstring,'192.168.0.1')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:value-of select="$gateway"/>
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-after($netstring,'192.168.0.1')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains($netstring,'192.168.0.1') and
|
||||||
|
not(contains($netstring,'Gateway'))">
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-before($netstring,'192.168.0.1')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:value-of select="$nameserver1"/>
|
||||||
|
<xsl:text>
|
||||||
|
DNS=</xsl:text>
|
||||||
|
<xsl:value-of select="$nameserver2"/>
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-after($netstring,'192.168.0.1')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains($netstring,'192.168.0.2')">
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-before($netstring,'192.168.0.2')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:value-of select="$ip"/>
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-after($netstring,'192.168.0.2')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains($netstring,'24')">
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-before($netstring,'24')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:value-of select="$prefix"/>
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-after($netstring,'24')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="contains($netstring,'<Your Domain Name>')">
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-before($netstring,'<Your Domain Name>')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:value-of select="$domain"/>
|
||||||
|
<xsl:call-template name="outputsysdnet">
|
||||||
|
<xsl:with-param name="netstring"
|
||||||
|
select="substring-after($netstring,'<Your Domain Name>')"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="$netstring"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template name="outputpkgdest">
|
<xsl:template name="outputpkgdest">
|
||||||
<xsl:param name="outputstring" select="foo"/>
|
<xsl:param name="outputstring" select="foo"/>
|
||||||
<xsl:choose>
|
<xsl:choose>
|
||||||
|
@ -623,4 +928,26 @@ unset OLD_PKGDIR
|
||||||
</xsl:otherwise>
|
</xsl:otherwise>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:variable name="APOS">'</xsl:variable>
|
||||||
|
<xsl:template name="output-wrap">
|
||||||
|
<xsl:param name="commands" select="''"/>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="contains($commands,string($APOS))">
|
||||||
|
<xsl:call-template name="output-wrap">
|
||||||
|
<xsl:with-param name="commands"
|
||||||
|
select="substring-before($commands,string($APOS))"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
<xsl:text>'\''</xsl:text>
|
||||||
|
<xsl:call-template name="output-wrap">
|
||||||
|
<xsl:with-param name="commands"
|
||||||
|
select="substring-after($commands,string($APOS))"/>
|
||||||
|
</xsl:call-template>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<xsl:value-of select="$commands"/>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
</xsl:stylesheet>
|
</xsl:stylesheet>
|
||||||
|
|
|
@ -6,32 +6,49 @@ $Id$
|
||||||
|
|
||||||
There are several hints discussing package management for LFS, but
|
There are several hints discussing package management for LFS, but
|
||||||
nothing under jhalfs. There used to be a patch for PACO that I cannot
|
nothing under jhalfs. There used to be a patch for PACO that I cannot
|
||||||
find now. This is a modification ("DESTDIR install" automation), which
|
find now. So there was a need for such a tool, and an infrastructure,
|
||||||
allows to use a package manager inside jhalfs. I hope it is flexible enough
|
which allows using a package manager inside jhalfs, has been developped.
|
||||||
to support several package managers, at least among those who use DESTDIR
|
I hope it is flexible enough to support several package managers, at least
|
||||||
install. My initial implementation used dpkg, from Debian, in a very
|
among those who use DESTDIR install and/or LD_PRELOAD during install.
|
||||||
crude way (Debian has a sophisticated package management system, which
|
It has been tested with dpkg from Debian, pacman from Arch Linux,
|
||||||
I have not tried to use here). There is also a port to Pacman from
|
and porg. Sample configuration files are given for those three packages.
|
||||||
Arch Linux (http://www.archlinux.org). I am sorry to say I have (almost)
|
I am sorry to say I have (almost) no experience with rpm, so I cannot
|
||||||
no experience with rpm, so I cannot tell whether it would fit.
|
tell whether it would fit.
|
||||||
|
|
||||||
2. OVERVIEW OF THE SYSTEM:
|
2. OVERVIEW OF THE SYSTEM:
|
||||||
|
|
||||||
Presently, package management is only available for LFS. I plan to
|
For now, package management is only available for LFS. The `porg style'
|
||||||
upgrade BLFS tools, but nothing usable right now. I have not attempted
|
(see below) package management has been ported to BLFS, but not the distro
|
||||||
to adapt this tool for the other flavours of LFS.
|
style one (the book layout makes it rather difficult). I have not attempted
|
||||||
|
to adapt this tool for the other flavours of LFS (TODO).
|
||||||
|
|
||||||
To use package management, you need to create the required files in
|
This tool comes in two flavours:
|
||||||
the pkgmngt directory (see below), and to select "package management" in
|
- for distros package managers (e.g dpkg or pacman), it basically performs
|
||||||
the build settings. Note that this is incompatible with creating an SBU
|
a "DESTDIR install" for all pages in chapter 6, 7 and 8 of the book. The
|
||||||
and usage report.
|
name of the DESTDIR directory is the same as the one of the executed
|
||||||
|
script. The path to this directory is available to the scriplets through
|
||||||
|
the PKG_DEST variable. The details of the DESTDIR part are given below.
|
||||||
|
After the package is installed in $PKG_DEST, a function "packInstall" is
|
||||||
|
called, which is supposed to create a binary package (e.g. make a .deb
|
||||||
|
file), store it to a repository and install it to the system.
|
||||||
|
- for porg style package manager, the install instructions are wrapped
|
||||||
|
between pairs of single quotes ('). This allows passing those instructions
|
||||||
|
to a function ("wrapInstall"), which may itself call porg or another
|
||||||
|
(e.g. fakeroot, not tested) instruction wrapper. Note that if the
|
||||||
|
instructions contain single quote charaters, they are changed to '\'',
|
||||||
|
which pass them literally. At the end of the installation, a function
|
||||||
|
"packInstall" is called, with a slighly different aim compared to the
|
||||||
|
DESTDIR one: it is used to make a tarball of the installed files (e.g.
|
||||||
|
using "porgball") and store them into some repository. But there is no
|
||||||
|
need to install them to the system, since this has already been done.
|
||||||
|
|
||||||
3. DETAILS OF OPERATION:
|
Note that with carefully crafted "packInstall" and "wrapInstall"
|
||||||
|
functions, a combination of the two methods could be used, for example for
|
||||||
|
DESTDIR installs using fakeroot. This is work in progress and not fully
|
||||||
|
implemented yet.
|
||||||
|
|
||||||
|
3. DETAILS:
|
||||||
|
|
||||||
This system performs basically a "DESTDIR install" for all pages
|
|
||||||
in chapter 6, 7 and 8 of the book. The name of the DESTDIR directory is the
|
|
||||||
same as the one of the executed script. The path to this directory is
|
|
||||||
made available to the scriplets through the PKG_DEST variable.
|
|
||||||
The XSL stylesheet used for generating the scriptlets, automatically
|
The XSL stylesheet used for generating the scriptlets, automatically
|
||||||
adds DESTDIR install instructions when "package management" is selected.
|
adds DESTDIR install instructions when "package management" is selected.
|
||||||
Also all the paths beginning with " /" or ">/" (absolute paths) are prepended
|
Also all the paths beginning with " /" or ">/" (absolute paths) are prepended
|
||||||
|
@ -43,6 +60,7 @@ $Id$
|
||||||
creates a reasonable subset of the FHS hierarchy into the destination
|
creates a reasonable subset of the FHS hierarchy into the destination
|
||||||
directory. Empty directories are then removed before packing the
|
directory. Empty directories are then removed before packing the
|
||||||
binary package.
|
binary package.
|
||||||
|
|
||||||
In order to use the package manager, it has to be installed at the end of
|
In order to use the package manager, it has to be installed at the end of
|
||||||
chapter 5 (temporary installation in /tools) and chapter 6 (final install).
|
chapter 5 (temporary installation in /tools) and chapter 6 (final install).
|
||||||
Furthermore, the administrative files and directories have to be created
|
Furthermore, the administrative files and directories have to be created
|
||||||
|
@ -51,20 +69,21 @@ $Id$
|
||||||
the necessary instructions and enough information to download the tarball.
|
the necessary instructions and enough information to download the tarball.
|
||||||
This file should reside in the `pkgmngt' directory and be named
|
This file should reside in the `pkgmngt' directory and be named
|
||||||
`packageManager.xml'. A template named `packageManager.xml.template' is
|
`packageManager.xml'. A template named `packageManager.xml.template' is
|
||||||
provided in the `pkgmngt' subdirectory. There are also two XML files for
|
provided in the `pkgmngt' subdirectory. There are also three XML files for
|
||||||
dpkg and pacman, respectively `packageManager.xml.dpkg' and
|
dpkg, pacman, and porg, respectively `packageManager.xml.dpkg',
|
||||||
`packageManager.xml.pacman', that you can copy to `packageManager.xml'.
|
`packageManager.xml.pacman', and `packageManager.xml.porg', that you can
|
||||||
|
copy to `packageManager.xml' and modify to suit your needs.
|
||||||
They are not updated often, so the versions used can be rather old.
|
They are not updated often, so the versions used can be rather old.
|
||||||
The last thing to do is to tell how to use the package manager. When
|
|
||||||
the binary package is ready, the scriptlets call a shell function named
|
The last thing to do is to tell how to use the package manager. The user
|
||||||
`packInstall', which should pack the binary package and install it on the
|
has to provide two functions, "wrapInstall" and "packInstall", as described
|
||||||
system. Note that nothing has been done to manage configuration files,
|
above. Please note that nothing has been done to manage configuration files,
|
||||||
which are ususally treated specially by package managers: depending on
|
which are ususally treated specially by package managers: depending on
|
||||||
the book layout, it is sometimes possible to create those files afterwards,
|
the book layout, it is sometimes possible to create those files afterwards,
|
||||||
and sometimes not, which means that you have to check them after each
|
and sometimes not, which means that you have to check them after each
|
||||||
upgrade. The user has to write his own `packInstall' function. The shell
|
upgrade. Both functions should be defined in a file named `packInstall.sh',
|
||||||
function should be defined in a file named `packInstall.sh', residing in
|
residing in the `pkgmngt' directory. A template is provided (actually a copy
|
||||||
the `pkgmngt' directory. A template is provided, as well as two example
|
of the file for dpkg), as well as three example scripts for dpkg, pacman,
|
||||||
scripts for dpkg and pacman. Note that, due to the way pacman checks the
|
and porg. Pacman Note: due to the way pacman checks the available space on
|
||||||
available space on disk, the root directory in chroot must be a mount point,
|
disk, the root directory in chroot must be a mount point, otherwise the
|
||||||
otherwise the installation of packages fails.
|
installation of packages fails.
|
||||||
|
|
|
@ -164,19 +164,29 @@ extract_commands() { #
|
||||||
fi
|
fi
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
|
|
||||||
xsltproc --nonet \
|
xsltproc --nonet \
|
||||||
--xinclude \
|
--xinclude \
|
||||||
--stringparam revision $INITSYS \
|
--stringparam revision $INITSYS \
|
||||||
--stringparam testsuite $TEST \
|
--stringparam testsuite $TEST \
|
||||||
--stringparam bomb-testsuite $BOMB_TEST \
|
--stringparam bomb-testsuite $BOMB_TEST \
|
||||||
--stringparam vim-lang $VIMLANG \
|
--stringparam vim-lang $VIMLANG \
|
||||||
--stringparam full-locale $FULL_LOCALE \
|
--stringparam full-locale $FULL_LOCALE \
|
||||||
--stringparam timezone $TIMEZONE \
|
--stringparam timezone $TIMEZONE \
|
||||||
--stringparam page $PAGE \
|
--stringparam page $PAGE \
|
||||||
--stringparam lang $LANG \
|
--stringparam lang $LANG \
|
||||||
--stringparam pkgmngt $PKGMNGT \
|
--stringparam pkgmngt $PKGMNGT \
|
||||||
--output ./${PROGNAME}-commands/ \
|
--stringparam wrap-install $WRAP_INSTALL \
|
||||||
$XSL \
|
--stringparam hostname $HOSTNAME \
|
||||||
|
--stringparam interface $INTERFACE \
|
||||||
|
--stringparam ip $IP_ADDR \
|
||||||
|
--stringparam gateway $GATEWAY \
|
||||||
|
--stringparam prefix $PREFIX \
|
||||||
|
--stringparam broadcast $BROADCAST \
|
||||||
|
--stringparam domain $DOMAIN \
|
||||||
|
--stringparam nameserver1 $DNS1 \
|
||||||
|
--stringparam nameserver2 $DNS2 \
|
||||||
|
--output ./${PROGNAME}-commands/ \
|
||||||
|
$XSL \
|
||||||
$BOOK/index.xml >> $LOGDIR/$LOG 2>&1
|
$BOOK/index.xml >> $LOGDIR/$LOG 2>&1
|
||||||
;;
|
;;
|
||||||
*) echo -n " ${L_arrow}${PROGNAME}${R_arrow} book invalid, terminate build... "
|
*) echo -n " ${L_arrow}${PROGNAME}${R_arrow} book invalid, terminate build... "
|
||||||
|
|
|
@ -12,6 +12,11 @@ cp -r BLFS/* ${BUILDDIR}${BLFS_ROOT}
|
||||||
cp -r menu ${BUILDDIR}${BLFS_ROOT}
|
cp -r menu ${BUILDDIR}${BLFS_ROOT}
|
||||||
cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
|
cp $COMMON_DIR/progress_bar.sh ${BUILDDIR}${BLFS_ROOT}
|
||||||
cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
|
cp README.BLFS ${BUILDDIR}${BLFS_ROOT}
|
||||||
|
if [ "$WRAP_INSTALL" = y ]; then
|
||||||
|
sed -e 's/PKGDIR/UNPACKDIR/' \
|
||||||
|
-e 's/PKG_DEST/PKG_DIR/' \
|
||||||
|
$PKGMNGTDIR/packInstall.sh > ${BUILDDIR}${BLFS_ROOT}/packInstall.sh
|
||||||
|
fi
|
||||||
|
|
||||||
# Clean-up
|
# Clean-up
|
||||||
make -C ${BUILDDIR}${BLFS_ROOT}/menu clean
|
make -C ${BUILDDIR}${BLFS_ROOT}/menu clean
|
||||||
|
@ -115,6 +120,7 @@ $LINE_SUDO
|
||||||
MAIL_SERVER=sendmail
|
MAIL_SERVER=sendmail
|
||||||
optDependency=2
|
optDependency=2
|
||||||
SUDO=n
|
SUDO=n
|
||||||
|
WRAP_INSTALL=$WRAP_INSTALL
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Generates the scripts for the blfs tools dependencies (in ./scripts)
|
# Generates the scripts for the blfs tools dependencies (in ./scripts)
|
||||||
|
|
|
@ -41,14 +41,17 @@ inline_doc
|
||||||
local -r CLFS3_book="$BOOK_common $BOOK_clfsX PLATFORM MIPS_LEVEL"
|
local -r CLFS3_book="$BOOK_common $BOOK_clfsX PLATFORM MIPS_LEVEL"
|
||||||
|
|
||||||
# Build Settings by book
|
# Build Settings by book
|
||||||
local -r LFS_build="$BUILD_chroot VIMLANG $BUILD_common PKGMNGT FULL_LOCALE"
|
local -r LFS_build="$BUILD_chroot VIMLANG $BUILD_common PKGMNGT FULL_LOCALE WRAP_INSTALL"
|
||||||
local -r HLFS_build="$BUILD_chroot $BUILD_common"
|
local -r HLFS_build="$BUILD_chroot $BUILD_common"
|
||||||
local -r CLFS_build="$BUILD_chroot VIMLANG $BUILD_common"
|
local -r CLFS_build="$BUILD_chroot VIMLANG $BUILD_common"
|
||||||
local -r CLFS2_build="STRIP VIMLANG $BUILD_common"
|
local -r CLFS2_build="STRIP VIMLANG $BUILD_common"
|
||||||
local -r CLFS3_build=" $BUILD_common"
|
local -r CLFS3_build=" $BUILD_common"
|
||||||
|
|
||||||
|
# System Settings by book (only LFS for now)
|
||||||
|
local -r LFS_system="HOSTNAME INTERFACE IP_ADDR GATEWAY PREFIX BROADCAST DOMAIN DNS1 DNS2 FONT CONSOLE_MAP UNICODE KEYMAP"
|
||||||
|
|
||||||
# Full list of books settings
|
# Full list of books settings
|
||||||
local -r lfs_PARAM_LIST="$LFS_book $GENERAL_common $LFS_build $ADVANCED_chroot $ADVANCED_common"
|
local -r lfs_PARAM_LIST="$LFS_book $GENERAL_common $LFS_build $LFS_system $ADVANCED_chroot $ADVANCED_common"
|
||||||
local -r hlfs_PARAM_LIST="$HLFS_book $GENERAL_common $HLFS_build $ADVANCED_chroot $ADVANCED_common"
|
local -r hlfs_PARAM_LIST="$HLFS_book $GENERAL_common $HLFS_build $ADVANCED_chroot $ADVANCED_common"
|
||||||
local -r clfs_PARAM_LIST="$CLFS_book $GENERAL_common $CLFS_build $ADVANCED_chroot $ADVANCED_common"
|
local -r clfs_PARAM_LIST="$CLFS_book $GENERAL_common $CLFS_build $ADVANCED_chroot $ADVANCED_common"
|
||||||
local -r clfs2_PARAM_LIST="$CLFS2_book $GENERAL_common $CLFS2_build $ADVANCED_common"
|
local -r clfs2_PARAM_LIST="$CLFS2_book $GENERAL_common $CLFS2_build $ADVANCED_common"
|
||||||
|
@ -193,6 +196,11 @@ inline_doc
|
||||||
echo
|
echo
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
# Treatment of HOSTNAME
|
||||||
|
HOSTNAME) echo -e "`eval echo $PARAM_VALS`"
|
||||||
|
[[ "${!config_param}" = "**EDIT ME**" ]] && write_error_and_die
|
||||||
|
;;
|
||||||
|
|
||||||
# Case of PKGMNGT: two files, packageManager.xml and packInstall.sh
|
# Case of PKGMNGT: two files, packageManager.xml and packInstall.sh
|
||||||
# must exist in $PKGMNGTDIR if PKGMNGT='y':
|
# must exist in $PKGMNGTDIR if PKGMNGT='y':
|
||||||
PKGMNGT) echo -e "`eval echo $PARAM_VALS`"
|
PKGMNGT) echo -e "`eval echo $PARAM_VALS`"
|
||||||
|
|
|
@ -115,6 +115,7 @@ define get_pkg_root2
|
||||||
echo "export PKG_DEST=$(SRC)/$@" >> envars; \
|
echo "export PKG_DEST=$(SRC)/$@" >> envars; \
|
||||||
echo "source packInstall.sh" >> envars; \
|
echo "source packInstall.sh" >> envars; \
|
||||||
echo "export -f packInstall" >> envars; \
|
echo "export -f packInstall" >> envars; \
|
||||||
|
echo "export -f wrapInstall" >> envars; \
|
||||||
fi;
|
fi;
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
2
jhalfs
2
jhalfs
|
@ -124,6 +124,7 @@ COMPARE=${COMPARE:-n}
|
||||||
RUN_FARCE=${RUN_FARCE:-n}
|
RUN_FARCE=${RUN_FARCE:-n}
|
||||||
RUN_ICA=${RUN_ICA:-n}
|
RUN_ICA=${RUN_ICA:-n}
|
||||||
PKGMNGT=${PKGMNGT:-n}
|
PKGMNGT=${PKGMNGT:-n}
|
||||||
|
WRAP_INSTALL=${WRAP_INSTALL:-n}
|
||||||
BOMB_TEST=${BOMB_TEST:-n}
|
BOMB_TEST=${BOMB_TEST:-n}
|
||||||
STRIP=${STRIP:=n}
|
STRIP=${STRIP:=n}
|
||||||
REPORT=${REPORT:=n}
|
REPORT=${REPORT:=n}
|
||||||
|
@ -141,6 +142,7 @@ SET_HARDENED_TMP=${SET_HARDENED_TMP:=n}
|
||||||
SET_WARNINGS=${SET_WARNINGS:=n}
|
SET_WARNINGS=${SET_WARNINGS:=n}
|
||||||
SET_MISC=${SET_MISC:=n}
|
SET_MISC=${SET_MISC:=n}
|
||||||
SET_BLOWFISH=${SET_BLOWFISH:=n}
|
SET_BLOWFISH=${SET_BLOWFISH:=n}
|
||||||
|
UNICODE=${UNICODE:=n}
|
||||||
|
|
||||||
if [[ "${NO_PROGRESS_BAR}" = "y" ]] ; then
|
if [[ "${NO_PROGRESS_BAR}" = "y" ]] ; then
|
||||||
NO_PROGRESS="#"
|
NO_PROGRESS="#"
|
||||||
|
|
104
pkgmngt/packInstall.sh.porg
Normal file
104
pkgmngt/packInstall.sh.porg
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
# $Id:$
|
||||||
|
# functions for recording installation of a package and make a tarball,
|
||||||
|
# or using fakeroot type commands for install, then packing and installing
|
||||||
|
# the package.
|
||||||
|
# We only have access to variables PKGDIR and PKG_DEST. Other variables could
|
||||||
|
# be set in the environment
|
||||||
|
|
||||||
|
extract_version() {
|
||||||
|
local VERSION
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
expect*|tcl*|tk*|mozjs*)
|
||||||
|
VERSION=$(echo $1 | sed 's/^[^0-9]*//')
|
||||||
|
;;
|
||||||
|
vim*|unzip*|zip*)
|
||||||
|
VERSION=$(echo $1 | sed 's/^[^0-9]*\([0-9]\)\([0-9]\)/\1.\2/')
|
||||||
|
;;
|
||||||
|
wireless_tools*|LVM2*)
|
||||||
|
VERSION=$(echo $1 | sed 's/^[^.]*\.//')
|
||||||
|
;;
|
||||||
|
x264*)
|
||||||
|
VERSION=$(echo $1 | sed 's/.*shot-//')
|
||||||
|
;;
|
||||||
|
icu*) # No version in PCKGVRS! Use version directly from xml book.
|
||||||
|
# PACK_INSTALL contains the path to this script, which is in the
|
||||||
|
# parent dir of the book.
|
||||||
|
local PACKENT=$(dirname $PACK_INSTALL)/blfs-xml/packages.ent
|
||||||
|
local VERSION1=$(sed -n 's/.*icu-major[^0-9]*\([^"]*\).*/\1/p' $PACKENT)
|
||||||
|
local VERSION2=$(sed -n 's/.*icu-minor[^0-9]*\([^"]*\).*/\1/p' $PACKENT)
|
||||||
|
VERSION=$VERSION1.$VERSION2
|
||||||
|
;;
|
||||||
|
soundtouch*)
|
||||||
|
local PACKENT=$(dirname $PACK_INSTALL)/blfs-xml/packages.ent
|
||||||
|
VERSION=$(sed -n 's/.*soundtouch[^0-9]*\([^"]*\).*/\1/p' $PACKENT)
|
||||||
|
;;
|
||||||
|
xf86-video-intel)
|
||||||
|
local PACKENT=$(dirname $PACK_INSTALL)/blfs-xml/x/installing/x7driver-intel.xml
|
||||||
|
VERSION=$(sed -n '/<!--/!s/.*-version[^;][^0-9]*\([^"]*\).*/\1/p' $PACKENT)
|
||||||
|
;;
|
||||||
|
jdk8*)
|
||||||
|
VERSION=1.8.0.$(echo $1 | sed 's/.*u\([0-9]\+\).*/\1/')
|
||||||
|
;;
|
||||||
|
docbook-xml)
|
||||||
|
VERSION=4.5
|
||||||
|
;;
|
||||||
|
cacerts*)
|
||||||
|
VERSION=0.1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
VERSION=$(echo $1 | sed 's/^.*[-_]\([0-9]\)/\1/' | sed 's/_/./g')
|
||||||
|
;;
|
||||||
|
# the last sed above is because some package managers do not want a '_'
|
||||||
|
# in version.
|
||||||
|
esac
|
||||||
|
echo ${VERSION,,} # convert to lowercase, in case there is a capital letter
|
||||||
|
# in version
|
||||||
|
}
|
||||||
|
|
||||||
|
# Export the previous function, since it is used by the others
|
||||||
|
export -f extract_version
|
||||||
|
# The other "official" functions, wrapInstall and packInstall, are exported
|
||||||
|
# by "envars" (in LFS), and the scripts (in BLFS).
|
||||||
|
|
||||||
|
wrapInstall() {
|
||||||
|
# a bash command is passed as an argument (that may be a compound command).
|
||||||
|
# It is executed by this function, after various set-ups...
|
||||||
|
|
||||||
|
# Note that PKGDIR is changed to UNPACKDIR
|
||||||
|
# and PKG_DEST is changed to PKG_DIR in BLFS tools.
|
||||||
|
# The sed for PACKAGE is therefore not needed in BLFS,
|
||||||
|
# but it does not hurt, either.
|
||||||
|
local PCKGVRS=$(basename $PKGDIR)
|
||||||
|
local TGTPKG=$(basename $PKG_DEST)
|
||||||
|
local PACKAGE=$(echo ${TGTPKG} | sed 's/^[0-9]\{3\}-//' |
|
||||||
|
sed 's/^[0-9]\{1\}-//')
|
||||||
|
# Porg converts package names to lowercase anyway, so do the conversion
|
||||||
|
# ourselves
|
||||||
|
PACKAGE=${PACKAGE,,}
|
||||||
|
# version is only accessible from PKGDIR name. Since the format of the
|
||||||
|
# name is not normalized, several hacks are necessary (now in function
|
||||||
|
# extract_version)...
|
||||||
|
VERSION=$(extract_version $PCKGVRS)
|
||||||
|
porg -lp ${PACKAGE}-${VERSION} sh << PORG_EOF
|
||||||
|
$*
|
||||||
|
PORG_EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------
|
||||||
|
packInstall() {
|
||||||
|
|
||||||
|
# With porg, we need only the package name to make the tarball
|
||||||
|
local TGTPKG=$(basename $PKG_DEST)
|
||||||
|
local PACKAGE=$(echo ${TGTPKG} | sed 's/^[0-9]\{3\}-//' |
|
||||||
|
sed 's/^[0-9]\{1\}-//')
|
||||||
|
local PCKGVRS=$(basename $PKGDIR)
|
||||||
|
# Porg converts package names to lowercase anyway, so do the conversion
|
||||||
|
# ourselves
|
||||||
|
PACKAGE=${PACKAGE,,}
|
||||||
|
# Building the binary package
|
||||||
|
porgball ${PACKAGE}
|
||||||
|
# The package is in the current directory
|
||||||
|
VERSION=$(extract_version $PCKGVRS)
|
||||||
|
mv -v ${PACKAGE}-${VERSION}.porg* /var/lib/packages
|
||||||
|
}
|
80
pkgmngt/packageManager.xml.porg
Normal file
80
pkgmngt/packageManager.xml.porg
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||||
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" >
|
||||||
|
|
||||||
|
<article>
|
||||||
|
|
||||||
|
<sect1 id="package">
|
||||||
|
<title>Package Information</title>
|
||||||
|
<para>Download: <ulink url="https://sourceforge.net/projects/porg/files/porg-0.10.tar.gz"/></para>
|
||||||
|
<para>MD5 sum: <literal>2eceb8a73bb188dbb06b12d90cabdbb4</literal></para>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 id="ch-tools-pkgmngt" role="wrap">
|
||||||
|
<?dbhtml filename="porg.html"?>
|
||||||
|
<title>Porg in tools</title>
|
||||||
|
<sect2 role="installation">
|
||||||
|
<title>Instructions</title>
|
||||||
|
<screen><userinput remap="configure">./configure --prefix=/tools \
|
||||||
|
--disable-grop \
|
||||||
|
--with-porg-logdir=/tools/var/porg</userinput></screen>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
<parameter>--disable-grop</parameter> is needed to prevent the sytem from
|
||||||
|
trying to build the graphical interface, and
|
||||||
|
<parameter>--with-porg-logdir=...</parameter> is needed because
|
||||||
|
<command>make install</command> insists on creating a directory in
|
||||||
|
<filename class="directory">/var</filename>, where we do not want
|
||||||
|
to write.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<screen><userinput remap="make">make</userinput></screen>
|
||||||
|
|
||||||
|
<screen><userinput remap="install">make install</userinput></screen>
|
||||||
|
|
||||||
|
<screen><userinput>cat >> /tools/etc/porgrc << EOF
|
||||||
|
# Porg logdir on LFS system
|
||||||
|
LOGDIR=/var/lib/porg
|
||||||
|
EOF
|
||||||
|
sed -e '/EXCLUDE/{s/^#//;s@$@:/sources:/home@}' \
|
||||||
|
-i /tools/etc/porgrc</userinput></screen>
|
||||||
|
|
||||||
|
</sect2>
|
||||||
|
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 id="ch-pkgmngt-creatingdirs">
|
||||||
|
|
||||||
|
<title>Directories</title>
|
||||||
|
<screen><userinput>mkdir -pv /var/lib/porg
|
||||||
|
mkdir -pv /var/lib/packages</userinput></screen>
|
||||||
|
|
||||||
|
</sect1>
|
||||||
|
<sect1 id="ch-pkgmngt-createfiles">
|
||||||
|
<title>Files</title>
|
||||||
|
<para><command>porgball</command> needs <filename>porgrc</filename>
|
||||||
|
in <filename class="directory">/etc</filename>:</para>
|
||||||
|
<screen><userinput>cp /tools/etc/porgrc /etc</userinput></screen>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 id="ch-system-pkgmngt" role="wrap">
|
||||||
|
<?dbhtml filename="porg.html"?>
|
||||||
|
<title>Final Porg</title>
|
||||||
|
<sect2 role="installation">
|
||||||
|
<title>Instructions</title>
|
||||||
|
|
||||||
|
<screen><userinput remap="configure">./configure --prefix=/usr \
|
||||||
|
--disable-grop \
|
||||||
|
--sysconfdir=/etc \
|
||||||
|
--with-porg-logdir=/var/lib/porg</userinput></screen>
|
||||||
|
|
||||||
|
<screen><userinput remap="make">make</userinput></screen>
|
||||||
|
|
||||||
|
<screen><userinput remap="install">porg -lD "make install"</userinput></screen>
|
||||||
|
|
||||||
|
<screen><userinput>sed -e '/EXCLUDE/{s/^#//;s@$@:/sources:/home@}' \
|
||||||
|
-i /etc/porgrc</userinput></screen>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
|
</sect1>
|
||||||
|
</article>
|
Reference in a new issue