Geant4 - any volunteers?

Frank Schima macsforever2000 at macports.org
Fri Jun 28 11:32:00 PDT 2013


On Jun 28, 2013, at 11:22 AM, Mojca Miklavec <mojca at macports.org> wrote:

> On Fri, Jun 28, 2013 at 6:44 PM, Frank Schima wrote:
>> 
>> I think we should only support the latest version - which is 9.6p2. I can't believe anyone is depending on our outdated version of it now.
> 
> While nobody may be interested in 9.4.p2, I would really really really
> like to include Gate (I have a working Portfile for it, but I would
> also like to create Gate.app one day - the needed patches are
> published somewhere) which usually depends on a very specific version
> of Geant4 (and when people write their own simulations, it's also a
> high probability that they won't work on a newer version). While Gate
> developers try to keep up with Geant4, they usually do it with 6-12
> moths of delay. I would find it important to keep at least two latest
> versions of Geant4 available if possible. There could be a meta-port
> "geant4", so that
>   sudo port install geant4 +geant4.9.6
> would install the three binaries to path, but so that different
> versions wouldn't clash otherwise and could be installed side-by-side.

It is fine to have multiple versions but we should use the port_select method and NOT have a generic geant4 port like perl5. We want to follow the python model not the perl model in Macports. 

So if you want this what we need to do is the following:
1. Move the current geant4 port to "geant-4.9.4".  That means svn cp the current port and then make geant4 obsolete. 
2. Create a new port for geant-4.9.5. 
3. Create a new port for geant-4.9.6.
4. Create a geant_select port. Let's not have any numbers involved in this port because there will presumably be a geant5 someday. 

> Btw: Geant4 10.0 beta has just been released!

5. Create a new port for geant-4.10.0. 

We can have separate Portfiles for each of these and possibly not use sub-ports. But it might be easier to make sub-ports for each build style. When did it switch to cmake? If it's version 4.9.6, then we would have one Portfile with 4.9.4 and 4.9.5 and the rest can go in the Portfile for 4.9.6+. I'm not sure of a good model Portfile to use. Maybe the mysql55 / mysql55-server Portfile? That has both in the same Portfile using subports without a Portgroup. The php5.3+ ports use a Portgroup with subport support. That is more complicated and more flexible. I don't think we need that much complexity. 

>> Do you have a Portfile for that version in some state? Can you send it to me or attach to one of the tickets? Time permitting, I am interested in helping getting this port updated.
> 
> See https://trac.macports.org/ticket/32716. I'm currently trying to
> create a port for Geant4 10.0 by modifying that one. (I'm not even
> sure if it will compile, but we need to start at some point and
> possible submit bug reports before the actual release.)
> 
>> Another thought, I think that separating the data into a subport would be a good idea but I'm open to staying with the current all inclusive single port.
> 
> I would really really like to see different versions installed
> side-by-side. Currently that would be 4.9.5p2, 4.9.6p2 and 4.10.0b1
> with geant4 defaulting to 4.9.6p2. In that case it would make sense to
> create a portgroup geant (or geant4). It would be very handy to be
> able to specify just
>    somefunction(G4NDL, 4.3, G4NDL, tar.gz, G4NEUTRONHPDATA,
> 55493e74cba90e6cb167a5008e138cd7)
> rather than
> 
> set v_G4NDL             4.3
> ...
> distfiles           geant${version}.tar.gz:cern \
>                    G4NDL.${v_G4NDL}.tar.gz:cern \
> ...
> checksums           geant${version}.tar.gz \
>                    <checksums> \
>                    G4NDL.${G4NDL_v}.tar.gz \
>                    <checksums> \
> ...
> 
> I didn't study the subports yet. It would be perfectly ok to use
>   depend geant4-data-G4NDL-4.3
> or something like this. That would also make it possible to share the
> same data file across different versions of Geant4 (also on the same
> place), but I don't know how to properly implement that. I'm not yet
> skilled enough. One needs approximately 8 data files. If we would keep
> 2-3 versions of Geant4 alive at the same moment, that would mean up to
> 24 packages.
> 
> Not entirely serious about it, but: are hidden packages possible? ;)
> It doesn't help anyone to see that a package geant4-data-G4NDL-4.3 is
> available to be installed. It would be nice to have it there
> independent of geant4, but it would be a bit confusing for the user.

Given multiple ports of geant, we should definitely create separate data ports. There is no need for them to be hidden and Macports has no mechanism for that. This is what dependencies are for. There are over 17,000 ports in Macports. Most people have no idea what most of them are already. 

The question is do we want 1 port called "geant4-data" or do we want a subport for each of the 8 datasets? Do they get updated individually or all at once? This port(s) should have a run-time dependency on any geant. The problem is that we need to have each geant have different file locations and thus we cannot use the path style dependency. I'm not sure of the best way to handle this. I think we will have to resort to geant-4.X variants. I assume we can have a single install location for the data files (i.e. /opt/local/etc/geant4/data) and have all geant-4.X.Y ports point to that same directory. 


Cheers!
Frank



More information about the macports-dev mailing list