Revision: 111720 https://trac.macports.org/changeset/111720 Author: mojca@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@PHOTONEVAPORATION_V@" -setenv G4RADIOACTIVEDATA "@PREFIX@/share/geant4/data/RadioactiveDecay@RADIOACTIVEDECAY_V@" -setenv G4LEDATA "@PREFIX@/share/geant4/data/G4EMLOW@G4EMLOW_V@" -setenv G4NEUTRONHPDATA "@PREFIX@/share/geant4/data/G4NDL@G4NDL_V@" -setenv G4ABLADATA "@PREFIX@/share/geant4/data/G4ABLA@G4ABLA_V@" -setenv G4REALSURFACEDATA "@PREFIX@/share/geant4/data/RealSurface@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@PREFIX@/include " -#setenv XMLIBS " -L@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@PHOTONEVAPORATION_V@" -export G4RADIOACTIVEDATA="@PREFIX@/share/geant4/data/RadioactiveDecay@RADIOACTIVEDECAY_V@" -export G4LEDATA="@PREFIX@/share/geant4/data/G4EMLOW@G4EMLOW_V@" -export G4NEUTRONHPDATA="@PREFIX@/share/geant4/data/G4NDL@G4NDL_V@" -export G4ABLADATA="@PREFIX@/share/geant4/data/G4ABLA@G4ABLA_V@" -export G4REALSURFACEDATA="@PREFIX@/share/geant4/data/RealSurface@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@PREFIX@/include " -#export XMLIBS=" -L@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@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@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); + } + } +