Opened 12 years ago

Closed 11 years ago

#32716 closed update (fixed)

geant4: update to 9.5

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: mojca (Mojca Miklavec)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: mf2k (Frank Schima), cooljeanius (Eric Gallager)
Port: geant4

Attachments (6)

patch-upstream-clang-detection.diff (1011 bytes) - added by mojca (Mojca Miklavec) 11 years ago.
Upstream patch to recognize clang compiler in Geant4 9.5
geant4.10.0.Portfile (5.9 KB) - added by mojca (Mojca Miklavec) 11 years ago.
first attempt for geant4 10.0
geant4.10.0-v2.Portfile (7.0 KB) - added by mojca (Mojca Miklavec) 11 years ago.
geant4 10.0 - compiles & installs
geant4-data.Portfile (3.2 KB) - added by mojca (Mojca Miklavec) 11 years ago.
Portfile with subports for data
geant4.10.0-v3.Portfile (4.4 KB) - added by mojca (Mojca Miklavec) 11 years ago.
Geant4 10.0 with dependency on geant4-data
geant4-data.2.Portfile (3.6 KB) - added by mojca (Mojca Miklavec) 11 years ago.
Portfile with subports for data

Download all attachments as: .zip

Change History (28)

comment:1 Changed 12 years ago by mojca (Mojca Miklavec)

Cc: mojca.miklavec.lists@… added

Cc Me!

comment:2 Changed 12 years ago by mojca (Mojca Miklavec)

I would like to request CMake-based installation if possible.

I was playing with the following minimal example since I wanted working Qt that's not provided by current port. It is far from being finished, but it can serve as a starting point. Basic functionality works, but it definitely needs both more testing as well as more code (for existing & possibly new variants).

PortSystem          1.0
PortGroup           cmake 1.0

name                geant4
version             4.9.5.p01
categories          science
maintainers         pd.infn.it:cristiano.fontana
license             Geant4
description         Geant4 is a toolkit for the simulation of the passage of particles through matter.
long_description    Geant4 is a toolkit for the simulation of the passage of particles through matter. \
                    Its areas of application include high energy, nuclear and accelerator physics, as well as studies in medical and space science. \
                    The two main reference papers for Geant4 are published in Nuclear Instruments and Methods in Physics Research A 506 (2003) 250-303, \
                    and IEEE Transactions on Nuclear Science 53 No. 1 (2006) 270-278.
homepage            http://geant4.web.cern.ch/
platforms           darwin

distfiles           geant${version}.tar.gz:cern
master_sites        http://geant4.cern.ch/support/source/:cern

checksums           geant${version}.tar.gz \
                    rmd160  42249229a97c2eaf5ed2471a93608a1d0daa38e1 \
                    sha256  451f8c4a29bb0dc4b923d59d77535a657f0f8a30dc6c8ef639c8b1ebdb26a10e

worksrcdir          geant${version}
configure.dir       ${workpath}/build
build.dir           ${configure.dir}

post-extract {
    file mkdir ${configure.dir}
}

configure.post_args ${worksrcpath}

depends_lib         port:zlib

variant qt description {Build with Qt support} {
    depends_lib-append  port:qt4-mac
    configure.args-append -DGEANT4_USE_QT=ON
}

configure.args-append -DGEANT4_INSTALL_DATA=ON \
                      -DGEANT4_BUILD_EXAMPLES=ON \
                      -DGEANT4_INSTALL_EXAMPLES=OFF \
                      -DWITH_GEANT4_UIVIS=ON \
                      -DGEANT4_USE_OPENGL_X11=ON

default_variants +qt

I don't know if that's acceptable, but in the above implementation data is being downloaded while Geant4 is compiling. I used built-in CLHEP since I wasn't able to enable the external one. I tried with

