# HG changeset patch
# User David Kirkby <david.kirkby@onetel.net>
# Date 1289439955 0
# Node ID 3ea770e09a803a434a9261c8881a9f555960a0e9
# Parent f5e6724a274008cd284bbcac19b98a555a3cc667
#10248 Update the "Inclusion Procedure for New Packages" to take into account supported platforms for Sage.
diff -r f5e6724a2740 -r 3ea770e09a80 doc/en/developer/inclusion.rst
a
|
b
|
|
7 | 7 | - **License**. The license must be a GPL version 2+ compatible |
8 | 8 | license. |
9 | 9 | |
10 | | - **Build Support**. The code must build on the following supported |
11 | | architectures and compilers (and intended port targets): |
12 | 10 | |
13 | | - Linux: x86, x86_64, Itanium, ppc, ppc64, Sparc (gcc 3.4--4.3) |
| 11 | - **Build Support**. The code **must** build on all the `fully supported platforms <http://wiki.sagemath.org/SupportedPlatforms#Fullysupported-SageisALWAYScheckedonALLtheseplatformsBEFOREareleaseismade/>`_. |
14 | 12 | |
15 | | - Apple Mac OS X: ppc, ppc64, x86, x86_64 (Xcode 2.5+) |
| 13 | A standard package should also work on all the platforms where Sage is |
| 14 | `expected to work <http://wiki.sagemath.org/SupportedPlatforms#Expectedtowork-Sagewillprobablywork.2Cbutitisnotalwaystested.>`_, but since we don't fully |
| 15 | support these platforms and often lack the resources to test on them, you |
| 16 | are not expected to confirm your packages works on those platforms. |
| 17 | However, if you can, it is better to do so. As noted |
| 18 | `here <http://wiki.sagemath.org/SupportedPlatforms#Expectedtowork-Sagewillprobablywork.2Cbutitisnotalwaystested.>`_, a failure of Sage to work on a |
| 19 | platform where it is expected to work, will be considered a bug. |
16 | 20 | |
17 | | - Microsoft Windows: x86, x86_64 MSVC 2005/Intel Fortran (MinGW or |
18 | | Cygwin support is insufficient!) |
19 | | |
20 | | - Solaris 10: Sparc, x86, x86_64 (Sun Forte 12) |
| 21 | There is no need to worry too much about platforms where Sage will |
| 22 | `probably not work <http://wiki.sagemath.org/SupportedPlatforms#Probablywillnotwork-Portingworkmaybeongoing>`_ though if it's clear that there is |
| 23 | significant effort taking place to port Sage to a platform, then you should |
| 24 | aim to ensure your package does not cause unnecessary headaches to those |
| 25 | working on the port. |
| 26 | |
| 27 | If it's clear that a port is stagnent, with nobody working on |
| 28 | it, then you can safely ignore it. |
21 | 29 | |
22 | 30 | Remarks: |
23 | 31 | |
… |
… |
|
26 | 34 | expected to do the heavy lifting and also support those ports |
27 | 35 | upstream if there is no Sage developer who is willing to share the |
28 | 36 | burden. |
| 37 | - One of the best ways to ensure your code works on multiple platforms |
| 38 | is to only use commands which are defined by `POSIX.1-2008 <http://www.opengroup.org/onlinepubs/9699919799/>`_ and only use options which are defined |
| 39 | in the POSIX standard. For example, do not use the -p option to `uname <http://www.opengroup.org/onlinepubs/9699919799/utilities/uname.html>`_ as |
| 40 | the '-p' option is not defined by the POSIX standard, so is not portable. |
| 41 | If you must use a non-POSIX command, or a option which is not defined |
| 42 | by POSIX, then ensure the code only gets executed on the platform(s) |
| 43 | where that command and/or option will be acceptable. |
29 | 44 | |
30 | | Potential future ports include FreeBSD (x86, x86_64), OpenBSD (x86, |
31 | | x86_64), HPUX (Itanium), AIX (PPC64), and ARM (OS X). |
32 | 45 | |
33 | 46 | - **Quality**. The code should be "better" than any other available |
34 | 47 | code (that passes the two above criteria), and the authors need to |
… |
… |
|
45 | 58 | |
46 | 59 | - Maintainable |
47 | 60 | |
| 61 | - Portability |
| 62 | |
48 | 63 | - Reasonable build time, size, dependencies |
49 | 64 | |
| 65 | |
| 66 | - **Previously an optional package**. Usually a new standard package must have spent some time as an optional package. However, sometimes this is not possible, if for example a new library is needed to permit an updated version of a standard package to function. |
| 67 | |
50 | 68 | - **Refereeing**. The code must be refereed, as discussed in |
51 | 69 | :ref:`chapter-trac`. |