# -*- 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

# Keep in sync with Gate (and/or implement a PortGroup)

PortSystem          1.0
PortGroup           cmake 1.1
PortGroup           select 1.0

name                geant4
version             4.10.6
categories          science
maintainers         nomaintainer
license             Restrictive/Distributable
#                   http://geant4.web.cern.ch/geant4/license/LICENSE.html
# CMake dependency should not conflict with this port
license_noconflict  lz4
description         Geant4 is a toolkit for the simulation of the passage of particles through matter.
long_description    Geant4 is a toolkit for the simulation of the passage of particles through matter. \
                    Its areas of application include high energy, nuclear and accelerator physics, as well as studies in medical and space science. \
                    The two main reference papers for Geant4 are published in Nuclear Instruments and Methods in Physics Research A 506 (2003) 250-303, \
                    and IEEE Transactions on Nuclear Science 53 No. 1 (2006) 270-278.
homepage            http://geant4.web.cern.ch/

master_sites        https://geant4-data.web.cern.ch/releases/ \
                    https://geant4-data.web.cern.ch/datasets/

set geant.url_new   https://geant4.web.cern.ch/support/download
set geant.url_old   https://geant4.web.cern.ch/support/download_archive

# 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 [list \
    10.3  1  0  3  4.10.03.p03  e4e18181ab777811415b85341caec658d14f7427  a164f49c038859ab675eec474d08c9d02be8c4be9c0c2d3aa8e69adf89e1e138  32517096  ${geant.url_old}?page=3 \
    10.4  1  0  3  4.10.04.p03  bab0a6ea4ef537cc6965909b88778c395cbd2ff3  31a452374c86b58b3ec5bd3fa851279e396c7e5a3b5a43d61111913d611029c8  34243361  ${geant.url_old}?page=2 \
    10.5  1  0  1  4.10.05.p01  c6d01618241c369f46a08a9689cddb07a426d9e2  f4a292220500fad17e0167ce3153e96e3410ecbe96284e572dc707f63523bdff  34413415  ${geant.url_old}?page=1 \
    10.6  1  0  3  4.10.06.p03  be80a07b7222c85b2df9c7db666d9b43e1f375e5  0b5f13672e7250047b66ffb056c6cfda328a956278cfe61a3fd5dde0672ffbf3  35099426  ${geant.url_old}?page=0 \
]
## older versions kept for anyone who might still need them
#    9.6  2  0  4  4.9.6.p04    3dd8f6ac2e79929d26519e83fce113691a670788  997220a5386a43ac8f533fc7d5a8360aa1fd6338244d17deeaa583fb3a0f39fd  25454650  ${geant.url_old}?page=7 \
#   10.0  2  0  4  4.10.00.p04  bfd11977b55f316f5c38d82f09dc37e7c0f60ea7  f4e1fc6d5ea4d9761ba44fd7e50921ff6276e25c2f640c7615460235d8c77d74  29655911  ${geant.url_old}?page=6 \
#   10.1  1  0  3  4.10.01.p03  0b141adfceb4203f4855e0c6fb0d4c17036776ca  b198943b5bc4fd7968ef4eaa5bbe2fb094b8df1d907a05486dc05f4c92bbb174  33538209  ${geant.url_old}?page=5 \
#   10.2  1  1  3  4.10.02.p03  c45d91fb2def7143e6dcccb5d11907454be77386  e0bba0a9c937430e7dfac158873e218fafc0f167b12e7ff3d17ce13cbe550c4f  32241693  ${geant.url_old}?page=4 \
#   10.7  0  0  1  4.10.07.p01  6188268321a58afd5fdbffc298673f44b7135307  525161753a3d9c2ad19b25f2eabc8bbede91c236120771bd9c3f4aaac8412e1e  36217226  ${geant.url_new} \


