Presently, when the <node>groupxx file is created, we copy "a"
lines from <node> to <node>groupxx (changing "a" to "b") and
we remove all the lines containing the runtime dependency from
<node>. This may not always be what we want: for example, a
dependency can be both "required at runtime" and "optional for
tests". We should keep this information when cleaning the nodes.
Only when removing circular paths should the optional tie be broken
if necessary.
With the way we manage "first" deps, it may happen that no node
unreference the pass2 node. In that case, we add it to root.
Add some documentation for what we do for those deps, too.
Better document the $seen global variable used in path_to,
also at places where "path_to" is called.
Document p and b flags in the loop over "after" deps.
Document lr variable in the loop over "first" deps.
Now gen_pkf_book.sh depends on trackfile. This can be passed
as an argument, but to ease calling it standalone, we need to
set the default to the actual file used.
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).
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, ...).
In the xorg application, mkfontdir is commented out, but we did not
check that because it was complicated with the shell. This was
leading to mkfontfir appearing in the packages to install, which
is not wanted. We use the information in the "cat" command to
eliminate the commented out package.
- change "6" to "final system"
- change "7" to "configuration"
- change "8" to "Bootable"
- change "9" to "The End"
- also fix a id that has changed in January in the lfs book