You are here

LCFG client - remove obsolete module dependencies

Project ID: 
Current stage: 
LCFG client - remove dependency on obsolete modules (eg W3C::SAX)

The current LCFG client depends on a number of obsolete Perl modules (eg W3C::SAX). This project will replace these modules with more modern, supported equivalents (libxml2 based XML::LibXML).

The plan is to take the opportunity to create a new object-oriented API for accessing the profile/component/resource and packages information for an LCFG client profile. Initially the API will only be used for the rdxprof client process reading the XML profile but it will be designed in such a way that we can support multiple source file formats (e.g. the DBM file, a switch to SQLite or a new improved XML format). The aim is also that it should be possible to use this framework to store the information into multiple target file formats. In the longer term all the other LCFG client libraries could be converted to using this framework to avoid the current code duplication which prevents us from fully modernising the client-side code (particularly the components).


The W3C::SAX obsolete modules aren't in use anywhere else and we have to port them for each platform upgrade. There's a real risk that they won't port to the next platform upgrade, which may cause problematic delays.

  1. Work out the best way to parse the LCFG XML structure using the XML::LibXML Perl module (3 days)
  2. Design an object-oriented API for the component/lcfg/packages data gathered when parsing the XML (4 days)
  3. Create a test suite for the new API (2 days)
  4. Document the new API (1 day)
  5. Rework the LCFG client modules to use the new API when parsing the XML and generating the DBM and rpmcfg files (5 days)
Effort estimate: 
2-3 weeks