configure.args-append -DGEANT4_USE_SYSTEM_CLHEP=ON \
                      -DCLHEP_CONFIG_EXECUTABLE=${prefix}/bin/clhep-config \
                      -DCLHEP_INCLUDE_DIR=${prefix}/include \
                      -DCLHEP_LIBRARY=${prefix}/lib/libCLHEP.dylib

but it didn't work.

In 9.4 iAIDA is broken.

comment:3 in reply to:  2 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to mojca.miklavec.lists@…:

I don't know if that's acceptable, but in the above implementation data is being downloaded while Geant4 is compiling.

It would be extremely preferable if the port did not download data while compiling. All necessary files should be downloaded by MacPorts in the fetch phase. That way we can provide checksums for them and thereby assure the user that the software they're installing is the same software the maintainer actually tested.

comment:4 Changed 12 years ago by mojca (Mojca Miklavec)

I believe that the data being fetched is checksummed as well (I already got some warnings/errors about wrong checksums):

# Where to install data in the install tree (a Default)
set(GEANT4_INSTALL_DATADIR_DEFAULT "${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}-${${PROJECT_NAME}_VERSION}/data")

# Define the known datasets as a list of tuples, tuple entries being
# forward slash separated. Messy.
# Tuple entries:
# 0 : Directory Name
# 1 : Version
# 2 : Filename
# 3 : Filename Extension
# 4 : Environment Variable
# 5 : Expected MD5 sum File
# 6 : (NOTIMPLEMENTEDYET) Marker for detecting existing install
#
set(GEANT4_DATASETS
  G4NDL/4.1/G4NDL/tar.gz/G4NEUTRONHPDATA/ff018eca2c2ca3bc32a096c2d72df64f
  G4EMLOW/6.27/G4EMLOW/tar.gz/G4LEDATA/4d204b9d730148d3e34b490105aed1bd
  PhotonEvaporation/2.2/G4PhotonEvaporation/tar.gz/G4LEVELGAMMADATA/8010e7ce8a92564e38dd3418e6040563
  RadioactiveDecay/3.4/G4RadioactiveDecay/tar.gz/G4RADIOACTIVEDATA/a5b681048584631608ab0965b33c7959
  G4ABLA/3.0/G4ABLA/tar.gz/G4ABLADATA/d7049166ef74a592cb97df0ed4b757bd
  G4NEUTRONXS/1.1/G4NEUTRONXS/tar.gz/G4NEUTRONXSDATA/61ef3a05b56525db04e11820e3f603f1
  G4PII/1.3/G4PII/tar.gz/G4PIIDATA/05f2471dbcdf1a2b17cbff84e8e83b37
  RealSurface/1.0/RealSurface/tar.gz/G4REALSURFACEDATA/0dde95e00fcd3bcd745804f870bb6884
  )

but of course doing the download automatically puts it slightly out of MacPorts' control. Of course, "manual/separate" download (like it has always been done for Geant4) is always possible. One argument might also be that "port clean geant4" would probably delete data files if fetched during installation, while if they are fetched during download, they stay on machine and may be reused.

