# HG changeset patch # User adb014 # Date 1161025995 0 # Node ID a67d584e6840aab08c2b3f960ab95ebf4c5b8579 # Parent faf6ae737ecea7254875011b321a214263a6fe63 developers.in is a derived file. It shouldn't be in the CVS diff -r faf6ae737ece -r a67d584e6840 www/developers.in --- a/www/developers.in Mon Oct 16 19:12:13 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,431 +0,0 @@ -__HEADER__([[[Developer's Notes]]]) - -
To contribute your .m files, C++, C, or Fortran code to the GNU Octave -Repository (octave-forge) you need to
-The first two requirements are easy but may take a few days. -If you don't already have one, request a SourceForge (SF) account - here. -To register as a developer send a request -to the octave-forge mailing list -octave-dev@lists.sf.net. -Include a bit of information about the code -you plan to submit. -Finally, if your computer runs linux or -FreeBSD, chances are good that both ssh and CVS are already -installed on your system. -If they aren't, -you will need to find prebuilt packages for them or download their -source codes and build them.
- --If you've never submitted code to a SourceForge project before, -create your home directory by -logging onto the octave-forge account with ssh:
-- $ ssh -l sflogin octave.cvs.sourceforge.net - Password: your SF password --
Although SF will only show you a message-of-the-day screen then log -you out, this process has the useful side effect of creating a home -directory for you if one doesn't already exist. Some CVS commands will fail -if you do not have a home directory on SF.
- -CVS expects the -code you plan to submit to reside in a directory within the existing -octave-forge directory structure. -You will therefore need to download a copy of the latest octave-forge -distribution to work in. Change directories to a place you want -to put the code, then issue the CVS checkout -(abreviated as 'co') command:
-- $ cd working_directory - $ export CVS_RSH=ssh - $ cvs -d:ext:sflogin@octave.cvs.sourceforge.net:/cvsroot/octave co octave-forge -- -
Put your file(s) in a subdirectory under the octave-forge/ -directory. Here are some guidelines to help you decide where your -code belongs:
-Each file in octave-forge must contain a copyright notice. -If you wish to release your -code under the -GNU GPL -, insert the following text at the top of your file:
--## Copyright (C) year Your Name <your@preferred.email> -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or -## (at your option) any later version. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -- -
Here are other popular open source licenses:
- -Consult -opensource.org. -for a comprehensive list of Open Source licenses.
- --Octave has evolved into a source repository is octave pacakges rather -than a package in itself. Each sub-directory is considered to be a -package and should respect Octave's package managers file layout.
-Name: | -Name of the package |
Version: | -Version of the package |
Date: | - -Date of last update |
Author: | -Original author of the package |
Maintainer: | -Maintainer of the package |
Title: | - -A one line description of the package |
Description: | -A one paragraph description of the package |
Categories: | -Optional keyword describing the package - (if no INDEX file is given this is mandatory) |
Problems: | - -Optional list of known problems |
Url: | -Optional list of homepages related to the package |
Depends: | -A list of other octave packages that this package
- depends on. This can include dependencies on particular
- versions, which a format.
-- Depends: package (>= 1.0.0) -- Possible operators are <, <=, ==, >= or >. If the part - of the dependency in () is missing, any version of the - package is acceptable. Multiple dependencies can be - defined either as a comma separated list or on separate - Depends lines. |
License: | -An optional short description of the used license - (e.g. GPL version 2 or newer). This is optional - since the file COPYING is mandatory. |
SystemRequirements: | -These are the external install dependencies of the package - and are not checked by the package manager. This is here as a - hint to the distribution packager. They follows the same - conventions as the Depends keyword. |
BuildRequires: | -These are the external build dependencies of the package - and are not checked by the package manager. This is here as - a hint to the distribution packager. They follows the same - conventions as the Depends keyword. Note that in - general, packaging systems such as rpm or deb and - autoprobe the install dependencies from the build - dependencies, and therefore the often a BuildRequires - dependency removes the need for a SystemRequirements - dependency. |
- BuildRequires: libtermcap-devel [Mandriva] libtermcap2-devel -- where the first package name will be used as a default and if - the RPMs are built on a Mandriva distribution, then the second - package name will be used instead. -
-ln -s foo.oct bar.oct -- with an autoload directive like -
-autoload ('bar', which ('foo')); --
- -include ../../Makeconf -include ../../pkg.mk - -PKG_FILES = COPYING DESCRIPTION $(wildcard INDEX) $(wildcard PKG_ADD) \ - $(wildcard PKG_DEL) $(wildcard post_install.m) \ - $(wildcard pre_install.m) $(wildcard on_uninstall.m) \ - $(wildcard inst/*) $(wildcard src/*) $(wildcard doc/*) \ - $(wildcard bin/*) - -pre-pkg/%:: - # Do nothing prior to packaging - -post-pkg/%:: - # Do nothing post packaging - -- which packages all of the required and existing optional files - and directories discussed here. -
You are now ready to upload your code to the Gnu Octave Repository. -Do this with two CVS commands--one to add a new -entry for your file in the octave-forge catalog, and a second command -to actually upload the file:
-- $ cvs add files - $ cvs commit files --
After hitting the carriage return at the end of the commit command, -CVS will open your default editor so that you can enter comments about -the commit. The first time you commit a file the comment might be -something as simple as `Initial commit into CVS.' However, for all -subsequent commits please add meaningful comments that explain why -changes were made to the file since all comments will appear in the -changelog. Try to gather related changes into one commit command.
- -Aside: the default editor can be defined like so:
-
- $ export EDITOR=vim
-
-
-If you are uploading an entire package, then put your directory into the -octave-forge tree and do the following:
-- $ cd octave-forge/main - $ cvs add package - $ cvs commit package - $ cd package - $ cvs add * - $ cvs commit * -- -
You may find it easier to use the import command, especially if your -package contains subdirectories. In this case, you should not put -your directory into the octave-forge tree. Instead, change to the -root of your package tree and enter the following:
-- $ cd package - $ cvs -d:ext:sflogin@octave.cvs.sourceforge.net:/cvsroot/octave import \ - -m "package name" octave-forge/main/package sflogin start -- -
You can then fetch the new package from octave-forge as follows:
-- $ cd octave-forge - $ cvs -q update -d -- -
From time to time, you will need to synchronize with CVS:
-- $ cd octave-forge - $ cvs -q update -d --
Each file will be listed with one of the following codes:
-The few CVS commands shown here just scratch the surface of this -powerful versioning package. If you become an active contributor -you will benefit from learning more CVS commands and understanding -how CVS works. -The - -CVS Book is a great place to begin your exploration.
- -Finally, consider joining the octave-forge developer's - -mailing list. It is very low traffic. It is used to announce -pending releases of octave-forge and discuss issues related to -working with octave-forge. Discussion of the functions in -octave-forge mostly occurs on the primary octave mailing lists.
- -__TRAILER__