diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml
index 9f5929bfb..5c2538346 100644
--- a/appendices/dependencies.xml
+++ b/appendices/dependencies.xml
@@ -1474,6 +1474,41 @@
+
+ Libffi
+
+
+ &dependencies;
+
+
+ Bash, Binutils, Coreutils, GCC, Glibc, Make, and Sed
+
+
+
+
+ &testsuites;
+
+
+ DejaGnu
+
+
+
+
+ &before;
+
+
+ Python
+
+
+
+
+ &external;
+
+
+ None
+
+
+
Libpipeline
@@ -1725,6 +1760,41 @@
+
+ Meson
+
+
+ &dependencies;
+
+
+ Ninja and Python
+
+
+
+
+ &testsuites;
+
+
+ No test suite available
+
+
+
+
+ &before;
+
+
+ None
+
+
+
+
+ &external;
+
+
+ None
+
+
+
MPC
@@ -1834,6 +1904,41 @@
+
+ Ninja
+
+
+ &dependencies;
+
+
+ Binutils, Coreutils, Gcc, Python
+
+
+
+
+ &testsuites;
+
+
+ None
+
+
+
+
+ &before;
+
+
+ Meson
+
+
+
+
+ &external;
+
+
+ Asciidoc, Doxygen, Emacs, and re2c
+
+
+
Patch
@@ -2047,6 +2152,42 @@
+
+ Python
+
+
+ &dependencies;
+
+
+ Bash, Binutils, Coreutils, GCC, Gettext, Glibc, Grep,
+ Libffi, Make, Ncurses, and Sed
+
+
+
+
+ &testsuites;
+
+
+ GDB and Valgrind
+
+
+
+
+ &before;
+
+
+ Ninja
+
+
+
+
+ &external;
+
+
+ Berkeley DB, OpenSSL, SQLite, and Tk
+
+
+
Readline
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index 22a64b069..58fa69fe9 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -42,6 +42,28 @@
or as
appropriate for the entry or if needed the entire day's listitem.
-->
+
+ 2017-09-23
+
+
+ [bdubbs] - Add Meson-0.42.1.
+
+
+ [bdubbs] - Add Ninja-1.8.2.
+
+
+ [bdubbs] - Add Python-3.6.2.
+
+
+ [bdubbs] - Add libffi-3.2.1.
+
+
+ [bdubbs] - Update to eudev-3.2.4. Fixes
+ #4140.
+
+
+
+
2017-09-22
diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml
index b4de26d39..9faf53bad 100644
--- a/chapter01/whatsnew.xml
+++ b/chapter01/whatsnew.xml
@@ -254,11 +254,21 @@
Added:
-
diff --git a/chapter03/packages.xml b/chapter03/packages.xml
index 8a5d162b0..d2674a40b 100644
--- a/chapter03/packages.xml
+++ b/chapter03/packages.xml
@@ -396,6 +396,15 @@
+
+ Libffi (&libffi-version;) - &libffi-size;:
+
+ Home page:
+ Download:
+ MD5 sum: &libffi-md5;
+
+
+
Libpipeline (&libpipeline-version;) - &libpipeline-size;:
@@ -473,6 +482,15 @@
+
+ Meson (&meson-version;) - &meson-size;:
+
+ Home page:
+ Download:
+ MD5 sum: &meson-md5;
+
+
+
MPC (&mpc-version;) - &mpc-size;:
@@ -491,6 +509,15 @@
+
+ Ninja (&ninja-version;) - &ninja-size;:
+
+ Home page:
+ Download:
+ MD5 sum: &ninja-md5;
+
+
+
Ncurses (&ncurses-version;) - &ncurses-size;:
@@ -545,6 +572,23 @@
+
+ Python (&python-version;) - &python-size;:
+
+ Home page:
+ Download:
+ MD5 sum: &python-md5;
+
+
+
+
+ Python Documentation (&python-version;) - &python-docs-size;:
+
+ Download:
+ MD5 sum: &python-docs-md5;
+
+
+
Readline (&readline-version;) - &readline-size;:
diff --git a/chapter06/chapter06.xml b/chapter06/chapter06.xml
index 8f4a8f46f..401ce50ee 100644
--- a/chapter06/chapter06.xml
+++ b/chapter06/chapter06.xml
@@ -38,6 +38,14 @@
+
+
+
+
+
+
+
+
@@ -48,7 +56,6 @@
-
diff --git a/chapter06/libffi.xml b/chapter06/libffi.xml
new file mode 100644
index 000000000..c04a39f69
--- /dev/null
+++ b/chapter06/libffi.xml
@@ -0,0 +1,104 @@
+
+
+ %general-entities;
+]>
+
+
+
+
+
+ libffi
+ &libffi-version;
+ &libffi-url;
+
+
+ libffi-&libffi-version;
+
+
+ libffi
+
+
+
+
+
+ The libffi library provides a portable, high level programming
+ interface to various calling conventions. This allows a programmer to call
+ any function specified by a call interface description at run time.
+
+
+ &buildtime;
+ &diskspace;
+
+
+ &libffi-ch6-sbu;
+ &libffi-ch6-du;
+
+
+
+
+
+
+ Installation of libffi
+
+ Modify the Makefile to install headers into the standard
+ /usr/include directory instead of
+ /usr/lib/libffi-3.2.1/include.
+
+sed -e '/^includesdir/ s/$(libdir).*$/$(includedir)/' \
+ -i include/Makefile.in
+
+sed -e '/^includedir/ s/=.*$/=@includedir@/' \
+ -e 's/^Cflags: -I${includedir}/Cflags:/' \
+ -i libffi.pc.in
+
+ Prepare libffi for compilation:
+
+./configure --prefix=/usr --disable-static
+
+ Compile the package:
+
+make
+
+ To test the results, issue:
+
+make check
+
+ Install the package:
+
+make install
+
+
+
+
+ Contents of libffi
+
+
+ Installed library
+
+
+ libffi.so
+
+
+
+
+ Short Descriptions
+
+
+
+
+ libffi
+
+ contains the libffi API functions.
+
+ libffi
+
+
+
+
+
+
+
+
+
diff --git a/chapter06/meson.xml b/chapter06/meson.xml
new file mode 100644
index 000000000..5bc2fce6b
--- /dev/null
+++ b/chapter06/meson.xml
@@ -0,0 +1,89 @@
+
+
+ %general-entities;
+]>
+
+
+
+
+
+ meson
+ &meson-version;
+ &meson-url;
+
+
+ Meson-&meson-version;
+
+
+ Meson
+
+
+
+
+
+ Meson is an open source build system meant to be both extremely fast,
+ and, even more importantly, as user friendly as possible.
+
+
+ &buildtime;
+ &diskspace;
+
+ &meson-ch6-sbu;
+ &meson-ch6-du;
+
+
+
+
+
+
+ Installation of Meson
+
+ Compile Meson with the following command:
+
+python3 setup.py build
+
+ This package does not come with a test suite.
+
+ Install the package:
+
+python3 setup.py install
+
+
+
+
+
+ Contents of Meson
+
+
+ Installed Libraries
+ Installed directory
+
+
+ libmeson.so
+ /usr/share/doc/meson-&meson-version;
+
+
+
+
+ Short Descriptions
+
+
+
+
+ libmeson
+
+ Contains multiple-precision math functions
+
+ libmeson
+
+
+
+
+
+
+
+
+
+
diff --git a/chapter06/ninja.xml b/chapter06/ninja.xml
new file mode 100644
index 000000000..28db9df21
--- /dev/null
+++ b/chapter06/ninja.xml
@@ -0,0 +1,108 @@
+
+
+ %general-entities;
+]>
+
+
+
+
+
+ ninja
+ &ninja-version;
+ &ninja-url;
+
+
+ Ninja-&ninja-version;
+
+
+ Ninja
+
+
+
+
+
+ Ninja is a small build system with a focus on speed.
+
+
+ &buildtime;
+ &diskspace;
+
+
+ &ninja-ch6-sbu;
+ &ninja-ch6-du;
+
+
+
+
+
+
+ Installation of Ninja
+
+ Prepare Ninja for compilation:
+
+python3 configure.py --bootstrap
+
+
+ The meaning of the configure options:
+
+
+ --bootstrap
+
+ This parameter forces ninja to rebuild itself for the current
+ system.
+
+
+
+
+
+ To test the results, issue:
+
+python3 configure.py
+./ninja ninja_test
+./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
+
+ Install the package:
+
+install -vm755 ninja /usr/bin/
+install -vDm644 misc/ninja.vim \
+ /usr/share/vim/vim&vim-majmin;/syntax/ninja.vim
+install -vDm644 misc/bash-completion \
+ /usr/share/bash-completion/completions/ninja
+install -vDm644 misc/zsh-completion \
+ /usr/share/zsh/site-functions/_ninja
+
+
+
+
+ Contents of Ninja
+
+
+ Installed programs
+
+
+ ninja
+
+
+
+ Short Descriptions
+
+
+
+
+ ninja
+
+ is the Ninja build system.
+
+ ninja
+
+
+
+
+
+
+
+
+
+
diff --git a/chapter06/python.xml b/chapter06/python.xml
new file mode 100644
index 000000000..d680bc735
--- /dev/null
+++ b/chapter06/python.xml
@@ -0,0 +1,244 @@
+
+
+ %general-entities;
+]>
+
+
+
+
+
+ Python
+ &python-version;
+ &python-url;
+
+
+ Python-&python-version;
+
+
+ python
+
+
+
+
+
+ The Python 3 package contains the Python development environment. It
+ is useful for object-oriented programming, writing scripts, prototyping
+ large programs or developing entire applications.
+
+
+ &buildtime;
+ &diskspace;
+
+
+ &python-ch6-sbu;
+ &python-ch6-du;
+
+
+
+
+
+
+ Installation of Python 3
+
+ Prepare Python for compilation:
+
+./configure --prefix=/usr \
+ --enable-shared \
+ --with-system-expat \
+ --with-system-ffi \
+ --with-ensurepip=yes \
+ --enable-unicode=ucs4
+
+
+ The meaning of the configure options:
+
+
+ --with-system-expat
+
+ This switch enables linking against system version of
+ Expat.
+
+
+
+
+ --with-system-ffi
+
+ This switch enables linking against system version of
+ libffi.
+
+
+
+
+ --with-ensurepip=yes
+
+ This switch enables building pip and
+ setuptools packaging programs.
+
+
+
+
+ --enable-unicode=ucs4
+
+ This switch enables 32bit Unicode support in
+ Python.
+
+
+
+
+
+ Compile the package:
+
+make
+
+ The test suite requires TK and and X Windows session and cannot
+ be run until Python 3 is reinstalled in BLFS.
+
+ Install the package:
+
+make install
+chmod -v 755 /usr/lib/libpython3.6m.so
+chmod -v 755 /usr/lib/libpython3.so
+
+
+ The meaning of the install commands:
+
+
+ chmod -v 755 /usr/lib/libpython3.{6m.,}so
+
+ Fix permissions for libraries to be consistent with other
+ libraries.
+
+
+
+
+
+ If desired, install the preformatted documentation:
+
+install -v -dm755 /usr/share/doc/python-&python-version;/html
+
+tar --strip-components=1 \
+ --no-same-owner \
+ --no-same-permissions \
+ -C /usr/share/doc/python-&python-version;/html \
+ -xvf ../python-&python-version;-docs-html.tar.bz2
+
+
+ The meaning of the documentation install commands:
+
+
+ and --no-same-permissions
+
+ Ensure the installed files have the correct ownership and
+ prermissions. Without these options, using tar
+ will install the package files with the upstream creator's values.
+
+
+
+
+
+
+
+
+
+ Contents of Python 3
+
+
+ Installed Programs
+ Installed Library
+ Installed Directories
+
+
+
+ 2to3, idle3, pydoc3, python3, python3-config, pyvenv
+
+
+ libpython3.6m.so and libpython3.so
+
+
+ /usr/include/python3.6m, /usr/lib/python3 and
+ /usr/share/doc/python-&python-version;
+
+
+
+
+
+ Short Descriptions
+
+
+
+
+ 2to3
+
+
+ is a Python program that reads
+ Python 2.x source code and applies a
+ series of fixes to transform it into valid
+ Python 3.x code.
+
+
+ 2to3
+
+
+
+
+
+ idle3
+
+
+ is a wrapper script that opens a Python
+ aware GUI editor. For this script to run, you must have installed
+ Tk before Python so that the Tkinter
+ Python module is built.
+
+
+ idle3
+
+
+
+
+
+ pydoc3
+
+
+ is the Python documentation tool.
+
+
+ pydoc3
+
+
+
+
+
+ python3
+
+
+ is an interpreted, interactive, object-oriented programming
+ language.
+
+
+ python3
+
+
+
+
+
+ pyvenv
+
+
+ creates virtual Python environments in
+ one or more target directories.
+
+
+ pyvenv
+
+
+
+
+
+
+
+
+
+
diff --git a/general.ent b/general.ent
index b97c14a64..b072e20b6 100644
--- a/general.ent
+++ b/general.ent
@@ -1,13 +1,13 @@
-
+
-
+
-
+
diff --git a/packages.ent b/packages.ent
index 9ad11672c..e769b38ba 100644
--- a/packages.ent
+++ b/packages.ent
@@ -145,10 +145,10 @@
-
+
-
+
@@ -382,6 +382,14 @@
+
+
+
+
+
+
+
+
@@ -454,6 +462,14 @@
+
+
+
+
+
+
+
+
@@ -462,10 +478,10 @@
-
-
+
+
-
+
@@ -480,6 +496,14 @@
+
+
+
+
+
+
+
+
@@ -524,6 +548,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -626,6 +661,7 @@
+
diff --git a/prologue/why.xml b/prologue/why.xml
index 761cf138d..b85281842 100644
--- a/prologue/why.xml
+++ b/prologue/why.xml
@@ -326,6 +326,19 @@
+
+ Libffi
+
+ This package implements a portable, high level programming
+ interface to various calling conventions. Some programs may not know
+ at the time of compilation what arguments are to be passed to a
+ function. For instance, an interpreter may be told at run-time about
+ the number and types of arguments used to call a given function. Libffi
+ can be used in such programs to provide a bridge from the interpreter
+ program to compiled code.
+
+
+
Libpipeline
@@ -380,6 +393,16 @@
Linux man pages.
+
+ Meson
+
+ This package provides a software tool for automating the building
+ of software. The main goal for Meson is to minimize the amount of time
+ that software developers need to spend configuring their build
+ system.
+
+
+
MPC
@@ -394,6 +417,15 @@
arithmetic. It is required by Gcc.
+
+ Ninja
+
+ This package contains a small build system with a focus on speed.
+ It is designed to have its input files generated by a higher-level build
+ system, and to run builds as fast as possible.
+
+
+
Ncurses
@@ -443,6 +475,14 @@
administration.
+
+ Python 3
+
+ This package provides an interpreted language that has a design
+ philosophy that emphasizes code readability.
+
+
+
Readline