With the new way of treating dependencies, we need to properly
manage -pass1 packages: For that we need the installed version of
-pass1 packages. But it is recorded nowhere. packages.xml shouldn't
be used for that, because it is directly built from the book
dependencies: adding -pass1 packages would just duplicate the
dependency information. So the version has to be recorded in
the tracking file. This involves changing bump.xsl (this commit),
and passing the tracking file to gen_pkg_book (next commit).
This is an oversight of when we moved to profiling and when we
removed the docbook xsl stylesheets from the LFS directory.
Docbook XML DTD and XSL stylesheets are needed, so test them
at start. This has the effect of removing the need for check_blfs_tools.
With the new xsl/dependencies.xsl, the full dependency list is generated.
We compare the version and installed version gotten from packages.xml
using xsl/get_version.xsl and only install if the installed version is
lower than the available version. Since the installed version returned
by get_version.xsl for a non installed package is 0, that version is
always lower than the available version and the package is installed.
Note that if a package does not exist, both versions are empty, and
they compare as equal with our method. So they are never installed...
This .xsl, applied to packages.ent, takes the package name as
a string param, then returns:
"version"<nl>"installed version" if both versions are known
"version"<nl>0 if the package is known but not installed
nothing if the package does not exist (case of the groupxx ones)
In Xorg pages where there are several packages, the .xsl for
separating packages assumed that the package names ended in
tar.bz2 and selected the substring before ".tar.bz2" to extract
the packagedir. This has changed recently for libX11, which is a
.tar.xz package: the fix is to just select the substring before
".tar." for the packagedir.
Some packages use those variables to determine whether they are
talking to a terminal, and issue color codes that mess our
logs if the top level make has been launched from a terminal.
Get them in gen_pkg_book, and pass them to sripts.xsl
use them in scripts.xsl. We set them at the beginning of
of the scriptlet, so that it is easy to modify them.
With the current Makefile, git-version.sh is run unconditionally,
so that the bok is validated each time, even if there is no
text change. Change this to only validate if there is a text change
(the previous behavior), and run git-version.sh just before validation.
Hopefully the present commit fixes those problems:
- use sh -e instead of sh
- set PATH to $PATH (which will expand to the PATH before entering
sudo) before the install commands.
Displaying the size of /, but excluding other filesystems is not
good if BUILD_DIR is on another filesystem. Furthermore, when
doing stats, the DESTDIR is inside $BUILD_DIR, so the full size is
recorded. The only thing that is not recorded is if the
build system downloads files to the user's home (cargo, maven, ...).
When running git-version.sh, unconditionally add a $INITSYS
argument, which is needed for the new condxml, and
is harmless if this argument is not needed.
Using version from the ENTITY version line in gneral.ent is not
good anymore, since version is in version.ent for the dev book.
But it _is_ in general.ent for releases...
Use a different approach: take the profiled .xml, and use the
version in lsb-release.
In func_wrt_makefile, the two functions LUSER_wrt_unpack and
CHROOT_Unpack use the version variable without setting it.
This leads to the global version variable being used, which
writes garbage into the Makefile. Fix: just define version locally.
This bug does not occur often because those functions are only
used when using custom scripts for versioned packages (if building LFS).
It has been found by William Harrington.