NAME

PATCHES - track and distribute your code changes

DESCRIPTION

This page documents how to distribute your changes to GNU lilypond

ABSTRACT

We would like to have unified context diffs with full pathnames. A script automating supplied with Lily. Distributing a change normally goes like this:
  • make your fix/add your code
  • Add changes to NEWS, and add yourself to Documentation/AUTHORS.yo
  • generate a patch,
  • e-mail your patch to one of the mailing lists gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org
  • GENERATING A PATCH

    In VERSION, set MY_PATCH_LEVEL:
    
        VERSION:
    	...
    	MY_PATCH_LEVEL=jcn1
    
    

    In NEWS, enter a summary of changes:

    
        NEWS:
    	pl 0.1.73.jcn1
    		- added PATCHES.yo
    
    

    Then, from the top of Lily's source tree, type

    
        make dist
        make diff
    
    

    which rolls the tarball ../releases/lilypond-0.1.73.tar.gz and leaves your patch as ./lilypond-0.1.73.jcn1.diff. ('Make diff' generates a patch between two tarballs. For more info type 'make diff help=='.) We assume that there is a tarball lilypond-0.1.73.tar.gz in the directory ../releases.

    If you didn't configure Lily using --srcdir, you can do:

    
        make release
    
        tar-ball: ../patches/lilypond-0.1.73.jcn1.gz
        patch: ../patches/lilypond-0.1.73.jcn1.gz
        updeet: ../test/updeet
    
    

    PREREQUISITES

    For creating a patch you need

  • All items mentioned in INSTALL. You're not going to send a patch that you haven't even built, right?
  • GNU diff
  • Python (version 1.5 or newer). You can of course make a patch by hand, which would go something like:

    
        make distclean
        cd ..
        diff -urN lilypond-0.1.73 lilypond-0.1.73.jcn1 > lilypond-0.1.73.jcn1
    
    

    but there are handy python scripts available. If you're doing development, you'll need Python for other LilyPond scripts anyway.

  • The Lily directory structure, which looks like:

    
        doos/                        # gnu/windows32 build and binary releases
        harmonia -> harmonia-x.y.z 
        harmonia-x.y.z/
        lilypond -> lilypond-x.y.z   # symlink to development directory
        lilypond-x.y.z/              # current development
        patches/ 		         # patches between different releases
        RedHat/BUILD                 # RedHat build and binary releases
        RedHat/RPMS
        RedHat/SPECS
        releases/                    # .tar.gz releases
        test/                        # tarballs and diffs from current version
        yodl -> yodl-1.30.17
        yodl-1.30.17
    
    
    with prefix $HOME/usr/src and (for building rpms only) in $HOME/.rpmrc:
    
        topdir: /home/fred/usr/src/RedHat
    
    
  • APPLYING PATCHES

    If you're following LilyPond development regularly, you probably want to download just the patch for each subsequent release. After downloading the patch (into the patches directory, of course), simply apply it:

    
        gzip -dc ../patches/lilypond-0.1.74.diff.gz | patch -p1 -E
    
    

    and don't forget to make automatically generated files:

    
        autoconf footnote(patches don't include automatically generated files, 
        i.e. file(configure) and files generated by file(configure).)
    
        configure
    
    

    SYNCHRONISE

    If you're not very quick with sending your patch, there's a good chance that an new release of LilyPond comes available. In such a case, the maintainer will probably ask you to make a new patch against the latest release. Your best bet is to download the latest release, and apply your patch against this new source tree:

    
        cd lilypond-0.1.74
        gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E
        autoconf
        configure
    
    

    Then, make a patch as shown above.

    SEE ALSO

    stepmake/INSTALL.txt

    MAINTAINER

    Han-Wen Nienhuys

    Just keep on sending those patches!


    Return to GNU LilyPond's home page.

    Please send GNU LilyPond questions and comments to gnu-music-discuss@gnu.org.

    Please send comments on these web pages to (address unknown), send other FSF & GNU inquiries and questions to gnu@gnu.org.

    Copyright (c) 1997, 1998, 1999 Han-Wen Nienhuys and Jan Nieuwenhuizen.

    Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.


    This page was built from GNU LilyPond-1.1.57 by

    root <(address unknown)>, at Tue Jul 13 12:24:31 1999 CDT.