Differences between revisions 18 and 19
Revision 18 as of 2016-12-23 18:21:33
Size: 1954
Editor: GuillemJover
Comment: Update and cleanup
Revision 19 as of 2017-04-17 12:51:00
Size: 2542
Editor: GuillemJover
Comment: Update
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
 * Dpkg::Control: Get rid of this mess, start from scratch on a new Dpkg::Deb822 hierarchy. Some of the problems are:  * Dpkg::Control: Get rid of this mess, start from scratch on a new Dpkg::Deb822 hierarchy (there's a pu branch around). Some of the problems are:
Line 13: Line 13:
   * Several of the file formats are missing Dpkg::Control modules.
   * The tied hash implementation makes the modules very slow.
   * Several of the file formats are missing Dpkg::Control modules. All of they should have a proper module to import, with sane defaults, etc.
   * The tied hash implementation makes the modules very slow (remove the tie as part of the base API, if at all make it a separate module that can be tied after the fact).
   * The field capitalization handling makes the modules very slow. They should always be assumed to be in lc on APi entry (or lc otherwise) and only output in their canonical capitalization form on output.
Line 16: Line 17:
   * The list of supported digests on various file formats is tied to the supported list of digests from Dpkg::Checksums, which should be independent.
Line 18: Line 20:
 * Dpkg::Shlibs: Several of the modules here are objdump and/or ELF-specific, this would need to be untangled to makes this portable to systems such as Mac OS X which uses the Mac-O format.  * Dpkg::Shlibs: Several of the modules here are objdump and/or ELF-specific, this would need to be untangled to makes this portable to systems such as Solaris, or Mac OS X which uses the Mach-O format.

This page summarizes big and global changes that need to be done to the perl API (from libdpkg-perl), some of which might require bumping the major module VERSION as they might be too intrusive.

This is an initial brain dump.

API fixes

  • Dpkg::Interface::Storable: The Interface name here does seem superfluous, remove. https://pause.perl.org/pause/query?ACTION=pause_namingmodules

  • Dpkg::Build*: Some of the modules are namespaced as Build::* some others as Build*, unify.
  • Dpkg::Control: Get rid of this mess, start from scratch on a new Dpkg::Deb822 hierarchy (there's a pu branch around). Some of the problems are:
    • Cyclic dependencies due to the vendoring hooks applied on the base modules and the Dpkg::Vendor hierarchy using Dpkg::Control as a parent (that's why we currently have the *Core mess), instead of applying them on the specific file format modules.
    • Several of the file formats are missing Dpkg::Control modules. All of they should have a proper module to import, with sane defaults, etc.
    • The tied hash implementation makes the modules very slow (remove the tie as part of the base API, if at all make it a separate module that can be tied after the fact).
    • The field capitalization handling makes the modules very slow. They should always be assumed to be in lc on APi entry (or lc otherwise) and only output in their canonical capitalization form on output.
    • While a unified list of fields looks nice, it has the problem that the fields are context sensitive and they might change semantics or format depending on the file they are found in. These need to be specific to those modules. Probably some of the field function handling can be shared though, but not the field definitions.
    • The list of supported digests on various file formats is tied to the supported list of digests from Dpkg::Checksums, which should be independent.
  • Dpkg::Checksums: The interface is very confusing, the same functions are used to add and checksum files and to verify that the files have the same checksums.
  • Dpkg::Changelog: This hierarchy is confusing and having to use the Parse module a bit inconsistent and annoying, rethink?
  • Dpkg::Shlibs: Several of the modules here are objdump and/or ELF-specific, this would need to be untangled to makes this portable to systems such as Solaris, or Mac OS X which uses the Mach-O format.
  • Unify the new() constructor behavior for Dpkg::Interface::Storable based modules, some load by default some do not.