Tags: turnkeylinux/fab
Tags
v0.6 Release Notes
==================
(251 commits since last release)
* added plan-annotate command: annotate plan by appending short package description comments
* support c-style comments
* will by default annotate only unannotated expressions
* added contrib/product.mk: inheritable Makefile template for building products
* cli interfaces changes
* pool now defaults to $FAB_POOL_PATH
* replaced spec-install with more powerful install command
* apply-overlay: added --preserve option
(perserve mode, ownership and timestamps)
* plan-resolve: removed --exclude option from plan-resolve
* removed fab-chroot-umount (obsolete)
* plan resolver changes
* global calculation -> interative calculation
* added support for Pre-Depends
* don't resolve alternatives if any have already been seen by resolver (also an optimization)
* eliminated hardwired virtual package table kludge
* major optimizations: to plan resolving and package installation
* robustness: never ignore errors + added many sanity checks
* refactorings: deep, extensive refactorings across the board
* removed apt-ftparchive depedency: generating package index internally
* bugfixes: many small bugfixes
* debian/Suggests: added genisoimage, wodim and squashfs-tools
v0.5 Release Notes
==================
FAB: product fabrication framework
This version of Fab is actually the second generation framework, the
first being referred to as oldfab.
The word "Fab" originates from the microelectronics industry. A fab, or
fabrication plant is a factory where devices (eg. integrated circuits)
are manufactured for one of more customers. A fab is semantically
connected to the most cutting edge technological factories in existence
(Silicon chip foundries) - hence the relationship to TurnKey ;)
A fab is a very tightly controlled environment (clean room), but instead
of keeping out physical impurities (e.g., dust and dirt), the TurnKey Fab
is used in fabricating systems while tightly controlling "logical"
impurities (e.g., security threats, malware, etc.)
These release notes only contain a high-level overview, please refer to
the design notes for detailed information, and help from the commands
themeselves.
OVERVIEW
--------
The fab provides 'toolchain' utilities, which allows us to build products
and collaborate on them using the same workflow and tools used on
software projects.
Building is performed per-product, each in its own directory. We leverage
'make' to implement the 'build pipeline', git and covin for revision
control and collaboration.
The output of a product is the product itself, and a recipe (very small
footprint compared to the product) which can be use to automatically
reproduce the product bit for bit.
TERMINOLOGY
-----------
product: the final product used by the end-user
the product is generated by formatting the "patched root"
root.patched: the chroot'able root filesystem of a product
patched manually or automatically
can be re-created automatically by applying the root patch as an overlay to `the root'
root.build: the chroot'able root filesystem of a product
built by applying the "root.spec" on the bootstrap
bootstrap: the minimal chroot'able filesystem used to bootstrap the root
built from a "bootstrap.spec"
spec: a set of (package name, package version tuples)
a spec is created from a plan against a specific pool
the same plan will generate different specs against different pools
plan: set of package names
root plan
the recursable plan from which the root.spec is created
recursable means we lookup the dependencies of listed packages recursively
bootstrap plan
the non-recursable plan from which we create the bootstrap spec
non-recursable means no recursion of the plan (this is planned to
change)
CLI
---
Fab has 4 basic commands,
plan-resolve Resolve plan into spec using latest packages from pool
spec-install Install packages into chroot according to spec
apply-removelist Remove files and folders according to removelist
apply-overlay Apply overlay ontop of given path
4 internal/advanced commands,
cpp Pre-process a plan
chroot Executes command in chroot
chroot-umount Umount chroot virtual filesystems if mounted
spec-get Get packages according to spec
and can be configured via 3 environment variables,
FAB_PLAN_INCLUDE_PATH Global include path for plan preprocessing
FAB_POOL_PATH Lookup path for a relative pool path
FAB_TMPDIR Temporary storage (defaults to /var/tmp)