[ANNOUNCE] x-jhbuild 0.4
halsmit at t-online.de
Mon May 23 03:50:42 PDT 2011
X-JHBuild is a framework for building and working with multiple repositories.
It makes use of JHBuild and is specialized for working with modules that use
Git as SCM.
The New Moduleset Stack:
There can now be multiple modulesets active at the same time. All modulesets
are cached inside of the repository group. Modifications to the stack are
staged at first, and then adopted. Differences as well as conflicts introduced
in the stage can be inspected.
The moduleset stack can persistently describe what repositories are available,
without the need to switch modulesets.
It is possible to write a moduleset that extends another moduleset. This way
developers can publish personal modulesets for their more volatile private
space. Users can add their own forks or modules through a local moduleset.
Changes to the source/online modulesets won't compromise the stack without
having the ability to spot the problems. The following problems are
- Multiple Inclusion: When a moduleset with the same name is included multiple
- Name Clashes: Multiple modules have the same name.
- Source Directory Clashes: Multiple modules use the same source directory.
- Missing Main Modules For Forks: If a fork-branch cannot be upgraded to a
module because the main module is missing.
- Missing Modulesets: A moduleset required by an extension moduleset is not in
the stack (a hint for missing forks, but might also be required to resolve
- Lost Source directories: When removing a moduleset that describes checked out
Furthermore, invalidating the configuration (moduleset-repo, moduleset-alias)
won't get in the way, unless there is an attempt to update the stack with
online versions of modulesets.
Selecting modulesets located online won't incur a performance penalty, because
all files will be downloaded and stored locally.
Modulesets are identified solely by their base-name without the '.modules'
suffix. If you save a moduleset locally under a different name, it won't be
recognized as the same.
The new plug-in 'ms-man' can be used to inspect and modify the moduleset stack.
The plug-ins 'diff-ms' and 'checkout' have been adapted to work with the
stack. They are all documented in their -h/--help output.
When using a repository group without a moduleset stack, it will be initialized
from the moduleset record file. The old record file will not be deleted, but
it is also not used in the new version.
The configuration option "checkout-moduleset" is now a list and can be used to
provide test cases that include extension modulesets. For example, if Mr-X has
written a moduleset that extends xorg.modules, the moduleset-repo configuration
could look somewhat like this:
checkout-moduleset = o:xorg http://.../mrx.modules
online-access = http://...
When switching to this configuration, the plug-in 'checkout' will inform about
modulesets that are not already in the stack. The missing modulesets can be
easily staged by executing:
xjh ms-man --config-sync
To write a moduleset that extends another moduleset, don't include the required
moduleset, but simply state that relationship with a <required> tag like so:
The only purpose is to provide a hint to the user in case there is an attempt
to remove the required moduleset or to use such a moduleset on its own. It can
also be a full URL in case that makes sense, but all that is done with it, is
to show it in the conflict output.
There is a documented example moduleset installed to
'~/.x-jhbuild/modulesets/example-extension.modules' that can be used as
a template for own modulesets.
The moduleset related environment variables have been removed. There is no
single moduleset selected now and therefore those variables can no longer be
used. Furthermore, the moduleset won't be displayed in the prompt anymore.
A valid JHBuild Config instance can only be obtained through msstack. Any
plug-in that imports buildconfig, should be written to only import msstack if
I cannot live with the name of 'checkout' anymore. That term is much to close
to the name of a command commonly used in diverse VCS for a different task. I
think 'switch' is a good name for a plug-in that switches between
configurations. A Sub-command alias can be used to keep the old name.
There is a lot of deprecated configuration in the section buildconfig which
will be removed. The following sections and options will be removed:
buildconfig.modules-filter # now known as modules-pick
msspec and buildconfig will see some simple interface changes.
- config verbosity default changed to only display modified settings.
- diff-ms can display dependency differences and does support forks.
- alias expansion display can be turned off.
- It is possible to use a local mirror for all repositories, which is useful
when working with multiple repository groups of the same project (see the
buildconfig.dvcs-mirror-dir configuration option).
- spool can prompt to apply the changes.
- The default build policy is now 'updated-deps'.
- checkout/switch does now accept a config-token as argument, without the '-c'
- It is now possible to select the JHBuild sources that are supposed to be used
with the environment variable JHBUILD_SOURCE_SELECT="/path/to/jhbuild".
- Several bug fixes.
Dirk Wallenstein (54):
navi-helper: Fix lookup for alias of an active module
navi-helper: Use real_name for 'active' lookup
config: Change verbosity defaults
show-env: Better *PATH modification examples
moduletraits: Use unmirrored_module url if available
diff-ms: Support for forks
Add modules_pick configuration option
modaccess: Don't pick modules when sorting
modinfo/modaccess: Add support for picked modules
jhbuild_call: Optionally execute with a given configuration
fork-man: Always use 'updateone' to clone modules
buildconfig: Hide tags in a HideVersionSelection request
moduletraits: Make 'url' and 'dir' traits special
Influence ModuleDiff instantiation with request flags
Separate traits assembling and merging
diff-ms/moduletraits: Add support for dependency traits
jhbuild-update: dvcs-mirror-dir fix
navi: Case insensitive command line completion
Optionally suppress alias expansion display
configsection: Add ConfigSectionValues.__repr__()
gitaccess: Only check validity of requested references
modinfo: Accept modules on standard input and as arguments
jhbuild_call: Don't show traceback for common JHBuild errors
spool: Prompt the user if changes should be applied
gitmodules: Use the official git-python repository
buildconfig: New flags to get a raw moduleset
diff-ms: compare raw modulesets
Update main help texts
utils: add listdir_path()
utils/moduletraits: Extract get_repogroup_relative_srcdir()
buildconfig: Change default build-policy to updated-deps
buildconfig: Interpret all BuildConfigFlags in JHBuild
moduletraits: Allow to compare the same module instance
msspec: More meaningful exceptions
buildconfig: Fix error generation with unknown variable
msspec: Recognize home-relative path spec as relative
msspec: Raise a CommonError for an empty/invalid spec
msspec: Expand alias in get_moduleset_name()
msspec: add is_existing_url()
msspec: Add ModulesetSpecDesc class
Remove moduleset related environment variables
repogroup: Add moduleset stack location
spool: documentation update
Use a moduleset stack
msstack: Update bash-completion after stage adoption
Add a documented example extension-moduleset
checkout: Trigger an error when called without arguments
checkout: Take a config-token as argument
init: Don't support nesting repository groups
buildconfig: Use an empty default value for installprog
Select JHBuild source to use by environment variable
example-extension.modules: Fix dependency example
More information about the xorg-devel