#   NAME               VERS  FILENAME             ENVVAR             md5                               rmd160                                    sha256
set geant.data_versions_10.7 {
    G4NDL              4.6   G4NDL                G4NEUTRONHPDATA    d07e43499f607e01f2c1ce06d7a09f3e  7c87ce0ed9319da7805518b63b5522644e5444d7  9d287cf2ae0fb887a2adce801ee74fb9be21b0d166dab49bcbee9408a5145408
    G4EMLOW            7.13  G4EMLOW              G4LEDATA           55922521aa331655a0494cdf8f9a70e8  e0182651434804125a36ab79ff0065bfecb3760e  374896b649be776c6c10fea80abe6cf32f9136df0b6ab7c7236d571d49fb8c69
    PhotonEvaporation  5.7   G4PhotonEvaporation  G4LEVELGAMMADATA   81ff27deb23af4aa225423e6b3a06b39  a8de453ac31dc95b4b66a5f2ca13ea1e757b5f01  761e42e56ffdde3d9839f9f9d8102607c6b4c0329151ee518206f4ee9e77e7e5
    RadioactiveDecay   5.6   G4RadioactiveDecay   G4RADIOACTIVEDATA  acc1dbeb87b6b708b2874ced729a3a8f  461d412890f176856df325de08203099112dfc7c  3886077c9c8e5a98783e6718e1c32567899eeb2dbb33e402d4476bc2fe4f0df1
    G4SAIDDATA         2.0   G4SAIDDATA           G4SAIDXSDATA       d5d4e9541120c274aeed038c621d39da  071efa2cd56ac5efbb79e5cbabeda0079cc948bb  1d26a8e79baa71e44d5759b9f55a67e8b7ede31751316a9e9037d80090c72e91
    G4PARTICLEXS       3.1.1 G4PARTICLEXS         G4PARTICLEXSDATA   98b766fa2c447b541834cc9bf5206c05  adf10aa663caee9f73977973e259c9b1743d2c4b  66c17edd6cb6967375d0497add84c2201907a25e33db782ebc26051d38f2afda
    G4ABLA             3.1   G4ABLA               G4ABLADATA         180f1f5d937733b207f8d5677f76296e  b74be69697167ce71fd5c0ee3466b83d8679c758  7698b052b58bf1b9886beacdbd6af607adc1e099fc730ab6b21cf7f090c027ed
    G4INCL             1.0   G4INCL               G4INCLDATA         85fe937b6df46d41814f07175d3f5b51  266d92602c474158514346b5246b1bd39b1b545d  716161821ae9f3d0565fbf3c2cf34f4e02e3e519eb419a82236eef22c2c4367d
    G4PII              1.3   G4PII                G4PIIDATA          05f2471dbcdf1a2b17cbff84e8e83b37  313a2615903b0682b8aabc344bedde82c345704b  6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926
    G4ENSDFSTATE       2.2   G4ENSDFSTATE         G4ENSDFSTATEDATA   495439cf600225753d7bd99825e5c6bc  c8ed1ba2796d85520f100de21df6a929d70fb534  dd7e27ef62070734a4a709601f5b3bada6641b111eb7069344e4f99a01d6e0a6
    RealSurface        2.2   G4RealSurface        G4REALSURFACEDATA  ea8f1cfa8d8aafd64b71fb30b3e8a6d9  ef437cf6f512ce4107288d7fcda208bc1f9fa7e9  9954dee0012f5331267f783690e912e72db5bf52ea9babecd12ea22282176820
    G4TENDL            1.3.2 G4TENDL              G4TENDL            209f878b777a36842d20a47ca53c6f93  7dd16c003c8bcafe64753dc25a431c17912a183d  3b2987c6e3bee74197e3bd39e25e1cc756bb866c26d21a70f647959fc7afb849
}

set geant.data_versions_10.6 {
    G4NDL              4.6   G4NDL                G4NEUTRONHPDATA    d07e43499f607e01f2c1ce06d7a09f3e  7c87ce0ed9319da7805518b63b5522644e5444d7  9d287cf2ae0fb887a2adce801ee74fb9be21b0d166dab49bcbee9408a5145408
    G4EMLOW            7.9   G4EMLOW              G4LEDATA           d28a09f0c93243522512cf2a3a733348  22f5ea8864f0b9878d4d54fc4d5e0874bfc3e96b  4abf9aa6cda91e4612676ce4d2d8a73b91184533aa66f9aad19a53a8c4dc3aff
    PhotonEvaporation  5.5   G4PhotonEvaporation  G4LEVELGAMMADATA   707514c864414089af9671db0f656e35  8b3ed0e9ac65d17ad2f489130bb5b9e562b73163  5995dda126c18bd7f68861efde87b4af438c329ecbe849572031ceed8f5e76d7
    RadioactiveDecay   5.4   G4RadioactiveDecay   G4RADIOACTIVEDATA  08abe2bcc0bcd1ac4bbe09f5ae69cdbe  c3f40853fa3e54a54e6ad2885a34cb1562386473  240779da7d13f5bf0db250f472298c3804513e8aca6cae301db97f5ccdcc4a61
    G4SAIDDATA         2.0   G4SAIDDATA           G4SAIDXSDATA       d5d4e9541120c274aeed038c621d39da  071efa2cd56ac5efbb79e5cbabeda0079cc948bb  1d26a8e79baa71e44d5759b9f55a67e8b7ede31751316a9e9037d80090c72e91
    G4PARTICLEXS       2.1   G4PARTICLEXS         G4PARTICLEXSDATA   24a68bb627a95629e2edcd098131d6b3  f41d77b91befeb5c303ea75d838489e2658e15d8  094d103372bbf8780d63a11632397e72d1191dc5027f9adabaf6a43025520b41
    G4ABLA             3.1   G4ABLA               G4ABLADATA         180f1f5d937733b207f8d5677f76296e  b74be69697167ce71fd5c0ee3466b83d8679c758  7698b052b58bf1b9886beacdbd6af607adc1e099fc730ab6b21cf7f090c027ed
    G4INCL             1.0   G4INCL               G4INCLDATA         85fe937b6df46d41814f07175d3f5b51  266d92602c474158514346b5246b1bd39b1b545d  716161821ae9f3d0565fbf3c2cf34f4e02e3e519eb419a82236eef22c2c4367d
    G4PII              1.3   G4PII                G4PIIDATA          05f2471dbcdf1a2b17cbff84e8e83b37  313a2615903b0682b8aabc344bedde82c345704b  6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926
    G4ENSDFSTATE       2.2   G4ENSDFSTATE         G4ENSDFSTATEDATA   495439cf600225753d7bd99825e5c6bc  c8ed1ba2796d85520f100de21df6a929d70fb534  dd7e27ef62070734a4a709601f5b3bada6641b111eb7069344e4f99a01d6e0a6
    RealSurface        2.1.1 G4RealSurface        G4REALSURFACEDATA  1d0fcc24c7082edae1e22a3d43fbb4d9  75f33c8a75bd908415f2da19011440e7718d0493  90481ff97a7c3fa792b7a2a21c9ed80a40e6be386e581a39950c844b2dd06f50
    G4TENDL            1.3.2 G4TENDL              G4TENDL            209f878b777a36842d20a47ca53c6f93  7dd16c003c8bcafe64753dc25a431c17912a183d  3b2987c6e3bee74197e3bd39e25e1cc756bb866c26d21a70f647959fc7afb849
}

