Changeset View
Changeset View
Standalone View
Standalone View
depends/description.md
This is a system of building and caching dependencies necessary for building Bitcoin. | This is a system of building and caching dependencies necessary for building Bitcoin. | ||||
There are several features that make it different from most similar systems: | There are several features that make it different from most similar systems: | ||||
### It is designed to be builder and host agnostic | ### It is designed to be builder and host agnostic | ||||
In theory, binaries for any target OS/architecture can be created, from a | In theory, binaries for any target OS/architecture can be created, from a | ||||
builder running any OS/architecture. In practice, build-side tools must be | builder running any OS/architecture. In practice, build-side tools must be | ||||
specified when the defaults don't fit, and packages must be amended to work | specified when the defaults don't fit, and packages must be amended to work | ||||
on new hosts. For now, a build architecture of x86_64 is assumed, either on | on new hosts. For now, a build architecture of x86_64 is assumed, either on | ||||
Show All 11 Lines | |||||
unknown files available to cause side-effects. | unknown files available to cause side-effects. | ||||
### Each package is cached and only rebuilt as needed. | ### Each package is cached and only rebuilt as needed. | ||||
Before building, a unique build-id is generated for each package. This id | Before building, a unique build-id is generated for each package. This id | ||||
consists of a hash of all files used to build the package (Makefiles, packages, | consists of a hash of all files used to build the package (Makefiles, packages, | ||||
etc), and as well as a hash of the same data for each recursive dependency. If | etc), and as well as a hash of the same data for each recursive dependency. If | ||||
any portion of a package's build recipe changes, it will be rebuilt as well as | any portion of a package's build recipe changes, it will be rebuilt as well as | ||||
any other package that depends on it. If any of the main makefiles (Makefile, | any other package that depends on it. If any of the main makefiles (Makefile, | ||||
funcs.mk, etc) are changed, all packages will be rebuilt. After building, the | funcs.mk, etc) are changed, all packages will be rebuilt. After building, the | ||||
results are cached into a tarball that can be re-used and distributed. | results are cached into a tarball that can be re-used and distributed. | ||||
### Package build results are (relatively) deterministic. | ### Package build results are (relatively) deterministic. | ||||
Each package is configured and patched so that it will yield the same | Each package is configured and patched so that it will yield the same | ||||
build-results with each consequent build, within a reasonable set of | build-results with each consequent build, within a reasonable set of | ||||
constraints. Some things like timestamp insertion are unavoidable, and are | constraints. Some things like timestamp insertion are unavoidable, and are | ||||
Show All 16 Lines |