[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