X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;ds=sidebyside;f=docs%2FREADME.developers;h=dcec2a73a4971d1c19998ee3a23725b9bdca85b7;hb=dcc1fcf2a376677f3a094d6a86c95526d816d52e;hp=de321851fa6a95baceaa3001127349ba85d65d72;hpb=a485ed478abbd599d8c9aab48934e7a26733ecb1;p=mmh
diff --git a/docs/README.developers b/docs/README.developers
index de32185..dcec2a7 100644
--- a/docs/README.developers
+++ b/docs/README.developers
@@ -2,197 +2,98 @@
# README.developers
#
-This file is intended to provide a few tips for anyone doing development on nmh.
-Developers who learn things "the hard way" about the nmh codebase (as opposed to
-local info best encoded in a comment) are encouraged to share their wisdom here.
+This file is intended to provide a few tips for anyone doing development
+on mmh. Developers who learn things "the hard way" about the mmh codebase
+(as opposed to local info best encoded in a comment) are encouraged to
+share their wisdom here.
-The topics are organized alphabetically.
+Absolute beginners should start reading docs/README.start-devel.
---------------
-autoconf files
---------------
-
-If you wish to change the `configure' script or its related files, you'll need
-to first install GNU m4, available from and then
-GNU autoconf (). Nmh is currently using
-a minimum of autoconf 2.54.
-
-Most of the configure-related files are automatically generated. The only files
-you should need to manually edit are acconfig.h and configure.ac. Don't, for
-instance, edit config.h.in. Though it is an input file from the point of view
-of the users (and the configure script) it is an output file from the point of
-view of the developers (and the autoconf script).
-
-Note that the automatically generated autoconf files (such as config.h.in,
-stamp-h.in, and configure), are NOT kept in git. Thus, when you check out
-a git tree, you need to run the autogen.sh script before you can build
-anything:
-
- % ./autogen.sh
-
-------------------
directory structure
-------------------
-Following is a list of nmh's directories along with a brief description of the
-purpose of each one. Meanings are given for the abbreviations, but note that
-these meanings are just informed guesses as to what the MH developers were
-thinking.
+Following is a list of mmh's directories along with a brief description
+of the purpose of each one. Meanings are given for the abbreviations,
+but note that these meanings are just informed guesses as to what the
+MH developers were thinking.
./
- The top-level directory. Contains files like README and INSTALL.
+ The top-level directory. Contains files like README and INSTALL.
config/
- Contains utility files for the `configure' process. Ordinarily nothing in
- here needs to be messed with.
+ Contains utility files for the `configure' process. Ordinarily
+ nothing in here needs to be messed with, but config/config.c is
+ very interesting to have a look at.
docs/
Contains more specialized documentation, such as this file and
the FAQ.
etc/
- Contains files, file templates, and scripts to generate files that will be
- installed in the ${prefix}/etc directory. Stuff like replcomps.
+ Contains files, file templates, and scripts to generate files that
+ will be installed in the ${prefix}/etc directory. Stuff like
+ replcomps.
h/
- Most of nmh's header (.h) files are kept not in the individual source
- directories, but in this central location.
+ Most of mmh's header files are kept in this central location instead
+ of in the individual source directories.
man/
- Contains all the input files that are processed to generate nmh's manual
- pages.
+ Contains all the input files that are processed to generate mmh's
+ manual pages.
sbr/
- "sbr" stands for "subroutine(s)". For the most part, each source file in
- this directory contains a single function with the same name as the source
- file. These functions are of general use and are called from throughout
- nmh.
+ "sbr" stands for "subroutine(s)". For the most part, each source
+ file in this directory contains a single function with the same
+ name as the source file. These functions are of general use and
+ are called from throughout mmh.
uip/
- "uip" stands for "User Interface Programs". Most nmh commands have a file
- in this directory named .c containing the code for that command
- (e.g. repl.c). In some cases there is also an auxiliary file called
- sbr.c which contains additional subroutines called from .c
- (which would contain not much else besides main()).
+ "uip" stands for "User Interface Programs". Most mmh commands have a
+ file in this directory named .c containing the code for that
+ command (e.g. repl.c). In some cases there is also an auxiliary file
+ called sbr.c which contains additional subroutines called
+ from .c.
----
-git
----
+----------------------
+version control system
+----------------------
As of December 2010, nmh has switched to using git for revision control
-instead of CVS. While the topic of git is beyond the scope of this FAQ,
-to get started with git & nmh, you can run the following command to checkout
-the nmh repository:
-
- % git clone git://git.savannah.nongnu.org/nmh.git
-
-
--------------------------------------------------------
-nmh-local functions to use in preference to OS versions
--------------------------------------------------------
-
-For some system functions whose availability or behavior varies from OS to OS,
-nmh conditionally uses a local definition with the same name as the OS function
-(e.g. snprintf()). For other functions, developers need to avoid the OS
-versions and always use the nmh-supplied function. Here is a list of such
-functions:
-
-OS function nmh-local version to use instead
-=========== ================================
-getpass() nmh_getpass()
-
-
--------------
-releasing nmh
--------------
-
-To make a public release of nmh (we'll use version 1.0.4 and my mhost.com
-account, danh, as examples here; the convention for release candidates
-is to use something like "1.0.4-RC1"):
-
- 1. % echo 1.0.4 > VERSION
- % date +"%e %B %Y" > DATE
- (DATE should contain something like "30 December 2000")
+instead of CVS. Mmh has stick to git. While the topic of git is beyond
+the scope of this FAQ, to get started with git and mmh, you can run the
+following command to checkout the mmh repository:
- 2. Put a comment like "Released nmh-1.0.4." in the ChangeLog.
+ % git clone http://git.marmaro.de/mmh
- 3. % cvs commit ChangeLog VERSION DATE
+That will create a workspace called mmh. To update that workspace
+change to it and run:
- 4. % cvs tag nmh-1_0_4
- (cvs treats dots specially, so underscores are substituted here.)
+ % git pull
- 5. % make nmhdist
- 6. Untar nmh-1.0.4.tar.gz and `diff -r' it vs. your CVS tree. Make sure no
- files got left out of the distribution that should be in it (due to someone
- forgetting to update the DIST variables in the Makefiles).
-
- 7. If you have root access on your machine, it's good at this point to do:
-
- % chown -R 0:0 nmh-1.0.4
- % tar cvf nmh-1.0.4.tar nmh-1.0.4
- % gzip nmh-1.0.4.tar
-
- If you leave the files in the archive as being owned by yourself, your UID
- may coincide with one of a user on a machine where nmh is being installed,
- making it possible for that user to Trojan the nmh code before the system
- administrator finishes installing it.
-
- 8. Make sure your new tarball uncompresses and untars with no problem. Make
- sure you can configure, make, and install nmh from it.
-
- 9. If all is well and your tarball is final, go back to your CVS tree and do:
-
- % echo 1.0.4+dev > VERSION
-
-10. Put a comment like "Upped the version number to 1.0.4+dev until the next nmh
- release." in the ChangeLog.
-
-11. % cvs commit ChangeLog VERSION
-
-12. If possible, make an MD5 hash and/or a PGP signature of nmh-1.0.4.tar.gz.
- Assuming you have gpg set up, this should be:
- % gpg --output nmh-1.0.4.tar.gz.sig --detach-sig nmh-1.0.4.tar.gz
-
- You can verify the signature with
- % gpg --verify nmh-1.0.4.tar.gz.sig nmh-1.0.4.tar.gz
-
-13. Upload the files to savannah. First make sure they are mode 664 so
- they will have the right permissions on the server end
- (see https://savannah.gnu.org/maintenance/SharedDownloadArea)
- % chmod 664 nmh-1.0.4.tar.gz*
-
- Then scp them across:
- % scp -p nmh-1.0.4.tar.gz* youruser@dl.sv.nongnu.org:/releases/nmh/
-
-14. Update the http://www.nongnu.org/nmh/ homepage. (It lives in the 'webpages
- repository'; see https://savannah.nongnu.org/cvs/?group=nmh)
-
-15. Add a news item to the savannah nmh page. You'll have to submit it first
- and then separately approve it (under News->Manage).
+--------------
+autoconf files
+--------------
-16. Send the release announcement email to the following places:
- nmh-workers@nongnu.org
- nmh-announce@nongnu.org
- exmh-users@redhat.com
- exmh-workers@redhat.com
- mh-e-users@lists.sourceforge.net
- mh-users@ics.uci.edu *or* comp.mail.mh (there is a bidirectional gateway)
+If you wish to change the `configure' script or its related files,
+you'll need to first install GNU m4 and GNU autoconf. Mmh is currently
+using a minimum of autoconf 2.61.
- If the release fixes significant security holes, also send an announcement
- to bugtraq@securityfocus.com. The exmh lists require you to be subscribed
- in order to post. Note that you don't need to post separately to
- comp.mail.mh, as the mh-users mailing list is apparently bidirectionally
- gatewayed to it.
+Most of the configure-related files are automatically generated. The
+only files you should need to manually edit are `acconfig.h' and
+`configure.ac'. Don't, for instance, edit `config.h.in'. Though it is
+an input file from the point of view of the users (and the configure
+script) it is an output file from the point of view of the developers
+(and the autoconf script).
- Preferably, the announcement should contain the MD5 hash generated above,
- and should be PGP-signed. It should include the URL for the tarball as
- well as the URL of the website. It should contain a brief summary of
- visible changes, as well as the URL of the cvsweb diff page that would show
- a detailed list of changes. The changes between 1.2 and 1.3 would be
- shown by:
+Note that the automatically generated autoconf files (such as
+`config.h.in', `stamp-h.in', and `configure'), are NOT kept in the
+version control system. Thus, when you check out the source tree,
+you need to run the `autogen.sh' script before you can build anything:
- http://cvs.savannah.gnu.org/viewvc/nmh/ChangeLog?root=nmh&r1=1.215&r2=1.254.2.13
+ % ./autogen.sh