A Gentoo portage overlay providing ebuilds for libfvde and all its supporting libraries from the libyal project.
- Design Decisions - Major architectural and implementation decisions
- Python Bindings - Details on Python support and rationale
- Build Order - Dependency order and build instructions
This overlay provides 18 packages:
- 17 supporting libraries from https://github.com/libyal (error handling, data structures, I/O, crypto, etc.)
- 1 main library: libfvde for accessing FileVault Drive Encryption (FVDE/FileVault2) encrypted volumes
All packages are live (-9999) ebuilds that fetch from GitHub using git-r3.eclass.
-
The overlay is already configured in
/etc/portage/repos.conf/libfvde-overlay.conf -
Install packages in dependency order (see BUILD_ORDER.md) or let portage handle it:
# Install everything
sudo emerge -av dev-libs/libfvde::libfvde-overlay
# Or install specific libraries
sudo emerge -av dev-libs/libcerror::libfvde-overlayBy default, all libraries build as shared libraries (.so files).
To build as static libraries instead:
echo "dev-libs/libcerror static-libs" >> /etc/portage/package.use/libfvde
# Repeat for other libraries as neededWhen static-libs is enabled:
- Libraries become build-time only dependencies (not runtime)
- Static archives (
.a) are installed - Libtool archives (
.la) are preserved
fuse- Build FUSE filesystem support for mounting FVDE volumespython- Build Python bindings (pyfvde)tools- Install fvdetools command-line utilities (default: enabled)keyring- Linux kernel keyring support for key management (default: enabled)nls- Native language supportstatic-libs- Build static library
Each library:
- Fetches source from GitHub using git-r3.eclass
- Applies a patch to remove embedded library directories
- Runs autogen.sh and eautoreconf
- Configures with system library dependencies
- Builds and installs shared libraries (or static with USE flag)
All libraries (except libcerror which has no dependencies) include a patch in files/:
0001-Remove-embedded-dependencies-for-system-library-buil.patch
These patches modify Makefile.am and configure.ac to:
- Remove embedded library subdirectories from SUBDIRS
- Remove AC_CONFIG_FILES for embedded libraries
- Update build targets to not recurse into embedded library directories
This allows each library to be built standalone using system-installed dependencies instead of the embedded copies that libyal projects typically use.
- libcerror - Error handling
- libclocale - Locale functions
- libcnotify - Notification functions
- libcsplit - String splitting
- libfguid - GUID/UUID handling
- libhmac - HMAC functions
- libcaes - AES encryption
- libcthreads - Threading (→ libcerror)
- libuna - Unicode/ASCII conversions (→ libcerror)
- libcdata - Generic data structures (→ libcerror, libcthreads)
- libcfile - File I/O (→ libcerror, libclocale, libcnotify, libuna)
- libcpath - Path handling (→ libcerror, libclocale, libcsplit, libcnotify, libuna)
- libfcache - File cache (→ libcerror, libcdata, libcthreads)
- libbfio - Basic file I/O abstraction (→ libcerror, libcdata, libcfile, libcpath, libcthreads, libuna)
- libfvalue - File value types (→ libcerror, libcdata, libcnotify, libuna)
- libfplist - Property list handling (→ libcerror, libfguid, libcdata, libcnotify)
- libfdata - File data types (→ libcerror, libcdata, libcnotify, libcthreads, libfcache)
- libfvde - FileVault Drive Encryption library (→ all 17 libraries above + zlib)
If you need to regenerate patches for a library:
cd /tmp
git clone https://github.com/libyal/LIBNAME.git LIBNAME-patch
cd LIBNAME-patch
# Edit Makefile.am and configure.ac to remove embedded dependencies
git add Makefile.am configure.ac
git commit -m "Remove embedded dependencies for system library build"
git format-patch -1 -o /var/db/repos/libfvde-overlay/dev-libs/LIBNAME/files/After modifying an ebuild or patch:
cd /var/db/repos/libfvde-overlay/dev-libs/LIBNAME
ebuild LIBNAME-9999.ebuild manifest- libfvde: https://github.com/libyal/libfvde
- libyal project: https://github.com/libyal
- Gentoo git-r3.eclass: https://devmanual.gentoo.org/eclass-reference/git-r3.eclass/
Ebuilds and patches: GPL-2 (per Gentoo policy) Upstream libraries: LGPL-3+ (see individual project repositories)