Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
* Instead of merging prep/compile/archive into 1 command I have reversed
direction slightly. The individual stages/commands will be maintained
as separate scripts, but they will no longer create time-stamp files so
that they always get executed every time.
|
|
|
|
|
|
* In order to avoid thrashing a filesystem with transient objects during
the build process, and thus getting stuck within the I/O scheduler, we
now perform all builds themselves within BUILDER_TMPDIR. This way the
tmpdir path can be mounted as a ramfs, such as tmpfs, and avoid
thrashing physical storage, particularly journals on a journalled
filesystem.
|
|
* The fetch target does not depend on any single package, instead it
depends on all possible sources.
|
|
|
|
|
|
|
|
* Instead of relying on CBUILD and CHOST it is easier to simply archive
packages within their category inside of the artifact directory.
|
|
|
|
* At the core of the issue is that multiple packages can depend on the
same sources. To that end, the sources themselves need to be
represented independant of the packages which require them, as well as
needed to be archived/maintained independant of the packages. To do
this we have split the fetch action out separate of the prep action,
thus fetch actions are only related to the source archives, and the
prep action is how a package extracts said archive for use by a
specific package.
|
|
* exec()'ing 'make' results in losing our ability to cleanup temp files.
|
|
|
|
* A category directory can now contain a .buildrules file which is
is evaluated before importing the package specific Buildrule. This
allows packages to be organized based on common build information,
such as toolchain data, or the 3 stages of producing the GCC compiler
* Removed the hard-coded assumption of the buildtools category being a
toolchain and instead moved the data back into the TOOLCHAIN variable
which I am now setting via the CATEGORY buildrule
|
|
|
|
|
|
|
|
* Properly split out installation based on packages being part of the
toolchain or not.
|
|
|
|
* Renamed build-info to build-query. The build-query tool is now
responsible for looking up pretty much any and all package
information, and all of the tools should use it instead of making
assumptions about paths.
* Redesigned the package structure to support <category>/<package>.
When a request is made that excludes the <category> then the
<project_name> is assumed to be the category.
* Currently anything in the buildtools/ category is not cleaned up
during build-clean. In the future there will be a NOCLEAN option as a
category rule that the Buildrules file implicitly inherits.
|
|
|
|
|
|
* Changed builder to assume 'build all' when no arguments are given.
This results in a 'build <package> all' assumption when within a
package subdirectory
|
|
* When no package is specified on the command line we check to see if
the PWD is within a package path, if so we use that package name.
Unfortunately the variable expansion wasn't removing sub-directories
below the package from the name, which broke things.
|
|
|
|
* Added a workdir variable ${W} which references the
${BUILDER_PKGDIR}/${NAME}/build, which allows distclean to clobber
the entire workdir directory structer as opposed to just the extracted
source directory structure.
|
|
* Corrected the argument ordering so that they match the documentation
and they are closer to what one would expect in any normal CLI
* Enhanced the interface slightly so that when no target is specified,
the target is picked based on ones current location within the tree.
Thus 'build clean' outside of a package is the equvilant to
'build clean all', but 'build clean' while inside of package/foo is
the same as 'build clean foo'
* You can now specify multiple targets on the command line.
I.e. build clean foo bar
|
|
* The 'clean' target will no longer destroy any packages flagged as
members of the toolchain. Instead toolchain packages will be marked
as no longer installed such that the toolchain artifacts will be
extracted instead of rebuilding the toolchain.
* To clean all packages including the toolchain a 'distclean' target has
been added.
|
|
|
|
* Due to the nature of the parallel build process we need to make
the timestamp on the archive match the timestamp on the log/.compiled
file, else targets may be rebuilt unecesarily.
|
|
* For whatever reason the subshell does not seem to obey 'set -e'.
Removing execution of pkg_compile() from the subshell as we don't
actually do anything after that which involves changing directories,
which was the majority of the reason for running in a subshell to
begin with.
|
|
* Due to the nature of the parallel build process we need to make the
timestamp on the archive match the timestamp on the log/.compiled
file, else targets may be rebuilt unecesarily.
|
|
* Need to validate that our source and artifact directories are created
before we attempt to use them.
|
|
* Bad redirection was truncating compiling log
* Added ENV data to the start of the compile log to aid in debugging.
|
|
* Do not allow child-processes to inherit MAKEFLAGS as the job control
descriptor is lost when calling build-compile.
|
|
* The '*' pattern will fail to match .[a-zA-Z0-9]*, so instead we use
find to traverse the target.
|
|
* In the long run we need to have fine-grained control over the logging
interface. To pull that off we need to migrate all logging out of the
Makefile infrastructure and instead handle it within the build
scripts.
|
|
* In order to avoid the entire "cmd || exit 1" scripting habbit on every
line I am attempting tomodify the scripts so that they execute with
set -e. Alas, this poses some interesting problems with pipes.
|
|
* This is a temporary stop-gap. All of these variables need to be set,
but they need to be done so in a universal fashion relative to the
target configurations for the build-tree. Currently setting them in
build-compile to figure out what all is needed and to clean up the
compilation process.
|
|
|
|
* Allow Buildrules to specify CONFIG_OPTS instead of overloading
pkg_compile() to specify a custom ./configure line
* Default pkg_compile() should make use of the global MAKE_OPTS
|
|
* The 'build' command is now capable of acting as a script-wrapper for
sub-commands. This elininates the libbuilder.sh script and the fairly
verbose checking for libbuilder.sh in every sub-command.
|
|
|
|
* The Builder build engine is now working sufficiently enough to warrent
a proper SCM checkin. I have been adding enhanced functionality to
the system that demonstrates that I am approaching the end of the
proof-of-concept phase.
|