set geant.data_versions_10.5 {
    G4NDL              4.5   G4NDL                G4NEUTRONHPDATA    fd29c45fe2de432f1f67232707b654c0  5c03cd810e590e48bae8b52e44e0ba218fcfc5ec  cba928a520a788f2bc8229c7ef57f83d0934bb0c6a18c31ef05ef4865edcdf8e
    G4EMLOW            7.7   G4EMLOW              G4LEDATA           0f650ea65c028e862a05293c10ec1089  8bb4cdc73d8ed6a574677403f24493b8e3ecb9ef  16dec6adda6477a97424d749688d73e9bd7d0b84d0137a67cf341f1960984663
    PhotonEvaporation  5.3   G4PhotonEvaporation  G4LEVELGAMMADATA   8991682af997e71bdd87f72ee3b3e9ee  bbdf6400f7c1c69a756aba76928c30bc0dc2bcf3  d47ababc8cbe548065ef644e9bd88266869e75e2f9e577ebc36bc55bf7a92ec8
    RadioactiveDecay   5.3   G4RadioactiveDecay   G4RADIOACTIVEDATA  ce1fe5e4d82d1a2ce89380e5e7e16cc8  ecf0a0b840d9d0d05d7ec96064c513421e6a9662  5c8992ac57ae56e66b064d3f5cdfe7c2fee76567520ad34a625bfb187119f8c1
    G4SAIDDATA         2.0   G4SAIDDATA           G4SAIDXSDATA       d5d4e9541120c274aeed038c621d39da  071efa2cd56ac5efbb79e5cbabeda0079cc948bb  1d26a8e79baa71e44d5759b9f55a67e8b7ede31751316a9e9037d80090c72e91
    G4PARTICLEXS       1.0   G4PARTICLEXS         G4PARTICLEXSDATA   fbbc877b88c8f828f6d463ade090cbad  f627a8704c1d6332170acf7f952420c7dd1ccd7f  6cf276d799c6f06ab2044cf601ba02faa71037882c888cadc8ee9ba24b944ae2
    G4ABLA             3.1   G4ABLA               G4ABLADATA         180f1f5d937733b207f8d5677f76296e  b74be69697167ce71fd5c0ee3466b83d8679c758  7698b052b58bf1b9886beacdbd6af607adc1e099fc730ab6b21cf7f090c027ed
    G4INCL             1.0   G4INCL               G4INCLDATA         85fe937b6df46d41814f07175d3f5b51  266d92602c474158514346b5246b1bd39b1b545d  716161821ae9f3d0565fbf3c2cf34f4e02e3e519eb419a82236eef22c2c4367d
    G4PII              1.3   G4PII                G4PIIDATA          05f2471dbcdf1a2b17cbff84e8e83b37  313a2615903b0682b8aabc344bedde82c345704b  6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926
    G4ENSDFSTATE       2.2   G4ENSDFSTATE         G4ENSDFSTATEDATA   495439cf600225753d7bd99825e5c6bc  c8ed1ba2796d85520f100de21df6a929d70fb534  dd7e27ef62070734a4a709601f5b3bada6641b111eb7069344e4f99a01d6e0a6
    RealSurface        2.1.1 G4RealSurface        G4REALSURFACEDATA  1d0fcc24c7082edae1e22a3d43fbb4d9  75f33c8a75bd908415f2da19011440e7718d0493  90481ff97a7c3fa792b7a2a21c9ed80a40e6be386e581a39950c844b2dd06f50
    G4TENDL            1.3.2 G4TENDL              G4TENDL            209f878b777a36842d20a47ca53c6f93  7dd16c003c8bcafe64753dc25a431c17912a183d  3b2987c6e3bee74197e3bd39e25e1cc756bb866c26d21a70f647959fc7afb849
}

