X-JHBuild: A thin JHBuild wrapper with plug-ins.
Dirk Wallenstein
halsmit at t-online.de
Thu Jul 15 01:34:27 PDT 2010
X-JHBuild-0.1.5
===============
This release is mostly about due changes to become future proof. If you
already use X-JHBuild you have to take a few steps to convert your
current installation and repository groups.
Changes:
--------
- Separate repository, installation and configuration.
- Let the main command be xjh.
- Use a configuration-directory at the repo-group root instead of a
single configuration file.
- PATH and LD_LIBRARY_CONFIG modifications have to be explicitly
activated in plug-ins -- just eval another variable.
- Use a new modules file 'xjh.modules' with another directory layout.
- Support multiple repo-group local configurations (but no longer global
ones)
- Support repo-group specific hooks.
Plus:
-----
- Start of an xjhbuild library with, among other things, easy access to
JHBuild data (install-db, dep-list, etc)
- Tinderwrap can be stopped! And it supports other operations like
retroactively opening the log.
- The main help dialog gives an overview of all available subcommands.
- All distributed subcommands support the -h/--help switches.
- Facilitate selection of a non-default --libdir
Best:
-----
- A new plug-in 'modinfo' to iterate over all or selected modules. The
modules can be filtered by diverse attributes obtainable from JHBuild,
like installed, up-to-date, etc. It can display info about each module
that is easy to parse.
Installation:
=============
The installation procedure still needs a lot of work, but it uses a
separate location, that can later be moved without impact on the user.
For now almost everything is stuffed into the directory
~/.x-jhbuild/.internal until a decent installation procedure has been
put into place. There are two locations which are of interst to the
user:
~/.local/bin/xjh
~/.local/share/x-jhbuild/shell-utility-functions.sh
Start over:
-----------
If you don't mind to install X-JHBuild anew and start with a new
repo-group you would simply have to:
- Remove or rename ~/.x-jhbuild
- Inside the unpacked archive, execute 'make install'
- Make ~/.local/bin/xjh available in you path.
- Start with a new repo-group. (xjh init <path-to-new-repo-group>)
Convert:
--------
If you want to convert an existing installation/repo-group, the
following steps should accomplish that:
- Rename ~/.x-jhbuild
- Inside the unpacked archive, execute 'make install'
- Move your plug-ins over to the new empty directory
'~/.x-jhbuild/plugins'. Note that the PATH and LD_LIBRARY_CONF
modifications are not available by default. As I thought that it would
mostly be used in shell-scripts, you can simply 'eval
$XJHBUILD_ENVIRONMENT_SWITCH' to use the new values. See 'xjh
show-env', the renamed new version of the 'testme' plug-in.
- For each repo-group:
* Re-init it with 'xjh init' and move the previous
configuration file to the new one at .xjh/config/default.xjh. You
might want to merge the files as there are diverse improvements and
additions in the comments.
* Copy your hooks to .xjh/hooks
* Move to the new layout used by xjh.modules (see below).
- Existing private modulesets might need to be converted to the new
repo-group layout, too.
Move to a new repo-group directory layout:
==========================================
There has been the need for a policy concerning the directory layout of
a repo-group and the used module-ids, so that these user visible parts
of a moduleset don't change too often. It is based upon the relatively
stable package name and the fd.o online repository layout.
This is the comment at the top of xjh.modules:
* The module-id should be equal to the name of the package.
* The checkoutdir should be equal to the module path with the
following modifications:
+ The base directory name should be changed to match the module-id,
if necessary.
+ Repositories in the section "freedesktop.org repositories" should
get a 'fdo/' prefix.
+ User repositories should get a 'people/' prefix and the tilde
should be removed.
+ Repositories not hosted on fd.o should get a 'external/' prefix.
To convert from my.modules to xjh.modules, there is the following
plug-in that can be copied to ~/.x-jhbuild/plugins/ and executed:
var/moduleset-transition-from-my-to-xjh
It will describe what it intends to do and then prompt for confirmation.
There is another plug-in that can help creating such conversion scripts,
but it is currently a bit too rough to install it into the standard
location. Also, I hope that the need for it does not arise to often,
with the moduleset policy in place. It is located here:
var/moduleset-transition
Both plug-ins support the -h/--help options.
modinfo
=======
This new plug-in makes information from JHBuild available more
conveniently. The --help output is very informative. Here just a few
examples what you can do with it:
Display the source directory of every module that is checked out:
$> xjh modinfo --checked-out --format=dir
After an update, find out which dependencies of the xorg-server are not
up-to-date (where HEAD in not installed, or the tree is dirty):
$> xjh modinfo --not-up-to-date --deps xorg-server
Using a moduleset snapshot will detach heads. Find all modules with a
detached head and create a special branch at that position. This will
prevent a later update operation from moving away from that position.
$> xjh modinfo --detached --format=dir | xargs -I XXX sh -c 'cd XXX; pwd; git checkout -b sticky-version'
And much more.
modinfo is the command line interface to the modaccess library module,
which can be used to write specialized plug-ins.
Dirk Wallenstein (71):
plugins: Improve the coding style of the 'sort-u' plug-in
plugins: Fix the 'revdep-rebuild' plug-in
plugins: Remove 'revdep-rebuild'
plugins: Add operational arguments and help to 'tinderwrap'
plugins: Support help requests in plug-ins
plugins: Use a default editor if $EDITOR is unset
hooks: Minor coding style improvement
Add short help display for internal commands
Dispatch plug-ins more reliably
Pass all subcommands into the restriction enforcer
Make plug-ins available through the PlugIns class
Add help for plug-ins
Facilitate selection of a different libdir
plugins: Move main log file only if it exists
plugins: Remove useless output from 'testme'
plugins: Rename the plug-in 'testme' to 'show-env'
plugins: Encapsulate tinderbox command check
plugins: Add a status operation to tinderwrap
plugins: Handle tinderbox invocation failure in tinderwrap
Remove old example configurations.
Use a directory for the configuration of a repo-group
Make xjh directory path available to plug-ins
plugins: Use the xjh-dir to record the tinderwrap pid
Remove the general component access function
Use a class to make repo-group specific hooks available
hooks: Rename the example hook to make it inactive
plugins: Check if the process for the recorded pid is active
Introduce variables that refer to installation locations
Search for modulesets in user and distro locations
Let the official command be 'xjh'
Introduce a simple Makefile to install X-JHBuild
Use the new layout from the installation procedure
Prevent a call to max() with an empty sequence
config: Add a section to select additional make targets
plugins: Only open the log if the main log file exists
Catch subprocess invocation failures
Implement the subcommand 'script' as a plug-in
Switch to xjh.modules
config: Change the example moduleset alias
Fix selecting a moduleset by path specification
config: Give an example for the simple branch switch mode
Allow to switch the runtime environment inside a plug-in
CPU/OS dependent compilation update
modules: add bitmap to ext-apps meta-module
config: Rename xserver to xorg-server in the config template
Prepare xjhbuild library location
Move the general helper functions into the utils library
Complement the copyright note of the main script
Import one module per line
JHBuild import preparations
Move install locations and xjhbuild imports to the top
Sort in remaining helper functions.
Move the Flags helper class into the utils library
utils: Record the entirety of all flags in an attribute
utils: Check for all whitespace in the corresponding function
Move cpu/os dependent compilation into depcomp module
depcomp: Wrap the modules-to-skip calculation into a class
utils: Add get_envvar_checked
Move the envvar name variables into the config module
Rename EnvvarNameModulesetPath to EnvvarNameModulesetURI
modules: Add a policy comment for 'external' repositories
lib: Add the module 'modaccess'
plugins: Add the plug-in 'modinfo'
Add moduleset transition scripts.
plugins: Break the plug-in 'sort-u'
Add a short-help line for the plug-in 'modinfo'
Add a README file
Set an envvar for the plugin-data path
Add copyright notes
Minor help, documentation and spacing fixes
x-jhbuild-0.1.5
--
Greetings,
Dirk
-------------- next part --------------
A non-text attachment was scrubbed...
Name: x-jhbuild-0.1.5.tar.bz2
Type: application/x-bzip2
Size: 50746 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg-devel/attachments/20100715/be2e8e41/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: all-new-commit-messages.log.bz2
Type: application/x-bzip2
Size: 6794 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg-devel/attachments/20100715/be2e8e41/attachment-0003.bin>
More information about the xorg-devel
mailing list