[111720] trunk/dports/science/geant4

mojca at macports.org mojca at macports.org
Sun Sep 29 17:13:17 PDT 2013


Revision: 111720
          https://trac.macports.org/changeset/111720
Author:   mojca at macports.org
Date:     2013-09-29 17:13:17 -0700 (Sun, 29 Sep 2013)
Log Message:
-----------
geant4: upgrade/create subports geant4.9.5/geant4.9.6[-data], use CMake, become maintainer (#32716)

Modified Paths:
--------------
    trunk/dports/science/geant4/Portfile

Added Paths:
-----------
    trunk/dports/science/geant4/files/geant4.10.0
    trunk/dports/science/geant4/files/geant4.9.5
    trunk/dports/science/geant4/files/geant4.9.6
    trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4BuildProjectConfig.cmake.4100.diff
    trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4BuildProjectConfig.cmake.495.diff
    trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4BuildProjectConfig.cmake.496.diff
    trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4InterfaceOptions.cmake.4100.diff
    trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4InterfaceOptions.cmake.495.diff
    trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4InterfaceOptions.cmake.496.diff
    trunk/dports/science/geant4/files/patch-examples-advanced-xray_fluorescence.diff
    trunk/dports/science/geant4/files/patch-source-interfaces-common-src-G4Qt.cc.495.diff
    trunk/dports/science/geant4/files/patch-source-interfaces-common-src-G4Qt.cc.diff
    trunk/dports/science/geant4/files/patch-upstream-qt.4100.diff
    trunk/dports/science/geant4/files/patch-upstream-qt.496.diff

Removed Paths:
-------------
    trunk/dports/science/geant4/files/env.csh
    trunk/dports/science/geant4/files/env.sh

Modified: trunk/dports/science/geant4/Portfile
===================================================================
--- trunk/dports/science/geant4/Portfile	2013-09-29 22:19:34 UTC (rev 111719)
+++ trunk/dports/science/geant4/Portfile	2013-09-30 00:13:17 UTC (rev 111720)
@@ -1,412 +1,313 @@
+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
 # $Id$
 
+# Keep in sync with Gate (and/or implement a PortGroup)
+
 PortSystem          1.0
+PortGroup           cmake 1.0
+PortGroup           select 1.0
 
 name                geant4
-version             4.9.4.p02
+version             4
 categories          science
-maintainers         nomaintainer
-license             Geant4
+maintainers         mojca openmaintainer
+license             Restrictive/Distributable
+#                   http://geant4.web.cern.ch/geant4/license/LICENSE.html
 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.
+                    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
 
-# Data files versions
-set G4NDL_v             3.14
-set G4EMLOW_v           6.19
-set PhotonEvaporation_v 2.1
-set RadioactiveDecay_v  3.3
-set G4ABLA_v            3.0
-set G4NEUTRONXS_v       1.0
-set G4PII_v             1.2
-set RealSurface_v       1.0
+master_sites        http://geant4.cern.ch/support/source/
 
-distfiles           geant${version}.tar.gz:cern \
-                    G4NDL.${G4NDL_v}.tar.gz:cern \
-                    G4EMLOW.${G4EMLOW_v}.tar.gz:cern \
-                    G4PhotonEvaporation.${PhotonEvaporation_v}.tar.gz:cern \
-                    G4RadioactiveDecay.${RadioactiveDecay_v}.tar.gz:cern \
-                    G4ABLA.${G4ABLA_v}.tar.gz:mp \
-                    G4NEUTRONXS.${G4NEUTRONXS_v}.tar.gz:cern \
-                    G4PII.${G4PII_v}.tar.gz:cern \
-                    RealSurface.${RealSurface_v}.tar.gz:cern
-
-master_sites        http://geant4.cern.ch/support/source/:cern \
-                    macports_distfiles:mp
-
-checksums           geant${version}.tar.gz \
-                    md5     d4e95badeb536d82278e690280633846 \
-                    sha1    304d45b8c77a80965a54ca34228f5fdace4ba3fa \
-                    rmd160  674bc1531b916dac99a15a015dd816d9ac01d329 \
-                    G4NDL.${G4NDL_v}.tar.gz \
-                    md5     b9b6869bc28c83d9160f674785a9f09f \
-                    sha1    dc8b7a5fa0fcd06a85071c1b09730de6d04362d3 \
-                    rmd160  8393b5e0301526ec747da133b6972c70b8c44210 \
-                    G4EMLOW.${G4EMLOW_v}.tar.gz \
-                    md5     c0fe7c8a59a2abde60d13e947f566718 \
-                    sha1    f63e41a43a3d0c793a04dbb6cce0bdcfeedf6889 \
-                    rmd160  ba67b3f1ee215966adc99661a1db4a5bf09c5511 \
-                    G4PhotonEvaporation.${PhotonEvaporation_v}.tar.gz \
-                    md5     d1ee8ac49515109c34ae3714c22d59dd \
-                    sha1    56937f579e2134259963093ca735afc2b5a6ec5c \
-                    rmd160  be5e5ef9db4b85f916017561cc2dfbc5a1b226d7 \
-                    G4RadioactiveDecay.${RadioactiveDecay_v}.tar.gz \
-                    md5     2a1b24863d5c5a4d165303f189c5b08e \
-                    sha1    877a31ddf673729aad5b5f5892333495a1803784 \
-                    rmd160  065769a13b45dd335a6c6bd3b265c6d0370dcf96 \
-                    G4ABLA.${G4ABLA_v}.tar.gz \
-                    md5     d2d4e99b14f7a5057f4c10d9c2d647dd \
-                    sha1    5f38676f1650a508e49d35f9405ac96984388135 \
-                    rmd160  5a032ee8e90d00f39b67114fe257ec47001f347b \
-                    G4NEUTRONXS.${G4NEUTRONXS_v}.tar.gz \
-                    rmd160  c8ddf1d50e7fdbc3d53959bb45bb84615467f96d \
-                    sha256  577d28b7faa41caacb001a30384028cd5e3b7018755ab94a427ce0a7feeab365 \
-                    G4PII.${G4PII_v}.tar.gz \
-                    rmd160  de024c7462c8bca4ace2b21da116edbc9705ab7e \
-                    sha256  ad03a22444c4020b9ee8e4ed88bf00cfd8b227b9d1e71e16b847e3075151f12c \
-                    RealSurface.${RealSurface_v}.tar.gz \
-                    md5     0dde95e00fcd3bcd745804f870bb6884 \
-                    sha1    9b4bd95c647dc702458eeaf89ebf62c5885e2ece \
-                    rmd160  030513fe340e0cccbfe0b9ae9acb3ba6b5291ebb
-
-worksrcdir          geant${version}/source
-
-depends_lib         port:clhep \
-                    port:zlib
-
-default_variants    +global +motif +shared +gdml +raytracerx +aida
-
-
-variant debug description {Compile with debug flags on} {
-    build.env-append    G4DEBUG=1
+# meaning of the fields:
+# - version
+# - revision (used internally in MacPorts to force updates)
+# - revision of data files (used internally in MacPorts to force updates)
+# - patchlevel (also used in directory names)
+# - version string (used for fetching the source)
+#
+# if we start distributing betas, epoch will have to be added for the transition from version 4.x.y.b01 to 4.x.y
+set geant.versions_info {
+     9.5  0  0  2  4.9.5.p02    33413f6233b75c003254af5888f4af32d17f515d  adb04fce9472228bb10d78cbc7f40493bfb37454beee22e7c80d630646cd3777
+     9.6  0  0  2  4.9.6.p02    9ae32c3f8769e303b41df164693f77a74ca6db97  cf5df83b7e2c99e6729449b32d3ecb0727b4692317426b66fc7fd41951c7351f
 }
+# temporary disabled beta version (until the official version gets released)
+#   10.0  0  0  0  4.10.00.b01  14820eca2893ffa7a27cd44f51c6c9b4b125b491  0fa7c9b0e1b09fd11b682523b839b4c6c67f4c3cd5bc9a9357512c37ea4a9e1e
 
-variant global description {Build with global libraries} conflicts granular {
-    build.target        global
+set geant.data_versions_10.0 {
+    G4NDL              4.3   G4NDL                G4NEUTRONHPDATA    55493e74cba90e6cb167a5008e138cd7  d7559295e71e373246f90db9ab8ce652a1bb71c2  169dbc6d6c1c5b7bb57ee676687ae5b830847cf4e75fecb1e35187172f472e6a
+    G4EMLOW            6.33  G4EMLOW              G4LEDATA           0002a1c16c9b1fb5e8d49dfbce12a576  e6b3b60c04d6e5faa6ea9d9f04c805fd479dbc47  441542ed5359b536f7908369d4abc045468a14e89975855dd145ffd352d3701f
+    PhotonEvaporation  2.3   G4PhotonEvaporation  G4LEVELGAMMADATA   08848ebdd536280a0629d802040b70be  8cd383005f5f8c38f69e4818cf5b1ad397925abc  60449df933794aa0ad3938886c8c023e3093ff59ad6c752923390d5c550f34cb
+    RadioactiveDecay   3.7   G4RadioactiveDecay   G4RADIOACTIVEDATA  039e5f64b0e451eb5c095bf81552cb42  a30e4c0123242405219da4194f37653719a53cbc  f0b96a5f39fb58c1fff80140b4b471fee9718e96d01660bc1d6bff85e0ceab53
+    G4NEUTRONXS        1.3   G4NEUTRONXS          G4NEUTRONXSDATA    ede7c4b3e99cbe1773b672a7404fe0f6  33ed98449ad754cfd756247392d5484aca8a276b  0aad03ecaf3762e38d9cede48366615d694544c3a1fd843141c548a9a128028f
+    G4PII              1.3   G4PII                G4PIIDATA          05f2471dbcdf1a2b17cbff84e8e83b37  313a2615903b0682b8aabc344bedde82c345704b  6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926
+    RealSurface        1.0   RealSurface          G4REALSURFACEDATA  0dde95e00fcd3bcd745804f870bb6884  030513fe340e0cccbfe0b9ae9acb3ba6b5291ebb  3e2d2506600d2780ed903f1f2681962e208039329347c58ba1916740679020b1
+    G4SAIDDATA         1.1   G4SAIDDATA           G4SAIDXSDATA       d88a31218fdf28455e5c5a3609f7216f  7f0c75c86eea3d227379d3dfe77e4600752f99a2  a38cd9a83db62311922850fe609ecd250d36adf264a88e88c82ba82b7da0ed7f
 }
-
-variant granular description {Build with granular libraries} conflicts global {
-    build.env-append    G4LIB_USE_GRANULAR=1
-
-    build.target
+set geant.data_versions_9.6 {
+    G4NDL              4.2   G4NDL                G4NEUTRONHPDATA    2302d7ffeef1a450955302f027ee1cf4  5289896235ccb84f551f642447372f286084a695  173f60a506b9176d7ff531d6a5f6195dcec74df30ffafc09644f47f979bd641b
+    G4EMLOW            6.32  G4EMLOW              G4LEDATA           9d3302072ba694b1d4505c330ed89d89  d5b1c435fb4925339175188472f1453637c98b0d  bdb3c00af89b18c21553d79fd823110429fdcf1e83c029aa450185d9caf4a7cf
+    PhotonEvaporation  2.3   G4PhotonEvaporation  G4LEVELGAMMADATA   08848ebdd536280a0629d802040b70be  8cd383005f5f8c38f69e4818cf5b1ad397925abc  60449df933794aa0ad3938886c8c023e3093ff59ad6c752923390d5c550f34cb
+    RadioactiveDecay   3.6   G4RadioactiveDecay   G4RADIOACTIVEDATA  9566ff1614bea7455343328cb66abd6f  1ed4a9707a18720d9a649fd4a7ca97faf24434b9  3502ed4be04d694115a3acf59d7a3593725a2d79f3adad0ffa135ff653f89d1d
+    G4NEUTRONXS        1.2   G4NEUTRONXS          G4NEUTRONXSDATA    092634b9258c7bc387cb83557ff1df81  5ebf3b9006a9c6249cad8e40e9661fbe3ec50f0e  9ce488505b4c3623e2d98209f708a30e3f213a1371a9110d289257a02b2d7d5c
+    G4PII              1.3   G4PII                G4PIIDATA          05f2471dbcdf1a2b17cbff84e8e83b37  313a2615903b0682b8aabc344bedde82c345704b  6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926
+    RealSurface        1.0   RealSurface          G4REALSURFACEDATA  0dde95e00fcd3bcd745804f870bb6884  030513fe340e0cccbfe0b9ae9acb3ba6b5291ebb  3e2d2506600d2780ed903f1f2681962e208039329347c58ba1916740679020b1
+    G4SAIDDATA         1.1   G4SAIDDATA           G4SAIDXSDATA       d88a31218fdf28455e5c5a3609f7216f  7f0c75c86eea3d227379d3dfe77e4600752f99a2  a38cd9a83db62311922850fe609ecd250d36adf264a88e88c82ba82b7da0ed7f
 }
-
-variant shared description {Build shared libraries} conflicts static {
-    build.env-append    G4LIB_BUILD_SHARED=1
+set geant.data_versions_9.5 {
+    G4NDL              4.0   G4NDL                G4NEUTRONHPDATA    6d23aff98e5706af1dd7fff397969f37  602d209009ee93d792cb67fe592aa37de6bab7c2  cef4fab143d8dcb8eae4c6e5c095af01d735bb36334b9958e00e30bcec9827ed
+    G4EMLOW            6.23  G4EMLOW              G4LEDATA           98cdca1024bf168c8f8ca1deb40f43b9  84529979894ed5e35ade27201fee67884d7b381d  6452215d9a0acbd35c71eed47f3581fd0276d7088b1a1a8588c003d9072aed3e
+    PhotonEvaporation  2.2   G4PhotonEvaporation  G4LEVELGAMMADATA   8010e7ce8a92564e38dd3418e6040563  8efc16c40b4755d209f83f31f2d251bbef52ccb8  9db02ef8e5b065c1b7f7d1becd1b72dde2b8fc617bcedde97788040418f239c0
+    RadioactiveDecay   3.4   G4RadioactiveDecay   G4RADIOACTIVEDATA  a5b681048584631608ab0965b33c7959  378c237cd5857b4205980815a3c47cdb654506d4  1ecfb477ca3c3966dd128193d8e11e24d6c3dc29cc188c8c9b0b21b941f9c30c
+    G4ABLA             3.0   G4ABLA               G4ABLADATA         d7049166ef74a592cb97df0ed4b757bd  656b10fc9d8022e89e99a728576d0b502161aa69  99fd4dcc9b4949778f14ed8364088e45fa4ff3148b3ea36f9f3103241d277014
+    G4NEUTRONXS        1.1   G4NEUTRONXS          G4NEUTRONXSDATA    61ef3a05b56525db04e11820e3f603f1  a4cd8791219f0df856da39295e7f913a537bde1a  d477a377aee229bf9d75d3c9cc4b7cd48b414285a246449e4e44a72bf037472b
+    G4PII              1.3   G4PII                G4PIIDATA          05f2471dbcdf1a2b17cbff84e8e83b37  313a2615903b0682b8aabc344bedde82c345704b  6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926
+    RealSurface        1.0   RealSurface          G4REALSURFACEDATA  0dde95e00fcd3bcd745804f870bb6884  030513fe340e0cccbfe0b9ae9acb3ba6b5291ebb  3e2d2506600d2780ed903f1f2681962e208039329347c58ba1916740679020b1
 }
 
-variant static description {Build static libraries} conflicts shared {
-    build.env-append    G4LIB_BUILD_STATIC=1
-}
+foreach {geant.version geant.revision geant.datarevision geant.patchlevel geant.version_full geant.rmd160 geant.sha256} ${geant.versions_info} {
 
-variant aida description {Enable the use with AIDA} {
-    depends_lib-append  port:iAIDA
+    # this variable could/should come from a PortGroup one day
+    # note that gmk files go to share/Geant4/Geant4-${geant.version}.${geant.patchlevel}
+    set geant.datadir_x ${prefix}/share/Geant4/Data/Geant4.${geant.version}
+    # or perhaps share/Geant4/Geant${geant.version_simple}/Data
 
-    build.env-append    G4ANALYSIS_USE=1
-}
+    subport ${name}.${geant.version}-data {
+        set                 geant.version_simple 4.${geant.version}
+        set                 geant.datadir ${geant.datadir_x}
+        version             ${geant.version_simple}
+        revision            ${geant.datarevision}
+        supported_archs     noarch
+        description         Data files for Geant${version}
+        long_description    ${description}
 
-variant no_ui description {Build without user interface nor visualization driver} conflicts motif athena raytracerx {
-    build.env-append    G4UI_NONE=1
-    build.env-append    G4VIS_NONE=1
-}
 
-variant motif description {Build with Motif user interface and visualization driver} {
-    depends_lib-append  port:mesa \
-                        port:openmotif
+        # TODO: use an array (hash) to implement this without if-else
+        if {${geant.version} == "10.0" } {
+            set geant.data_versions     ${geant.data_versions_10.0}
+        }
+        if {${geant.version} == "9.6" } {
+            set geant.data_versions     ${geant.data_versions_9.6}
+        }
+        if {${geant.version} == "9.5" } {
+            set geant.data_versions     ${geant.data_versions_9.5}
+        }
+        # Is it possible to make the distfiles list empty in some way?
+        distfiles-delete ${name}-${version}${extract.suffix}
+        foreach {data.name data.version data.filename data.envvariable data.md5 data.rmd160 data.sha256} ${geant.data_versions} {
+            set filename ${data.filename}.${data.version}${extract.suffix}
+            distfiles-append ${filename}
+            checksums-append ${filename} md5 ${data.md5} rmd160 ${data.rmd160} sha256 ${data.sha256}
+        }
+        post-extract {
+            # only necessary for G4EMLOW 6.23 & 6.32
+            # but G4NEUTRONXS 1.1, 1.2, 1.3 and PhotonEvaporation 2.2 also have some weird permissions
+            system "find ${workpath} -type f -exec chmod 644 {} \\;"
+        }
+        use_configure no
+        build {}
 
-    build.env-append    XMFLAGS=-I${prefix}/include
-    build.env-append    XMLIBS='-L${prefix}/lib -lXm -lXpm'
-
-    build.env-append    G4VIS_USE_OPENGLX=1
-    build.env-append    G4VIS_BUILD_OPENGLX_DRIVER=1
-
-    build.env-append    G4VIS_USE_OPENGLXM=1
-    build.env-append    G4VIS_BUILD_OPENGLXM_DRIVER=1
-
-    build.env-append    G4UI_USE_XM=1
-    build.env-append    G4UI_BUILD_XM_SESSION=1
-}
-
-variant athena description {Build with Athena user interface} {
-    depends_lib-append  port:mesa
-
-    build.env-append    G4UI_BUILD_XAW_SESSION=1
-    build.env-append    G4UI_USE_XAW=1
-
-    build.env-append    XAWFLAGS=
-    build.env-append    XAWLIBS=
-}
-
-variant raytracerx description {Build with Raytracer visualization driver} {
-    depends_lib-append  port:mesa
-
-    build.env-append    G4VIS_USE_OPENGLX=1
-    build.env-append    G4VIS_BUILD_OPENGLX_DRIVER=1
-
-    build.env-append    G4VIS_USE_RAYTRACERX=1
-    build.env-append    G4VIS_BUILD_RAYTRACERX_DRIVER=1
-}
-
-variant gdml description {Build with Geometry Description Markup Language (GDML)} {
-    depends_lib-append  port:xercesc3
-
-    build.env-append    XERCESCROOT=${prefix}
-
-    build.env-append    G4LIB_BUILD_GDML=1
-}
-
-
-post-patch {
-    # Propagate user's flags and compiler settings
-    reinplace "s/-o/\$(LDFLAGS) -o/g" ${worksrcpath}/GNUmakefile
-
-    reinplace "/\\\$(G4LIB)\\\/\\\$(G4SYSTEM)/d" ${workpath}/geant${version}/config/architecture.gmk
-
-    # Replaces g++ with standard compiler and fixes some paths
-    fs-traverse file ${workpath}/geant${version}/config {
-        if {".gmk" == [file extension ${file}]} {
-            reinplace "s:g++:${configure.cxx}:g" ${file}
-            reinplace "s:gfortran:${configure.fc}:g" ${file}
-            reinplace "s:CXXFLAGS += \$(INCFLAGS):CXXFLAGS += \$(INCFLAGS) -I\$(CLHEP_INCLUDE_DIR):g" ${file}
-            reinplace "s:CPPFLAGS += \$(INCFLAGS):CXXFLAGS += \$(INCFLAGS) -I\$(CLHEP_INCLUDE_DIR):g" ${file}
-
-            reinplace "s:\$(G4LIB)/\$(G4SYSTEM):\$(G4LIB):g" ${file}
-            reinplace "s:\$(G4BIN)/\$(G4SYSTEM):\$(G4BIN):g" ${file}
-            reinplace "s:\$(G4TMP)/\$(G4SYSTEM):\$(G4TMP):g" ${file}
+        destroot {
+            xinstall -m 755 -d ${destroot}${geant.datadir}
+            # create a script to initialize environmental variables for locating the data files & move data files to destination
+            #
+            # TODO: maybe a better name or a better location, possibly including version
+            # the filename of this file should probably come frome the portgroup
+            # one option is also to install this as part of geant4 core installation
+            xinstall -m 755 -d ${destroot}${prefix}/libexec/Geant4/Geant${geant.version_simple}
+            set filename ${destroot}${prefix}/libexec/Geant4/Geant${geant.version_simple}/geant4data
+            system "echo #!/bin/sh  > ${filename}.sh"
+            system "echo #!/bin/csh > ${filename}.csh"
+            system "echo export G4DATADIR=\\\"${geant.datadir}\\\" >> ${filename}.sh"
+            system "echo setenv G4DATADIR=\\\"${geant.datadir}\\\" >> ${filename}.csh"
+            foreach {data.name data.version data.filename data.envvariable data.md5 data.rmd160 data.sha256} ${geant.data_versions} {
+                # move data files to destination
+                move ${workpath}/${data.name}${data.version} ${destroot}${geant.datadir}
+                # add environmental variable to locate it
+                system "echo export ${data.envvariable}=\\\"\\\$G4DATADIR/${data.name}${data.version}\\\" >> ${filename}.sh"
+                system "echo setenv ${data.envvariable} \\\"\\\$G4DATADIR/${data.name}${data.version}\\\" >> ${filename}.csh"
+            }
         }
     }
 
-    # Fix an error message in build phase (I hope that it will not cause any problems)
-    reinplace "s:LDFLAGS += -bind_at_load -arch_multiple:LDFLAGS += -bind_at_load:g" ${workpath}/geant${version}/config/sys/Darwin-g++.gmk
+    subport ${name}.${geant.version} {
+        set                 geant.version_simple 4.${geant.version}
+        set                 geant.distfilename   geant${geant.version_full}${extract.suffix}
+        set                 geant.datadir        ${geant.datadir_x}
+        # x -> x.p01 -> x.p02 works properly, but the beta x.b01 would come after x and would need an increase in epoch
+        version             ${geant.version_full}
+        revision            ${geant.revision}
+        distfiles           ${geant.distfilename}
+        checksums           ${geant.distfilename} rmd160 ${geant.rmd160} sha256 ${geant.sha256}
 
-    reinplace "s:Darwin-${configure.cxx}:Darwin-g++:g" ${workpath}/geant${version}/config/sys/Darwin-g++.gmk
+        worksrcdir          geant${version}
+        configure.dir       ${workpath}/build
+        build.dir           ${configure.dir}
 
-    reinplace "s:\$(G4LIB)/\$(G4SYSTEM):\$(G4LIB):g" ${workpath}/geant${version}/source/GNUmakefile
-    reinplace "s:\$(G4BIN)/\$(G4SYSTEM):\$(G4BIN):g" ${workpath}/geant${version}/source/GNUmakefile
-    reinplace "s:\$(G4TMP)/\$(G4SYSTEM):\$(G4TMP):g" ${workpath}/geant${version}/source/GNUmakefile
-
-    fs-traverse file ${workpath}/geant${version}/examples {
-        if [string match {/GNUmakefile$} ${file}] {
-            reinplace "s:\$(G4LIB)/\$(G4SYSTEM):\$(G4LIB):g" ${file}
-            reinplace "s:\$(G4BIN)/\$(G4SYSTEM):\$(G4BIN):g" ${file}
-            reinplace "s:\$(G4TMP)/\$(G4SYSTEM):\$(G4TMP):g" ${file}
+        post-extract {
+            file mkdir ${configure.dir}
         }
-    }
+        configure.post_args ${worksrcpath}
 
-    # Fixes paths in shell setup scripts
-    foreach fileextension {sh csh} {
-        file copy ${filespath}/env.${fileextension} ${worksrcpath}
+        # check if these are all the dependencies
+        depends_lib         port:${subport}-data \
+                            port:clhep \
+                            port:expat \
+                            port:root \
+                            port:zlib \
+        depends_run         port:geant4_select
 
-        set file ${worksrcpath}/env.${fileextension}
+        select.group        geant4
+        select.file         ${filespath}/${subport}
 
-        reinplace "s:@PREFIX@:${prefix}:g" ${file}
-        reinplace "s:@WORKSRCPATH@:${worksrcpath}:g" ${file}
-        reinplace "s:@DESTROOT@:${destroot}:g" ${file}
-        reinplace "s:@VERSION@:${version}:g" ${file}
+        configure.args-append -DGEANT4_USE_SYSTEM_EXPAT=ON \
+                              -DGEANT4_USE_SYSTEM_CLHEP=ON \
+                              -DCLHEP_CONFIG_EXECUTABLE=${prefix}/bin/clhep-config \
+                              -DCLHEP_INCLUDE_DIR=${prefix}/include \
+                              -DCLHEP_LIBRARY=${prefix}/lib/libCLHEP.dylib
 
-        reinplace "s:@G4NDL_V@:${G4NDL_v}:g" ${file}
-        reinplace "s:@G4EMLOW_V@:${G4EMLOW_v}:g" ${file}
-        reinplace "s:@PHOTONEVAPORATION_V@:${PhotonEvaporation_v}:g" ${file}
-        reinplace "s:@RADIOACTIVEDECAY_V@:${RadioactiveDecay_v}:g" ${file}
-        reinplace "s:@G4ABLA_V@:${G4ABLA_v}:g" ${file}
-        reinplace "s:@G4NEUTRONXS_V@:${G4NEUTRONXS_v}:g" ${file}
-        reinplace "s:@G4PII_V@:${G4PII_v}:g" ${file}
-        reinplace "s:@REALSURFACE_V@:${RealSurface_v}:g" ${file}
+        # GEANT4_USE_SYSTEM_CLHEP=OFF
 
-        if {${fileextension} == "sh"} {
-            set export "export"
-        } else {
-            set export "setenv"
+        # - patch-source-interfaces-common-src-G4Qt.cc:
+        #       http://bugzilla-geant4.kek.jp/show_bug.cgi?id=1487
+        # - patch-examples-advanced-xray_fluorescence:
+        #       http://bugzilla-geant4.kek.jp/show_bug.cgi?id=1501
+        # - patch-cmake-Modules-Geant4InterfaceOptions.cmake:
+        #       prevents linking against X11 in /usr (maybe less aggressive patch would also work)
+        # - patch-cmake-Modules-Geant4BuildProjectConfig.cmake:
+        #       allows placing *.cmake files to a different location than LIBDIR
+        if {${geant.version} == "10.0"} {
+            patchfiles      patch-upstream-qt.4100.diff \
+                            patch-source-interfaces-common-src-G4Qt.cc.diff \
+                            patch-examples-advanced-xray_fluorescence.diff \
+                            patch-cmake-Modules-Geant4InterfaceOptions.cmake.4100.diff \
+                            patch-cmake-Modules-Geant4BuildProjectConfig.cmake.4100.diff
         }
-
-        set env_file_stream [open ${file} "a"]
-
-        if {[variant_isset aida]} {
-            puts ${env_file_stream} "${export} G4ANALYSIS_USE=1"
+        if {${geant.version} == "9.6"} {
+            patchfiles      patch-upstream-qt.496.diff \
+                            patch-source-interfaces-common-src-G4Qt.cc.diff \
+                            patch-examples-advanced-xray_fluorescence.diff \
+                            patch-cmake-Modules-Geant4InterfaceOptions.cmake.496.diff \
+                            patch-cmake-Modules-Geant4BuildProjectConfig.cmake.496.diff
         }
+        if {${geant.version} == "9.5"} {
+            patchfiles      patch-source-interfaces-common-src-G4Qt.cc.495.diff \
+                            patch-examples-advanced-xray_fluorescence.diff \
+                            patch-cmake-Modules-Geant4InterfaceOptions.cmake.495.diff \
+                            patch-cmake-Modules-Geant4BuildProjectConfig.cmake.495.diff
+        }
 
-        if {[variant_isset athena]} {
-            puts ${env_file_stream} "${export} G4UI_BUILD_XAW_SESSION=1"
-            puts ${env_file_stream} "${export} G4UI_USE_XAW=1"
-
-            puts ${env_file_stream} "${export} XAWFLAGS="
-            puts ${env_file_stream} "${export} XAWLIBS="
+        post-patch {
+             reinplace "s|@PREFIX@|${prefix}|" ${worksrcpath}/cmake/Modules/Geant4InterfaceOptions.cmake
         }
+        # arguments to -DCMAKE_INSTALL_* could be written without ${prefix}
+        # however the ${prefix} triggers the NON_RELOCATABLE flag which has some advantages like less cryptic path names
+        configure.args-append -DGEANT4_INSTALL_DATA=OFF \
+                              -DCMAKE_INSTALL_BINDIR=${prefix}/libexec/Geant4/Geant${geant.version_simple} \
+                              -DCMAKE_INSTALL_DATAROOTDIR=${prefix}/share/Geant4 \
+                              -DCMAKE_INSTALL_INCLUDEDIR=${prefix}/include/Geant4/Geant${geant.version_simple} \
+                              -DCMAKE_INSTALL_LIBDIR=${prefix}/lib/Geant4/Geant${geant.version_simple}
 
-        if {[variant_isset debug]} {
-            puts ${env_file_stream} "${export} G4DEBUG=1"
+        if {${geant.version} != "9.5"} {
+            configure.args-append -DGEANT4_INSTALL_DATADIR=${geant.datadir} \
         }
 
-        if {[variant_isset gdml]} {
-            puts ${env_file_stream} "${export} XERCESCROOT=${prefix}"
-            puts ${env_file_stream} "${export} G4LIB_BUILD_GDML=1"
+        # this is only needed when +examples is used
+        post-destroot {
+            # two examples with some broken links
+            foreach example {exampleP01 exampleP02 readHits} {
+                if [file exists ${destroot}${prefix}/bin/${example}] {
+                    delete ${destroot}${prefix}/bin/${example}
+                }
+            }
+            # there is no option to build/install the examples elsewhere, so we move them to libexec (they have nothing to do in bin)
+            if [file exists ${destroot}${prefix}/bin] {
+                move ${destroot}${prefix}/bin ${destroot}${prefix}/libexec/Geant4/Geant${geant.version_simple}/examples
+            }
         }
 
-        if {[variant_isset granular]} {
-            puts ${env_file_stream} "${export} G4LIB_USE_GRANULAR=1"
+        variant qt description {Build with Qt support} {
+            depends_lib-append    port:qt4-mac
+            configure.args-append -DGEANT4_USE_QT=ON
+            # maybe we need to set more variables to make sure that the right Qt is used?
         }
 
-        if {[variant_isset motif]} {
-            puts ${env_file_stream} "${export} XMFLAGS=-I${prefix}/include"
-            puts ${env_file_stream} "${export} XMLIBS='-L${prefix}/lib -lXm -lXpm'"
+        # From installation notes:
+        #
+        # It is recommended that Windows and Mac users prefer the Geant4 Qt4 GUI. Note
+        # also that on Mac you can only pick Qt4 OR X11/Motif interfaces. This is due
+        # to incompatibilities between Apple's native OpenGL Framework and the OpenGL
+        # supplied with X11 on this platform.
 
-            puts ${env_file_stream} "${export} G4VIS_USE_OPENGLX=1"
-            puts ${env_file_stream} "${export} G4VIS_BUILD_OPENGLX_DRIVER=1"
-
-            puts ${env_file_stream} "${export} G4VIS_USE_OPENGLXM=1"
-            puts ${env_file_stream} "${export} G4VIS_BUILD_OPENGLXM_DRIVER=1"
-
-            puts ${env_file_stream} "${export} G4UI_USE_XM=1"
-            puts ${env_file_stream} "${export} G4UI_BUILD_XM_SESSION=1"
+        # or simply x11? The option name in geant4-config is opengl-x11
+        variant opengl_x11 description {Build with X11 visualisation drivers} {
+            # dependencies were determined experimentally (by checking which libraries were linked against)
+            depends_lib-append    port:mesa \
+                                  port:xorg-libice \
+                                  port:xorg-libsm \
+                                  port:xorg-libX11 \
+                                  port:xorg-libXext \
+                                  port:xorg-libXmu
+            # configure.args-delete -DGEANT4_USE_OPENGL_X11=OFF
+            configure.args-append -DGEANT4_USE_OPENGL_X11=ON
         }
-
-        if {[variant_isset noui]} {
-            puts ${env_file_stream} "${export} G4UI_NONE=1"
-            puts ${env_file_stream} "${export} G4VIS_NONE=1"
+        ## This could belong to x11 (opengl_x11 & motif_x11 combined into a single option), but see also the comment above
+        ## previous name (geant4 9.4): motif; name in geant4-config: motif
+        variant motif_x11 description {Build with Motif (X11) user interface and visualization driver} {
+            depends_lib-append    port:mesa \
+                                  port:openmotif
+            # configure.args-delete -DGEANT4_USE_XM=OFF
+            configure.args-append -DGEANT4_USE_XM=ON
         }
-
-        if {[variant_isset raytracerx]} {
-            puts ${env_file_stream} "${export} G4VIS_USE_OPENGLX=1"
-            puts ${env_file_stream} "${export} G4VIS_BUILD_OPENGLX_DRIVER=1"
-
-            puts ${env_file_stream} "${export} G4VIS_USE_RAYTRACERX=1"
-            puts ${env_file_stream} "${export} G4VIS_BUILD_RAYTRACERX_DRIVER=1"
+        ## previous name (geant4 9.4): raytracerx; name in geant4-config: raytracer-x11
+        variant raytracer_x11 description {Build with Raytracer (X11) visualization driver} {
+            depends_lib-append    port:mesa
+            # configure.args-delete -DGEANT4_USE_RAYTRACER_X11=OFF
+            configure.args-append -DGEANT4_USE_RAYTRACER_X11=ON
         }
+        variant gdml description {Build with Geometry Description Markup Language (GDML)} {
+            depends_lib-append    port:xercesc3
+            # configure.args-delete -DGEANT4_USE_GDML=OFF
+            configure.args-append -DGEANT4_USE_GDML=ON
+            # check that XERCESC_ROOT_DIR is properly set
+        }
 
-        if {[variant_isset shared]} {
-            puts ${env_file_stream} "${export} G4LIB_BUILD_SHARED=1"
+        variant debug description {Compile with debug flags on} {
+            configure.args-append -DCMAKE_BUILD_TYPE=Debug
         }
 
-        if {[variant_isset static]} {
-            puts ${env_file_stream} "${export} G4LIB_BUILD_STATIC=1"
+        # this option should be used with care
+        variant examples description {Build and install examples (not recommended)} {
+            # optional
+            # depends_lib-append    port:gccxml-devel
+            configure.args-append -DGEANT4_BUILD_EXAMPLES=ON \
+                                  -DGEANT4_INSTALL_EXAMPLES=ON
         }
 
-        flush ${env_file_stream}
-        close ${env_file_stream}
+        default_variants +gdml +qt
     }
 }
 
-use_configure       no
+# stub port
+if {$subport == $name || $subport == ""} {
+    # default replacement for geant4 which used to provide geant4.9.4
+    # other users should install geant4.9.6 directly
+    depends_lib   port:geant4.9.6
 
-build.env-append    CXX=${configure.cxx}
-build.env-append    CC=${configure.cc}
-build.env-append    G4SYSTEM=Darwin-g++
-build.env-append    G4INSTALL=${workpath}/geant${version}
-build.env-append    G4INCLUDE=${workpath}/geant${version}/include
-build.env-append    G4TMP=${workpath}/geant${version}/tmp
-build.env-append    G4LIB=${workpath}/geant${version}/lib
-build.env-append    G4BIN=${workpath}/geant${version}/bin
-
-build.env-append    G4LEVELGAMMADATA=${prefix}/share/geant4/data/PhotonEvaporation${PhotonEvaporation_v}
-build.env-append    G4RADIOACTIVEDATA=${prefix}/share/geant4/data/RadioactiveDecay${RadioactiveDecay_v}
-build.env-append    G4LEDATA=${prefix}/share/geant4/data/G4EMLOW${G4EMLOW_v}
-build.env-append    G4NEUTRONHPDATA=${prefix}/share/geant4/data/G4NDL${G4NDL_v}
-build.env-append    G4ABLADATA=${prefix}/share/geant4/data/G4ABLA${G4ABLA_v}
-build.env-append    G4NEUTRONXSDATA=${prefix}/share/geant4/data/G4NEUTRONXS${G4NEUTRONXS_v}
-build.env-append    G4PIIDATA=${prefix}/share/geant4/data/G4PII${G4PII_v}
-#build.env-append    G4ELASTICDATA=
-
-build.env-append    CLHEP_BASE_DIR=${prefix}
-build.env-append    CLHEP_INCLUDE_DIR=${prefix}/include
-build.env-append    CLHEP_LIB_DIR=${prefix}/lib
-build.env-append    CLHEP_LIB=CLHEP
-
-# Next variables need more work to be put in a variant...
-
-# I do not know what is this for.
-#build.env-append    OGLHOME=
-
-# These are needed to include Qt interfaces
-#build.env-append    QTFLAGS=
-#build.env-append    QTLIBS=
-#build.env-append    QTMOC=
-#build.env-append    G4UI_USE_QT=1
-#build.env-append    G4UI_BUILD_QT_SESSION=1
-#build.env-append    G4VIS_USE_OPENGLQT=1
-#build.env-append    G4VIS_BUILD_OPENGLQT_DRIVER=1
-
-# These are needed to include DAWN interfaces, but I can not find DAWN
-#build.env-append    G4VIS_USE_DAWN=1
-#build.env-append    G4VIS_BUILD_DAWN_DRIVER=1
-
-# To be used with DAWN
-#build.env-append    G4LIB_USE_ZLIB=1
-#build.env-append    G4LIB_BUILD_ZLIB=1
-
-# These are needed to include OpenInventor, but its Portfile does not exist
-#build.env-append    OIVHOME=
-#build.env-append    G4VIS_USE_OIX=1
-#build.env-append    G4VIS_BUILD_OIX_DRIVER=1
-
-# These are needed to include VRML
-#build.env-append    G4VIS_USE_VRML=1
-#build.env-append    G4VIS_BUILD_VRML_DRIVER=1
-
-# These are needed to include a converter from GEANT3 to GEANT4, but require CERNlib
-#build.env-append    G4LIB_BUILD_G3TOG4=1
-#build.env-append    G4LIB_USE_G3TOG4=1
-
-build.args
-
-build {
-    ui_debug "Preparing make database"
-    system "cd ${worksrcpath} && env ${build.env} ${build.cmd} -n -p -f ${workpath}/geant${version}/config/scripts/GNUmakefile > ${workpath}/geant${version}/source/GNUmakefile.db"
-
-    if {[variant_isset global]} {
-        # In Gentoo's mailing list they say that a rebuild is needed
-        ui_debug "Building global libraries"
-        system "cd ${worksrcpath} && env ${build.env} ${build.cmd} global"
+    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"
     }
-
-    ui_debug "Building libraries"
-    system "cd ${worksrcpath} && env ${build.env} ${build.cmd}"
-
-    ui_debug "Preparing header files"
-    system "cd ${worksrcpath} && env ${build.env} ${build.cmd}  includes dependencies=\"\""
+    livecheck.type  none
 }
-
-destroot {
-    ui_debug "Installing env scripts to ${prefix}/src/geant4"
-
-    xinstall -d ${destroot}${prefix}/src/geant4
-
-    xinstall -m 755 -W ${worksrcpath} env.sh env.csh ${destroot}${prefix}/src/geant4
-
-    ui_debug "Installing GEANT4 data to ${prefix}/share/geant4/data"
-
-    xinstall -d ${destroot}${prefix}/share/geant4/data
-
-    foreach data "G4NDL${G4NDL_v} G4EMLOW${G4EMLOW_v} PhotonEvaporation${PhotonEvaporation_v} RadioactiveDecay${RadioactiveDecay_v} G4ABLA${G4ABLA_v} RealSurface${RealSurface_v} G4NEUTRONXS${G4NEUTRONXS_v} G4PII${G4PII_v}" {
-        ui_debug "Installing ${data} to ${prefix}/share/geant4/data"
-        file copy ${workpath}/${data} ${destroot}${prefix}/share/geant4/data
-    }
-
-    ui_debug "Installing sources to ${prefix}/src/geant4"
-
-    foreach sources {config source environments examples} {
-        ui_debug "Installing ${sources} to ${prefix}/src/geant4"
-        file copy ${workpath}/geant${version}/${sources} ${destroot}${prefix}/src/geant4
-    }
-
-    foreach sources {include lib bin} {
-        ui_debug "Installing ${sources} to ${prefix}/${sources}"
-        fs-traverse file ${workpath}/geant${version}/${sources} {
-            switch -exact [file type ${file}] {
-                directory {
-                    set stripped [string map {${workpath}/geant${version}/ ""} ${file}]
-                    xinstall -d -m 755 ${destroot}${prefix}/${stripped}
-                }
-                file { xinstall ${file} ${destroot}${prefix}/${sources} }
-            }
-        }
-    }
-}
-
-notes "
-GEANT4 needs some environment variables to run. They can be set using either\
-${prefix}/src/geant4/env.sh or ${prefix}/src/geant4/env.csh
-"

Deleted: trunk/dports/science/geant4/files/env.csh
===================================================================
--- trunk/dports/science/geant4/files/env.csh	2013-09-29 22:19:34 UTC (rev 111719)
+++ trunk/dports/science/geant4/files/env.csh	2013-09-30 00:13:17 UTC (rev 111720)
@@ -1,148 +0,0 @@
-# Clean all G4 envs
-unsetenv  CLHEP_BASE_DIR
-unsetenv  CLHEP_INCLUDE_DIR
-unsetenv  CLHEP_LIB
-unsetenv  CLHEP_LIB_DIR
-
-unsetenv  G4DEBUG
-unsetenv  G4INCLUDE
-unsetenv  G4INSTALL
-
-unsetenv  G4LEDATA
-unsetenv  G4LEVELGAMMADATA
-unsetenv  G4NEUTRONHPDATA
-unsetenv  G4RADIOACTIVEDATA
-unsetenv  G4ABLADATA
-unsetenv  G4REALSURFACEDATA
-
-unsetenv  G4LIB
-unsetenv  G4LIB_BUILD_G3TOG4
-unsetenv  G4LIB_BUILD_SHARED
-unsetenv  G4LIB_BUILD_STATIC
-unsetenv  G4LIB_BUILD_ZLIB
-unsetenv  G4LIB_BUILD_GDML
-unsetenv  G4LIB_USE_G3TOG4
-unsetenv  G4LIB_USE_GRANULAR
-unsetenv  G4LIB_USE_ZLIB
-
-unsetenv  G4SYSTEM
-
-unsetenv  G4UI_NONE
-unsetenv  G4UI_BUILD_WIN32_SESSION
-unsetenv  G4UI_BUILD_XAW_SESSION
-unsetenv  G4UI_BUILD_XM_SESSION
-unsetenv  G4UI_USE_TCSH
-unsetenv  G4UI_USE_WIN32
-unsetenv  G4UI_USE_XAW
-unsetenv  G4UI_USE_XM
-unsetenv  G4UI_USE_QT
-
-unsetenv  G4VIS_NONE
-unsetenv  G4VIS_BUILD_DAWN_DRIVER
-unsetenv  G4VIS_BUILD_OIWIN32_DRIVER
-unsetenv  G4VIS_BUILD_OIX_DRIVER
-unsetenv  G4VIS_BUILD_OPENGLWIN32_DRIVER
-unsetenv  G4VIS_BUILD_OPENGLXM_DRIVER
-unsetenv  G4VIS_BUILD_OPENGLX_DRIVER
-unsetenv  G4VIS_BUILD_RAYTRACERX_DRIVER
-unsetenv  G4VIS_BUILD_VRML_DRIVER
-unsetenv  G4VIS_BUILD_OPENGLQT_DRIVER
-
-unsetenv  G4VIS_USE_DAWN
-unsetenv  G4VIS_USE_OIWIN32
-unsetenv  G4VIS_USE_OIX
-unsetenv  G4VIS_USE_OPENGLWIN32
-unsetenv  G4VIS_USE_OPENGLX
-unsetenv  G4VIS_USE_OPENGLXM
-unsetenv  G4VIS_USE_RAYTRACERX
-unsetenv  G4VIS_USE_VRML
-unsetenv  G4VIS_USE_OPENGLQT
-
-setenv G4SYSTEM "Darwin-g++"
-setenv G4INSTALL "@PREFIX@/src/geant4"
-setenv G4INCLUDE "@PREFIX@/include"
-#setenv G4BASE "@PREFIX@/include/geant4/source"
-setenv G4LIB "@PREFIX@/lib"
-
-setenv G4LEVELGAMMADATA "@PREFIX@/share/geant4/data/PhotonEvaporation at PHOTONEVAPORATION_V@"
-setenv G4RADIOACTIVEDATA "@PREFIX@/share/geant4/data/RadioactiveDecay at RADIOACTIVEDECAY_V@"
-setenv G4LEDATA "@PREFIX@/share/geant4/data/G4EMLOW at G4EMLOW_V@"
-setenv G4NEUTRONHPDATA "@PREFIX@/share/geant4/data/G4NDL at G4NDL_V@"
-setenv G4ABLADATA "@PREFIX@/share/geant4/data/G4ABLA at G4ABLA_V@"
-setenv G4REALSURFACEDATA "@PREFIX@/share/geant4/data/RealSurface at REALSURFACE_V@"
-
-setenv CLHEP_BASE_DIR "@PREFIX@"
-setenv CLHEP_INCLUDE_DIR "@PREFIX@/include/CLHEP"
-setenv CLHEP_LIB_DIR "@PREFIX@/lib"
-setenv CLHEP_LIB "CLHEP"
-
-#setenv G4DEBUG 1
-#setenv G4UI_NONE 1
-#setenv G4UI_BUILD_XAW_SESSION 1
-#setenv G4UI_USE_XAW 1
-#setenv G4UI_BUILD_XM_SESSION 1
-#setenv G4UI_USE_XM 1
-#setenv G4UI_BUILD_QT_SESSION 1
-#setenv G4UI_USE_QT 1
-#setenv G4VIS_NONE 1
-#setenv G4VIS_BUILD_DAWN_DRIVER 1
-#setenv G4VIS_BUILD_OPENGLX_DRIVER 1
-#setenv G4VIS_BUILD_OPENGLXM_DRIVER 1
-#setenv G4VIS_BUILD_OIX_DRIVER 1
-#setenv G4VIS_BUILD_RAYTRACERX_DRIVER 1
-#setenv G4VIS_BUILD_VRML_DRIVER 1
-#setenv G4VIS_BUILD_OPENGLQT_DRIVER 1
-#setenv G4VIS_USE_DAWN 1
-#setenv G4VIS_USE_OPENGLX 1
-#setenv G4VIS_USE_OPENGLXM 1
-#setenv G4VIS_USE_OIX 1
-#setenv G4VIS_USE_RAYTRACERX 1
-#setenv G4VIS_USE_VRML 1
-#setenv G4VIS_USE_OPENGLQT 1
-#setenv OGLHOME ""
-#setenv OIVHOME ""
-#setenv XMFLAGS " -I at PREFIX@/include "
-#setenv XMLIBS " -L at PREFIX@/lib -lXm -lXpm "
-#setenv XAWFLAGS ""
-#setenv XAWLIBS ""
-#setenv QTFLAGS ""
-#setenv QTLIBS ""
-#setenv QTMOC ""
-#setenv G4LIB_BUILD_GDML 1
-#setenv XERCESCROOT @PREFIX@
-#setenv G4LIB_BUILD_G3TOG4 1
-#setenv G4LIB_USE_G3TOG4 1
-#setenv G4LIB_BUILD_ZLIB 1
-#setenv G4LIB_USE_ZLIB 1
-#setenv G4LIB_BUILD_SHARED 1
-#setenv G4LIB_BUILD_STATIC 1
-#setenv G4LIB_USE_GRANULAR 1
-
-#
-# G4WORKDIR
-#
-
-if ( !${?G4WORKDIR} ) then
-	setenv G4WORKDIR $HOME/geant4
-endif
-
-#
-# Shared libraries
-#
-
-if ( ${?G4LIB_BUILD_SHARED} ) then
-	if ( ${?DYLD_FALLBACK_LIBRARY_PATH} )  then
-		setenv DYLD_FALLBACK_LIBRARY_PATH ${DYLD_FALLBACK_LIBRARY_PATH}:${G4LIB}
-	else
-		setenv DYLD_FALLBACK_LIBRARY_PATH ${G4LIB}
-	endif
-endif
-
-#
-# Bin
-#
-
-setenv PATH ${PATH}:${G4WORKDIR}/bin
-
-# Variables set by MacPorts:
-

Deleted: trunk/dports/science/geant4/files/env.sh
===================================================================
--- trunk/dports/science/geant4/files/env.sh	2013-09-29 22:19:34 UTC (rev 111719)
+++ trunk/dports/science/geant4/files/env.sh	2013-09-30 00:13:17 UTC (rev 111720)
@@ -1,151 +0,0 @@
-# Clean all G4 envs
-unset  CLHEP_BASE_DIR
-unset  CLHEP_INCLUDE_DIR
-unset  CLHEP_LIB
-unset  CLHEP_LIB_DIR
-
-unset  G4DEBUG
-unset  G4INCLUDE
-unset  G4INSTALL
-
-unset  G4LEDATA
-unset  G4LEVELGAMMADATA
-unset  G4NEUTRONHPDATA
-unset  G4RADIOACTIVEDATA
-unset  G4ABLADATA
-unset  G4REALSURFACEDATA
-
-unset  G4LIB
-unset  G4LIB_BUILD_G3TOG4
-unset  G4LIB_BUILD_SHARED
-unset  G4LIB_BUILD_STATIC
-unset  G4LIB_BUILD_ZLIB
-unset  G4LIB_BUILD_GDML
-unset  G4LIB_USE_G3TOG4
-unset  G4LIB_USE_GRANULAR
-unset  G4LIB_USE_ZLIB
-
-unset  G4SYSTEM
-
-unset  G4UI_NONE
-unset  G4UI_BUILD_WIN32_SESSION
-unset  G4UI_BUILD_XAW_SESSION
-unset  G4UI_BUILD_XM_SESSION
-unset  G4UI_USE_TCSH
-unset  G4UI_USE_WIN32
-unset  G4UI_USE_XAW
-unset  G4UI_USE_XM
-unset  G4UI_USE_QT
-
-
-unset  G4VIS_NONE
-unset  G4VIS_BUILD_DAWN_DRIVER
-unset  G4VIS_BUILD_OIWIN32_DRIVER
-unset  G4VIS_BUILD_OIX_DRIVER
-unset  G4VIS_BUILD_OPENGLWIN32_DRIVER
-unset  G4VIS_BUILD_OPENGLXM_DRIVER
-unset  G4VIS_BUILD_OPENGLX_DRIVER
-unset  G4VIS_BUILD_RAYTRACERX_DRIVER
-unset  G4VIS_BUILD_VRML_DRIVER
-unset  G4VIS_BUILD_OPENGLQT_DRIVER
-
-unset  G4VIS_USE_DAWN
-unset  G4VIS_USE_OIWIN32
-unset  G4VIS_USE_OIX
-unset  G4VIS_USE_OPENGLWIN32
-unset  G4VIS_USE_OPENGLX
-unset  G4VIS_USE_OPENGLXM
-unset  G4VIS_USE_RAYTRACERX
-unset  G4VIS_USE_VRML
-unset  G4VIS_USE_OPENGLQT
-
-export G4SYSTEM="Darwin-g++"
-export G4INSTALL="@PREFIX@/src/geant4"
-export G4INCLUDE="@PREFIX@/include"
-#export G4BASE="@PREFIX@/include/geant4/source"
-export G4LIB="@PREFIX@/lib"
-
-export G4LEVELGAMMADATA="@PREFIX@/share/geant4/data/PhotonEvaporation at PHOTONEVAPORATION_V@"
-export G4RADIOACTIVEDATA="@PREFIX@/share/geant4/data/RadioactiveDecay at RADIOACTIVEDECAY_V@"
-export G4LEDATA="@PREFIX@/share/geant4/data/G4EMLOW at G4EMLOW_V@"
-export G4NEUTRONHPDATA="@PREFIX@/share/geant4/data/G4NDL at G4NDL_V@"
-export G4ABLADATA="@PREFIX@/share/geant4/data/G4ABLA at G4ABLA_V@"
-export G4REALSURFACEDATA="@PREFIX@/share/geant4/data/RealSurface at REALSURFACE_V@"
-
-export CLHEP_BASE_DIR="@PREFIX@"
-export CLHEP_INCLUDE_DIR="@PREFIX@/include/CLHEP"
-export CLHEP_LIB_DIR="@PREFIX@/lib"
-export CLHEP_LIB="CLHEP"
-
-#export G4DEBUG=1
-#export G4UI_NONE=1
-#export G4UI_BUILD_XAW_SESSION=1
-#export G4UI_USE_XAW=1
-#export G4UI_BUILD_XM_SESSION=1
-#export G4UI_USE_XM=1
-#export G4UI_BUILD_QT_SESSION=1
-#export G4UI_USE_QT=1
-#export G4VIS_NONE=1
-#export G4VIS_BUILD_DAWN_DRIVER=1
-#export G4VIS_BUILD_OPENGLX_DRIVER=1
-#export G4VIS_BUILD_OPENGLXM_DRIVER=1
-#export G4VIS_BUILD_OIX_DRIVER=1
-#export G4VIS_BUILD_RAYTRACERX_DRIVER=1
-#export G4VIS_BUILD_VRML_DRIVER=1
-#export G4VIS_BUILD_OPENGLQT_DRIVER=1
-#export G4VIS_USE_DAWN=1
-#export G4VIS_USE_OPENGLX=1
-#export G4VIS_USE_OPENGLXM=1
-#export G4VIS_USE_OIX=1
-#export G4VIS_USE_RAYTRACERX=1
-#export G4VIS_USE_VRML=1
-#export G4VIS_USE_OPENGLQT=1
-#export OGLHOME=""
-#export OIVHOME=""
-#export XMFLAGS=" -I at PREFIX@/include "
-#export XMLIBS=" -L at PREFIX@/lib -lXm -lXpm "
-#export XAWFLAGS=""
-#export XAWLIBS=""
-#export QTFLAGS=""
-#export QTLIBS=""
-#export QTMOC=""
-#export G4LIB_BUILD_GDML=1
-#export XERCESCROOT=@PREFIX@
-#export G4LIB_BUILD_G3TOG4=1
-#export G4LIB_USE_G3TOG4=1
-#export G4LIB_BUILD_ZLIB=1
-#export G4LIB_USE_ZLIB=1
-#export G4LIB_BUILD_SHARED=1
-#export G4LIB_BUILD_STATIC=1
-#export G4LIB_USE_GRANULAR=1
-
-#
-# G4WORKDIR
-#
-
-if [ "X""$G4WORKDIR" = "X" ] ; then
-	export G4WORKDIR=$HOME/geant4
-fi
-
-#
-# Shared Libraries
-#
-
-if [ $G4LIB_BUILD_SHARED ] ; then
-	if [ $DYLD_FALLBACK_LIBRARY_PATH ] ; then
-		DYLD_FALLBACK_LIBRARY_PATH=${DYLD_FALLBACK_LIBRARY_PATH}:${G4LIB}
-	else
-		DYLD_FALLBACK_LIBRARY_PATH=${G4LIB}
-	fi
-
-	export DYLD_FALLBACK_LIBRARY_PATH
-fi
-
-#
-# Bin
-#
-
-export PATH=${PATH}:${G4WORKDIR}/bin
-
-# Variables set by MacPorts:
-

Added: trunk/dports/science/geant4/files/geant4.10.0
===================================================================
--- trunk/dports/science/geant4/files/geant4.10.0	                        (rev 0)
+++ trunk/dports/science/geant4/files/geant4.10.0	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,3 @@
+libexec/Geant4/Geant4.10.0/geant4-config
+libexec/Geant4/Geant4.10.0/geant4data.sh
+libexec/Geant4/Geant4.10.0/geant4data.csh

Added: trunk/dports/science/geant4/files/geant4.9.5
===================================================================
--- trunk/dports/science/geant4/files/geant4.9.5	                        (rev 0)
+++ trunk/dports/science/geant4/files/geant4.9.5	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,3 @@
+libexec/Geant4/Geant4.9.5/geant4-config
+libexec/Geant4/Geant4.9.5/geant4data.sh
+libexec/Geant4/Geant4.9.5/geant4data.csh

Added: trunk/dports/science/geant4/files/geant4.9.6
===================================================================
--- trunk/dports/science/geant4/files/geant4.9.6	                        (rev 0)
+++ trunk/dports/science/geant4/files/geant4.9.6	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,3 @@
+libexec/Geant4/Geant4.9.6/geant4-config
+libexec/Geant4/Geant4.9.6/geant4data.sh
+libexec/Geant4/Geant4.9.6/geant4data.csh

Added: trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4BuildProjectConfig.cmake.4100.diff
===================================================================
--- trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4BuildProjectConfig.cmake.4100.diff	                        (rev 0)
+++ trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4BuildProjectConfig.cmake.4100.diff	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,11 @@
+--- cmake/Modules/Geant4BuildProjectConfig.cmake.orig
++++ cmake/Modules/Geant4BuildProjectConfig.cmake
+@@ -173,7 +173,7 @@ configure_file(
+ # - Generate Install Tree Configuration Files
+ #-----------------------------------------------------------------------
+ # Set needed variables for the install tree
+-set(GEANT4_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}-${${PROJECT_NAME}_VERSION})
++set(GEANT4_CMAKE_DIR lib/${PROJECT_NAME}-${${PROJECT_NAME}_VERSION})
+ 
+ # Header path for install tree is dependent on whether we have a relocatable
+ # install.

Added: trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4BuildProjectConfig.cmake.495.diff
===================================================================
--- trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4BuildProjectConfig.cmake.495.diff	                        (rev 0)
+++ trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4BuildProjectConfig.cmake.495.diff	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,11 @@
+--- cmake/Modules/Geant4BuildProjectConfig.cmake.orig
++++ cmake/Modules/Geant4BuildProjectConfig.cmake
+@@ -152,7 +152,7 @@ configure_file(${PROJECT_SOURCE_DIR}/cmake/Templates/UseGeant4_internal.cmake
+ # - Generate Install Tree Configuration Files
+ #
+ # Set needed variables for the install tree
+-set(GEANT4_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}-${${PROJECT_NAME}_VERSION})
++set(GEANT4_CMAKE_DIR lib/${PROJECT_NAME}-${${PROJECT_NAME}_VERSION})
+ 
+ # Header path for install tree is dependent on whether we have a relocatable
+ # install.

Added: trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4BuildProjectConfig.cmake.496.diff
===================================================================
--- trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4BuildProjectConfig.cmake.496.diff	                        (rev 0)
+++ trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4BuildProjectConfig.cmake.496.diff	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,11 @@
+--- cmake/Modules/Geant4BuildProjectConfig.cmake.orig
++++ cmake/Modules/Geant4BuildProjectConfig.cmake
+@@ -165,7 +165,7 @@ configure_file(${PROJECT_SOURCE_DIR}/cmake/Templates/UseGeant4_internal.cmake
+ # - Generate Install Tree Configuration Files
+ #-----------------------------------------------------------------------
+ # Set needed variables for the install tree
+-set(GEANT4_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}-${${PROJECT_NAME}_VERSION})
++set(GEANT4_CMAKE_DIR lib/${PROJECT_NAME}-${${PROJECT_NAME}_VERSION})
+ 
+ # Header path for install tree is dependent on whether we have a relocatable
+ # install.

Added: trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4InterfaceOptions.cmake.4100.diff
===================================================================
--- trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4InterfaceOptions.cmake.4100.diff	                        (rev 0)
+++ trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4InterfaceOptions.cmake.4100.diff	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,47 @@
+--- cmake/Modules/Geant4InterfaceOptions.cmake.orig
++++ cmake/Modules/Geant4InterfaceOptions.cmake
+@@ -139,20 +139,11 @@ if(UNIX)
+     set(CMAKE_FIND_FRAMEWORK NEVER)
+ 
+     set(X11_INC_SEARCH_PATH
+-        /usr/pkg/xorg/include
+-        /usr/X11R6/include 
+-        /usr/X11R7/include 
+-        /usr/include/X11
+-        /usr/openwin/include 
+-        /usr/openwin/share/include 
+-        /opt/graphics/OpenGL/include
+-        )
++        @PREFIX@/include
++    )
+ 
+     set(X11_LIB_SEARCH_PATH
+-        /usr/pkg/xorg/lib
+-        /usr/X11R6/lib
+-        /usr/X11R7/lib
+-        /usr/openwin/lib 
++        @PREFIX@/lib
+         )
+ 
+     find_path(X11_Xmu_INCLUDE_PATH X11/Xmu/Xmu.h ${X11_INC_SEARCH_PATH})
+@@ -195,17 +186,17 @@ if(UNIX)
+       set(CMAKE_FIND_FRAMEWORK NEVER)
+ 
+       find_path(OPENGL_X11_INCLUDE_DIR GL/gl.h
+-        PATHS /usr/X11R6/include
++        PATHS @PREFIX@/include
+         NO_DEFAULT_PATH
+         )
+ 
+       find_library(OPENGL_X11_gl_LIBRARY GL
+-        PATHS /usr/X11R6/lib
++        PATHS @PREFIX@/lib
+         NO_DEFAULT_PATH
+         )
+ 
+       find_library(OPENGL_X11_glu_LIBRARY GLU
+-        PATHS /usr/X11R6/lib
++        PATHS @PREFIX@/lib
+         NO_DEFAULT_PATH
+         )
+ 

Added: trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4InterfaceOptions.cmake.495.diff
===================================================================
--- trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4InterfaceOptions.cmake.495.diff	                        (rev 0)
+++ trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4InterfaceOptions.cmake.495.diff	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,47 @@
+--- cmake/Modules/Geant4InterfaceOptions.cmake.orig
++++ cmake/Modules/Geant4InterfaceOptions.cmake
+@@ -140,20 +140,11 @@ if(UNIX)
+     set(CMAKE_FIND_FRAMEWORK NEVER)
+ 
+     set(X11_INC_SEARCH_PATH
+-        /usr/pkg/xorg/include
+-        /usr/X11R6/include 
+-        /usr/X11R7/include 
+-        /usr/include/X11
+-        /usr/openwin/include 
+-        /usr/openwin/share/include 
+-        /opt/graphics/OpenGL/include
+-        )
++        @PREFIX@/include
++    )
+ 
+     set(X11_LIB_SEARCH_PATH
+-        /usr/pkg/xorg/lib
+-        /usr/X11R6/lib
+-        /usr/X11R7/lib
+-        /usr/openwin/lib 
++        @PREFIX@/lib
+         )
+ 
+     find_path(X11_Xmu_INCLUDE_PATH X11/Xmu/Xmu.h ${X11_INC_SEARCH_PATH})
+@@ -194,17 +185,17 @@ if(UNIX)
+       set(CMAKE_FIND_FRAMEWORK NEVER)
+ 
+       find_path(OPENGL_X11_INCLUDE_DIR GL/gl.h
+-        PATHS /usr/X11R6/include
++        PATHS @PREFIX@/include
+         NO_DEFAULT_PATH
+         )
+ 
+       find_library(OPENGL_X11_gl_LIBRARY GL
+-        PATHS /usr/X11R6/lib
++        PATHS @PREFIX@/lib
+         NO_DEFAULT_PATH
+         )
+ 
+       find_library(OPENGL_X11_glu_LIBRARY GLU
+-        PATHS /usr/X11R6/lib
++        PATHS @PREFIX@/lib
+         NO_DEFAULT_PATH
+         )
+ 

Added: trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4InterfaceOptions.cmake.496.diff
===================================================================
--- trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4InterfaceOptions.cmake.496.diff	                        (rev 0)
+++ trunk/dports/science/geant4/files/patch-cmake-Modules-Geant4InterfaceOptions.cmake.496.diff	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,47 @@
+--- cmake/Modules/Geant4InterfaceOptions.cmake.orig
++++ cmake/Modules/Geant4InterfaceOptions.cmake
+@@ -141,20 +141,11 @@ if(UNIX)
+     set(CMAKE_FIND_FRAMEWORK NEVER)
+ 
+     set(X11_INC_SEARCH_PATH
+-        /usr/pkg/xorg/include
+-        /usr/X11R6/include 
+-        /usr/X11R7/include 
+-        /usr/include/X11
+-        /usr/openwin/include 
+-        /usr/openwin/share/include 
+-        /opt/graphics/OpenGL/include
+-        )
++        @PREFIX@/include
++    )
+ 
+     set(X11_LIB_SEARCH_PATH
+-        /usr/pkg/xorg/lib
+-        /usr/X11R6/lib
+-        /usr/X11R7/lib
+-        /usr/openwin/lib 
++        @PREFIX@/lib
+         )
+ 
+     find_path(X11_Xmu_INCLUDE_PATH X11/Xmu/Xmu.h ${X11_INC_SEARCH_PATH})
+@@ -197,17 +188,17 @@ if(UNIX)
+       set(CMAKE_FIND_FRAMEWORK NEVER)
+ 
+       find_path(OPENGL_X11_INCLUDE_DIR GL/gl.h
+-        PATHS /usr/X11R6/include
++        PATHS @PREFIX@/include
+         NO_DEFAULT_PATH
+         )
+ 
+       find_library(OPENGL_X11_gl_LIBRARY GL
+-        PATHS /usr/X11R6/lib
++        PATHS @PREFIX@/lib
+         NO_DEFAULT_PATH
+         )
+ 
+       find_library(OPENGL_X11_glu_LIBRARY GLU
+-        PATHS /usr/X11R6/lib
++        PATHS @PREFIX@/lib
+         NO_DEFAULT_PATH
+         )
+ 

Added: trunk/dports/science/geant4/files/patch-examples-advanced-xray_fluorescence.diff
===================================================================
--- trunk/dports/science/geant4/files/patch-examples-advanced-xray_fluorescence.diff	                        (rev 0)
+++ trunk/dports/science/geant4/files/patch-examples-advanced-xray_fluorescence.diff	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,20 @@
+--- examples/advanced/xray_fluorescence/src/XrayFluoAnalysisManager.cc.orig
++++ examples/advanced/xray_fluorescence/src/XrayFluoAnalysisManager.cc
+@@ -41,6 +41,7 @@
+ // -------------------------------------------------------------------
+ #ifdef G4ANALYSIS_USE
+ 
++#include "G4SystemOfUnits.hh"
+ #include "G4VProcess.hh"
+ #include <fstream>
+ #include "G4ios.hh"
+--- examples/advanced/xray_fluorescence/src/XrayFluoRunAction.cc
++++ examples/advanced/xray_fluorescence/src/XrayFluoRunAction.cc
+@@ -35,6 +35,7 @@
+ //
+ // -------------------------------------------------------------------
+ 
++#include "G4SystemOfUnits.hh"
+ #include "XrayFluoRunAction.hh"
+ #include "G4Run.hh"
+ #include "G4UImanager.hh"

Added: trunk/dports/science/geant4/files/patch-source-interfaces-common-src-G4Qt.cc.495.diff
===================================================================
--- trunk/dports/science/geant4/files/patch-source-interfaces-common-src-G4Qt.cc.495.diff	                        (rev 0)
+++ trunk/dports/science/geant4/files/patch-source-interfaces-common-src-G4Qt.cc.495.diff	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,23 @@
+--- source/interfaces/common/src/G4Qt.cc.orig
++++ source/interfaces/common/src/G4Qt.cc
+@@ -149,6 +149,20 @@ G4Qt::G4Qt (
+   }
+ #endif
+   //  AddDispatcher     ((G4DispatchFunction)XtDispatchEvent);
++
++/*
++ * On some non-English locale, comma is used for the decimal separator instead of dot
++ * bringing to weird behavior of strtod (string to double) function in user application.
++ * This is "by design" from Qt, see https://bugreports.qt-project.org/browse/QTBUG-10994
++ *
++ *	$ LC_NUMERIC=fr_FR.UTF-8 ./qtstrtod
++ *	strtod(0.1) = 0
++ *	$ LC_NUMERIC=C ./qtstrtod
++ *	strtod(0.1) = 0.1
++ *
++ * Jerome Suhard, jerome at suhard.fr
++ */
++	setlocale (LC_NUMERIC, "C");
+ }
+ /***************************************************************************/
+ G4Qt::~G4Qt (

Added: trunk/dports/science/geant4/files/patch-source-interfaces-common-src-G4Qt.cc.diff
===================================================================
--- trunk/dports/science/geant4/files/patch-source-interfaces-common-src-G4Qt.cc.diff	                        (rev 0)
+++ trunk/dports/science/geant4/files/patch-source-interfaces-common-src-G4Qt.cc.diff	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,23 @@
+--- source/interfaces/common/src/G4Qt.cc.orig
++++ source/interfaces/common/src/G4Qt.cc
+@@ -148,6 +148,20 @@ G4Qt::G4Qt (
+   }
+ #endif
+   //  AddDispatcher     ((G4DispatchFunction)XtDispatchEvent);
++
++/*
++ * On some non-English locale, comma is used for the decimal separator instead of dot
++ * bringing to weird behavior of strtod (string to double) function in user application.
++ * This is "by design" from Qt, see https://bugreports.qt-project.org/browse/QTBUG-10994
++ *
++ *	$ LC_NUMERIC=fr_FR.UTF-8 ./qtstrtod
++ *	strtod(0.1) = 0
++ *	$ LC_NUMERIC=C ./qtstrtod
++ *	strtod(0.1) = 0.1
++ *
++ * Jerome Suhard, jerome at suhard.fr
++ */
++	setlocale (LC_NUMERIC, "C");
+ }
+ /***************************************************************************/
+ G4Qt::~G4Qt (

Added: trunk/dports/science/geant4/files/patch-upstream-qt.4100.diff
===================================================================
--- trunk/dports/science/geant4/files/patch-upstream-qt.4100.diff	                        (rev 0)
+++ trunk/dports/science/geant4/files/patch-upstream-qt.4100.diff	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,259 @@
+A bunch of upstream patches:
+ * fix loading icons in some examples
+ * allow pasting multiple lines
+ * remember the last dir to open/save macro files
+ * do not throw errors during menu creation when using '/control/verbose 0'
+--- source/interfaces/basic/include/G4UIQt.hh.orig
++++ source/interfaces/basic/include/G4UIQt.hh
+@@ -215,6 +215,8 @@ private:
+ 
+   QToolBar *fToolbarApp;
+   QToolBar *fToolbarUser;
++  G4String fLastErrMessage;
++  QString fLastOpenPath;
+ 
+   bool fMoveSelected;
+   bool fRotateSelected;
+@@ -226,6 +228,7 @@ private Q_SLOTS :
+   void ExitSession();
+   void ClearButtonCallback();
+   void CommandEnteredCallback();
++  void CommandEditedCallback(const QString &);
+   void ButtonCallback(const QString&);
+   void HelpTreeClicCallback();
+   void HelpTreeDoubleClicCallback();
+--- source/interfaces/basic/src/G4UIQt.cc.orig
++++ source/interfaces/basic/src/G4UIQt.cc
+@@ -138,6 +138,7 @@ G4UIQt::G4UIQt (
+ ,fPickSelected(false)
+ ,fZoomInSelected(false)
+ ,fZoomOutSelected(false)
++,fLastOpenPath("")
+ {
+ 
+   G4Qt* interactorManager = G4Qt::getInstance (argc,argv,(char*)"Qt");
+@@ -278,6 +279,7 @@ G4UIQt::G4UIQt (
+ 
+   // Connect signal
+   connect(fCommandArea, SIGNAL(returnPressed()), SLOT(CommandEnteredCallback()));
++  connect(fCommandArea, SIGNAL(textEdited(const QString &)), SLOT(CommandEditedCallback(const QString &)));
+   connect(fUITabWidget, SIGNAL(currentChanged(int)), SLOT(ToolBoxActivated(int)));
+ 
+   if(UI!=NULL) UI->SetCoutDestination(this);  // TO KEEP
+@@ -772,7 +774,11 @@ G4int G4UIQt::ReceiveG4cerr (
+ 
+   // Suppress space, \n,\t,\r...
+   if (QString(aString.data()).trimmed() != "") {
+-    QMessageBox::critical(fMainWindow, "Error",aString.data());
++    if ((G4StateManager::GetStateManager()->GetCurrentState() == G4State_Abort) ||
++        (G4StateManager::GetStateManager()->GetCurrentState() == G4State_Quit )) {
++      // In case of Abort or Quit, the useful error message should be in the last error message !
++      QMessageBox::critical(fMainWindow, "Error",QString(fLastErrMessage.data())+"\n"+aString.data());
++    }
+   }
+   QColor previousColor = fCoutTBTextArea->textColor();
+   fCoutTBTextArea->setTextColor(Qt::red);
+@@ -780,6 +786,10 @@ G4int G4UIQt::ReceiveG4cerr (
+   fCoutTBTextArea->setTextColor(previousColor);
+   fCoutTBTextArea->verticalScrollBar()->setSliderPosition(fCoutTBTextArea->verticalScrollBar()->maximum());
+   fCoutTBTextArea->repaint();
++
++  if (QString(aString.data()).trimmed() != "") {
++    fLastErrMessage = aString;
++  }
+   return 0;
+ }
+ 
+@@ -824,9 +834,14 @@ void G4UIQt::AddButton (
+   QMenu *parentTmp = (QMenu*)GetInteractor(aMenu);
+ 
+   if(parentTmp==NULL) {
+-    G4cout << "Menu name " << aMenu<< " does not exist, please define it before using it."<< G4endl;
++    G4UImanager* UImanager = G4UImanager::GetUIpointer();
++    G4int verbose = UImanager->GetVerboseLevel();
++    
++    if (verbose >= 2) {
++      G4cout << "Menu name " << aMenu<< " does not exist, please define it before using it."<< G4endl;
++    }
+   }
+-  
++
+   // Find the command in the command tree
+   G4UImanager* UI = G4UImanager::GetUIpointer();
+   if(UI==NULL) return;
+@@ -839,7 +854,12 @@ void G4UIQt::AddButton (
+   }
+   
+   if(treeTop->FindPath(aCommand) == NULL) {
+-    G4cout << "Warning: command '"<< aCommand <<"' does not exist, please define it before using it."<< G4endl;
++    G4UImanager* UImanager = G4UImanager::GetUIpointer();
++    G4int verbose = UImanager->GetVerboseLevel();
++    
++    if (verbose >= 2) {
++      G4cout << "Warning: command '"<< aCommand <<"' does not exist, please define it before using it."<< G4endl;
++    }
+   }
+ 
+   QSignalMapper *signalMapper = new QSignalMapper(this);
+@@ -870,7 +890,12 @@ void G4UIQt::AddIcon(const char* aLabel, const char* aIconFile, const char* aCom
+     // try to open a file
+     pix = QPixmap(aFileName);
+     if (pix.isNull()) {
+-      G4cout << "Warning: file '"<< aFileName <<"' is incorrect or does not exist, this command will not be build"<< G4endl;
++      G4UImanager* UImanager = G4UImanager::GetUIpointer();
++      G4int verbose = UImanager->GetVerboseLevel();
++      
++      if (verbose >= 2) {
++        G4cout << "Warning: file '"<< aFileName <<"' is incorrect or does not exist, this command will not be build"<< G4endl;
++      }
+       return;
+     }
+     userToolBar = true; 
+@@ -1601,23 +1626,29 @@ void G4UIQt::AddIcon(const char* aLabel, const char* aIconFile, const char* aCom
+       ;
+     pix = QPixmap(xpm);
+   } else {
+-    G4cout << "Parameter"<< aIconFile <<" not defined"<< G4endl;
++    G4UImanager* UImanager = G4UImanager::GetUIpointer();
++    G4int verbose = UImanager->GetVerboseLevel();
++    
++    if (verbose >= 2) {
++      G4cout << "Parameter"<< aIconFile <<" not defined"<< G4endl;
++    }
+     return;
+   }
+   QToolBar *currentToolbar = NULL;
+   if (userToolBar) {
+     if (fToolbarUser == NULL) {
+-      fToolbarUser = new QToolBar(fMainWindow);
++      fToolbarUser = new QToolBar();
+       fToolbarUser->setIconSize (QSize(20,20));
+       fMainWindow->addToolBar(Qt::TopToolBarArea, fToolbarUser);
+     }
+     currentToolbar = fToolbarUser;
+   } else {
+     if (fToolbarApp == NULL) {
+-      fToolbarApp = new QToolBar(fMainWindow);
++      fToolbarApp = new QToolBar();
+       fToolbarApp->setIconSize (QSize(20,20));
+       fMainWindow->addToolBar(Qt::TopToolBarArea, fToolbarApp);
+     }
++    fMainWindow->show();
+     currentToolbar = fToolbarApp;
+   }
+ 
+@@ -1712,7 +1743,12 @@ void G4UIQt::AddIcon(const char* aLabel, const char* aIconFile, const char* aCom
+     G4UIcommandTree * treeTop = UI->GetTree();
+     
+     if(treeTop->FindPath(aCommand) == NULL) {
+-      G4cout << "Warning: command '"<< aCommand <<"' does not exist, please define it before using it."<< G4endl;
++      G4UImanager* UImanager = G4UImanager::GetUIpointer();
++      G4int verbose = UImanager->GetVerboseLevel();
++      
++      if (verbose >= 2) {
++        G4cout << "Warning: command '"<< aCommand <<"' does not exist, please define it before using it."<< G4endl;
++      }
+     }
+     
+     connect(signalMapper, SIGNAL(mapped(const QString &)),this, SLOT(ButtonCallback(const QString&)));
+@@ -2580,27 +2616,56 @@ void G4UIQt::ExitHelp(
+ void G4UIQt::CommandEnteredCallback (
+ )
+ {
+-  G4String command (fCommandArea->text().toStdString().c_str());
+-  if (fCommandArea->text().trimmed() != "") {
+-    fHistoryTBTableList->addItem(fCommandArea->text());
+-    fHistoryTBTableList->clearSelection();
+-    fHistoryTBTableList->setCurrentItem(NULL);
+-    fCommandArea->setText("");
+-
+-    G4Qt* interactorManager = G4Qt::getInstance ();
+-    if (interactorManager) { 
+-      interactorManager->FlushAndWaitExecution();
+-    }
+-    if (command(0,4) != "help") {
+-      ApplyShellCommand (command,exitSession,exitPause);
+-    } else {
+-      ActivateCommand(command);
++  // split by any new line character
++  QStringList list = fCommandArea->text().split(QRegExp("[\r\n]"),QString::SkipEmptyParts);
++
++  // Apply for all commands
++  for (unsigned int a=0; a< list.size(); a++) {
++    QString txt (list[a].trimmed());
++    if (txt != "") {
++      fHistoryTBTableList->addItem(txt);
++      fHistoryTBTableList->clearSelection();
++      fHistoryTBTableList->setCurrentItem(NULL);
++      fCommandArea->setText("");
++      G4Qt* interactorManager = G4Qt::getInstance ();
++      if (interactorManager) {
++        interactorManager->FlushAndWaitExecution();
++      }
++
++      G4String command = txt.toStdString().c_str();
++      if (command(0,4) != "help") {
++        ApplyShellCommand (command,exitSession,exitPause);
++      } else {
++        ActivateCommand(command);
++      }
+     }
+-    // Rebuild help tree
+-    FillHelpTree();
++  }
++
++  // Rebuild help tree
++  FillHelpTree();
++
++  if(exitSession==true)
++    SessionTerminate();
++}
+ 
+-    if(exitSession==true) 
+-      SessionTerminate();
++
++/** Callback when the text in the line edit is changed.
++ When a newline is inserted, trigger the Activate Command
++ on this text end set unchanged the end of the line after the newline.
++ */
++void G4UIQt::CommandEditedCallback(const QString & )
++{
++  QStringList list = fCommandArea->text().split(QRegExp("[\r\n]"),QString::SkipEmptyParts);
++
++  if (list.size() > 1) { // trigger ActivateCommand
++    for (int a=0; a<list.size()-1; a++) {
++      // set only the first part
++      fCommandArea->setText(list[a]);
++      // trigger callback
++      CommandEnteredCallback();
++    }
++    // reset unfinished command
++    fCommandArea->setText(list[list.size()-1]);
+   }
+ }
+ 
+@@ -3167,18 +3232,22 @@ void G4UIQt::ChangeSurfaceStyle(const QString& action) {
+ 
+ void G4UIQt::OpenIconCallback(const QString& aCommand) {
+ 
+-  QString nomFich = QFileDialog::getOpenFileName(fMainWindow, "Load", "vis", "Macro files (*.mac)");
++  QString nomFich = QFileDialog::getOpenFileName(fMainWindow, "Load", fLastOpenPath, "Macro files (*.mac)");
+    if (nomFich != "") {
+      G4UImanager::GetUIpointer()->ApplyCommand((QString(aCommand)+ QString(" ")+ nomFich).toStdString().c_str());
++     QDir dir;
++     fLastOpenPath = dir.absoluteFilePath(nomFich);
+    }
+ }
+ 
+ 
+ void G4UIQt::SaveIconCallback(const QString& aCommand) {
+ 
+-  QString nomFich = QFileDialog::getSaveFileName(fMainWindow, "Save", "viewerState", "Macro files (*.mac)");
++  QString nomFich = QFileDialog::getSaveFileName(fMainWindow, "Save", fLastOpenPath, "Macro files (*.mac)");
+   if (nomFich != "") {
+     G4UImanager::GetUIpointer()->ApplyCommand((QString(aCommand)+ QString(" ")+nomFich).toStdString().c_str());
++    QDir dir;
++    fLastOpenPath = dir.absoluteFilePath(nomFich);
+   }
+ }
+ 

Added: trunk/dports/science/geant4/files/patch-upstream-qt.496.diff
===================================================================
--- trunk/dports/science/geant4/files/patch-upstream-qt.496.diff	                        (rev 0)
+++ trunk/dports/science/geant4/files/patch-upstream-qt.496.diff	2013-09-30 00:13:17 UTC (rev 111720)
@@ -0,0 +1,272 @@
+A bunch of upstream patches:
+ * fix loading icons in some examples
+ * allow pasting multiple lines
+ * remember the last dir to open/save macro files
+ * do not throw errors during menu creation when using '/control/verbose 0'
+--- source/interfaces/basic/include/G4UIQt.hh.orig
++++ source/interfaces/basic/include/G4UIQt.hh
+@@ -215,6 +215,8 @@ private:
+ 
+   QToolBar *fToolbarApp;
+   QToolBar *fToolbarUser;
++  G4String fLastErrMessage;
++  QString fLastOpenPath;
+ 
+   bool fMoveSelected;
+   bool fRotateSelected;
+@@ -226,6 +228,7 @@ private Q_SLOTS :
+   void ExitSession();
+   void ClearButtonCallback();
+   void CommandEnteredCallback();
++  void CommandEditedCallback(const QString &);
+   void ButtonCallback(const QString&);
+   void HelpTreeClicCallback();
+   void HelpTreeDoubleClicCallback();
+--- source/interfaces/basic/src/G4UIQt.cc.orig
++++ source/interfaces/basic/src/G4UIQt.cc
+@@ -131,6 +131,7 @@ G4UIQt::G4UIQt (
+ ,fPickSelected(false)
+ ,fZoomInSelected(false)
+ ,fZoomOutSelected(false)
++,fLastOpenPath("")
+ {
+ 
+   G4Qt* interactorManager = G4Qt::getInstance (argc,argv,(char*)"Qt");
+@@ -270,6 +271,7 @@ G4UIQt::G4UIQt (
+ 
+   // Connect signal
+   connect(fCommandArea, SIGNAL(returnPressed()), SLOT(CommandEnteredCallback()));
++  connect(fCommandArea, SIGNAL(textEdited(const QString &)), SLOT(CommandEditedCallback(const QString &)));
+   connect(fUITabWidget, SIGNAL(currentChanged(int)), SLOT(ToolBoxActivated(int)));
+ 
+   if(UI!=NULL) UI->SetCoutDestination(this);  // TO KEEP
+@@ -720,10 +722,10 @@ G4int G4UIQt::ReceiveG4cout (
+  
+   QStringList result = newStr.filter(fCoutFilter->text());
+ 
+-  if (result.join("\n").isEmpty()) {
++  if (result.join("").isEmpty()) {
+     return 0;
+   }
+-  fCoutTBTextArea->append(result.join("\n"));
++  fCoutTBTextArea->append(result.join(""));
+   fCoutTBTextArea->repaint();
+ 
+   fCoutTBTextArea->verticalScrollBar()->setSliderPosition(fCoutTBTextArea->verticalScrollBar()->maximum());
+@@ -753,7 +755,11 @@ G4int G4UIQt::ReceiveG4cerr (
+ 
+   // Suppress space, \n,\t,\r...
+   if (QString(aString.data()).trimmed() != "") {
+-    QMessageBox::critical(fMainWindow, "Error",aString.data());
++    if ((G4StateManager::GetStateManager()->GetCurrentState() == G4State_Abort) ||
++        (G4StateManager::GetStateManager()->GetCurrentState() == G4State_Quit )) {
++      // In case of Abort or Quit, the useful error message should be in the last error message !
++      QMessageBox::critical(fMainWindow, "Error",QString(fLastErrMessage.data())+"\n"+aString.data());
++    }
+   }
+   QColor previousColor = fCoutTBTextArea->textColor();
+   fCoutTBTextArea->setTextColor(Qt::red);
+@@ -761,6 +767,10 @@ G4int G4UIQt::ReceiveG4cerr (
+   fCoutTBTextArea->setTextColor(previousColor);
+   fCoutTBTextArea->verticalScrollBar()->setSliderPosition(fCoutTBTextArea->verticalScrollBar()->maximum());
+   fCoutTBTextArea->repaint();
++
++  if (QString(aString.data()).trimmed() != "") {
++    fLastErrMessage = aString;
++  }
+   return 0;
+ }
+ 
+@@ -805,9 +815,14 @@ void G4UIQt::AddButton (
+   QMenu *parentTmp = (QMenu*)GetInteractor(aMenu);
+ 
+   if(parentTmp==NULL) {
+-    G4cout << "Menu name " << aMenu<< " does not exist, please define it before using it."<< G4endl;
++    G4UImanager* UImanager = G4UImanager::GetUIpointer();
++    G4int verbose = UImanager->GetVerboseLevel();
++    
++    if (verbose >= 2) {
++      G4cout << "Menu name " << aMenu<< " does not exist, please define it before using it."<< G4endl;
++    }
+   }
+-  
++
+   // Find the command in the command tree
+   G4UImanager* UI = G4UImanager::GetUIpointer();
+   if(UI==NULL) return;
+@@ -820,7 +835,12 @@ void G4UIQt::AddButton (
+   }
+   
+   if(treeTop->FindPath(aCommand) == NULL) {
+-    G4cout << "Warning: command '"<< aCommand <<"' does not exist, please define it before using it."<< G4endl;
++    G4UImanager* UImanager = G4UImanager::GetUIpointer();
++    G4int verbose = UImanager->GetVerboseLevel();
++    
++    if (verbose >= 2) {
++      G4cout << "Warning: command '"<< aCommand <<"' does not exist, please define it before using it."<< G4endl;
++    }
+   }
+ 
+   QSignalMapper *signalMapper = new QSignalMapper(this);
+@@ -848,7 +868,12 @@ void G4UIQt::AddIcon(const char* aLabel, const char* aIconFile, const char* aCom
+     // try to open a file
+     pix = QPixmap(aFileName);
+     if (pix.isNull()) {
+-      G4cout << "Warning: file '"<< aFileName <<"' is incorrect or does not exist, this command will not be build"<< G4endl;
++      G4UImanager* UImanager = G4UImanager::GetUIpointer();
++      G4int verbose = UImanager->GetVerboseLevel();
++      
++      if (verbose >= 2) {
++        G4cout << "Warning: file '"<< aFileName <<"' is incorrect or does not exist, this command will not be build"<< G4endl;
++      }
+       return;
+     }
+     userToolBar = true; 
+@@ -1579,23 +1604,29 @@ void G4UIQt::AddIcon(const char* aLabel, const char* aIconFile, const char* aCom
+       ;
+     pix = QPixmap(xpm);
+   } else {
+-    G4cout << "Parameter"<< aIconFile <<" not defined"<< G4endl;
++    G4UImanager* UImanager = G4UImanager::GetUIpointer();
++    G4int verbose = UImanager->GetVerboseLevel();
++    
++    if (verbose >= 2) {
++      G4cout << "Parameter"<< aIconFile <<" not defined"<< G4endl;
++    }
+     return;
+   }
+   QToolBar *currentToolbar = NULL;
+   if (userToolBar) {
+     if (fToolbarUser == NULL) {
+-      fToolbarUser = new QToolBar(fMainWindow);
++      fToolbarUser = new QToolBar();
+       fToolbarUser->setIconSize (QSize(20,20));
+       fMainWindow->addToolBar(Qt::TopToolBarArea, fToolbarUser);
+     }
+     currentToolbar = fToolbarUser;
+   } else {
+     if (fToolbarApp == NULL) {
+-      fToolbarApp = new QToolBar(fMainWindow);
++      fToolbarApp = new QToolBar();
+       fToolbarApp->setIconSize (QSize(20,20));
+       fMainWindow->addToolBar(Qt::TopToolBarArea, fToolbarApp);
+     }
++    fMainWindow->show();
+     currentToolbar = fToolbarApp;
+   }
+ 
+@@ -1690,7 +1721,12 @@ void G4UIQt::AddIcon(const char* aLabel, const char* aIconFile, const char* aCom
+     G4UIcommandTree * treeTop = UI->GetTree();
+     
+     if(treeTop->FindPath(aCommand) == NULL) {
+-      G4cout << "Warning: command '"<< aCommand <<"' does not exist, please define it before using it."<< G4endl;
++      G4UImanager* UImanager = G4UImanager::GetUIpointer();
++      G4int verbose = UImanager->GetVerboseLevel();
++      
++      if (verbose >= 2) {
++        G4cout << "Warning: command '"<< aCommand <<"' does not exist, please define it before using it."<< G4endl;
++      }
+     }
+     
+     connect(signalMapper, SIGNAL(mapped(const QString &)),this, SLOT(ButtonCallback(const QString&)));
+@@ -2558,27 +2594,56 @@ void G4UIQt::ExitHelp(
+ void G4UIQt::CommandEnteredCallback (
+ )
+ {
+-  G4String command (fCommandArea->text().toStdString().c_str());
+-  if (fCommandArea->text().trimmed() != "") {
+-    fHistoryTBTableList->addItem(fCommandArea->text());
+-    fHistoryTBTableList->clearSelection();
+-    fHistoryTBTableList->setCurrentItem(NULL);
+-    fCommandArea->setText("");
+-
+-    G4Qt* interactorManager = G4Qt::getInstance ();
+-    if (interactorManager) { 
+-      interactorManager->FlushAndWaitExecution();
+-    }
+-    if (command(0,4) != "help") {
+-      ApplyShellCommand (command,exitSession,exitPause);
+-    } else {
+-      ActivateCommand(command);
++  // split by any new line character
++  QStringList list = fCommandArea->text().split(QRegExp("[\r\n]"),QString::SkipEmptyParts);
++
++  // Apply for all commands
++  for (unsigned int a=0; a< list.size(); a++) {
++    QString txt (list[a].trimmed());
++    if (txt != "") {
++      fHistoryTBTableList->addItem(txt);
++      fHistoryTBTableList->clearSelection();
++      fHistoryTBTableList->setCurrentItem(NULL);
++      fCommandArea->setText("");
++      G4Qt* interactorManager = G4Qt::getInstance ();
++      if (interactorManager) {
++        interactorManager->FlushAndWaitExecution();
++      }
++
++      G4String command = txt.toStdString().c_str();
++      if (command(0,4) != "help") {
++        ApplyShellCommand (command,exitSession,exitPause);
++      } else {
++        ActivateCommand(command);
++      }
+     }
+-    // Rebuild help tree
+-    FillHelpTree();
++  }
++
++  // Rebuild help tree
++  FillHelpTree();
++
++  if(exitSession==true)
++    SessionTerminate();
++}
+ 
+-    if(exitSession==true) 
+-      SessionTerminate();
++
++/** Callback when the text in the line edit is changed.
++ When a newline is inserted, trigger the Activate Command
++ on this text end set unchanged the end of the line after the newline.
++ */
++void G4UIQt::CommandEditedCallback(const QString & )
++{
++  QStringList list = fCommandArea->text().split(QRegExp("[\r\n]"),QString::SkipEmptyParts);
++
++  if (list.size() > 1) { // trigger ActivateCommand
++    for (int a=0; a<list.size()-1; a++) {
++      // set only the first part
++      fCommandArea->setText(list[a]);
++      // trigger callback
++      CommandEnteredCallback();
++    }
++    // reset unfinished command
++    fCommandArea->setText(list[list.size()-1]);
+   }
+ }
+ 
+@@ -3145,18 +3210,22 @@ void G4UIQt::ChangeSurfaceStyle(const QString& action) {
+ 
+ void G4UIQt::OpenIconCallback(const QString& aCommand) {
+ 
+-  QString nomFich = QFileDialog::getOpenFileName(fMainWindow, "Load", "vis", "Macro files (*.mac)");
++  QString nomFich = QFileDialog::getOpenFileName(fMainWindow, "Load", fLastOpenPath, "Macro files (*.mac)");
+    if (nomFich != "") {
+      G4UImanager::GetUIpointer()->ApplyCommand((QString(aCommand)+ QString(" ")+ nomFich).toStdString().c_str());
++     QDir dir;
++     fLastOpenPath = dir.absoluteFilePath(nomFich);
+    }
+ }
+ 
+ 
+ void G4UIQt::SaveIconCallback(const QString& aCommand) {
+ 
+-  QString nomFich = QFileDialog::getSaveFileName(fMainWindow, "Save", "viewerState", "Macro files (*.mac)");
++  QString nomFich = QFileDialog::getSaveFileName(fMainWindow, "Save", fLastOpenPath, "Macro files (*.mac)");
+   if (nomFich != "") {
+     G4UImanager::GetUIpointer()->ApplyCommand((QString(aCommand)+ QString(" ")+nomFich).toStdString().c_str());
++    QDir dir;
++    fLastOpenPath = dir.absoluteFilePath(nomFich);
+   }
+ }
+ 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20130929/d7158da8/attachment-0001.html>


More information about the macports-changes mailing list