set geant.data_versions_10.4 {
    G4NDL              4.5   G4NDL                G4NEUTRONHPDATA    fd29c45fe2de432f1f67232707b654c0  5c03cd810e590e48bae8b52e44e0ba218fcfc5ec  cba928a520a788f2bc8229c7ef57f83d0934bb0c6a18c31ef05ef4865edcdf8e
    G4EMLOW            7.3   G4EMLOW              G4LEDATA           0446e7f53af993343956e5d3900157b8  fa735d9aaa7bae220dde0e18bb12d4e00ff8e049  583aa7f34f67b09db7d566f904c54b21e95a9ac05b60e2bfb794efb569dba14e
    PhotonEvaporation  5.2   G4PhotonEvaporation  G4LEVELGAMMADATA   37c5dea9614a07885050350d071a6973  7fedda9c95d14695ee9032afe76a14eed812cf88  83607f8d36827b2a7fca19c9c336caffbebf61a359d0ef7cee44a8bcf3fc2d1f
    RadioactiveDecay   5.2   G4RadioactiveDecay   G4RADIOACTIVEDATA  e035ed77e12be3a69c2d32806d1b5cde  dae8ccf6fc22ca0a717d196e125a97b48a64ec40  99c038d89d70281316be15c3c98a66c5d0ca01ef575127b6a094063003e2af5d
    G4NEUTRONXS        1.4   G4NEUTRONXS          G4NEUTRONXSDATA    665a12771267e3b31a08c622ba1238a7  41278460f9c4a720f2b9e47dee878b9ec289ebd1  57b38868d7eb060ddd65b26283402d4f161db76ed2169437c266105cca73a8fd
    G4PII              1.3   G4PII                G4PIIDATA          05f2471dbcdf1a2b17cbff84e8e83b37  313a2615903b0682b8aabc344bedde82c345704b  6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926
    RealSurface        2.1   G4RealSurface        G4REALSURFACEDATA  f1c72b31d45905f011e2ec4ea96612f4  b0cc8a20405dd0ff5e79391c12f77059a3908264  2a287adbda1c0292571edeae2082a65b7f7bd6cf2bf088432d1d6f889426dcf3
    G4SAIDDATA         1.1   G4SAIDDATA           G4SAIDXSDATA       d88a31218fdf28455e5c5a3609f7216f  7f0c75c86eea3d227379d3dfe77e4600752f99a2  a38cd9a83db62311922850fe609ecd250d36adf264a88e88c82ba82b7da0ed7f
    G4ABLA             3.1   G4ABLA               G4ABLADATA         180f1f5d937733b207f8d5677f76296e  b74be69697167ce71fd5c0ee3466b83d8679c758  7698b052b58bf1b9886beacdbd6af607adc1e099fc730ab6b21cf7f090c027ed
    G4ENSDFSTATE       2.2   G4ENSDFSTATE         G4ENSDFSTATEDATA   495439cf600225753d7bd99825e5c6bc  c8ed1ba2796d85520f100de21df6a929d70fb534  dd7e27ef62070734a4a709601f5b3bada6641b111eb7069344e4f99a01d6e0a6
    G4TENDL            1.3.2 G4TENDL              G4TENDL            209f878b777a36842d20a47ca53c6f93  7dd16c003c8bcafe64753dc25a431c17912a183d  3b2987c6e3bee74197e3bd39e25e1cc756bb866c26d21a70f647959fc7afb849
}

set geant.data_versions_10.3 {
    G4NDL              4.5   G4NDL                G4NEUTRONHPDATA    fd29c45fe2de432f1f67232707b654c0  5c03cd810e590e48bae8b52e44e0ba218fcfc5ec  cba928a520a788f2bc8229c7ef57f83d0934bb0c6a18c31ef05ef4865edcdf8e
    G4EMLOW            6.50  G4EMLOW              G4LEDATA           2a0dbeb2dd57158919c149f33675cce5  0fba2f42f7d622ee66d8bf3abb59af805e68fa2b  c97be73fece5fb4f73c43e11c146b43f651c6991edd0edf8619c9452f8ab1236
    PhotonEvaporation  4.3   G4PhotonEvaporation  G4LEVELGAMMADATA   012fcdeaa517efebba5770e6c1cbd882  792ae223cad453363e96de56e9f6658117182e48  1a8d0b4ee60dfbbca38fb313e70508dde3a2ec0f34af59baedd37cb9ae68427e
    RadioactiveDecay   5.1   G4RadioactiveDecay   G4RADIOACTIVEDATA  994853b153c6f805e60e2b83b9ac10e0  6ee390bed93a7236b895865712e9d4de910a87f5  f30ed6efcde0d8554559a30a23cf17881565d50fdb2c30d2c36983434b1bfcc6
    G4NEUTRONXS        1.4   G4NEUTRONXS          G4NEUTRONXSDATA    665a12771267e3b31a08c622ba1238a7  41278460f9c4a720f2b9e47dee878b9ec289ebd1  57b38868d7eb060ddd65b26283402d4f161db76ed2169437c266105cca73a8fd
    G4PII              1.3   G4PII                G4PIIDATA          05f2471dbcdf1a2b17cbff84e8e83b37  313a2615903b0682b8aabc344bedde82c345704b  6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926
    RealSurface        1.0   RealSurface          G4REALSURFACEDATA  0dde95e00fcd3bcd745804f870bb6884  030513fe340e0cccbfe0b9ae9acb3ba6b5291ebb  3e2d2506600d2780ed903f1f2681962e208039329347c58ba1916740679020b1
    G4SAIDDATA         1.1   G4SAIDDATA           G4SAIDXSDATA       d88a31218fdf28455e5c5a3609f7216f  7f0c75c86eea3d227379d3dfe77e4600752f99a2  a38cd9a83db62311922850fe609ecd250d36adf264a88e88c82ba82b7da0ed7f
    G4ABLA             3.0   G4ABLA               G4ABLADATA         d7049166ef74a592cb97df0ed4b757bd  656b10fc9d8022e89e99a728576d0b502161aa69  99fd4dcc9b4949778f14ed8364088e45fa4ff3148b3ea36f9f3103241d277014
    G4ENSDFSTATE       2.1   G4ENSDFSTATE         G4ENSDFSTATEDATA   95d970b97885aeafaa8909f29997b0df  109095f4633a75acd448b15247ce2a227e9d737d  933e7f99b1c70f24694d12d517dfca36d82f4e95b084c15d86756ace2a2790d9
    G4TENDL            1.3   G4TENDL              G4TENDL            6735cc189a226cab2f9187fed7d9a545  18f47597e540ff1510e9214f49589b3249ffc626  52ad77515033a5d6f995c699809b464725a0e62099b5e55bf07c8bdd02cd3bce
}

