* Transferred all copyrights to Outpost Embedded, LLC.
(Forest Bond)
* Python 2.6 is the minimum required Python version.
(Forest Bond)
* The "rebar-diskimage" utility has been removed.
(Forest Bond)
* A dual-root model is now used. A "virtualizer" is used to build the
platform. The virtualizer is a restricted environment that provides root
access and can be customized (by adding and removing packages) to support
the build process.
The virtualizer to use for a build is specified using the new --virtualizer
command-line option. For example, use "--virtualizer chroot:$directory" to
use the "chroot" virtualizer in chroot $directory. The default for this
option is "chroot:chroot" (use the "chroot" virtualizer with directory
"chroot").
Presently, the only supported virtualizer is a chroot, which can be
initialized like this::
rebar --virtualizer chroot:$directory --create-virtualizer hardy
The platform is built in the /platform directory inside the virtualizer root.
See the documentation for details.
(Forest Bond)
* New build phase "initialize" was added. This currently implements a single
new function, prepartion of the virtualizer for other build steps. During
this build phase, packages required to support later build steps are
automatically installed into the virtualizer.
(Forest Bond)
* Fixed rare bug where resolv.conf backup is removed from host system instead
of chroot if copying resolv.conf is interrupted by an asynchronous exception
(due to a signal, for instance).
(Forest Bond)
* The ``Debug`` directive is no longer supported. To enable debugging, use the
new ``--debug`` command-line option.
(Forest Bond)
* The ``Hostname`` directive is no longer supported. The ``Platform``
directive should be used instead, like this:
Platform(architecture = 'i386', hostname = 'foo')
Note that ``Platform`` supports parameters other than the hostname. See the
documentation for details.
(Forest Bond)
* Directives ``BaseRepository``, ``AdditionalRepository`` have been replaced by
new directives ``Repository``, ``Bootstrap``. See the documentation for
details.
(Forest Bond)
* The ``KeepPackages`` directive has been renamed to ``Require``.
(Forest Bond)
* The ``ExtraPackages`` directive has been renamed to ``Install``.
(Forest Bond)
* The ``Require`` directive no longer supports regular expressions matching
package names. Actual package names must be used.
(Forest Bond)
* Build tools, build dependencies, and packages named by the ``Install``
directive are marked as automatically installed (using apt-mark) so that e.g.
apt-get autoremove will cause them to be removed.
(Forest Bond)
* The ``Target`` and ``target`` directives were removed, as was the
``--target`` command-line option.
(Forest Bond)
* Dropped directive ``Echo``. It was not very useful.
(Forest Bond)
* ``Include`` directive now supported. This is used to include additional
content in the Rebar source file. Documentation is pending.
(Forest Bond)
* /etc/mtab is no longer backed up, modified, and restored when entering the
chroot. If no /etc/mtab exists, however, an empty one is created. This
fixes errors creating ext2 and ext3 filesystems since some versions of
mkfs.ext2 and mkfs.ext3 try to check if the device is mounted before writing
data.
(Forest Bond)
* Fix passing arguments to ``object.__init__`` in ``Action.__init__``.
(Forest Bond)
* Disk image directives are no longer handled as post-remove actions. Instead,
a separate "ship" build phase is used (with "pre-ship" and "post-ship" action
phases).
(Forest Bond)
* The new ``PlatformImage`` directive should be used to request that a platform
disk image be built. Note that the arguments accepted by ``PlatformImage``
differ from those that were previously accepted by ``DiskImage``. See
the documentation for details.
(Forest Bond)
* Introduced new directive ``DiskImagingImage``, which builds imaging disk
images. These are bootable disk images that write a platform disk image to a
local storage device. Use with care, if such an image is booted on the wrong
machine, parmanent data loss can occur (but a confirmation prompt is
presented).
(Forest Bond)
* Introduced new directive ``DiskImagingDir``, which builds a directory
containing the same files that images created with ``DiskImagingImage``
would contain.
(Forest Bond)
* Introduced new directive ``NetworkImagingDir``, which builds files for PXE
booting an imaging system. The image file must be placed on an HTTP or FTP
server (wget must be able to access the URL).
(Forest Bond)
* A new image format called "gzimg" is supported. Scripts for building images
(``gzimg_build``) and writing images (``gzimg_write``) are included. Targets
that build disk images can be passed ``format = "gzimg"``.
(Forest Bond)
* ``print-size`` command is no longer supported.
(Forest Bond)
* The "chroot-shell" command has been renamed to "shell".
(Forest Bond)
* The interactive shell (using command "shell") handles SIGWINCH correctly via
pshell's support for it. Not doing so caused problems with bash's
interactive command-line editing. Obviously, this also has the benefit of
correctly handling actual window size changes that take place mid-session.
(Forest Bond)
* Build phase "print-chroot-size" is no longer supported.
(Forest Bond)
* Added new build phase "build" for building Debian packages. This was
previously done as part of the "install" phase.
(Forest Bond)
* When building packages from source, build dependencies are automatically
fulfilled and no longer need to be manually specified via ``ExtraPackages``.
(Forest Bond)
* When temporarily adding the local APT repository in the chroot,
/etc/apt/sources.list.d/rebar.list is used instead of modifying
/etc/apt/sources.list.
(Forest Bond)
* Source packages can either be complete source directories (including the
debian directory) or a Debian source package (a .dsc file and any
accompanying files).
(Forest Bond)
* An APT upgrade is performed during the "base" build phase (after running
debootstrap). This was previously not done until the "install" build phase.
(Forest Bond)
* Build steps are now implemented as Task objects, which are provided by Python
library pytasks. This allows for build progress reporting. Introduces new
dependency pytasks.
(Forest Bond)
* Output generation has undergone major rework. Multiple output formats are
now supported. The output format to use for a build is determined by the
``--output`` command-line option, which defaults to "concise". Output
similar to (but not exactly the same as) the old format can be achieved using
output format "verbose". Output formats "detailed" and "concise" are now
accompanied by a progress bar if stdout is connected to a tty. See the
documentation for details.
(Forest Bond)
* Dropped sclapp in favor of sclapp2 and pshell. Note that dependencies have
changed as a result (see README for details).
(Forest Bond)
* Fixed a bug where loading multiple Rebar environments in the same process
corrupted mutable default values. This would affect Rebar during normal
operation, but might have affected other programs making use of
``RebarEnvironment``.
(Forest Bond)
* Build failures and errors in Rebar files are now handled in a user-friendly
fashion rather than resulting in a Python traceback.
(Forest Bond)
* Build logging is now supported via command-line option "--log".
(Forest Bond)
* New directive ``ExportDirs`` is now supported. Files resulting from
package builds (where package sources are specified via ``SourceDirs``)
are copied to this directory after building. See the documentation for
details.
(Forest Bond)
* When building packages from source, the source package and changes file are
not signed. This avoids build failures due to missing keys.
(Forest Bond)
* /etc/kernel-img.conf is no longer backed up, modified, and restored when
entering/exiting the chroot. Instead, it is unconditionally written once
during the "base" build step. Customization of file contents or complete
removal can be performed as part of any other build steps.
(Forest Bond)
* /dev/shm is mounted inside the chroot. This is needed by programs that use
shared memory.
(Forest Bond)
* sync is executed before running losetup -d when building disk images. This
prevents a possible "Device or resource busy" error from losetup.
(Forest Bond)
* dpkg option --force-confnew is used when installing packages in the chroot.
(Forest Bond)
* pyfdisk is used for creating disk image partition tables. Built-in support
for generating partition tables is dropped. This introduces a new
dependency.
(Forest Bond)
* The ``PackageDir`` directive has been replaced with new directive
``BinaryDirs``. Note that ``BinaryDirs`` accepts more than one argument
and can be used more than once. See the documentation for details.
(Forest Bond)
* The ``PackageSourceDir`` directive has been replaced with new directive
``SourceDirs``. note that ``SourceDirs`` accepts more than one argument
and can be used more than once. See the documentation for details.
(Forest Bond)
* The ``Execute`` directive has been replaced with the ``Exec`` and ``Shell``
directives. Note that the accepted arguments for these new directives
differ from those accepted by ``Execute``. See the documentation for
details.
(Forest Bond)
* The ``Copy`` directive has been replaced with new directive ``CopyTo``.
Note that ``CopyTo`` arguments and semantics differ from those of the
original ``Copy`` directive. See the documentation for details.
(Forest Bond)
* Added support for a new directive, ``CopyFrom``. This is similar to
``CopyTo``, but inverted (it copies files from the platform to the host
system).
(Forest Bond)
* The ``Remove`` directive has been dropped. Use the "rm" command directly via
the ``Exec`` directive instead.
(Forest Bond)
* The ``Update`` directive has been dropped. Instead, use ``CopyTo`` with
``replace = True``.
(Forest Bond)
* The ``DisableServices`` directive has been removed. Use ``Exec`` to run the
appropriate commands to disable services for the build distribution.
(Forest Bond)
* Added new directive ``Target``. This can be used to define arbitrary targets
using a list of actions, like this::
Target('filename', [Shell('echo foo >filename')])
The action sequence specifies how the target is built.
(Forest Bond)
* GRUB errors are handled correctly. The previous error handling code was
broken and would lead to a hang waiting for the shell prompt, even though
it had already appeared. The GRUB error was also not reported correctly.
(Forest Bond)
* GRUB files are always copied to /boot/grub when building disk images using
GRUB as the boot loader, even if /boot/grub already exists. Existing files
are not overwritten. This prevents GRUB install failures when the user has
created /boot/grub/menu.lst but not copied the rest of the boot files needed
by GRUB.
(Forest Bond)
* The "clean" build phase was introduced. This build phase runs at the very
end of the build by default. When it runs, the platform is removed
completely from the virtualizer.
(Forest Bond)
* /sbin/initctl is replaced (diverted) with a no-op during build phases to
prevent upstart jobs from being started and stopped inappropriately.
(Forest Bond)