[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