set geant.data_versions_10.2 {
    G4NDL              4.5   G4NDL                G4NEUTRONHPDATA    fd29c45fe2de432f1f67232707b654c0  5c03cd810e590e48bae8b52e44e0ba218fcfc5ec  cba928a520a788f2bc8229c7ef57f83d0934bb0c6a18c31ef05ef4865edcdf8e
    G4EMLOW            6.48  G4EMLOW              G4LEDATA           844064faa16a063a6a08406dc7895b68  13ef27c1a45cd908ccd7f9d76b9bd6d35681ef80  9815be88cbbcc4e8855b20244d586552a8b1819b8bf4e538c342b27c17dff1c7
    PhotonEvaporation  3.2   G4PhotonEvaporation  G4LEVELGAMMADATA   01d5ba17f615d3def01f7c0c6b19bd69  6bfe26eae2bba76d48509d4f15ea95a6e216972a  35ed450a47aa610ce83c9095e17e43006e0da9557bf4433ac96ce19c730492d4
    RadioactiveDecay   4.3.2 G4RadioactiveDecay   G4RADIOACTIVEDATA  ed171641682cf8c10fc3f0266c8d482e  6c3123d57765d792605e88885f4fa6375632bc4c  43b558891f02b1f4796b913b89be607827995043cb678275c06a85e03b5b5c18
    G4NEUTRONXS        1.4   G4NEUTRONXS          G4NEUTRONXSDATA    665a12771267e3b31a08c622ba1238a7  41278460f9c4a720f2b9e47dee878b9ec289ebd1  57b38868d7eb060ddd65b26283402d4f161db76ed2169437c266105cca73a8fd
    G4PII              1.3   G4PII                G4PIIDATA          05f2471dbcdf1a2b17cbff84e8e83b37  313a2615903b0682b8aabc344bedde82c345704b  6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926
    RealSurface        1.0   RealSurface          G4REALSURFACEDATA  0dde95e00fcd3bcd745804f870bb6884  030513fe340e0cccbfe0b9ae9acb3ba6b5291ebb  3e2d2506600d2780ed903f1f2681962e208039329347c58ba1916740679020b1
    G4SAIDDATA         1.1   G4SAIDDATA           G4SAIDXSDATA       d88a31218fdf28455e5c5a3609f7216f  7f0c75c86eea3d227379d3dfe77e4600752f99a2  a38cd9a83db62311922850fe609ecd250d36adf264a88e88c82ba82b7da0ed7f
    G4ABLA             3.0   G4ABLA               G4ABLADATA         d7049166ef74a592cb97df0ed4b757bd  656b10fc9d8022e89e99a728576d0b502161aa69  99fd4dcc9b4949778f14ed8364088e45fa4ff3148b3ea36f9f3103241d277014
    G4ENSDFSTATE       1.2.3 G4ENSDFSTATE         G4ENSDFSTATEDATA   98fef898ea35df4010920ad7ad88f20b  04c0f845946eb52c8b8505fa2e06f6729ed2479f  15fb26d08a24f620f21566b5cddb7e07f0b06140899b03932d6cf76925130b75
}
# optional
#   G4TENDL?           1.0   G4TENDL              G4TENDL?           bd6f381f995e1bf570c0b7cef3e40a78  88c97495862c24cf661828aaee4583fd768eb4eb  81ab22cb51f804f5c57a528e3ac3d15f0230a48b53c4443f0ddea833a4c4eb1d

