The recent addition of instructions for adding locales not
installed by make install-localedata has broken the generation
of the scriptlet, because there is a missing linefeed.
Use xsl:for-each to add a linefeed after each <userinput>
text.
The command for unmounting the kernel vfs is now
umount -Rv $LFS
So we have first to use that command in teardown (change in
kernfs.xsl). Second, since the command tries to umount
$LFS, but the Makefile is on $LFS, it fails. Ignore the
error in the Makefile (change in master.sh)
We count the number of files in lfs-commands to know whether
we have an old or a new book. But this shouldn't include the
custom-tools dir, so only count chapter*.
/var/run and /var/lock are created as symlinks in creatingdirs. But
if a package install something into those dirs (with DESTDIR install),
they get overwritten with true directories if using a package
manager. Note that without PM, anything installed into those dirs
is lost at next reboot. So remove those dirs before packaging.
- add createfiles instructions of packageManager.xml for new book too
- remove unneeded chown when installing pacman (not needed thanks to
the above)
- Use a dedicated user "builder" for running makepkg: user "tester" is
removed at the end of chapter 8, but is needed in following chapters.
We cannot use only the fact that it is not in chapter-temporary-tools
since now we have several chapter for the temporary system.
so use a list of chapters (non negated).
- major number can be on 4 digits, so use it in packInstall
- minor number (for package manager) can be greater than 10
- code on 2 digits
- change various files accordingly
- Prefer SysV over Sys V in Config.in
- do not generate the package list for lfs, it is not needed anymore
- prevent an (ignored) error in LFS/master.sh
- log new files under the scriptlet name (allows to log files for the same
package from different builds)
- keep the full name in log_new_file functions (fix a undetected bug in
CLFS/HLFS)
We use the filter builtin function of make to retrieve the right
shell to use during the CHROOT phase, which is the same as the
one in CHROOT1.
Also do not assume envars exist when removing it at the beginning
of the SUDO phase.
This involves changing the way make targets are built. Specially
the make target is changed when encountering a specific file
(for example the make target becomes sudo when rencountering kernfs)
This allows more flexibility.
Those scriptlets need to use a temporary bash, which is in /tools/bin
for current LFS. But if we use a new method (cross-compiling + sysroot)
it ends into /bin. So we have to set the correct `#!' header
in both cases.
We rely on the pesence of a "creatingtoolsdir" sect1 to know that
bash is in /tools
- take targets from scriptlet names
- neutralize some commands or bash builtins so that they are not
used even if they are in the scriptlets, if not needed
- do not set PREV in chapter 5 anymore
- Improve save and restore user, so that if the LUSER exists,
its home is saved while building temporary tools, and restored
afterwards
Using the chapter ancestor is not enough. It's better to use the sect1 id
and test that it starts with ch-tools: package-manager does not have this
ancestor. Also the virtual kernel filesystems are done before chroot,
so directly test this one.
This works for the current lfs book. We'll need something new if we
change the order of pages.
In the generated scriptlets, we need to know if we are on host
or chrooted. Presently, we
rely on /tools being a symlink or not. But we may want to remove this
ugly symlink in future versions of LFS, so anticipate and use the
chapter ancestor.