Provided by: libconfig-model-dpkg-perl_3.004_all bug

NAME

       Config::Model::Dpkg - Edit and validate Dpkg source files

SYNOPSIS

   invoke editor
       The following command must be run in a package source directory. When run, cme will load
       most files from "debian" directory and launch a graphical editor:

        cme edit dpkg

       You can choose to edit only "debian/control" or "debian/copyright":

        cme edit dpkg-control
        cme edit dpkg-copyright

       Or edit debian patches headers, all at once:

        cme edit dpkg-patches # note patches with 'es'

       Or one patch at a time:

        cme edit dpkg-patch debian/patches/foo

       Patch can be specified using the patch name:

        cme edit dpkg-patch foo

   Just check dpkg files
       You can also use cme to run sanity checks on the source files:

        cme check dpkg

   Fix warnings
       When run, cme may issue several warnings regarding the content of your file.  You can
       choose to  fix (most of) these warnings with the command:

        cme fix dpkg

   check and arbitrary file
       You can specify another file to check:

         cme check dpkg-copyright foobar

       This applies only to "dpkg-control", "dpkg-copyright" or "dpkg-patch".

   programmatic
       This code snippet will change the maintainer address in control file:

        use Config::Model ;
        use Log::Log4perl qw(:easy) ;
        my $model = Config::Model -> new ( ) ;
        my $inst = $model->instance (root_class_name => 'Dpkg');
        $inst -> config_root ->load("control source Maintainer=foo@bedian.arg") ;
        $inst->write_back() ;

DESCRIPTION

       This module provides a configuration editor (and models) for the files of a Debian source
       package. (i.e. most of the files contained in the "debian" directory of a source package).

       This module can also be used to modify safely the content of these files from a Perl
       programs.

user interfaces

       As mentioned in cme, several user interfaces are available:

       •   A graphical interface is proposed by default if Config::Model::TkUI is installed.

       •   A Fuse virtual file system with option "cme fusefs dpkg -fuse_dir <mountpoint>" if
           Fuse is installed (Linux only)

   package dependency checks
       Package dependencies are checked on several points:

       •   Whether the package is available in Debian (from sid to old-stable)

       •   If the package is a known virtual package. Known means listed in Debian packaging
           manual or known by the author. Feel free to log a bug against libconfig-model-dpkg-
           perl if a virtual package is missing. But please don't log a bug if the virtual
           package is used only during a transition.

       •   If a package older that the required version are available in Debian (from sid to old-
           stable). If not, cme will offer you the possibility to clean up the versioned
           dependency with "cme fix dpkg" command.

       •   The syntax of the dependency (including version requirement and arch specification).

       •   Consistency of alternate dependency for Perl libraries

       These checks only generate warnings. Most of these checks can be fixed with "cme fix dpkg"
       command.

Examples

   Migrate old package file
       Most of old syntax can be automatically migrated to newer parameters with

         cme migrate dpkg

       This migration can be limited to "control" or "copyright" files:

         cme migrate dpkg-control
         cme migrate dpkg-copyright

       Restore GPL summary to default value:

         cme modify dpkg-copyright ~~ 'License:GPL text~'

       Dump copyright file content in a format usable with "cme modify":

         $ cme dump dpkg-copyright
         Comment="Native package. This package is a spin-off from
         libconfig-model-perl. Upstream (who is also the debian packager)
         decided to create a Debian native package for the Debian specific
         parts of Config::Model"
         Files:"*"
           Copyright="2005-2013, Dominique Dumont <dod@debian.org>"
           License
             short_name=LGPL-2.1+ - -
         License:LGPL-2.1+
           text="   This program is free software; you can redistribute it and/or modify
            it under the terms of the GNU Lesser General Public License as
            published by the Free Software Foundation; either version 2.1 of the
            License, or (at your option) any later version.
            On Debian GNU/Linux systems, the complete text of version 2.1 of the GNU
            Lesser General Public License can be found in `/usr/share/common-licenses/LGPL-2.1'" - -

   modify a value with the command line:
        cme modify dpkg-copyright ~~ 'Comment="Modified with cme"'

       Or apply more systematic changes. This example updates copyright years for all "Files"
       entries in "debian/copyright":

        cme modify dpkg-copyright ~~ 'Files:~/./ Copyright=~"s/2013/2014/"'

   remove an uploader from control files
        cme modify dpkg control source Uploaders:-~/johndoe/

       or

        cme modify dpkg-control ~~ source Uploaders:-~/dod/

       If you want to remove a guy named Ian, you'll have to be a little more specific to avoid
       removing all debian developers:

        cme modify dpkg-control ~~ source Uploaders:-="Ian Smith<iansmith@debian.org>"

   add a new uploader
       The quotes are required otherwise bash will complain. These 2 commands give the same
       results:

        cme modify dpkg-control ~~ 'source Uploaders:<"John Doe<johndoe@foo.com>"'
        cme modify dpkg-control ~~ 'source Uploaders:.push("John Doe<johndoe@foo.com>")'

       Add an uploader to a sorted list of Uploaders (yes, insort, with a 'o', not "insert" with
       a 'e'):

        cme modify dpkg-control ~~ 'source Uploaders:.insort("John Doe<johndoe@foo.com>")'

       The above command make sense only if the list is sorted. Let's sort the list of uploaders:

        cme modify dpkg-control ~~ 'source Uploaders:@'
        cme modify dpkg-control ~~ 'source Uploaders:.sort'

       The 2 commands can be combined:

        cme modify dpkg-control ~~ 'source Uploaders:.sort Uploaders:.insort("John Doe<johndoe@foo.com>")'

       The "modify" command of cme uses the syntax defined by Config::Model::Loader.  See "load
       string syntax" in Config::Model::Loader

BUGS

       Config::Model design does not really cope well with some details of Debian patch header
       specification <http://dep.debian.net/deps/dep3/> (aka DEP-3).

       Description and subject are both authorized, but only one of them is required and using
       the 2 is forbidden. So, both fields are accepted, but subject is stored as description in
       the configuration tree.  "cme fix" or "cme edit" will write back a description field.

CONTRIBUTORS

       In alphabetical order:

        Andrej Shadura
        Axel Beckert
        Bas Couwenberg
        Cyrille Bollu
        Gregor Herrmann
        Guillem Jover
        Josh Triplett
        Paul Wise
        Ross Vandegrift
        Salvatore Bonaccorso
        Victor Westerhuis
        Walter Lozano
        Xavier Guimard

       Many thanks to all.

AUTHOR

       Dominique Dumont, (dod at debian dot org)

SEE ALSO

       •   cme

       •   Config::Model

       •   http://github.com/dod38fr/config-model/wiki/Using-config-model