set geant.data_versions_10.1 {
    G4NDL              4.5   G4NDL                G4NEUTRONHPDATA    fd29c45fe2de432f1f67232707b654c0  5c03cd810e590e48bae8b52e44e0ba218fcfc5ec  cba928a520a788f2bc8229c7ef57f83d0934bb0c6a18c31ef05ef4865edcdf8e
    G4EMLOW            6.41  G4EMLOW              G4LEDATA           b9b2e455d08375ca9cc5201236db6d7d  f61578e1867c52626302c55d92cf7eaae5d282d4  6d878b18bf5e748e9d0ea35ef67eebab16df80cc912402986a03a5e1935f4af2
    PhotonEvaporation  3.1   G4PhotonEvaporation  G4LEVELGAMMADATA   e7870c5ef18ba702e68c22b62233cbb8  9d287e92aa1943ffe736f9e91a678667650eb760  276ac5f7b45ce96ae0927c7a3fff0942b7007cfe9339540fc22554fea433142e
    RadioactiveDecay   4.2   G4RadioactiveDecay   G4RADIOACTIVEDATA  2eade8116387ef67d4cd6f14b9cb1512  b1b7b0377223e6ad54aa100646053e493fcec8d5  cf1946d9e2c222ec1311e7ed94a54a6646cf519b71299e2297a6be3c85ba3c82
    G4NEUTRONXS        1.4   G4NEUTRONXS          G4NEUTRONXSDATA    665a12771267e3b31a08c622ba1238a7  41278460f9c4a720f2b9e47dee878b9ec289ebd1  57b38868d7eb060ddd65b26283402d4f161db76ed2169437c266105cca73a8fd
    G4PII              1.3   G4PII                G4PIIDATA          05f2471dbcdf1a2b17cbff84e8e83b37  313a2615903b0682b8aabc344bedde82c345704b  6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926
    RealSurface        1.0   RealSurface          G4REALSURFACEDATA  0dde95e00fcd3bcd745804f870bb6884  030513fe340e0cccbfe0b9ae9acb3ba6b5291ebb  3e2d2506600d2780ed903f1f2681962e208039329347c58ba1916740679020b1
    G4SAIDDATA         1.1   G4SAIDDATA           G4SAIDXSDATA       d88a31218fdf28455e5c5a3609f7216f  7f0c75c86eea3d227379d3dfe77e4600752f99a2  a38cd9a83db62311922850fe609ecd250d36adf264a88e88c82ba82b7da0ed7f
    G4ABLA             3.0   G4ABLA               G4ABLADATA         d7049166ef74a592cb97df0ed4b757bd  656b10fc9d8022e89e99a728576d0b502161aa69  99fd4dcc9b4949778f14ed8364088e45fa4ff3148b3ea36f9f3103241d277014
    G4ENSDFSTATE       1.0   G4ENSDFSTATE         G4ENSDFSTATEDATA   0c153d96c74e3856288b450436a5e4db  e643d1ef8bbcfaedb6108b889e3c2cc9a05a673e  4562e7476aa2df7204a1a77263e9d2331e9ffcdb591d11814dcc2d6b605021dd
}
set geant.data_versions_10.0 {
    G4NDL              4.4   G4NDL                G4NEUTRONHPDATA    cd8cc1d96aeb9b9ed37189edda26f5ad  8ba64e2f71ccaef278450d292239b889daae72fb  e9fe8800566a83ccaf9b5229a1fa1d2cd24530bbd2e9fcb96eb6b5b117233071
    G4EMLOW            6.35  G4EMLOW              G4LEDATA           3345d693b012c80f3e7e4432ae9884a0  1f0310afff7d6429ad054185dda233a9f469356d  1564045a0acad344c8d432cd48c2c3bb2e051a81ab3099a84e0f56ba0fe82cec
    PhotonEvaporation  3.0   G4PhotonEvaporation  G4LEVELGAMMADATA   f72d6d694f608fe10cc2126a0ac1f2a6  2502330f6e654e926eb8a0007725651644d25e95  c76a843672eca21110e97a274a6b5cd9a58b66f35235301c8e1b162926e0e7cb
    RadioactiveDecay   4.0   G4RadioactiveDecay   G4RADIOACTIVEDATA  44a43b8f62c9f9cd4c3cb31c2b2bb7c3  cae534121a147fbd94979c1a3109e0ed130df580  ed2053bddee507920a29a27db4364fbef255b951597686b0410d5458e9b38cb5
    G4NEUTRONXS        1.4   G4NEUTRONXS          G4NEUTRONXSDATA    665a12771267e3b31a08c622ba1238a7  41278460f9c4a720f2b9e47dee878b9ec289ebd1  57b38868d7eb060ddd65b26283402d4f161db76ed2169437c266105cca73a8fd
    G4PII              1.3   G4PII                G4PIIDATA          05f2471dbcdf1a2b17cbff84e8e83b37  313a2615903b0682b8aabc344bedde82c345704b  6225ad902675f4381c98c6ba25fc5a06ce87549aa979634d3d03491d6616e926
    RealSurface        1.0   RealSurface          G4REALSURFACEDATA  0dde95e00fcd3bcd745804f870bb6884  030513fe340e0cccbfe0b9ae9acb3ba6b5291ebb  3e2d2506600d2780ed903f1f2681962e208039329347c58ba1916740679020b1
    G4SAIDDATA         1.1   G4SAIDDATA           G4SAIDXSDATA       d88a31218fdf28455e5c5a3609f7216f  7f0c75c86eea3d227379d3dfe77e4600752f99a2  a38cd9a83db62311922850fe609ecd250d36adf264a88e88c82ba82b7da0ed7f
    G4ABLA             3.0   G4ABLA               G4ABLADATA         d7049166ef74a592cb97df0ed4b757bd  656b10fc9d8022e89e99a728576d0b502161aa69  99fd4dcc9b4949778f14ed8364088e45fa4ff3148b3ea36f9f3103241d277014
    G4ENSDFSTATE       1.0   G4ENSDFSTATE         G4ENSDFSTATEDATA   0c153d96c74e3856288b450436a5e4db  e643d1ef8bbcfaedb6108b889e3c2cc9a05a673e  4562e7476aa2df7204a1a77263e9d2331e9ffcdb591d11814dcc2d6b605021dd
}
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
}

