| ARG RELEASE |
| ARG LAUNCHPAD_BUILD_ARCH |
| LABEL org.opencontainers.image.ref.name=ubuntu |
| LABEL org.opencontainers.image.version=22.04 |
| ADD file:52c0e467fa2e92f101018df01a0ff56580c752b7553fbe6df88e16b02af6d4ee in / |
| CMD ["/bin/bash"] |
| ENV DEBIAN_FRONTEND=noninteractive |
| ENV MG5_VERSION=3.7.0 |
| ENV MA5_VERSION=1.11.0 |
| ENV MA5_DIR=/opt/madanalysis5 |
| RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends ca-certificates wget tar curl git && rm -rf /var/lib/apt/lists/* # buildkit |
| RUN /bin/sh -c sed -i 's|http://archive.ubuntu.com|https://mirrors.pku.edu.cn|g' /etc/apt/sources.list && apt-get update && apt-get install -y --no-install-recommends build-essential cmake gfortran libssl-dev python3 python3-pip python3-dev python3-numpy libx11-dev libxpm-dev libxft-dev libxext-dev libgif-dev libtbb-dev libpcre3-dev libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev libglew-dev libfftw3-dev libxml2-dev libgsl-dev tcl tk zlib1g-dev gnuplot rsync && rm -rf /var/lib/apt/lists/* # buildkit |
| RUN /bin/sh -c pip3 config set global.index-url https://mirrors.pku.edu.cn/pypi/web/simple # buildkit |
| ENV ROOTSYS=/opt/root |
| ENV PATH=/opt/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| ENV LD_LIBRARY_PATH=/opt/root/lib |
| RUN /bin/sh -c wget --progress=dot:giga --timeout=300 --tries=3 https://wjsoj.s3.bitiful.net/root_v6.28.10.Linux-ubuntu22-x86_64-gcc11.4.tar.gz -O /tmp/root.tar.gz && tar -xzf /tmp/root.tar.gz -C /opt && rm /tmp/root.tar.gz && ln -s ${ROOTSYS}/bin/root-config /usr/bin/root-config # buildkit |
| ENV MG5_DIR=/opt/MG5_aMC_v3_7_0 |
| ENV PATH=/opt/MG5_aMC_v3_7_0/bin:/opt/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| RUN /bin/sh -c wget --progress=dot:giga --timeout=120 --tries=3 https://wjsoj.s3.bitiful.net/MG5_aMC_v3.7.0.tar.gz -O /tmp/mg5.tar.gz && tar -xzf /tmp/mg5.tar.gz -C /opt && rm /tmp/mg5.tar.gz # buildkit |
| RUN /bin/sh -c pip3 install --no-cache-dir six scipy matplotlib pyhf spey fastjet # buildkit |
| RUN /bin/sh -c mkdir -p ${MG5_DIR}/HEPTools && wget --timeout=120 --tries=3 https://www.zlib.net/zlib-1.3.2.tar.gz -O /tmp/zlib.tar.gz && wget --timeout=120 --tries=3 http://madgraph.mi.infn.it//Downloads/HEPToolsInstaller/HEPToolsInstaller_V168.tar.gz -O /tmp/HEPToolsInstaller.tar.gz && tar -xzf /tmp/HEPToolsInstaller.tar.gz -C ${MG5_DIR}/HEPTools && rm /tmp/HEPToolsInstaller.tar.gz && sed -i "s/zlib-1\.3\.1/zlib-1.3.2/g; s/'version': '1.3.1'/'version': '1.3.2'/" ${MG5_DIR}/HEPTools/HEPToolsInstallers/HEPToolInstaller.py && cp /tmp/zlib.tar.gz ${MG5_DIR}/HEPTools/HEPToolsInstallers/zlib-1.3.2.tar.gz && rm -rf /tmp/zlib* && printf "path = '${MG5_DIR}/madgraph/interface/madgraph_interface.py'\nwith open(path) as f:\n lines = f.readlines()\nwith open(path, 'w') as f:\n for i, line in enumerate(lines):\n if 'elif not HepToolsInstaller_web_address is None:' in line and i+1 < len(lines) and 'shutil.rmtree' in lines[i+1]:\n f.write(line.replace('elif not HepToolsInstaller_web_address is None:', 'elif False:'))\n elif line.strip() == 'if not HepToolsInstaller_web_address is None:' and i+1 < len(lines) and 'Download HEPToolsInstaller' in lines[i+1]:\n f.write(line.replace('if not HepToolsInstaller_web_address is None:', 'if False:'))\n else:\n f.write(line)\nprint('MG5 patched successfully')\n" > /tmp/patch_mg5.py && python3 /tmp/patch_mg5.py && rm /tmp/patch_mg5.py # buildkit |
| RUN /bin/sh -c cd ${ROOTSYS} && . bin/thisroot.sh && printf 'install lhapdf6\ninstall pythia8\ninstall Delphes\nexit\n' | mg5_aMC || true && echo "=== HEPTools contents ===" && ls -la ${MG5_DIR}/HEPTools/ && echo "=== MG5_DIR root ===" && ls ${MG5_DIR}/ | grep -iE "delph|pythia|zlib|lhapdf" || true && echo "=== HEPTools subdirs ===" && ls ${MG5_DIR}/HEPTools/ | grep -iE "delph|pythia|zlib|lhapdf" || true && test -d ${MG5_DIR}/HEPTools/lhapdf6 || test -d ${MG5_DIR}/HEPTools/lhapdf6_py3 || (echo "ERROR: lhapdf6 install failed" && exit 1) && test -d ${MG5_DIR}/HEPTools/pythia8 || (echo "ERROR: Pythia8 install failed" && exit 1) && (test -d ${MG5_DIR}/Delphes || test -d ${MG5_DIR}/HEPTools/Delphes) || (echo "ERROR: Delphes install failed" && exit 1) && echo "lhapdf6, Pythia8 and Delphes installed successfully" && rm -rf /tmp/* # buildkit |
| ENV PYTHIA8=/opt/MG5_aMC_v3_7_0/HEPTools/pythia8 |
| ENV PATH=/opt/MG5_aMC_v3_7_0/HEPTools/pythia8/bin:/opt/MG5_aMC_v3_7_0/bin:/opt/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| ENV LD_LIBRARY_PATH=/opt/MG5_aMC_v3_7_0/HEPTools/pythia8/lib:/opt/root/lib |
| ENV PATH=/opt/madanalysis5/bin:/opt/MG5_aMC_v3_7_0/HEPTools/pythia8/bin:/opt/MG5_aMC_v3_7_0/bin:/opt/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| RUN /bin/sh -c wget --progress=dot:giga --timeout=120 --tries=3 https://gh-proxy.com/github.com/MadAnalysis/madanalysis5/archive/refs/tags/v${MA5_VERSION}.tar.gz -O /tmp/ma5.tar.gz && tar -xzf /tmp/ma5.tar.gz -C /opt && mv /opt/madanalysis5-${MA5_VERSION} ${MA5_DIR} && rm /tmp/ma5.tar.gz # buildkit |
| RUN /bin/sh -c test -f ${MA5_DIR}/requirements.txt && pip3 install --no-cache-dir --timeout=300 -r ${MA5_DIR}/requirements.txt || echo "No requirements.txt found, skipping" # buildkit |
| RUN /bin/sh -c FASTJET_DIR=$(python3 -c "import fastjet, os; print(os.path.dirname(fastjet.__file__))") && FASTJET_CONFIG="${FASTJET_DIR}/bin/fastjet-config" && sed -i "s|^prefix=.*|prefix=${FASTJET_DIR}|; s|^installationdir=.*|installationdir=${FASTJET_DIR}|; s|^libdir=.*|libdir=${FASTJET_DIR}/lib64|; s|^includedir=.*|includedir=${FASTJET_DIR}/include|" ${FASTJET_CONFIG} && sed -i "s|# delphes_veto.*|delphes_veto = 0|; s|# delphes_includes.*|delphes_includes = /opt/MG5_aMC_v3_7_0/Delphes/|; s|# delphes_libs.*|delphes_libs = /opt/MG5_aMC_v3_7_0/Delphes/|; s|# fastjet_veto.*|fastjet_veto = 0|; s|# fastjet_bin_path.*|fastjet_bin_path = ${FASTJET_DIR}/bin/|" ${MA5_DIR}/madanalysis/input/installation_options.dat && sed -i 's/sizeURLFile = int(info.info().get("Content-Length"))/cl = info.info().get("Content-Length"); sizeURLFile = int(cl) if cl else 0/' ${MA5_DIR}/madanalysis/install/install_service.py && sed -i 's/percent = float(bytes_so_far) \/ total_size/percent = float(bytes_so_far) \/ total_size if total_size else 0/' ${MA5_DIR}/madanalysis/install/install_service.py # buildkit |
| RUN /bin/sh -c cd ${ROOTSYS} && . bin/thisroot.sh && cd ${MA5_DIR} && yes '' | head -20 | ./bin/ma5 ; cat ${MA5_DIR}/tools/SampleAnalyzer/Interfaces/compilation_fastjet.log 2>/dev/null || true # buildkit |
| RUN /bin/sh -c cd ${ROOTSYS} && . bin/thisroot.sh && cd ${MA5_DIR} && printf 'install PAD\n\n\n\nexit\n' | ./bin/ma5 || true # buildkit |
| RUN /bin/sh -c sed -i 's/UpdateNeed = not builder.compare()/UpdateNeed = False/' ${MA5_DIR}/madanalysis/core/main.py && sed -i 's/checkup.check_updates()/pass # checkup.check_updates() disabled for container/' ${MA5_DIR}/madanalysis/core/main.py # buildkit |
| RUN /bin/sh -c rm -rf /tmp/* /root/.cache /var/lib/apt/lists/* # buildkit |
| RUN /bin/sh -c printf '#!/bin/bash\nexport ROOTSYS=/opt/root\nexport PYTHIA8=/opt/MG5_aMC_v3_7_0/HEPTools/pythia8\nexport LD_LIBRARY_PATH=$ROOTSYS/lib:$PYTHIA8/lib:$LD_LIBRARY_PATH\nexport PATH=$ROOTSYS/bin:$PYTHIA8/bin:/opt/MG5_aMC_v3_7_0/bin:/opt/madanalysis5/bin:$PATH\n' > /etc/profile.d/mg5_setup.sh && chmod +x /etc/profile.d/mg5_setup.sh # buildkit |
| WORKDIR /workspace |
| CMD ["/bin/bash"] |