View Issue Details

IDProjectCategoryView StatusLast Update
0000278ThirdPartyBugpublic2014-12-20 18:41
Reporterwyldckat Assigned Tohenry  
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionno change required 
Summary0000278: Simple package manager of source packages in the ThirdParty folder
DescriptionThis is related to Issue #220, but this is a proposal for a "simple" package management for the ThirdParty folder for OpenFOAM; this is the next evolutionary step to those hack-n-slash scripts I posted on that issue report.

The following repository and respective branch-tag have the proposed package manager: https://github.com/wyldckat/ThirdParty-2.0.x/commits/get-em-v0.9
The tag "get-em-v0.9" indicates the commit at the time of this feature request/proposal.

It's already fully functional, but some additional documentation and peer reviewing is still in order.
It has been designed/tested in a similar way as OpenFOAM's wmake, to use the "basic" shell tools and applications, namely: sh/dash/bash, sed, grep, tail, head, wget, tar, unzip and ping. No additional code building is necessary.
It should be able to update (on-demand) the list of versions available for downloading and unpacking.
Adding new applications, combo packages and mirrors should be simple/easy enough, although some experience using sed and grep is necessary. The strange method of adding these files was chosen as it seemed the simplest way for automatically parsing any website structure... i.e.: code the method used directly with grep+sed, instead of telling it with a new set of rules for parsing.

I tried to find online something similar to these specs, but all of the existing package managers "fall short", since they all seem to need code compiling and are designed for system wide management, not local package management. Either that or they need Python/Perl...


Now that the OpenFOAM Foundation is up and running (er, starting and gaining momentum) and since the initial disposition indicates a git repository based distribution of the code, it would be nice to have a complete and (in)dependent ThirdParty git repository to complement this code release "format".
I understand that the protocols for code submissions are "still in the works", but I was inspired to do this and started working on this last week and it was now that I had the time to get this done. So I was planning on posting this proposal even before I learned that the OpenFOAM Foundation would be established so soon...

Feel free to comment! I'm willing to improve this code if necessary.

The following information is already in the commit's comments at GitHub.
Steps To ReproduceCommon usages:
 * For getting full help:
     ./get-em help

 * For optimizing the mirror list:
     ./get-em mi-opt

 * For updating version lists:
     ./get-em update

 * For downloading and unpacking the gcc+gmp+mpfr(+mpc) combo toolkit and the standard sources for the ThirdParty folder (paraview+scotch+openmpi):
     ./get-em source buildtools=default paraview=default scotch=default openmpi=default

 * For removing the unpacked folders:
     ./get-em remove buildtools=default
Additional InformationApplications already available in this version:
    * boost - Retrieve the Boost C++ package. Size: 40 to 60MB
    * buildtools - Retrieve all of the basic tools for compiling and building: gcc, gmp, mpfr, mpc.
    * cgal - Retrieve the CGAL package. Size: 8 to 15MB
    * cmake - Retrieve CMake source code. Size: 3 to 6MB
    * gcc - Retrieve the whole gcc package (gcc, g++, ada, fortran, go, java, objc). Size: 60 to 100MB
    * gmp - Retrieve the GMP package. Size: 2 to 3MB
    * mpc - Retrieve the MPC package. Size: 400 to 600kB
    * mpfr - Retrieve the MPFR package. Size: 1 to 2MB
    * mpich2 - Retrieve the MPICH2 package. Size: 17 to 19MB
    * openmpi - Retrieve Open MPI source code. Size: 3 to 8MB
    * paraview - Retrieve ParaView source code. Size: 25 to 40MB
    * paraview-combo - Retrieve all of the packages for compiling and building ParaView: paraview, cmake, qt.
    * qt - Retrieve the Qt package. Size: 150 to 240MB
    * scotch - Retrieve the Scotch package. Size: 3.5 to 4MB
    * tecio - Retrieve Tecplot's TecIO source code. Size: 200 to 300kB

Linux distros tested:
  * Ubuntu 8.04 x86_64 - tested and works
  * Ubuntu 9.10 x86_64 (French install) - tested and works
  * Ubuntu 10.10 x86_64 - tested and works
  * Ubuntu 11.04 i686 - tested and works
  * Fedora 15 x86_64 - tested and works
  * OpenSUSE 11.3 x86_64 - tested and works
  * CentOS 4.8 i686 - tested and works
  * CentOS 3.9 i686 - tested and works
TagsNo tags attached.

Activities

wyldckat

2014-12-20 16:44

updater   ~0003346

Greetings,

After several months of thinking about this on-and-off, this feature request is pretty much "overkill".
Maintenance of this would be a pain to do, if made part of the ThirdParty repository.

If and when I find the time, or if something similar comes around in the future, it'll be easier to simply suggest the use of such external project that can assist with this kind of thing. Possibly something along the lines of "Environment Modules": http://modules.sourceforge.net/

Therefore, it seems to be wiser to simply close it as "no need to implement something so complex", to help trim down the bug report count for those that are still open and likely more important.

Best regards,
Bruno

henry

2014-12-20 18:41

manager   ~0003348

I agree that this is probably over-kill and introduces a significant maintenance overhead. Now that most of the software in ThirdParty folder is already available as installable packages on most recent GNU/Linux distributions there is less need for these kinds of installation scripts. At the moment we are having to provide builds of ParaView-4.1.0 but it is likely that builds of this version will become more readily available soon. The only other package which is not always readily available is ptScotch.

Issue History

Date Modified Username Field Change
2011-08-20 00:29 wyldckat New Issue
2014-12-20 16:44 wyldckat Note Added: 0003346
2014-12-20 18:41 henry Note Added: 0003348
2014-12-20 18:41 henry Status new => closed
2014-12-20 18:41 henry Assigned To => henry
2014-12-20 18:41 henry Resolution open => no change required