(However I won't buy the argument that the packager is actually testing the contents of those files :)

My suggestion would be to create geant4-devel with 4.9.6 beta (or 4.9.5) when switching to CMake files since the installation can make quite a difference depending on user's habits. That would enable wider testing audience for a longer period of time. Saying that "Geant4 works" is namely not too well defined, in particular because different users use different approaches to find Geant4 (GNUmakefile, CMake, manual compilation, ...), most of them using DYLD_LIBRARY_PATH which makes my programs crash etc.

comment:5 Changed 11 years ago by mf2k (Frank Schima)

Cc: macsforever2000@… added

Cc Me!

comment:6 Changed 11 years ago by mojca (Mojca Miklavec)

This is the current state of the port (not yet finished):

PortSystem          1.0
PortGroup           cmake 1.0

name                geant4
version             4.9.5.p02
categories          science
maintainers         pd.infn.it:cristiano.fontana
license             Geant4
description         Geant4 is a toolkit for the simulation of the passage of particles through matter.
long_description    Geant4 is a toolkit for the simulation of the passage of particles through matter. \
		    Its areas of application include high energy, nuclear and accelerator physics, as well as studies in medical and space science. \
		    The two main reference papers for Geant4 are published in Nuclear Instruments and Methods in Physics Research A 506 (2003) 250-303, \
		    and IEEE Transactions on Nuclear Science 53 No. 1 (2006) 270-278.
homepage            http://geant4.web.cern.ch/
platforms           darwin

# list of files from cmake/Modules/Geant4InstallData.cmake 

# G4NDL/4.0/G4NDL/tar.gz/G4NEUTRONHPDATA
# G4EMLOW/6.23/G4EMLOW/tar.gz/G4LEDATA
# PhotonEvaporation/2.2/PhotonEvaporation/tar.gz/G4LEVELGAMMADATA
# RadioactiveDecay/3.4/G4RadioactiveDecay/tar.gz/G4RADIOACTIVEDATA
# G4ABLA/3.0/G4ABLA/tar.gz/G4ABLADATA
# G4NEUTRONXS/1.1/G4NEUTRONXS/tar.gz/G4NEUTRONXSDATA
# G4PII/1.3/G4PII/tar.gz/G4PIIDATA
# RealSurface/1.0/RealSurface/tar.gz/G4REALSURFACEDATA

set G4NDL_v             4.0
set G4EMLOW_v           6.23
set PhotonEvaporation_v 2.2
set RadioactiveDecay_v  3.4
set G4ABLA_v            3.0
set G4NEUTRONXS_v       1.1
set G4PII_v             1.3
set RealSurface_v       1.0

distfiles           geant${version}.tar.gz:cern \
                    G4NDL.${G4NDL_v}.tar.gz:cern \
                    G4EMLOW.${G4EMLOW_v}.tar.gz:cern \
                    PhotonEvaporation.${PhotonEvaporation_v}.tar.gz:cern \
                    G4RadioactiveDecay.${RadioactiveDecay_v}.tar.gz:cern \
                    G4ABLA.${G4ABLA_v}.tar.gz:cern \
                    G4NEUTRONXS.${G4NEUTRONXS_v}.tar.gz:cern \
                    G4PII.${G4PII_v}.tar.gz:cern \
                    RealSurface.${RealSurface_v}.tar.gz:cern
extract.only        geant${version}.tar.gz

master_sites        http://geant4.cern.ch/support/source/:cern

checksums           geant${version}.tar.gz \
                    rmd160  33413f6233b75c003254af5888f4af32d17f515d \
                    sha256  adb04fce9472228bb10d78cbc7f40493bfb37454beee22e7c80d630646cd3777 \
                    G4NDL.${G4NDL_v}.tar.gz \
                    rmd160  602d209009ee93d792cb67fe592aa37de6bab7c2 \
                    sha256  cef4fab143d8dcb8eae4c6e5c095af01d735bb36334b9958e00e30bcec9827ed \
                    G4EMLOW.${G4EMLOW_v}.tar.gz \
                    rmd160  84529979894ed5e35ade27201fee67884d7b381d \
                    sha256  6452215d9a0acbd35c71eed47f3581fd0276d7088b1a1a8588c003d9072aed3e \
                    PhotonEvaporation.${PhotonEvaporation_v}.tar.gz \
                    rmd160  5ced597a9bfd6095b08f29b780a38e91ea64c460 \
                    sha256  74ac25290274f12f40d80f5b30a876aaff31acfa1ea64bea6034158e759c30dd \
                    G4RadioactiveDecay.${RadioactiveDecay_v}.tar.gz \
                    rmd160  378c237cd5857b4205980815a3c47cdb654506d4 \
                    sha256  1ecfb477ca3c3966dd128193d8e11e24d6c3dc29cc188c8c9b0b21b941f9c30c \
                    G4ABLA.${G4ABLA_v}.tar.gz \
                    rmd160  656b10fc9d8022e89e99a728576d0b502161aa69 \
                    sha256  99fd4dcc9b4949778f14ed8364088e45fa4ff3148b3ea36f9f3103241d277014 \
                    G4NEUTRONXS.${G4NEUTRONXS_v}.tar.gz \
                    rmd160  a4cd8791219f0df856da39295e7f913a537bde1a \
                    sha256  d477a377aee229bf9d75d3c9cc4b7cd48b414285a246449e4e44a72bf037472b \
                    G4PII.${G4PII_v}.tar.gz \
                    rmd160  313a2615903b0682b8aabc344bedde82c345704b \
                    sha256  6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926 \
                    RealSurface.${RealSurface_v}.tar.gz \
                    rmd160  030513fe340e0cccbfe0b9ae9acb3ba6b5291ebb \
                    sha256  3e2d2506600d2780ed903f1f2681962e208039329347c58ba1916740679020b1

worksrcdir          geant${version}
configure.dir       ${workpath}/build
build.dir           ${configure.dir}

post-extract {
    file mkdir ${configure.dir}
}

patchfiles          patch-upstream-clang-detection.diff

configure.post_args ${worksrcpath}

depends_lib         port:clhep \
                    port:zlib


variant qt description {Build with Qt support} {
    depends_lib-append  port:qt4-mac

    configure.args-append -DGEANT4_USE_QT=ON
}

# CLHEP as included in geant4 apparently doesn't offer enough functionality for Gate
configure.args-append -DGEANT4_USE_SYSTEM_CLHEP=ON
# TODO: don't fetch data on the fly (use MacPorts to fetch the files instead)
# however that also skips installation of data & we need a fix for this
configure.args-append -DGEANT4_INSTALL_DATA=OFF \
                      -DGEANT4_BUILD_EXAMPLES=OFF \
                      -DGEANT4_INSTALL_EXAMPLES=OFF \
                      -DGEANT4_USE_OPENGL_X11=ON

default_variants +qt

Changed 11 years ago by mojca (Mojca Miklavec)

Upstream patch to recognize clang compiler in Geant4 9.5

Changed 11 years ago by mojca (Mojca Miklavec)

Attachment: geant4.10.0.Portfile added

first attempt for geant4 10.0

comment:7 Changed 11 years ago by mojca (Mojca Miklavec)

I attached the first attempt for geant4.10.00.b01, even if the title of this ticket suggests otherwise. It's not yet functional and it is currently throwing some errors for AIDA:

Traceback (most recent call last):
  File "/opt/local/bin/aida-config", line 266, in <module>
    ['help', 'version', 'includes', 'cflags', 'libs', 'runtime=', 'platform='])
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getopt.py", line 88, in getopt
    opts, args = do_longs(opts, args[0][2:], longopts, args[1:])
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getopt.py", line 152, in do_longs
    has_arg, opt = long_has_args(opt, longopts)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getopt.py", line 169, in long_has_args
    raise GetoptError('option --%s not recognized' % opt, opt)
