Introduction to Dtc
The dtc package contains the
Device Tree Compiler for working with device tree source and binary
files and also libfdt, a utility library for reading and
manipulating device trees in the binary format.
This package is known to build and work properly using an LFS 12.3
platform.
Package Information
Dtc Dependencies
Optional
libyaml-0.2.5, SWIG-4.3.0, and texlive-20240312
Installation of Dtc
Install dtc by running the
following commands:
mkdir build &&
cd build &&
meson setup --prefix=/usr \
--buildtype=release \
-D python=disabled .. &&
ninja
To test the results, issue: CC='gcc
-Wl,-z,noexecstack' meson test -v.
Now, as the root
user:
ninja install
Still as the root
user, remove the
useless static library:
rm /usr/lib/libfdt.a
If you have texlive-20240312 installed, you can
build the PDF format of the documentation by issuing the following
command:
pushd ../Documentation
latexmk -bibtex --pdf dtc-paper &&
latexmk -bibtex --pdf dtc-paper -c
popd
To install the documentation, as the root
user issue the following command:
cp -R ../Documentation -T /usr/share/doc/dtc-1.7.2
If you have installed SWIG-4.3.0 and you wish to install the Python 3
bindings of this package, build the Python 3 module:
pip3 wheel -w dist --no-build-isolation --no-deps --no-cache-dir ..
As the root
user, install the
Python 3 module:
pip3 install --no-index --find-links dist --no-user libfdt
Command Explanations
--buildtype=release
:
Specify a buildtype suitable for stable releases of the package, as
the default may produce unoptimized binaries.
-D python=disabled
: This
switch prevents building the Python 3 binding with the deprecated
method (running setup.py directly). We will build
the Python 3 binding with the pip3
wheel command separately if wanted.
CC='gcc -Wl,-z,noexecstack'
: This
variable prevents marking the shared libraries in the test suite as
requiring executable stack. Glibc 2.41 or later has stopped
allowing dlopen
ing such a shared
library so the test suite would fail. But those shared libraries
don't really need an executable stack, so we can use -Wl,-z,noexecstack
to fix up the test
suite. It's needed in the CC
environment
for the meson test
because those shared libraries are built by a test script instead
of the meson/ninja building system, and the
test script does not recognize other “common” environment
variables like LDFLAGS
.