I’ve now put together a first attempt at the “release tool” part of the LCFG buildtools project. This should allow developers to use a CVS repository and “standard” LCFG/DICE release version practices without being tied into all the other parts of buildtools. This also helps show that switching to a new meta-data file (
lcfg.yml) as a replacement for parts of
config.mk works rather well.
There is currently a Perl module,
LCFG::Build::PkgSpec, which can be used to load and write out the meta-data file, this provides a reasonably nice interface to this specification. For example:
my $spec = LCFG::Build::PkgSpec->new_from_metafile('./lcfg.yml'); print 'Package name is: ' . $spec->name . "\n"; print 'Version Control System is: ' . $spec->get_vcsinfo('type') . "\n";
There is also an interface class for VCS handlers,
LCFG::Build::VCS, this specifies what attributes and methods must be implemented. There is currently one Perl module, which supports CVS, which implements all the required functionality,
LCFG::Build::VCS::CVS. Hopefully, with a bit of documentation, it will be relatively easy for developers to code a module to support their VCS of choice.
The release tool is used to carry out the three version altering functions previously done via the buildtools Makefile: release, majorversion, minorversion. It supports checking for uncommitted files and generating the ChangeLog file from the VCS log. For example:
lcfg-reltool --release ~/cvs/lcfg-foo lcfg-reltool --majorversion .
None of this is documented or packaged yet, that’s the next stage, after that I will be looking for early adopters to give it a whirl. To ease adoption I intend to create a tool which will take the
config.mk and generate the
Just to note, these modules are written using Moose it’s great!