foreach {geant.version geant.revision geant.datarevision geant.patchlevel geant.version_full geant.rmd160 geant.sha256 geant.size geant.livecheck_url} ${geant.versions_info} {

    # 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

    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
        platforms           any
        description         Data files for Geant${version}
        long_description    {*}${description}
        # Not a restrictive licence in itself, but we would like to prevent storing the archives
        license             Restrictive


        # TODO: use an array (hash) to implement this without if-else
        if {${geant.version} == "10.7" } {
            set geant.data_versions     ${geant.data_versions_10.7}
        } elseif {${geant.version} == "10.6" } {
            set geant.data_versions     ${geant.data_versions_10.6}
        } elseif {${geant.version} == "10.5" } {
            set geant.data_versions     ${geant.data_versions_10.5}
        } elseif {${geant.version} == "10.4" } {
            set geant.data_versions     ${geant.data_versions_10.4}
        } elseif {${geant.version} == "10.3" } {
            set geant.data_versions     ${geant.data_versions_10.3}
        } elseif {${geant.version} == "10.2" } {
            set geant.data_versions     ${geant.data_versions_10.2}
        } elseif {${geant.version} == "10.1" } {
            set geant.data_versions     ${geant.data_versions_10.1}
        } elseif {${geant.version} == "10.0" } {
            set geant.data_versions     ${geant.data_versions_10.0}
        } elseif {${geant.version} == "9.6" } {
            set geant.data_versions     ${geant.data_versions_9.6}
        }
        # clear the dependency list
        depends_build
        # make the distfiles list empty
        distfiles
        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}
            # http://bugzilla-geant4.kek.jp/show_bug.cgi?id=1849
            # https://trac.macports.org/ticket/51603
            # if {${geant.version} == "10.2" } {
            #     if {${data.filename} == "G4RadioactiveDecay"} {
            #         set filename ${data.filename}.4.4${extract.suffix}
            #     } elseif {${data.filename} == "G4ENSDFSTATE"} {
            #         set filename ${data.filename}.1.2.2${extract.suffix}
            #     }
            # }
            distfiles-append ${filename}
            checksums-append ${filename} md5 ${data.md5} rmd160 ${data.rmd160} sha256 ${data.sha256}
        }
        post-extract {
            # only necessary for G4EMLOW 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 {} \\;"
            # http://bugzilla-geant4.kek.jp/show_bug.cgi?id=1849
            # https://trac.macports.org/ticket/51603
            # if {${geant.version} == "10.2" } {
            #     move ${workpath}/RadioactiveDecay4.4 ${workpath}/RadioactiveDecay4.3.1
            # }
        }
        use_configure no
        build {}

        destroot {
            xinstall -m 755 -d ${destroot}${geant.datadir}
            # create a script to initialize environment 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 environment 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"
            }
        }
        livecheck.type  none
    }

    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} size ${geant.size}
        license_noconflict-append \
                            ${name}.${geant.version}-data

        worksrcdir          geant${version}

        # check if these are all the dependencies
        depends_lib         port:${subport}-data \
                            port:expat \
                            port:zlib
        depends_run         port:geant4_select

        select.group        geant4
        select.file         ${filespath}/${subport}

        configure.args-append -DGEANT4_USE_SYSTEM_EXPAT=ON \
                              -DGEANT4_USE_SYSTEM_CLHEP=OFF

        # - patch-upstream-source-interfaces-common-src-G4Qt.cc:
        #       http://bugzilla-geant4.kek.jp/show_bug.cgi?id=1487
        # - patch-upstream-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.4} {
            patchfiles      patch-cmake-Modules-Geant4InterfaceOptions.cmake.4102.diff \
                            patch-cmake-Modules-G4ConfigureCMakeHelpers.cmake.4104.diff
        } elseif {${geant.version} >= 10.2 && ${geant.version} < 10.4} {
            patchfiles      patch-cmake-Modules-Geant4InterfaceOptions.cmake.4102.diff \
                            patch-cmake-Modules-Geant4BuildProjectConfig.cmake.4102.diff
        }
        if {${geant.version} >= 10.2} {
            compiler.cxx_standard 2011
            compiler.thread_local_storage yes
        }
        if {${geant.version} == "10.1"} {
            patchfiles      patch-cmake-Modules-Geant4InterfaceOptions.cmake.4101.diff \
                            patch-cmake-Modules-Geant4BuildProjectConfig.cmake.4101.diff
        } elseif {${geant.version} == "10.0"} {
            patchfiles      patch-cmake-Modules-Geant4InterfaceOptions.cmake.4100.diff \
                            patch-cmake-Modules-Geant4BuildProjectConfig.cmake.4100.diff
        } elseif {${geant.version} == "9.6"} {
            patchfiles      patch-upstream-qt.496.diff \
                            patch-upstream-examples-advanced-xray_fluorescence.diff \
                            patch-cmake-Modules-Geant4InterfaceOptions.cmake.496.diff \
                            patch-cmake-Modules-Geant4BuildProjectConfig.cmake.496.diff
        }

        if {${geant.version} < 10.7} {
            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-delete -DCMAKE_INSTALL_NAME_DIR=${prefix}/lib \
                              -DCMAKE_INSTALL_RPATH=${prefix}/lib
                            # -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
        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} \
                              -DCMAKE_INSTALL_NAME_DIR=${prefix}/lib/Geant4/Geant${geant.version_simple} \
                              -DCMAKE_INSTALL_RPATH=${prefix}/lib/Geant4/Geant${geant.version_simple}

        if {${geant.version} != "9.5"} {
            configure.args-append -DGEANT4_INSTALL_DATADIR=${geant.datadir} \
        }

        # 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
            }
        }
        notes-append "
