I am submitting this case for myself.  This case proposes to
integrate quilt into SFW.  Timeout is set for October 30th, 2008.

Manpages and the FOSS checklist are in the case materials directory.

This project requests a minor release binding.

Dean



1. Background

        People familiar with Mercurial Queues (mq) will recognize quilt, as it
        was the inspriation for mq.  I've stayed with quilt over the years
        because I use it for workareas managed by mercurial, teamware, git,
        cvs, bk--even workareas not managed by any SCM at all.

        ``[Quilt allows] you to manage a series of patches by keeping track
        of the changes each patch makes. Patches can be applied, un-applied,
        refreshed, etc.  The key philosophical concept is that your primary
        output is patches. Not ".c" files, not ".h" files. But patches. So
        patches are the first-class object here.  Quilt was originally based
        on Andrew Morton's patch scripts published on the linux kernel mailing
        list a while ago, but were heavily modified since then.'' [1]

        Quilt is externally maintained Free Open Source Software (FOSS).
        Sun's role with this project is to port and monitor the open source
        project.  For additional information about the project or originating
        community, see [1].

        Quilt is licensed under the GPLv2 license.  See OSR #9963 [2] for
        more information.  This project will port version 0.47, the
        version which was current at the time of the OSR.


2. Architecture

        The manpage gives a nice architectural overview, so I will quote it
        here:

        "With quilt, all work occurs within a single directory tree.  Commands
        can be invoked from anywhere within the source tree. They are of
        the form quilt cmd similar to CVS commands. They can be abbreviated as
        long as the specified part of the command is unique. All commands
        print some help text with quilt cmd -h.

        "Quilt manages a stack of patches. Patches are applied incrementally
        on top of the base tree plus all preceding patches. They can be pushed
        on top of the stack (quilt push), and popped off the stack (quilt
        pop).  Commands are available for querying the contents of the series
        file (quilt series, see below), the contents of the stack (quilt
        applied, quilt previous, quilt top), and the patches that are not
        applied at a particular moment (quilt next, quilt unapplied).  By
        default, most commands apply to the topmost patch on the stack.

        "Patch files are located in the patches sub-directory of the source
        tree.  The QUILT_PATCHES environment variable can be used to override
        this location. The patches directory may contain sub-directories. It
        may also be a symbolic link instead of a directory.

        "A file called series contains a list of patch file names that defines
        the order in which patches are applied. Unless there are means by
        which series files can be generated automatically, it is usually
        provided along with a set of patches. In this file, each patch file
        name is on a separate line. Patch files are identified by pathnames
        that are relative to the patches directory; patches may be in
        sub-directories below this directory. Lines in the series file that
        start with a hash character (#) are ignored.  You can also add a
        comment after each patch file name, introduced by a space followed by
        a hash character. When quilt adds, removes, or renames patches, it
        automatically updates the series file.  Users of quilt can modify
        series files while some patches are applied, as long as the applied
        patches remain in their original order.

        "Different series files can be used to assemble patches in different
        ways, corresponding for example to different development branches.

        "Before a patch is applied (or "pushed on the stack"), copies of all
        files the patch modifies are saved to the .pc/patch directory. The
        patch is added to the list of currently applied patches (.pc/applied-
        patches). Later when a patch is regenerated (quilt refresh), the
        backup copies in .pc/patch are compared with the current versions of
        the files in the source tree using GNU diff.

        "Documentation related to a patch can be put at the beginning of a
        patch file.  Quilt is careful to preserve all text that precedes the
        actual patch when doing a refresh. (This is limited to patches in
        unified for- mat; see diff documentation).

        "The series file is looked up in the .pc directory, in the root of the
        source tree, and in the patches directory.  The first series file that
        is found is used. This may also be a symbolic link, or a file with
        multiple hard links.  Usually, only one series file is used for a
        set of patches, so the patches sub-directory is a convenient location.

        "The .pc directory and its sub-directories cannot be relocated, but it
        can be a symbolic link. While patches are applied to the source tree,
        this directory is essential for many operations, including taking
        patches off the stack (quilt pop), and refreshing patches (quilt
        refresh).  Files in the .pc directory are automatically removed when
        they are no longer needed, so there is no need to clean up manually."


3. More Technical Details

        Before quilt applies (pushes) a patch it uses the backup-files tool to
        copy the pre-patched version of the to-be-patched files into the .pc
        directory.  The backup-files tool verifies a variety of conditions on
        which quilt relies.  This tool is also used when removing (popping) a
        patch, to restore a file to its pre-patched condition.

        The guards tool is used when constructing a series file based on
        specified conditions.  From it's manpage:

        "[Guards] reads a configuration file that may contain so-called guards,
        file names, and comments, and writes those file names that satisfy all
        guards to standard output. The script takes a list of symbols as its
        arguments. Each line in the configuration file is processed
        separately."


4. Interfaces & Dependencies

   Exported Interfaces:

    Interface Name              Classification      Comments
    --------------------------- ------------------- --------------------
    SUNWquiltu                  Uncommitted         Package name
    SUNWquiltr                  Uncommitted         Package name
    quilt                       Uncommitted         Commandline syntax
    guards                      Uncommitted         Commandline syntax
    /etc/quilt.quiltrc          Uncommitted         Config file
    /etc/bash_completion.d/quilt Uncommitted        BASH cmd completion file
    /usr/bin/quilt              Uncommitted         Executable location
    /usr/bin/guards             Uncommitted         Executable location

    /usr/share/doc/quilt-0.47                   Uncommitted     Directory
    /usr/share/doc/quilt-0.47/README            Uncommitted     Doc
    /usr/share/doc/quilt-0.47/README.MAIL       Uncommitted     Doc
    /usr/share/doc/quilt-0.47/quilt.pdf         Uncommitted     Doc

    /usr/share/emacs/site-lisp/quilt.el Uncommitted     Emacs mode

    /usr/share/quilt/*          Project Private         Quilt functions.
                                                        Each quilt function
                                                        has its own script.

    /usr/share/quilt/scripts/*  Project Private         Scripts location.
                                                        Private utils used by
                                                        the quilt functions.

    /usr/share/quilt/wrapper/*  Project Private         Command Wrappers

    /usr/share/quilt/compat/*   Project Private         Compatibility Wrappers

    /usr/lib/quilt/backup-files Project Private         Tool to backup
                                                        and restore patched
                                                        files.

    /usr/share/locale/de/LC_MESSAGES/quilt.mo Uncommitted
    /usr/share/locale/fr/LC_MESSAGES/quilt.mo Uncommitted
    /usr/share/locale/ja/LC_MESSAGES/quilt.mo Uncommitted



   Imported Interfaces

    Interface Name              Classification      Comments
    --------------------------- ------------------- --------------------
    bash                        Evolving            PSARC/2001/799
    GNU zip                     Evolving            PSARC/2001/799
    GNU zcat                    Evolving            PSARC/2001/799
    bzip2                       Evolving            PSARC/2001/799
    GNU patch                   Evolving            PSARC/2001/799
    perl                        Evolving            PSARC/2003/661
    diffstat                    Uncommitted         PSARC/2008/114
    GNU diff                    Uncommitted         PSARC/2007/189
    GNU grep                    Uncommitted         PSARC/2007/568
    GNU cp                      Uncommitted         PSARC/2007/048
    GNU date                    Uncommitted         PSARC/2007/048
    GNU tail                    Uncommitted         PSARC/2007/048
    GNU tr                      Uncommitted         PSARC/2007/048
    GNU sed                     Uncommitted         PSARC/2008/254
    GNU awk                     Uncommitted         PSARC/2008/594
    GNU msgfmt                  Uncommitted         PSARC/2007/635
    GNU xgettext                Uncommitted         PSARC/2007/635


5. References

[1] http://savannah.nongnu.org/projects/quilt
[2] https://opensourcereview.central.sun.com/app?action=ViewReq&traq_num=9963
[3] quilt.1
[4] guards.1

6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                SFW
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open

Reply via email to