Manarchive Code
Status: Pre-Alpha
Brought to you by:
bojar
File | Date | Author | Commit |
---|---|---|---|
manager | 2010-08-20 | bojar | [r81] minor fixes to ensure compilation in a differen... |
packages | 2010-10-15 | bojar | [r84] more reliable simple test |
samples | 2007-03-01 | bojar | [r7] Added the default target. |
tools | 2008-07-30 | bojar | [r46] pickle pickles version_array directly, without ... |
www | 2007-11-22 | bojar | [r28] improving comments, adding a tip for running te... |
CONTRIBUTING | 2007-11-22 | bojar | [r28] improving comments, adding a tip for running te... |
README | 2008-02-20 | bojar | [r30] added a quick summary on how to extend (and deb... |
What is Manarchive: =================== Manarchive (Mercury Anarchy Archive) is a multi-purpose collection of libraries in the Mercury programming language. The libraries can be used separately. Manarchive provides a common development and testing platform. Manarchive Objective: ===================== Given the harsh committing policy of the Mercury team I thought of introducing some anarchy ;-) and started Mercury Anarchive. The name can be shortened to Manarchive or Mana (pronounced either like mana or manna [mannah], depending on your religious background). Manarchive will be a repository for generally useful routines, like c?an's are for Perl, TeX, R-Project and others. I am not too ambitious at this point. Manarchive Usage Aims: ====================== 1. Using Manarchive should be as simple as possible, something like: svn checkout make # to compile all the parts that have prerequisities satisfied # (some of the packages might depend on some libraries # installed; only users wanting such packages should be forced # to satisfy the prerequisities) mmc --make \ `manarchive-config --print-mmc-flags --package X --package Y` \ myproject # to link against packages X and Y (if they were successfully made) Manarchive must be usable both with libraries 'installed' (all grades generated) and with libraries 'non-installed' (just your favourite grade, for quick debugging of the library) 2. Contributing must be as simple as possible, something like: join sourceforge (or whatever we go for) svn add your-new-contribution # and all the files in it svn commit # with a pre-commit validation # ideally, the pre-commit validation would not allow committing if # any package fails some of the tests after your change that were # successful before your change It must be easy for a Manarchive package to depend on other Manarchive packages (at the current Manarchive revision; no version spaghetti, please) In particular, contributing to lib_tools is indeed this easy: # to add your new_module to lib_tools: cd packages/lib_tools/src svn add new_module.m echo ":- import_module new_module." >> lib_tools.m # to add a testcase, compile and run it cd packages/lib_tools/tests svn add test_new_module.m ../../../tools/runtest test_new_module.m # this will compile both the library, as well as test_new_module, # it will also run the test and compare its output against # test_new_module.exp Manarchive Rules: ================= Manarchive will soon enforce these rules: 1. Anything can be contributed, provided no name-clashes happen. 2. People are kindly asked to stick to coding style of the package they are modifying. Bringing your own package, you can bring your own style. 2. As soon as a contributor has time, the package should be upgraded to "partially_tested" status: Tested packages must contain a non-empty set of tests -- each consisting of a mercury program and expected output (or more outputs one of which must succeed). 3. As soon as a contributor has time, the package should be upgraded to "has_example" status: Exemplified packages must contain a non-empty set of examples -- essentially like test programs with expected output, but intended for users to read. 4. If a contributor has abundance of free time, he/she might wish to upgrade a package to "fully_tested" status: Fully tested packages must contain a single mercury program (with a set of expected inputs and corresponding expected outputs) that actually checks every part of the package. 'mcov' will be used to check the fully_tested status. Formalized Package Status: ========================== For each release of each package included in Manarchive, we report package_status describing: - tests summary (if all tests passed etc.) - level of documentation (assessed by the author) - presence of any examples to use the package Credits: ======== Ondrej Bojar (obo@cuni.cz) Peter Ross (pro@missioncriticalit.com) Ian MacLarty (maclarty@csse.unimelb.edu.au)