NOTE: Use 'sudo port select geant4 ${subport}'
      if you need geant4-config or geant4.(c)sh in PATH.
      Otherwise source ${prefix}/libexec/Geant4/Geant${geant.version_simple}/geant4.(c)sh
"

        variant qt conflicts qt5 description {Build with Qt 4 support} {
            PortGroup qt4         1.0
            configure.args-append -DGEANT4_USE_QT=ON
        }
        # TODO: figure out which versions of Geant4 are compatible with Qt 5
        variant qt5 conflicts qt description {Build with Qt 5 support} {
            PortGroup qt5         1.0
            configure.args-append -DGEANT4_USE_QT=ON
        }

        # 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.
        #
        # (The variants opengl_x11/motif_x11 actually end up linking both against mesa's OpenGL
        # and system's OpenGL libraries which seems like a problem on its own.)

        # or simply x11? The option name in geant4-config is opengl-x11
        variant opengl_x11 description {Build with X11 visualisation drivers} {
        #   configure.args-delete -DGEANT4_USE_OPENGL_X11=OFF
            configure.args-append -DGEANT4_USE_OPENGL_X11=ON
        }
        ## 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:openmotif
        #   configure.args-delete -DGEANT4_USE_XM=OFF
            configure.args-append -DGEANT4_USE_XM=ON
        }
        ## previous name (geant4 9.4): raytracerx; name in geant4-config: raytracer-x11
        variant raytracer_x11 description {Build with Raytracer (X11) visualization driver} {
        #   configure.args-delete -DGEANT4_USE_RAYTRACER_X11=OFF
            configure.args-append -DGEANT4_USE_RAYTRACER_X11=ON
        }
        if {[variant_isset opengl_x11] || [variant_isset motif_x11]} {
            depends_lib-append    port:mesa \
                                  port:xorg-libXmu
        }
        if {[variant_isset opengl_x11] || [variant_isset motif_x11] || [variant_isset raytracer_x11]} {
            depends_lib-append    port:xorg-libice \
                                  port:xorg-libsm \
                                  port:xorg-libX11 \
                                  port:xorg-libXext
        }

        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
        }

        variant debug description {Compile with debug flags on} {
            configure.args-append -DCMAKE_BUILD_TYPE=Debug
        }

        # 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
        }

        # a temporary variant just for the sake of testing (built-in clhep should be sufficient)
        variant clhep description {Use external clhep} {
            depends_lib-append    port:clhep
            configure.args-replace \
                                  -DGEANT4_USE_SYSTEM_CLHEP=OFF -DGEANT4_USE_SYSTEM_CLHEP=ON
            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
        }

        if {${geant.version} >= "10.0"} {
            variant threads description {Build with multi-threading support} {
                configure.args-append -DGEANT4_BUILD_MULTITHREADED=ON
            }
        }

        default_variants-append +gdml
        if {![variant_isset qt] && ![variant_isset qt5]} {
            # almost an arbitrary version of Geant4 (earlier versions had worse support for Qt5)
            # TODO: the default version should also depend on macOS version, but not sure where to cut the line
            if {${geant.version} < "10.3"} {
                default_variants-append +qt
            } else {
                default_variants-append +qt5
            }
        }

        set geant.version_full_no_patch [join [lrange [split ${geant.version_full} .] 0 2] \\.]
        # http://geant4.cern.ch/support/source/geant4.xx.xx[.pxx].tar.gz
        livecheck.url       ${geant.livecheck_url}
        livecheck.regex     geant(${geant.version_full_no_patch}(\\.\[bp\]\[0-9\]+)?)\\.tar\\.gz
    }
}

# stub port
if {$subport eq $name} {
    PortGroup     stub 1.0

    supported_archs noarch
    platforms       any

    # default replacement for geant4 which used to provide geant4.9.4
    # other users should install geant4.10.x directly
    depends_lib     port:geant${version}

    livecheck.type  none
}
