Hi folks, I have released schroot version 1.3.0, which will shortly be uploaded to Debian experimental. This will undergo further testing and gain a few more features and fixes (see the TODO file) before it enters Debian unstable as a 1.4.x stable series targeted at squeeze. If you are an schroot user, or use schroot with sbuild, I'd really appreciate you giving this a go. It's been in regular use by developers for several months, and is regarded as being stable and safe for general use. Once we are happy there are no regressions from the current 1.2.x stable series, we will consider moving it to unstable. While there are not currently any known problems with the code, it has undergone a number of large changes, and given the number of different ways in which people are using schroot, it's not possible to test every use case out there. The most likely issues are not being fully backward compatible with the configuration file format used in earlier versions (we aim to be fully compatible with all 1.2.x versions), which should be reported as bugs. The major new feature in this release is the addition of union filesystem support, by Jan-Marek Glogowski. This is likely to replace LVM snapshot support as the preferred way of cloning sessions due to the increased speed and robustness it offers, as well as using up less discspace for each clone. If you try out this exciting new feature, feedback would be much appreciated. schroot is available from the project's git repository: git clone git://git.debian.org/git/buildd-tools/schroot This release is tagged as release/schroot-1.3.0, with the debian release tagged as debian/schroot-1.3.0-1 Many thanks to everyone who contributed to this release, as well as all of the others who provided bug reports and suggestions for improvements. I hope you enjoy it! Regards, Roger Major changes in 1.3.0: 1) Exec scripts have been removed. Unlike setup scripts, these scripts were never used, and there are no known uses for them. Removing them will improve the performance of schroot. The run-exec-scripts configuration option is no longer used, but is still permitted to be used until it is obsoleted in a future release. 2) Setup scripts are now always run for all chroot types except "plain". In practice, scripts were required for all types except "plain" in order to function correctly. The ability to configure this is not useful and so setting run-setup-scripts is now deprecated in schroot.conf. It may still be set for backward compatibility, but it has no effect and will be removed in the future. 3) Chroot configuration files in /etc/schroot/chroot.d are not loaded if they are backup files or dpkg conffile backups. 4) Support for GCC versions prior to 3.4 has been removed. 5) System databases are copied into the chroot using the getent program to use the appropriate name service switch (NSS) modules to get the data, rather than just copying the files. This means all NSS database sources are supported, including NIS and LDAP. 6) Setup script output is logged to stderr which prevents schroot outputting to stdout when run with verbose logging enabled. 7) Most schroot features are compiled conditionally, which should ease porting to non-Linux platforms. 8) Support for union filesystems has been added (aufs and unionfs). This permits the use of read-only block-device, directory and loopback chroots with a temporary writable overlay. For "scratch" temporary chroots, this method is recommended over the existing LVM snapshot support. It is considered to be faster, more robust, and uses less disc space. 9) The "command-prefix" option no longer requires an absolute path to the command. It will use the normal search path inside the chroot to locate the command. 10) When creating a session, the users in "users", "root-users", and groups in "groups" and "root-groups" are no longer preserved. The user requesting access will be the sole user listed in "users" for the session; however, if the user was in "root-users" or "root-groups", they will be added to "root-users" instead. This ensures that only the user creating the session will have access, so that other users having access to the chroot will not also automatically gain access to other users sessions. The following people contributed to this release: Clytie Siddall (1): [po] Update vi translation Jan-Marek Glogowski (43): [build] Just link schroot-mount to boost filesystem lib [.gitignore] debian: Simplify ignore rules [debian] schroot-dbg: Add debug symbols package [debian] libsbuild-doc: Fix build-deps and dependencies [debian] rules: Run check before install when building packages [debian] rules: Use "$(MAKE) -C" in place of explicit "cd && make" [build] Adapt boostrap from libtoolize suggestions [build] Use $(mkinstalldirs) to create directories [sbuild-error] Add third error detail parameter [sbuild] chroot: Drop mount_device member [test] Add chroot_directory test data [sbuild] setup: Use CHROOT_DIRECTORY [sbuild::chroot_directory] Inherit from chroot_plain [sbuild::chroot_directory] Inherit from chroot_plain [sbuild::chroot_fs_union] New class to add filesysten union support [sbuild::chroot_directory] Add filesystem union support [sbuild::chroot_loopback] Add union filesystem support [sbuild::chroot_block_device] Add union filesystem support [build] Add missing whitespace [test] Add test for chroot_loopback [build] Remove config.h.in~ when bootstrapping [setup] Remove plain chroot type [sbuild] Move getcwd from sbuild-session.cc to sbuild-util.cc [sbuild::chroot_loopback] Add locking [sbuild::chroot] set_session_id sets session ID test: Use sbuild::getcwd to get abs_testdata_dir test: Add set_run_setup_scripts tests test: Unify environment tests etc/setup.d: Cleanup union handling in scripts build: Use $(mkinstalldirs) sbuild: Some cleanup for directory and union chroots etc/setup.d/10mount: Reuse loopback device sbuild::chroot Convert facets from vector to list debian: control: Add better schroot-dbg package dependencies sbuild::chroot: Don't write 'active' key etc/setup.d: Cleanup union handling in scripts sbuild::chroot_facet_union: Really use own error messages .gitignore: Add VERSION and .gdb_history sbuild::chroot_block_device_base: Don't lock union block devices test: Print key and value for keyfile and env test: Cleanup keyfile and environment tests schroot: Document session usage relating to --chroot doc: Fix some doxygen class headers Ji ZhengYu (1): [po] Update zh_CN translation LI Daobing (李道兵) (1): [po] Add zh_CN translation Loïc Minier (1): [man] Fix typos in schroot-script-config.5.in and schroot-setup.5.in Nick Fortino (1): [build] Use LIBS rather than LDFLAGS in library checks Nicolas François (2): [po] Update fr translation [po] Encoding is UTF-8, not ISO-8859-1 Pedro Ribeiro (1): [po] Update pt translation Petr Salinger (1): [sbuild] Order of "struct flock" members is not assumed. Roger Leigh (331): * Update translations. * Fix up gitignore for dchroot. * configure.ac: Change version to 1.3.0. * debian/changelog: Change version to 1.3.0. Add eu translation. * configure.ac: Increase minimum gettext version to 0.16. * debian/control: libsbuild-dev is in section libdevel. * TODO: Add logging items. * bin/schroot/setup/*, bin/schroot/exec/*: All scripts check if $CHROOT_SCRIPT_CONFIG exists, and exit with an error if not (but only if status=ok, in order that the setup-stop task succeeds on failure). Scripts using values from the $CHROOT_SCRIPT_CONFIG check that they are defined and valid before using them, and exit with an error if they are invalid. Generate ChangeLog automatically. Ignore ChangeLog. [po] Update de translation. [sbuild] Include missing <cstring>, needed by GCC 4.3. Merge branch 'master' of git+ssh://git.debian.org/git/buildd-tools/schroot Update translated strings and translator comments. Only generate ChangeLog if using git [test] Add parentheses around ambiguous statements [po] Add pt translation. [sbuild] chroot_config no longer uses O_NOFOLLOW [sbuild] Add missing static_cast to stat::check_mode [schroot] Read additional configuration from /etc/schroot/chroot.d. [debian] Add GIT repository information to control file. [schroot] Remove setup/50sbuild [schroot-mount] schroot-mount-main: Create mountpoint if needed. [NEWS] Document changes for 1.2.0 [dchroot] dchroot.1.in: Remove short option for --preserve-environment [debian] changelog: Close bugs for 1.2.0 [man] NAME section uses ASCII hyphen, not em dash [build] Use MKDIR_P in place of MKINSTALLDIRS [debian] Build-Depend on libboost-filesystem-dev [debian] Close #469038 Update copyright and author contributions [po] Update translations [debian] control: Bump Standards-Version to 3.7.3 [debian] libsbuild-doc.doc-base: Use section Programming/C++ Bump version to 1.2.1 [po] Update translations [scripts] Add po-notify script for translation updates [scripts] Don't ignore po-notify [schroot] Document /etc/schroot/chroot.d [schroot] Don't fail if the LVM snapshot device does not exist [sbuild] Don't fail if LVM snapshot device doesn't exist on SETUP_STOP [sbuild] Don't fail if block device doesn't exist on SETUP_STOP [setup] Don't clear mount options for LVM snapshots [sbuild] Remove redundant include [sbuild] Add "loopback" chroot type [debian] Document loopback chroot type Finalise version 1.2.1 [debian] Correct lintian warnings [sbuild::auth_conv_tty] Add weak reference to the auth object [scripts] Remove generated script po-notify [scripts] .gitignore: Ignore po-notify [sbuild::session] Don't inherit from sbuild::auth [sbuild::session] Access authstat via this pointer [csbuild] Correct variable name in doxygen comment [schroot.conf] Update distribution names for Squeeze. [debian] Close #516272 [sbuild::session] Fix memory leak in is_group_member [debian] Close #517223 [dchroot] Session code uses get_auth to get authentication data [build] Build against Boost version 1.37 [debian] control: Build-Depend on Boost 1.37 [sbuild] Remove support for GCC < 3.4 __gnu_cxx::stdio_filebuf [debian] Close #517041 [schroot] setup: Copy NSS databases using getent [sbuild] sbuild-run-parts: Explicitly close syslog fd [sbuild] sbuild-util: Add is_valid_filename [sbuild] sbuild-chroot-config: Use is_valid_filename on directory load [debian] Close #513307 [.gitignore] Ignore log and substvars files [debian] control: Remove duplicated word in description [debian] Use debhelper v7 compatibility mode [debian] control: Update to Standards Version 3.8.1 [sbuild-session] Export additional auth variables into setup environment [debian] Close #496629 [build] Add bash completion to build [debian] Configure and install bash completion [debian] rules: Split configure invocation onto multiple lines [sbuild-session] Export SCHROOT_SESSION_ID in user environment [build] Install SCHROOT_UNPACK_DIR [sbuild-session] Export SCHROOT_UNPACK_DIR for setup scripts [build] Install SCHROOT_UNPACK_DIR [setup] 05file: Use UNPACK_DIR and mount unpacked files [build] Add checks for POSIX thread support [build] Compile and link with POSIX thread support [debian] Close #520713 [test] Fix test to use correct write size [build] Add configure option to generate doxygen docs [NEWS] Bump version to 1.3.0 [po] Update translations [debian] Build-depend on doxygen and configure with --enable-doxygen [.gitignore] csbuild: Ignore csbuild [build] doc: Don't require MAINTAINER_MODE to build docs [debian] libsbuild-doc: Install docs from debian/build [debian] Document schroot-dbg addition [build] Use autoreconf in place of separate autotools commands [sbuild-log] Unify reason logging as a single function [sbuild-log] Rename DebugLevel to debug_level Merge branch 'master' of ssh+git://git.debian.org/git/buildd-tools/schroot Merge branch 'fs-union' [debian] rules: Only mkdir debian/build if it doesn't already exist [schroot] Document chroot_directory directory property [test] Add new chroot_directory tests for directory property [sbuild::chroot_directory] Add directory property to replace location Merge branch 'fs-union' [setup] 15killprocs: Use /bin/kill to remove bashism [debian] Build-Depend on boost 1.38 [sbuild] chroot_mountable: Add mount_device member [sbuild] sbuild-chroot-block-device: Update TODO item Rearrange configuration and manual pages [build] Remove manpages from bin/schroot/Makefile.am [build] 05fsunion setup script not yet merged [etc] Add .d suffix to exec and setup script directories [sbuild] sbuild-session: Remove support for exec scripts [man] Document removal of run-exec-scripts [sbuild] basic_keyfile: Allow NULL method pointers [sbuild] Remove run_exec_scripts [schroot-mount] Don't log command being executed [setup.d] Remove W: message prefix [sbuild] run_parts: Log script output [sbuild::chroot] Remove prototypes and member for run_exec_scripts [sbuild] chroot_mountable: Move location property from chroot [sbuild] chroot: Remove unused location member [TODO] Add new items [setup.d] 20nssdatabases: Make executable [etc] mount-defaults: Bind mount /dev/shm [debian] Close #526788 [schroot-mount] Act like mkdir -p rather than mkdir creating mountpoints [sbuild::chroot_file] Move CHROOT_FILE_UNPACK_DIR from session UNPACK_DIR [TODO] Add cleanup items for union and file chroots [sbuild::chroot] All chroots except plain run session scripts [sbuild::chroot_plain] Split from chroot_directory [build] Conditionally compile block-device and lvm-snapshot support [build] Build loopback chroot support conditionally [build] Include correct lockdev headers for sbuild-lock [build] Make personality support configurable [build] Loopback chroot doesn't depend on block-device [build] Make UUID support configurable [sbuild] Make PAM support configurable [sbuild::auth] Split into auth_pam and auth_null [sbuild] Add pam prefix to all pam auth names [debian] control: schroot-dbg is in section debug [po] Add new source files [po] Update English translation [build] Make UUID support configurable [build] Remove duplicated checks for UUID support [build] Remove last traces of exec.d [debian] Remove old checks for obsolete versions [NEWS] Document major changes [sbuild::auth] Add split auth_null and auth_pam [sbuild::auth_pam] Add missing prototype [schroot::main_base] Use new PAM header names [sbuild::chroot_directory] Remove erroneously added clone_source [sbuild::basic_keyfile] Replace last std::string usage with traits types [TODO] Remove completed basic_keyfile string_list removal [sbuild::chroot] Add session_id property [test] Update chroot_directory tests [sbuild::chroot_directory] Include correct header for parent class Merge branch 'master' of ssh://git.debian.org/git/buildd-tools/schroot [setup] Simplify conditional to use cleaner syntax [sbuild] chroot_mountable: Refactor as partial interface [sbuild::chroot_fs_union] get_path always returns the mount location [sbuild::chroot_mountable] Don't derive from chroot [sbuild::chroot_source] Don't inherit from chroot [sbuild::chroot_fs_union] Add underlay directory in addition to overlay [sbuild::chroot_union] Rework union mounts [sbuild::chroot_union] Synchronise with current master branch [TODO] Add union items [sbuild::chroot:block_device] Split into block_device_base [sbuild::chroot_union] Add clone_source_setup [sbuild::chroot_directory] Make chroot_union support configurable [sbuild::chroot_source] clone_source_setup is virtual [sbuild::chroot_directory] Add missing newline [sbuild::chroot_loopback] Include config header for conditional building [sbuild::chroot_loopback] Chain up to chroot::setup_env [sbuild::chroot_directory] Set SESSION_CREATE in all cases [sbuild::chroot_source] Move SESSION_PURGE into chroot_lvm_snapshot [sbuild::chroot_union] Don't set SESSION_CREATE unless union in use [test] Update tests for filesystem unions [TODO] Add enum |= and &= operators [man] schroot.conf.5: Document block-device union support [debian] Close #494481 [sbuild::chroot_union] Simplify conditional logic [test] Remove deprecated run-setup-scripts from tests [test] Use dynamic_pointer_cast for shared_ptr types [sbuild::chroot_union] Use dynamic_pointer_cast for tr1::shared_ptr [test] Improve environment diagnostic [test] Remove whitespace [test] sbuild_chroot_loopback: Update to use current union interface [build] Fix union configure check [debian] Remove debian/install after running dh_prep [sbuild] Reindent sbuild::util operator functions [sbuild::chroot] Reindent session flags [test] Make filesystem union tests conditional [test] Remove obsolete run_setup_scripts checks [sbuild::chroot_block_device_base] Simplify session flags [sbuild::chroot_source] Re-unify source member variables and methods [sbuild::chroot*] Remove duplicated source methods and members [sbuild::chroot] set_run_setup_scripts is protected [sbuild::chroot_union] Only print union details if configured [sbuild::chroot_directory] Always chain up to union methods [sbuild::session] Correct logic for setting mount location [man] Disable adjustment on long line to fix groff warning [debian] Update to Standards-Version 3.8.2 [NEWS] Document filesystem union support [sbuild::session] Only display command/shell if verbose [sbuild::util] Add split_string_strict [sbuild::chroot_union] Only set keyfile keys if union is configured [sbuild::run_parts] Fix script stream buffering [setup] Add 99check symlink to 00check to run on setup-stop [setup] 15killprocs adds sanity check for CHROOT_MOUNT_LOCATION [setup] Rename 05fsunion to 05union [setup] 10mount union mounting uses underlay directory [sbuild::session] Don't special-case handing of union mount location [po] Update translations Update copyright message for 2009 [po] Update translations [sbuild] Split chroot_plain into chroot_plain_base [sbuild::session] Correct check for plain chroot type [setup] 05union doesn't abort for non-union supporting chroots [setup] 15killprocs doesn't abort if there's no mount location set [sbuild::chroot_mountable] get|set_mount_device are pure virtual [sbuild::chroot] get_mount_location is not virtual [sbuild] Rename chroot_plain_base to chroot_directory_base sbuild/sbuild-config.h.in: Get default environment filter from configure [sbuild::environment] get method is const [sbuild::chroot_block_device] Chain up to chroot in copy constructor [sbuild::chroot_lvm_snapshot] Only inactive sessions serialise lvm-snapshot-options [sbuild::chroot_source] Replace is_source with source_clonable [sbuild::chroot] Make some methods public for testing [test] Test keyfile serialisation [TODO] Remove virtual inheritance [test] setup_env_chroot adds common environment [sbuild::chroot_block_device] Chain up to virtual base in all copy constructors [sbuild::chroot_union] Display union type [sbuild] Don't call specific clone_source_setup [test] Test source environment [sbuild::chroot_session] New class for session handling [sbuild] Add support for chroot_session to all session-creating chroot types [sbuild::chroot_session] Set base chroot active and set source options [sbuild::chroot_union] Set SESSION_PURGE session flag if a session [test] Add session checks to sbuild::chroot_loopback [sbuild] sbuild::chroot inheritance is non-virtual [sbuild] define copy constructur in classes inheriting chroot_session [sbuild] clone_ methods satisfy testcases [sbuild::chroot_file] Purge if active [sbuild::chroot_file] Reindent conditional statement [sbuild::chroot_session] set_session_active chains up to base set_active [sbuild::chroot_session] setup_env is virtual [test] Add tests for keyfile and environment [doc] Update doxygen version to 1.5.9 [doc] Use .log files in place of -stamp files [sbuild] Update doxygen comments to fix missing or broken parts [sbuild] Enable chroot_session in session [po] Update translations [sbuild::chroot] setup_env is const sbuild::chroot_facet: Add chroot_facet interface and skeleton personality facet .gitignore: Ignore new separate chroot-* tests sbuild::session: Search for command-prefix using search path sbuild::keyfile_parser is a class not a struct sbuild::basic_keyfile_parser: Constructor explicitly initialises all members sbuild::chroot_source: Allow setting of source-* properties for non-clonable chroots sbuild::chroot: Add initial chroot_facet support sbuild::chroot: setup_env method is const sbuild::chroot: Session ID detail only printed if session is active po: Update sbuild::chroot: Add interface to add, remove, replace and get facets sbuild::chroot: Pass chroot as parameter to facet functions sbuild::chroot_facet_personality: Add personality support from sbuild::chroot sbuild::chroot: Call methods from facets in addition to virtual methods sbuild::session: Use common name for personality facet pointer sbuild::chroot: Add const_ptr typedef sbuild::chroot_facet*: Add ptr typedefs and create and clone methods sbuild::chroot_facet_session: Add new session facet sbuild::chroot: Enable session facet sbuild::chroot: Add clone_source virtual method sbuild::chroot_source: Reimplement as facets sbuild::chroot_mountable: Replace with chroot_facet_mountable sbuild::chroot_union: Replace with chroot_facet_union sbuild::chroot_facet: Update all facet uses to use ptr and const_ptr types sbuild::session: Only use session_id property for cloning sessions etc/setup.d/10mount: Don't quote mount options build: Add git tagging code NEWS: Update to 1.3.0-rc1 scripts/git-version: Allow hyphens in version number po: Update POTFILES.in for new sources po: Update etc/mount-defaults: Add /dev and /proc/bus/usb (but commented out) build: Build static library by default etc/setup.d/10mount: Comma-separate loop mount option sbuild::chroot: clone_session is pure virtual and chroots always clone sbuild::chroot_facet_session: Move deserialisation code from chroot_facet_source sbuild::basic_keyfile: Ask user to update deprecated keys sbuild::chroot_facet_mountable: Serialise mount-device to keyfile sbuild::chroot_facet_session: Use correct class name for null method pointers sbuild::session: Split UUID generation into support function TODO: Remove done and add pending changes etc/setup.d: Set file unpack directory and add extra logging po: Add .tcc files po: Update sbuild::run_parts: Handle EINTR during reads sbuild::run_parts: Correct poll conditional man: Document NSSDATABASES etc: Remove SBUILD script default sbuild::chroot_facet_session: Split into chroot_facet_session_clonable test: Add mount-device to keyfile checks sbuild::chroot_facet_mountable: Only serialise mount-device for sessions TODO: Distinguish between chroot, source and session sbuild::chroot_facet_session_clonable: Remove source keyfile deprecation build: Require automake 1.10 and use silent-rules sbuild::chroot_facet_source_clonable: Remove source_clonable member sbuild::session: Default child_status to EXIT_FAILURE debian: Close #545706 build: Use MKDIR_P in place of mkinstalldirs csbuild: Add all sbuild options and wrap sbuild csbuild: Fail following exec failure csbuild: Update option group description bin: schroot_base_main: action_version prints configured options build: Remove -mt suffix from Boost library names sbuild: Validation of chroot properties allows strings to be empty sbuild::chroot_facet_session: Remove unused clone_session_setup sbuild::chroot_facet_session_clonable: Only allow session creator to access session test: Add root-user preservation check to chroot-directory sbuild: Add reentrant passwd and group wrappers sbuild::stat: Support C string constructor NEWS: Add 1.2.x changes debian: changelog: Add 1.2.x changelog entries NEWS: Bump version to 1.3.0 debian: Use Standards-Version 3.8.3 and Boost >= 1.39 po: Update po files and en translation build: Replace SCHROOT_RELEASE_DATE with m4_esyscmd po: Update en.po debian: Remove empty lines from changelog Tim Abbott (3): [schroot] Add bash completion [setup] 05lvm: Reorder lvm snapshot options to make more flexible etc/setup.d/10mount: Properly quote do_mount calls in 10mount -- .''`. Roger Leigh : :' : Debian GNU/Linux http://people.debian.org/~rleigh/ `. `' Printing on GNU/Linux? http://gutenprint.sourceforge.net/ `- GPG Public Key: 0x25BFB848 Please GPG sign your mail.
Description: Digital signature