[buildd-tools-devel] schroot 1.7.0 released
Roger Leigh
rleigh at codelibre.net
Sun May 5 11:23:16 UTC 2013
I have released version 1.7.0 of schroot; this is a development release
which will be the basis of the 1.8 (or 2.0) release intended for
jessie.
* Major changes in 1.7.0:
1) Support for disassociating networking in the chroot from the host
system has been added. This may be enabled by setting
"unshare.net".
2) Support for execution scripts has been re-added. These are used
to set up the environment when a single command is executed, such
as for disassociating networking.
3) schroot now requires a C++11 compiler to build. Several C++11
features are now used to make the code more robust and
maintainable, including range-based for loops, auto (automatic
type detection) and container initialiser lists. Existing use of
TR1 types has been replaced with the use of the C++11
equivalents.
4) The build system has been refactored to use nonrecursive make.
It is no longer possible to build individual subdirectories, but
parallel building is far faster and dependencies between objects
in different directories may now be described directly.
5) Support for device locking with liblockdev has been removed;
liblockdev is no longer required for using "block-device" or
"lvm-snapshot" chroot types. lockdev locking was not
particularly useful, and there is no decrease in safety with this
change.
6) Session identifiers are no longer UUIDs. The requirement for
libuuid has been removed. Session identifiers are now six random
alphanumeric characters (derived from the current system time)
plus the process ID. The new IDs are rather shorter and more
readable than UUIDs, and will remain sufficiently unique that
there should be no clashes between automatically-created session
names.
7) The unused and incomplete csbuild and schroot-sbuild wrappers for
sbuild have been removed.
8) The source code has been reorganised and refactored to be more
useful for third-party developers. libsbuild is now built as a
shared library by default. While it is possible to use static
linking, this is discouraged, and it also requires the use of
-Wl,--whole-archive when linking, to prevent loss of chroot
facets which are used indirectly.
9) The output of "schroot --version" now displays installed chroot
facets rather than available chroot types.
This release adds only one new feature, support for unshare(2). The
major effort in this release has been a reorganisation and refactoring
of the source code; this change does not alter the behaviour of
schroot, but does improve its robustness and maintainability. When
chroot "facets" were introduced in 2009 to allow optional functionality
to be added to chroots (such as personality support), the intention
was always that this would eventually encompass all configurable
aspects of chroots. This release replaces all the classes for specific
chroot types (chroot_plain, chroot_lvm_snapshot) etc. with facets,
which makes serialisation and extension much easier.
The main part of schroot (libsbuild) is no longer statically linked;
it's now a proper shared library. This is initially going to be
unversioned (the release version is hardcoded in the soname, rather
than using proper ABI versioning), during the development of 1.7.x,
but this can be replaced with proper versioning, maybe even with
symbol versioning, for the next stable release.
Future planned work
· Add YAML serialisation to supercede the INI-style format we
currently use. We are reaching the limits of what a flat
key-value pair format can provide, and a format which can
store trees, arrays, maps etc. will provide the flexibility
for this. Currently arrays are hacked in as comma-separated
values, and trees are hacked by extending the keys with dot
separators, but this isn't sufficient.
· Further C++11 work. Use unique_ptr where shared_ptr isn't
necessary.
· Add gcov support.
· Extend test coverage.
What would you like to see added/changed? I would very much
appreciate any suggestions and feature requests, etc.
Regards,
Roger
[diffstat omitted due to the size]
Roger Leigh (213):
NEWS: Bump version to 1.7.0
debian: Bump version to 1.7.0-1
Merge branch 'schroot-1.6'
Merge changes from schroot-1.6
schroot-mount: Canonicalise symlinks to avoid host mounts
man: Document symlink mountpoint canonicalisation
NEWS: Document symlink mountpoint canonicalisation
15binfmt: Send which error message to null
sbuild::chroot_config: Make debug message unambigious
sbuild::chroot_config: Remove namespace from alias
10mount: Use secure subdirectory of /var/lock for lockfile
debian: Create lock directory on upgrade and startup
Revert "sbuild::chroot_config: Remove namespace from alias"
sbuild: Don't call set_mount_device indirectly from ctor
sbuild::chroot_facet_session: strip namespace from selected name
sbuild-mount: Correctly resolve paths with symlinks
sbuild: Correct alias handling
sbuild: Test source session cloning
sbuild: source block-device does not expect to have a union facet
schroot-mount: Cope with recursion into single directories
schroot-mount: Remove unused variables
debian: Merge 1.6.4-1 changelog
sbuild: Add header missing on non-Linux (LVM) builds
sbuild::session: Initial support for unshare(2)
sbuild::chroot: Add get_used_keys method
sbuild::chroot_facet_userdata: treat unused keys as userdata
sbuild: Add unsharing of network devices
NEWS: Document unshare and exec script support
sbuild::chroot_facet_userdata: Allow retrieval of userdata with type conversion
debian: Document unshare and exec script changes
etc: Add sbuild fstab template for freebsd
sbuild::chroot_facet_userdata: Add additional unsharing options
po: Update
schroot-mount: Canonicalise base path
NEWS: Merge changes from schroot 1.6.4
debian: Merge changes from schroot 1.6.4-4
Replace tabs with spaces in all source code
Merge changes from 1.4.27
Use C++11 <memory> and <tuple> directly
build: Check for functioning tr1::regex
Use C++11 range-based for loops
sbuild: Replace sbuild::null with nullptr/std::nullptr_t
sbuild::error map uses C++11 static initialisers
sbuild::keyfile_parser no longer uses type traits
sbuild::basic_keyfile: Separate parsing into sbuild::keyfile
sbuild::basic_keyfile is no longer a template
NEWS: Document C++11 requirement
sbuild: Remove keyfile_base
sbuild::keyfile: The parser inherits the keyfile types
sbuild::keyfile: Make value_type a boost::any internally
sbuild::keyfile: Refactor reading and writing
build: Use non-recursive make
build: Remove autoconf warnings from configure.ac
.gitignore: ignore .dirstamp
Update copyrights of all files
debian: copyright file uses DEP-5 copyright format
scripts: Remove unused and obsolete schroot_release.m4.in
Remove device locking
po: Update
debian: Remove liblockdev from Build-Depends
debian: Build using g++ in C++11 mode
doc: Update Doxygen doxyfiles to v1.8.1.2
doc: Use correct paths for sources and tag files
build: Remove last traces of unused DCHROOT_CONF
sbuild: Remove use of libuuid
README: Remove liblockdev and libuuid
debian: Remove UUID support
build: Correct test dependencies
build: Don't distribute scripts/schroot_release.m4.in
schroot-listmounts: Iterate over mounts in reverse order
sbuild: unique_identifier uses gettimeofday for random string
NEWS: Document build changes
debian: Support parallel building
README: Remove UUID requirement
debian: Remove libuuid from Build-Depends
sbuild: Remove sbuild- prefix
dchroot: Remove dchroot- prefix
dchroot: Remove dchroot- prefix (2)
schroot-base: Remove schroot-base- prefix
schroot-base: Remove schroot-base- prefix (2)
schroot-base: Remove schroot-base- prefix (3)
schroot: Remove schroot- prefix
schroot: Remove schroot- prefix (2)
schroot-listmounts: Remove schroot-listmounts- prefix
schroot-listmounts: Remove schroot-listmounts- prefix (2)
schroot-mount: Remove schroot-mount- prefix
schroot-mount: Remove schroot-mount- prefix (2)
csbuild: Remove csbuild- prefix
csbuild: Remove csbuild- prefix (2)
schroot-sbuild: Remove schroot-sbuild- prefix
schroot-sbuild: Remove schroot-sbuild- prefix (2)
test: Reorganise tests by component
test: Reorganise tests by component (2)
test: Reorganise tests by component (3)
po: Update
libexec: Move libexec programs from bin to libexec
libexec: Rename schroot-listmounts to listmounts
libexec: Rename schroot-listmounts to listmounts (2)
libexec: Rename schroot-mount to mount
libexec: Rename schroot-mount to mount (2)
libexec: Update .gitignore
po: Update paths
libexec: Remove from include path
doc: Update search paths
lib: Move libsbuild to lib
lib: Move libschroot-base to lib
test: Merge helpers.h into sbuild/chroot.h
lib: Move libtest to lib
doc: Use new paths
libexec: Update include guards
po: Update paths
po: Update paths
po: Update
po: Update en translation
build: Update include paths
lib: Rename schroot-base to bin-common
lib: Rename schroot-base to bin-common (2)
lib: Rename schroot-base to bin-common (3)
bin: Remove csbuild and schroot-sbuild
NEWS: Document csbuild and schroot-sbuild removal
lib: Move libschroot to schroot-common
lib: Move libschroot to schroot-common (2)
lib: Move libdchroot to dchroot-common
lib: Move libdchroot to dchroot-common (2)
schroot: Move schroot_common::main to schroot
schroot-common: Rename main_base to main
schroot-common: Rename options_base to options
dchroot-common: Rename main_base to main
dchroot-common: Rename session_base to session
dchroot: Remove redundant dchroot.conf comments
sbuild: Move chroot to namespace chroot
sbuild: Move chroot-config to namespace chroot
sbuild: Move chroot-directory and chroot-plain to namespace chroot
sbuild: Move chroot-block-device and chroot-lvm-snapshot to namespace chroot
sbuild: Move chroot-file to namespace chroot
sbuild: Move chroot-loopback to namespace chroot
sbuild: Move chroot-btrfs-snapshot to namespace chroot
sbuild: Move chroot-custom to namespace chroot
sbuild: Move chroot-facet to namespace chroot::facet
sbuild: Move chroot-facet-mountable to namespace chroot::facet
sbuild: Move chroot-facet-personality to namespace chroot::facet
sbuild: Move chroot-facet-session and session-clonable to namespace chroot::facet
sbuild: Move chroot-facet-source and source-clonable to namespace chroot:facet
sbuild: Move chroot-facet-union to namespace chroot::facet::fsunion
sbuild: Move chroot-facet-unshare to namespace chroot::facet
sbuild: Move chroot-facet-userdata to namespace chroot::facet
sbuild: Move auth_* to namespace auth
doc: Update sbuild paths and namespaces
test: Mirror lib hierarchy
doc: Document schroot-common and dchroot-common
Merge branch 'rename'
sbuild::chroot::facet: Make pure virtual methods virtual
sbuild: Add storage facet
facet: set_chroot is virtual
facet: Add block-device-base
sbuild::chroot: Add _strict variant of get_facet
sbuild::chroot: Move setup_session_info to session facet
sbuild::chroot::facet::storage: Include setup_lock and get_path methods
sbuild::chroot: Default methods delegate to storage facet
sbuild::chroot: Facet exceptions include class name
sbuild::chroot: Migrate block-device and lvm-snapshot to facets
sbuild::chroot::facet: Add directory_base storage facet
sbuild::chroot: Migrate plain chroot type to storage facet
sbuild::chroot: Migrate btrfs-snapshot to storage facet
sbuild::chroot: Migrate directory to storage facet
sbuild::chroot: Migrate file to storage facet
sbuild::chroot: Migrate loopback to a storage facet
Reindent all headers
Reindent all sources
sbuild::chroot::facet: Add factory class
sbuild::chroot: Migrate custom to storage facet
sbuild::chroot: Use factory interface for all storage facets
sbuild: Remove unused directory_base
sbuild::chroot: Remove unused virtual methods
build: Build facets conditionally
sbuild: Replace clone_source with source_setup facet
sbuild::chroot::facet: Add copy argument to set_chroot
sbuild: Replace clone_session with session_setup facet
sbuild: Align source cloning with session cloning
sbuild::chroot: Remove clone() from all chroot types
sbuild::chroot: Use facet::factory to add storage facets
test: Use chroot factory rather than specific classes
sbuild::chroot::facet::session_clonable: Remove plain special case
sbuild::chroot: Remove concrete implementations of chroot types
build: Install headers into correct subdirectories
All code uses <> includes
debian: Add shared library
Merge branch 'chroot-type-class-removal'
build: personality support is not built if not available
NEWS: Document refactoring and version output changes
sbuild::chroot: Remove obsolete keys
facet::fsunion: Drop pre-facet special case
chroot::facet::facet: Remove chroot parameter from all methods
TODO: Remove done and obsolete items
sbuild: Move session_flags from chroot to chroot::facet
chroot::facet::factory: Add auto_install property
sbuild::chroot: Automatically install factory-created facets
sbuild::chroot: Don't install session_clonable facet automatically
chroot::facet: Update doxygen description
libexec: Sources use namespace scoping
lib: Sources use namespace scoping
facet::unshare: Remove unnecessary #ifdefs
facet::factory: Use facet_info::name for facet::get_name to avoid duplication
sbuild::chroot: clone checks for storage facet
chroot::facet: storage is an interface only
all: Place const before typename for const references
po: Update POTFILES.in with new source files
po: Update
debian: Correct library dependencies
NEWS: Add development release info
debian: Close #637870 and set distribution to experimental
build: Correct minor VPATH issues
debian: Update changelog date
--
.''`. Roger Leigh
: :' : Debian GNU/Linux http://people.debian.org/~rleigh/
`. `' schroot and sbuild http://alioth.debian.org/projects/buildd-tools
`- GPG Public Key F33D 281D 470A B443 6756 147C 07B3 C8BC 4083 E800
More information about the Buildd-tools-devel
mailing list