|
| 1 | +## TODO: |
| 2 | + |
| 3 | +- create repos for geant4 and clas12 containers, use hub autobuild on those |
| 4 | +- test file with reconstruction using osg container |
| 5 | + |
| 6 | +## Base images OSes (ostype) |
| 7 | + |
| 8 | +- [Almalinux94](https://hub.docker.com/_/almalinux) |
| 9 | +- [Fedora36](https://hub.docker.com/_/fedora) |
| 10 | +- [Ubuntu24](https://hub.docker.com/_/ubuntu) |
| 11 | + |
| 12 | + |
| 13 | +<br/> |
| 14 | + |
| 15 | +## Base JLAB containers: |
| 16 | + |
| 17 | +**jeffersonlab/base:**[cvmfs-]-**'ostype'** |
| 18 | + |
| 19 | +All base containers have the install directory `/cvmfs/oasis.opensciencegrid.org/jlab/geant4/`. |
| 20 | +The 'cvmfs' based container do not have root or other packages needed to compile software |
| 21 | +in order to make them leaner. |
| 22 | + |
| 23 | +TODO: rename the cvmfs container to 'osg' |
| 24 | + |
| 25 | + |
| 26 | +Examples: |
| 27 | + |
| 28 | +- jeffersonlab/base:fedora36 |
| 29 | +- jeffersonlab/base:cvmfs-fedora36 |
| 30 | + |
| 31 | + |
| 32 | + |
| 33 | +### Geant4 JLAB containers: |
| 34 | + |
| 35 | +**jeffersonlab/geant4:g4v'geant4_version'-'ostype'** |
| 36 | + |
| 37 | +where geant4 version is one of the following: |
| 38 | + |
| 39 | +- 10.6.2 |
| 40 | +- 10.7.4 |
| 41 | +- 11.3.0 |
| 42 | +- 11.3.1 |
| 43 | +- 11.3.2 |
| 44 | + |
| 45 | +Examples: |
| 46 | + |
| 47 | +- jeffersonlab/geant4:g4v10.7.4-ubuntu24 |
| 48 | +- jeffersonlab/geant4:g4v11.3.2-fedora40 |
| 49 | +- jeffersonlab/geant4:g4v11.3.2-almalinux94 |
| 50 | + |
| 51 | +### GEMC JLAB containers: |
| 52 | + |
| 53 | +**jeffersonlab/gemc:'gemc_version'-'ostype'** |
| 54 | + |
| 55 | +where gemc version is one of the following: |
| 56 | + |
| 57 | +- prod1 (contains 4.4.2) |
| 58 | +- dev (contains 5.10, 5.11 and dev) |
| 59 | + |
| 60 | +TODO: once gemc uses meson / geant4, add prod2 |
| 61 | + |
| 62 | +--- |
| 63 | + |
| 64 | +## Automated builds from docker hub |
| 65 | + |
| 66 | +- source: JeffersonLab/geant4-docker |
| 67 | +- source type: branch, main |
| 68 | +- You can specify the Dockerfile location as a path relative to the build context. |
| 69 | +- The build context is the path to the files needed for the build, |
| 70 | + relative to the root of the repository. |
| 71 | + Enter the path to these files in the Build context field. |
| 72 | + Enter / to set the build context as the root of the source code repository. |
| 73 | + |
| 74 | +--- |
| 75 | + |
| 76 | +## Manual Local Build |
| 77 | +``` |
| 78 | +docker buildx build --platform linux/amd64 --no-cache --progress=plain \ |
| 79 | +-t jeffersonlab/base:cvmfs-almalinux94 -f dockerfiles/Dockerfile-gemc-dev-almalinux94 . |
| 80 | +``` |
| 81 | + |
| 82 | +--- |
| 83 | + |
| 84 | +# Copy Software to cvmfs |
| 85 | + |
| 86 | +## Linux OSes: |
| 87 | + |
| 88 | +Use the pack.sh script to create a gzipped tarfile with specific software to be copied to cvmfs. |
| 89 | + |
| 90 | + |
| 91 | +``` |
| 92 | +Usage: pack.sh <package> |
| 93 | +
|
| 94 | +Possible packages: geant4 clas12 clas12Tag gemc noarch |
| 95 | +
|
| 96 | + - geant4: latest geant4, clhep, xercesc, qt |
| 97 | + - clas12: ccdb, hipo, clas12_cmag, mlibrary, clas12Tags |
| 98 | + - clas12Tag: latest clas12Tags only (not dev) |
| 99 | + - gemc: latest gemc tag only (not dev) |
| 100 | + - noarch: noarch directory |
| 101 | + ``` |
| 102 | + |
| 103 | + |
| 104 | +## MacOS: |
| 105 | + |
| 106 | +Manually tar the files. Make sure tar is an alias to gtar or use gtar directly. |
| 107 | +``` |
| 108 | +cd /opt/jlab_software |
| 109 | +gtar cvfz 1.1-macos.tar.gz 1.1 |
| 110 | +mv 1.1-macos.tar.gz ~/mywork |
| 111 | +scp *.tar.gz ifarm:/work/clas12/ungaro/images |
| 112 | +``` |
| 113 | + |
| 114 | + |
| 115 | +## Container for clas12-validation and clas12Tags actions |
| 116 | + |
| 117 | +- Currently used: `jeffersonlab/gemc:dev-fedora36` which is an autobuild based on |
| 118 | +`jeffersonlab/gemc:dev-g4v10.7.4-fedora36` |
| 119 | + |
| 120 | + |
| 121 | +--- |
| 122 | + |
| 123 | +## Release for OSG: |
| 124 | + |
| 125 | +First make a tag of the current version: |
| 126 | +``` |
| 127 | +docker pull jeffersonlab/clas12software:production |
| 128 | +docker tag jeffersonlab/clas12software:production jeffersonlab/clas12software:tag_sept_24 |
| 129 | +docker push jeffersonlab/clas12software:tag_sept_24 |
| 130 | +``` |
| 131 | + |
| 132 | +Then make a new tag for the new version: |
| 133 | + |
| 134 | +Almalinux: |
| 135 | + |
| 136 | +``` |
| 137 | +docker pull jeffersonlab/base:cvmfs-almalinux94 |
| 138 | +docker tag jeffersonlab/base:cvmfs-almalinux94 jeffersonlab/clas12software:devel |
| 139 | +docker push jeffersonlab/clas12software:devel |
| 140 | +docker tag jeffersonlab/base:cvmfs-almalinux94 jeffersonlab/clas12software:production |
| 141 | +docker push jeffersonlab/clas12software:production |
| 142 | +``` |
| 143 | + |
| 144 | +Fedora: |
| 145 | + |
| 146 | +``` |
| 147 | +docker pull jeffersonlab/base:cvmfs-fedora36 |
| 148 | +docker tag jeffersonlab/base:cvmfs-fedora36 jeffersonlab/clas12software:devel |
| 149 | +docker push jeffersonlab/clas12software:devel |
| 150 | +docker tag jeffersonlab/base:cvmfs-fedora36 jeffersonlab/clas12software:production |
| 151 | +docker push jeffersonlab/clas12software:production |
| 152 | +``` |
| 153 | + |
| 154 | + |
| 155 | +After testing, can use the tag `production`. |
| 156 | + |
| 157 | +## Testing with docker container: |
| 158 | + |
| 159 | +``` |
| 160 | +docker_run_image jeffersonlab/clas12software:devel cvmfs |
| 161 | +``` |
| 162 | + |
| 163 | +### Test script: |
| 164 | + |
| 165 | +``` |
| 166 | +source /etc/profile.d/modules.csh |
| 167 | +set cvmfsPath = /cvmfs/oasis.opensciencegrid.org/jlab/hallb/clas12/sw/ |
| 168 | +set cvmfsSetupFile = $cvmfsPath/setup.csh |
| 169 | +source $cvmfsSetupFile $cvmfsPath |
| 170 | +module load sqlite/5.7 |
| 171 | +setenv SIM_HOME /cvmfs/oasis.opensciencegrid.org/jlab/geant4 |
| 172 | +source /cvmfs/oasis.opensciencegrid.org/jlab/geant4/ceInstall/setup.csh |
| 173 | +module load gemc/5.9 |
| 174 | +setenv RCDB_CONNECTION mysql://null |
| 175 | +
|
| 176 | +module avail |
| 177 | +module load coatjava/10.0.2 |
| 178 | +module load jdk/17.0.2 |
| 179 | +module load mcgen/3.02 |
| 180 | +
|
| 181 | +generate-seeds.py generate |
| 182 | +set seed = `generate-seeds.py read --row 1` |
| 183 | +clasdis --trig 100 --docker --t 20 25 --seed $seed |
| 184 | +gemc -USE_GUI=0 -N=100 /cvmfs/oasis.opensciencegrid.org/jlab/hallb/clas12/sw/noarch/clas12-config/dev/gemc/5.7/rga_fall2018_target_at_m3.5.gcard -INPUT_GEN_FILE='lund, clasdis.dat' -RANDOMIZE_LUND_VZ='-3.0*cm, 2.5*cm, reset ' -BEAM_SPOT='0.0*mm, 0.0*mm, 0.0*mm, 0.0*mm, 0*deg, reset ' -RASTER_VERTEX='0.0*cm, 0.0*cm, reset ' -SCALE_FIELD='binary_torus, +1.00' -SCALE_FIELD='binary_solenoid, -1.00' -OUTPUT='hipo, gemc.hipo' -INTEGRATEDRAW='*' | sed '/G4Exception-START/,/G4Exception-END/d' |
| 185 | +$DRIFTCHAMBERS/install/bin/denoise2.exe -i gemc.hipo -o gemc_denoised.hipo -t 1 -n $DRIFTCHAMBERS/denoising/code/network/cnn_autoenc_0f_112.json |
| 186 | +recon-util -y /cvmfs/oasis.opensciencegrid.org/jlab/hallb/clas12/sw/noarch/clas12-config/dev/coatjava/10.0.2/rga_fall2018_target_at_m3.5.yaml -i gemc_denoised.hipo -o recon.hipo |
| 187 | +echo |
| 188 | +ls -l |
| 189 | +``` |
| 190 | + |
| 191 | +## Testing with apptainer |
| 192 | + |
| 193 | +``` |
| 194 | +module load singularity |
| 195 | +singularity shell --bind /cvmfs --contain --ipc --pid --cleanenv /cvmfs/singularity.opensciencegrid.org/jeffersonlab/clas12software:devel |
| 196 | +singularity shell --home ${PWD}:/srv --pwd /srv --bind /cvmfs --contain --ipc --pid --cleanenv /cvmfs/singularity.opensciencegrid.org/jeffersonlab/clas12software:devel |
| 197 | +``` |
0 commit comments