getopt.GetoptError: option --implementation not recognized
-- G4 Examples: AIDA found. --> amsEcal example with AIDA enabled.
-- G4 Examples: GDML not installed --> ChargeExchangeMC example disabled
-- G4 Examples: AIDA package not found. --> CompositeCalorimeter example disabled
-- Found ROOT 5.34/08 in /opt/local
-- G4 Examples: ROOT found. --> iort_therapy example with ROOT enabled.
Traceback (most recent call last):
  File "/opt/local/bin/aida-config", line 266, in <module>
    ['help', 'version', 'includes', 'cflags', 'libs', 'runtime=', 'platform='])
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getopt.py", line 88, in getopt
    opts, args = do_longs(opts, args[0][2:], longopts, args[1:])
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getopt.py", line 152, in do_longs
    has_arg, opt = long_has_args(opt, longopts)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getopt.py", line 169, in long_has_args
    raise GetoptError('option --%s not recognized' % opt, opt)
getopt.GetoptError: option --implementation not recognized
-- G4 Examples: AIDA found. --> xray_fluorescence example with AIDA enabled.
...etc.

comment:8 Changed 11 years ago by cooljeanius (Eric Gallager)

Cc: egall@… added

Cc Me!

Changed 11 years ago by mojca (Mojca Miklavec)

Attachment: geant4.10.0-v2.Portfile added

geant4 10.0 - compiles & installs

comment:9 Changed 11 years ago by mojca (Mojca Miklavec)

The most basic port for 10.0 that compiles and installs (it needs more polishing of course).

Changed 11 years ago by mojca (Mojca Miklavec)

Attachment: geant4-data.Portfile added

Portfile with subports for data

Changed 11 years ago by mojca (Mojca Miklavec)

Attachment: geant4.10.0-v3.Portfile added

Geant4 10.0 with dependency on geant4-data

Changed 11 years ago by mojca (Mojca Miklavec)

Attachment: geant4-data.2.Portfile added

Portfile with subports for data

comment:10 Changed 11 years ago by mojca (Mojca Miklavec)

Cc: mojca@… added; mojca.miklavec.lists@… removed

comment:11 Changed 11 years ago by mojca (Mojca Miklavec)

Before I loose control of what I'm doing, I created a playground in SVN (svn: https://svn.macports.org/repository/macports/users/mojca, trac: browser:users/mojca/ports).

I have put geant4-data there and two separate ports for Geant4 9.6.p02 and 10.0.b01. The ports should probably end up being combined in some other way, but I wanted to have some Portfile to start with. Current TODO list:

  • figure out if it would be better to combine data files based on version of Geant4 rather than based on version of data (pro & contra)
  • find out all dependencies, possibly split x11 in a clean way
  • try to get rid of some paths like Geant4/GeantVERSION/Geant4
  • implement options from Geant4 9.4 (or rather: figure out which ones are needed and which ones are not)
  • possibly write a Portfile for Geant4 9.5 (depending on how long it will take to get these ports uploaded, it might be outdated enough, so that it won't even need to be added ;)
  • figure out how to combine different versions: as subports, using some PortGroup, ...; should one account for Geant5 in the naming scheme
  • implement a function to choose the default version of Geant4 as it is done for Python (using port select); symliking won't be sufficient: executable scripts need to be patched to recognize the path
  • test, ...
Last edited 11 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:12 Changed 11 years ago by mojca (Mojca Miklavec)

There are some issues left, but the SVN repository mentioned above should contain a working version of Geant4 9.5.p02, 9.6.p02 and 10.0.b01

comment:13 Changed 11 years ago by mojca (Mojca Miklavec)

Here's the description of the issue with X11. The following variables need to be set by Geant4 (or rather: this is what I get when building Geant4 9.6 within MacPorts as default values):

 OPENGL_INCLUDE_DIR               /System/Library/Frameworks/OpenGL.framework
 OPENGL_X11_INCLUDE_DIR           /usr/X11R6/include
 OPENGL_X11_gl_LIBRARY            /usr/X11R6/lib/libGL.dylib
 OPENGL_X11_glu_LIBRARY           /usr/X11R6/lib/libGLU.dylib
 OPENGL_gl_LIBRARY                /System/Library/Frameworks/OpenGL.framework
 OPENGL_glu_LIBRARY               /System/Library/Frameworks/AGL.framework

 X11_ICE_INCLUDE_PATH             /opt/local/include
 X11_ICE_LIB                      /opt/local/lib/libICE.dylib
 X11_SM_INCLUDE_PATH              /opt/local/include
 X11_SM_LIB                       /opt/local/lib/libSM.dylib
 X11_X11_INCLUDE_PATH             /opt/local/include
 X11_X11_LIB                      /opt/local/lib/libX11.dylib
 X11_XRes_INCLUDE_PATH            /usr/include
 X11_XRes_LIB                     /usr/X11R6/lib/libXRes.dylib
 X11_XShm_INCLUDE_PATH            /opt/local/include
 X11_XSync_INCLUDE_PATH           /opt/local/include
 X11_XTest_INCLUDE_PATH           /usr/include
 X11_XTest_LIB                    /usr/X11R6/lib/libXtst.dylib
 X11_Xaccessrules_INCLUDE_PATH    /opt/local/include
 X11_Xaccessstr_INCLUDE_PATH      /opt/local/include
 X11_Xau_INCLUDE_PATH             /opt/local/include
 X11_Xau_LIB                      /opt/local/lib/libXau.dylib
 X11_Xcomposite_INCLUDE_PATH      /opt/local/include
 X11_Xcomposite_LIB               /opt/local/lib/libXcomposite.dylib
 X11_Xcursor_INCLUDE_PATH         /opt/local/include
 X11_Xcursor_LIB                  /opt/local/lib/libXcursor.dylib
 X11_Xdamage_INCLUDE_PATH         /opt/local/include
 X11_Xdamage_LIB                  /opt/local/lib/libXdamage.dylib
 X11_Xdmcp_INCLUDE_PATH           /opt/local/include
 X11_Xdmcp_LIB                    /opt/local/lib/libXdmcp.dylib
 X11_Xext_LIB                     /opt/local/lib/libXext.dylib
 X11_Xfixes_INCLUDE_PATH          /opt/local/include
 X11_Xfixes_LIB                   /opt/local/lib/libXfixes.dylib
 X11_Xft_INCLUDE_PATH             /opt/local/include
 X11_Xft_LIB                      /opt/local/lib/libXft.dylib
 X11_Xi_INCLUDE_PATH              /opt/local/include
 X11_Xi_LIB                       /opt/local/lib/libXi.dylib
 X11_Xinerama_INCLUDE_PATH        /opt/local/include
 X11_Xinerama_LIB                 /opt/local/lib/libXinerama.dylib
 X11_Xinput_INCLUDE_PATH          /opt/local/include
 X11_Xinput_LIB                   /opt/local/lib/libXi.dylib
 X11_Xkb_INCLUDE_PATH             /opt/local/include
 X11_Xkbfile_INCLUDE_PATH         /opt/local/include
 X11_Xkbfile_LIB                  /opt/local/lib/libxkbfile.dylib
 X11_Xkblib_INCLUDE_PATH          /opt/local/include
 X11_Xlib_INCLUDE_PATH            /opt/local/include
 X11_Xmu_INCLUDE_PATH             /opt/local/include
 X11_Xmu_LIB                      /opt/local/lib/libXmu.dylib
 X11_Xmu_LIBRARY                  /opt/local/lib/libXmu.dylib
 X11_Xpm_INCLUDE_PATH             /opt/local/include
 X11_Xpm_LIB                      /opt/local/lib/libXpm.dylib
 X11_Xrandr_INCLUDE_PATH          /opt/local/include
 X11_Xrandr_LIB                   /opt/local/lib/libXrandr.dylib
 X11_Xrender_INCLUDE_PATH         /opt/local/include
 X11_Xrender_LIB                  /opt/local/lib/libXrender.dylib
 X11_Xscreensaver_INCLUDE_PATH    /opt/local/include
 X11_Xscreensaver_LIB             /opt/local/lib/libXss.dylib
 X11_Xshape_INCLUDE_PATH          /opt/local/include
 X11_Xt_INCLUDE_PATH              /opt/local/include
 X11_Xt_LIB                       /opt/local/lib/libXt.dylib
 X11_Xutil_INCLUDE_PATH           /opt/local/include
 X11_Xv_INCLUDE_PATH              /usr/include
 X11_Xv_LIB                       /usr/X11R6/lib/libXv.dylib
 X11_Xxf86misc_LIB                /usr/X11R6/lib/libXxf86misc.dylib
 X11_Xxf86vm_LIB                  /opt/local/lib/libXxf86vm.dylib
 X11_dpms_INCLUDE_PATH            /opt/local/include
 X11_xf86misc_INCLUDE_PATH        /usr/include
 X11_xf86vmode_INCLUDE_PATH       /opt/local/include

Some files like cmake/Modules/Geant4InterfaceOptions.cmake hardcode the search path, as in:

find_path(OPENGL_X11_INCLUDE_DIR GL/gl.h
  PATHS /usr/X11R6/include
  NO_DEFAULT_PATH
  )

find_library(OPENGL_X11_gl_LIBRARY GL
  PATHS /usr/X11R6/lib
  NO_DEFAULT_PATH
  )

find_library(OPENGL_X11_glu_LIBRARY GLU
  PATHS /usr/X11R6/lib
  NO_DEFAULT_PATH
  )

Ryan suggested to use the mesa port, but some patching will be needed to find the right library first. The weird fact is that the final code doesn't link tho all the libraries mentioned in the CMake list, so I'm not exactly sure how many dependencies need to be pulled in. But quite some code needs to be patched and it would be nice to submit some patches upstream if anyone has a good idea about the proper search algorithm for libraries.

comment:14 Changed 11 years ago by mojca (Mojca Miklavec)

The only remaining issues other than X11 dependencies & linking are the following:

  • Smooth transition from 4.9.4: I'm not sure what is needed or how to implement it.
  • Decide on licence: is license Restrictive/Distributable Geant4 OK?
  • Decide on exact port name: geant4?
  • Decide on exact subport name: geant4.9.6?
  • Decide on exact variant names: raytracer_x11/raytracerx, motif/motif_x11, opengl_x11/x11
  • Document how to use the port (where could this go?)
  • Review of the Portfile from an experienced MacPorts developer.

Once these are settled, I believe it would be time for the port to go live.

Last edited 11 years ago by mojca (Mojca Miklavec) (previous) (diff)

comment:15 in reply to:  14 ; Changed 11 years ago by mf2k (Frank Schima)

Here is my $0.02.

Replying to mojca@…:

  • Smooth transition from 4.9.4: I'm not sure what is needed or how to implement it.

Make the current geant4 port replaced_by geant4.9.6.

  • Decide on licence: is license Restrictive/Distributable Geant4 OK?

I don't have an opinion here and haven't researched the geant4 license.

  • Decide on exact port name: geant4?

I recommend the overall meta port be called "geant" so the version is not encoded in the name. This allows an easy transition from the current geant4 port to be replaced_by this.

  • Decide on exact subport name: geant4.9.6?

I like the this. The perl ports (messed up as the perl situation is) are a good example. I never liked the python/ruby model which omits the periods. The ruby186 port is a good example of a confusing name.

  • Decide on exact variant names: raytracer_x11/raytracerx, motif/motif_x11, opengl_x11/x11

I like the more explicit naming: raytracer_x11, motif_x11, opengl_x11. But I say that without knowing what the exact differences are.

  • Document how to use the port (where could this go?)

Use the wiki HOWTO page to link to a new geant subpage which documents everything. The port itself can have a "notes" entry which links to this.

  • Review of the Portfile from an experienced MacPorts developer.

Hopefully someone more experienced/knowledgeable than me will look, but I'll try to take a look sometime.

Once these are settled, I believe it would be time for the port to go live.

Good work on this so far. I've been watching from the sidelines without much time to help.

comment:16 Changed 11 years ago by mf2k (Frank Schima)

BTW, see the current mysql5-server-devel port for an example of how to use replaced_by.

comment:17 in reply to:  15 ; Changed 11 years ago by mojca (Mojca Miklavec)

  • Smooth transition from 4.9.4: I'm not sure what is needed or how to implement it.

Make the current geant4 port replaced_by geant4.9.6.

If I understand correctly this is only possible if the new port is called geant?

  • Decide on exact port name: geant4?

I recommend the overall meta port be called "geant" so the version is not encoded in the name. This allows an easy transition from the current geant4 port to be replaced_by this.

This is definitely true. (I don't know to what extent calling the new port geant4 would be a problem though. I wouldn't know how to handle it in any case.)

  • Decide on exact subport name: geant4.9.6?

I like the this. The perl ports (messed up as the perl situation is) are a good example. I never liked the python/ruby model which omits the periods. The ruby186 port is a good example of a confusing name.

But then I have another question for you: how would you name the patch files (I currently have patch-cmake-Modules-Geant4BuildProjectConfig.cmake.4100.diff for example) and variants (gate could depend on two different versions of geant, I called them geant495 and geant496; would more verbose variant names be better?)

  • Decide on exact variant names: raytracer_x11/raytracerx, motif/motif_x11, opengl_x11/x11

I like the more explicit naming: raytracer_x11, motif_x11, opengl_x11. But I say that without knowing what the exact differences are.

Just different GUIs, in fact one more obsolete on mac than the other (maybe raytracer is usable). Maybe they could be a tiny bit faster than Qt, but definitely a lot more clumsy to use. Another option is to leave them in the port for a while, only comment them out and ask for the first user to request them. If nobody requests them, I would actually be happier to leave x11 out.

  • Document how to use the port (where could this go?)

Use the wiki HOWTO page to link to a new geant subpage which documents everything. The port itself can have a "notes" entry which links to this.

Thank you.

comment:18 in reply to:  17 Changed 11 years ago by mf2k (Frank Schima)

Replying to mojca@…:

  • Smooth transition from 4.9.4: I'm not sure what is needed or how to implement it.

Make the current geant4 port replaced_by geant4.9.6.

If I understand correctly this is only possible if the new port is called geant?

I believe so but someone please correct me if I'm wrong.

  • Decide on exact subport name: geant4.9.6?

I like the this. The perl ports (messed up as the perl situation is) are a good example. I never liked the python/ruby model which omits the periods. The ruby186 port is a good example of a confusing name.

But then I have another question for you: how would you name the patch files (I currently have patch-cmake-Modules-Geant4BuildProjectConfig.cmake.4100.diff for example) and variants (gate could depend on two different versions of geant, I called them geant495 and geant496; would more verbose variant names be better?)

I wouldn't worry about renaming patches. Those are for port maintainers only. As for variants, I'm not actually sure if having a period in a variant name is valid. I can't think of a variant name that uses one so probably best to stick to geant495 etc.

comment:19 Changed 11 years ago by mojca (Mojca Miklavec)

Another option that comes to my mind (but I don't know if it's acceptable) would be to put the following at the bottom of the geant4 Portfile:

# stub port
if {$subport == $name || $subport == ""} {
    depends_lib   port:geant4.9.6
    fetch         {}
    checksum      {}
    extract       {}
    patch         {}
    use_configure no
    build         {}
    destroot {
        set geant.docdir ${prefix}/share/doc/${name}
        xinstall -m 755 -d ${destroot}${geant.docdir}
        system "echo $name is a stub port > ${destroot}${geant.docdir}/README"
    }
    livecheck.type  none
}

comment:20 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)

Owner: changed from cristiano.fontana@… to macports-tickets@…

comment:21 Changed 11 years ago by mojca (Mojca Miklavec)

Cc: mojca@… removed
Owner: changed from macports-tickets@… to mojca@…

comment:22 Changed 11 years ago by mojca (Mojca Miklavec)

Resolution: fixed
Status: newclosed

I upgraded the port in r111720 with substantial changes. It now includes a subport for geant4.9.5 and geant4.9.6 as well as separate data subports.

Note: See TracTickets for help on using tickets.